{"id":1080,"date":"2013-01-10T23:57:07","date_gmt":"2013-01-10T21:57:07","guid":{"rendered":"http:\/\/hasselba.ch\/blog\/?p=1080"},"modified":"2013-01-11T00:05:09","modified_gmt":"2013-01-10T22:05:09","slug":"quick-n-dirty-import-ssjs-libraries-with-dxl","status":"publish","type":"post","link":"https:\/\/hasselba.ch\/blog\/?p=1080","title":{"rendered":"Quick-n-Dirty: Import SSJS libraries with DXL"},"content":{"rendered":"<p>In the last time I have developed different techniques for manipulating the design elements of XPages applications. While I am still working on a way for manipulating the localization files, I was playing a little bit with DXL imports.<\/p>\n<p>Here comes a Java class to import a SSJS library with DXL to a database. It allows to create a new library directly from the browser:<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJQAAACLCAIAAAAI3ifNAAAGXUlEQVR4nO2d22scVRzHfyolYmxr8M+oiIIgipcipi9aH7zQbGy9UBWTgBS1TZsoLAEhEtBcSBSVVXD71NWtWe2aJhuCSNX2QbAKIvpgH5INalBBykJ2x4dJtrNnzjlz5rIz89t+PwzlzLn8zm\/ns3O6k7R7aMXBIxOfffT9P29\/s3F0\/tc7B958ZvbLt879cWKxemyx+urZtSPl1aMLa6PL6\/aRyX234oKINDW0jdDkrGzWkwNVBOnY5nD9pEIf92tpsnjynZO9PUsPdP0ytHttpGfteM+lkZtXR3t+f2X3b0O7Lh3Z+fPL3Yv9XZ9Oj0qHUyuqyyLNSmgSYzqrHh7\/5N3zG5Pfbox\/\/efsudW5C39ll9dfr6y\/VlkfqVSHz64dX6oOL1WHl6rHFqv9H57XvOAO4703Tszec1Pp\/uu+6u26+NgNPz7RfbH\/xp+e2vnDk9cvP9p16qHuyZHB+LMi58nzM6cPzpw5NLvQP1N+em4hM13OzJQzM+W+6XLfdPnAdPnA1JnH7WPy8+fmvog\/3aSYmJgYyPRl9\/R8cMeO03uvmd9HpX0033vtqQd3TNy669n9+8fHx+PPipwnpVKpUCjk8\/mPteTz+UKhUCqV4k83KYrFYi6XGxsbe+nQwRfvvWvw9lsGb9vzwn13D2T6stlsLpcrFovxZ0XxTwmigpJOAASHkk4ABIeSTgAEh7KALWRZVgkwxLKsLXl\/A1a0yPsXsKJF3n+AFS3yLm9j\/8DzcgiawwPHIRkBEnBG0\/dhR4u8Wq1Wq9WIqBaaSIKECeUc1SxLK\/nSIm9zc7P5HrfLm9s0y80mZ6tQowkiDFRFEyK7J9JXuk\/doTQzcqFFXr1er9frRCQUhEp3B18Fz2gC0oEmkaVhPadjRIu8RqPRaDSISCj4qlQ1mUdThTKfXdOqH8WLFnmWZVmWRURCwVelqsk8miqUXXbirvfMzT5VzcULfvL0r0c\/rz5ndkQsz6TgWSmg6uM3JX09R3TyrNZlStoq9HSfGi5ulpk8aRBVZMM3EF8k8joPyOON+2a1+Pu7WuR1JJDHGMhjDOQxJhp5kfzNLzxa+P184esBTvXwZx5B1c35Ktr9gQjyJBe6o+S5L6vwCKx6JHcPb\/6pcmMoT\/O8r+8m7WM+XOVGuALpkqd\/zvVsVZU1mWmuuGEO+ptJ+t7y+1o0rTHg487TlA0vq6YsndSNrxxM5JnfggFeYLsJIk9zNaOVp6oxzAHyxISkycUvzyQHyBMTinPZVNVEsmzqp\/CcxddEbcK3PMuxagk1Qmv75KlyMOlmPoV+FtVEqZMH0gnkMQbyGAN5jIE8xkAeYzz+9RhIM\/I7D\/5SS6VSqVQqdhnymAF5HQLkMUb5aRP+0oNzqcSyyQzI60AgjzGQl1JUS6XHsglzaSCgPMAFyGNMizzAji15gCmQxxjIYwzkMQbyGAN5jIE8xkAeYyCPMZDHGMhjDOQxBvIYA3mMgTzGkGVZe4fex5H4EVxe0luKXe2Ekpf0lmKxQkRJpyASSl7SW4rFChElnYJIKHlJbykWK5S+\/ddCybM39iLX3mTuGmmrppvQpD81DGIyu6bVcNI4CSXP3tiLXHuTuWukrZpuJNt2zTC+vpvJ7NJWw0njJJQ8e2Mvcu1NRq17nNm4WzXd3P1NRgmd3T1VcVS5qVJKCaHk2Rt7kcF+atJKX93MR+knkg43iSPtnyyh5G2dyGg2XRnj8+v2qM1fkUiy\/2KhGSLtnyzRyBObo\/iWUsjzpO3yJIMhLyLik+f3ztNH9gzuq1LaqnkbpYT2yrMcK6e7Vd\/NM7I+uCq+akmX3tbS1T49RCDvKgHyGAN5jIE8ECWh5OFI\/AgoDzAF8hgDeYyBPMZAHmMgjzGQxxjIYwzkMQbyGAN5jIE8xkAeYyCPMZDHGB7yUvi77zSwdVFWUkw2m4U8KZDHGMhjDOQxBvIYA3mMgTzGeMujw1OxeZICeSrSIk8zC+SpgDzG+JBnF+jwlLPGedGdHQQZzUpNf5U\/yFPhT56qrHG54rqr9EEgzxzfd56mrJHkKyDkGQJ5jIE8xkQsL7BUyAtA9Hee30+bnv4gT0WUPx5r0xMh5KmAPMZAHmPwWwXGbF2UbLqBPClXvpcr5SR9odIILgpjII8xkMcYyGMM5DEG8hgDeYyBPMZAHmP+B826SLSnNFP3AAAAAElFTkSuQmCC\" \/><\/p>\n<p>By clicking the <em>Import<\/em> button the new Library will be added to your database (perhaps you have to refresh the DDE):<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKIAAAA9CAIAAAChoCXaAAAGxklEQVR4nO1cTU8bRxiecy\/5A\/yO3JpTcusPSA6WKlHJJyJUaFWlFSaVQlClRG0dQhNRWlQpbZPaVVKaBkIKCaEmMdhljTG0gI2NCSq2IZgKzMdODxu2y87Mu7P22Lte76ORNZ6Pd17Ps8+7u+PdQVgonkrZ7h+nP+yb+OD2+M1fpPXX+\/enc2ube+Oza+\/fHAmMTB8cHFA7IoRYhQghbS06hvYrtUpbQtpXjesKqcZZQwAeArNUe3B509nZafipRaG4d6n\/+UK2OJPeebVZehBabvlyeGRyVpZlyBUGSWqebI9PEsCqIrtTqwALLINUylkOW4iquPLzxOKDyeT6VmmtsDcwHO8NPJfmkyZ8Ys87JgRKLa+cZmoV55FkK4IVmFAzJ17Or3f\/EH61uZfJ734enLoVnMjl8+Z8MiNQHpLIWvKYgC2YoplqyloI9ubgSG7rHftzubC4Xuy6M9l3P1QsFrn8MBlFyZJKOOA0XuFhZyEEq3lsJnNndEFKFT7++tl3v77Y3d014Qrt3Ezm4chMWoDNsozrqlgNAA\/5f3gNINKbrZ1Sx7cTo1K2rff34JMI66LaRe0hUs3z6fwXwchF\/+OJyAJ8Ue2ixhAcWxIruW2+k7GLWkL8lbYLG8KluSEgLGjH4\/Gfhmbb\/RKQLn01W\/x3T9SILvghUs3tfunyN\/OBsazMwNMXiXfe\/ezo6Kgyn12YhshLsHa\/NBrbafdLsiyPxnbINDO3cvbClUQiIXBQFzxg0tzJBquLQvPZC1fgFI\/H6a4QSxOQ39zrDzxrXvyw27oHJyCaTZVjjNv90mpuf3q5RKbV3L5CsAKKH4IWhOGVbZ5yR0IwzbIsL+Xwcg4v5fDyxnEmh2VZBnSMxU26SzMV4mn++x\/813FS82XTTK4ha0MuuWRNhn0gaAN94XHJBtSh7QMDmtFJYPCxAoXm2BqOZbG0hmNZ\/CafNaYZMyZOl9f9ZwA0oBox27eMce3JtHg1RzM4ksHRVRxZxZHMm8RD8\/8+CfoDGDYC99Ud3OS41GDA8+ssgRia1QUQWZZfruDwCg6vYDUTXqkzmk1FEXgsm0AYzeodcyiJQ0k8mcKhJA6l8GQSh1Lmzs3lTbdVNNd90Oa\/b273S5\/cnuv\/LUtdFRmN7Vz89G5rR7\/ZczNZCARPbReqBV0EhqMuHLSp3pLO2wdi3JqQ8vCSSGtH\/8hYKJ1OCxlOhW2n1W7gmiaeNe1CoRAHkU6nS6VSxQ6fgEszJ9xpagi4NDcEhAVtsR054EMIOfKzGpNlFzUPp\/o9g03URH0SASGEUKcTU1UYsYuaPYNNvdHW6GGQTJ7BJtqTCD6r+ahKcriaPYNN0cNgb7T1yVaPLnkGm8gnERBCllNSneR0NUcPg29ffouaaOsqvuPDH59UA2bNoFJFbQD0MqylNmCNBfhw3MBX3lTDsJeaFfkGAgFdrdfr1ZWoasZ1RTOHwQZQc8u9My33zig0n7t+6tz1U0uJMMbY6\/VmMpmTPUSqWVfOyteA5oZQ86PNa482rwUIkDTzqFnTmDL11FrDvK4LyyZm0KyW60w5Qc082xyQap6X\/lASNlKz\/icxqCI\/Wcqj5oEuPDZ5xnKymtX74+hhMLDhC2z4FJp7btxQEqbRbKhm3SiGNHMeDdWmuS7VzAPPYNNAtpVUczzyTEm4rHMzBqcY25Vmh6t5INuqJlFqBggma+G8q+ZKcXe+W3eXrNA8HXqsJFzulbbalMWNttaQZpZBqk11LLKEbNYQasbEf9Xa+2bldXhAzY5LDlUziaGhIS8BlpodlpysZhIZGrQNEEKWU1Kd1DBq5oMP2eC\/4Wp8VmOy6pdmFyYgOETAGxa4uxVYBcFqhjcscHcrsAqC1QxvWODuVmAVxKvZcMMC1mvsKky4Txgpuy\/LIL9LVbpIFgLxaqZuWCBwtwKgVuxE87vEb8cqiFezLMupPE7lMZVmph\/Ei0+cLTmryoAoa3VDMz+0b7L7vl9s7pnTpr6Hc0w\/2DTrIieZJ78C3XUWqA2oLhn6o34CDlsFE2rmeTpA+yZ7c8\/ceLwwtbg9tbg9Hi88DK+fPn8V2EYI+Kot5Kxi0aadfZ4u5DFh1qDlHGOBaibfZNdJublnrjyadfrgr6K2ASwAfFD7UqvqmGaeczP5JrsQNRuqh1oFlAD2ATQEzTwg32QvW82mgiS1iqfEMGgbHhZOC9o8aibfZDerZlbkBKIuGbRJI9Tu1AaAV0AhSTPVB3Dyqg6Rw+ueDvio69bp81e16b22Ls5dZuoXljNKhTA1U0HuWVCenTpCHdPsot5RXTW7sAn+A0TXC7bTYE9xAAAAAElFTkSuQmCC\" \/><\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPoAAABYCAIAAABTWn2PAAALdElEQVR4nO2c21MTWR7Hed2X+Qf8D3z3IVW7b+GJJ6na6irKdXEeeBAc32SqC12CqFuwO4wwgVEjC+KIJWHHKcJlxSAgCYJyCXcVwv0uF4FAEsDsw0+Ph9Pdp09CApH+fetbU6dP\/37n\/Prk0yfdwZqE5+2DaLRBnPC\/tj402iBOeNrce+v+73JhJRp94p3wtLlXLqx82tyLRp94I+5oA1kF94d17fllDsuv9mP\/6kEb0JZf7flljrKaNobUqGDJ4v6rvemm7eng2PTqx60QCnXkWv24NTg2XfZH88+\/NTBYtnW\/HfHOzy2uR+wDuFfUuv9Z+scnFCoOZG98Zfu9hWA5u7B+eB\/APe8\/NSPjs\/v7n9DoY\/fMwkpRZQNg6e55P7OwdngfwP2q9cmWb2dvb5\/48fDNc45Tqq7w5NCRaHTUDWRetT4Zm1qanl\/TcmdBVmdBFrRzU5LAqpEHcJcLK3f39mmfc5wq6bncs\/dfpf9s+VOvx8PEo9FRNJApF1ZOza1qubMgKxS6s99xOTclaWpuNTclqbMgC9pKs7gHd\/don3OcArJV3evpY+LR6ChaF3fCus+RCMSHh3sguEcbcHeuW4lfvemvPigmJRDcM0mySZK1DrWCOWHJGfkmSV5e3aRTSPDy6qZJkpMz8rWm4NQmUoNIhRzfLKlOvJADuT\/+67fxmSXBRP50fW+n0nNsh7+6eDbBfXJ2VWma9aHi04R4wF01hcXdH9ilDbhnVP2FuLq6mvnlKC0tjcmCZdU61ArmhN0osZskub61xx\/Y9YxMEtw9I5P+wG59a49Jkm+U2LWm4NQmXoPuWVWnW2wmSfZOL\/kDu67uEZMkJ2fkhTVCZBcSrfqP1wT3iZkVxjTrsKnTxOemJClTJmZWhHBvWPs3MeBu\/uk780\/fjQ2\/Btzd7R2cZaUPCx\/UwmHhg1rmLBMGOyKE0UCXVjcR3Eurm\/xfboaq+nZlIhk23WL7e2YRM0u6xZackQeDc3BnzpZWNyVeyEm32MShhNoYk1LTLTa4H7RKhUZ9a0\/ihRz6lLLaCOpnJvVOL8EtCnemq3uEiUnOyDNJ8tLKhj+wu7SyEdYN\/Mg59Mg5pHXIwX18ZoU2sB4K3QHW7zbO3m2cZYhnUsAs7jv+IG2t3X1s+DX4M+7uV3QWrI7ysNTuNEnyk3p3fUuPSZJL7U76rDLsSb0bwsamFmFZd\/zB85lFJkm+UWyHD4D0jE0tKhPJsG1dw0wxMMKTejc0mBpULwcaN4rtMP6NYjsTqTRB53xmkWd4gvTfflALs8OlwYVolao6L79U8fqZSc9nFkEbCjNfyGFiSOU7\/iCMc\/tBre46gB85h34oaSpt6NvxB0sb+n4oaXrkHOLEE9y90x+ImX39buPs6HLIM7OnJJ7OArO4b+8EaQPu1cvXvlqhtLQ0l\/sVnUXvPcTbO0Fzag40ICY5I48E0w3YP5gwyB2dXISwxQ8f6YY5NUcrkQxL16YshqlBeTnMWTIp36OTi1AV2SChn55dOZHIvPxSxetXpvQOT9wurz1\/pUg1sXd4glwI3Myjk4u660AMlF974ALu+cFK3FVZH57f98zsiRDP4u7bDoDJ7+uqu\/tInxsMu3ubq50k+rYDsDrKQ+U9oDzLpJN2Zv5DkyTnWu0mSc7Mf+jbDly03GN6VBP5xfCDRVJEXNvcTaC\/aLmnO9HhSxWvn0mpbe6G9Xw\/saAVA\/fqwvI67CmCi0B8rbztUrHzannbll4kwX1sahncWZDlcyTSrA\/M7dOmic9NSSKJYBb3rW0\/+JzjVPnsZcC9fPYyMeBu\/eUXMOD+0uUmiVvbflgd5SEsEx1JnyUNIIOcTc7I29r2P65zkZvkcZ2L6bFVPddKFClGWQO\/QmibU3OUYcp0YlKw7lKIzMsvVbx+rUk5y3Il\/yHctyZJ\/rncoXW9qrbVeS4VO7PKXl4qdtrqPPxggvvo5DIxvIkC6x3eIPyNCdzhDXZ4g0B8bkoSnQVmcd\/0+cGwtdOg07gPdreCAffWNjdJ3PR9Xh3lYUGZwyTJj2td78bnTZJ8MfsefZY0bFXPIexxrQtQ3vT5IQU8t7S26fPPLa2Rnq5Br1aiVjHXrVUQDFlMDaqXA43r1irHiy5oMJFKn83IM0lyy+uhTZ+\/a9BLrppZivNXijilqs7LL1W8fiYF7sN34\/OwhqrLAungd+PzuotAXNE4cMnqtNV5Nn1+W53nktVZ0TjAiSe4v59cpv29dSgUCnV4g+7RQGdBVqAj1edI7CzIco8G3KOBUCh0RrrFpIBZ3De2dsAV\/ddV\/7Skuru3vnSTxI2tHVgI1cOCshpzqgU+deasMsycaikoqyHjQOLZjDzSc\/bLEwLpUSZyirmYfc+caql0tDE10FZWWPOiy5xq+duVQvqStfzWO3clrwISzamW69YqulTov5h97613jlMqNKBOsm41L7pMksyUEUH9zKRwFhZQ9aOhs+jPQsTlz\/rLn\/VrHSpNcH83sUQbcAe4tXBnUsAs7h83d4gnpuZedXYxBty72hvBgHtLq5tOREfXwNaxl0H7bHqeSZLf9HtjOstX3MeXaAPuzwZ8zwZ88EclwB16PuN+MAWsxH2bb9U\/M7W0unQT0RH7C+7HXwkp5mx6Xk3Tm1jPRXB\/O75IG3Bv6Pc19Pvo3R16AHcmBczivr6xzTf88sioudWlm4hGh2uC+4h3kTbgDqJxJ51npFtMCpjFfe2jT9cvWtru3L1\/5+79Fy1txCKJaHRYJrgPjy3Q\/t46dEa6xTeTAmZxX133odFxYi3cIzaL+8r6FhodJya4D40uRMUs7h\/WttDoODHBfXB0PipmcV9e3USj48QE94H381HxZ9zhfTY7fNG\/SEaQjkIdpb7inn2QXUHRWdnZ2QkoVDwLcAdqoQfYpduCxAPuEdwztBY2PqHRMfIB3CMjHnFHfytmcY+AeMQd\/a0Yd3e0gYzP7mgDWeVhJlzFCPd\/JPyVOOqXzRk2RjMubHxS\/akgVp\/rwZH5E8WujHizKO4cjmOBe+yYO5rx1df6C1XKRsRDCQZw4o3D+oIg7vwHm+jiTm\/q9O6u21b9KlA9pRXP+T7RHSSsm0dJmNZ+r\/pVoPv9IN7J6T+R\/pZ2dyVt4m04VB2KM0vEc+ksOnfr1dr76cMIHk4Q9wXEXeljwV1rw+bs+uLjh9t5gm0g3LWG0j11xLu7SBbu7pHZQLhr7e4cuCOeS2fRxXAXfJhRfRPQHU23\/0Q67nBXvgJqvU2qxnBeKJkrFxlc9RR\/Iv0Vj9IrKb6qRuD4\/d0dfajPFX93V71SxP1EOrLXgxNvxB1tICPuaAM57nBHoWInxB1lICHuKAMJcUcZSIg7ykAyKO7wF9Cjn\/d0Quh0woEGadP9pwVWUStMMF135HDr4Y8meFZ1faIoxP1IpfVxarV1RwurX1yR1SMymu5ciLuOyL9XCSk4pv+ti2on6VcOwjmlHETw5qF3dNV+ZZuzv4rjzh+HP4JuPbpfBZx6tOaKBeuhk4F7SEEk3alsKw8F48XH1xIHdyVJnFtCq0ckUfBJifkvfxzdJxbBxLjDHSKZ\/1ceaRwv7qqdnA2eM8gh48OV1keuehuoZnH6jwZ33dEOU0+0dKJ2d5FOwfg4wV08i9OPuBMZCHctfGPx8BOuDIt7jF5JtXQScOe8MnJeJXXjtd5KVdPDemFlxLy3MY\/vnLfDyPrFqwqpkSo+qUg9oaMl\/iTgjkIJCnFHGUiIO8pAQtxRBhLijjKQEHeUgYS4owwkxB1lICHuKAMpTnHH2wYVC8Up7iEkHhUDIe4oAwlxRxlI8Yt7CIlHRVvxizuyjoq6EHeUgYS4owykOMUdWUfFQnGKOwoVCyHuKAMJcUcZSIg7ykBC3FEGEuKOMpAQd5SBhLijDCTEHWUg\/R+Pfk3Oyde+tgAAAABJRU5ErkJggg==\" \/><\/p>\n<p>To use the new imported code you have to sign the library first (or the complete database), otherwise you will receive a security error (This can be done in the XPage too, just alter the code of the button).<\/p>\n<p>Here is the code of the example XPage:<\/p>\n<pre>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n &lt;xp:view xmlns:xp=\"http:\/\/www.ibm.com\/xsp\/core\"&gt;\r\n\r\n    &lt;xp:inputTextarea id=\"inputTextareaSSJSCode\"\r\n       value=\"#{sessionScope.SSJSCode}\"&gt;\r\n    &lt;\/xp:inputTextarea&gt;\r\n\r\n    &lt;xp:br \/&gt;\r\n\r\n    &lt;xp:inputText id=\"inputTextSSJSLib\" value=\"#{sessionScope.SSJSLib}\" \/&gt;\r\n\r\n    &lt;xp:br \/&gt;\r\n\r\n    &lt;xp:button value=\"Import\" id=\"buttonImport\"&gt;\r\n       &lt;xp:eventHandler event=\"onclick\" submit=\"true\" refreshMode=\"complete\"&gt;\r\n       &lt;xp:this.action&gt;\r\n          &lt;![CDATA[#{javascript:\r\n             importPackage( ch.hasselba.xpages.util );\r\n\r\n             var dxl = SSJSLibImporter.convertToDXL(\r\n             sessionScope.SSJSCode, sessionScope.SSJSLib,\r\n                database.getReplicaID()\r\n             );\r\n\r\n             var dxlImp = sessionAsSignerWithFullAccess.createDxlImporter();\r\n             dxlImp.setDesignImportOption( 6 );\r\n             dxlImp.importDxl( dxl,\r\n                sessionAsSignerWithFullAccess.getCurrentDatabase() );\r\n          }]]&gt;\r\n       &lt;\/xp:this.action&gt;\r\n     &lt;\/xp:eventHandler&gt;\r\n   &lt;\/xp:button&gt;\r\n\r\n&lt;\/xp:view&gt;<\/pre>\n<p>And here is the Java class:<\/p>\n<pre>package ch.hasselba.xpages.util;\r\n\r\nimport java.nio.ByteBuffer;\r\nimport java.nio.ByteOrder;\r\nimport com.ibm.misc.BASE64Encoder;\r\n\r\n\/**\r\n\u00a0* Helper Class for DXL Import\r\n\u00a0* of a SSJS library\r\n\u00a0*\r\n\u00a0* @author Sven Hasselbach\r\n\u00a0* @version 0.2\r\n\u00a0* @category DXL\r\n\u00a0* @category Util\r\n\u00a0*\/\r\npublic class SSJSLibImporter {\r\n\r\n\u00a0\u00a0\u00a0 \/**\r\n\u00a0\u00a0\u00a0\u00a0 * converts a integer to a byte array\r\n\u00a0\u00a0\u00a0\u00a0 * in little endian order\r\n\u00a0\u00a0\u00a0\u00a0 *\r\n\u00a0\u00a0\u00a0\u00a0 * @param i integer to convert\r\n\u00a0\u00a0\u00a0\u00a0 * @return byte array\r\n\u00a0\u00a0\u00a0\u00a0 *\/\r\n\u00a0\u00a0\u00a0 static byte[] toBytes(final int i)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ByteBuffer b = ByteBuffer.allocate(4);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 b.order( ByteOrder.LITTLE_ENDIAN );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 b.putInt(i);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return b.array();\r\n\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0 \/**\r\n\u00a0\u00a0\u00a0\u00a0 * encapsulates raw SSJS lib data to RT records\r\n\u00a0\u00a0\u00a0\u00a0 * \u00a0\r\n\u00a0\u00a0\u00a0\u00a0 * @param data array to encapsulate\r\n\u00a0\u00a0\u00a0\u00a0 * @return byte array with RT records\r\n\u00a0\u00a0\u00a0\u00a0 *\/\r\n\u00a0\u00a0\u00a0 public static byte[] generateSSJSBlock( byte[] data ){\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 final int RECORDLENGTH_OVERALL = 50;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 final int RECORDLENGTH_BLOB = 18;\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int size = data.length;\u00a0 \/\/ size of the data\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int roundedSize = (size % 2 == 0)?size:size+1; \/\/ rounded size\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 byte[] record = new byte[ roundedSize + RECORDLENGTH_OVERALL ];\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 byte[] hlp;\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Record Type (Event)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 record[0] = -7;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 record[1] = -1;\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Record Length\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 record[2] = 32;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 record[3] = 0;\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ event type\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 record[8] = 22;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 record[9] = 0;\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ action type\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 record[10] = 4;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 record[11] = 0;\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ data size\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 hlp = toBytes( size );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 record[12] = hlp[0];\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 record[13] = hlp[1];\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Record Type (Blob)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 record[32] = -36;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 record[33] = -1;\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Rounded size + recordlength\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 hlp = toBytes( roundedSize + RECORDLENGTH_BLOB );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 record[34] = hlp[0];\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 record[35] = hlp[1];\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 record[36] = -7;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 record[37] = -1;\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Rounded size\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 hlp = toBytes( roundedSize );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 record[38] = hlp[0];\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 record[39] = hlp[1];\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 record[40] = 32;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 record[41] = 78;\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Add data to BLOB\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 for( int\u00a0 i=0; i&lt;data.length; i++ ){\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 record[i+RECORDLENGTH_OVERALL] = data[i];\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return record;\r\n\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0 \u00a0\/**\r\n\u00a0\u00a0 \u00a0 * generates the DXL to import a new SSJS library\r\n\u00a0\u00a0 \u00a0 *\r\n\u00a0\u00a0 \u00a0 * @param data array of bytes \r\n\u00a0\u00a0 \u00a0 * @param libName Name of the SSJS library\r\n\u00a0\u00a0 \u00a0 * @param dbReplicaId\r\n\u00a0\u00a0 \u00a0 * @return DXL to import\r\n\u00a0\u00a0 \u00a0 * \r\n\u00a0\u00a0 \u00a0 *\/\r\n\u00a0\u00a0\u00a0 public static String generateSSJSDXL( byte[] data, final String libName, final String dbReplicaId ){\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 StringBuffer dxl = new StringBuffer();\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 BASE64Encoder benc = new BASE64Encoder();\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dxl.append( \"&lt;?xml version='1.0'?&gt;&lt;!DOCTYPE scriptlibrary SYSTEM 'xmlschemas\/domino_8_5_3.dtd'&gt;\" );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dxl.append( \"&lt;scriptlibrary name='\" + libName + \"' xmlns='http:\/\/www.lotus.com\/dxl' version='8.5' \" );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dxl.append( \"maintenanceversion='3.0' replicaid='\" + dbReplicaId + \"' hide='v3 v4strict' \" );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dxl.append( \"designerversion='8.5.3'&gt;\" );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dxl.append( \"&lt;item name='$Flags'&gt;&lt;text&gt;.5834Q&lt;\/text&gt;&lt;\/item&gt;\" );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dxl.append( \"&lt;item name='$ServerJavaScriptLibrary' sign='true'&gt;\" );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dxl.append( \"&lt;rawitemdata type='1'&gt;\" );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dxl.append( benc.encode( data ) );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dxl.append( \"&lt;\/rawitemdata&gt;&lt;\/item&gt;&lt;\/scriptlibrary&gt;\" );\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return dxl.toString();\r\n\r\n\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0 \u00a0\/**\r\n\u00a0\u00a0 \u00a0 * converts a String to a DXL for a SSJS library to import\r\n\u00a0\u00a0 \u00a0 *\r\n\u00a0\u00a0 \u00a0 * @param String to convert\r\n\u00a0\u00a0 \u00a0 * @param Library name\r\n\u00a0\u00a0 \u00a0 * @param ReplicaId\r\n\u00a0\u00a0 \u00a0 * @return String with DXL\r\n\u00a0\u00a0 \u00a0 *\/\r\n\u00a0\u00a0\u00a0 public static String convertToDXL( String raw, String libName, String dbReplicaId ){\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 byte[] data = generateSSJSBlock( raw.getBytes() );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return generateSSJSDXL( data, libName, dbReplicaId );\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0 }\r\n\r\n}<\/pre>\n<p>This class only imports a new SSJS library. If you want to update an existing library, you need to add a &lt;note-info&gt; tag to the DXL. And don&#8217;t forget to update the ACL of your database, otherwise the DXL import will fail!<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnUAAAHvCAIAAAC9gL67AAAgAElEQVR4nO2dTaslx5nno19qZ4ygNlr4E8xG0OB1yY2XvRjmA5QagzcD3jQeDL3RcVHD2IyZmvYwL7tuoYGG2pTbTY0sy\/I9c11Sl18QsiVsI5jiugsPjTaD+wP0mUXWTeeNiOeJJyKffD2\/H3+Kc\/JERjwRmSd\/leeeuhVO58Hr4fUuSxfygn8Vfh9YPxwvAKiFqwUAAIA\/4c6dC0IIIYS4JITDC7+GcCCEEEKIR\/4shMM\/\/fO\/\/NM\/\/0sI4fD5z\/8NIYQQQsYk79c\/\/uP\/QQghhOwmtbeer7zyrZH75v36R3\/03wghhJDdJIRDCHfseeWVb43cV\/LrfyWEEEJ2k86Rh8NFMV3LV1751sh9Jb\/+lyjd15\/S7XMm+q7zDGM1b5xnBRY\/IoQQspX0jvxA5eHDhwNHjtpX8uu3o1xfzePtsyUqoKGeql2yjWsHldqPXMzm3Rc\/iIQQslSGjnzy5Mnjx49feukrn\/3s3c9+9u5LL33l8ePH3cabjszs27V5cpOHDx+m++b9+od\/+J+HGd4wRS\/NlvGjV\/WQbVxbg9R+5Fyad1\/2CBJCyIKJ\/NqZ9fHjx48fP+4ep37N7vvw4cPbt1+\/ffv1Xq7d04cPH0b7Sn59MMxNvxa2N2xUtkQvpduznZ9uknautFeGK25URswWXDW6pQx9PZXlJYSQfSf160svfaUTpOzX\/L63b7\/e7949vn379XRfya\/\/qc\/1Fdn0uGGj8kAqo1jeQCSFMiw16zXUTsRYiZK0We0KE0LIuSVyZE9\/I5vzq7hvr9hetOm+kl+\/1ef6oqw9zjaONg6RGmd311\/KdmjfaGlsmV22QVXN+vT1MowrbOyfEEL2l6xfh3LNOVLbd3gXm90379c\/+IP\/2Ce9dg+3D1tWbZRekhpbtveP7RstjatmV1wiYyVK7IvW1j8hhOwvkl97QaaOVPYt3r9e75Xx6ze7XF+Rv5luGb40ZqPyIDuubxmWxspqNEzEWIkS5aC01UMIIbtP1q\/d95tkv+b3tfz89XqvjF+\/0eX6ivyN7JbTgKhB1UZlSzq0pfPi46oepALSrqTapLlUja73qa9MsR5CCNl3mu5fM\/savz98vVfGr\/+BEEII2U2if8M6\/Jc5jwfcdGR+3+5fu0Z7pfvm\/RrCvyeEEEJ2lBeOfFiid+ToffN+vU8IIYTsKN3v6Df+HzidI0fum\/frPUIIIWRHqf4\/cEbv+8Kv3Rdfer9+nRBCCNlNXnnlW7UZvW\/er39BCCGEkBHJ+fUIAAAAI8CvBR48eHPpEgAAYHvg1wL4FQAAGsCvBfArAAA0gF8L4FcAAGgAvxbArwAA0AB+LYBfAQCgAfxaAL8CAEAD+LUAfgUAgAbwawH8CgAADeDXAvgVAAAaMPn1wYM3zyRvvfXTKPgVAAAawK\/4FQAA\/Jnp8+GLiz7\/+4c\/7HP5wx9evvtulx+9++6PfvCDLk+6vPPOk3feee8673\/\/+33+4e23+zx9++2n3\/telx93eeutH7\/11k+uEyuzKvgVAAAawK\/4FQAA\/MGvM\/k1hNDwkvKqvpeF8T0AAIAEfl27X71GmWI4AACQGOXXy9NfDfOF05+EvwnZlmfu105p092JVnWFXwEAZqDdrxm5Xobz9Oshx81VDsdEbGHA8Gn\/ON033Z5uzLaU2kgNoh7SstNZSJ3rA\/WPs2sIALBOTqdTenlMrpZNfn399PoXTn8yTPhNOGe\/nhIGSxzSx+nGrDiPslmze2X71wfKViL1Y9m3OMHslnQBAQDWyRx+7Zz69eN\/x6\/KWnv5tdhe2Ti8cbQ78pj4VenZUqfSGABgK0zl16vfna5+d+rvX8MphMtg9Ovdu18eptav3V5b9GvklaOrX5V9LQPV+lXq3D4vvXMAgJUziV87ufZ+7eQaTnV+7W5ee8Xu+\/5VkoqXXyVZTuTXqn2VrrKNAQA2gb9f\/+fp9KfXeeHXy9Cl9+udw53svvg13RIGHFv92vcjvZoOJPWgKDmqP9t5tn36VGkMALAJpvLrvavT4XDKfr\/pzuHOL77zb6+uvnp19dWLizDct+jX4efGvV\/7Lennw8P2vV\/7LevxKwAA7Ixp\/XrncCfc+9d97hzu9HI9nV6\/uvrqvXs3bmTtP3\/tFdub9frB7\/16rdV\/ePvtF6Lt5fq97\/34WrH4FQAA\/JnWr\/euTveOp3vHU3e3enX11TfeCG+8ESx+Ld6\/9rewg5vX9yS\/Dj8f7hXL\/SsAAEzE9H69uuHX\/mPhBr92j6P71+7nr9nPhyW\/Dm5e8SsAAEzChH7t8qen073j6XS6PJ1e73Jx0Xj\/mvUrnw8DAMAKmfb7w10ivxrvX7M\/f1U+H+b7TQAAsB78\/Xr682984evHKL1fLy5C8f71PH9\/EwAA7Ilpfz9iT2fT9Kewb7wRhs3wq7JvT1sPAAAwJ3P59c+\/ce\/enSiRXI\/4VdjrcDgMf\/mDbln9VzcAAMA8zORXI\/g13aVz6vD\/ZOi3ZHfJ\/p4mAACYGfy6Ab+m\/+3R8XjErwAAawa\/rtevkVyjG9mjoNj0lwYPX0p\/r6\/+i4IBAKAN\/LoNvw5\/\/trm1\/SmNuvaqA0AALSBX\/fp12PpRlbaMsReKgAARHj69cGDN88k6\/98uH9c61d7eQAAoIBf1+vXY+v3m4aPm\/2KawEAxsDnw+v9fLjbpXsQyfVo8+sxp1vFuGkbAABoA7+u2q\/Ha7PqWwAAYG3g17X7tSO9fwUAgDWDX7fhVwAA2Bb+fj186SUpxWHwKwAA7INJ\/Ho6Xf4+v3n59JuXTxcv41f8CgBwPkzl1+6G9fSbl188uHj58KWX7t+\/f\/\/+fWUY\/AoAAPtgsvvX7ra1z8XLhy+99Pz58+PxqFgWv+6eAwAsB5egOTEuuI9fu517y6b7dnK9e\/fLUXS\/dm3w6yY43Py\/bAFgNo7yv5uHKZjKr92Hw136z4f7f2Hy\/Pnzol\/7+9fu6Zn7dfg30LYeVkLn16WrADg78Ov8THj\/2n9tuL9\/DeGQZrgvfs3uFd3zFS07\/Ovq2sCvAI6kvzw1S\/++w69z4u\/XY6fY5MPhe1enPuHiFC5O\/+av\/l+DX4efG6d+Hb7a+7Xfsjm\/9mYdvlX6LcKhCtnHKwG\/AjhivKTg10WYxK\/HTrEXL3fp7lzvXZ1e3LNevHig+zX789drrf7oBz\/4Ua\/Y3q\/XWn3\/+99\/v3vcy\/Xtt58OFLsxv6Z\/Gz2af\/\/w2sCvAI7g1zUzlV\/v37\/\/+8+HT6cXfr24kYb7V4tfhxnev27u82FJrrpiJXtFHxr3j7P3u1Lj8eBXAEfw65qZ0K\/Hwc8G5vRr9uevW\/x8uM2vx9zPX9PHQf5fdPQtI8GvAI7g1zUzlV+Px+P9+\/efP38e+7X\/ZtPEft3B58PNfu1J70eV21Zj45HgVwBH+otA9l+79s3w6yJM69fj8dgp9vc\/f+3vX0s\/f+X7Tb5+lV46qne00pZm8CuAI8OLQCTX\/kJxxK8LMaFfj4Nf1fT8+fMbcs3dvB75\/U25XbKKPdq+32T8EFjaS2o8BvwK4Eh0HcjK9YhfF2Jav3bcv6a7Z+2SyvWIX3O7dA8iuR7V98nwo11po+LXYuMx4FcAR9LrQCrXI35diDn8mnR0yMr1iF9zpG+VdMuGwK8AjmQvBVnp4tf5mduvOvhVIr1\/3Sj4FcAR4wUBvy4Cft2GX3cDfgVwBL+uGfyKX2cFvwI4gl\/XDH7Fr7OCXwEcwa9rBr\/i11nBrwCOZH+tRBb8Oj+efn3w4M0zCX5tBr8CeBEqOeLXecGv+HVWDhv\/\/+EBNg2XoDnh82E+H56VEwAsytLXgDMCv+JXAADwB7\/iVwAA8Ae\/4lcAAPBnMb8ewqHLcCN+BQCAfbCMXw\/hcLr6v\/\/410\/\/8a+fDrfjVwAA2AfL+PUzn\/nMrVu38CsAAOyVBfx669at0+lwunj5cAjd\/77eg18BAGAf+Pv11k2yr\/Z+jRp0cr1798t3734ZvwIAwHaZxK\/Df8vcW7Z7cPv27dPpgF8BAGDfTO7XTz\/99KOPPrp\/\/\/5HH3306aefKjevR\/wKAAB7YSa\/fve73+38+uL+tcmv3fYuvV+HG+\/e\/TJ+BQCANTC3X1\/8\/PXi5cMhfO5zn4v2VfzabezuX68V++TaqU\/eeec9\/AoAAOthAb9evfHvpG8\/4VcAANgHi\/m1++pTtC9+3T32\/w4aANzhEjQnxgX3\/nz4+qvF0b74dfccDofa\/xQaAFw48v+\/zsvcfh2+pPt1GL7ftBs6vy5dBcDZgV\/nZ41+bfv9TXv1q91Gm\/AWfgVw5GSjf9\/h1znx9+urr14Of39T9vPhjldfvYz2rfVrcvO6w3\/\/WrTRtnSFXwEcMV5S8Osi+Pv1eDy++upln+jXJQ5fSnfk9w8n6x6OJYNuS1f4FcAR\/LpmJvFrM\/g1IuvX4bcV+qfDZmmDYbNlifw6\/GbjYjXJdFX1telFRq9OPaOoNr2YGeqBRcCvawa\/rtevQw9Fshw+Tj2aNsjuvgipX7OPx4\/i3k+xz+hvCZP6zFJM7S6wRfDrmsGvG\/Zr9iVFwNndZ0bxa\/p0zCju\/eBXWCH9JeWQo2+GXxcBv67ar0P6jWmz4YPd+FX63Lj\/XFRpnO44bKDve7x5qUpHHI6SLaw4l4Zi0kVIh4uGyM5F6hA2yvCScrhJd7HuX8Kv83PAr+v0q+TRts+HlW5n5mDzaySYqE3ULG2cFVL2gb7vcIvUg7R71mF6V0ox+kIVazaWB5sjuqRk5XrErwvh6devfe2b5xyvtb5e8SBtie5ojznRSre8+\/Br9HhVfpX66dGLiVpm52LZUZqL1CFslPSSksr1iF8XwtOvDx68ec7xWut9cw5+PeZusrNDKMVIPRt3VPyqDASbI3tJyUoXv86Pp1+LXF5evvfee0+fPv3pT3\/6wQcf\/PznP\/\/4449\/9atfffLJJ\/9nZXzyySe\/\/vWvf\/nLX3788ce\/+MUvPvzwww8++OBnP\/vZT37yk6dPn77\/\/vtPnjy5vLycYq33jeJXowwW9+vxpj6lwkb6VWpZtaO9Q9gofH94zeDXPPh1IlK\/9qQtLRqTGutCKu473Ci5SiksbZ92WFWMNJa0Y7o92pLWD1sEv66ZA37Ngl8n4rCL39+En2Al4Nc1g1\/z4NeJ2LpfufmDVYFf18zcfo1+HTF+PTe27leAVXEwg1\/nZ1a\/3rp163c3uXXrFn49K\/ArgBehkiN+nZf5\/Br9v7Cn0+n+\/fv49dzgw1WABeESNCcz+fXWrVsf3eT+\/fv49Qw5AcCiLH0NOCPm82v0yXDRr90HGpL\/9Fen9ms3On4FAACJ+fz65k3wKwAA7JiV3r8OfyaPXwEAYHNM5df+X+D0T6vuXyW\/Rl+Hi0SbPpa2DLstbuz9GvWAXwEAQGISv966det0uuzSKTb75WHJr7oyo8dSg7S3rJWVPrv71+7xhx9+2D3g\/hUAACz4+\/Varp8\/nT5\/cRE6xQ4pfj5c5VfLDWhRpVklD8GvAABQxVR+vXfvzuEQTqfTxUW4Fu2LPzvFFv2aWtPu16JKLX6Nfv7q4lcAADgfpvBrp9LTxUW4uAi3bt0a\/qnfv6bC0wVZfGr3a7TR\/fNhl3+7BgAAG8LTr51iO7N2Qj1ef384nEJn1ja\/pre2xb2GLSU9Kx12eH2\/CQAAIMLh+8Ppv885t9\/vDwAAEOHz+4cjzu3\/pwMAAIjg\/3\/FrwAA4A9+xa8AAOAPfsWvAADgD37FrwAA4A9+xa8AAOAPfnXw67NnvyWEEHI+cfPrgwdvnnPwKyGEkGHc\/Pq1r33znINfCSGEDPPo0SMfv54z3L8SQgiJgl8dwK+EEEKi4FcH8CshhJAo+NWBZr9G\/ydPvzFtZjyc9pZjdmnrxGWgqpKihXXsWZ\/XyBG73Yd\/znB0luq8uJhTFKDsovcmvTp+hdtmMd1JTlyCXx0Yef86\/hJT3Lf5gjJyXPeB2urx\/QtKW+e102\/2q7vv2+bVtiwNR2pOv3qN4jKc43WDTBT86gB+LXbieDfmUs+YHfGrpfPV+lVfWPxKHINfHZjCr9lPjKUPgtKPibJPlZeinqUtSoNihdmZGsctVqIvqdRbdqmljenhkMZSll1qlq6StGLFY5EdyLKw6XSGw0m7K6skvST1KXUrLXu0UJbZFU\/FaMrpRKTTRjnillVSGmSPqeXcUJa9uEV6SqqCXx1w96v0fpbaS12l++ovFXfXd6mqMN1YtcW+JkoZ0lLb62xbNGmI9HAbzw3jQJaD3nZcitMfP7rU0rImSv\/GQaODYnmHSpUbTxJprOhk6LFPyrLFMgVSDH51YLrPh+1v1Ohx9MaL2igvZdsoPSjFFyvU10EaqHZEy8IqS63vpU8kO\/Fsb\/qfbVPQ97IcQft1OT1nstuV3YujSy1Hzq7qNLCfNspGaZXsSy2dUcZJZYsprjNpCH51YDa\/Zk\/3qgti89VT6qQ4nWe2t7FxS3HFlB3bFqp4nbIcEaWZ5c+2KRj3GrNKVSupr09xdKll7ez0U1E\/DareMlXnUu2bUZpm1bI0v7+IMfjVgXn8WrzQpC31fZuvldJ7XhklLdi3Ev2KMMYKxetUcYLKRV9Zvdn8qnjL8UjVjp6tRKrT2H\/DqVjl1+LJuR6\/jnx\/EWPwqwNzfj4sval6lC3Zl9KWSodpg2wlyuyylSjdSluUEaUppL2lS52uub5XNFBQj5eyFFIBymLqy1i7FNmD2P+p7J6WkS6UZXe91LRI6Ugps1PWXzmC+kFJ2yuvKqskVa6sg3TslENs35J9Kh0IIgW\/OsDvbyI7zuJX1cULIKQt+NUB\/Ep2nAX1lt6DErKh4FcH8CshhJAo+NUB\/EoIISQKfnUAvxJCCImCXx3Ar4QQQqLgVwfwKyGEkCj41QH8SgghJAp+dQC\/EkIIiYJfHcCvhBBCouBXB\/ArIYSQKPjVAfxKCCEkCn51AL8SQgiJgl8dwK+EEEKi4FcH8CshhJAo+NUB\/EoIISQKfnUAvxJCCImCXx3Ar4QQQqLgVwfwKyGEkCj41QH8SgghJAp+dQC\/EkIIiYJfHcCvhBBCouBXB\/ArIYSQKPjVAfxKCCEkCn51AL8SQgiJgl8dwK+EEEKi4FcH8CshhJAo+NUB\/EoIISQKfnUAvxJCCImCXx3Ar4QQQqJU+TWEgF8z4FdCCCFRuH91AL8SQgiJgl8dwK+EEEKi4FcH8CshhJAo+NUB\/EoIISQKfnUAvxJCCImCXx3Ar4QQQqLgVwfwKyGEkCj41QH8SgghJAp+dQC\/EkIIiYJfHcCvhBBCouBXByx+7XgEAABnQ1EK+LWA3a8AAAA9+LUAfgUAgAbwawH8CgAADeDXAvgVAAAawK8F8CsAADSAXwvgVwAAaAC\/FsCvAADQAH4tgF8BAKAB\/FoAvwIAQAP4tQB+BQCABvBrAfwKAAAN4NcC+BUAABrArwXwKwAANIBfC+BXAABoAL8WwK8AANAAfi2AXwEAoAH8WgC\/AgBAA\/i1AH4FAIAG8GsB\/AoAAA3g1wL4FQAAGsCvBfArAAA0gF8L4FcAAGgAvxaw+PVg4HQ6zVAtAACsBPxawOjXoHI8HrN+TZtJ6K+ujemqnXkdjEenrWflaXbLqujKG1Pk+B4AVg5+LWD360nmKPvVUsM+rkFVs5Aaz7kURQUad3TsfD1ngpdfAXYMfi2AX70Y79eZ73iaB8Kv9h4Adgx+LTC\/X\/srV\/9q+tjyUnZL20vpoNHQaSVSecYOs7Vlr+mWWUtbpKfRLNLtxuKLU1bGKq5hcXZKD7VLocw6baPUoPRQnIVSG8A6wa8FpvarfhFJr0HDZsaXjrnLt\/SSpZ9ihcrG2g6VwuzVSluUwrI11BZvrDM7ll5qFuN8Lf0XTxh9FvajIL2qzEtfBID1gF8LLHX\/Onxsvz5G\/QxRXtVLslwrazdGo+tDGPtXtqSTLc7asrFYvOXAKWVL+6YtpcW0dGVZCmkUaV\/7IZZqTkdUagNYJ\/i1wKb9KhWsXLL1fqRrZfRY31g7RL\/dcsG1r0PVxI2lSgelOEHLmhibKW2KB652FGnH2h6M08+2BFgt+LXAFv0qXfeVISyjW7ZkL5oNpRqv+I7VFgdt7r+4V\/q0WGp2R3s9xf6NZ4XUzF7VmFUFWDn4tcBsP3+1X5uUxsOXsluyQ0svGQcdtlE2ptuLHaYbi11VbZGepjs2rEb6krRXNFC0r7SGSpF6hS5LkU6wON9sVVLNyrzS2gDWCX4tMKlfAc4EvAhnCH4tYPRrsQ1+hXMGv8IZgl8LWPyq3LlGd7EAAHAm4NcC\/P85AADQAH4tgF8BAKAB\/FoAvwIAQAP4tQB+BQCABvBrAfwKAAAN4NcC+BUAABrArwXwKwAANIBfC+BXAABoAL8WwK8AANAAfi2AXwEAoAH8WgC\/AgBAA\/i1AH4FAIAG8GsB\/AoAAA3g1wL4FQAAGsCvBfArAAA0gF8L4FcAAGgAvxbArwAA0AB+LYBfAQCgAfxaAL8CAEAD+LUAfgUAgAbwawH8CgAADeDXAvgVAAAawK8F8CsAADSAXwvgVwAAaAC\/FsCvAADQAH4tgF8BAKAB\/FoAvwIAQAP4tQB+BQCABvBrAYtfnz37LSGEkPOJRR\/4tQB+JYQQEsWiD\/xaAL8SQgiJ8ujRo6Ia8GsB\/EoIISQKfnUAvxJCCImCXx3Ar4QQQqLgVwea\/RpuYj9saeNuS1Un0Y7GShqGWDDTVTvzOrSdJw0TkU6t1ab5zPfqwbjjcJTFl3S2ArKnU3QmT13MgquNXx0Y41fHs3ZMV1XXiK1n5F9l5l+KogLHzLSt8\/WcCV5+nWf3Zf1apTSXIvWzayV\/25gu+NUB\/LqtjPfrzNeFSW+t8Ct+nWJZspNV3k27DH51wNevww9shxujT1Syn7FEf2Z7sJ\/iaT\/ZGoovZbe0vSTNOm0Tzcs+C6VxujJV1SpbpKfK0akqvjhlZaziGlYdL6kM41Ios07bKDUoPTQcNWm50v6z1VoOZTqp9GxUppCeD1L\/2YNVVWdamHJ2SRvtx9EyEcuSThH86oDLz1+L7yL9lJXOIfspbqkkW5j9peJ7SXqqzFqvUNlY26FSmL1afdGk4y4dstrVKFalzLe4LMouVSeJvhTSKNIs7EfBcq5aapPW3FKt\/VBWrW22NmUWVYfYctIaV8yymMp89YlY3h3uwa8OTHH\/mn0\/9KdI7TVCv2rYK6k63YcNovqlV\/WSjPOq2mhcWMsBKi5pdh2Ks244OspBKU5QmYjlLJIWs\/YYSUNIo0j72g+xVHM6olKb0qdebbFIZf3TY50WbFx\/\/fDpbZTDp69bcTH1Jco+0M8Qy3F0CX51YGq\/2rfY24+sxPiS\/f2TNtP70edVvI60DdFvT69flllL61A18arV0KecnaBlTcYsnX7cm88BacfaHozTLx5Ny5+1a248jpa3W+1Fxr7X8KnlbdJQsPSSPpHa4+gS\/OoAfjW+lA5U9VKDUZSNDUNkF6qhtqrCpKcN\/btMcMzF137+WJZCOufbDvGYVS0uhbHatlOluLZjlqW2TmlllIlLy2gsWDkzjUdWKWBk8KsDvv\/+VXpzDptJeyknfbpLQyXRFqVxNJBxaOkl46DDNsrG7LLoHaYbi11VbZGe6qtkL964V\/ZMKK6hUqReoctSpBMszjdblVSzMq+0NuOBUJZO7yG7Pmmf6RSi3pT+pTKUxVdqNo6SbrQcR+VBWqRlSd2DXx3Y1u9vmvR8ImTl4fwnswW\/OrB+v0p\/PSTk3MJbgMwW\/OrA+v1KCCFk5uBXB\/ArIYSQKPjVAcfvDzd8eGXfxfeTsfRbA8Wn7qNPvcuka0UI2XfwqwOO96+TynIev+pfI\/QqRtp9uhGnqJYQsuPgVwfw63Ajfl3V0ISQpYJfHRj\/+XD6\/d7sP\/ZKG2Q7GfafdhIVoI9iaZzOKDtidoJ65UoNykLpL+lLlA6dNmgYKF2W2jIIIZsLfnVgpF+jq6q0RblYZ3fRBzKOUiw722faiTJH40ttc2xeouIulvqza9VQBiFki8GvDkzh1+geqCghyStSJ3qf2Q6zvenWMUo06lmZTnYgZaH0NUzbKD0oMzUeLPuRkpoRQjYU\/OrApPevw+3ZNg27WBoYG+vNjH5VFqe2YMuIxflaJKe0qfVrsQxCyBaDXx2Y5\/NhaUtbJ8Zdio19\/aqrdwa\/Flc1fWrvtrkMQsgWg18dmO37Tele2U6GLYcbs3dOxVH03hQFph2m5emVZ1dMWqh0FmnBxSVKh053KU5NKqk4X6mM7FIQQlYe\/OoAv7+JDIMOCSHP8KsL+JUMg18JIc\/wqwv4lRBCSBT86gB+JYQQEgW\/OoBfCSGERMGvDuBXQgghUfCrA\/iVEEJIFPzqAH4lhBASBb86gF8JIYREwa8O4FdCCCFR8KsD+JUQQkgU\/OoAfiWEEBIFvzqAXwkhhETBrw7gV0IIIVHwqwP4lRBCSBT86gB+JYQQEgW\/OoBfCSGERMGvDuBXQgghUfCrA\/iVEEJIFPzqAH4lhBASBb86gF8JIYREwa8O4FdCCCFR8KsD+JUQQkgU\/OoAfiWEEBIFvzqAXwkhhETBrw7gV0IIIVHwqwP4lRBCSBT86gB+JYQQEgW\/OmDxa8cjAAA4G4pSwK8F7H4FAADowa8F8CsAADSAXwvgVwAAaAC\/FsCvAADQAH4tgF8BAKAB\/FoAvwIAQAP4tQB+BQCABvBrAfwKAAAN4NcCWb+eQiCEkJVk9usimMCvBfArIWTlmf26CCbwawH8SghZeWa\/LoIJ\/FoAvxJCVp7Zr4tgAr8WwK+EkJVn9usimMCvBSx+nb0oADhruARtAvxaAL8CwNrgErQJ8GsB\/AoAa4NL0CbArwXwKwCsDS5BmwC\/FsCvALA2uARtAvxaAL\/CIhzg7DmdTtLpwSVoE+DXAvgVFuFwOAQ4Y47HI37dOvi1AH6FRej8eoK9UDaVR1YAABRSSURBVHX08es+wK8F8CssQu\/XEA5k6+lMaTRxd+iP+HX7hHDArxr4FRYBv+4pvV\/th15vzyVoE4RwwK8aRr+G5BRPt0jYWy7V4YZY29yb68Gvewp+PU9COOBXjRn86o4ytFdVC85OZ22FNdcT+XX4+WHtlX1xuxD8ep6EcMCvGna\/hsFZHj2dGWVor6oWnJ3O2gprrif16\/BivbgwSFXw63kSwgG\/arj4NVzTPx0+CIMeQtJb1I\/SMmoWtU8LS6tK61GmEI1r38vSMuo5XRBp97SqdLu0JftUfyCtiVSPHcWv6VOy8kR+DTmiQ3\/Er9snhAN+1aj6fDj9MyJ6Kds++6qyezpWEK740i7pS\/YahtulehrmmKVvbN9d71k5HA01K2vbgN2v6efGw6fSJ8z9n0pXDR9Hk2zS+9dwk\/TQH\/Hr9gn4VcfFr+kbKXp8HHcdj96f2e3pvlFV+l5S43RQaRR9jtK1RukknZSyFEpVlr2kP7NlKPXYMfo1\/dw4einaGHJmVdosbqZ9JPv5cLgme+jT9kPw6yYI+FWn9vtNyoNjcokfbpR2THfXh9CHlnYx7pU2zm6prTztra3btCt7Y30NpT+zPSvd2rH7Nf3qk25K3bjpPS4ZH+nnr9nTA7\/uhoBfdabwa5Cv3dKrx4GS9SGqhq59KbulYS9pjspcjMWM2d2yvG0L2EDD\/avSoNa4euekNpJflUOvt8evmyCEA37VcPn3OWHAUbigB\/myHu2otFS2S93qvUmNlUGzexnnmC6j0okykLSvtDHbQJ9aWrM+RC3G7w+P+Xy4agsZE\/x6ngT8qsPvb9o0YbNHx\/7vX9Pt2c+Klc9+0zbRdjIy+PU8CfhVB79umrDZozPd72\/CmvMHv54nIRzwqwZ+hUXw9aty+0tmCH49T0I44FcN\/AqLwO8f3lM6U9r\/Z\/WAX3dBCAf8qoFfYRH4\/193RqjkiF+3D34tgF9hEQ6Hw9IlwMLg162DXwvgV1iEpW6zYFWIpweXoC2AXwvgVwBYG1yCNgF+LYBfAWBtcAnaBPi1AH4FgLXBJWgT4NcC+BUA1gaXoE2AXwtY\/EoIIQtm9usimMCvBfArIWTlmf26CCbwawH8SghZeWa\/LoIJ\/FoAvxJCVp5HsARFfeDXAviVELLy2H+zMXhxdXVV1Ad+LZD1a8SjR4+65QYAgN3z2muvXeHX8VT59SMAANg1h8MBv\/pQ5dcPAQBg1+BXN6r8+gEAAOwa\/OpGlV9\/CtsnhOC7V\/SSpf+GXZSuhjT3ow9R1dJxdvZBpdGVXfQ6py4bVgt+daPKrz+G7RNC8N0resnSf8MuVR06UtVz19h9dvahqxrrdc5TNqwQ\/OpGlV\/fh+0TQvDdK3rJ0n\/DLlUdOlLVc9fYfXb2oasa63XOUzasEPzqRpVfn8D2CSFkN3ZIW9IHUofDlmm3+i79XkoZUv1SDVIl0pa053RG44vR+7fUKXUrVSv1Xyxbqjm7DlLnsCHwqxtVfr2E7RNCULZ0j6Ut6b7pxv5p2ol9F72M2hrsE6yaTkMxUmENdUZbGrqyl23sWVpD2Bb41Y0qv17A9gkhKFu6x9kt6Y7ZDvunaSeWp9HjIdniLTVI0xn2LHWuTMdlQZS5Z+uUDl86ZWVHfabFwmp7hm2BX92o8uu7sH1CCMqW7rG0Jd033dg\/TTupfaqXau9Bn6DevzKdtmKUx5YhpC3KlPXRi2UrRVp2hM2BX92o8uv3YfuEEJQt3WNli7671FJqI+1SLMMyKaUS+wSNnVTNThq0qs5oS0NXtWXbl05aGdgE+NWNKr9+D7ZPuEm0MW3WPx2+pPSpbyy+ai8j2kvZopcnDa30oxejjJg+zh4FS51RGWlVtUdEaWA\/KErnsBXwqxtVfv1fAGZCCCsZfdlK7GylTtg3+NWNKr\/+PYCZEMJS40ZDL1VJLVupE\/YNfnWjyq9\/BwAAuwa\/umH3KwAAnAP41QejX18DAICzocqv10\/x600sfq36j+8BAGAHFNXA\/WsBi18BAAAiuH8tgF8BAKAB\/FoAvwIAQAP4tQB+BQCABvBrAfwKAAAN4NcC+BUAABrArwXwKwAANIBfC+BXAABoAL8WwK8AANAAfi2AXwEAoAH8WsDi12fPfksIIeR8YtEHfi2AXwkhhESx6AO\/FsCvhBBCojx69Kioht6vHfg1Br8SQgiJUuXXcA1+vQF+JYQQEoX7VwfwKyGEkChVfv3O8cPvHD\/ErzHNfg03GXksx\/SQ7qv3Nr7akaUO\/1xkxSydjzyyDTtKg858vOzDLXvab6v\/tvNh0uLT4byuZvpEaq9Xvgtlb4xfHRjjV8dTZMxZVTu0pX1z5\/YCfP9KMdHazjDWFIPOs7Zr\/hvSbEMYC1i5X5uvZlUXk6rO5\/x7Xjb41QH86tu5vYCt+HWG4dwHxa+zDWEsoO1Nusjf7dx3xK\/ni69fh5+upB+2KE+Hb6dss+zHhtJeUQ1p5VGH6Z3TsHNpRtlq0wKyE8wuoLRi6XT0qoZtlCKzx0g5uMpw0iHIjl47aHHKyiLo61MctziK9CAqW5pvsUj9YBkrLK62NG6xquFK6nPMtpFWJup5zApIg+rnnn09hxNUjqY+VnaFpdVOH1StrdJ\/FPzqgO\/PX7OnVPRWUZ5mT2XpvJROSmmIbD\/SKMYZFYdQCpuuKr0G6WhantqHG3NAlQ6bF8q4hpY+leNo2atqVZWejTU3vAssK1A7SvOZ0Hbci5PSzz1lxGKHxXUrHr7iOZC2rF1byzUBvzrgdf+afTv1GN9F7pcn+9um2ENDbZY\/9aqiNayqSm+cHibl4DYMN+aAKh3qyzKmYPspER2g4kEcs6rZI5VdCn0d9NWWKjH23zxHy+mnn73GVdL3smwsnhX2o1l1ukqrnf455ohkg18dmM6vlr2i9lNcniwXnfFvm2xtlj+NVUnFVFVuuYo1L3X2ULYdUP3cMF5nG9bHeEoU51g736pDbxyr6hBnH9tr8JrjsMGQhuOubzfuOMWFwn6Y9NV2eZcph+AZfnVhBr9mT0THy3Hxwlc8w4Yt2942Ve+Z4rvO5c1sFEnVS\/bhHN\/5ytG0L5TUWL+KNR+O9ERS5lu8ItfWU7Xa0jlvr2r8HC1vpZErYL8meJ0D0roVJyittrRQDcddWodh8KsDE\/n12fX7VrmcDZ8qp0UYUPvGk\/ZSalPeMNFelotCtivpXSdVVXwP622U95K0tvqaW4azHFB7McZTyzKcftT0Oi1d9Q36P5X5Wnq2zLptslGpwy3GqrKHxt5GOdxtR0TZIj1VFtN+xKuOZriJvv76OaNvzM5UGisNfnVgQ7+\/ST8btp59z26dmWHNOaxko8GvDqzcr9m\/VO4yu5\/gqjLbGcVhJRsNfnVg5X4lhBAyf\/CrA\/iVEEJIFPzqwMjvN435+GvOD+jSrxjMMGjVKo1fz5mjfxFjnnWurXPSImcbaP4l2kocD+WcP0FY50\/B8KsDvt8frjrLd+zXhlGm8+tEk5W+Hqm\/tLY4Vlj8S8b6V2O6xZlhoCn+njT\/N+DWc5LgVwfw69RDj6lz\/jIausWvelcbWo3pFmeGgWb7HGLSua\/nJMGvDnh9Pjz8cCN9HP2VUPowRGqcHT0aRWmsnMTZHbP1Z6dgrKdtNaKys8ubHTqdbFqGfWpS7CMah7A0Hj6t6lY6PaTOs4uvjystWttqKHMvbqnaXTk\/ld5WeIrWrmr21aif4uHQV0CZsjSc\/VgohekjGlPl17\/89t\/+5bf\/NuDXCBe\/podWeu9lz0W9c2NLvbF+EiuDWqYgbWnoSim7oc90siPr0butWt7sQSn2aZ9LcUdlFsr62McduRrKFCxbmhsbe8s+XfYUbatWWvDhwXJcamUs6fyvPfP195E93L864Hj\/mj3Ro1NHP7\/180xpWXzbVL0Vi+8rZXRlcWpXw1iesRj7OzM6BFKUY6SspDKENNns7Ipra6mzWGrDltohlAUvni3KlrbGymrXHrXsLNJKpB2Vmi0HuqpaJUqf+noWp6yXYRnOfqDbgl8dcPz+sPQmMZ7flhOo+ZRS3or6oPpYeoXKxcIyzdryilssF6\/ssc7GUkPVEJbDaplL1SIbS7VvMS6U72oo62NvbOzNuLzzn6Jjqm3os2q5jCVZlkgpDL+ujvV8Pmw\/Xyf1a9U7XN\/S0JVUdgihoc\/sHL3emZaridcJoJwSxm6L55I+VvMRnGc19GkaG1f1lp3dsqdoVbWW42VfT6Vnacp6GWPO\/Kp3sRJ+\/urAFN9vSren759oo\/RStlna0vi2yRYj1azvpW9R3hL21YiKUZY6HVp6uxaHtvSm9CmdHvoiFI9FdhFqu7UMml0N43SUBWlYjezc04GUoe2NjW30OpWlLq6PdDql9djPn+KyhOSg6EPos7A31ne0T6FqLGkUJdy\/OsDvb9LTcF6uOcr7nLiv8NQ9V421lcPdfIrWTnCRBdnQoPjVAfw6xam5wmT\/Pr54VcSe3ft1\/ClabJ+9ISbZ4FcH8CshhJAo+NUB\/EoIISQKfnVgZr\/aP5YZfvtg5g82a4sc2Xn6mRUfXhFClg1+dcDRr0YrNPzQaFK\/jnHkeL9mn+JXQsiywa8O4Nc5\/ZpOJ9sDfiWELBv86sAYv6afakaPLfJIXZV+Mpzukvavj6i0TPeKhpY+0ZXaFOeOXwkhKw9+dcDl\/6eLtKH7w8Wv0tDF\/vV9o+3Sfar0VwpjJdJaKYtGCCFzBr86MMav0X2k7ozhjulTy5\/ZHoYulG4cszeXadnZkpSaayvBr4SQrQS\/OuD4\/6sv61f9XFFqc\/erUkOqXvxKCFlh8KsDi38+LLVv9qvuQosRvfxqWQflbxuEELJU8KsDjt9vepb8YLLBuEa\/ZodOP5IdvmQpOx1ar9ky9+Kssze10UaMSwiZM\/jVgfl\/fxOqIISQlQe\/OrDa399ECCFkqeBXB\/j9w4QQQqLgVwfwKyGEkCj41QH8SgghJAp+dQC\/EkIIiYJfHcCvhBBCouBXB\/ArIYSQKPjVAfxKCCEkCn51AL8SQgiJgl8dwK+EEEKi4FcH8CshhJAo+NUB\/EoIISRKlV9Pp9PpdMKvMfiVEEJIFPzqAH4lhBASBb86YPFrxyMAADgbilLArwXsfgUAAOjBrwXwKwAANIBfC+BXAABoAL8WePDgTUIIIaQ2+BUAAMAf\/AoAAOAPfgUAAPAHvwIAAPiDXwEAAPzBrwAAAP7gVwCACg57R5r40r+OcHLcT5Wp\/BpCGN\/JbN0qw3U4dqg8Hd9zW4e+ZUQrpq9hul1paek5fWof3atx7SLAtjgcDl\/cL4pmHj16tLT6J+Tq6sr9VFmRXy27zHmFiq6P7n06dntch1\/TFVPWsEpClp6zHVaN7tW4WCpsmsPh8MUvfvFqj1j8unSNk\/Daa69d4del\/DpRn2flV+PQxl2MttO3V3VSO2KxVNgovV8\/2hfdvCx+XbpSZw6Hwx78mr0P6J9GL2V36S9YaSfGNtFw0V6WKaSPLQVk+1RmIU1Baj8cVG9ZVXDz7PpmaYfSLtKWbIPsgVB2tx\/N7BC1jS2lwkbp\/frhvrD7delKndmJX6NX00u20kl6WZfaZ2UgDa2XmjVTsSulyJCQHfQoL44+I31ebQWPbyzNVClSIjt08WgaR68qtWpqxcawIXq\/frAv7H5dulJnduLX9Cpj8YG0ZdjJsNvsVT7dUnXJU\/pMu1ImpTzVF0dpPBy0dn2k2SkveTWWNiqHQ+pNH2Vkh8V+xjeGbdH79Wf7wu7XpSt1Zg9+LV7LLFdGyxW8dosFpYdmXUmdWHaXBm2b+yb8Whyr2Ezv09GvyqD4dQf0fv3JZIQBw43Zx17Y\/TpyoOzsXGjrcJ9+jWxRtYv7Fn0KVRd3++U+WoFsJ8W1Gm5xX43pGksbG5pZHmep2tHY2F4qbJTer0+nIYSQfZo+8MXu1zGjSLNzoa23Tfp1SLpxuGW4l9RP2kDq1tJG71kaXarTUmTxqWVxsu2HXaWdKD1bCh7ZWN9d6iF9HG4ijZXunl0QafSqUqXG9lJho\/R+fX8aQgjZp92D6FVH7H4dM8p09Td3vj2\/rhaucQAwht6vT6YhhJB92v0VbaJBnzx5YvfrmFGkKfR\/Bx02i6YctZH2qgW\/jkK\/iQEAsNP79XIaQgjZp90VbKJBLy8v7X4dM0pxCl2D4WT7LWkbZYsd\/AoAsAp6v15MQwgh+7R7EL3qiN2vY0aR6h\/eBUXNpIlHP4tROtfBrwAAq6D367vTEELIPk0f+GL365hRssUPN3aP9S1SV20rs1W\/Tvd5bBC+cjzFKNLT8T1XdRhy36DR20fNppsOwPnQ+\/WdaQghZJ8Ot0dtXLD7dcwo2dmlUxu\/xQ5+deu5TWkjB5V6bijGWFK2GX4FGE\/v17cnY\/iX4+HGqI3voHa\/jhxImt1wY3biyl5Ryyo26dcGhdR2PvWO6\/er3ljfiF8BGuj9+ta+sPt16Uqd2Y9f+79u2Lekj\/st0Z\/ZTrIFSANlp5B9KpWtP43GyhYplS0VmSXbTJkOABjp\/fp4X9j9unSlzmzPr5EwpI1VW6SXst7KVqL3lp1FRLZN2m2xnmKd0qtSDVGRlmb4FaCB3q9\/vy\/sfl26Umd26FfLFrtfpV3SIWr9qtQWWcrYuOhXvWejFCW\/FtsAgE7v17\/bF3a\/Ll2pM5v0a9FAxS2r9au0r6W9XqdkXL1Uyd\/ZQfWuAECn89Bhj1j8uku25NcxOtmoX6OXpKcNletSrKocvwKM53A4fHG\/6H59bb9s3q\/HwZ3W8CV9S\/Yl3VJpS0sxSstiJf2WqIE+qWyR2TlGZUhT05sp0wEAI4\/2jjTxq73jfqrs\/\/c3YREAAJifffrVeIcHAAAwEfv0KwAAwLLgVwAAAH\/wKwAAgD\/4FQAAwB\/8CgAA4E\/er4QQQggZk4xfQ\/gzQgghhHjkhl8JIYQQ4pPOr\/8fxUgEBEXZBlsAAAAASUVORK5CYII=\" \/><\/p>\n<p>P.S.\u00a0Keep in mind that this article has been posted in the \u201cQuick-n-<strong>Dirty<\/strong>\u201d category.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the last time I have developed different techniques for manipulating the design elements of XPages applications. While I am still working on a way for manipulating the localization files, I was playing a little bit with DXL imports. Here &hellip; <a href=\"https:\/\/hasselba.ch\/blog\/?p=1080\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,89,76,74],"tags":[33,14,7,31,5,32,3],"class_list":["post-1080","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-java","category-ssjs","category-xpages","tag-8-5-3","tag-designer","tag-domino","tag-java","tag-ssjs","tag-tipp","tag-xpages"],"_links":{"self":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1080","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1080"}],"version-history":[{"count":14,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1080\/revisions"}],"predecessor-version":[{"id":1093,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1080\/revisions\/1093"}],"wp:attachment":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1080"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1080"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1080"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}