Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #511289] Mon, 01 February 2010 05:59 Go to next message
Hasan Ceylan is currently offline Hasan CeylanFriend
Messages: 198
Registered: July 2009
Senior Member
--nextPart1817381.JzuOy1YKf6
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7Bit

The PDF has been attached...

> Hello,
>
> Attached is the PDF version of the forementioned EMF Build Manager Project
> Proposal.
>
> I kindly ask EMF community members and EMF (and subprojects) committers to
> review the document and forward their thoughts.
>
> I am also looking for mentors for the proposal.
>
> Below is the extraction of "Background" of the project. Please remember to
> review the attached PDF for full proposal draft.
>
> I apoligize for crossposting...
>
> ============================================================ =
> BACKGROUND
>
> EMF has been around for a long time. But the fact is that it lacked the
> necessary IDE Build Manager integration ever since.
> We think, the current code generation and validation toolset is below
> eclipse UI quality standards and fell behind similar facility provisions
> from the other projects.
>
> For instance, given the current infrastructure, if a developer is working
> with two ecore models that are dependent each other along with their
> respective genmodel, when developer makes a change in the base model that
> requires a change in the dependent ecore model, will need quite a lot of
> clicks and at least 4 editor switches, 2 actions executions along with
> several clicks to locate the action and run them.
>
> Also during the generation process, the UI is blocked and having finished
> the change on the base ecore, the developer cannot continue working on the
> second ecore before the base model generation finishes. Further more there
> is also need to switch to genmodels twice and initiate generation
> delibarately.
>
> In addition to this, if developer would like to validate the model in
> between the unit of the works, that will require clicks to locate the
> validation action, click to run the action and click to dismiss the
> feedback.
>
> It is also in our experience that the genmodel editors are kept open just
> for triggering code genration. Furthermore, this not only clutters the
> editor folder with unneeded editors, but also breaks the 'editor'
> description for genmodel, as usualy once genmodels are set up, they very
> seldom change, but needed to be open for code generation.
> When used on large workspaces with more than a few model, problem becomes
> a real burden.
>
> This is where EBM steps in and delegates much of the work to background
> build manager and prevents user distrubition with using the instruments
> like
> auto build on resource save, Marker and Problem View instrumentation to
> provide feedback.
> ============================================================ =
>
> Regards,
>

--

Hasan Ceylan
hceylan@batoo.org
+90 (532) 713-5384
+90 (216) 332-5647


From Thomas Gray's poem, Ode on a Distant Prospect of Eton College (1742):
"Where ignorance is bliss, 'tis folly to be wise."

--

--nextPart1817381.JzuOy1YKf6
Content-Type: application/pdf; name="CV.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="CV.pdf"

JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp bHRlci9GbGF0ZURl
Y29kZT4+CnN0cmVhbQp4nKVYy67jNgzd5yu8LpCMqKcNBAEcxyna3bQBuii6 6gsoelt0NvP75Uuy
HOs6UxQXN3FsS6QODw8pmRN0nw//dKY7GryMYPEzDfT56dfuh6+6v/Bh704W 3zAdmIAPvDen1EWf
up/fDh++efPd7e/uI09Cf59+P1wfhxBPfZdcPIXu8Uv34Q4dxO7x249nAxd7 NvZydGfj8Bu/PP8I
JvJ3ols9Xw78qe/89Pj2MD8ObUMQToMYsh1YNWQsWtDJL3A20SS56M2AT0Zz NZO5bSY+BQNDrKeP
Q8R1P00/mzvOBYYmHIBXJVYAFxfO4PgneHwAAf8iBNNDqs2BoNpVRhBSQvfz ypXvvj5ggAAfv3WD
l6s/u+/bWMQUT+7JWUA8/dlcAdcNI1wRGYAJMZgQBUQJbviPd2Fu4LGaPJSI LpPfL8cMRITEF4yH
xQkphv1ZLFhr3eWI9wkTGygwlmNu06U/W465xfcTvm9HAtTJq/LkSmbsxNc3 uj3vu2pN5sRCvnGh
2FUpOJEhr0xbWHej5czCxV0zxmzgtnf0nFxEPGgByJXkDE3rCk/kNz+Wm4Ri IKSEMXhBQDorwPYW
nw+Cq9xRJkcdYWa8zdChUR7pZIHOI+2CC2XgPdOSXACgEUJcFxejgS05K75h WDWMfjUNLizqq/iV
XPFOV6ujyvz1JOE9WL2zpC8bXHHk5fFHMxCWdKkVCfQjkpcCFrr2XiiDOfn/ ZpOCH/pGOqyjYQ1B
JMFYoudKoiDmu/wKidBo8Ivzx/U0oxPgC5eQPWkdAWVbSU2HQiBjwzIMfVXJ OsbsZglhxtBFe9fV
oJ6RdihBNmFmvMFkLnh8P1ZZAC7DwTgV2ssw5beQrKLNAqz81MAqmCtWi5cL NGZWX7dTJV2/ipgR
1+RmL1cESZ4e165r3A9d6DdViULnRoEPaYGmMoBLZvWIlV4YBTpKZNgNhIhT OIhr9IGFLRYVSeel
8mQ6xG2u10E6L/XrnWFbMFdiwIrWi3fi0VL8Fj34MtR82BRbRu1aKJzxIcVi O2sqteQGlTLVklsY
nFczvM5EbDI23cykoJNnWFdIcaWNmbWK9Bw1Ljp7k/vBb7miOimrcJV6S+gL fYNKPl1SZm8kSLsU
KgYbZqGH8qNQUQyydSRWznF9aV6VC6WyFgC3YimW8lzbsPNykyoR18W6L1PZ MesFirWhipmEPpOs
wUcdmoturzJj0obT70XC20YgXtQA38O2OVwzUEvwsNLDSgmf83u/ZHMe7XIp pC1RbcVNjgk3ONQJ
FX7SzJaaLCWyvxQeY2TBcQ8ZZHTVNU0Sg2PVU71b28U/3Ba0dNHaZxkkGJSN iRwTuBZtnguGhRec
iy56A+XdPF1WT4ABG+ERJ72XX2AwNcRILVheulBuW/M0NistlAzUYuxxjuKc 1K6tpKKJ1MhUSgA7
F4nTwubtC1Hy1jXVUjyCkh/eVaktIOHsRrS6bGSwWcH9QbXc0n6u689Q+6hQ Ta88NUO7UbalIiMm
XtXuylFx3l/CWXcN/Kn7Nt7J7JpzQ9i0Zi/NlQbBhyXisZay50bqiVvc9bsp 18NF/wIRpUkEWg/u
u17B54LNgV6S2kneSdbiZ8h5LonY68Z60jpCP1A7mBKN7Y6+wsIQl633vNyt st5po7HrM6RTFJ9d
Bz7v/3Ei2ZnnXb9lxbHsMLBHOPVoeMPHW3RRLo7+zN831qIRmVvGRo0YjRkl NraeHAuB+Dzi6rnc
OMpCfhTRoVkNiA8ycNxdnh0Sbhq2FPPxAjnwrjT/uciuxeRpx/SCBLZ3GdA1 qZulVnbMPuEWyPdq
nBWu3oBKm69pMMoQvak9fxZBGar9Yj0s1+rSSazKdd2Rq4d33fiog8Oyped1 6JbDj/W5AosYU08A
dGmVpY6PV8TfaR/DOODnl2JYdZ26zcpnSS+xLGca1ILkpiS98s6XNC8pI805 naaEis52nTuIpzA3
540kGJGcMtaXnNk3b6FdmivSxqxgPZ1I6EpLP4kN46o0VnteW8nmJGNFTPj8 pw5u1vp9X03f3iiM
SxXtueEr+7jcTezOC9gBtgoVp3Vmgu5pc+nu83KFtHL488JMjBtxpGMWL40X xnPIEinSNG+FErWs
165M78AgpOQTThbO/YCDj00Na/XnGptblaP8IhY+kPS9CQj7Fp1ta5hUn/qI oMBJh4EqB7xeXfUL
Q9A3E90zhKg6gbRxdwbT6iBqSWBmeT5ZkPovx5ZiopKGqhmE/ZPs0rX8H1KM FxZhtHaVVp/1d58J
IeycY97LYmXFRfBex9tDuw+LC4pejoOWnnI5d9hXgNQ+GptkD7BVndLwLdN+ 7P4FpSBTAgplbmRz
dHJlYW0KZW5kb2JqCgozIDAgb2JqCjE3NDgKZW5kb2JqCgo0IDAgb2JqCjw8 L1R5cGUvWE9iamVj
dC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDQ1MCAvSGVpZ2h0IDU2OCAvQml0c1Bl ckNvbXBvbmVudCA4
IC9Db2xvclNwYWNlL0RldmljZVJHQi9GaWx0ZXIvRENURGVjb2RlL0xlbmd0 aCA0NDcyOD4+CnN0
cmVhbQr/2P/gABBKRklGAAEBAAABAAEAAP/bAEMAAwICAwICAwMDAwQDAwQF CAUFBAQFCgcHBggM
CgwMCwoLCw0OEhANDhEOCwsQFhARExQVFRUMDxcYFhQYEhQVFP/bAEMBAwQE BQQFCQUFCRQNCw0U
FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU FBQUFP/CABEIAjgB
wgMBIgACEQEDEQH/xAAdAAEAAQUBAQEAAAAAAAAAAAAABQECAwQGBwgJ/8QA GgEBAAMBAQEAAAAA
AAAAAAAAAAECAwQFBv/aAAwDAQACEAMQAAAB+qQAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC AN/52824mrrdHjon
O3p2Py+sz7b6t8p93EfZnT/Cno+sfUiEm0BIAAAAAAAAAAAAAAAAAAeaEf8A OfnkJE9bgjpOEvI8
rCTHTcrTHDC39LRZblyRXBlyViexl+B3q6TX0/8AOcIfojl+VfphSSFgAAAA AAAAAAAAAAAAHLfA
Xt/l8zzlNnFWMFs1oXrpxVM8MWt0egR3RR+1NsGrNTOkwu90tKRz/QcrLUvu aekqyd153N0n7ql/
hv7CtToheAAAAAAAAAAAAAAAHmvoHxMjnISY11+Iu6WMmsvpV1omOnIjHMbk fklKq9Dy0dNvQZfy
zPWO7xQfcTHnUP23Jas1mjIViPm9bRq6fq/L8ldP0im/iP7YiuQXgAAAAAAA AAAAAADgvjn6t+J6
pyE3rFtfBvW3jDg2pA5DcpmWwpbMvB7XUS9nFYOsgIRjod6Yisk3VGny87iI CPmY6M88dv3Is+rv
kWYzv+lzkOvmoSAAAAAAAAAAAAA+dfkv2XxaJ2iTWzSlOhi+vGdPuRfz+S7r aX5PoO0v5+iAp1d1
b83H+hXWr51m7nGrwmn3+CJ4rnvS+bmfP4j0/gOrj5uH6aNvho24NetPof7E /M/9FazNiwAAAAAA
AAAAABwvdfL0T85amHNNeq1ojpIvPy9+9y925K60tj049vPSt12e2l6bGHem +HNsR00zWbNKtDDv
aMxowUvW9dfzb1Dzjbn4jmuqiOzz4G2lZyzfZHxv7cn7WEAAAAAAAAAAAAHx D9f/AJvlZeI2pnWm
schTTsZnSmeL0JyW1JTLpyWX3xbPZdrrZ9nV3ZVsvtVj25msiobqtSY52Tu5 uKU8u6uS2w875z0a
H6ObzfBNw+nLd0cVZbP9OmvsVsAAAAAAAAAAABzf5w/pb+aKME9B7kW3Oi56 ez6PQd/X2uL0egko
rcx3yyGnIWYLr6WvsZ9bbVuVtmFbNuWtoyevEc5F9ZHzELdJx8RC8X2ulrz+ MRHa8R3+bnkIjeV/
SOW47sYqAAAAAAAAAAABg/Mv9O/hKY8jybGtE7voPnXqWXZ0+zp7fH2y2ezb rtuyOnvypdXKvWsj
S9NOklRGpmy22a2rlhM2zq8nzF8fRdHz3DavYx+nlpER5P7l472ccXfm39sP tT1bl+opUAAAAAAA
AAAAB8bfZPgcvkDX39CJkvVfOvTufrtkOWRrP389k0p2u55jhrf2LZ8j7LDb 0/e4DpKXmKQWzN8n
H7vNTSN5TqZTXLheq62kxD4t7Vz25+L6WMtjKea+k8tfLzv3byL6b2e/oyTn gCQAAAAAAAAAAAHx
t4X9ReHOnV9D4bu8bQvT6GbPeXkeB3M9u6gPMuj6KzmLu+QyZ+u4na5ej0DJ q7E6clze9ntEFv5O
z6eXxmH6q/pjVu39DkvMSMX0vPpEQnTRe/Ly3sXEdbbq926Xn+g6fFCaAAAA AAAAAAAAeCeMfRvl
OXqeT97xHeVz3ue6yP5O3h5qdz7ISY3MulLMW9u10gIzJu4z2V999dOCTXPW rO2avRWaGGVtmImk
3dS3M7ElrxnDxctDac8l1MdIW6vW+z8+9B6vECcgAAAAAAAAAAAPJOK9B855 vW8q6fnugtlN5tWY
5u6l2a2vQ2cN9s8vNTOhVHb2PcVmc1l8XjYuRtRobF+3GrPg2JitVTDqbWnb KGgJ6DvydBJx+7bb
2XtdLd6/FCaAAAAAAAAAAAAcn4f9LfL+HdFx8/zFdenl4OX5+7espljbVk6b M3wx3RxNactvQHUW
wk7rtqdOei+k5iInJTj+2xvr1k9LS+lTNjmuKP3Y1jEw2/o68kr0UV2use6D o8oAAAAAAAAAAAAB
4V7rGxb5m5L03zrDum5LnpfDrl5KGmKdOxlw7C+zBy8PVyvW85Ia8/XdXxWy V5KViE4Z2C6KmufJ
ZbTbFht17ZYYrajXNHYdnT6eT6P7e6/q84EAAAAAAAAAAAAAAPCvdYKJ+TpW KkeT05OWgZPn7Jvd
id6OjY1Lcda6WnvcvtjKbsLNaY4NmHzxMpNcvOZdEhbrXZ6IzejJjQ0slt+T Rw5pXr4vqsdHCAAA
AAAAAAAAAAAAB8qw3sPjvN3bMtCSnP2zOXUhMtug0IfT0y3cGrJ6Ux7W7G2t bfMXRPNSqKVndnj9
mjscWntZ7QltLNObU9E82+g+zi9GGnKAAAAAAAAAAAAAAABz/wAp/ZnzDlvz +TTy8/dPwczr005/
V7OA00x5MHYWtz8l1MjWvm1vpPKWtzGnSTtrbXo4zHlzX5YyjVx3r46v2B8n fXHZwhbEAAAAAAAA
AAAAAAABCzSHyTF/Snznz9m3fB58ursICSZ78tJ2139HZ2c98aR2rt4LRq9H lvy4ckdlg88MmCJk
NcFtuW1Nv64+OPsfp5AvgAAAAAAAAAAAAAAAAByfzL7V45e8Vhu5/k6u4neO 7Dl7c8T0G9GvnWv6
rbtHDzfU480TqyfOUmOi9aK6+DYmomYhs5pWLy6tL61+de59PzfXxnzgAAAA AAAAAAAAAAAAeN+d
+gRvS8j5/r43g7ua63h5Gael9N5v1nH3dU5nbrtKWRGrau7ycjyu3PrwVsj1 ck/2FXJ36U7Oeq9/
Lo+Pe1/OXo+X9IdF8Re3efr7eMwAAAAAAAAAAAAAAA4M4/c887/vw4/kPf8A zTl9LzXi/UtDl05e
fi4e1fRM/mN+evpOrwGOa9Xyux2uufNek73RZ9XO+i9jIdHDr6+xg6uC34w+ yfhXp0gddg45+qPp
P8yPoHnt9bI+QqAAAAAAAAAAAAOW8aR9Hc98ZcRo9v8AD8GW73z0/wCefa96 dhOQcpOfH+cfSOhh
3fP1/WwXD3QNnRZMbctsdNuXRE923a9GPMdjES+nnW4c2O2Ovh2cGzkPmP6s +GOxDY82Pj1upbdS
voP0p8VbOdv0qyfnZ7RnP1W899CiQkAAAAAAcj5AfRuj8R+c2j7C8e8VtvXa vb9648V2G04drH0G
Pq4Me1oU9PrvbvmXoL8/2nKfHHtl/N9k4rrr68nh1ntvI4ehCzHgHl/VT2Xy alLM/wBrfFHr8W+n
bb6ZeViwbmjo8L+W+04zvtgpdZx3rSttYrdS2sbd+Kt5ydZyF9LfSfsfwSzn 9KXwR7ZSPotzfSRI
SPmzyM+ueH+MrLV+ofHfP66MqzIi2t10xj2ab91K3YYhYwpu7Hip/D1JfHEW U9XYs1MlkvL8zIV6
ZfWpr6+dF6my147q1xZNyzBdXqu3tCk6/bfYfG31zbw5Lyj1b5D6OXyGO2cN rYrMmLKa0vtTWlFa
5cursi+ltrUzW1itaXWzF/pHmla2+jXzqpELSl02VURW66topVUvutk71uop FsF9tkRZqXYZna3t
TNl17ezub+ftR2xq7DNdq1vTdv7z6y6+T4k0/vHmIp8Z4/evPKep57r9fp82 /OYpqDrlX6u+VfrT
r8rvvgb6L+Z+rzrMVbea2FfZEVpfSJW30Vs2MF9Zy5KW2qutTa+lKqlKJvYi I6tzO1ta3q0rSl7U
urSs48+JMS+OM2YXYLqRWyyt033ZyF7reu7oe/8AiGf0PO6nuHd78fhvsvdS V/PyZo+3HnmNrnst
J6HQwZ87eOeGfX2h1dvxe978kaRX1/8AN3tdM/m3jzbjsqciyl9DGViWPItF Mi6JuUrMUqtmtarY
XUXrXKKoxchbdRFaKVtJdSVFb5izLkti2NWyIw5cWVeS9K839T6afSua3arG TR39dazf1aok89u9
jWM1pqyUDZPaOjl7JCmltCWyXxWJ+b/pT4b2vhtupxzSi2IoViFbaGW3JWTH mtLKqprRSVKELq3W
QytdN9Ol1aZ20VRcsum9KXZZrTKyTOKlbIUsrbWcOfFlRKev+Q+zdUfQuzj2 Kw1dvTTsZbNokdjH
m5K0rcqx6m/rXQzPb1TZjrfEeBfPE5D76Y6UccW2KltVZmiysUy5cFVs1t1S 227HMVuIW21TNdi2
pkWoiHuorK60VrSiGfBmtOVTJaMdt1KTZjyWp1s2HNESvtHi/tnXX6L2LNul NLU3Nab5tzV3apPN
bdxWCJae1H611KZMfTW3y71X471t57bfZlOOtbMopZWkzQoitysRbW1N819l 0VpVbaL7L1bUuplC
62ZoyJiGtvpnFLrUwvsum11bSdmtL0Y6XWFMWfFEa91t0zLez+NerdVfqeR0 N7GmON6LUrMbt1y2
mRrY5Ivpitma6W1g1YbMuptPL/FPtXim+lttcPLXJjutqtsvpKltUUpfbevZ msyTF9lbiwpM5bL6
xF16qtLMlq9y1FIe0relSaqkzfeLZakVrYTZjFcNpOkr6Qb5/Xm4ZZ7+M55x 5yy/CVWXksuuQtjT
Z8KRR1622nLFlpWcdxNLakSuIi+pabhCzITFMxa14ottJXCuf//EADUQAAED AwMCBQQCAQMEAwAA
AAEAAgMEBREGEiETMQcQFCIyFUBBUCNCJCAzNRYlJjQwNoD/2gAIAQEAAQUC /wDzZX18FrpNQeKU
lS2W/wB7rHxzmjl+tyPcLpUy01mv1ztBoPE+aM2nUttvUX6+832i0/TXPU9R qi5SznfNXOw5+Vuy
hLtVPcnxOoq9tep7M4us/iNcLKbReaW90n6jXGuo9MR1HiBqapo/qt2iRr6y dWi83K1Tz6lu14kZ
VQRGeXfISh5fkd2PexW++EqVskjLZcbhpmtsXidS1qilZOz9LrXW0OkKa7X2 tvtTuwfVtmbS4w2a
SESzOlk2NbGXNcfSSFmOUMORic1rC0p0O5UlTUW1zK2Cvp5Y3UsukNXy0KoL hBcof0epr1/09ZLp
cKvUFw9CWoxU7mz0Bhpp4WxxVNU4sLuXjb5RyOiJuTK4ehfJCBhU2CZYKXP0 pzmU8ElOayzRSo+r
p1I5kbLbqistD7TcWXe3fotdXMX67meKJOrwHVNZ6qOnp+tbLjI5jnnKpony yy0jA4RMDg2Jzhbg
9U1rlkmZZKwKC0PeGV0NK2pqaET096gIrrgIZItQSSxUdzjc57OnT6Y1DV2R 1ivcF9of0GttQNtV
BWyGae4ydFE5UeN8NQWtqt4hii60vqAnV+xPlfM+lo6qYxxSQtopW/UJrs1j X1VZOn19zo2V1X6l
NDHGOihkL6CRqbwaa6TUpYQ9WG/1dlr7Pdob3b/vqqpjoqb6o/Vd+YOrcJKa JriykaZGwqEtE1WZ
FE/pw4c9sEJqHuLKdT1LlnkufGyKmqJ1SRzKO8hsFTBFKn0z90kTo1HHSvU1 LEEYnqSCWJNqXZ0R
qqSy1ccjZY/vddvjj0hYJGejqawMp8yTLNLCH17NtOBIa4ZceFGf8Vp6TQSx MiyoqJ076qLo1O4y
OlqHzGOhITYqZg2UrnyU09JDVsDXS0rwMKCpnp2O5VLUGnl8NdUjd974nV0V FpCmmfTwspPURyx0
7GQU0T2siXRfTPqYOrTmLamwu6baTrNNGfUQWyRz4YujVVNA5ehJPpRTIQeo c6H2U1L0mnNPJIJC
jQSxxSTdaR9M5sZMM7JGGM2+qmgm0pfBqGy/eeM1dF9GEhz13BRv2PL98gL1 VMbOySkUlJuMNCZR
S0jWOND/ADikbT0tJaBFHJa2yIWbllibu+lBrvp3ItjZnTUUaqo2skr4/QVc 1HHFc4+rbJpmsyZ/
Ux00wbN4X336Ze/vPFaonn1SOTsdspaTeqSn21MdKQen00ylRt4kbRURXRYH thDH4yGgIRrHLhyA
nRBdMKSMKs/9G5W/1FI4OrIbdmpiqKp89O4NLVQ1jqGvs1wZdLZ91rDU8Wl7 XV1stfU0rA6qq2U9
K6GXrPpqaQmCGdqhpGNAiAEceVDw/HJQTGp4LVhFEJ59kXvjqjsZUR5hmbhV 8MdHc7dJtqahx6u7
yHuHhFdPWWj7rxqk2vgcWvqMtn4rXUeFSjYyncZX9T3sbwOU0D1ATmpjUxuE clrXGnOFhSjDc9Fz
5WuMMLt8oC1HMyK32h0baGaIVEePJrMrwmuzqDUv3Xive47tqKni68txZtYx 72KlqnFUdTAGRVfU
kpYQ04TRxA3MuPId2ov4cNzXRvjPqntUtTljoqitAb6KdzXvFyqGUCr2T3GW G3MkU0VTGJI3hdkG
ndZauShvP3OoJ30thmJcaeXoy1Ez6p7ImAUVJSvbRUsEbBwYDlrQi7aKfhhe gUzlBYySm8nujuan
bZ1KyYxizVXUroaK3VFso30xqo/S3W50zqetq9wWOYYuo2FzxPTzCpp/uNS/ /XJOPLIamb6iSlZs
VM/2N7w5W8NRf1izhDOAmrK7IjnhNW3BqIWTKWjqQJbdUzKkoIaBPVbCyoju VLUdGofxgJjumXMG
60HNq+4u1N6y1u4Q4VRIHujmYBbiXkNLWsCj4bG5N5TexC4TM4/AR5QjLgGp wTwnHapGkNaDtlCm
fhSDc27UxYcHGVG726QqDU6a+4nhZUw1EZikwj84I9ytLOBwIvcW9oYw10YT GotTRyRtWMrCxy1v
kU4cvRc1STNYuqHidf2ukbXwzNw97NqZ8/DTjTf3PiRY47Jqd7SG/iLk2xpY wO4pmoKJM7g8ntEO
doxsTYcpsRyGZ8n1MeJ7jG1Vt9YwOvg3G6F4iqXheoeQybepmHpXBm2ZsXXM tC4VWmbd9LsX3PjM
f/Jv6v4VvZ1JoYw1meBP0g66OjMF+DlDe2ODL60ObeQXMreWVHAqMtE+DJKc T1vTFZcXqprHPZLV
SlU9vnqFSabTrZHGX0cYE1G1RsdTv+cd8hxKyIrQFifUXr7rxZsMNVbHA7XE E2hpMmNrJajc/oTy
r6a6UCzOepLXVNeaaoaYvUA0smDTP2qEhrSXBzX8VHJqYQU6kjmbFDTtc2sp 6cProkahj3OennKl
p96gyWXeFpFDT9WqpGimNtq/XUP3WstAxWys2nNky6WT4Qx++KNoA5LXNYjW UzDNfaFrzXslXX90
FxDTBMHiLDnyDaK2q2ovc8ulcA+0VhoLbYaq/C10bq+prWVVjfR1zZwD1F0f a1mG3NhfHYabqT0E
xkZpz/h/ur5Wvp9R6htkVLLYmfy4ym0uw7sCqunQFutdTe21tAKOrrYrXWXK s09AyhgousWQw1Md
rm2iAZMrsNrj/kVP8UbWujmZfw+mn096uSip5rbJJTzVThbI2OgYQo2ex/Cq RmLSLdjY2mGWwP6l
o+68QqX6rcK23/4VkGFC0Fzo1UtcnW/qS0slVROq3S3M0VsdA6qgkmMcUbBU 7Y46IHqxZIkYrlH/
AC0NUU+PehE6NNkABIToQ8+k2gwbSBtbKPdMtIDaa8YfpKbqWj7rWg2VU1M6 ajs7eIe/ya+n3L0a
EOFgBF0zy2kJOI4mVLnVclG3+aE8SHKrYcow808zoiz3Dp7kYcHZhYUkQy9o Adwp+RZQ2Cnr8ufo
r/jPutdP2z0zttPRxhs1OcEd2tTI0GAoRprAE94YJ90ztvNIzCiOA8qXlOhQ YmDpljgRk5JQ5RTx
kSnCkKt7BLTQnc3SEPSs33WuKcujYA2VkboLlDwozwBwW8NzjJRci3cp27Ws Hsp+8Q4ccCd2FF7x
09jwzcnYDsEoJ/CcncKfu7h1om200uGKiphR0n3WqojLYS4S0tzowyCEqLhM R8tpc4xYTW8VceFI
5U/KaieJuUyTa6J4kdBDlTxZQYGtdnbynKThTOUh5oDthoh/3b7uaJtRC/8A wZ7th9DEoSollNZy
GIe4tHFQN0Tn5NO3gN46JIngVQwtLHOjkhd7eHNczCLAS8ZDjhSu9sjk/hlD j0Wm7a+4XH7zWtIK
a51PvpozhROyInEJhy6MbT3TfK4u2wNi2yU49sbQCyKNsVXt31IBc+L+Kk90 Eb8J546genuTnqUg
p/Kn4p7Xpu3yWyOJkLPvLjRNuNDWWKvtcslO+nlgk2kOULslp4a7CbyiFdR/ G5wKgqhmOfcDNxPN
w1skqkEwdSR9OF7URkSg4kO1HKecEtLzP75GtDG/f+IlIRUtco3ZbG7Lmk4a /IanyYTveDEaZ9VV
MmENW+Bn1ESp5c8PqC9sY5aVnjKeOXuUr/dIhlR075K39BfaH6laGKE9M53P idwxy3Jxyg7CqH+1
wEqhqHvGYxB1zUJ038VPNmNsgCa9O4Uh4mUp/kf2ceNO05rNSfodRWxtmu4K 37XRnKYcIyAJ8+Ea
n21FVh7XCcDfTx0szzFTxgTsIMkI6EjKjCFWvWjZE/e2RH/fm4UhwPD2hE9y /Q+INtBiByj/ALdI
/IcQA+c7utuRn3FnM0dM/qPpDJH0qj1MNEIk2CPNRHseHZDiXxQOdsopcqfh RYdO8hPC0JR+nsn6
G/W/6naB3adwpziSod/HHA5rZ4nOduawesjwbgSYqiVy9TWhplmkO+Yl1RO0 MrnVIjo3uc2B0b6L
PVqn8RcIkuLojPUQxNgh/RaisLrHWj2Fp2y/7kYaY0YyROMK3Vzrc1txo5YJ qSGdkdH6eUPp4KmT
UMcMsj5qySliCxhpBBjOGTybk72ta3DbK7ff/wBHd7VHeKG5ULrdXk8R1OGx PBRG4SsyeMxQslY2
hIMsdRMfp3L2NjTGF7qeIRj+tS4BjahOcHF3vdI7Is7dt7/SattD7tbJoHxP 4UOWKGYSMLdynhwm
ENUdcWL6j0jPcOsGQGYxQhgefc54AqJeoIzkOdgH2iKLa2Jxjqf0lXf2xV9w ndJc3+5Q1MfUpXOc
5vDjGHKSlJcaKXrGJ8cjLWMQ0r2IjapPYp5soz9JtID1T8qaH1Dp+Vj3PrYY 6n9HFSRUlZd42tug
9y63pZqSrDpIzvTWqOMEdBmX0bHOEYDXcCZwjbVzcTSECZ4abeeImGV5IZCW nNmtL66e91/orn+j
r58X/UUXTuL4yrpG50VHI8KCqO6krRI5j+GO53heoO59R7Z5mlVeGp8ga93v npqf2QRClY7KtFmf
dpYqeKkg15U9K7Ut5hqLx+iubP8Avl7o/X21zcqaHiozTKhrOpHDJ0i2RzlH VGQOqsNbOnT4iqjx
M7eq50jVa6Evkp4RAnOVpsElwLWNgiwvESp/8s1tcnjWuhvECG8s/Qveye40 cnTN5tBopy3Lqil3
B0M1JLFWh4bUAyCUOZLL7WynpukDGVVdkS1L3Ot9rkmNLSMo4mRumdatMNiR 4BTRk6zrBXanqnGS
XfzoXxJ636DUusrfpmPRczqqhaEwMqIbxY5Lc9zcqajZMJbG/dPSVkRbWVdO jW1gD6yr3dSpkdFa
5Z3W6xNaoIGwst9jnr1QWyC2xuKPlUT+lpJad89JJw7OEFozxMloGUNfT3Kn +7vF/obFBqXxSrK9
RjnQP/pNChTNsjLtpfDXQuieGDc6Br063By+mhhNCC6K3jdDRhipKGSqkodO RQkANBRR8tTU0tfa
tbdClncAVyDu4Wl9b3DS4svijabo+ORsrPtr/qWg01T3bxkp4XXPXN9vKPDX O2poLVpXUUdmNt1B
brg1owoionK4WamuYuVintqAXbyDQDDGZXUWmslrYKKKK8UNRMiiiirlUili r6p9bVfIlfjK/Mfx
tt5rrWrd4vVkStOvbNdvsq2up7bTXXxatFEK7xdvdSp6qeqNPGUGlO+MuHKM 8h7WhrY5H2vUd0tJ
s2uaSsFNI2aNpXDhcdMxyqehfTOELFQ6efVqvvtm0lHdPFGur1WVdZcHW9zq Go05eWX21+RRXiXd
zSW5/CJGUUfhlRnkcppwWkuVp1bd7K21eMIJtesLReG//HX6stNtZevGGnjZ dvEm93QT1k1UR7iS
VBHlAYBIRHLu3pW7ZaVzV0ixGp2vje1zbfc6q3S2fX8E6hkbM19Q2ISPhliu FfarCy+eI9xu7hDu
LSiQGs/jk0Be/p9y8sKoIii1Ld33q9OGAeQCu6OF3JOBxjjdyI8+5uV2Vn1h d7FLafF+F4tmorde
G/6L1rK02BQeLVpmfevGH2VOur3cI+zvyuclRsJQaEDkbsO7EHqO6bNplaHk xlOpI5D05I46Wd24
YeqS/wB0086W93EvmravPuqJBySWBDc6Ppr8xSOY7S16F6tXl4i3n6VYXjAP AxhYys+3C7hw3hib
yf649272u9w4B/uwujVB4h36hZD4ybIbn4yxBVviPfq1blu8u4b8v6HsRzGw uQBDec/jHEjgFE/E
jnblty7pPKdFJltPM4MjmY5lTJ1J2snb6dS0hTdjE7O3btTX7T2TpdgjL2v0 pqT6BcKC4U90pV4l
3X1t/mPD+Tyv6n5ZyuFnKHz524K7LJaedvOe7jyj7lv8sruQFhYWeHeUbNx4 bGeE8BO7yvwuxCY/
LOo5yY73SNcmPGN+EZ2KP40tLUlrrPWSRupSxekwOg0JzEGvcOg4ENAXGfC+ XfY7xcmWm2VNU+rn
dy7OV2R8to8xym5c1Dkdk7AcDyDsTV+dy7LHGOPwe/ZcE7lH73RgNH9XFDJT 5MFdyxqMe009G0sm
Z0RkvWG56DQeQdNaMqr3LS0sdJBtV20/b7sqvQL4lW2uooHvkkcZN1Oa6fe/ +7I958OYOnYvFq77
Kdz8onHl3aeF3LuQvznKa7Ba7ncQMYPYnOC4I911EM5QG0L+34yVnCzlrJix zJA8vKlcsck4Q5UY
w6kpHVk9TbprfUupstkpednFq0lXXU2fQlFbH9TYfUps2U1wW0KtoIK+K66C eH3ilrqF7sJ7jigp
ZK2q0nHJbLJqm7/Xb8e/5/OV3XZDGcr+oaSdo8uywuMn2goe4jcY/UhdljjI A2HeuFjcQ7k8hNy1
NkJHGN3Lk3CYA46WbvvOqrP9ToaNstYaDQlVUii03brao00ZB9zthWS1NnLU KnKE5UlR7pntqI7v
oWjqTctP3C1O0bT+ovmu7t9G012GdiaSnHhEnDh5fkLstvucPbgNcPl3ByiC T+BwsuWMHHByVzk9
s+f5WMo4ancL85QamZWjW776OVBTxQF3bb7gonYMbNx6adCnQowcuywOJWUG lyibhtJaaSOv8Sbu
bjfncLsg4OWefx3GMLuQCsYYMLALSzK4yF8o/wA5ys70ACCeTknAQ7YCzlE+ X4IwgxbEePLsuUzJ
TMgaKbm9NTEf9FH/ALWFhFqMamZgGLJ6Kjiwnq7V7bPZ3PMsnZpKK+KPCwMp pwfkM5XxXZFybyed
mChjKJysreuV2B4PdoOSBhDg7tq2c4wj8SncpydjMfeLhaBbuujOyPb8hAZV MNsXlhFTDjatqPCD
crxUuuAUShwitwQ4TVn2nAQeuctys+WOC5pP5B9w4B4TSQsuCxk5wj5fj+zc powvkDkjldwThHhH
sz4xrQA/z4xwjwvyxNTPgB/om7Hy7ufI2nivVyfeLqeXE5BR5WSisctwG5Kx lNcpDw7KGS4fEu3I
u5HDeMY44W1qK5WV8lhcFEYTeVjhxX9u6Kdwimd4F4e/8lGOMJyIUaamDj/R P8e6cmjC8R7x9Nsn
4Diiu62pxwh8sLOWdj+O6a7C/DRgOHsdjIXdck7fd+PL85XyTePNnKHub5dg 7lY5KaARGMrw9/5K
IcBvD+CUxBN7eZOFOV28h311dzdtQ8IH25Ia4AD84wjjIBTvLu/+rRxyjhY9 xGUAQG8rByjw3Kzl
+cDOUTzy1bcIZy3vnjPOFjCcE8cOamZChI3+H8mLxGou80O5Fm1NUaHbyynH Jf7nFdlqi7fSLGc7
s8HIQR8sYWOTwgPLlo5AJPnldiezSmjC5cPi3pu8gdq5Kz7gePy0ZPxPZZy7 5Du1yPAxlBQlaFkx
e41F3IUjMrpprEFlZW5DlOHKkK8TLq2orjyVuW5cI8ke09zn2rgEcLGSSsZX ckrssLBXCPYjK3lY
yEF+PzhAcFNduPxWMAjauycE7Kb8o/lpGTp3yIct4cDw4eQHnjK2rCI56XFQ WUsNxrH3CvPc/HG1
27gfIYcs+5DKJRygBjPuxlf2bym9/kz8j3IkJrvaDyv/xAAqEQACAQMDBAIC AwADAAAAAAAAAQID
ESEQEjEEEyBAMEEiYTJRUkJgcf/aAAgBAwEBPwH/ALGkYLexew7nHhyc+oho 58ONLYFksP08ieiV
y19HrcTQ/Qtcf61sJWLGwSLDjbW/otkco2EYCpHbHTO0do7ZOFvRRYSXBTib TaLwYyosekiKaZFE
VbRD1ekskoEkX+dEMkULyZYaRNE+RLPoUhFy5cuXLlx1DebiqsiT5+dIpG87 kjusUxZLD/Q4yYqN
+TsjhZlXgp03UgcfN2nt3ECMSUoQ5N0ebEJKYkbTCKu//iNuxDcl+Q0VFg6f ESf8n81HNKxTw9O3
fk7YrRwtLliwooYyWSgsFVWm/m6b+Av5EUJDibT7HpybR4GTKctqJvdJv5um na8WPEiIi9x5PvR6
tjZMbSp5+eL2u5KallEHgQh8aSW7RYOckiRN4Lt+gsMgyGjY5JG8jUsKQmMk VHj0qUrogxzsdws5
HbZ2zg3s3YGyq/r0qUrOxF5JZIQTLypvgfUv+hVqksKJt/2SicIZV59OnK4m cZKVRSQ9v9G9R5J1
N7JFzkrKz9Ok7yZusQlc2Fpf2KN+RtIlMjkUbI6iSvb06crTJQuRltIVC9xy sTkZZThZXZX6i2Ik
cy9N8lGqpKzJU/tCdjeOZmRFRpq8it1LniOkMZLl16Ci5vBKlOLzpTr2xIW2 eUds7a+yVeMcRJyl
LnVX0+y/ybi9xJHS09xKlkfRwmVuiqUsrKIylB4I9Vjge6p/JkY/SKtLdTut V+9ULRteN9GLWy+z
pqmw717G5N4ItWyVqGbpElbFiKsRp5uRjZ2Z1FHtTEtFpa59C8N2nInor6fZ kovO0VK/5Eqqg/xO
+T6uV8Eeq/2U+zV4YqOeSpKMXY6iTlC4kPJx4s40uhLRW0RgtdjuJ2ydLXVS n+RWqwjLBKrKWqbj
wLrKqVmRnGf2dRLimcPTnX9HHhbRYLn34/QseV9Fd5eqGJPRM50t4fWi050Y vhetvD9eXI9P/dXw
Lxei5LHJwX1S8LeHPhl6Ni1v4LgZx4oRbw5ONYj0tgaF8D5toz6GxCPvRC40 /8QALBEAAgIBBAAG
AgIBBQAAAAAAAAECESEDEBIxEyAwMkBBIlFhcQQUQkNSYP/aAAgBAgEBPwH/ ANFZbKZyp5P5+NT2
/oSrsS2pChWUNX7RP4fRyyWhIwV+jiYXQ50c/wBow2J/Xwv7MHQ3ZhF30U2L jHseejP2NJji2Rfw
H0YKKplFXtVlF0W/vdxza+DxLURTHNHi0eMxa1Hjs8YWpbIu1jajr10X+ycr ORfmWDSnmjlb2r10
8jpjqxvy/wBmEPJCofkchOxZfwJMfoWNtkJULrAsO/WW2phbUVskcdrFFvo8 KRVGk/xI5desttT9
C07PBQ9AcOJ0WKhOCP8AUV0ePJnKzReaJ6nF+vGVvianuJS/QozmLQf3IlBf TGi9oVH6HX0icYsu
jT7NTMhdes5fkauGRZyxQtR1Q95ClvVkexu5C69bU7J535UW36ERZfr6i+zt bVvWDiOJlHe8SKz6
7yRVKhl0WLLGciyXQtkQWfhSHt/Is5KQ0PZPbT+FMaErYoipHZZ2cCsiWSCx 8KaKI4QmmNRXZcC4
/opI5HbPsj18NqhxIumNlo5EpEbbONbR6+G4ricSeBSo5pjlZVkYj7Pc8Gnp OvhpfiL8ZZJwvI4U
dbQRVZG3N0jR0VHvsgsko1n4PYo/7TV0uXXZGXHEjgpdHgs8JlRgsjUtX+iE VH2kTTWJMZKNeuoM
jUWc/wAjDJxjL3E9OUMo8RilKWEKCXu2QiHsHs4/oar0lGzihUhE8Cb+jn+z lZY9KMmLTUV+RzS9
qG+e0TU/CKhs9+JwKa8lCiivLNWcDJm7RGZyYzJF/Y0f40eU8/ROXJ7PZbPb ijgMXkra9r+iiGk5
dDjp6PuVs8TSljjQ9L/qNtdoVs/4zTXh6N/vy9He3W17LdD2RppPI9Fv8oEY RXuY51iJxQ4HGSyJ
p+9D0FL2M4PGma0s8V9bM68tefrb6KNLCZeN3LItQUr2ZB96jO/NnZnZXlzt Q0Q9r8j72i876n4x
UDrfrfvbItu/J35Ie1+R7QWdtJXK39E3yd79+TrZMvaxeSt9PpkuiMxvaiON n+Gn/fo/z5ELZFUW
fe2l97sQ2RIO3Rr++hFZ3+xef//EAEcQAAEDAgQDBAUKBQMDAgcAAAEAAhED IQQSMUEQUWETIjJx
BSBSgZEUIzNAQlBiobHBJDBTctGy4fAVQ4Jjc2R0gIOiwvH/2gAIAQEABj8C /wDpsficS/sqDPE6
JjZCl6GpVKJ1OIrgfAC6cf8Aq+MzH2KpptHuCqPOPqvrvMufnMk+aDf+o4ps 7urOK+TN9IVatD7V
B1Q5dZ0Qdhce4Um2GHf36Zvy29yy+kcCHDMfnMIdB/af8qi7C4uk59QSKJcB U6937wZiMdV7Gi5/
Z5spN4J28l8qxA+Zb9DhgbNb/nqi518xMDosrXZRup42081kc4Pvo5dvQf2d Rt5CZT9MsOKw5gCu
2JCbiMLUD2Habjz+6fk+HaK/pF4kNPhpjmf8J9F2NaGuDpqMptDiDtpaPjdS /wBIYxrefbOj9V38
ZiHmI+kKFWhi6rQyoH9n2jsr49rmqtDHY3MzENYyp800SGkubtzJTgKnh0IR I09axK7KrWLBP2tI
Txn7jtxdqZ2VQsdNuRWTGs7CpOrNEH03tew6OaZH3NSPZ/KcTVPdo5o7u5Ts Ri6ueo7xFrYld0rQ
sPIaIHM2/dRqNaSNPMpzi4mVJheyszIqD8JuoiDwjdTq1XMKHdIhEM71M6sO 6cwiD/Sdt5FBzYEH
6TmuzkvaNcM99v8AxKFSg/Nzbu3z+5MTj+z7XsgIb1JgfqqmKxTjVrOO+gHJ T4+jQnAkscfCS2FT
qyIcmPpk/jCFLP8ANk5oWq68MzSWnomtxjJI/wC8zxJ9Wn32B0dV3k0VHECf E2677jB0e1ZsLiBW
ZqA6xWTFUW2tDk11A5Kn5LssQyfcpE0nAajZUq3ay027Ucuqo4umMragmD9x 3qfweEkUx7R3Kf2b
APxFbu6ptMmWzun5iQ7NsmUWk9lEngOzZnKmvV+dJ+jpiYU9m7J+IwvBH/lK s6PNPFN+VzI8JlB2
RtUEar5lnZ1fZJWXH4AtPtC4WahtoRKyYirWHncIfJsSKrPgjRrEZY7pOoTm 1WgSPEslNhqxfIU7
5DVzUHeOn7PxTa9FwzaPZ7J+4Thqb/4uuLD2W7lMZmauyBHBpVMt3cbBOds4 oNmBzT6VOoaOGbq5
v2l8xTFMA2O6lxzuXdyt6lAVsbRP4IlVstLtG5R4LLIHVafRRhi4g7aqKhho 9tqGek0W1aoJypsY
tgn2gjBZUj2XL7XuQYKnaU+Tl29B3yfFi+Q6PVPG4d/0n0lI6OVLF0PC/Uey eX1+riKzslGk0ve7
kAsbjLUhWdDWnRrQLKs5zQcshpCcajwTyap7PN1JWZndUyRIPxT2O2hPvDjZ CPCxZZjmURRbmtus
rXz1U6IGS3N1WZsxrmcU3LiBrtsvk+KxbKrRtyUYStTqN9kiDK8IaV3mkJvf qUxucsomjim1P7hC
EgX3Vwbbod6D+qBn+HdArU+nNNexwcxwkEb/AF70oarnMb2USznNh5TCqkmE 5oGp1G6LhpKl57Z8
abKGYRlM+0E53NA7uF+FRoHecRdaC6N4cQjuVTAHiRYBOQGyHbklo0aDZZGd yn7IUugNjdMz9pVn
Ts7LKG1Bm5mUSzEirhuT7hS6gcKTu27UDArNMd5iID/inQbHVpUtt0Ca79F/ 0vEVIBvhyT/+P17F
NqsLxXIpNAdl72oP5LK05XOQzVcpCd87Uf8AhanR4tO8EaVSkRezkfmw4Dqs zfsiwV7FTEjhlMeS
aeuipspiKg1To83OQbpyQDhmfsgagnL4WBOIHenLHJO6akpwoAkOPfnQp9O5 Z7MaLtcM/M3fLqFm
qyTuQu1Y7taY/JNyMFGr52KLXaqnVouLa1E52uVHFRlf4X/3fXcPgv8Avdu2 r7oeOGu6bGvVBrG9
524TL+FNeNd0zL8FG4UG/Vdm5hzD80O7eLK93TOiL3Dvuv5LSE4hpWY3cu6N Fy5qX6KNZTavZ2bA
dbZNeyRRq2tonNxDQ6m9mYOantZJY60wpaCNLFNY85XN0cmZhbQwn+j6pcWV e40TvNj9dq0nMf2L
A1rDFj3Qf/2UalTHlITTVdA2ARyszW1KBtKy2JOyHtKSLq7fCUTllZt+OvE8 dFioFpAWUQZboVRB
aG1qM038ysXhr5w3uQh2rZLLTyWZvw4UcTTcWvYQZ3WHxDXh+ZgzRs7f62ax AqYip3aNKfEViK9Q
kue5z+8Z1VJs5Q4wshALm6+aZ4B+LdZm1YK7zx8F4e9zWikpzdLKfUnQeoec IQieSw2GPjquDneS
/wAKhjiPmiYqKtiGA5O01A2VRvhBJsp34HyVegfFRcBr/wA5fW/ROktFX88v +EDAN7ymVIAkZhlW
ZxgqLHqvEiduaDWiSVfg7y9WDELK4Zm7HlxlEOMNNwu0qT2Q29pGvVHzjhYe yESU5tVs5vAP3VYE
ybyOSbDhnGk/aXLicKXxRxTYIJtm29/+frfYUhTdTwjcnbMfmzk3PS2nxWWY 8hKpAC7BFwjlsSmg
uaw83IZ8QHT0QFIE+YWaO9xqO5W9YKab4/CV36J/8VahUcV2dQClGkqMUM7v sVNkMuh3Waq7O46M
Ws1H+FkaBChn7FwEh458kaJv2RiQu8I34WWBxDfE2oCJ+tekq1M5alPDVHNI 2IaUSVnm4T6h/wC4
V3vgofLjNpUtpNBTUOPn63TjIWsOCLczKjfxhS3GmhSP2KYUsz47HPsGuKNe sc9d+vRUy76GobO5
FZhGSoJUFQu67K8KiDs8KnVbIbUaHCfrPpX/AOVq/wCgrXXgGtMtZcnqnOt5 rxByuL8bqNArLvcC
h63e+I2XzOMcz+5sqMR6Re4btYITuyp39s68MjxImVZ4qjadQoc3KY0QTYNu iZUGuYLBH/0Wfp9Z
xlCQO1ovZJ6hCULIZG5QsmWAgG2BTfWHDT1Y9S2qvrwuoRMX4kb7GV6Pe52Y 9nE+VvrNSlUbnp1G
lrmncFVGm2V0cCtAVLYW3GZmfWHHr6uvCZXTg4ngDsd1G6/+6f0H1qoyk75r Ej5TljwSTb4grS3A
b7Izrxt/I58DstQtVqj85ovHqn5ZtuUTnJ5rxhcoXmiAAso12BTKQEk7BYSh lyvyBz5EGTz+tYVv
/wAGP9b1Y8PZE6owZQErud5W/VDvD3LxwRsocIV90NkHA8DdaqAsuaJR+clq a2kSZKdlaQs1Z1/Z
C6Lu2VpehyldFOX3qY05LB4zETl1b5i/1uj6Uu2vhnBhI+0wnQ+8/mVMQZ4c /NTp0UCYHJS3w8l3
x7kOz7qB5aKHMcZ57LK9vd2Q+EICbFap0bq9uiEfHhESAtmqzm+SMuhWKPCd 9VBRltiqYbEOseip
tYA6BIuf2VKsRBcLjrv9bc/CYyn2TqZcKD5Lx8BpsiDYjULyTvJG8Ln1UkXU zC77m/FZWvau7fyQ
LSEBUCHJS5TKKly5BOxTSKYF4OqxtSjXZmoU80VHQT5fBMaK72Fyy4wB9L7L 2LuvBHGEFVjvZVTj
xNsqHm7/AFH636Qo47NSz/QZvCWdP+ayhVouzdptKBLplQuqmUQi6riHUGey zVGnWY+u1jhmvchU
R6Ew1WlSy/OCrPi6JjnfMV8vi0lPa3s35RJzGEYd3hsV2Z2PGCmBtHOXIVBT a6PsuRo1sIXgj7JT
3tpFrTYBdpRHfiB0WbEPznYLOxveKjhzTljGEZwd04DQ3WGN9IuZ3+t4fDPa 2KVI1GHe+v8ApVQO
73Z80dVZTr0RAgLO4kodi+PNDt2DOPttTXUXZHNCmtiHVDyJUlshOeGhlrBN UcAU1jnAEaTwBiQh
ZwvotOGnCOBasROkqmW801v9N7m6e/8Af63gKlyDnaRNtliMviunHUyrcbW4 eG6sI6qX3KzOuRzU
nw7BaWCnhquqh9281Y25er5epr3nFUh1lV//AHz+g+t+jeXzh/0quOaqjqf5 Jnwq3COM7cP2Q2Km
fVKKs2XDddo/Rqa+fpXuf+37fW8HWyy2m8tJ5T//ABFkw16rsJtPd4j1NF14 c+B9fXh5eofLg6mL
SqVBujGgWET9bxWUSWgO+BlTyCZiAYdK3/kDhPrifyUfnwvwnjPVYCpv2zf1 +uPpPux7S0rEYYvz
GlULJiJgox8EPV1V7eXAyLhZd5QQWnCRdNv3Twj81ZTwjiSm8zdU6wEYag6S 7m7YfXaeIzOPyjno
IATxI0/kC8I9bITyQQQMgp2W44dU07oqeMqOODdUw4e/smkuk8kGU2BjBo1o gfXa2GdYVGxJEwdi
jT7CpiGGQypRbOb3bJ9KtTdTfu14gjiFb1GG8AoRqoPd80IurcLNCymPcgOI hSOMBUxp3gEGtAa0
WAH3Bh8VnZBb2Yb9rcz5XCmV0UKx4wjKzMvC+dbldzUu8HMLuIONmpuUwFPq acNYXVOgrC09X1Hg
AdfuHFYcDM5zO6AY7wuPz4SDfki4COnr+1k5rI2Oqz5Mx6I/ZCFrpm/rAQoR WBiO67Pfpf7ifh6U
9lALcxk6f5lTyQPC/COF3LuiE3L7kQ/xG6z/AGdwnF8xoE5pJJBRk9eBm/qW USsRi7ZaLcovuf8A
h+4qGPbOdp7J0crkf86q6nooNly4FAJoueiJB7vJMyAkhMZluBqE5xstZ3RM bao20Wl+Sa08lF1C
cTwJQqkDNXcXW5af5+4sThwCXlssA9oXCj1BJzSi73Qu/IdzUsaXuG4CvLZ6 L5rM7opNE+aMseVD
aTz5I2eG/iWRrZjopNuiILrLorXX78KNBvedUcBATKTLMY0NHl9x5Q6cNUvS O/lwmNeEHmjonBVG
dmHMO3JMY4N7T8QTOyc1jnbsTG1KhqT7Sq53NDI3VbsWdqTuE51V5a0nwDRC Bwcwi66hfrwJ2C9H
n/12/r9yOw9Q5d2uH2Sq+Efd9N3i5jZdRwPfzGdEL7cOq2JKlrns8ihNeo+E X1JP9yGUK3NX14Zg
gOajZdFlXo7/AN9n6/csUWZ8TScHUxYTzE/80T2PHzjCWPbyKLSFaAozXV1Z N5hEc1KjmpcbcuEc
DlKF9DwlZ3aqi8GCHggj7ldgsPRdiMSwS+Tla3fVYqqRlL6rnZQZiSuiyTJh X7o5cOqMaIy7K1DM
TlNoQNxyV7jhMrl1ViHFGea0U37MFfh4U8O58VaglojX7k9JH2q+nndYkNEX lZZRDmOzaSERe3NT
x0TdPUhRMpve726c4gSVELI3gCfowZcV6He50562S/L7kxdISGhzS6Tvl2/J NtYt158M1zGybmIh
AZrKfsqyy6Fa3REW4ap0v00VwTPJdDZNYwXX4jujyQtFHdxXY0G5WBegae/a Zli/RvhrYdrX/wBw
P3H6Sd+Jn+gJtZv0lH9FKJhSRvqi2L800aDoiOV0HGx4G6Maly6LxbqKb7rV 3UL8XNXQfUHZ0Ou6
yUxlHD0c2foWtJ+Kq4rDVHU3MYyHtOlkzA454pY8d1pc76XX/b7i9JvbVZWa aghzHSNFlPhdYrM2
9F+hUIx8E28NTIcfJTJzIO1ylTI5K8FCNVqj2b837IPf3y5EN+kOpQpU2lzz yQq4vvO2YoAgDgFj
3/035AfJZ3HM47lBzSWu5hU/R/pZ/wA5ozEO+1/d9wEVn9riyJZhmHvHz5BY uo+M7qmYwI/IcOxq
jMw7IvjNRN8w24TEIOpuyjkESzTmVBnKpyFp5K1M5SN0W5Y5ym5z5o5hC7gh Du5KXtlRSb3t3c/U
r1zpTYXLEY6p3WveT5krThYxe0KnhfSk1cOBlZUGoQrYaoKtI7j646pi67WE CRTkZ3eQ3T6Poxpw
WGIjtT9Kf8frbVafFYodZ4ljwHMOoKNTC3b/AE+SLXAtPLhYcD3pUudfyU5e GWmyeuyz1/nXjbYK
Bb1X4KjY4g5HO5NVD0XhQOwwov1cv9lyR1Q9ydToZK9B/wD2qswDzTaVfNgK 5/qXZr7Sa9jg9jhI
c3Qj6uKuOq5MwORjRLnxy+KqM9H4F2JsQKtV+UTtbl8E7tcZ2GGdY0qIyDy5 n3ojkOF2F3UKqHU3
VG1B8FFOvkf7LkOPfZFT2giSDUpe2PVDWNzu6IPxBt/TCju0mfBClSxVKpU9 lrvWq1TpTYXKtiC6
TVfmXNf4Qj4LlwiY9yPyTGVcPMSGPiU0Y3C0sQ3L4qZyOJ5lENxQwzx9jEwz /b6k/EYqsyhRZq95
gIjCNq+kKkSMoyM10JN/yUUG4bCDNMsZmJHIys1evVruv3qjp1Mn8yUHHhGy nRCdV3gOi7pLX7FN
FPEGtT9lya3FA4apz2QdTcKjeY4QbhF+H+bf7Oyy1WlhWt0HVJp0+e6yvqNF T2G3eU5mBpjBs0zE
ZnJzsViqlV07uTK9A5ajDMqliG+PR45H1W4Fkdtibv8A7UBuoBtot5UqD5XU fktVFj5rUKc3e6BN
bhcfU7ICBTqd5o9xQb6RwWXU9phzoP7T/lDsMbTD7fN1O46TtfX3fzKTq+NZ lq58hpA1Jy+Lwzoi
PRWH+UO/qV5aB/47/krYr5I0ty5cL3PtTM68hqprV6tW5cO0cXXOqjgH2966 KJvyRv713rprjYQo
DlmFroQdk2Qg7DViwckKOOb2L/6uyD6bxUbzaUd45L5wNcORRxOLdSomJDRd xRp4T+Bw3MeJyDny
93tOOqA/REn4rxbIYZ7v4fE6Gfteo950aJVfEm7PAzyCjRFRx80TwM3HVXhB 0XGy3QcNRF0wUcW5
1Jtuwq3Ybzpt7ll9I4N1NwbJqYcyD7j/AJTPk2LpPe/Slm7/AMPVIxOKBq/0 aXef/t71WzUcRSp0
2Z8z8suuBAE9U9no3CiXN7taqfCZ9mP+WWIpYjHvdSxDMj2NAAj9lyVvjwGy vfqjK/ZCRqrO2sr6
9Uxg3Iug1w0ThbyV9FI3RiLdUQXZisrveiMJiCGOtkdcJw+XVe/3nZbKDiaz h/ciajjUdsXFQf1W
nwRdmywpzSgeYTCyAQZBVOofpW9144vpsdlrYjuNUGeBXJXmFc25rX3qL+5R MealctF+gRTf3XiE
eS681LTlKaz5Z8oYAfpmhx+OqY2p6LfUqAAOf2sSefhUej8A9/8A6mJMfkP8 p/8AGmg19stEBseR
14fZlHmhfhY7oLkuijkp491NuQfJG8dFmGqMQfeodUhyBzbruuUvGqEuhysZ CuO6ngd5fRx1U5FC
iW81LbFGdl2r3fwz7VGpuIw1QVaTtxw+Ttf3MKzTqupToOlkLSvPdbxzK58N UV+/Dl5I853uv2U6
oXN0AVOwXh49Vy4SSUbwsp708AdF+61lZbH9kQNwhsVzPCXaytLLuhXiUEJd HRBsnMnNNvNdynVq
CNWsWY4bEOjbs1ADgdwRC8BE/mrsObZaQvBfyV7ITvwqj2apWIxdSAKbSbqr We6X1DnPvQtz4BDU
fsjz6cCCBC/wuajUckY1W87Qs0C91pHVa6r378HCRdfR/nwiF+y5rSei1vGi I2C1Wq9+i68wpPwX
7q15WqsNeSCgeHZfqsosm/hQ/NGDmzKGplXENNHDc+aZSpiGNEDh/E4cOfpn GqccJie1Z7FXVFta
nk5EoHlyWd3gO/JGPirpgTnRlD6hhYX0ax0OqHO/yWpNl/jhaL9EeqGZQdFB Tr7oL8kRsr3UxIhe
0nbK7r+S5ldOEDg7ZCFrddOashsrKLIEEEhWuBqtVz8uO4VOi0wXHVVMJXEZ fC/2gtUbqM19I1Ut
p9nT9p6FWv8AxVbromgd0DYLX1DTr0xUb1T34Ctb+lUTm4yg6keeyzfBbQm0 md5xsEKOKb2TqU5j
KxeKDu4HZKf9oUa+a81HTZC54X8+Bv8AkpJsoCI1E246eV1O6IPmhNvcv2ld ei/2QX5rW6AiSm2t
G6iVb813eHO6F+8pk8J4dd0N1hto6LPTb/EUbscP0XZspF1XSIQdi6goU+Q1 UUsO1zvacgNuHu9Y
osqtbVYdQ4I1ME75LU3b9lE1qBcwD6RlwqUGcvIJ9Np+fxJ7NqjXgO8UIgI9 F0RRAI4c1fgO7AWV
chwEbbrqpH6KNF9LwMobStLaSr8lG/Dqj+S8+H4UeH6qPyQ1jcKnOmylE06b WOOpA9Vx9Xxepe45
FfKKWHbTqndtl2DHfM4QZYn7SK0TYNlGaFqDCH6rqid/Jfuu8tYtosse9Wu3 Yyj06o2/NAxbchcx
twtw2RRM5QfzWqOiPwR+C5Ixde1w/ddELq23COS0TCNh69+f8rFYtxjI23mn 1XfSP7xUGUP3U6e5
EqeV0P0WqyryXkvFEq6HtFe7gCQjZX+Kbb3qM0xrK3R7081rG0I96fcjDvgg J1PAH9eGvDUeR4A7
dVNtCuahHVPdF49cfysN6MaSP+5UhEe5SeEDxQuRQ4X0RuAoX2YQIuPwryWs okiSgboTou7ZQufV
arXhExdc/ev8IXUqMysTKPxR+Kgn4rbKidQjuuSCaeqqjbL9QfVfZjG5lisW 505zDf7Vqufkr3PD
VazbVdEdo4CVl2G61sjdbcuAnZFHlx/34C496IX6qBwMXWlkNF7tVzQV0eMo Eqp/b649eOAwzTFX
EmI/Com3UL/Zawj+HotN9lcrquu6Mfov2RnhGijQCVqFzQG6jdb6LX4q5ko8 SjC5uQRlclH6IkBa
77rRcuGsLVawtNN1Uvoz+f0VQtvRw/cZyV0NldE8OXVXQ5nhZGSvPkvcgAYW s9UYXkt8p2K0sQuR
bZWWvD/l1rC1XK3AIBGeXJaK5XNHgN0VCLURzH8/EVx9IRkZ5rvRmMk9VG6v wBHdQKngRP5IeS3V
rk7LTMgJMcR8FdC902UbfD1P1nj7lGiuhutFqtY4Sp34wbhX5Kn5fz6OBa4F tHvOtuj3rzwClWMj
qgPyQ1WijjpKMCFquasPciduAi3G9lH58I2RmeN+BWq8igvFB8uGvD8IW6Cw /wDOqV3+Gm0uVfEu
zHtHmPJa+4ryWygle0UCT71fhqrn8k60DkgJQiysdVcAo2RIIVlG6trK/wAF Wjy4aL//xAArEAEA
AgICAgEDBAMBAQEBAAABABEhMUFRYXGBkaGxEEBQ0cHh8PEgMID/2gAIAQEA AT8h/wD5sx3zlZEG
AXaTCVZFi0aPg3feOYwWdp9QIREtc+uW7byxwPGoP1ZnZj9zxW8+5tJC4m6e zmjlzAeWRmjHbk32
12udQEVo2uyn6dfyFQOhuYMBeUJuHRv+8ueXqgK4DIMV1N90vyh1sruvMbLd RVhVBq5dk5C8oBbO
TT9Zfcyu36dQYVDwXbW2t3vGdzZ3GremA41/EmL0w/sLx8vYMXRNAonYpKyZ 1TWMDe9iNlYWWze7
WLCBVHWgJR0+JcgrghxgVSMbvMw2KAOOZV6tL7IpzEiNXKaGXlOzUyHxu4Fo Ib/NPB8fmJVbji3/
AMf5mFWJVZNZFuaDiknyfwyaqNOlsaa6PL4hiClZjwYMaAx1C/al3TKCxTbn 8Romz5HmAACpxUEK
GVGqjuJWBd5m2KIYJrh/Alsq6EqVTQtMvKPaUcWNajiLVcJhgGoVyekZ7Fr2 TVyHOJz/ANhG/wAv
2HmHXx6yG2+Btvzb4QToQU+kONP8Iby8AULvFiV6b3yWAcB1L3Rhy7/qbz31 ZOJYiHjxGTXm4YPQ
2NOaiujBRUwS7eWXAozpge+Bq+XcDDzt08xCVrWa1CzQ0xPklzZ9RgBg5CSl Ysg+9y2AnAwS01Xv
fzD6WKjMcRZZrXAd/wDjFm05LpFH7j/BhwAqYy15+D6QG1ZZu1B5GMwdpkNi AMmHkblOByDC/ow1
gzXdRTmq7n2ZaAbcolCLuoWCZDeNxTnAG5L1si7mJMenFe5km+r8MJXVxKj0 z4iBzQUZbxh8RNUW
W2eJYGg3bl4erSqjxBB8WgX4/L18x/4ByuUrrr+BNlbCc/8AAH+ogVEuhyTR DhqbzKqBhvJcK/Sc
lQoEaesy8rW0aIYALEyoqq0iZXvuMrhq5ekF31w/PfC/rLynBcoZQGMPMCxj tZS87Mt6lhplHVMC
furlkWuUmHx9FDgS31RJJatKOpkdsgo5rz+ZQlEmtHEYjFtt5F+/ttyAtK1o zqW7TLDCA53Rnysz
JpHiJVZZzMo6jDbJ4Y4vEQazFaiwms9PM+EiJSg0cH3lZAmU4JWhalm78y+I ytOB8Sx5fHMOFY5F
dTEFRaifWVFdFf8AZKk+ysto+qZeSdLiGIDVX4itZ/kiSa7HQSi5DFj/APZQ qOFsShTZVtUemB9P
aPdrdNbh35gZEP2B0n77HnpsWBvJB8LCim3prM5QjohSpKoOuGmPaYoV3OYo KvocxjsgyKYHDjOI
ZeChPHMZ2ilNTn9C3k6htJkqviNiRHrcpDRLZNzItLwifFhKJ5DB4ME+sKuJ XEtiyV5nWeyF1ZxA
14KW3H/fWHc+jfrJCtwUWg1CEkhyMSqoM/RLBNaTkcx6FxxOdPLv4xv99hlK xLYpus65qpsBFH/e
4YE2LL/5mSAGygnApVMnuNYDZKADAG9mKyYS3q5reTzMJvJnUz7ZQX9YdVlp HxCHprGJ0X4TOnKr
ubhUjbTxDJwNDmVoIJpPua35HphkCkduM6NctPcuQp3io+JcgxhayMtJxjL7 gykM0ZPmHoHGMH+4
M1Hj/MGRO9SVLQ6a2tAtPd/vUItQuj/KQhq6MGJZTOxjqWzy2MStzJlomCeB sbupvkgANzUtWvAn
Uvuw2GWSmpb6faYiu3Limuy0ZXLIzqXeWoXTV+YJlDUyp4GURQK/MQLFlv2l Rd9cTGpwYNRcpRHd
BaUPucxezvyEx0V2hEhKhpVTAG07fEq1s8azUVcOvhYYOevl9fvTKOHNbT4f wj0MmYvbneWzM2n7
UZhlqe7Mqa4qN4ErTictMamECho3NHNyckKkpxcKg6RI0QWPO4WdsTDDfcsV 7eiU5GIy2q7l2gga
sdR8TuPcHUB7qm7ai9HuWTdKOxKWa+Mv2luOcxWfJnEG4gGA3sY74uccBSuM /u7XwMp5e6Nv+5lz
n2irdzFw6uUjiW5NJdzpANCG066C7IoU/WUs1Lk5WMaijBAUzbQjvfoI+IDb VkQK0ubmHF+YRm2E
YPB5lXq0w+5mkxs9yrQJde2pWowGqYhqLeHmsNQyYV5B1DCF15ZxLDltNZ5e YqjWKSw9Z07bHjXw
/r93jLc6Uvhx8pi0bDVjxUwakCzONMywrjoebGOgBnczhSQWXCuWYDcBheSV lwnebRVyVO2WMOCB
Wg5JksXBGReMy8/p0AGZOxMF7HZC1Zx9JlRFH4lgjKRhZZ5VuU1so29I08uo JzLom+pcMhlgL8Ms
fLv92UEHVAc1LOBmyzoKJq3OhHsThSZQdYqPLp0SlJGiDIp5oJauQpqZId5n zu4LBeGE9NdzVn6e
b1KUuOp/ZJ8bYsZWMetu4Cjgo4lfZSimKmbJX/qLpPI4lMMzWwCNG24BHVCp 9jq+kFoVZC2MlyTa
AbalRbmivUxLv3a/3SQ9p5EP1mSxvLCZ00VGPbw+I6EusN6iiJAsfKutytbF YxMgaJTWc3rxDsoa
idICvEOquZN65nRqLBOQXMRbfCPJo6ZXpLAuQ1cyB0BwkciOy3MtWhnBCvMU HRWsPfQQiR21YPRN
OK8QVcQMbY7cV2eoae7lw176yq62D1mHMBWwJef3KpLrmgdqJkVAb1cUFDuc qBHT31MdE0bJiC+R
MsqxNBWeYNOHiYo0NLG7a8TJXkZS7NQ3/nDgsRuWcm2WcqmSZyxb3fc6Nkog t3jAxUFC6qBB8i0G
frDAQzOd/M2b33Ep8JjN9zAAdIGdjDK8yxyKZTqOSoL368TyY32/ufRpFLTN e4UII1Wcyi2U6hBw
CED6PHlmU4ZgkVR5iq7j8T5lnMN6GiGvOPflCmVfiZTp5g7oe46LuoNpQnPi V5XLa6O4lt7iCnLU
rg2/SJS6ZQAfaWRy1LrLGqiAxxzDLxUVZVM4FM+10skfY/cjW0jAUn0m9YnZ de4UbfvDa+eIDNjx
qG1FVkI1A4xD5MnxLmWY+zVKKrHf6OzqC0NyhVX6ixgz1zKusHdVCQPOu4+z iVPFTTymsSvMaQLC
9zFzdtMrtBAceZfXqsMe/m6lLg5mtwUnBR+61JYagwjhxgeKgitl6idADrEJ iKswzDqppTOlcuV4
M1MhpncopmpSkI8u5VtA5YhwMsutGo7waS1Xi5Ut6VEQHQZIJWBvucbD3Hny vibJdKIHF2zhI1uP
pUQrQTNuY1cW+UYtV25lDdfxKB7blYZhFA5l8Qm6BHKSeRr4/dWmUytQFEWZ KIbucVZFpvAuMfLQ
6iNRw2TKkAZ8S1V6jYCuM4spm4TPseZmsDCMroNI8kBvIamexW8TiC4CxBpy kBh2XxM1Bxhimwhe
pn6JRZZPsPoJTSu2MxC0qUrAD6HEDyxZCzUDga4iXA8AJcrS44Zm4YX5bD+P 3eqDfVRfBgr0daSL
fxKRZZyTFyhlY3RhwllQ2Q2F+TLMZxX1j1GWEi3FtpuPTPs+EL2u9iorLraU wVmiGBUr5e1TLsio
S61hgQFLy9yyrYUvmClKNDmOaSlYRmDym9qQ8vmYa6giuA5EQEXg8Srh+zKT 6DXaEZzOjIYbQ76Y
nBmWg1TxY/u87ovwLjIaUVM+BRKwxKNSy6pmK7sV9UOh7ruB3FOBKlY0uZx8 s+jC8oxDQEolitp9
EtYztlKRvcYAtajTnhOvKUqbOpxAuEbGnFVmegTZxRtT7jD6njyQo/4vJ43M 1az815l6yEzuLS/i
KHj56lKrd4iFvOa6ivtRjsmqR2uWzb/dtneGWNLF9drXkzcIWM+h8eJvkI5g 3xuFYELZGw6i1uGq
gHeY3PmXZI78L8RmvrbWk5Ljf38RTaw0OCPbFd3rrzCHEZKckKSq/MwiW8Mw b6WG9F7viMsc7tR9
yB0E21MMVzXmHSG8MTmF+TBKRbu4iKxNzB9QNr0YKXddRbNljKSawOPPvtMI +mNcfu7VgDGl6tmu
ENuUSgW4iLTxUE4Mr4fQgfZWBeCWXLnhKyeDkzBaUl7+ZUrjOIfEcmo1qKwr QJ5A+JXC+JgdLFcT
NmYR+Sshtaq+SVZ+VLcrWhufdxc0K/ZqIABXgltBk+snMKsrcuVhI3uUYpwv ufYwXPln6P8AL+6U
BAsXga7yyp4Myhm2LL7gW7NzNm41/wDELt5CXswqVe1YJUK3HaHwJV5cGNQR r4IeVuK5dD6yEb2E
dS3oXf6ZIk3twnLEofOqnF9pWj/EoVGLVdEqPUQKZmD0SovM+Eioyg4/dqwK tWHr/aKGAB3CaIkr
AzXTNAal7/mYL3KSW/1NRYvMuFCnHceofRB3+NxfbUao4YlENElw2vtLcVb0 xxp3FIdlSnQllu52
h4me+OJYYusx6Ll6NbgG9FrlmuKoIFsQ8Z/2fP7sviwlukr4/pEAgO+5uF9u JkGhqVBeftMZ3zEP
A6mc9QLGriBs91FzB6RvcXNwPKHKnG4GbDc8/Ly3HcGF3FCcZmMaUqodrRiA LPkzbOO6nSCx1u8T
X1L7uPUfg/lMRu2kjs+njuU6ZTkOWvO/3Y/w46BT9BlxYkT2nZ2Qb6GZVRF8 SlFRUWioWfncombs
i6YjZPvBLDiYmzGhe5YDneSXsIZIlfUG5+0cPMN0EYQt4UIyczCvyjA/zHR2 8yxW8uSArrxGUmFV
WoDjNP7P3hiUB8JTC+TpxC68wYDwsPNNVB4iHEOMRsyur+EI+riBHzFTRKiT 8G4paWVHoMLC1yPB
MduyVUw+I7WeCYXqNHy+EbmxLHz1ALDjUqOz1PjGJWmd4IbG6mNdiuoozgrR kPmr8fH7120jwxyj
nz8+5mYBziUyUSiqXuiYhMMLa1KLpcNnT3AHKrxHPzIgLJpUDRUEE+sWFoyL kgN2lmlQC5pFa5pM
Rbd8ygCqWtykViWc3CCkU4PUdqe/tGNV26iOA0JVs6Tua2GAHwfvWdEz6iPD T8Rb4AZHkWrOnpq6
uHQrl+cWMxG5qw2uJlhjl6mRgwAXh/QBrNUwEhkMTFN5e5S3IqL1plVcItvc XtgPMYHXi0Vuh2+J
S3q/00w4O7IuZxGN8xEznWpfDzEEUNgh+RAqA6P4Cl4O62Ramv8AIjnAhzq5 RUYOoeZDs0SuwnuZ
gXiXGEgFnTLcAV5iFD7iUfuDf06mMCeeYvdG1BNq9s5N9Eb5FPUB3LrFvMua dRbBmzVRYKWzEMhH
iC/AnynGf4FFtdMtgbfAgz95wkctQwwXaIjas1BN8cSqYwQ8niWjz3CWDvqb 0LPnEYgvlggVSNjF
arVipRRQmS9+ZRBovcNrXdsFzfOJd/MXlGuqiIPu1DQVyrgNVC1b7/l1/BWy b/gHK/hBcMiC1Fdx
MtX1MItPWsLAZuZWVdSqspNTLq93U7LLt8TubBEL7nSxILHFF0YDqK8ocFYJ d4Nj3LAVFxXEysxG
z5meDxMAUvliAfJElVmGtXnzXo27/gsXmELL2HqmyG/sicF9GDvFfptdU4Nr FoGELq5YGOXuUYfy
5gt+zBBw0R6BHVDM6Xt5lrRe2ZZoF8kN4kw1uJKAe0oKi3c/5lnKj83PU9so 0tQ1XjcxWPubFJdq
YD8n1fwTXw+AXA24LQPSzXTTVjYy8z4nDaWXY4shVQimuio5ngE01MP3Ac0u 6uE2ukMOYt3/ANUu
mHeIW9a0It0W6YmF4PAuXhu/RMQgXRAAbopFsQeTzGaY9xI6AG1XiHpRG7oF H8GcyK10KteSzPN+
wdKV6hl7xECzlxUY3OFnEYrHxMwB9lwwcFGYrySSxqJlgDHq/pjkcERNUzQT PcBA2N1ol6EqIJ6M
POYsTLd2Qq87+0LQ80RLPV6fwjbrIUKOn8npY0JXAKsyqtqxGomb5bhbou1J 8ULaVh5h2ckMqeFR
pZQYTMJUr4pTbDAy57DUW0PDKJcrhO1jdytnF6lkRlThb1MhYbJezhwRANU7 hZWj+3+FF09RTKrG
im98JUsxwaGkv2QM6DjMr3UN5mCiS97lDCyDZwiK1Cq3TJHi77jUXhdTBYuG mYiAeWeQIqVqUbCd
8xQjLOJu3HUVob4nbyqj9+P0j/CiJBgcmC7zSOCs7lnimisNXzuFLq23qGVY 5i7nXTQCXsqcSW1M
qKdyiWJrm5dTsCMwZG+rdTAro7i23fFwGSzuGa8imyM2JZHYxiZW2iK6FL5l AqbXcNd4aI46vd1c
CCpfYHnX8IJwFa/6dwDhaAhRdXoiCE9LzMfnSDwpwSxzsOJkQ+4IHbzMWKCg DEOcM+I3WrmlxEgv
8Q2dGLs6+Js4u5Vy8ypzXcqm81MThuBDWKtsnt/CGfOWwWG8MFfVcwStm2ou 44bxKZdqcSl2vP6C
1YZ0PMwHAXVwmxozuJYypMC0V7hJ4eYpjlUsqwyEvSgq1r/UyFtwDqWX5cSg uOBLKLjFopfEgAhO
OWEXtYV5CCc5OWnvWKsN/wAHcS7I9hLa17jjfiYDglV3Ka7lTghhBVXDB1Zh g+3I0hW8TcGvhIAJ
9Zenod1KnT/SKumCJMJWuAhekatNSnwo5TY8niM2PpmRhRKwVGKSB+eMi2cr lAlYnLVf4UIAy5v+
CclHhqvNutexqtQGK+JuyPuXEamcD5lCzdQ6GW2VbAgDc0qQCxYSR+gnJWwT MCzFkx8A3UPKxdwM
9XUMYi1WoLfacTjsJFIuXg+ZSkawTOUK+ZdFGlYTWOmcyu5dwEJsGAqW68ry yfdX4+T9+RV/LHi3
mMvmhqpVNpIAXrAHgmKfjSzzAVYU4HmFmU+SWgF0kb4hO4P9+lzBt/qi7ZcC jbS4I0Q15TpV8EE0
rOmPiB0Dd27gsA1vuXGyZ8fiVe2KfcckukTEBoGX+C4SlOPYuGxb1gfiAye9 RAIiFfgxVsQ2s17O
N4xXUdOiZjPSOT952Fc+633CS02BqRptN+MG3SFRLJzkyyujkCZtx0nHmVAr QMQd0r/ogQxh1lNY
HcHwpEkxV9RX2x5IhRbVQcb2zMRyENX+sMIQp1IBAUMATRgzDEq7mK7flyzB MTTm3mdI8hDorRvH
ELgqF1V5mHM+p4iO5FsXtKSmsfnRWo+a3MAp4btAM5gUoOWjSPJ+3WTas4Cz hw2hmUM7yO7FX5L1
BnnGDKU2MHsyxBoC24gt03WNxMQMUlVM9pVf2gK0ZjnMI6TmU1FJZKvWNiHy Bq8kvMZJXpCr0+pb
Az1FG20EE1H1HuAhX7QRyp0BY/oyhguYfVD8RQ3UJbRbhRziYZNZojDqZg04 cjzO3HjuMbKC8tob
RLXhTs5277lSteeBXYd4AnYxAiYyN9tXeHEGyzX7EiBXUH+/ErpSmewcCazh cfFAMVo8rU52A44h
EqoJeWpe0e1eZcdT1uUWjzQVF2WbfNS7YColzH2xKUuC71KekvQrAOoFi8ey JlvAtM4G5W52QKaJ
wxF9mXklSS31KmL6HMG+4RLK3jjncsiF/Ujx/uXIoVatSk/gp1MNVMnRGVBN ow9nImJpRyNFVcqU
ILXi5Y02hbfU0yzeCpyJisFcxfK6WKVsPETSvggWwLbxGKYEviYbiigMt4sB vkOWG6CojAY7M80w
/W+cGbRops42/wD017EXw7CmRdzDlSryvpnDzsblNs1C5aFktHgX22kdXlRW vPK7eZYML6icuba1
LQFs4yuMF5TMZ3r2zBKKY0mWxCfSF94pawRFTfmIyvnajBv0XjfUpobv5mAD HmPxFG8RQyiUvq4R
CW23SWhhqiEji9aKCZNxazlxbxC7nrFvcppGq0IZz0B1NynK9QMambA4SquV GVppiYshfjyyYK4n
O2AMthdynGl1veJrWL1Z3Ba7tLJadGMq6jBaM3KVmrrn4mTI0XtFpIN3dVzM AVzA5iWFAWeSFDe9
mpeq6xzI/wAlHLmD0EsAvBdjHl98PZhaAGLTnw//ACUPccl0h/gmKDoD5Ab4 cC8MpXW3N9zBdXi0
zlhIwuCiUwABR5qrLu4DS5G6jtRTgTm1ywaFtoucpylw9rlcqizQ1UtuKlLF 6DIpFUMeSJVMyqe4
ZFC75j3vWou/oeYwRt4qGeHAcpmkqu+PEzW0ZSyXYCg7Jw8KbPEztht1zFAv xYPiCnI4x6TI2zny
mbWp6lKeRnG8S3Ia0MObJpVJmN8BlvNnPz+vU2o0cstsBpVYMdLRn6ylgWVM eWxkzeY2ruX6Y7YQ
QGywZpUyqzXwhFRRHP2pruVQpVt1G3I2BmZUND4zcSDefhKSUPNHKdFtcNMP u76q461ypLeblkuy
3g4xHC1gRVmmlvEDboYCT52/omn60ru8BT3dxWKb9xSF+xnIsc9vMwLA8moC mRIOSvgMvyD6nQsb
buItNU08xUAvtqWMZ0zk1S8wt77lUB0GWWCodukZf9zzDjjC8+Juq9ukAbBa Gs1Aa1ML1ULrumq5
jLQc0e4QZItmeFwIhdfMOrt7WOo97NxY2nRaXtQNU+YmKtOSKALchvXUrbKb hmkFjzK1HDPv7msW
H4mMsdONrz3Do7LOYcksfDE2ogm/iKgadNKnk2ZJyL7VmXTAGMQFCmbTzFXF bkJZeArLSKPFhkcS
qbeV7RppVCWwio3sduJQqMObzM4gqqcxNhd4zxFZTYue5Y5wc3XvEtrj1MDb pLFA7Zlkpe5SswdS
xRqrU0VpQI7vzlnGLuB0h1AwogTcCU0lcMUMg0Vw+ZRy1LjZF4dGJesmYV5d RjNxqBk7xESWOtYI
NsWNZfpKDdVzUQKAISNs0VEY+nSU/PVpIXAG1Kpqq7tFa5mbYuBylk1aW7j2 hv5L4lWH58oqUsHL
3AbcczcaYFgXl8wDSqFRsA4cngmLiZWrSwjhS/vLbK5uNUNHKEDlVGQdQFFM 9NIIZ2cERr3hHaIW
EU0MMnNRDOqKG13PKwuxXw4TXIoZLL1orzADrZ1ucDaHK2ZqbzjPMvQEZQz4 hQpsw4eckEgDOc4m
Aou8UlN98rDUFVyCZeoVkQQDZwtEwC8M7iqPpNQTWQWGLmWl2IY1C2gixneM ImTsGNlVljKQR9CB
i6iasjAt32M/WZUU1VJdv4PxG+0KziIAPGHmKwOS/tCnzFUczAjjb/GCVKCU gi1bBo/JOMoQMPTF
ru+g+ot9HB0lptiq0xkpVcqPuLxMSYvd1gjHXELuWB0eddTI0N2En5P9pVtu vJMa0GKb94EClp4l
IsB1iCwCyR2tWaxMWWrAfiFiwlVuFc2U4TGK38w9CUvGep2s2XWYb9hvEx95 BkzUy7nCow3WtusM
op401PYmIiPFFyuzPqAC9MYlGptyPc4NMPrG73wsigpS65Lr/cVXt53LRsZq yIhTON4iXb2KEGqo
7G5lkUOYYWZ8RZla1io2Cz3ARFha8QW7y7CLgxlGyIFvEsABbS0FL02Yj4I+ OpwxYUqCxoId8or3
iI+Z4I3f8cIIfD/wZa2jgXh5gx2HKlI1SOGcQLnGXUMbyQK7jjzYyDwDq6bj TQAtceLyaQWiXepz
eXfZAoljJR4hSsR4hZSMq2+EGkkwMHMoj89ynmLKYzbZz3ErgMZz7hdBpvoh kqWNGYecLleYs6Gq
itKWHgJZDWfD9AFrY/MKferiFg6MDDkUtb1PQqho7gZLw6uGfY9rm7t+JkPz 6zNiX0VzClVyojha
q1Ls2tpUVYLxjqcvXMeJVjlMhFsVUABVlo75myPdVc+niUy7I6M6G9rh3Jmq 2Oiyg4J8HLD4imG0
VOwnFZ0MxjJ9JzbySLDY8jqYljtY9wMpK66IFMYdvO2BU8i78stl4bLcTlS6 L7xN0BBbMkcgw2TM
3loq6czRtw1mXb8hgNim74hGqcKWoXnSj7yiLRFfxMlpdTCqKDCZqMKWAOQ5 n3cfEudht4TyBm4Z
fF8IK2tGGeF9YYK4mdDfUQAfgMS8lNMEXt7PEzAMKCAVTKPINVKymXsal5K5 ZBmdbDGKlhC8sR8D
jx3NCkaCXSsl9uZUZW/ZHRHgO4QyFIVKaeN3GAxeUmeTAK+8JXjtmCahYSo2 ljFt4j5DTL6vmRru
CiFVLcJXSNk0aY7U++qg21KVGqvPiNsedWXMiLN2EUFWVhCDvUSlEtBWsFJQ d8lzCq3JY1L0GbKX
4CV95nPkCGrC+GrmBUsrkx3T2hdBXMGwOFnWeZgOeEVA2eNAzRUrkJ2krmKr Eiy39op6hOUtj4vg
hgGWOYBq3s1uOlca0uW46TCmjzVwjsXaalyXi3uUcXeNeZVLmmGVQTR7uW2f tRRCWWn3lWNbr1BK
GTZBun7QV6mszcDMbhVoyqP6IwHUsMFziIZ6ggYrwTJ8+fPCb+xROVuNKlUZ S0y9wqaYbvpM8hL8
soxFqwrxHQdOFxwuAZzCQObz9IZaURvicBR4TZwgFgvbw/aAVQzNy1matzuV su91WpZ9AXNR5dhc
WwxeHb2jkhsyjqaqwnwk+fyEKGQPCNFVt5HcoTTzAFJb42lqKkr6RcqdHOX4 hWAxxyjkGs6ouAwW
aslrU4OJThAQOVVV3/5EavREKqTxMRIZ35itcHYTMBTWpYypv8QWd1A+Z8UW De50p2Kbhl/R9Uof
E78ynz3GGfIZlLSzSuCWRHRajbMFN+eIE6HkUml3wYMxR/EfExcKKhv4Jjo5 YJsLWli1fVfBNrdh
uIJ9OeVzABb4DxM46Kzx/qUN06bliG0GZVgLQ2Jdy8cnJmGpV61CHLYKJvDR w44qaQKIUAozz+Zo
xfolkTARrSXYLkrUNhaLbfiBTu4L1gll6uuo9Hgfc4F9i6uUtaML+ptlZxtG +meNxqVdAQZMLqtE
zyrLVcTU10EPIhb5lFLDFu7iOTcqqnJHfuZGIeJr/Qr9A/QqcTJ1NxwR/LJP gmVM7G6DiOizW5iS
1p6QrTgUX6gBaU5+JdY26jMYdTEU3O1iwiG7jWZYPVwsp42EqbFfLcRHO+3q BJw4zmog4yPhMlX0
qICgp1Vy6vPzUAz6NWxNfQ4GpXIMxarVpiyhBC8/WYZ23iHKgU0XHZpW8Jaw o5VAaq3RpItTBbzE
UX2ohW2i2UAbcm8O3E4VDq9s0oBjFR2A3+ZZAWWc8zFLoZik9+oMEQMMptLW 1VSgYjGkzZmWIJz3
/wA7JvMa5dSl7haTb32xKxQaZaJQwY7jZB0rRcTPSeH5RwHCqdCCb0dy5pyK ng2HQcS1wdl7TNOL
1huAFinqNILVfMudFabZhs0AcQNJdGnUJRYRDXncXIcLYjONuYiMWoFBcNTf dLIbXW27/wAQUu5d
VuV6+kS0MIN7ngcwsUU+SNOgcG9TQMO5hx2uS9Sret3nnEx4Y5ITSWwGJwIy wPxDKYdY6iNKtMM2
Zvhb3EC2UcblVCi3jOJuBdDxLy2qm2dR3lLYW7JYeJY5aibFamlXiawUfX/w QuKgQKSrbmq9MsRR
1LbuYmHDiUeYYOJUAWgtlwHeI7YRvmUOC284u1hb7iTniw7i8tJzuKq7mc3U rOTt+ILTLoiJjYt5
9xKIC1uosivITDBAOWWHyvHMVYSUFMSLbkv0YHdG+/maNI0XP2mQYTh0QqlB vNMwt3C6uEiuDbM1
G9CMdhHq+IPsleoipJ5cuY59vGoWpZXjWI5WJbNfiYOz1GzWj/rljVbfkhBT FqTkT1WalwNXnJBo
tpTMSC44mIjpgrj3Bc0S5f6FA6lw/S4QnZgF1nMpuSnyY1ORwCEAZdFHWYLK TiN2F0NDLsRXBdsV
SzE2cXXJHnYY39EFwTh1mNhaBL+Yd0wKZgFVYfSUKgWUmuoJim7dVuUoYprK mJW2NUN613MW2wnE
wpoLWnE5EvIZv7xm02bIpqmNkburG1dkvl0FKuqKiDIKdRFRdtlTyb+6eoW2 moYGAfmUI+UISwXY
SgY7VAaqaTvvxG6QW6uDdQDDg84puNCebh34jMZeHbiZnyyiXyTHKc8sQwiE GPU2iamE2YlCYs0h
leIfEzMaczXONVGu/Uaa21x/UQGRqAGuArCGkdxzQG9GHMpGwpgeoUwUIag7 DibVGXNsCOyqivjJ
jt2s6OopGUeI4rCsi6gnKM5Mwv7cvUspfJe9yqxsF9f8zSjPuLB2GPEyNVxA BORwMXLF4Bo7gDFi
4Yvu1NKyeYAQN9QqNVXNS1Z7azK8t4ENQwSimWZqCiNh4qUp7GK4hBwHgqBZ 4M9MpTYTbzDarrF+
JyMbCALguOFkZLh+g6l7llmF2VCpeqjeN8iPiO6DC8cMwca26OpZsVhf3isw xaUOJdXI+FjrB5Z2
D6azFFqrsOiIiUCOcEFHT4lP5NiAY5ZkZnyMYZBw5CWb7K41FySXogRVc3Gv oI8moNmVpYPMo2Be
mpe+mA8eYBKpz2TIu8bOYnLHXmCUZT//2gAMAwEAAgADAAAAEPPPPPPPPPPP PPPPPPPPPPPPPPPP
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP PPPPPPPPPPPELvFO
tvPPPPPPPPPPPPPPPPPPPIgx2vBR2vEfPPPPPPPPPPPPPPPPOK957Q0gjuJQ MvPPPPPPPPPPPPPP
PL/9fjdtP83sr1OvPPPPPPPPPPPPPPOzh+feYcOQPCXLNvPPPPPPPPPPPPPA lamhvvQBS5mSrN/P
PPPPPPPPPPPOpRSDGv5IqzZgUuUfPPPPPPPPPPPPPHQloKQ+UsXOSSgr9PPP PPPPPPPPPGRRv5rs
F6Ew4tN0VHPPPPPPPPPPPPJ72JTaRFYHJKHGQXVvPPPPPPPPPPPOBZBIvntI HqkAoVoe/PPPPPPP
PPPPLIpY43T8VBC9qq0/tPPPPPPPPPPPPPEOOtky03eeG0Sl11fPPPPPPPPP PPPN0XRoDa5YTC6i
Q/2vPPPPPPPPPPPPJvohKIA0DNhaVKc3PPPPPPPPPPPPPNR9oCC4C9pcu0tT PPPPPPPPPPPPPPPG
cj5R45IWeFiwXPPPPPPPPPPPPPPPPK2FyCxG1JNXjfPPPPPPPPPPPPPPPPOO yz3Hq7XGpOvPPPPP
PPPPPPPPPPPLnoacZcGWOB4/PPPPPPPPPPPPPPPPPFkSAQQ3zXAUfPPPPPPP PPPPPPPPPPIIHddl
k6pMdBPPPPPPPPPPPPPPPPPtuzoHkWGE53PQLPPPPPPPPPPPPMf9Q34sI0BK QhkkHyb8vPPPPPPP
r3m/adfO0G8BuLwpWAAReOu/vEusqr7tOu4BBpTB4RXHVE/fb2ZU+875MvhX DbPYaamjBYwh6PNa
NA6ZHXfff0Ju9k0A3FGP8HRTV2WATBDIqXeDkQ/8K9BXrvw40bkBLXGJv7NT R2Jys6syPZGu9htO
0MjXeD8qUoGVrFw6CcmLCruz+MkSUNnvvKqtc5vUDN3b4xsQbSYNOB21JPEc fHpEoSvU0vHzl3VA
3/v4H34/PXXwYH/wAnQvPIInw3I3Af/EACIRAQEBAQEAAgMBAQADAAAAAAEA ESExEEEwUWFAoSBg
gf/aAAgBAwEBPxD/ANi+8gfWe7D0k/X+bQ593QZK9Xr2zXCOeQ+Pu5wyY5/j /T7m6scZdHbds82z
7XPq51sAdseMMf8AC+S5mTo1sOM8l8SuNtPu9cIfoundtPszjDH/AAnWTtmd jb34I7rsgl76S8k/
thywnfr/AAcMiIPhCDSXg2nWDmWPlrl/UnMtHkmeWb7dTfzAXt155MSYnY45 A+o5xkJ9jt+hF217
kz6kg5n5+uQO3MhFhmwMkHJYMi7bhb5nPLFhbz8/HY72YBvG2TJ3Zyw8hvY3 1iOkGaRzDCjLM/L3
eQZ2AzIyZ8MJZ+4M/rOSI+4Lyw8sdMQ/m3e/l3OwJy4LR0nbyBPJJTNryB5c 2rB3Z9CPDKMkVj+Y
ylmplu9gtM4B0P3GKGQcuXS6Zllj4nIHr/yIJobKogx/1P5h2QECASxvFnMP IBAOkLy6bZ7adyGk
HL6LO5P+v5mOWOMLDNtSUgBakH2Q43PVgduGZeeXEILf1l/MH7i4cmZMJCh6 +H1Lxjpy1QL6GyJa
zJX1+fNiwlrxLT4PIPdZAY5BhluGKA9Lsuhn0P8AgeDcOSjzkCRHkb8l4Yns G5Dl7wsF/iDFi3Pj
4eEIyP0S83J3mNI1v4sz/EDRCBl9bjM4Bs/fzbLSaMYvq1xnpLf8U5Zsfq1Q hViwjBO5s+4LwDkj
O3UG8sH/ABsC6dbD7H2GYaIbydZIy7DYI9/yFk2d5ImPxaMuXtiZ8EEfuk7M HP8AEkeQh+3QtF2G
zl+m3HfSBLvW7M1s/R+ZhGykZIhzpPjwsukHOSBs5LrOb8fZ6/hCvcsmMt7n 4nl4lcQDV7Of5EgT
k2gZAfAYeB6mu5H6IRxkwul5L+oHkEz+TidgebYFVnTyAdtP/DSy99u8sfu9 5eexRdB5YwvZ+2+Q
TK7O8YZ0aXicgZfZUzxg2zIH3cfuB0ewHiWHZ92HWHPgJkoMsMJ3bB+FzECO zf0b3PC0AhCmcuR3
IvPJYvaEwcSAO5bB5tp92ly/ZsPYA+7gaXv1eCOuEoHb+F6bCdbRtRkPWOBJ 6C6cleXtjlieyw7t
nOF5azArG0Jpdx6u4FhG9t+1uMGXhDrS3fZH0s2zdSQMgT3BYeR5Z4EOGkuY uXG+vh9i34PbTpsm
nLIP3DPuAdsS+if0nzk9baQPsc/+2eAkyRHFJHxHDLYY38W/UyWQXkxhhI3S /tnOy8yFwG3VsB5Y
7g+O7jZ/b60vHZgc5eGx5PPJ4mz1LLfhYObB+73ydY+m/aDGfcaJ2ZO5bhwg NX204sodJzOXjX7t
/kZnYE8njGdACEHQt07B4W/8tBPgP1fVq1h+CHUO5Y9Fu+2AYezpgz1lyI+/ UjdjvYLWP2tUhehP
CBl0SooQEQG58MmJbyHsGuNzDcdJ5smMYc265aiJIiN0rL//xAAlEQEBAQEB AAEFAQACAwEAAAAB
ABEhMUEQMEBRYXGBkWChsdH/2gAIAQIBAT8Q/wDIklvw5YnWHgJQMOkImn4u kBvSTHIC6h9n+yxq
SVJ7w/JC8ffw9Dr7GwZKYfM62TL1ZHzWYNwEpB0/s/C7dde/g5zZAwd65GLl oyHg2hglWrNOdsfx
nH8fQSNbXj7+BvgjR17GzrPonFkbcJAgB5cthHJmeEYdfoIdN+/x4yTrPAxe MQ2yuXoSDt+y8ZNg
s+3+LeOyDh5BrPv+mdGq8WSvmdmSRyTTS9sM0njWYy+YCjZ+pCb+vv8AgyZK 2Cztq6wiNu8uEqeW
D4h+CB2OQPTsF4/7ZtCDgfez5lfiwOXrbO2BZ2T6A/M7uwjwvSlxvkIbg+8N g+Y9CTSO7BZcY62c
LDy64uGy+G2xEH5T7931A5NGJm+He2J7aMZd+2g1v33dez5HJ9EE4wEAQfN7 37wovYeGXOrsbhbM
ohukzuPlpOwBg/Nxbrbk4fy6ZxhPGWFnsfq8PvIAjqlo4yzTyyATw7YYsZYQ yPMZd8bWROBbLeH3
vHLfqcJ5HkTEAMn3lv7vYU5D8Q3TyGg+wYZ95NBa6sWFkN5Ljy0QabbGE+LD g+m9+l+/vjGSIiKO
E6fRgdtvkIMhLt31LGT9Xq0OfgppGHZcMg7i7ahutvwi7LnkjCjdu/hDFuWy 8pfGAbbjZOrsgdni
M4sJlv8AC2NnhJFcG4IjHYUwmLZ25D1j5XBPwk3lv/l+i4TcNIB6XRvlp5CH TIwlofw3JLrYKb3R
2JZMhOx5DrYWCCPv4YuP2XgnwHLZyRgcgLlqyTdUTJ/wWznwT8EFYWBq9MJN y7nWPmjeUhzkPwf8
2CD/AD5/3E8b0nn3jvCV7IWyVPxb0G4g/wCYH0LH5m57fTKvG5ncpfP/AK2l 7Z8ZGRPUO/YBfJIQ
KxvZCCEdTnEex/pc+eNpAx/V2TD9EB8LM76Qy1yX7z1lHJby34INOyX4lHk+ gt+mObkbNkclGdsS
JROwfuRGQvhswDYYCm52wNJK9ZRyUcEx08hN8dTu38uDLMNJNnYO6Xsv6Wf1 AgvLEb+MPL9J9CVm
Sbfq9t52RzuBDY+N8sn/AKjv/wCSOr25nSOD5Yb39lpP3/5gzs4u3s4zq8hV l4zi297asZG9h2ec
g5pJCxy4hVFnh/t1tmUY4WnpG+Q3DMcn+/MZu07IdYX4IwlRC6ctxhZPXkbn 9u+ToJwuXBnjBhk9
MLHifoxmt/0UIwMcLN5OMkPYObkvgmNG5wtVZ3ZMY7H8hTctxsd9l3yFm/3a ZjPcjduvJ6FkVyeu
NoYs6OkFuT6W25foqc/dzPx7/sjrsidu+NziNexw2Bnzy4duvfoiuXzHOwvz eJccvHZfNu3/AJDh
36PktfpsL5h+M6laJvt5aRBj24csm4ckdsZf8Rjsh5ZZ87DvLWWI2HzIT/n0 djGDLOxcKJcvmGsr
sPz9N15AvbTxt52DJ75DobawNYR7d+yFyUOXvUnJeP5LpHG8/ShJ2Qk/JP8A wljIa+xHiTPWzZ/U
e5ell//EACsQAQEAAgICAQMEAwEBAAMAAAERACExQVFhcYGRobHB0fBAUOHx ECAwgP/aAAgBAQAB
PxD/APmwR4W3fYRRaHnK9/SoqkG6mHh1wYughALCT6XXtwXyEgdApSiqu3zk mNWuiKSPb98UaXiT
qeTfHwvOIHTRwDtQNXUwFXGU0PnHy0wxgOmGQvfOq8dhpJQsL/r0NDmMAHYD cD1dbwU5sm5VUNAW
DQABg34HiJPshrHWlIfGb+uaBJ2N2lcspa48HrECElpLP4yJp8Z8GM4zj4pv 0rDsID84MV4IZfyX
H2esM+JBSDFr0DqqORKkVOHApbSXkj/qVNY9WbnPolikIYjKhTH6cDHRlzP4 JgUg8PGPIqUe+QZp
cmzMcmkexBdpKXLyJI/9dtxjASADaTjXUp9GvzlmIobrd1m4tmvjWFqWyuM5 v5yqLZlIdhGYgqFq
C6bPthQeD3TKPIiX4XE0S4AR2UHCX7OJjHc5liOoi0dIh1hTE5dUEoAGtLRk psaTKCIoxEdifT/T
F/36KnXibI3gRYfo3QaOiBNQCBRVU5halSeE7zXShTE18H9se4YqA/SHjxfW bWdvk/bN5/FIXGuj
rGAgG4M8MVrrCjRp+MOS+hqU0dsIwnaxPuOO4lFXpwoYTNLuZUjhCA3q+cSi 7E4EYnCQ++BWEENO
3rjA3P1xCpzwh2eXKGaIEbD97wbMUVjandiRUY+94hoSVKhE7iAhBKYFqVYD KmzVQ8MUU3/pHapR
YlxUeVm59yNnnTxhaFwP3rfRFpGne/Rw5hag5C/GsQcOqJVs9O8ObdhgOyPv fGBHzBohpeXB4JAg
zno5xBKCOyXjTlJQmLxWuiOALKt2akcBn33lv7AGeqD424inGrgNbx3g0uPU DgloN36YkHF4YHuP
PH01hg8kKiho5tZ9MHsjko2wPUcaaS848kfGzKRVqRMZPq/ON5gHFU3rh0fG sV6KzogIyCgojEDc
cc1YIiXTk0HVIw4P9CoCrA7zXvxJGpBVIqgUSteIQRsf0uMKGnGwpPVx/o0h XvZtqZuUDliprzr8
4YWACEHYdmOhDQc9YiFbuHIldfzjhZcUho4CCccZsAcJb0+eb9sCHWAJonWu e/rlghaQ2dPU5+jl
5DiRxKo64/OUIBoHuSeZ1jWOjAMLY6aX85KjIXS2WiEpx04qI0CWlJDduAHj RQC1Ut1++Nq8htrf
4acVETWy4R895sEQxdoW97/OPLHEUbb8TZ8TvBwgUTGgkjt2lp3MBhQWptlK JGuw8iH+gPlNtLzn
VLxVVHbNocNKKQfHOdf+3k9vzlyjt7/jrHdUKgWmkwOnCWHanjDL0jeSyeDf 5yXuzxFy/bLS5S0x
qXtTXnnOeQAiQ5vJlcfdCx0b4DwYTUODCT41MIcdxS3pBxs++Aux3fCi+x+M MPbQu/6/OassbI8v
BpJ+ccM2tNZNnziIvOTI1nv5zho+d36YPIEAkhyvWG7YKg6dhz5w1It+bXn+ 6ydnliWaPHxxgRS7
Y6nyV4eGuc0UhVpKjW+ex43QQouipF6PCc7iiML/AJ54A9BmYVAsBXgFyDTG EGeUWayC0AQx9NNB
R+2h+2KE4hUC873vH2y1gQ3T5xM8r2HwecH1tAFQDnFDdQkic/pguJEHIPO+ usDIM1AF5XS65yMJ
cX8HvJChoKh2UNBT849AMDwSx49Y6daGKVvfxzlKxC5on0zndyPXvl3pcUb7 YdkpX8Lis1JOwYnP
T/7jKPkkhY7Hr04eIj61UN+cQCgbUGlI+zeJZkHMnQIzX5w8n6EYnEf6jgGE QqVNkvnDz/QaA3p+
33yF6ANXRyO3eFNZEjOlIRVKI6dLhqlCCqg5ERv+derqoW3B9s9VHeWjEuhv wd3NH+JqncTs/jFB
OGiI8sDU1nNhYxPNXJatKprZR9LxzcrIIQ1ALAXXeIWp9Aj+TeTNxcBw4CGC EEvD5nOXoRSVa6vj
GoC1xaNMKKskQm1T5yccREiQhggmmlAMV75wKqrmADIdaM31AQqPdOcmu5Vo JJ88/jOEnT3dBqWb
/BlhXi7e1a7v1MMDy3iRDcht8VxhlaX3mc804XX3MzSqmAQNiUI4CoQ0qHj5 wBWkzVO+Df5xuKPI
0vXrJWi1OTg3Kwtm25VNUgoVFP8AnELhbbFggdNZVFuCgB4rwde8ST6oAk5n PDDEBohDqM94JJHV
mq1+HVwyYuoW6A9YmECqg4bjaxW4i4X5/TFAgTonY9e8kCMB7Tw4KqyNNLGt 88ODAAGqJbo44wW2
KfdGz8Y7k6ochR+u8S7T5rSyeec3cI5twLTFrmqs7bIdR7whyQGTOB3owJKc Q2tE/nHg3VRPHOPN
UDoEg8bd94VKY8AS9g3z9MA7PCKo2f3jIwAm1Hh2+cLlzEUb1ODp8OFyU2Hc rHgfafGTR/adJ0Hs
fOHuPXctJ8H8maJC0xSkmoMhFTYC/wCZMwUpTdLVjohdpqyQgUqHuTnCG1sZ ROPvmmENQnex8n8Z
YoM3h3HqYhcNu5JlH64LYzDQ83w5d0Uf4jESrQoA/T9cVY0Khck9/wDMId8N Dz84SGfJ6d3xNZ18
1q8B+ePWXDDDS0fRnJclHcc4ho8ycGM3RoKEtfrrAn329l/bEDcrc/1c27mN mgf+YCaOqlHIfjH2
LRRaNTrjnWST2AQKoj+9Zeb4tFCicJrbm5Va+gB6aOc87kEW8PZ7xdHFWy9p wYjMKiaLV+vjBUlC
gsHCPqBjy/zHmqvYoc5TQe64MJa6KWAQ/OAF0Ykj2+MjSADUfHzhRFCcBj+m cgiTwa1+cFbxv5ef
pcdUlIKabGHjjDQBBJV5cv1p1iUphQEV4ezNg7duAysgiVS7cu6QR74NoUHf 4wqoEbrnKKOo6DCl
BDEMFmAadYikCOzDKapp3rIKcixMP4racHRHkR7N4Ex4jD0ODOvGFK1LRV58 J/5hX3DhHcBugYSA
i9nF4/NykIxCNJvH+XEhVBwmkcQF+DsT2CdeESiP+WtdKBgVxI0gjwUQngJU GcpWq/8AcTAKCnNr
63MqZ8TAKI3dN8YWit055ONuvxgLPrJI5aZwArRRC8ev+5SCRe7Zg4QxWrfO MhLac1MPUkoc+OcF
epgQzUDcvWOEaeDJhYUZrCjCC4R7xgKKkjk85trKaPOQdOtmTFIWhgTAOKQa TNHy6I/A1vDIRC3R
UvhwfXDsDGRoODKLWBxG2u+TX1ySQtTdZvx1gq1h4NqfpgM9/P6ZeYBKrvEI OsvT04A89CIlRsQG
xW7UI/ygBYXbEUVZ2SYaSlxByjgAiYHJxiQFVgAuy3HYq4HkwA2MeTgZGARy /XrN/lFYAB/OGRwj
h8Qkj48YY8ATBKJRaMxYVzWIbMmh84tNBX3i3px2X+uVN0g+z4/jI1AbHd+u WdkmvnEHgDumpnHW
ITaNMOgu4EHQa7Z88ZU9Cy9SHc+hxhXEAXn7Lz/OK9aiajT9xv1htiD0IoOr O/nCNYasEqYQKiLt
Efr9sgUb83GmTnZyXrAWi+EpwpoSt0B/lgl7UsQaQMg5AwsI7B1SJYfb64Ny tikPRxhMMsNHCRJv
qbCfGGkUF4b2E+DN23hsdnfximAaqnx8ZTx4NWYoAJC9OsCGFUc6v74gGaDt y4zQi+esIHS+s+5S
3ChEah24E1Y15af/ADKlBN+ejnjv74CHCwoG+P7zimJccvm+P4wQdVRWP/jj GsJaHRdGgE56+XJd
k7FNLqdbMrIKSKhpnLVPt7yoLT3mGeF54yshN4FX7HfZxjN8GgG3y8t3m6m5 7Xu95SKgeMv1WYFT
yxzDWgECKOnYf5SB9ogRnyAcgVzRrvt/fH7Rr7R2fGP8SXUQBCepiUjbQIrv 5zhSgFve/jN4Atce
d8OJnZ2A+DHs0RR4MFIVMRxiIo4jm+J08M0IIkDKKhKq6ymMIRrpmAAXZhVG Hh5xrSo2O8Z5Qwtr
TTU1ha6j2ecNtUJaHwd/8yosDtDT+f1wTWAO0JvYDf3MNPFIocx3N/blzhv0 VPB9AOjr5cWMkQti
zKESDT584y7KUBIVfblmuyJ2/wDMRytD0J+HON8p5F/X/mCtBsCYALuO/wDJ c+o/p258ZVwmQYqm
pMva7iQGtcSTzjfSlCkGjfPeGR23BVePgwAw4aIr49Y9bFUvA4wIDR2u8FVK jFzdoaPkxZAQQWvr
ihXE7pcqy0Kl1hBLzEHeF7BPOBSsiwK/3eRVeyn75QIAee5hjwDR03zgm27G mCQULPkCfB9sYcFg
RnF2uWkvF+Oxvsfpkwmkaz2ubV+rljG/k1j4sAII4D0mCAxHj42L2T+7xKtd AG1p74yAagtRRjpw
9BE3m3q4I1TK9ouXFYgpTjf+T9jrFN/wWHKC+nE/ilQ7g+sBe/iPO8SPOsw0 dvLzjJ0JTse31vCO
XS9Q6nrbg3IkYG+8KrTKjy3WPEgkATeBom26fWTNhvy4bSPlvJJAfLrAaC8M 3HBSUOprLPoqN5pV
t2nWXcYnmYxsAdGnOGVBxo715xgEHQHT65KdHLlreY9UzQHs62Ypa8jWG6lM dgIaCsUicYBHAhcI
qrOfxiFRo6TNrcCSvvIuh6gfrlvyDIUb14Evc3v/ACeVPhTF+lJ9c2DCkAJL AJ8IPkxhYI0jQ5xD
N+hZgbbDvbbn3j4DoJNDO/rhSmBw3eIq1MMCClwTgxBPbDYaw0A0EXEi7AwR V4DMTBtLiNUg5Vg9
kF4whgK9ZuoWOLUwEDzmgLHzcexCrJ4xEcrc7MG+AGrzgrBptcC2jzWn/mAQ mC6L6MY1INhL3lDa
OhFDHhoRXpHEIaTA5P7MmDlpKiX9c0GIh1j/AMyJEA26/wAndZcGoyQ2AIgB phqKmTUEuzri4yUG
ToXe55wWOPuG+fEn5w5WFaE9mFVUeiuUUUtOGuiUTxMQ0BB47xChv4mBIAzY yRVFmAbFSr3nr1y7
MRw0NpjbjJmEhEJMpLAFjlwtSVB27zZyK0BDN/UHXVxJ8ALsHWNYsPhk/wDT IkA4L8P1wYH2IMri
erk2lMYNaN/XBGqERn6M6tfC0C2/fBWh2HBX/mEPiihaDHz/ABjE0dbNKPGz HEaADgjlsNd68cH+
SrUEYcJd/DjsQoZsC3WCUZBAm/rnMMZBYd5VahI6TnBgpHYa1gLtCWQ84TBb hTJN/qYmgHyEv8Yc
JpKbvWFwFOFDWsaAHA901Nc4aOSKvJTK8+N8p4cfwDTr5P0x1NhW4iqHlPGI aiYAvWPV3RNwbf2x
5Uu0I84EBCZdrZ7xDZlIArtMUX6Ak4j5cEt0F2OGXQhCGILXVEh9OODqNKW6 wWiB20N9+cmNRPyL
tuG10NtA67yGA0gHNkQKR7Syc/5evJOJqAd6yuGxUcAGyqHm0NeMAJKEInx6 wReH2HBkIbUOxDzg
KqHIDJgrIqkAQ4mL5jocuHfvEopAOLzo++C2WjkvV+mboiIn4cPjkqIO6+eM vew7Ked5Ktih5POK
Ma12ucT3Ags/9y9jRRs1g0+wT1kAR0SDZzmmN0kU94glmKLl8jQJU12/OBib TWXjjHJQVvD4x0AF
aOphOLlDxcTCh+Q+/WI1QSe38awvEiu1ZefWExkJQA2eeN44OOhbgAJCINDN K3wgWkr0lbJd47/y
UFFBTZ6w7s6V94YkLi0cdtveUvwxUiDKAV9mA7rKuldYlchU6N/+YpGANC0/ 5kNLCjkmsEDRvaY+
GMCYOTgsBDifNMAvoXmB4b98AlVBulv8YNAgA4jx+mH04C+MdDjBXrNQjYu4 dGXLeIDvnFBvs1/X
BwElWWvBO81OAWVNU8M/LgeCbKRB6UAWUN0Xnroo9J8OeMN+1x0KOni4NOQL hnSed4jxmgHWuciV
sLtgInGB5pigGtOqDDKSVO1PjfBk0Dza8eftjSQJGf5bd0NNXoRIqDs3UVZt chS8u1yfGDYoFbOa
646yY9nLcPgHV1xgiMQNbzYG9LFeofOP5WMFWxenH6YvGpM2K9Ltvjm4h1bD wRwk0bVdAMD/ANAU
jgnd/OLjJxhwL5W4enGFLnVadT63N46AmiXNFUE5PGVCMJXeUqFCB8fjAPWa iafrk2zgQVynvETz
AhOg33r9MW7wsMjyHbx6zVexnIk453hddCsBLD6uLhWCahor+fxk1AIGz7/G c5q8lu/jKkihvx5w
nowEr6/OWLjSHK5FZHV8fOadCLvZncPR0Q3L/luDG+MxJo1yBK73nhwjGeep hnCsqcXffvIKUpUr
8Y1ATcB0O3NBBbS98TGFym3h6mNO9RsvGv7ziOAA1Pg08ayZOlCicQ988ecK jIxPUfRkIfNEc8R5
xuj5FFwyLvUCrxd/bEiAAToy7AFSv2wqA+AqExTwcRJG84faEBdp68d5GyLb yOPviUqg6DNLiPgS
a28piCiiTRWCw9AO94KI7lhzjoAbvvE8tu+s42ixpXzgr1u0nmOQ1a5WBM2a K6GvqtfJOUmv8sV4
GNgEXDg3xnGfNB9/tm6RRBIkd+MdgSnVvHORVgNWd4yIAvHh4cEWro89fpjA KsqZZsADSTdyOwgM
z7MDuai7n8ZMeqthPBlz1pwaZxAhHbBASdM43kCa9pvNgYRKXIe1hdTXrDhH ELrxcHh3dN8c4kWd
zwfbNSgULsZwuUeXGBJZOQYlqVpOrgCIkL5wbcVN93vEVZ1FneeTtI10ZGUQ Lbanc+mSBD/Lc7Rv
RKxP1YbYqCBR1+ct8CiecDTtAwaRPK+MWjZyrKuEV57xIJsNQcISw8tGaCgq OcfhA780ZU+woCmf
38ZDpCcgXF5B2TimjkPZiaLAe74wfId4BGz9Ti2InqmaWgccriIDv7xKKfCn ZiSIjd+csSI5HI94
wRPKLD1IB01jfGWvGjxglNBHOEj4BSP9MQoFXoR45xxlKG+KW7oa106r/ldH uBkQWU7qLSEqPPOO
6I5wBXAuZN+7gFw6KvGusBpRcPOIlAjn5wBFyJ0HhTbg2uzbKm8ZEZy4HjHh wboswSHFlXX0yCIA
KWTKwzgp73hUBEjDesQKmn3xCqedd4bIRbZPGPFAclZmqEFK6chlmgIVO8IM YAaMCmBsArzjHsRi
84wpi8rxihFUKLvvFvAlEOT1iFipRxakaO43zMeG6ENV+uUxzsABpcKq27Xb hx5/ypJAzZCrxN3x
c3SRJod3vBLCMVY8dSY6WggTTfrgrtQI3WTOU58GsQZ8SDhskEq4xW9BiGs2 QrkMUygrWcyfzlq4
G9LrN6IgvHGaoA7DN6A7UubZgFdjgrh4DKUqqjgqquj6HvpxOJAoW3Fgmu2z 4wPtYsrx+uQCEwDE
R3o0DzlZwPl3gqIJrwwQCjs2GW0YVeQ7wMSdaCO79zN4fEd08OP8t7YSsVwX rS5VQAqADcyCysvL
i+oiivHGj65fS0bNfhxXJvzTFpAQ3MOIY9PvANVTh4wKQ3QGOOrIW3DlIRh5 cYUGVeDeKhCc4abw
35LF4uUCPYpbjzQG3gcc2N+pYYJfaSaD/wCYv0pZ2X3c1jN6AfvhW91PpgFC f0Yg0gtc2ZeToU8J
hKtHXIdb/bGbKahZj9AOTf0xgHBQN4UOpwulfGD9tdEdEalB12Fr/MUJimyD 37bVQNJXS6CgOT8T
vIZTu3X5wwALCIfrgViBZLi2ToR0fOVhChe3ILC8HrIs2yppMYChdcFmsIC8 4u69mIPiqSr7fOKX
QAX3m2izajcLASmrhlXJqfS4POzrWuOzCab6PBfWIUQ33w+MnVNvrl+JT5v2 xaAhRTWKZGyU+Ocq
RoV9YwDQ2u8YkqSp1iIBpQ7ayYdYwC5mR2wpYB1lt27MVWABVX5f82M6kKFG ipiU2NmIv9XKLdFt
g5qGHIwswBBCURL0jkM1CRzSoch15M2DrkxNBtN8ecdr3O2n/mSIQVv0wKgC r6xH2sg2e8dMFAA2
Tkw40gxF1/zGBcBepjonHaY/YAbr3iVxEUhDN2cdJE+MdHhkjWDOvB5udWKT kzWgNJL5yVFw31Te
u8ESFW0J+P7xhzBWnLISMFXSAYubIqG9WecIMEIYgBoAIB/nuLB6+UyjRNba dF2WJjw0FbmUk9Kv
v+c2rKAhqPeKiQml27MBKAo7YlGtAJgGDZIvGEVe1Odf9wTNQcinGVxvuApr 9DPCneU6Z9cLG8ap
cKd2IydvtneQR4XT9GYcW3v9DBoh00OsM4iSOskRkLCbyxAhy2Y6IASa6zUt Okb3kyQGk1mlqRXj
rDSXfgABVAqnOsOP9Aky0BJoACNqEtTnFsKE0fGJoy3TWzNtx1BZkRrhvWTE BoPljR66TDGm294T
KCtC6zm5pFu+ctERBUH7zTgUET6P48YTmzDLDmfSYItVDd2a1gkVkLaOn3xm mlrYPfvA9PTY+2UU
WoB0ZutGlt7xxT0p1lFYZImmbyzMV3vL1MIwE5mhcjN8wPODxIs01vmncYe5 x/otdC4KAoAXwOJg
lIKBwpvBoUdjv74LpabENucghY89Y+V3GrcG2mZfDjBF6N8SmaPBRGhOZ7yR QZQl1zXh5ygVtXar
tU+mCzJ3Ip6wun5N0PzvKFxpiDT72ZaHgbIup5/5g9EaBJ5O8MGyA9m34zvd QIoxbtD05wJvgdY0
CxX31P3zTSsS5xrBvaD65or6wW0jSSNdIdn+h3M3RthWeKbSXQKEq98rrHcy 3CVGY/rVB3xN4mjU
XT3PP95xkut3SfOK0K0j6nrFdMdHbj9Mj4QkF2wZZVHUdfz/AMx5BF7KJX1k 6QOjQVXrLtFTpFd5
o43RpUO/WHp0h5H85WhdPN/Gby1ih/GLgWPCmAgLRrRH9/ONE7m5s4xn5e43 U1+TGGoK0Q295ccg
TamzX6OSqnSeNoThQF17v+iYWhXkcBFizsHIE3DohBzE0/JrJt3lHrJgS7CF S4VhoRYfXBeCTjje
HeiZ125+M29pWyb7PE1nludhDvjUkwoASoij186x6ICSUV6X4zTmSIJPtl2K 0qcZIZBVKE5ftjys
AvscHxzjDiAlCeL3U/GTXsHpx4c5c2hvnt484r9ZYMV8e9GHcKEd8TGBUZur cuIZY8JziT+D4IA8
1DFduOkEFdug/wBGKBpyhY/PwwBN4B2oten1wpp4/o4cJv06PGFGgkBD1lAH 0hmMlfwFYPPVnKLx
Tjb9sHlb001xeJkbPAVR6h8YTjEGATnWEE8dhGWOamZOQ1ZvxrLa5UhPJmyC xar0PvLSUFvCZOFk
ctHf8ZecLQyd46ptMecnQpCdNY59SqaXow3EqjGv/L/SFueJ0xHnShpQCWhA UGImi7CiljxgAC7R
13zhGkNodDMKdI0rRjuwRLSNa/GTCAsbHdwHpFRxMZ2wG8G8eMIOmRdumYFT EqKzzzitVpyYJ7+M
nALjg/szVtppaJ25BFKKbWYBTAl9jADnhPGbqblPzlO7Enzo954KqnZ4xvU9 G7khLa9qeHH+kAGQ
BSLkEtIrzwMKG29UIijEKKa04ApJActE547++RpRVGveAXPjgrJIFRPPOGmt rPrjEPIXFSpRAjhK
TWVdsyaYtR1rj6ZOxqHQT8/zlaAS9ni5NqIaTjCoSfjFCHxtDsvnjF8qC6Ud n6YnAj4TBFkbg9vG
WzLxV4L/ADhfkD3QJ9Y/TDr/AEhD1YJiATrSxsETEU0KvFSaaWF8GFigYij7 ZwbYKrjBLYqkkeca
UONX3g8UBY841aGNbG/plwlSnycZROQpTovxlMBibF2Y4huqkG+8G1Qbgs2J UOL6y+hZGqvDmgIQ
M4C4MIxW6fOcPWyNSe8QQIWeZ6+mNIHEx4e8HaQHig6cd0sY8yTD6WvX+k2i jgaEZAIePic4mJfs
jk+uT3s5edbwE5goPBvxfvhMZARQ339cHOGWp4wC4IDRuJR2+feHMvBBcQGI 1qTNH6l8TNdFMAc4
syKb3zlXFPZjWHLOWjbkK+nVWitaUdnjLPLAdhKxMU8Y3eAwesY3yKbx6k7K +PLhVAFFkLKc3K7c
2VfJ7X5/0hmyvGloKOhuksQD2vr4q9fGEWgsK59YKlBAieU/GVuvCoicXm3K AoRQ2TzkeI2r8H9M
k5wS4XH4aK2usqyAMwJUABe3f6YyQBqW4amjUNLfHvBdW0Nw4r5xxLhNHOz8 vpjJLWDpzPeXJEaK
vnj+84IVOi0l6n3MY7jvyGJSaGsPJA95FShjo5c4Bfy0bT6uGDi6wVZgpyFv pw/0SF0fApM2h1q2
9gYjpKkb+3xlT27DVecbAliidF1rEhQ1dhXDGNWorbvKvoCLfFnnJPcQPMzf bIC895Heai7POBoE
VwCyfnNTQpELU4/Gcyg1oB/3KgBxFBdh9MbXIF0db+eeMKUc2G18TrCKYmH7 cJdXOwvR4/W4d8yQ
TCVneMnFXhcAvTUWFXfwZpv/AMXXe+DjiGBEHdiqCCMFGJVT/RPewM7mG8iI GAAAArhQ5DTz84QV
7AHeYSDMd7u8fpjnQmqBygBMAF4/R++XS0IOEeL/AHnDAFNBMABwo6WXBU0k D6dYoaAP1sHUkA8j
lJ47X1njehHKO/d/bAcDDQRzjG+ocPH5yoDxJ0E3+cKLocwTw7d7xkMEHA6M nV3594aqFAHXO8Xx
bowAIreV8Zcl4sMQP77xJVcf7SeEw6tTl1FjtABAikv/AND/ADRCxiQBwkZ7 NBNWNwjRUKhAzwAB
oDOno8us1J0L3Xg9Jinl9+qaB1O8UYSD0N43lD6pyBO81E/Yk25+dZHLzVXT X5yK4UMbJeOJD74Y
EIeg3v1P3wJYCunbcxqhuxtJOMCQZKaNMTjQ7ICzP3w6BR2eWPfL9PoeXnIh DD1xu/Bej1y7yzTx
hA645DOZiok/Vv6ePOAp2JFAGv5uBIasNFCvPOIgPE5SWO/OPcRPsN84RbID uc2cxDoKAUB2CcBy
AJwxDSPCP+YwKhZMQwSoa0bVAXGeECvoQNDGwALC0tuzmdt8/wA5HDAHILO9 3PEckZjiuy7HOclY
KouOqI7E+K5T+M33qQo3zvnvFaUgDvq5uiaI4UgCt3314wSVhDX7+mMSgBJA P0wP2SJN3j4/7hWp
QobDGoGkIpzX6cY8nIRPJrt4+2FDFAgGSgnqecpUmcodbw0tLN/pgbC2bWQR 2oTet7vGR+SEkkSu
+27Z0QxRVdnBO+Z3gC8MNPsxo5CIqHb44/OchdJZo2v64uRfToaOURiSGmG0 RW5ogQdgp9WgoPTG
lBE0giJpH/HWRsqmuHLTdAqYYwOggOmmYyw03hA45AvOycTlPnJChoAdqh4d v3wAZYJItm9fTHCY
TIbWa5usKscsjbyfQ5UB4UGBP5y+r1QTQ4fhzxm+Y4WAzejznZVHRfD5ONes KanW3ZyHE1lk5HPv
AuH3POJTIQqecMWp4cmJ58vsfeB3ALwLqsYDjUn7Vy9W6rnPGJBx2I3Bs85U XE4f1xGRoC7EzE+0
Kgg0DWiGJ06ADTkfkwVoWclfPxvFskO/0LlAuzfIH7GG9l9d+FxRp9ZKlOPE yaKpGNQJ0NBXLzgo
eAgACb1NgqiQIloOqMHY1WDtmhcAkFFE7/wVGLPg8b5XAKrAFcWKm/UgMAGh tF24BMtvoijZoqRE
RRMWBd2kK7b5U2lDc6AB03yeXFIkd+S4sypGzieC3EWDg73omOVirAli/bK+ oER7U/Jji9UQtOo4
E85agfPy/wBcNsaIRPfR/PrE20EHl3rhxwg32PJikrIjRMJHYHX8Lj/a1xX4 jm7pAEpevnLgOeG2
sPGGxLKjRtF1uczaZqGFM94rhAXXfpiRsum0ELOAhiqqohQbvm45ZLunSd+5 c5+sdmYsTz1hRTps
ynJENP1y37ebhs0mweFicTWcQ1jS5Z4DGB7QAo492fjEnOi90Sc4kplIXHPU 64zRJ44cM6yICUXb
ak34n75vqtiDBl560YlpwARYIcdbwE6eAVDaOuDFTs9aIMkVgezbT7WuAMCt 72K
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #511330 is a reply to message #511289] Mon, 01 February 2010 10:07 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33216
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------070107050704000609090602
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hasan,

This posting only has your CV, but I found it in one of your other cross
posts.

I think that the extremely well hidden generator wizard addresses many
of these concerns though there's certainly room for improvements:

http://thegordian.blogspot.com/2009/08/emf-tips-1-how-hell-d o-i-generate-my-28.html

An issue I see with defining a builder is that it involves defining a
project nature which is something we've avoided in the core so far.
Automatically performing actions that can be fairly expensive, such as
validating all the Ecore models in the workspace, or generating all the
GenModels in the workspace, is also something I'd be reluctant about.
I suppose if it's done in the background, it's not such a concern. I
wonder how much of the benefit could achieved by enhancing the
GenerateHandler, e.g., to make it launch a job instead of blocking the IDE?


Hasan Ceylan wrote:
> The PDF has been attached...
>
>
>> Hello,
>>
>> Attached is the PDF version of the forementioned EMF Build Manager Project
>> Proposal.
>>
>> I kindly ask EMF community members and EMF (and subprojects) committers to
>> review the document and forward their thoughts.
>>
>> I am also looking for mentors for the proposal.
>>
>> Below is the extraction of "Background" of the project. Please remember to
>> review the attached PDF for full proposal draft.
>>
>> I apoligize for crossposting...
>>
>> ============================================================ =
>> BACKGROUND
>>
>> EMF has been around for a long time. But the fact is that it lacked the
>> necessary IDE Build Manager integration ever since.
>> We think, the current code generation and validation toolset is below
>> eclipse UI quality standards and fell behind similar facility provisions
>> from the other projects.
>>
>> For instance, given the current infrastructure, if a developer is working
>> with two ecore models that are dependent each other along with their
>> respective genmodel, when developer makes a change in the base model that
>> requires a change in the dependent ecore model, will need quite a lot of
>> clicks and at least 4 editor switches, 2 actions executions along with
>> several clicks to locate the action and run them.
>>
>> Also during the generation process, the UI is blocked and having finished
>> the change on the base ecore, the developer cannot continue working on the
>> second ecore before the base model generation finishes. Further more there
>> is also need to switch to genmodels twice and initiate generation
>> delibarately.
>>
>> In addition to this, if developer would like to validate the model in
>> between the unit of the works, that will require clicks to locate the
>> validation action, click to run the action and click to dismiss the
>> feedback.
>>
>> It is also in our experience that the genmodel editors are kept open just
>> for triggering code genration. Furthermore, this not only clutters the
>> editor folder with unneeded editors, but also breaks the 'editor'
>> description for genmodel, as usualy once genmodels are set up, they very
>> seldom change, but needed to be open for code generation.
>> When used on large workspaces with more than a few model, problem becomes
>> a real burden.
>>
>> This is where EBM steps in and delegates much of the work to background
>> build manager and prevents user distrubition with using the instruments
>> like
>> auto build on resource save, Marker and Problem View instrumentation to
>> provide feedback.
>> ============================================================ =
>>
>> Regards,
>>
>>
>
>

--------------070107050704000609090602
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Hasan,<br>
<br>
This posting only has your CV, but I found it in one of your other
cross posts.<br>
<br>
I think that the extremely well hidden generator wizard addresses many
of these concerns though there's certainly room for improvements:<br>
<blockquote><a
href=" http://thegordian.blogspot.com/2009/08/emf-tips-1-how-hell-d o-i-generate-my-28.html"> http://thegordian.blogspot.com/2009/08/emf-tips-1-how-hell-d o-i-generate-my-28.html</a><br>
</blockquote>
An issue I see with defining a builder is that it involves defining a
project nature which is something we've avoided in the core so far.&nbsp;
Automatically performing actions that can be fairly expensive, such as
validating all the Ecore models in the workspace, or generating all the
GenModels in the workspace, is also something I'd be reluctant about.&nbsp;&nbsp;
I suppose if it's done in the background, it's not such a concern.&nbsp; I
wonder how much of the benefit could achieved by enhancing the
GenerateHandler, e.g., to make it launch a job instead of blocking the
IDE?<br>
<br>
<br>
Hasan Ceylan wrote:
<blockquote cite="mid:hk5qjg$41g$1@build.eclipse.org" type="cite">
<pre wrap="">The PDF has been attached...

</pre>
<blockquote type="cite">
<pre wrap="">Hello,

Attached is the PDF version of the forementioned EMF Build Manager Project
Proposal.

I kindly ask EMF community members and EMF (and subprojects) committers to
review the document and forward their thoughts.

I am also looking for mentors for the proposal.

Below is the extraction of "Background" of the project. Please remember to
review the attached PDF for full proposal draft.

I apoligize for crossposting...

============================================================ =
BACKGROUND

EMF has been around for a long time. But the fact is that it lacked the
necessary IDE Build Manager integration ever since.
We think, the current code generation and validation toolset is below
eclipse UI quality standards and fell behind similar facility provisions
from the other projects.

For instance, given the current infrastructure, if a developer is working
with two ecore models that are dependent each other along with their
respective genmodel, when developer makes a change in the base model that
requires a change in the dependent ecore model, will need quite a lot of
clicks and at least 4 editor switches, 2 actions executions along with
several clicks to locate the action and run them.

Also during the generation process, the UI is blocked and having finished
the change on the base ecore, the developer cannot continue working on the
second ecore before the base model generation finishes. Further more there
is also need to switch to genmodels twice and initiate generation
delibarately.

In addition to this, if developer would like to validate the model in
between the unit of the works, that will require clicks to locate the
validation action, click to run the action and click to dismiss the
feedback.

It is also in our experience that the genmodel editors are kept open just
for triggering code genration. Furthermore, this not only clutters the
editor folder with unneeded editors, but also breaks the 'editor'
description for genmodel, as usualy once genmodels are set up, they very
seldom change, but needed to be open for code generation.
When used on large workspaces with more than a few model, problem becomes
a real burden.

This is where EBM steps in and delegates much of the work to background
build manager and prevents user distrubition with using the instruments
like
auto build on resource save, Marker and Problem View instrumentation to
provide feedback.
============================================================ =

Regards,

</pre>
</blockquote>
<pre wrap=""><!---->
</pre>
</blockquote>
</body>
</html>

--------------070107050704000609090602--


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #511399 is a reply to message #511330] Mon, 01 February 2010 14:10 Go to previous messageGo to next message
Hasan Ceylan is currently offline Hasan CeylanFriend
Messages: 198
Registered: July 2009
Senior Member
Hello Ed,

Thanks for sharing you comments. I will surely take a look at referenced
wizard / builder.

I think the project will handle situations like this well enough since:
1) It has built-in support for dependency chain, meaning only the affected
models in the change chain is marked for validation & generation
2) It is not a must, to have the nature to have an EMF project, since you
can add / remove the nature by project->right click
3) Builder triggers on save rather then "working-copy".
4) This can further be improved by adding a grace-period and / or max-depth
configuration. Meaning, consecutive changes to models within a time window
will gather changes and start the *real* build only after the grace period
expires. Reaching of *Max-depth* can place a mark on the status bar as well
as putting validation markers on the affected-but-yet-processed resources.
Clicking on the status bar notification or quick fix on the markers, can
trigger partition or deal with the rest of the process.
5) An unavoidable requirement of working with (even for XX number of
projects in a single workspace)is, whatever the chosen way of dealing with
EMF validation and build, eventually you have to generate. When this happens
EBM's promise is to relieve the workspace to the extent possible, with smart
dependency tracking and putting resource-locks on only the provisional
extension of the build process of the dirty models. This means, putting lock
only on the list of models in the dirty models and java package namespace of
the gemodels.
6) One of the nice features of the workspace resource locks is, say you are
working on a chanin of models. After some editing, you save your work, which
is where the builder kicks in. It certainly works in the background and as
long as you do not save an editor in the affected resources (chain of
dependency and genmodel java artifacts), further save blocks the UI if the
build is still going on. Here the user has option which includes
i) revertion the save request, which will go back to the editing domain
ii) Can halt the builder and postpone the build process altogether to a
futher time
7) Since the validation and generation do not modify the model resources
this has minimal impact on post-build dirt-editor merge.


One of the interesting outcome of my test with a sample workspace with 5
interdependent ecore + genmodel is while normally it takes about few
secconds to generate a genmodel, the whole process takes 2 times of that
time. I guess, this is due to, CPU caching and less processing and stack
operation due to less resortion to UI both in terms of painting and going
all the way down to OS UI bindings.

I am well aware of the cost of nature/builder integration for a relatively
large EMF workspace. But this is / can become a -no-longer-a-thread by
i) Smart handling of the models (Hey after all we arfe dealing with the
models right, which is exactly for this very reason)
2) Computers and processors evolved drastically since the introduction of
EMF. (that is about 8-10x) [1] [2]

Regards,
Hasan

[1] http://www.cpubenchmark.net/high_end_cpus.html
[2] http://www.cpubenchmark.net/low_end_cpus.html


Ed Merks wrote:

> Hasan,
>
> This posting only has your CV, but I found it in one of your other cross
> posts.
>
> I think that the extremely well hidden generator wizard addresses many
> of these concerns though there's certainly room for improvements:
>
> http://thegordian.blogspot.com/2009/08/emf-tips-1-how-hell-d o-i-
generate-my-28.html
>
> An issue I see with defining a builder is that it involves defining a
> project nature which is something we've avoided in the core so far.
> Automatically performing actions that can be fairly expensive, such as
> validating all the Ecore models in the workspace, or generating all the
> GenModels in the workspace, is also something I'd be reluctant about.
> I suppose if it's done in the background, it's not such a concern. I
> wonder how much of the benefit could achieved by enhancing the
> GenerateHandler, e.g., to make it launch a job instead of blocking the
> IDE?
>
>
> Hasan Ceylan wrote:
>> The PDF has been attached...
>>
>>
>>> Hello,
>>>
>>> Attached is the PDF version of the forementioned EMF Build Manager
>>> Project Proposal.
>>>
>>> I kindly ask EMF community members and EMF (and subprojects) committers
>>> to review the document and forward their thoughts.
>>>
>>> I am also looking for mentors for the proposal.
>>>
>>> Below is the extraction of "Background" of the project. Please remember
>>> to review the attached PDF for full proposal draft.
>>>
>>> I apoligize for crossposting...
>>>
>>> ============================================================ =
>>> BACKGROUND
>>>
>>> EMF has been around for a long time. But the fact is that it lacked the
>>> necessary IDE Build Manager integration ever since.
>>> We think, the current code generation and validation toolset is below
>>> eclipse UI quality standards and fell behind similar facility provisions
>>> from the other projects.
>>>
>>> For instance, given the current infrastructure, if a developer is
>>> working with two ecore models that are dependent each other along with
>>> their respective genmodel, when developer makes a change in the base
>>> model that requires a change in the dependent ecore model, will need
>>> quite a lot of clicks and at least 4 editor switches, 2 actions
>>> executions along with several clicks to locate the action and run them.
>>>
>>> Also during the generation process, the UI is blocked and having
>>> finished the change on the base ecore, the developer cannot continue
>>> working on the second ecore before the base model generation finishes.
>>> Further more there is also need to switch to genmodels twice and
>>> initiate generation delibarately.
>>>
>>> In addition to this, if developer would like to validate the model in
>>> between the unit of the works, that will require clicks to locate the
>>> validation action, click to run the action and click to dismiss the
>>> feedback.
>>>
>>> It is also in our experience that the genmodel editors are kept open
>>> just for triggering code genration. Furthermore, this not only clutters
>>> the editor folder with unneeded editors, but also breaks the 'editor'
>>> description for genmodel, as usualy once genmodels are set up, they very
>>> seldom change, but needed to be open for code generation.
>>> When used on large workspaces with more than a few model, problem
>>> becomes a real burden.
>>>
>>> This is where EBM steps in and delegates much of the work to background
>>> build manager and prevents user distrubition with using the instruments
>>> like
>>> auto build on resource save, Marker and Problem View instrumentation to
>>> provide feedback.
>>> ============================================================ =
>>>
>>> Regards,
>>>
>>>
>>
>>
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #512210 is a reply to message #511399] Thu, 04 February 2010 12:20 Go to previous messageGo to next message
Sven Efftinge is currently offline Sven EfftingeFriend
Messages: 1823
Registered: July 2009
Senior Member
Hi Hasan,

how is this idea related to Xtext's builder infrastructure and EMF
index? It seems to be a perfect match for what you want to achieve.

Cheers,
Sven

Hasan Ceylan schrieb:
> Hello Ed,
>
> Thanks for sharing you comments. I will surely take a look at referenced
> wizard / builder.
>
> I think the project will handle situations like this well enough since:
> 1) It has built-in support for dependency chain, meaning only the affected
> models in the change chain is marked for validation & generation
> 2) It is not a must, to have the nature to have an EMF project, since you
> can add / remove the nature by project->right click
> 3) Builder triggers on save rather then "working-copy".
> 4) This can further be improved by adding a grace-period and / or max-depth
> configuration. Meaning, consecutive changes to models within a time window
> will gather changes and start the *real* build only after the grace period
> expires. Reaching of *Max-depth* can place a mark on the status bar as well
> as putting validation markers on the affected-but-yet-processed resources.
> Clicking on the status bar notification or quick fix on the markers, can
> trigger partition or deal with the rest of the process.
> 5) An unavoidable requirement of working with (even for XX number of
> projects in a single workspace)is, whatever the chosen way of dealing with
> EMF validation and build, eventually you have to generate. When this happens
> EBM's promise is to relieve the workspace to the extent possible, with smart
> dependency tracking and putting resource-locks on only the provisional
> extension of the build process of the dirty models. This means, putting lock
> only on the list of models in the dirty models and java package namespace of
> the gemodels.
> 6) One of the nice features of the workspace resource locks is, say you are
> working on a chanin of models. After some editing, you save your work, which
> is where the builder kicks in. It certainly works in the background and as
> long as you do not save an editor in the affected resources (chain of
> dependency and genmodel java artifacts), further save blocks the UI if the
> build is still going on. Here the user has option which includes
> i) revertion the save request, which will go back to the editing domain
> ii) Can halt the builder and postpone the build process altogether to a
> futher time
> 7) Since the validation and generation do not modify the model resources
> this has minimal impact on post-build dirt-editor merge.
>
>
> One of the interesting outcome of my test with a sample workspace with 5
> interdependent ecore + genmodel is while normally it takes about few
> secconds to generate a genmodel, the whole process takes 2 times of that
> time. I guess, this is due to, CPU caching and less processing and stack
> operation due to less resortion to UI both in terms of painting and going
> all the way down to OS UI bindings.
>
> I am well aware of the cost of nature/builder integration for a relatively
> large EMF workspace. But this is / can become a -no-longer-a-thread by
> i) Smart handling of the models (Hey after all we arfe dealing with the
> models right, which is exactly for this very reason)
> 2) Computers and processors evolved drastically since the introduction of
> EMF. (that is about 8-10x) [1] [2]
>
> Regards,
> Hasan
>
> [1] http://www.cpubenchmark.net/high_end_cpus.html
> [2] http://www.cpubenchmark.net/low_end_cpus.html
>
>
> Ed Merks wrote:
>
>> Hasan,
>>
>> This posting only has your CV, but I found it in one of your other cross
>> posts.
>>
>> I think that the extremely well hidden generator wizard addresses many
>> of these concerns though there's certainly room for improvements:
>>
>> http://thegordian.blogspot.com/2009/08/emf-tips-1-how-hell-d o-i-
> generate-my-28.html
>> An issue I see with defining a builder is that it involves defining a
>> project nature which is something we've avoided in the core so far.
>> Automatically performing actions that can be fairly expensive, such as
>> validating all the Ecore models in the workspace, or generating all the
>> GenModels in the workspace, is also something I'd be reluctant about.
>> I suppose if it's done in the background, it's not such a concern. I
>> wonder how much of the benefit could achieved by enhancing the
>> GenerateHandler, e.g., to make it launch a job instead of blocking the
>> IDE?
>>
>>
>> Hasan Ceylan wrote:
>>> The PDF has been attached...
>>>
>>>
>>>> Hello,
>>>>
>>>> Attached is the PDF version of the forementioned EMF Build Manager
>>>> Project Proposal.
>>>>
>>>> I kindly ask EMF community members and EMF (and subprojects) committers
>>>> to review the document and forward their thoughts.
>>>>
>>>> I am also looking for mentors for the proposal.
>>>>
>>>> Below is the extraction of "Background" of the project. Please remember
>>>> to review the attached PDF for full proposal draft.
>>>>
>>>> I apoligize for crossposting...
>>>>
>>>> ============================================================ =
>>>> BACKGROUND
>>>>
>>>> EMF has been around for a long time. But the fact is that it lacked the
>>>> necessary IDE Build Manager integration ever since.
>>>> We think, the current code generation and validation toolset is below
>>>> eclipse UI quality standards and fell behind similar facility provisions
>>>> from the other projects.
>>>>
>>>> For instance, given the current infrastructure, if a developer is
>>>> working with two ecore models that are dependent each other along with
>>>> their respective genmodel, when developer makes a change in the base
>>>> model that requires a change in the dependent ecore model, will need
>>>> quite a lot of clicks and at least 4 editor switches, 2 actions
>>>> executions along with several clicks to locate the action and run them.
>>>>
>>>> Also during the generation process, the UI is blocked and having
>>>> finished the change on the base ecore, the developer cannot continue
>>>> working on the second ecore before the base model generation finishes.
>>>> Further more there is also need to switch to genmodels twice and
>>>> initiate generation delibarately.
>>>>
>>>> In addition to this, if developer would like to validate the model in
>>>> between the unit of the works, that will require clicks to locate the
>>>> validation action, click to run the action and click to dismiss the
>>>> feedback.
>>>>
>>>> It is also in our experience that the genmodel editors are kept open
>>>> just for triggering code genration. Furthermore, this not only clutters
>>>> the editor folder with unneeded editors, but also breaks the 'editor'
>>>> description for genmodel, as usualy once genmodels are set up, they very
>>>> seldom change, but needed to be open for code generation.
>>>> When used on large workspaces with more than a few model, problem
>>>> becomes a real burden.
>>>>
>>>> This is where EBM steps in and delegates much of the work to background
>>>> build manager and prevents user distrubition with using the instruments
>>>> like
>>>> auto build on resource save, Marker and Problem View instrumentation to
>>>> provide feedback.
>>>> ============================================================ =
>>>>
>>>> Regards,
>>>>
>>>>
>>>
>


--
Need professional support for Xtext and EMF?
Go to: http://xtext.itemis.com
Twitter : @svenefftinge
Blog : blog.efftinge.de
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #512458 is a reply to message #512210] Fri, 05 February 2010 08:53 Go to previous messageGo to next message
Hasan Ceylan is currently offline Hasan CeylanFriend
Messages: 198
Registered: July 2009
Senior Member
Hello Sven,

Would love to test with Xtext + EMF Index bench.

Would you be so kind to give me directions to set up a development bench?

Regards,
Hasan

Sven Efftinge wrote:

> Hi Hasan,
>
> how is this idea related to Xtext's builder infrastructure and EMF
> index? It seems to be a perfect match for what you want to achieve.
>
> Cheers,
> Sven
>
> Hasan Ceylan schrieb:
>> Hello Ed,
>>
>> Thanks for sharing you comments. I will surely take a look at referenced
>> wizard / builder.
>>
>> I think the project will handle situations like this well enough since:
>> 1) It has built-in support for dependency chain, meaning only the
>> affected models in the change chain is marked for validation & generation
>> 2) It is not a must, to have the nature to have an EMF project, since you
>> can add / remove the nature by project->right click
>> 3) Builder triggers on save rather then "working-copy".
>> 4) This can further be improved by adding a grace-period and / or
>> max-depth configuration. Meaning, consecutive changes to models within a
>> time window will gather changes and start the *real* build only after the
>> grace period expires. Reaching of *Max-depth* can place a mark on the
>> status bar as well as putting validation markers on the
>> affected-but-yet-processed resources. Clicking on the status bar
>> notification or quick fix on the markers, can trigger partition or deal
>> with the rest of the process. 5) An unavoidable requirement of working
>> with (even for XX number of projects in a single workspace)is, whatever
>> the chosen way of dealing with EMF validation and build, eventually you
>> have to generate. When this happens EBM's promise is to relieve the
>> workspace to the extent possible, with smart dependency tracking and
>> putting resource-locks on only the provisional extension of the build
>> process of the dirty models. This means, putting lock only on the list of
>> models in the dirty models and java package namespace of the gemodels.
>> 6) One of the nice features of the workspace resource locks is, say you
>> are working on a chanin of models. After some editing, you save your
>> work, which is where the builder kicks in. It certainly works in the
>> background and as long as you do not save an editor in the affected
>> resources (chain of dependency and genmodel java artifacts), further save
>> blocks the UI if the build is still going on. Here the user has option
>> which includes i) revertion the save request, which will go back to the
>> editing domain ii) Can halt the builder and postpone the build process
>> altogether to a futher time
>> 7) Since the validation and generation do not modify the model resources
>> this has minimal impact on post-build dirt-editor merge.
>>
>>
>> One of the interesting outcome of my test with a sample workspace with 5
>> interdependent ecore + genmodel is while normally it takes about few
>> secconds to generate a genmodel, the whole process takes 2 times of that
>> time. I guess, this is due to, CPU caching and less processing and stack
>> operation due to less resortion to UI both in terms of painting and going
>> all the way down to OS UI bindings.
>>
>> I am well aware of the cost of nature/builder integration for a
>> relatively large EMF workspace. But this is / can become a
>> -no-longer-a-thread by i) Smart handling of the models (Hey after all we
>> arfe dealing with the models right, which is exactly for this very
>> reason) 2) Computers and processors evolved drastically since the
>> introduction of EMF. (that is about 8-10x) [1] [2]
>>
>> Regards,
>> Hasan
>>
>> [1] http://www.cpubenchmark.net/high_end_cpus.html
>> [2] http://www.cpubenchmark.net/low_end_cpus.html
>>
>>
>> Ed Merks wrote:
>>
>>> Hasan,
>>>
>>> This posting only has your CV, but I found it in one of your other cross
>>> posts.
>>>
>>> I think that the extremely well hidden generator wizard addresses many
>>> of these concerns though there's certainly room for improvements:
>>>
>>> http://thegordian.blogspot.com/2009/08/emf-tips-1-how-hell-d o-i-
>> generate-my-28.html
>>> An issue I see with defining a builder is that it involves defining a
>>> project nature which is something we've avoided in the core so far.
>>> Automatically performing actions that can be fairly expensive, such as
>>> validating all the Ecore models in the workspace, or generating all the
>>> GenModels in the workspace, is also something I'd be reluctant about.
>>> I suppose if it's done in the background, it's not such a concern. I
>>> wonder how much of the benefit could achieved by enhancing the
>>> GenerateHandler, e.g., to make it launch a job instead of blocking the
>>> IDE?
>>>
>>>
>>> Hasan Ceylan wrote:
>>>> The PDF has been attached...
>>>>
>>>>
>>>>> Hello,
>>>>>
>>>>> Attached is the PDF version of the forementioned EMF Build Manager
>>>>> Project Proposal.
>>>>>
>>>>> I kindly ask EMF community members and EMF (and subprojects)
>>>>> committers to review the document and forward their thoughts.
>>>>>
>>>>> I am also looking for mentors for the proposal.
>>>>>
>>>>> Below is the extraction of "Background" of the project. Please
>>>>> remember to review the attached PDF for full proposal draft.
>>>>>
>>>>> I apoligize for crossposting...
>>>>>
>>>>> ============================================================ =
>>>>> BACKGROUND
>>>>>
>>>>> EMF has been around for a long time. But the fact is that it lacked
>>>>> the necessary IDE Build Manager integration ever since.
>>>>> We think, the current code generation and validation toolset is below
>>>>> eclipse UI quality standards and fell behind similar facility
>>>>> provisions from the other projects.
>>>>>
>>>>> For instance, given the current infrastructure, if a developer is
>>>>> working with two ecore models that are dependent each other along with
>>>>> their respective genmodel, when developer makes a change in the base
>>>>> model that requires a change in the dependent ecore model, will need
>>>>> quite a lot of clicks and at least 4 editor switches, 2 actions
>>>>> executions along with several clicks to locate the action and run
>>>>> them.
>>>>>
>>>>> Also during the generation process, the UI is blocked and having
>>>>> finished the change on the base ecore, the developer cannot continue
>>>>> working on the second ecore before the base model generation finishes.
>>>>> Further more there is also need to switch to genmodels twice and
>>>>> initiate generation delibarately.
>>>>>
>>>>> In addition to this, if developer would like to validate the model in
>>>>> between the unit of the works, that will require clicks to locate the
>>>>> validation action, click to run the action and click to dismiss the
>>>>> feedback.
>>>>>
>>>>> It is also in our experience that the genmodel editors are kept open
>>>>> just for triggering code genration. Furthermore, this not only
>>>>> clutters the editor folder with unneeded editors, but also breaks the
>>>>> 'editor' description for genmodel, as usualy once genmodels are set
>>>>> up, they very seldom change, but needed to be open for code
>>>>> generation. When used on large workspaces with more than a few model,
>>>>> problem becomes a real burden.
>>>>>
>>>>> This is where EBM steps in and delegates much of the work to
>>>>> background build manager and prevents user distrubition with using the
>>>>> instruments like
>>>>> auto build on resource save, Marker and Problem View instrumentation
>>>>> to provide feedback.
>>>>> ============================================================ =
>>>>>
>>>>> Regards,
>>>>>
>>>>>
>>>>
>>
>
>

--

Hasan Ceylan
hceylan@batoo.org
+90 (532) 713-5384
+90 (216) 332-5647


From Thomas Gray's poem, Ode on a Distant Prospect of Eton College (1742):
"Where ignorance is bliss, 'tis folly to be wise."

--
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #512474 is a reply to message #512458] Fri, 05 February 2010 09:20 Go to previous messageGo to next message
Sven Efftinge is currently offline Sven EfftingeFriend
Messages: 1823
Registered: July 2009
Senior Member
With Xtext M5 it is basically a matter of
a) implementing and registering IResourceServiceProvider for ecore and
genmodel. This makes sure that ecore and genmodel are indexed. It also
provides the needed hook to compute the transitive hull of changes.

b) implementing and registering IBuildParticipant.
This one get's a call after each build passed in the
IResourceDescription.Deltas. Based on that you'll be able to trigger
code generation.

There's a short video demonstrating the second hook in our n&n document
see M5/ProjectBuilder
( http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_not eworthy.php)

Sven

Hasan Ceylan schrieb:
> Hello Sven,
>
> Would love to test with Xtext + EMF Index bench.
>
> Would you be so kind to give me directions to set up a development bench?
>
> Regards,
> Hasan
>
> Sven Efftinge wrote:
>
>> Hi Hasan,
>>
>> how is this idea related to Xtext's builder infrastructure and EMF
>> index? It seems to be a perfect match for what you want to achieve.
>>
>> Cheers,
>> Sven
>>
>> Hasan Ceylan schrieb:
>>> Hello Ed,
>>>
>>> Thanks for sharing you comments. I will surely take a look at referenced
>>> wizard / builder.
>>>
>>> I think the project will handle situations like this well enough since:
>>> 1) It has built-in support for dependency chain, meaning only the
>>> affected models in the change chain is marked for validation & generation
>>> 2) It is not a must, to have the nature to have an EMF project, since you
>>> can add / remove the nature by project->right click
>>> 3) Builder triggers on save rather then "working-copy".
>>> 4) This can further be improved by adding a grace-period and / or
>>> max-depth configuration. Meaning, consecutive changes to models within a
>>> time window will gather changes and start the *real* build only after the
>>> grace period expires. Reaching of *Max-depth* can place a mark on the
>>> status bar as well as putting validation markers on the
>>> affected-but-yet-processed resources. Clicking on the status bar
>>> notification or quick fix on the markers, can trigger partition or deal
>>> with the rest of the process. 5) An unavoidable requirement of working
>>> with (even for XX number of projects in a single workspace)is, whatever
>>> the chosen way of dealing with EMF validation and build, eventually you
>>> have to generate. When this happens EBM's promise is to relieve the
>>> workspace to the extent possible, with smart dependency tracking and
>>> putting resource-locks on only the provisional extension of the build
>>> process of the dirty models. This means, putting lock only on the list of
>>> models in the dirty models and java package namespace of the gemodels.
>>> 6) One of the nice features of the workspace resource locks is, say you
>>> are working on a chanin of models. After some editing, you save your
>>> work, which is where the builder kicks in. It certainly works in the
>>> background and as long as you do not save an editor in the affected
>>> resources (chain of dependency and genmodel java artifacts), further save
>>> blocks the UI if the build is still going on. Here the user has option
>>> which includes i) revertion the save request, which will go back to the
>>> editing domain ii) Can halt the builder and postpone the build process
>>> altogether to a futher time
>>> 7) Since the validation and generation do not modify the model resources
>>> this has minimal impact on post-build dirt-editor merge.
>>>
>>>
>>> One of the interesting outcome of my test with a sample workspace with 5
>>> interdependent ecore + genmodel is while normally it takes about few
>>> secconds to generate a genmodel, the whole process takes 2 times of that
>>> time. I guess, this is due to, CPU caching and less processing and stack
>>> operation due to less resortion to UI both in terms of painting and going
>>> all the way down to OS UI bindings.
>>>
>>> I am well aware of the cost of nature/builder integration for a
>>> relatively large EMF workspace. But this is / can become a
>>> -no-longer-a-thread by i) Smart handling of the models (Hey after all we
>>> arfe dealing with the models right, which is exactly for this very
>>> reason) 2) Computers and processors evolved drastically since the
>>> introduction of EMF. (that is about 8-10x) [1] [2]
>>>
>>> Regards,
>>> Hasan
>>>
>>> [1] http://www.cpubenchmark.net/high_end_cpus.html
>>> [2] http://www.cpubenchmark.net/low_end_cpus.html
>>>
>>>
>>> Ed Merks wrote:
>>>
>>>> Hasan,
>>>>
>>>> This posting only has your CV, but I found it in one of your other cross
>>>> posts.
>>>>
>>>> I think that the extremely well hidden generator wizard addresses many
>>>> of these concerns though there's certainly room for improvements:
>>>>
>>>> http://thegordian.blogspot.com/2009/08/emf-tips-1-how-hell-d o-i-
>>> generate-my-28.html
>>>> An issue I see with defining a builder is that it involves defining a
>>>> project nature which is something we've avoided in the core so far.
>>>> Automatically performing actions that can be fairly expensive, such as
>>>> validating all the Ecore models in the workspace, or generating all the
>>>> GenModels in the workspace, is also something I'd be reluctant about.
>>>> I suppose if it's done in the background, it's not such a concern. I
>>>> wonder how much of the benefit could achieved by enhancing the
>>>> GenerateHandler, e.g., to make it launch a job instead of blocking the
>>>> IDE?
>>>>
>>>>
>>>> Hasan Ceylan wrote:
>>>>> The PDF has been attached...
>>>>>
>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> Attached is the PDF version of the forementioned EMF Build Manager
>>>>>> Project Proposal.
>>>>>>
>>>>>> I kindly ask EMF community members and EMF (and subprojects)
>>>>>> committers to review the document and forward their thoughts.
>>>>>>
>>>>>> I am also looking for mentors for the proposal.
>>>>>>
>>>>>> Below is the extraction of "Background" of the project. Please
>>>>>> remember to review the attached PDF for full proposal draft.
>>>>>>
>>>>>> I apoligize for crossposting...
>>>>>>
>>>>>> ============================================================ =
>>>>>> BACKGROUND
>>>>>>
>>>>>> EMF has been around for a long time. But the fact is that it lacked
>>>>>> the necessary IDE Build Manager integration ever since.
>>>>>> We think, the current code generation and validation toolset is below
>>>>>> eclipse UI quality standards and fell behind similar facility
>>>>>> provisions from the other projects.
>>>>>>
>>>>>> For instance, given the current infrastructure, if a developer is
>>>>>> working with two ecore models that are dependent each other along with
>>>>>> their respective genmodel, when developer makes a change in the base
>>>>>> model that requires a change in the dependent ecore model, will need
>>>>>> quite a lot of clicks and at least 4 editor switches, 2 actions
>>>>>> executions along with several clicks to locate the action and run
>>>>>> them.
>>>>>>
>>>>>> Also during the generation process, the UI is blocked and having
>>>>>> finished the change on the base ecore, the developer cannot continue
>>>>>> working on the second ecore before the base model generation finishes.
>>>>>> Further more there is also need to switch to genmodels twice and
>>>>>> initiate generation delibarately.
>>>>>>
>>>>>> In addition to this, if developer would like to validate the model in
>>>>>> between the unit of the works, that will require clicks to locate the
>>>>>> validation action, click to run the action and click to dismiss the
>>>>>> feedback.
>>>>>>
>>>>>> It is also in our experience that the genmodel editors are kept open
>>>>>> just for triggering code genration. Furthermore, this not only
>>>>>> clutters the editor folder with unneeded editors, but also breaks the
>>>>>> 'editor' description for genmodel, as usualy once genmodels are set
>>>>>> up, they very seldom change, but needed to be open for code
>>>>>> generation. When used on large workspaces with more than a few model,
>>>>>> problem becomes a real burden.
>>>>>>
>>>>>> This is where EBM steps in and delegates much of the work to
>>>>>> background build manager and prevents user distrubition with using the
>>>>>> instruments like
>>>>>> auto build on resource save, Marker and Problem View instrumentation
>>>>>> to provide feedback.
>>>>>> ============================================================ =
>>>>>>
>>>>>> Regards,
>>>>>>
>>>>>>
>>
>


--
Need professional support for Xtext and EMF?
Go to: http://xtext.itemis.com
Twitter : @svenefftinge
Blog : blog.efftinge.de
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #512490 is a reply to message #512474] Fri, 05 February 2010 09:54 Go to previous messageGo to next message
Hasan Ceylan is currently offline Hasan CeylanFriend
Messages: 198
Registered: July 2009
Senior Member
Hello Sven,

I'm a bit confused.

The aim of EMF Builder is to validate and generate java artifacts on ecore,
xmi and genmodel based on changes on the resources. Basically automates what
you would do when you have an ecore and a genodel:
1) Change the ecore
2) open genmodel
3) Issue generate all

and does this with the dependencies considered (validates and generates the
dependent models)

XText does this automatically with the mwe runner. Are you suggesting
integrating the xtext mwe into EMFBuilder so that the generation is
automated? I just couldn't get it, sorry

Hasan

Sven Efftinge wrote:

>
> With Xtext M5 it is basically a matter of
> a) implementing and registering IResourceServiceProvider for ecore and
> genmodel. This makes sure that ecore and genmodel are indexed. It also
> provides the needed hook to compute the transitive hull of changes.
>
> b) implementing and registering IBuildParticipant.
> This one get's a call after each build passed in the
> IResourceDescription.Deltas. Based on that you'll be able to trigger
> code generation.
>
> There's a short video demonstrating the second hook in our n&n document
> see M5/ProjectBuilder
> ( http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_not eworthy.php)
>
> Sven
>
> Hasan Ceylan schrieb:
>> Hello Sven,
>>
>> Would love to test with Xtext + EMF Index bench.
>>
>> Would you be so kind to give me directions to set up a development bench?
>>
>> Regards,
>> Hasan
>>
>> Sven Efftinge wrote:
>>
>>> Hi Hasan,
>>>
>>> how is this idea related to Xtext's builder infrastructure and EMF
>>> index? It seems to be a perfect match for what you want to achieve.
>>>
>>> Cheers,
>>> Sven
>>>
<SNIP>
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #512506 is a reply to message #512490] Fri, 05 February 2010 10:09 Go to previous messageGo to next message
Sven Efftinge is currently offline Sven EfftingeFriend
Messages: 1823
Registered: July 2009
Senior Member
Hasan Ceylan schrieb:
> The aim of EMF Builder is to validate and generate java artifacts on ecore,
> xmi and genmodel based on changes on the resources. Basically automates what
> you would do when you have an ecore and a genodel:
> 1) Change the ecore
> 2) open genmodel
> 3) Issue generate all
>
> and does this with the dependencies considered (validates and generates the
> dependent models)
>
> XText does this automatically with the mwe runner. Are you suggesting
> integrating the xtext mwe into EMFBuilder so that the generation is
> automated? I just couldn't get it, sorry

No, I didn't meant anything MWE related. I was talking of the new
builder infraststructure in Xtext.
It is just exactly what you have in mind. It listenes on resource
changes (is triggered on save), it computes the transtive hull of
affected resources, it validates the affected resources and it provides
two extension points:
1) one to register EMF-based languages (they don't have to be Xtext
languages) (e.g. *.ecore, *.genmodel)
2) one to register participants, which can do arbitrary work based on
the outcome of a build. (E.g. to start the generation of any affected
genmodels and epackages).

I have blogged about the builder infrastructure in general:
http://blog.efftinge.de/2010/01/xtexts-new-builder-infrastru cture.html

The participant hook had been introduced with M5 and is demoed on the
new & noteworthy page.

Cheers,
Sven


>
> Hasan
>
> Sven Efftinge wrote:
>
>> With Xtext M5 it is basically a matter of
>> a) implementing and registering IResourceServiceProvider for ecore and
>> genmodel. This makes sure that ecore and genmodel are indexed. It also
>> provides the needed hook to compute the transitive hull of changes.
>>
>> b) implementing and registering IBuildParticipant.
>> This one get's a call after each build passed in the
>> IResourceDescription.Deltas. Based on that you'll be able to trigger
>> code generation.
>>
>> There's a short video demonstrating the second hook in our n&n document
>> see M5/ProjectBuilder
>> ( http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_not eworthy.php)
>>
>> Sven
>>
>> Hasan Ceylan schrieb:
>>> Hello Sven,
>>>
>>> Would love to test with Xtext + EMF Index bench.
>>>
>>> Would you be so kind to give me directions to set up a development bench?
>>>
>>> Regards,
>>> Hasan
>>>
>>> Sven Efftinge wrote:
>>>
>>>> Hi Hasan,
>>>>
>>>> how is this idea related to Xtext's builder infrastructure and EMF
>>>> index? It seems to be a perfect match for what you want to achieve.
>>>>
>>>> Cheers,
>>>> Sven
>>>>
> <SNIP>
>


--
Need professional support for Xtext and EMF?
Go to: http://xtext.itemis.com
Twitter : @svenefftinge
Blog : blog.efftinge.de
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #512524 is a reply to message #512506] Fri, 05 February 2010 11:16 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33216
Registered: July 2009
Senior Member
Sven,

This sounds cool too, and definitely related. I wonder if something of
general utility like this makes sense to separate out from Xtext itself?

Sven Efftinge wrote:
> Hasan Ceylan schrieb:
>> The aim of EMF Builder is to validate and generate java artifacts on
>> ecore, xmi and genmodel based on changes on the resources. Basically
>> automates what you would do when you have an ecore and a genodel:
>> 1) Change the ecore
>> 2) open genmodel
>> 3) Issue generate all
>>
>> and does this with the dependencies considered (validates and
>> generates the dependent models)
>>
>> XText does this automatically with the mwe runner. Are you suggesting
>> integrating the xtext mwe into EMFBuilder so that the generation is
>> automated? I just couldn't get it, sorry
>
> No, I didn't meant anything MWE related. I was talking of the new
> builder infraststructure in Xtext.
> It is just exactly what you have in mind. It listenes on resource
> changes (is triggered on save), it computes the transtive hull of
> affected resources, it validates the affected resources and it
> provides two extension points:
> 1) one to register EMF-based languages (they don't have to be Xtext
> languages) (e.g. *.ecore, *.genmodel)
> 2) one to register participants, which can do arbitrary work based on
> the outcome of a build. (E.g. to start the generation of any affected
> genmodels and epackages).
>
> I have blogged about the builder infrastructure in general:
> http://blog.efftinge.de/2010/01/xtexts-new-builder-infrastru cture.html
>
> The participant hook had been introduced with M5 and is demoed on the
> new & noteworthy page.
>
> Cheers,
> Sven
>
>
>>
>> Hasan
>>
>> Sven Efftinge wrote:
>>
>>> With Xtext M5 it is basically a matter of
>>> a) implementing and registering IResourceServiceProvider for ecore and
>>> genmodel. This makes sure that ecore and genmodel are indexed. It also
>>> provides the needed hook to compute the transitive hull of changes.
>>>
>>> b) implementing and registering IBuildParticipant.
>>> This one get's a call after each build passed in the
>>> IResourceDescription.Deltas. Based on that you'll be able to trigger
>>> code generation.
>>>
>>> There's a short video demonstrating the second hook in our n&n document
>>> see M5/ProjectBuilder
>>> ( http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_not eworthy.php)
>>>
>>>
>>> Sven
>>>
>>> Hasan Ceylan schrieb:
>>>> Hello Sven,
>>>>
>>>> Would love to test with Xtext + EMF Index bench.
>>>>
>>>> Would you be so kind to give me directions to set up a development
>>>> bench?
>>>>
>>>> Regards,
>>>> Hasan
>>>>
>>>> Sven Efftinge wrote:
>>>>
>>>>> Hi Hasan,
>>>>>
>>>>> how is this idea related to Xtext's builder infrastructure and EMF
>>>>> index? It seems to be a perfect match for what you want to achieve.
>>>>>
>>>>> Cheers,
>>>>> Sven
>>>>>
>> <SNIP>
>>
>
>


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #512600 is a reply to message #512524] Fri, 05 February 2010 10:12 Go to previous messageGo to next message
Sven Efftinge is currently offline Sven EfftingeFriend
Messages: 1823
Registered: July 2009
Senior Member
Yes, I think it definitely makes sense at some point.
Maybe we should work on extracting that functionality during the next
release train?

Sven

Ed Merks schrieb:
> Sven,
>
> This sounds cool too, and definitely related. I wonder if something of
> general utility like this makes sense to separate out from Xtext itself?
>
> Sven Efftinge wrote:
>> Hasan Ceylan schrieb:
>>> The aim of EMF Builder is to validate and generate java artifacts on
>>> ecore, xmi and genmodel based on changes on the resources. Basically
>>> automates what you would do when you have an ecore and a genodel:
>>> 1) Change the ecore
>>> 2) open genmodel
>>> 3) Issue generate all
>>>
>>> and does this with the dependencies considered (validates and
>>> generates the dependent models)
>>>
>>> XText does this automatically with the mwe runner. Are you suggesting
>>> integrating the xtext mwe into EMFBuilder so that the generation is
>>> automated? I just couldn't get it, sorry
>>
>> No, I didn't meant anything MWE related. I was talking of the new
>> builder infraststructure in Xtext.
>> It is just exactly what you have in mind. It listenes on resource
>> changes (is triggered on save), it computes the transtive hull of
>> affected resources, it validates the affected resources and it
>> provides two extension points:
>> 1) one to register EMF-based languages (they don't have to be Xtext
>> languages) (e.g. *.ecore, *.genmodel)
>> 2) one to register participants, which can do arbitrary work based on
>> the outcome of a build. (E.g. to start the generation of any affected
>> genmodels and epackages).
>>
>> I have blogged about the builder infrastructure in general:
>> http://blog.efftinge.de/2010/01/xtexts-new-builder-infrastru cture.html
>>
>> The participant hook had been introduced with M5 and is demoed on the
>> new & noteworthy page.
>>
>> Cheers,
>> Sven
>>
>>
>>>
>>> Hasan
>>>
>>> Sven Efftinge wrote:
>>>
>>>> With Xtext M5 it is basically a matter of
>>>> a) implementing and registering IResourceServiceProvider for ecore and
>>>> genmodel. This makes sure that ecore and genmodel are indexed. It also
>>>> provides the needed hook to compute the transitive hull of changes.
>>>>
>>>> b) implementing and registering IBuildParticipant.
>>>> This one get's a call after each build passed in the
>>>> IResourceDescription.Deltas. Based on that you'll be able to trigger
>>>> code generation.
>>>>
>>>> There's a short video demonstrating the second hook in our n&n document
>>>> see M5/ProjectBuilder
>>>> ( http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_not eworthy.php)
>>>>
>>>>
>>>> Sven
>>>>
>>>> Hasan Ceylan schrieb:
>>>>> Hello Sven,
>>>>>
>>>>> Would love to test with Xtext + EMF Index bench.
>>>>>
>>>>> Would you be so kind to give me directions to set up a development
>>>>> bench?
>>>>>
>>>>> Regards,
>>>>> Hasan
>>>>>
>>>>> Sven Efftinge wrote:
>>>>>
>>>>>> Hi Hasan,
>>>>>>
>>>>>> how is this idea related to Xtext's builder infrastructure and EMF
>>>>>> index? It seems to be a perfect match for what you want to achieve.
>>>>>>
>>>>>> Cheers,
>>>>>> Sven
>>>>>>
>>> <SNIP>
>>>
>>
>>


--
Need professional support for Xtext and EMF?
Go to: http://xtext.itemis.com
Twitter : @svenefftinge
Blog : blog.efftinge.de
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #512713 is a reply to message #512600] Sat, 06 February 2010 17:33 Go to previous messageGo to next message
Sven Krause is currently offline Sven KrauseFriend
Messages: 64
Registered: July 2009
Member
Hi Hasan, Sven, Ed,

wouldn't it make sense to have such an background build/gen job not only
limited to ecore/gen/xtext? The most emf based models are registered
with its package factory and the potential file extension. So it should
be easily possible to identify each kind of model of model files within
the marked projects and launch the generic validate/build build hook for
them. The ecore build cycle (refresh genmodel, trigger codegen) is just
a special case. PS:the change of a base model might/should trigger the
dependent model build cycle too.

Sven

Am 05.02.2010 16:01, schrieb Sven Efftinge:
> Yes, I think it definitely makes sense at some point.
> Maybe we should work on extracting that functionality during the next
> release train?
>
> Sven
>
> Ed Merks schrieb:
>> Sven,
>>
>> This sounds cool too, and definitely related. I wonder if something
>> of general utility like this makes sense to separate out from Xtext
>> itself?
>>
>> Sven Efftinge wrote:
>>> Hasan Ceylan schrieb:
>>>> The aim of EMF Builder is to validate and generate java artifacts
>>>> on ecore, xmi and genmodel based on changes on the resources.
>>>> Basically automates what you would do when you have an ecore and a
>>>> genodel:
>>>> 1) Change the ecore
>>>> 2) open genmodel
>>>> 3) Issue generate all
>>>>
>>>> and does this with the dependencies considered (validates and
>>>> generates the dependent models)
>>>>
>>>> XText does this automatically with the mwe runner. Are you
>>>> suggesting integrating the xtext mwe into EMFBuilder so that the
>>>> generation is automated? I just couldn't get it, sorry
>>>
>>> No, I didn't meant anything MWE related. I was talking of the new
>>> builder infraststructure in Xtext.
>>> It is just exactly what you have in mind. It listenes on resource
>>> changes (is triggered on save), it computes the transtive hull of
>>> affected resources, it validates the affected resources and it
>>> provides two extension points:
>>> 1) one to register EMF-based languages (they don't have to be Xtext
>>> languages) (e.g. *.ecore, *.genmodel)
>>> 2) one to register participants, which can do arbitrary work based
>>> on the outcome of a build. (E.g. to start the generation of any
>>> affected genmodels and epackages).
>>>
>>> I have blogged about the builder infrastructure in general:
>>> http://blog.efftinge.de/2010/01/xtexts-new-builder-infrastru cture.html
>>>
>>> The participant hook had been introduced with M5 and is demoed on
>>> the new & noteworthy page.
>>>
>>> Cheers,
>>> Sven
>>>
>>>
>>>>
>>>> Hasan
>>>>
>>>> Sven Efftinge wrote:
>>>>
>>>>> With Xtext M5 it is basically a matter of
>>>>> a) implementing and registering IResourceServiceProvider for ecore
>>>>> and
>>>>> genmodel. This makes sure that ecore and genmodel are indexed. It
>>>>> also
>>>>> provides the needed hook to compute the transitive hull of changes.
>>>>>
>>>>> b) implementing and registering IBuildParticipant.
>>>>> This one get's a call after each build passed in the
>>>>> IResourceDescription.Deltas. Based on that you'll be able to trigger
>>>>> code generation.
>>>>>
>>>>> There's a short video demonstrating the second hook in our n&n
>>>>> document
>>>>> see M5/ProjectBuilder
>>>>> ( http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_not eworthy.php)
>>>>>
>>>>>
>>>>> Sven
>>>>>
>>>>> Hasan Ceylan schrieb:
>>>>>> Hello Sven,
>>>>>>
>>>>>> Would love to test with Xtext + EMF Index bench.
>>>>>>
>>>>>> Would you be so kind to give me directions to set up a
>>>>>> development bench?
>>>>>>
>>>>>> Regards,
>>>>>> Hasan
>>>>>>
>>>>>> Sven Efftinge wrote:
>>>>>>
>>>>>>> Hi Hasan,
>>>>>>>
>>>>>>> how is this idea related to Xtext's builder infrastructure and EMF
>>>>>>> index? It seems to be a perfect match for what you want to achieve.
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Sven
>>>>>>>
>>>> <SNIP>
>>>>
>>>
>>>
>
>
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #512714 is a reply to message #512713] Sat, 06 February 2010 13:00 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33216
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------080709090205030609010102
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Sven,

What the other Sven described sounded quite general along the lines of
what you're suggesting. It would certainly be good in such a framework
to make a validation cycle trivial to enable, i.e., just an extension
with a generic reusable validator trigger.


Sven Krause wrote:
> Hi Hasan, Sven, Ed,
>
> wouldn't it make sense to have such an background build/gen job not only
> limited to ecore/gen/xtext? The most emf based models are registered
> with its package factory and the potential file extension. So it should
> be easily possible to identify each kind of model of model files within
> the marked projects and launch the generic validate/build build hook for
> them. The ecore build cycle (refresh genmodel, trigger codegen) is just
> a special case. PS:the change of a base model might/should trigger the
> dependent model build cycle too.
>
> Sven
>
> Am 05.02.2010 16:01, schrieb Sven Efftinge:
>
>> Yes, I think it definitely makes sense at some point.
>> Maybe we should work on extracting that functionality during the next
>> release train?
>>
>> Sven
>>
>> Ed Merks schrieb:
>>
>>> Sven,
>>>
>>> This sounds cool too, and definitely related. I wonder if something
>>> of general utility like this makes sense to separate out from Xtext
>>> itself?
>>>
>>> Sven Efftinge wrote:
>>>
>>>> Hasan Ceylan schrieb:
>>>>
>>>>> The aim of EMF Builder is to validate and generate java artifacts
>>>>> on ecore, xmi and genmodel based on changes on the resources.
>>>>> Basically automates what you would do when you have an ecore and a
>>>>> genodel:
>>>>> 1) Change the ecore
>>>>> 2) open genmodel
>>>>> 3) Issue generate all
>>>>>
>>>>> and does this with the dependencies considered (validates and
>>>>> generates the dependent models)
>>>>>
>>>>> XText does this automatically with the mwe runner. Are you
>>>>> suggesting integrating the xtext mwe into EMFBuilder so that the
>>>>> generation is automated? I just couldn't get it, sorry
>>>>>
>>>> No, I didn't meant anything MWE related. I was talking of the new
>>>> builder infraststructure in Xtext.
>>>> It is just exactly what you have in mind. It listenes on resource
>>>> changes (is triggered on save), it computes the transtive hull of
>>>> affected resources, it validates the affected resources and it
>>>> provides two extension points:
>>>> 1) one to register EMF-based languages (they don't have to be Xtext
>>>> languages) (e.g. *.ecore, *.genmodel)
>>>> 2) one to register participants, which can do arbitrary work based
>>>> on the outcome of a build. (E.g. to start the generation of any
>>>> affected genmodels and epackages).
>>>>
>>>> I have blogged about the builder infrastructure in general:
>>>> http://blog.efftinge.de/2010/01/xtexts-new-builder-infrastru cture.html
>>>>
>>>> The participant hook had been introduced with M5 and is demoed on
>>>> the new & noteworthy page.
>>>>
>>>> Cheers,
>>>> Sven
>>>>
>>>>
>>>>
>>>>> Hasan
>>>>>
>>>>> Sven Efftinge wrote:
>>>>>
>>>>>
>>>>>> With Xtext M5 it is basically a matter of
>>>>>> a) implementing and registering IResourceServiceProvider for ecore
>>>>>> and
>>>>>> genmodel. This makes sure that ecore and genmodel are indexed. It
>>>>>> also
>>>>>> provides the needed hook to compute the transitive hull of changes.
>>>>>>
>>>>>> b) implementing and registering IBuildParticipant.
>>>>>> This one get's a call after each build passed in the
>>>>>> IResourceDescription.Deltas. Based on that you'll be able to trigger
>>>>>> code generation.
>>>>>>
>>>>>> There's a short video demonstrating the second hook in our n&n
>>>>>> document
>>>>>> see M5/ProjectBuilder
>>>>>> ( http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_not eworthy.php)
>>>>>>
>>>>>>
>>>>>> Sven
>>>>>>
>>>>>> Hasan Ceylan schrieb:
>>>>>>
>>>>>>> Hello Sven,
>>>>>>>
>>>>>>> Would love to test with Xtext + EMF Index bench.
>>>>>>>
>>>>>>> Would you be so kind to give me directions to set up a
>>>>>>> development bench?
>>>>>>>
>>>>>>> Regards,
>>>>>>> Hasan
>>>>>>>
>>>>>>> Sven Efftinge wrote:
>>>>>>>
>>>>>>>
>>>>>>>> Hi Hasan,
>>>>>>>>
>>>>>>>> how is this idea related to Xtext's builder infrastructure and EMF
>>>>>>>> index? It seems to be a perfect match for what you want to achieve.
>>>>>>>>
>>>>>>>> Cheers,
>>>>>>>> Sven
>>>>>>>>
>>>>>>>>
>>>>> <SNIP>
>>>>>
>>>>>
>>>>
>>
>
>

--------------080709090205030609010102
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Sven,<br>
<br>
What the other Sven described sounded quite general along the lines of
what you're suggesting.&nbsp; It would certainly be good in such a framework
to make a validation cycle trivial to enable, i.e., just an extension
with a generic reusable validator trigger.<br>
<br>
<br>
Sven Krause wrote:
<blockquote cite="mid:hkk94l$h59$1@build.eclipse.org" type="cite">
<pre wrap="">Hi Hasan, Sven, Ed,

wouldn't it make sense to have such an background build/gen job not only
limited to ecore/gen/xtext? The most emf based models are registered
with its package factory and the potential file extension. So it should
be easily possible to identify each kind of model of model files within
the marked projects and launch the generic validate/build build hook for
them. The ecore build cycle (refresh genmodel, trigger codegen) is just
a special case. PS:the change of a base model might/should trigger the
dependent model build cycle too.

Sven

Am 05.02.2010 16:01, schrieb Sven Efftinge:
</pre>
<blockquote type="cite">
<pre wrap="">Yes, I think it definitely makes sense at some point.
Maybe we should work on extracting that functionality during the next
release train?

Sven

Ed Merks schrieb:
</pre>
<blockquote type="cite">
<pre wrap="">Sven,

This sounds cool too, and definitely related. I wonder if something
of general utility like this makes sense to separate out from Xtext
itself?

Sven Efftinge wrote:
</pre>
<blockquote type="cite">
<pre wrap="">Hasan Ceylan schrieb:
</pre>
<blockquote type="cite">
<pre wrap="">The aim of EMF Builder is to validate and generate java artifacts
on ecore, xmi and genmodel based on changes on the resources.
Basically automates what you would do when you have an ecore and a
genodel:
1) Change the ecore
2) open genmodel
3) Issue generate all

and does this with the dependencies considered (validates and
generates the dependent models)

XText does this automatically with the mwe runner. Are you
suggesting integrating the xtext mwe into EMFBuilder so that the
generation is automated? I just couldn't get it, sorry
</pre>
</blockquote>
<pre wrap="">No, I didn't meant anything MWE related. I was talking of the new
builder infraststructure in Xtext.
It is just exactly what you have in mind. It listenes on resource
changes (is triggered on save), it computes the transtive hull of
affected resources, it validates the affected resources and it
provides two extension points:
1) one to register EMF-based languages (they don't have to be Xtext
languages) (e.g. *.ecore, *.genmodel)
2) one to register participants, which can do arbitrary work based
on the outcome of a build. (E.g. to start the generation of any
affected genmodels and epackages).

I have blogged about the builder infrastructure in general:
<a class="moz-txt-link-freetext" href=" http://blog.efftinge.de/2010/01/xtexts-new-builder-infrastru cture.html"> http://blog.efftinge.de/2010/01/xtexts-new-builder-infrastru cture.html</a>

The participant hook had been introduced with M5 and is demoed on
the new &amp; noteworthy page.

Cheers,
Sven


</pre>
<blockquote type="cite">
<pre wrap="">Hasan

Sven Efftinge wrote:

</pre>
<blockquote type="cite">
<pre wrap="">With Xtext M5 it is basically a matter of
a) implementing and registering IResourceServiceProvider for ecore
and
genmodel. This makes sure that ecore and genmodel are indexed. It
also
provides the needed hook to compute the transitive hull of changes.

b) implementing and registering IBuildParticipant.
This one get's a call after each build passed in the
IResourceDescription.Deltas. Based on that you'll be able to trigger
code generation.

There's a short video demonstrating the second hook in our n&amp;n
document
see M5/ProjectBuilder
(<a class="moz-txt-link-freetext" href=" http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_not eworthy.php"> http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_not eworthy.php</a>)


Sven

Hasan Ceylan schrieb:
</pre>
<blockquote type="cite">
<pre wrap="">Hello Sven,

Would love to test with Xtext + EMF Index bench.

Would you be so kind to give me directions to set up a
development bench?

Regards,
Hasan

Sven Efftinge wrote:

</pre>
<blockquote type="cite">
<pre wrap="">Hi Hasan,

how is this idea related to Xtext's builder infrastructure and EMF
index? It seems to be a perfect match for what you want to achieve.

Cheers,
Sven

</pre>
</blockquote>
</blockquote>
</blockquote>
<pre wrap="">&lt;SNIP&gt;

</pre>
</blockquote>
<pre wrap="">
</pre>
</blockquote>
</blockquote>
<pre wrap="">
</pre>
</blockquote>
<pre wrap=""><!---->
</pre>
</blockquote>
</body>
</html>

--------------080709090205030609010102--


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #512723 is a reply to message #512714] Sat, 06 February 2010 18:17 Go to previous messageGo to next message
Sven Efftinge is currently offline Sven EfftingeFriend
Messages: 1823
Registered: July 2009
Senior Member
Yes, Xtext's builder infrastructure is not specific to Xtext or ecore,
but allows to "build" any kind of EMF resource in the workspace.
However, we do not reuse the ResourceFactory.Registry.INSTANCE but have
a Registry for so called IResourceServiceProviders.
So if you want to have your EMF models built, just implement and
register one.

Cheers,
Sven

Ed Merks schrieb:
> Sven,
>
> What the other Sven described sounded quite general along the lines of
> what you're suggesting. It would certainly be good in such a framework
> to make a validation cycle trivial to enable, i.e., just an extension
> with a generic reusable validator trigger.
>
>
> Sven Krause wrote:
>> Hi Hasan, Sven, Ed,
>>
>> wouldn't it make sense to have such an background build/gen job not only
>> limited to ecore/gen/xtext? The most emf based models are registered
>> with its package factory and the potential file extension. So it should
>> be easily possible to identify each kind of model of model files within
>> the marked projects and launch the generic validate/build build hook for
>> them. The ecore build cycle (refresh genmodel, trigger codegen) is just
>> a special case. PS:the change of a base model might/should trigger the
>> dependent model build cycle too.
>>
>> Sven
>>
>> Am 05.02.2010 16:01, schrieb Sven Efftinge:
>>
>>> Yes, I think it definitely makes sense at some point.
>>> Maybe we should work on extracting that functionality during the next
>>> release train?
>>>
>>> Sven
>>>
>>> Ed Merks schrieb:
>>>
>>>> Sven,
>>>>
>>>> This sounds cool too, and definitely related. I wonder if something
>>>> of general utility like this makes sense to separate out from Xtext
>>>> itself?
>>>>
>>>> Sven Efftinge wrote:
>>>>
>>>>> Hasan Ceylan schrieb:
>>>>>
>>>>>> The aim of EMF Builder is to validate and generate java artifacts
>>>>>> on ecore, xmi and genmodel based on changes on the resources.
>>>>>> Basically automates what you would do when you have an ecore and a
>>>>>> genodel:
>>>>>> 1) Change the ecore
>>>>>> 2) open genmodel
>>>>>> 3) Issue generate all
>>>>>>
>>>>>> and does this with the dependencies considered (validates and
>>>>>> generates the dependent models)
>>>>>>
>>>>>> XText does this automatically with the mwe runner. Are you
>>>>>> suggesting integrating the xtext mwe into EMFBuilder so that the
>>>>>> generation is automated? I just couldn't get it, sorry
>>>>>>
>>>>> No, I didn't meant anything MWE related. I was talking of the new
>>>>> builder infraststructure in Xtext.
>>>>> It is just exactly what you have in mind. It listenes on resource
>>>>> changes (is triggered on save), it computes the transtive hull of
>>>>> affected resources, it validates the affected resources and it
>>>>> provides two extension points:
>>>>> 1) one to register EMF-based languages (they don't have to be Xtext
>>>>> languages) (e.g. *.ecore, *.genmodel)
>>>>> 2) one to register participants, which can do arbitrary work based
>>>>> on the outcome of a build. (E.g. to start the generation of any
>>>>> affected genmodels and epackages).
>>>>>
>>>>> I have blogged about the builder infrastructure in general:
>>>>> http://blog.efftinge.de/2010/01/xtexts-new-builder-infrastru cture.html
>>>>>
>>>>> The participant hook had been introduced with M5 and is demoed on
>>>>> the new & noteworthy page.
>>>>>
>>>>> Cheers,
>>>>> Sven
>>>>>
>>>>>
>>>>>
>>>>>> Hasan
>>>>>>
>>>>>> Sven Efftinge wrote:
>>>>>>
>>>>>>
>>>>>>> With Xtext M5 it is basically a matter of
>>>>>>> a) implementing and registering IResourceServiceProvider for ecore
>>>>>>> and
>>>>>>> genmodel. This makes sure that ecore and genmodel are indexed. It
>>>>>>> also
>>>>>>> provides the needed hook to compute the transitive hull of changes.
>>>>>>>
>>>>>>> b) implementing and registering IBuildParticipant.
>>>>>>> This one get's a call after each build passed in the
>>>>>>> IResourceDescription.Deltas. Based on that you'll be able to trigger
>>>>>>> code generation.
>>>>>>>
>>>>>>> There's a short video demonstrating the second hook in our n&n
>>>>>>> document
>>>>>>> see M5/ProjectBuilder
>>>>>>> ( http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_not eworthy.php)
>>>>>>>
>>>>>>>
>>>>>>> Sven
>>>>>>>
>>>>>>> Hasan Ceylan schrieb:
>>>>>>>
>>>>>>>> Hello Sven,
>>>>>>>>
>>>>>>>> Would love to test with Xtext + EMF Index bench.
>>>>>>>>
>>>>>>>> Would you be so kind to give me directions to set up a
>>>>>>>> development bench?
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>> Hasan
>>>>>>>>
>>>>>>>> Sven Efftinge wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>> Hi Hasan,
>>>>>>>>>
>>>>>>>>> how is this idea related to Xtext's builder infrastructure and EMF
>>>>>>>>> index? It seems to be a perfect match for what you want to achieve.
>>>>>>>>>
>>>>>>>>> Cheers,
>>>>>>>>> Sven
>>>>>>>>>
>>>>>>>>>
>>>>>> <SNIP>
>>>>>>
>>>>>>
>>>>>
>>>
>>
>>


--
Need professional support for Xtext and EMF?
Go to: http://xtext.itemis.com
Twitter : @svenefftinge
Blog : blog.efftinge.de
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #512726 is a reply to message #512713] Sat, 06 February 2010 18:29 Go to previous messageGo to next message
Hasan Ceylan is currently offline Hasan CeylanFriend
Messages: 198
Registered: July 2009
Senior Member
Hello Sven,

First you may find the proposal draft here:
http://ebm.batoo.org/index.php/Main_Page

and, yes I definitely target a cycle with the dependencies resolved both in
the workspace and emf registry, and any change / error flag transitively
will affect the downstream models.

Frankly I hadn't though about caching all the extension from the registry. I
should add that as an enhancement request.

Hasan

Sven Krause wrote:

> Hi Hasan, Sven, Ed,
>
> wouldn't it make sense to have such an background build/gen job not only
> limited to ecore/gen/xtext? The most emf based models are registered
> with its package factory and the potential file extension. So it should
> be easily possible to identify each kind of model of model files within
> the marked projects and launch the generic validate/build build hook for
> them. The ecore build cycle (refresh genmodel, trigger codegen) is just
> a special case. PS:the change of a base model might/should trigger the
> dependent model build cycle too.
>
> Sven
>
> Am 05.02.2010 16:01, schrieb Sven Efftinge:
>> Yes, I think it definitely makes sense at some point.
>> Maybe we should work on extracting that functionality during the next
>> release train?
>>
>> Sven
>>
>> Ed Merks schrieb:
>>> Sven,
>>>
>>> This sounds cool too, and definitely related. I wonder if something
>>> of general utility like this makes sense to separate out from Xtext
>>> itself?
>>>
>>> Sven Efftinge wrote:
>>>> Hasan Ceylan schrieb:
>>>>> The aim of EMF Builder is to validate and generate java artifacts
>>>>> on ecore, xmi and genmodel based on changes on the resources.
>>>>> Basically automates what you would do when you have an ecore and a
>>>>> genodel:
>>>>> 1) Change the ecore
>>>>> 2) open genmodel
>>>>> 3) Issue generate all
>>>>>
>>>>> and does this with the dependencies considered (validates and
>>>>> generates the dependent models)
>>>>>
>>>>> XText does this automatically with the mwe runner. Are you
>>>>> suggesting integrating the xtext mwe into EMFBuilder so that the
>>>>> generation is automated? I just couldn't get it, sorry
>>>>
>>>> No, I didn't meant anything MWE related. I was talking of the new
>>>> builder infraststructure in Xtext.
>>>> It is just exactly what you have in mind. It listenes on resource
>>>> changes (is triggered on save), it computes the transtive hull of
>>>> affected resources, it validates the affected resources and it
>>>> provides two extension points:
>>>> 1) one to register EMF-based languages (they don't have to be Xtext
>>>> languages) (e.g. *.ecore, *.genmodel)
>>>> 2) one to register participants, which can do arbitrary work based
>>>> on the outcome of a build. (E.g. to start the generation of any
>>>> affected genmodels and epackages).
>>>>
>>>> I have blogged about the builder infrastructure in general:
>>>> http://blog.efftinge.de/2010/01/xtexts-new-builder-infrastru cture.html
>>>>
>>>> The participant hook had been introduced with M5 and is demoed on
>>>> the new & noteworthy page.
>>>>
>>>> Cheers,
>>>> Sven
>>>>
>>>>
>>>>>
>>>>> Hasan
>>>>>
>>>>> Sven Efftinge wrote:
>>>>>
>>>>>> With Xtext M5 it is basically a matter of
>>>>>> a) implementing and registering IResourceServiceProvider for ecore
>>>>>> and
>>>>>> genmodel. This makes sure that ecore and genmodel are indexed. It
>>>>>> also
>>>>>> provides the needed hook to compute the transitive hull of changes.
>>>>>>
>>>>>> b) implementing and registering IBuildParticipant.
>>>>>> This one get's a call after each build passed in the
>>>>>> IResourceDescription.Deltas. Based on that you'll be able to trigger
>>>>>> code generation.
>>>>>>
>>>>>> There's a short video demonstrating the second hook in our n&n
>>>>>> document
>>>>>> see M5/ProjectBuilder
>>>>>>
( http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_not eworthy.php)
>>>>>>
>>>>>>
>>>>>> Sven
>>>>>>
>>>>>> Hasan Ceylan schrieb:
>>>>>>> Hello Sven,
>>>>>>>
>>>>>>> Would love to test with Xtext + EMF Index bench.
>>>>>>>
>>>>>>> Would you be so kind to give me directions to set up a
>>>>>>> development bench?
>>>>>>>
>>>>>>> Regards,
>>>>>>> Hasan
>>>>>>>
>>>>>>> Sven Efftinge wrote:
>>>>>>>
>>>>>>>> Hi Hasan,
>>>>>>>>
>>>>>>>> how is this idea related to Xtext's builder infrastructure and EMF
>>>>>>>> index? It seems to be a perfect match for what you want to achieve.
>>>>>>>>
>>>>>>>> Cheers,
>>>>>>>> Sven
>>>>>>>>
>>>>> <SNIP>
>>>>>
>>>>
>>>>
>>
>>

--

Hasan Ceylan
hceylan@batoo.org
+90 (532) 713-5384
+90 (216) 332-5647


From Thomas Gray's poem, Ode on a Distant Prospect of Eton College (1742):
"Where ignorance is bliss, 'tis folly to be wise."

--
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #512751 is a reply to message #512726] Sun, 07 February 2010 09:33 Go to previous messageGo to next message
Sven Krause is currently offline Sven KrauseFriend
Messages: 64
Registered: July 2009
Member
Hi Hasan, Sven

we have similar capabilities in the flowr project that became base of
the new mtf eclipse project. Are you interested to join the project and
bring your features into mtf? Or do you prefer to keep it standalone
(@Ed, Sven)?

Sven
Am 06.02.2010 19:29, schrieb Hasan Ceylan:
> Hello Sven,
>
> First you may find the proposal draft here:
> http://ebm.batoo.org/index.php/Main_Page
>
> and, yes I definitely target a cycle with the dependencies resolved both in
> the workspace and emf registry, and any change / error flag transitively
> will affect the downstream models.
>
> Frankly I hadn't though about caching all the extension from the registry. I
> should add that as an enhancement request.
>
> Hasan
>
> Sven Krause wrote:
>
>
>> Hi Hasan, Sven, Ed,
>>
>> wouldn't it make sense to have such an background build/gen job not only
>> limited to ecore/gen/xtext? The most emf based models are registered
>> with its package factory and the potential file extension. So it should
>> be easily possible to identify each kind of model of model files within
>> the marked projects and launch the generic validate/build build hook for
>> them. The ecore build cycle (refresh genmodel, trigger codegen) is just
>> a special case. PS:the change of a base model might/should trigger the
>> dependent model build cycle too.
>>
>> Sven
>>
>> Am 05.02.2010 16:01, schrieb Sven Efftinge:
>>
>>> Yes, I think it definitely makes sense at some point.
>>> Maybe we should work on extracting that functionality during the next
>>> release train?
>>>
>>> Sven
>>>
>>> Ed Merks schrieb:
>>>
>>>> Sven,
>>>>
>>>> This sounds cool too, and definitely related. I wonder if something
>>>> of general utility like this makes sense to separate out from Xtext
>>>> itself?
>>>>
>>>> Sven Efftinge wrote:
>>>>
>>>>> Hasan Ceylan schrieb:
>>>>>
>>>>>> The aim of EMF Builder is to validate and generate java artifacts
>>>>>> on ecore, xmi and genmodel based on changes on the resources.
>>>>>> Basically automates what you would do when you have an ecore and a
>>>>>> genodel:
>>>>>> 1) Change the ecore
>>>>>> 2) open genmodel
>>>>>> 3) Issue generate all
>>>>>>
>>>>>> and does this with the dependencies considered (validates and
>>>>>> generates the dependent models)
>>>>>>
>>>>>> XText does this automatically with the mwe runner. Are you
>>>>>> suggesting integrating the xtext mwe into EMFBuilder so that the
>>>>>> generation is automated? I just couldn't get it, sorry
>>>>>>
>>>>> No, I didn't meant anything MWE related. I was talking of the new
>>>>> builder infraststructure in Xtext.
>>>>> It is just exactly what you have in mind. It listenes on resource
>>>>> changes (is triggered on save), it computes the transtive hull of
>>>>> affected resources, it validates the affected resources and it
>>>>> provides two extension points:
>>>>> 1) one to register EMF-based languages (they don't have to be Xtext
>>>>> languages) (e.g. *.ecore, *.genmodel)
>>>>> 2) one to register participants, which can do arbitrary work based
>>>>> on the outcome of a build. (E.g. to start the generation of any
>>>>> affected genmodels and epackages).
>>>>>
>>>>> I have blogged about the builder infrastructure in general:
>>>>> http://blog.efftinge.de/2010/01/xtexts-new-builder-infrastru cture.html
>>>>>
>>>>> The participant hook had been introduced with M5 and is demoed on
>>>>> the new & noteworthy page.
>>>>>
>>>>> Cheers,
>>>>> Sven
>>>>>
>>>>>
>>>>>
>>>>>> Hasan
>>>>>>
>>>>>> Sven Efftinge wrote:
>>>>>>
>>>>>>
>>>>>>> With Xtext M5 it is basically a matter of
>>>>>>> a) implementing and registering IResourceServiceProvider for ecore
>>>>>>> and
>>>>>>> genmodel. This makes sure that ecore and genmodel are indexed. It
>>>>>>> also
>>>>>>> provides the needed hook to compute the transitive hull of changes.
>>>>>>>
>>>>>>> b) implementing and registering IBuildParticipant.
>>>>>>> This one get's a call after each build passed in the
>>>>>>> IResourceDescription.Deltas. Based on that you'll be able to trigger
>>>>>>> code generation.
>>>>>>>
>>>>>>> There's a short video demonstrating the second hook in our n&n
>>>>>>> document
>>>>>>> see M5/ProjectBuilder
>>>>>>>
>>>>>>>
> ( http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_not eworthy.php)
>
>>>>>>>
>>>>>>> Sven
>>>>>>>
>>>>>>> Hasan Ceylan schrieb:
>>>>>>>
>>>>>>>> Hello Sven,
>>>>>>>>
>>>>>>>> Would love to test with Xtext + EMF Index bench.
>>>>>>>>
>>>>>>>> Would you be so kind to give me directions to set up a
>>>>>>>> development bench?
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>> Hasan
>>>>>>>>
>>>>>>>> Sven Efftinge wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>> Hi Hasan,
>>>>>>>>>
>>>>>>>>> how is this idea related to Xtext's builder infrastructure and EMF
>>>>>>>>> index? It seems to be a perfect match for what you want to achieve.
>>>>>>>>>
>>>>>>>>> Cheers,
>>>>>>>>> Sven
>>>>>>>>>
>>>>>>>>>
>>>>>> <SNIP>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>
>>>
>
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #512753 is a reply to message #512723] Sun, 07 February 2010 09:35 Go to previous messageGo to next message
Sven Krause is currently offline Sven KrauseFriend
Messages: 64
Registered: July 2009
Member
Hi Sven,

doesn't put this construct extra effort in allowing trigger builds on
any model or did use this explicit as filter?

Sven
Am 06.02.2010 19:17, schrieb Sven Efftinge:
> Yes, Xtext's builder infrastructure is not specific to Xtext or ecore,
> but allows to "build" any kind of EMF resource in the workspace.
> However, we do not reuse the ResourceFactory.Registry.INSTANCE but
> have a Registry for so called IResourceServiceProviders.
> So if you want to have your EMF models built, just implement and
> register one.
>
> Cheers,
> Sven
>
> Ed Merks schrieb:
>> Sven,
>>
>> What the other Sven described sounded quite general along the lines
>> of what you're suggesting. It would certainly be good in such a
>> framework to make a validation cycle trivial to enable, i.e., just an
>> extension with a generic reusable validator trigger.
>>
>>
>> Sven Krause wrote:
>>> Hi Hasan, Sven, Ed,
>>>
>>> wouldn't it make sense to have such an background build/gen job not
>>> only
>>> limited to ecore/gen/xtext? The most emf based models are registered
>>> with its package factory and the potential file extension. So it should
>>> be easily possible to identify each kind of model of model files within
>>> the marked projects and launch the generic validate/build build hook
>>> for
>>> them. The ecore build cycle (refresh genmodel, trigger codegen) is just
>>> a special case. PS:the change of a base model might/should trigger the
>>> dependent model build cycle too.
>>>
>>> Sven
>>>
>>> Am 05.02.2010 16:01, schrieb Sven Efftinge:
>>>
>>>> Yes, I think it definitely makes sense at some point.
>>>> Maybe we should work on extracting that functionality during the next
>>>> release train?
>>>>
>>>> Sven
>>>>
>>>> Ed Merks schrieb:
>>>>
>>>>> Sven,
>>>>>
>>>>> This sounds cool too, and definitely related. I wonder if something
>>>>> of general utility like this makes sense to separate out from Xtext
>>>>> itself?
>>>>>
>>>>> Sven Efftinge wrote:
>>>>>
>>>>>> Hasan Ceylan schrieb:
>>>>>>
>>>>>>> The aim of EMF Builder is to validate and generate java artifacts
>>>>>>> on ecore, xmi and genmodel based on changes on the resources.
>>>>>>> Basically automates what you would do when you have an ecore and a
>>>>>>> genodel:
>>>>>>> 1) Change the ecore
>>>>>>> 2) open genmodel
>>>>>>> 3) Issue generate all
>>>>>>>
>>>>>>> and does this with the dependencies considered (validates and
>>>>>>> generates the dependent models)
>>>>>>>
>>>>>>> XText does this automatically with the mwe runner. Are you
>>>>>>> suggesting integrating the xtext mwe into EMFBuilder so that the
>>>>>>> generation is automated? I just couldn't get it, sorry
>>>>>>>
>>>>>> No, I didn't meant anything MWE related. I was talking of the new
>>>>>> builder infraststructure in Xtext.
>>>>>> It is just exactly what you have in mind. It listenes on resource
>>>>>> changes (is triggered on save), it computes the transtive hull of
>>>>>> affected resources, it validates the affected resources and it
>>>>>> provides two extension points:
>>>>>> 1) one to register EMF-based languages (they don't have to be Xtext
>>>>>> languages) (e.g. *.ecore, *.genmodel)
>>>>>> 2) one to register participants, which can do arbitrary work based
>>>>>> on the outcome of a build. (E.g. to start the generation of any
>>>>>> affected genmodels and epackages).
>>>>>>
>>>>>> I have blogged about the builder infrastructure in general:
>>>>>> http://blog.efftinge.de/2010/01/xtexts-new-builder-infrastru cture.html
>>>>>>
>>>>>>
>>>>>> The participant hook had been introduced with M5 and is demoed on
>>>>>> the new & noteworthy page.
>>>>>>
>>>>>> Cheers,
>>>>>> Sven
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Hasan
>>>>>>>
>>>>>>> Sven Efftinge wrote:
>>>>>>>
>>>>>>>
>>>>>>>> With Xtext M5 it is basically a matter of
>>>>>>>> a) implementing and registering IResourceServiceProvider for ecore
>>>>>>>> and
>>>>>>>> genmodel. This makes sure that ecore and genmodel are indexed. It
>>>>>>>> also
>>>>>>>> provides the needed hook to compute the transitive hull of
>>>>>>>> changes.
>>>>>>>>
>>>>>>>> b) implementing and registering IBuildParticipant.
>>>>>>>> This one get's a call after each build passed in the
>>>>>>>> IResourceDescription.Deltas. Based on that you'll be able to
>>>>>>>> trigger
>>>>>>>> code generation.
>>>>>>>>
>>>>>>>> There's a short video demonstrating the second hook in our n&n
>>>>>>>> document
>>>>>>>> see M5/ProjectBuilder
>>>>>>>> ( http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_not eworthy.php)
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Sven
>>>>>>>>
>>>>>>>> Hasan Ceylan schrieb:
>>>>>>>>
>>>>>>>>> Hello Sven,
>>>>>>>>>
>>>>>>>>> Would love to test with Xtext + EMF Index bench.
>>>>>>>>>
>>>>>>>>> Would you be so kind to give me directions to set up a
>>>>>>>>> development bench?
>>>>>>>>>
>>>>>>>>> Regards,
>>>>>>>>> Hasan
>>>>>>>>>
>>>>>>>>> Sven Efftinge wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Hi Hasan,
>>>>>>>>>>
>>>>>>>>>> how is this idea related to Xtext's builder infrastructure
>>>>>>>>>> and EMF
>>>>>>>>>> index? It seems to be a perfect match for what you want to
>>>>>>>>>> achieve.
>>>>>>>>>>
>>>>>>>>>> Cheers,
>>>>>>>>>> Sven
>>>>>>>>>>
>>>>>>>>>>
>>>>>>> <SNIP>
>>>>>>>
>>>>>>>
>>>>>>
>>>>
>>>
>>>
>
>
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #512776 is a reply to message #512751] Sun, 07 February 2010 14:38 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33216
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------050704030205090700090909
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

A separate builder project seems like a good thing. It seems closely
related to the Sphinx proposal as well, so it might make sense for it to
be part of that too...

Sven Krause wrote:
> Hi Hasan, Sven
>
> we have similar capabilities in the flowr project that became base of
> the new mtf eclipse project. Are you interested to join the project and
> bring your features into mtf? Or do you prefer to keep it standalone
> (@Ed, Sven)?
>
> Sven
> Am 06.02.2010 19:29, schrieb Hasan Ceylan:
>
>> Hello Sven,
>>
>> First you may find the proposal draft here:
>> http://ebm.batoo.org/index.php/Main_Page
>>
>> and, yes I definitely target a cycle with the dependencies resolved both in
>> the workspace and emf registry, and any change / error flag transitively
>> will affect the downstream models.
>>
>> Frankly I hadn't though about caching all the extension from the registry. I
>> should add that as an enhancement request.
>>
>> Hasan
>>
>> Sven Krause wrote:
>>
>>
>>
>>> Hi Hasan, Sven, Ed,
>>>
>>> wouldn't it make sense to have such an background build/gen job not only
>>> limited to ecore/gen/xtext? The most emf based models are registered
>>> with its package factory and the potential file extension. So it should
>>> be easily possible to identify each kind of model of model files within
>>> the marked projects and launch the generic validate/build build hook for
>>> them. The ecore build cycle (refresh genmodel, trigger codegen) is just
>>> a special case. PS:the change of a base model might/should trigger the
>>> dependent model build cycle too.
>>>
>>> Sven
>>>
>>> Am 05.02.2010 16:01, schrieb Sven Efftinge:
>>>
>>>
>>>> Yes, I think it definitely makes sense at some point.
>>>> Maybe we should work on extracting that functionality during the next
>>>> release train?
>>>>
>>>> Sven
>>>>
>>>> Ed Merks schrieb:
>>>>
>>>>
>>>>> Sven,
>>>>>
>>>>> This sounds cool too, and definitely related. I wonder if something
>>>>> of general utility like this makes sense to separate out from Xtext
>>>>> itself?
>>>>>
>>>>> Sven Efftinge wrote:
>>>>>
>>>>>
>>>>>> Hasan Ceylan schrieb:
>>>>>>
>>>>>>
>>>>>>> The aim of EMF Builder is to validate and generate java artifacts
>>>>>>> on ecore, xmi and genmodel based on changes on the resources.
>>>>>>> Basically automates what you would do when you have an ecore and a
>>>>>>> genodel:
>>>>>>> 1) Change the ecore
>>>>>>> 2) open genmodel
>>>>>>> 3) Issue generate all
>>>>>>>
>>>>>>> and does this with the dependencies considered (validates and
>>>>>>> generates the dependent models)
>>>>>>>
>>>>>>> XText does this automatically with the mwe runner. Are you
>>>>>>> suggesting integrating the xtext mwe into EMFBuilder so that the
>>>>>>> generation is automated? I just couldn't get it, sorry
>>>>>>>
>>>>>>>
>>>>>> No, I didn't meant anything MWE related. I was talking of the new
>>>>>> builder infraststructure in Xtext.
>>>>>> It is just exactly what you have in mind. It listenes on resource
>>>>>> changes (is triggered on save), it computes the transtive hull of
>>>>>> affected resources, it validates the affected resources and it
>>>>>> provides two extension points:
>>>>>> 1) one to register EMF-based languages (they don't have to be Xtext
>>>>>> languages) (e.g. *.ecore, *.genmodel)
>>>>>> 2) one to register participants, which can do arbitrary work based
>>>>>> on the outcome of a build. (E.g. to start the generation of any
>>>>>> affected genmodels and epackages).
>>>>>>
>>>>>> I have blogged about the builder infrastructure in general:
>>>>>> http://blog.efftinge.de/2010/01/xtexts-new-builder-infrastru cture.html
>>>>>>
>>>>>> The participant hook had been introduced with M5 and is demoed on
>>>>>> the new & noteworthy page.
>>>>>>
>>>>>> Cheers,
>>>>>> Sven
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Hasan
>>>>>>>
>>>>>>> Sven Efftinge wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> With Xtext M5 it is basically a matter of
>>>>>>>> a) implementing and registering IResourceServiceProvider for ecore
>>>>>>>> and
>>>>>>>> genmodel. This makes sure that ecore and genmodel are indexed. It
>>>>>>>> also
>>>>>>>> provides the needed hook to compute the transitive hull of changes.
>>>>>>>>
>>>>>>>> b) implementing and registering IBuildParticipant.
>>>>>>>> This one get's a call after each build passed in the
>>>>>>>> IResourceDescription.Deltas. Based on that you'll be able to trigger
>>>>>>>> code generation.
>>>>>>>>
>>>>>>>> There's a short video demonstrating the second hook in our n&n
>>>>>>>> document
>>>>>>>> see M5/ProjectBuilder
>>>>>>>>
>>>>>>>>
>>>>>>>>
>> ( http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_not eworthy.php)
>>
>>
>>>>>>>> Sven
>>>>>>>>
>>>>>>>> Hasan Ceylan schrieb:
>>>>>>>>
>>>>>>>>
>>>>>>>>> Hello Sven,
>>>>>>>>>
>>>>>>>>> Would love to test with Xtext + EMF Index bench.
>>>>>>>>>
>>>>>>>>> Would you be so kind to give me directions to set up a
>>>>>>>>> development bench?
>>>>>>>>>
>>>>>>>>> Regards,
>>>>>>>>> Hasan
>>>>>>>>>
>>>>>>>>> Sven Efftinge wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Hi Hasan,
>>>>>>>>>>
>>>>>>>>>> how is this idea related to Xtext's builder infrastructure and EMF
>>>>>>>>>> index? It seems to be a perfect match for what you want to achieve.
>>>>>>>>>>
>>>>>>>>>> Cheers,
>>>>>>>>>> Sven
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>> <SNIP>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>
>>
>
>

--------------050704030205090700090909
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
A separate builder project seems like a good thing.&nbsp; It seems closely
related to the Sphinx proposal as well, so it might make sense for it
to be part of that too...<br>
<br>
Sven Krause wrote:
<blockquote cite="mid:hkm1dc$1js$1@build.eclipse.org" type="cite">
<pre wrap="">Hi Hasan, Sven

we have similar capabilities in the flowr project that became base of
the new mtf eclipse project. Are you interested to join the project and
bring your features into mtf? Or do you prefer to keep it standalone
(@Ed, Sven)?

Sven
Am 06.02.2010 19:29, schrieb Hasan Ceylan:
</pre>
<blockquote type="cite">
<pre wrap="">Hello Sven,

First you may find the proposal draft here:
<a class="moz-txt-link-freetext" href="http://ebm.batoo.org/index.php/Main_Page">http://ebm.batoo.org/index.php/Main_Page</a>

and, yes I definitely target a cycle with the dependencies resolved both in
the workspace and emf registry, and any change / error flag transitively
will affect the downstream models.

Frankly I hadn't though about caching all the extension from the registry. I
should add that as an enhancement request.

Hasan

Sven Krause wrote:


</pre>
<blockquote type="cite">
<pre wrap="">Hi Hasan, Sven, Ed,

wouldn't it make sense to have such an background build/gen job not only
limited to ecore/gen/xtext? The most emf based models are registered
with its package factory and the potential file extension. So it should
be easily possible to identify each kind of model of model files within
the marked projects and launch the generic validate/build build hook for
them. The ecore build cycle (refresh genmodel, trigger codegen) is just
a special case. PS:the change of a base model might/should trigger the
dependent model build cycle too.

Sven

Am 05.02.2010 16:01, schrieb Sven Efftinge:

</pre>
<blockquote type="cite">
<pre wrap="">Yes, I think it definitely makes sense at some point.
Maybe we should work on extracting that functionality during the next
release train?

Sven

Ed Merks schrieb:

</pre>
<blockquote type="cite">
<pre wrap="">Sven,

This sounds cool too, and definitely related. I wonder if something
of general utility like this makes sense to separate out from Xtext
itself?

Sven Efftinge wrote:

</pre>
<blockquote type="cite">
<pre wrap="">Hasan Ceylan schrieb:

</pre>
<blockquote type="cite">
<pre wrap="">The aim of EMF Builder is to validate and generate java artifacts
on ecore, xmi and genmodel based on changes on the resources.
Basically automates what you would do when you have an ecore and a
genodel:
1) Change the ecore
2) open genmodel
3) Issue generate all

and does this with the dependencies considered (validates and
generates the dependent models)

XText does this automatically with the mwe runner. Are you
suggesting integrating the xtext mwe into EMFBuilder so that the
generation is automated? I just couldn't get it, sorry

</pre>
</blockquote>
<pre wrap="">No, I didn't meant anything MWE related. I was talking of the new
builder infraststructure in Xtext.
It is just exactly what you have in mind. It listenes on resource
changes (is triggered on save), it computes the transtive hull of
affected resources, it validates the affected resources and it
provides two extension points:
1) one to register EMF-based languages (they don't have to be Xtext
languages) (e.g. *.ecore, *.genmodel)
2) one to register participants, which can do arbitrary work based
on the outcome of a build. (E.g. to start the generation of any
affected genmodels and epackages).

I have blogged about the builder infrastructure in general:
<a class="moz-txt-link-freetext" href=" http://blog.efftinge.de/2010/01/xtexts-new-builder-infrastru cture.html"> http://blog.efftinge.de/2010/01/xtexts-new-builder-infrastru cture.html</a>

The participant hook had been introduced with M5 and is demoed on
the new &amp; noteworthy page.

Cheers,
Sven



</pre>
<blockquote type="cite">
<pre wrap="">Hasan

Sven Efftinge wrote:


</pre>
<blockquote type="cite">
<pre wrap="">With Xtext M5 it is basically a matter of
a) implementing and registering IResourceServiceProvider for ecore
and
genmodel. This makes sure that ecore and genmodel are indexed. It
also
provides the needed hook to compute the transitive hull of changes.

b) implementing and registering IBuildParticipant.
This one get's a call after each build passed in the
IResourceDescription.Deltas. Based on that you'll be able to trigger
code generation.

There's a short video demonstrating the second hook in our n&amp;n
document
see M5/ProjectBuilder


</pre>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
<pre wrap="">(<a class="moz-txt-link-freetext" href=" http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_not eworthy.php"> http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_not eworthy.php</a>)

</pre>
<blockquote type="cite">
<blockquote type="cite">
<blockquote type="cite">
<blockquote type="cite">
<blockquote type="cite">
<blockquote type="cite">
<pre wrap="">Sven

Hasan Ceylan schrieb:

</pre>
<blockquote type="cite">
<pre wrap="">Hello Sven,

Would love to test with Xtext + EMF Index bench.

Would you be so kind to give me directions to set up a
development bench?

Regards,
Hasan

Sven Efftinge wrote:


</pre>
<blockquote type="cite">
<pre wrap="">Hi Hasan,

how is this idea related to Xtext's builder infrastructure and EMF
index? It seems to be a perfect match for what you want to achieve.

Cheers,
Sven


</pre>
</blockquote>
</blockquote>
</blockquote>
<pre wrap="">&lt;SNIP&gt;


</pre>
</blockquote>
<pre wrap="">
</pre>
</blockquote>
</blockquote>
<pre wrap="">
</pre>
</blockquote>
</blockquote>
<pre wrap="">
</pre>
</blockquote>
<pre wrap=""><!---->
</pre>
</blockquote>
</body>
</html>

--------------050704030205090700090909--


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #512834 is a reply to message #512776] Mon, 08 February 2010 06:56 Go to previous messageGo to next message
Sven Efftinge is currently offline Sven EfftingeFriend
Messages: 1823
Registered: July 2009
Senior Member
I think it's clearly in the scope of the EMF Index project.
See http://www.eclipse.org/proposals/emf-index/

"""
Define APIs and implement components for specifying search scopes,
collecting and persisting index data, synchronization of index data with
model changes, and querying of model elements.
"""

The Sphinx project seems to have a rather wide scope. I think we should
tune its scope a bit, but that belongs to a different thread (and
newsgroup).

Cheers,
Sven

Ed Merks schrieb:
> A separate builder project seems like a good thing. It seems closely
> related to the Sphinx proposal as well, so it might make sense for it to
> be part of that too...
>
> Sven Krause wrote:
>> Hi Hasan, Sven
>>
>> we have similar capabilities in the flowr project that became base of
>> the new mtf eclipse project. Are you interested to join the project and
>> bring your features into mtf? Or do you prefer to keep it standalone
>> (@Ed, Sven)?
>>
>> Sven
>> Am 06.02.2010 19:29, schrieb Hasan Ceylan:
>>
>>> Hello Sven,
>>>
>>> First you may find the proposal draft here:
>>> http://ebm.batoo.org/index.php/Main_Page
>>>
>>> and, yes I definitely target a cycle with the dependencies resolved both in
>>> the workspace and emf registry, and any change / error flag transitively
>>> will affect the downstream models.
>>>
>>> Frankly I hadn't though about caching all the extension from the registry. I
>>> should add that as an enhancement request.
>>>
>>> Hasan
>>>
>>> Sven Krause wrote:
>>>
>>>
>>>
>>>> Hi Hasan, Sven, Ed,
>>>>
>>>> wouldn't it make sense to have such an background build/gen job not only
>>>> limited to ecore/gen/xtext? The most emf based models are registered
>>>> with its package factory and the potential file extension. So it should
>>>> be easily possible to identify each kind of model of model files within
>>>> the marked projects and launch the generic validate/build build hook for
>>>> them. The ecore build cycle (refresh genmodel, trigger codegen) is just
>>>> a special case. PS:the change of a base model might/should trigger the
>>>> dependent model build cycle too.
>>>>
>>>> Sven
>>>>
>>>> Am 05.02.2010 16:01, schrieb Sven Efftinge:
>>>>
>>>>
>>>>> Yes, I think it definitely makes sense at some point.
>>>>> Maybe we should work on extracting that functionality during the next
>>>>> release train?
>>>>>
>>>>> Sven
>>>>>
>>>>> Ed Merks schrieb:
>>>>>
>>>>>
>>>>>> Sven,
>>>>>>
>>>>>> This sounds cool too, and definitely related. I wonder if something
>>>>>> of general utility like this makes sense to separate out from Xtext
>>>>>> itself?
>>>>>>
>>>>>> Sven Efftinge wrote:
>>>>>>
>>>>>>
>>>>>>> Hasan Ceylan schrieb:
>>>>>>>
>>>>>>>
>>>>>>>> The aim of EMF Builder is to validate and generate java artifacts
>>>>>>>> on ecore, xmi and genmodel based on changes on the resources.
>>>>>>>> Basically automates what you would do when you have an ecore and a
>>>>>>>> genodel:
>>>>>>>> 1) Change the ecore
>>>>>>>> 2) open genmodel
>>>>>>>> 3) Issue generate all
>>>>>>>>
>>>>>>>> and does this with the dependencies considered (validates and
>>>>>>>> generates the dependent models)
>>>>>>>>
>>>>>>>> XText does this automatically with the mwe runner. Are you
>>>>>>>> suggesting integrating the xtext mwe into EMFBuilder so that the
>>>>>>>> generation is automated? I just couldn't get it, sorry
>>>>>>>>
>>>>>>>>
>>>>>>> No, I didn't meant anything MWE related. I was talking of the new
>>>>>>> builder infraststructure in Xtext.
>>>>>>> It is just exactly what you have in mind. It listenes on resource
>>>>>>> changes (is triggered on save), it computes the transtive hull of
>>>>>>> affected resources, it validates the affected resources and it
>>>>>>> provides two extension points:
>>>>>>> 1) one to register EMF-based languages (they don't have to be Xtext
>>>>>>> languages) (e.g. *.ecore, *.genmodel)
>>>>>>> 2) one to register participants, which can do arbitrary work based
>>>>>>> on the outcome of a build. (E.g. to start the generation of any
>>>>>>> affected genmodels and epackages).
>>>>>>>
>>>>>>> I have blogged about the builder infrastructure in general:
>>>>>>> http://blog.efftinge.de/2010/01/xtexts-new-builder-infrastru cture.html
>>>>>>>
>>>>>>> The participant hook had been introduced with M5 and is demoed on
>>>>>>> the new & noteworthy page.
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Sven
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> Hasan
>>>>>>>>
>>>>>>>> Sven Efftinge wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>> With Xtext M5 it is basically a matter of
>>>>>>>>> a) implementing and registering IResourceServiceProvider for ecore
>>>>>>>>> and
>>>>>>>>> genmodel. This makes sure that ecore and genmodel are indexed. It
>>>>>>>>> also
>>>>>>>>> provides the needed hook to compute the transitive hull of changes.
>>>>>>>>>
>>>>>>>>> b) implementing and registering IBuildParticipant.
>>>>>>>>> This one get's a call after each build passed in the
>>>>>>>>> IResourceDescription.Deltas. Based on that you'll be able to trigger
>>>>>>>>> code generation.
>>>>>>>>>
>>>>>>>>> There's a short video demonstrating the second hook in our n&n
>>>>>>>>> document
>>>>>>>>> see M5/ProjectBuilder
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>> ( http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_not eworthy.php)
>>>
>>>
>>>>>>>>> Sven
>>>>>>>>>
>>>>>>>>> Hasan Ceylan schrieb:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Hello Sven,
>>>>>>>>>>
>>>>>>>>>> Would love to test with Xtext + EMF Index bench.
>>>>>>>>>>
>>>>>>>>>> Would you be so kind to give me directions to set up a
>>>>>>>>>> development bench?
>>>>>>>>>>
>>>>>>>>>> Regards,
>>>>>>>>>> Hasan
>>>>>>>>>>
>>>>>>>>>> Sven Efftinge wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> Hi Hasan,
>>>>>>>>>>>
>>>>>>>>>>> how is this idea related to Xtext's builder infrastructure and EMF
>>>>>>>>>>> index? It seems to be a perfect match for what you want to achieve.
>>>>>>>>>>>
>>>>>>>>>>> Cheers,
>>>>>>>>>>> Sven
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>> <SNIP>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>
>>>
>>
>>


--
Need professional support for Xtext and EMF?
Go to: http://xtext.itemis.com
Twitter : @svenefftinge
Blog : blog.efftinge.de
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #512835 is a reply to message #512753] Mon, 08 February 2010 06:57 Go to previous messageGo to next message
Sven Efftinge is currently offline Sven EfftingeFriend
Messages: 1823
Registered: July 2009
Senior Member
Sven Krause schrieb:
> Hi Sven,
>
> doesn't put this construct extra effort in allowing trigger builds on
> any model or did use this explicit as filter?

Sorry, I don't understand what you're asking.

Sven

--
Need professional support for Xtext and EMF?
Go to: http://xtext.itemis.com
Twitter : @svenefftinge
Blog : blog.efftinge.de
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #512836 is a reply to message #512751] Mon, 08 February 2010 06:58 Go to previous messageGo to next message
Sven Efftinge is currently offline Sven EfftingeFriend
Messages: 1823
Registered: July 2009
Senior Member
See my other reply in this thread.
I think such a functionality belongs to the EMF Index project.

Sven

Sven Krause schrieb:
> Hi Hasan, Sven
>
> we have similar capabilities in the flowr project that became base of
> the new mtf eclipse project. Are you interested to join the project and
> bring your features into mtf? Or do you prefer to keep it standalone
> (@Ed, Sven)?
>
> Sven
> Am 06.02.2010 19:29, schrieb Hasan Ceylan:
>> Hello Sven,
>>
>> First you may find the proposal draft here:
>> http://ebm.batoo.org/index.php/Main_Page
>>
>> and, yes I definitely target a cycle with the dependencies resolved both in
>> the workspace and emf registry, and any change / error flag transitively
>> will affect the downstream models.
>>
>> Frankly I hadn't though about caching all the extension from the registry. I
>> should add that as an enhancement request.
>>
>> Hasan
>>
>> Sven Krause wrote:
>>
>>
>>> Hi Hasan, Sven, Ed,
>>>
>>> wouldn't it make sense to have such an background build/gen job not only
>>> limited to ecore/gen/xtext? The most emf based models are registered
>>> with its package factory and the potential file extension. So it should
>>> be easily possible to identify each kind of model of model files within
>>> the marked projects and launch the generic validate/build build hook for
>>> them. The ecore build cycle (refresh genmodel, trigger codegen) is just
>>> a special case. PS:the change of a base model might/should trigger the
>>> dependent model build cycle too.
>>>
>>> Sven
>>>
>>> Am 05.02.2010 16:01, schrieb Sven Efftinge:
>>>
>>>> Yes, I think it definitely makes sense at some point.
>>>> Maybe we should work on extracting that functionality during the next
>>>> release train?
>>>>
>>>> Sven
>>>>
>>>> Ed Merks schrieb:
>>>>
>>>>> Sven,
>>>>>
>>>>> This sounds cool too, and definitely related. I wonder if something
>>>>> of general utility like this makes sense to separate out from Xtext
>>>>> itself?
>>>>>
>>>>> Sven Efftinge wrote:
>>>>>
>>>>>> Hasan Ceylan schrieb:
>>>>>>
>>>>>>> The aim of EMF Builder is to validate and generate java artifacts
>>>>>>> on ecore, xmi and genmodel based on changes on the resources.
>>>>>>> Basically automates what you would do when you have an ecore and a
>>>>>>> genodel:
>>>>>>> 1) Change the ecore
>>>>>>> 2) open genmodel
>>>>>>> 3) Issue generate all
>>>>>>>
>>>>>>> and does this with the dependencies considered (validates and
>>>>>>> generates the dependent models)
>>>>>>>
>>>>>>> XText does this automatically with the mwe runner. Are you
>>>>>>> suggesting integrating the xtext mwe into EMFBuilder so that the
>>>>>>> generation is automated? I just couldn't get it, sorry
>>>>>>>
>>>>>> No, I didn't meant anything MWE related. I was talking of the new
>>>>>> builder infraststructure in Xtext.
>>>>>> It is just exactly what you have in mind. It listenes on resource
>>>>>> changes (is triggered on save), it computes the transtive hull of
>>>>>> affected resources, it validates the affected resources and it
>>>>>> provides two extension points:
>>>>>> 1) one to register EMF-based languages (they don't have to be Xtext
>>>>>> languages) (e.g. *.ecore, *.genmodel)
>>>>>> 2) one to register participants, which can do arbitrary work based
>>>>>> on the outcome of a build. (E.g. to start the generation of any
>>>>>> affected genmodels and epackages).
>>>>>>
>>>>>> I have blogged about the builder infrastructure in general:
>>>>>> http://blog.efftinge.de/2010/01/xtexts-new-builder-infrastru cture.html
>>>>>>
>>>>>> The participant hook had been introduced with M5 and is demoed on
>>>>>> the new & noteworthy page.
>>>>>>
>>>>>> Cheers,
>>>>>> Sven
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Hasan
>>>>>>>
>>>>>>> Sven Efftinge wrote:
>>>>>>>
>>>>>>>
>>>>>>>> With Xtext M5 it is basically a matter of
>>>>>>>> a) implementing and registering IResourceServiceProvider for ecore
>>>>>>>> and
>>>>>>>> genmodel. This makes sure that ecore and genmodel are indexed. It
>>>>>>>> also
>>>>>>>> provides the needed hook to compute the transitive hull of changes.
>>>>>>>>
>>>>>>>> b) implementing and registering IBuildParticipant.
>>>>>>>> This one get's a call after each build passed in the
>>>>>>>> IResourceDescription.Deltas. Based on that you'll be able to trigger
>>>>>>>> code generation.
>>>>>>>>
>>>>>>>> There's a short video demonstrating the second hook in our n&n
>>>>>>>> document
>>>>>>>> see M5/ProjectBuilder
>>>>>>>>
>>>>>>>>
>> ( http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_not eworthy.php)
>>
>>>>>>>> Sven
>>>>>>>>
>>>>>>>> Hasan Ceylan schrieb:
>>>>>>>>
>>>>>>>>> Hello Sven,
>>>>>>>>>
>>>>>>>>> Would love to test with Xtext + EMF Index bench.
>>>>>>>>>
>>>>>>>>> Would you be so kind to give me directions to set up a
>>>>>>>>> development bench?
>>>>>>>>>
>>>>>>>>> Regards,
>>>>>>>>> Hasan
>>>>>>>>>
>>>>>>>>> Sven Efftinge wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Hi Hasan,
>>>>>>>>>>
>>>>>>>>>> how is this idea related to Xtext's builder infrastructure and EMF
>>>>>>>>>> index? It seems to be a perfect match for what you want to achieve.
>>>>>>>>>>
>>>>>>>>>> Cheers,
>>>>>>>>>> Sven
>>>>>>>>>>
>>>>>>>>>>
>>>>>>> <SNIP>
>>>>>>>
>>>>>>>
>>>>>>
>>>>
>>
>


--
Need professional support for Xtext and EMF?
Go to: http://xtext.itemis.com
Twitter : @svenefftinge
Blog : blog.efftinge.de
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #512850 is a reply to message #512835] Mon, 08 February 2010 08:14 Go to previous messageGo to next message
Sven Krause is currently offline Sven KrauseFriend
Messages: 119
Registered: July 2009
Senior Member
Hi Sven,

Sorry for confusing you. I meant: the user needs to register its model
explicite at the service to be handled during the build. The question
was: is this extra step a feature (the user needs to know what he is
doing) or would it be more convenient to build all known models per
default? Are you afraid that the build performance decreases when
bulding/validating/indexing/whatever all models within the scope?

Sven

Am 08.02.2010 07:57, schrieb Sven Efftinge:
> Sven Krause schrieb:
>> Hi Sven,
>>
>> doesn't put this construct extra effort in allowing trigger builds on
>> any model or did use this explicit as filter?
>
> Sorry, I don't understand what you're asking.
>
> Sven
>
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #512872 is a reply to message #512850] Mon, 08 February 2010 09:24 Go to previous messageGo to next message
Sven Efftinge is currently offline Sven EfftingeFriend
Messages: 1823
Registered: July 2009
Senior Member
One doesn't register by model, but by language (ie resource factory).
However, the resource factory alone does not provide the needed services
to index and validate resources. That's why we have introduced an
additional registry/extension point.
Also this decouples building and indexing from existence of a
resource.factory. Which as you suspected can be a performance problem.
(We actually already faced such a situation in a real project we're
supporting)

Cheers,
Sven

Sven Krause schrieb:
> Hi Sven,
>
> Sorry for confusing you. I meant: the user needs to register its model
> explicite at the service to be handled during the build. The question
> was: is this extra step a feature (the user needs to know what he is
> doing) or would it be more convenient to build all known models per
> default? Are you afraid that the build performance decreases when
> bulding/validating/indexing/whatever all models within the scope?
>
> Sven
>
> Am 08.02.2010 07:57, schrieb Sven Efftinge:
>> Sven Krause schrieb:
>>> Hi Sven,
>>>
>>> doesn't put this construct extra effort in allowing trigger builds on
>>> any model or did use this explicit as filter?
>>
>> Sorry, I don't understand what you're asking.
>>
>> Sven
>>
>


--
Need professional support for Xtext and EMF?
Go to: http://xtext.itemis.com
Twitter : @svenefftinge
Blog : blog.efftinge.de
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #512925 is a reply to message #512836] Mon, 08 February 2010 11:33 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33216
Registered: July 2009
Senior Member
Sven,

Yes, I'd prefer to see the "generic" indexing be part of the index
project. Do you think support for triggered activities such as builds
or validation should be part of the index project as well?


Sven Efftinge wrote:
> See my other reply in this thread.
> I think such a functionality belongs to the EMF Index project.
>
> Sven
>
> Sven Krause schrieb:
>> Hi Hasan, Sven
>>
>> we have similar capabilities in the flowr project that became base of
>> the new mtf eclipse project. Are you interested to join the project and
>> bring your features into mtf? Or do you prefer to keep it standalone
>> (@Ed, Sven)?
>>
>> Sven
>> Am 06.02.2010 19:29, schrieb Hasan Ceylan:
>>> Hello Sven,
>>>
>>> First you may find the proposal draft here:
>>> http://ebm.batoo.org/index.php/Main_Page
>>>
>>> and, yes I definitely target a cycle with the dependencies resolved
>>> both in the workspace and emf registry, and any change / error flag
>>> transitively will affect the downstream models.
>>>
>>> Frankly I hadn't though about caching all the extension from the
>>> registry. I should add that as an enhancement request.
>>>
>>> Hasan
>>>
>>> Sven Krause wrote:
>>>
>>>
>>>> Hi Hasan, Sven, Ed,
>>>>
>>>> wouldn't it make sense to have such an background build/gen job not
>>>> only
>>>> limited to ecore/gen/xtext? The most emf based models are registered
>>>> with its package factory and the potential file extension. So it
>>>> should
>>>> be easily possible to identify each kind of model of model files
>>>> within
>>>> the marked projects and launch the generic validate/build build
>>>> hook for
>>>> them. The ecore build cycle (refresh genmodel, trigger codegen) is
>>>> just
>>>> a special case. PS:the change of a base model might/should trigger the
>>>> dependent model build cycle too.
>>>>
>>>> Sven
>>>>
>>>> Am 05.02.2010 16:01, schrieb Sven Efftinge:
>>>>
>>>>> Yes, I think it definitely makes sense at some point.
>>>>> Maybe we should work on extracting that functionality during the next
>>>>> release train?
>>>>>
>>>>> Sven
>>>>>
>>>>> Ed Merks schrieb:
>>>>>
>>>>>> Sven,
>>>>>>
>>>>>> This sounds cool too, and definitely related. I wonder if something
>>>>>> of general utility like this makes sense to separate out from Xtext
>>>>>> itself?
>>>>>>
>>>>>> Sven Efftinge wrote:
>>>>>>
>>>>>>> Hasan Ceylan schrieb:
>>>>>>>
>>>>>>>> The aim of EMF Builder is to validate and generate java artifacts
>>>>>>>> on ecore, xmi and genmodel based on changes on the resources.
>>>>>>>> Basically automates what you would do when you have an ecore and a
>>>>>>>> genodel:
>>>>>>>> 1) Change the ecore
>>>>>>>> 2) open genmodel
>>>>>>>> 3) Issue generate all
>>>>>>>>
>>>>>>>> and does this with the dependencies considered (validates and
>>>>>>>> generates the dependent models)
>>>>>>>>
>>>>>>>> XText does this automatically with the mwe runner. Are you
>>>>>>>> suggesting integrating the xtext mwe into EMFBuilder so that the
>>>>>>>> generation is automated? I just couldn't get it, sorry
>>>>>>>>
>>>>>>> No, I didn't meant anything MWE related. I was talking of the new
>>>>>>> builder infraststructure in Xtext.
>>>>>>> It is just exactly what you have in mind. It listenes on resource
>>>>>>> changes (is triggered on save), it computes the transtive hull of
>>>>>>> affected resources, it validates the affected resources and it
>>>>>>> provides two extension points:
>>>>>>> 1) one to register EMF-based languages (they don't have to be Xtext
>>>>>>> languages) (e.g. *.ecore, *.genmodel)
>>>>>>> 2) one to register participants, which can do arbitrary work based
>>>>>>> on the outcome of a build. (E.g. to start the generation of any
>>>>>>> affected genmodels and epackages).
>>>>>>>
>>>>>>> I have blogged about the builder infrastructure in general:
>>>>>>> http://blog.efftinge.de/2010/01/xtexts-new-builder-infrastru cture.html
>>>>>>>
>>>>>>>
>>>>>>> The participant hook had been introduced with M5 and is demoed on
>>>>>>> the new & noteworthy page.
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Sven
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> Hasan
>>>>>>>>
>>>>>>>> Sven Efftinge wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>> With Xtext M5 it is basically a matter of
>>>>>>>>> a) implementing and registering IResourceServiceProvider for
>>>>>>>>> ecore
>>>>>>>>> and
>>>>>>>>> genmodel. This makes sure that ecore and genmodel are indexed. It
>>>>>>>>> also
>>>>>>>>> provides the needed hook to compute the transitive hull of
>>>>>>>>> changes.
>>>>>>>>>
>>>>>>>>> b) implementing and registering IBuildParticipant.
>>>>>>>>> This one get's a call after each build passed in the
>>>>>>>>> IResourceDescription.Deltas. Based on that you'll be able to
>>>>>>>>> trigger
>>>>>>>>> code generation.
>>>>>>>>>
>>>>>>>>> There's a short video demonstrating the second hook in our n&n
>>>>>>>>> document
>>>>>>>>> see M5/ProjectBuilder
>>>>>>>>>
>>>>>>>>>
>>> ( http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_not eworthy.php)
>>>
>>>
>>>>>>>>> Sven
>>>>>>>>>
>>>>>>>>> Hasan Ceylan schrieb:
>>>>>>>>>
>>>>>>>>>> Hello Sven,
>>>>>>>>>>
>>>>>>>>>> Would love to test with Xtext + EMF Index bench.
>>>>>>>>>>
>>>>>>>>>> Would you be so kind to give me directions to set up a
>>>>>>>>>> development bench?
>>>>>>>>>>
>>>>>>>>>> Regards,
>>>>>>>>>> Hasan
>>>>>>>>>>
>>>>>>>>>> Sven Efftinge wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> Hi Hasan,
>>>>>>>>>>>
>>>>>>>>>>> how is this idea related to Xtext's builder infrastructure
>>>>>>>>>>> and EMF
>>>>>>>>>>> index? It seems to be a perfect match for what you want to
>>>>>>>>>>> achieve.
>>>>>>>>>>>
>>>>>>>>>>> Cheers,
>>>>>>>>>>> Sven
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>> <SNIP>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>
>>>
>>
>
>


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #512963 is a reply to message #512925] Mon, 08 February 2010 13:00 Go to previous messageGo to next message
Sven Efftinge is currently offline Sven EfftingeFriend
Messages: 1823
Registered: July 2009
Senior Member
Ed Merks schrieb:
> Sven,
>
> Yes, I'd prefer to see the "generic" indexing be part of the index
> project. Do you think support for triggered activities such as builds
> or validation should be part of the index project as well?

Yes, I think so, because it is technically hard to separate between
these things. A central mechanism which keeps the workspace in sync with
the index, has everything we need to do validation and further post
processing (like triggering code generation).

The EMF index should of course *not* provide language specific
implementations. For instance a GenModel execution for changes in ecore
or genmodels, like Hassan proposed, clearly belongs elsewhere (e.g.
EcoreTools).

So far, all that stuff is located in Xtext's repository.

Sven

--
Need professional support for Xtext and EMF?
Go to: http://xtext.itemis.com
Twitter : @svenefftinge
Blog : blog.efftinge.de
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #512984 is a reply to message #512963] Mon, 08 February 2010 13:51 Go to previous messageGo to next message
Hasan Ceylan is currently offline Hasan CeylanFriend
Messages: 198
Registered: July 2009
Senior Member
Sven & Ed,

I have posted the beta release of EBM. I would appricate you comments and
reviews.

Having not aware of the EMF Index project, I developed an internal builder
state and dependency model (SDK has the code). We should revise that part if
necessary, by the way what is the state of EMF Index project?

Hasan

Sven Efftinge wrote:

> Ed Merks schrieb:
>> Sven,
>>
>> Yes, I'd prefer to see the "generic" indexing be part of the index
>> project. Do you think support for triggered activities such as builds
>> or validation should be part of the index project as well?
>
> Yes, I think so, because it is technically hard to separate between
> these things. A central mechanism which keeps the workspace in sync with
> the index, has everything we need to do validation and further post
> processing (like triggering code generation).
>
> The EMF index should of course *not* provide language specific
> implementations. For instance a GenModel execution for changes in ecore
> or genmodels, like Hassan proposed, clearly belongs elsewhere (e.g.
> EcoreTools).
>
> So far, all that stuff is located in Xtext's repository.
>
> Sven
>
Re: An appeal for modeling community review to new "EMF Build Manager Project" Proposal [message #513123 is a reply to message #512776] Mon, 08 February 2010 23:55 Go to previous message
Yves YANG is currently offline Yves YANGFriend
Messages: 688
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.

------=_NextPart_000_0036_01CAA922.83FABBB0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

It seems EGF has this capability. It is really a task orchestration =
system. We are investigating to use it in PMF.

Regards
Yves YANG
"Ed Merks" <Ed.Merks@gmail.com> wrote in message =
news:hkmj9d$kms$2@build.eclipse.org...
A separate builder project seems like a good thing. It seems closely =
related to the Sphinx proposal as well, so it might make sense for it to =
be part of that too...

Sven Krause wrote:=20
Hi Hasan, Sven

we have similar capabilities in the flowr project that became base of
the new mtf eclipse project. Are you interested to join the project and
bring your features into mtf? Or do you prefer to keep it standalone
(@Ed, Sven)?

Sven
Am 06.02.2010 19:29, schrieb Hasan Ceylan:
Hello Sven,

First you may find the proposal draft here:
http://ebm.batoo.org/index.php/Main_Page

and, yes I definitely target a cycle with the dependencies resolved both =
in=20
the workspace and emf registry, and any change / error flag transitively =

will affect the downstream models.

Frankly I hadn't though about caching all the extension from the =
registry. I=20
should add that as an enhancement request.

Hasan

Sven Krause wrote:

=20
Hi Hasan, Sven, Ed,

wouldn't it make sense to have such an background build/gen job not only
limited to ecore/gen/xtext? The most emf based models are registered
with its package factory and the potential file extension. So it should
be easily possible to identify each kind of model of model files within
the marked projects and launch the generic validate/build build hook for
them. The ecore build cycle (refresh genmodel, trigger codegen) is just
a special case. PS:the change of a base model might/should trigger the
dependent model build cycle too.

Sven

Am 05.02.2010 16:01, schrieb Sven Efftinge:
=20
Yes, I think it definitely makes sense at some point.
Maybe we should work on extracting that functionality during the next
release train?

Sven

Ed Merks schrieb:
=20
Sven,

This sounds cool too, and definitely related. I wonder if something
of general utility like this makes sense to separate out from Xtext
itself?
=20
Sven Efftinge wrote:
=20
Hasan Ceylan schrieb:
=20
The aim of EMF Builder is to validate and generate java =
artifacts
on ecore, xmi and genmodel based on changes on the resources.
Basically automates what you would do when you have an ecore and a
genodel:
1) Change the ecore
2) open genmodel
3) Issue generate all

and does this with the dependencies considered (validates and
generates the dependent models)

XText does this automatically with the mwe runner. Are you
suggesting integrating the xtext mwe into EMFBuilder so that the
generation is automated? I just couldn't get it, sorry
=20
No, I didn't meant anything MWE related. I was talking of =
the new
builder infraststructure in Xtext.
It is just exactly what you have in mind. It listenes on resource
changes (is triggered on save), it computes the transtive hull of
affected resources, it validates the affected resources and it
provides two extension points:
1) one to register EMF-based languages (they don't have to be Xtext
languages) (e.g. *.ecore, *.genmodel)
2) one to register participants, which can do arbitrary work based
on the outcome of a build. (E.g. to start the generation of any
affected genmodels and epackages).

I have blogged about the builder infrastructure in general:
http://blog.efftinge.de/2010/01/xtexts-new-builder-infrastru cture.html

The participant hook had been introduced with M5 and is demoed on
the new & noteworthy page.

Cheers,
Sven


=20
Hasan

Sven Efftinge wrote:

=20
With Xtext M5 it is basically a matter of
a) implementing and registering IResourceServiceProvider for ecore
and
genmodel. This makes sure that ecore and genmodel are indexed. It
also
provides the needed hook to compute the transitive hull of changes.

b) implementing and registering IBuildParticipant.
This one get's a call after each build passed in the
IResourceDescription.Deltas. Based on that you'll be able to trigger
code generation.

There's a short video demonstrating the second hook in our n&n
document
see M5/ProjectBuilder

=20
=
( http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_not eworthy.php)=

=20
Sven

Hasan Ceylan schrieb:
=20
Hello Sven,

Would love to test with Xtext + EMF Index bench.

Would you be so kind to give me directions to set up a
development bench?

Regards,
Hasan

Sven Efftinge wrote:

=20
Hi Hasan,

how is this idea related to Xtext's builder infrastructure and EMF
index? It seems to be a perfect match for what you want to achieve.

Cheers,
Sven

=20
<SNIP>

=20
=20
=20
=20
=20

------=_NextPart_000_0036_01CAA922.83FABBB0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3Dtext/html;charset=3DISO-8859-1 =
http-equiv=3DContent-Type>
<META name=3DGENERATOR content=3D"MSHTML 8.00.6001.18702">
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff text=3D#000000>
<DIV><FONT size=3D2 face=3DArial>It seems EGF has this capability. It is =
really a=20
task orchestration system.&nbsp;We are investigating to use it in=20
PMF.</FONT></DIV>
<DIV><FONT size=3D2 face=3DArial></FONT>&nbsp;</DIV>
<DIV><FONT size=3D2 face=3DArial>Regards</FONT></DIV>
<DIV><FONT size=3D2 face=3DArial>Yves YANG</FONT></DIV>
<BLOCKQUOTE=20
style=3D"BORDER-LEFT: #000000 2px solid; PADDING-LEFT: 5px; =
PADDING-RIGHT: 0px; MARGIN-LEFT: 5px; MARGIN-RIGHT: 0px"=20
dir=3Dltr>
<DIV>"Ed Merks" &lt;<A=20
href=3D"mailto:Ed.Merks@gmail.com">Ed.Merks@gmail.com</A>&gt; wrote in =
message=20
<A=20
=
href=3D"news:hkmj9d$kms$2@build.eclipse.org">news:hkmj9d$kms$2@build.ecli=
pse.org</A>...</DIV>A=20
separate builder project seems like a good thing.&nbsp; It seems =
closely=20
related to the Sphinx proposal as well, so it might make sense for it =
to be=20
part of that too...<BR><BR>Sven Krause wrote:=20
<BLOCKQUOTE cite=3Dmid:hkm1dc$1js$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D"">Hi Hasan, Sven

we have similar capabilities in the flowr project that became base of
the new mtf eclipse project. Are you interested to join the project and
bring your features into mtf? Or do you prefer to keep it standalone
(@Ed, Sven)?

Sven
Am 06.02.2010 19:29, schrieb Hasan Ceylan:
</PRE>
<BLOCKQUOTE type=3D"cite"><PRE wrap=3D"">Hello Sven,

First you may find the proposal draft here:
<A class=3Dmoz-txt-link-freetext =
href=3D"http://ebm.batoo.org/index.php/Main_Page">http://ebm.batoo.org/in=
dex.php/Main_Page</A>

and, yes I definitely target a cycle with the dependencies resolved both =
in=20
the workspace and emf registry, and any change / error flag transitively =

will affect the downstream models.

Frankly I hadn't though about caching all the extension from the =
registry. I=20
should add that as an enhancement request.

Hasan

Sven Krause wrote:

=20
</PRE>
<BLOCKQUOTE type=3D"cite"><PRE wrap=3D"">Hi Hasan, Sven, Ed,

wouldn't it make sense to have such an background build/gen job not only
limited to ecore/gen/xtext? The most emf based models are registered
with its package factory and the potential file extension. So it should
be easily possible to identify each kind of model of model files within
the marked projects and launch the generic validate/build build hook for
them. The ecore build cycle (refresh genmodel, trigger codegen) is just
a special case. PS:the change of a base model might/should trigger the
dependent model build cycle too.

Sven

Am 05.02.2010 16:01, schrieb Sven Efftinge:
=20
</PRE>
<BLOCKQUOTE type=3D"cite"><PRE wrap=3D"">Yes, I think it =
definitely makes sense at some point.
Maybe we should work on extracting that functionality during the next
release train?

Sven

Ed Merks schrieb:
=20
</PRE>
<BLOCKQUOTE type=3D"cite"><PRE wrap=3D"">Sven,

This sounds cool too, and definitely related. I wonder if something
of general utility like this makes sense to separate out from Xtext
itself?
=20
Sven Efftinge wrote:
=20
</PRE>
<BLOCKQUOTE type=3D"cite"><PRE wrap=3D"">Hasan Ceylan =
schrieb:
=20
</PRE>
<BLOCKQUOTE type=3D"cite"><PRE wrap=3D"">The aim of EMF =
Builder is to validate and generate java artifacts
on ecore, xmi and genmodel based on changes on the resources.
Basically automates what you would do when you have an ecore and a
genodel:
1) Change the ecore
2) open genmodel
3) Issue generate all

and does this with the dependencies considered (validates and
generates the dependent models)

XText does this automatically with the mwe runner. Are you
suggesting integrating the xtext mwe into EMFBuilder so that the
generation is automated? I just couldn't get it, sorry
=20
</PRE></BLOCKQUOTE><PRE wrap=3D"">No, I didn't meant =
anything MWE related. I was talking of the new
builder infraststructure in Xtext.
It is just exactly what you have in mind. It listenes on resource
changes (is triggered on save), it computes the transtive hull of
affected resources, it validates the affected resources and it
provides two extension points:
1) one to register EMF-based languages (they don't have to be Xtext
languages) (e.g. *.ecore, *.genmodel)
2) one to register participants, which can do arbitrary work based
on the outcome of a build. (E.g. to start the generation of any
affected genmodels and epackages).

I have blogged about the builder infrastructure in general:
<A class=3Dmoz-txt-link-freetext =
href=3D" http://blog.efftinge.de/2010/01/xtexts-new-builder-infrastru cture=
..html"> http://blog.efftinge.de/2010/01/xtexts-new-builder-infrastru cture.=
html</A>

The participant hook had been introduced with M5 and is demoed on
the new &amp; noteworthy page.

Cheers,
Sven


=20
</PRE>
<BLOCKQUOTE type=3D"cite"><PRE wrap=3D"">Hasan

Sven Efftinge wrote:

=20
</PRE>
<BLOCKQUOTE type=3D"cite"><PRE wrap=3D"">With Xtext M5 =
it is basically a matter of
a) implementing and registering IResourceServiceProvider for ecore
and
genmodel. This makes sure that ecore and genmodel are indexed. It
also
provides the needed hook to compute the transitive hull of changes.

b) implementing and registering IBuildParticipant.
This one get's a call after each build passed in the
IResourceDescription.Deltas. Based on that you'll be able to trigger
code generation.

There's a short video demonstrating the second hook in our n&amp;n
document
see M5/ProjectBuilder

=20
=
</PRE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE ></BLOCKQUOTE></=
BLOCKQUOTE><PRE wrap=3D"">(<A class=3Dmoz-txt-link-freetext =
href=3D" http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_not ewort=
hy.php"> http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_not ewort=
hy.php</A>)
=20
</PRE>
<BLOCKQUOTE type=3D"cite">
<BLOCKQUOTE type=3D"cite">
<BLOCKQUOTE type=3D"cite">
<BLOCKQUOTE type=3D"cite">
<BLOCKQUOTE type=3D"cite">
<BLOCKQUOTE type=3D"cite"><PRE wrap=3D"">Sven

Hasan Ceylan schrieb:
=20
</PRE>
<BLOCKQUOTE type=3D"cite"><PRE wrap=3D"">Hello Sven,

Would love to test with Xtext + EMF Index bench.

Would you be so kind to give me directions to set up a
development bench?

Regards,
Hasan

Sven Efftinge wrote:

=20
</PRE>
<BLOCKQUOTE type=3D"cite"><PRE wrap=3D"">Hi Hasan,

how is this idea related to Xtext's builder infrastructure and EMF
index? It seems to be a perfect match for what you want to achieve.

Cheers,
Sven

=20
</PRE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE><PRE =
wrap=3D"">&lt;SNIP&gt;

=20
</PRE></BLOCKQUOTE><PRE wrap=3D""> =20
</PRE></BLOCKQUOTE></BLOCKQUOTE><PRE wrap=3D""> =20
</PRE></BLOCKQUOTE></BLOCKQUOTE><PRE wrap=3D""> =20
</PRE></BLOCKQUOTE><PRE wrap=3D""><!---->
</PRE></BLOCKQUOTE></BLOCKQUOTE></BODY></HTML>

------=_NextPart_000_0036_01CAA922.83FABBB0--
Previous Topic:Reference to EObject
Next Topic:[EMF CDO] Undo adding first object to a list throws ArrayIndexOutOfBoundsException
Goto Forum:
  


Current Time: Wed Sep 18 21:51:04 GMT 2024

Powered by FUDForum. Page generated in 0.07369 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top