From mboxrd@z Thu Jan 1 00:00:00 1970 From: Cecil Westerhof Subject: Re: A strange problem with org-babel and SQLite Date: Mon, 10 Sep 2018 09:05:17 +0200 Message-ID: References: <20180831111725.3aeba880@lt70.mpip-mainz.mpg.de> <20180831132244.6ebcc9df@lt70.mpip-mainz.mpg.de> <20180901142453.312ef164@happy.intern.roklein.de> <20180905085602.18488701@lt70.mpip-mainz.mpg.de> <20180909143622.46baea3c@happy.intern.roklein.de> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="000000000000cfd6a405757efa50" Return-path: Received: from eggs.gnu.org ([208.118.235.92]:60481) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fzGLu-0006aY-Fj for emacs-orgmode@gnu.org; Mon, 10 Sep 2018 03:11:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fzGG7-0004ko-Mt for emacs-orgmode@gnu.org; Mon, 10 Sep 2018 03:05:21 -0400 Received: from mail-oi0-x229.google.com ([2607:f8b0:4003:c06::229]:38200) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fzGG7-0004jG-2i for emacs-orgmode@gnu.org; Mon, 10 Sep 2018 03:05:19 -0400 Received: by mail-oi0-x229.google.com with SMTP id x197-v6so38175035oix.5 for ; Mon, 10 Sep 2018 00:05:18 -0700 (PDT) In-Reply-To: <20180909143622.46baea3c@happy.intern.roklein.de> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: emacs-orgmode@gnu.org --000000000000cfd6a405757efa50 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 2018-09-09 14:36 GMT+02:00 Robert Klein : > On Wed, 5 Sep 2018 08:56:02 +0200 > Robert Klein wrote: > > > Hi Cecil, > > > > On Mon, 3 Sep 2018 03:23:17 +0200 > > Cecil Westerhof wrote: > > > > > It has to do with the data. With the following I can reproduce it: > > > #+BEGIN_SRC sqlite :db ~/testingOrgBabel.sqlite :colnames yes > > > DROP TABLE IF EXISTS quotes > > > ; > > > CREATE TABLE "quotes" ( > > > quoteID TEXT PRIMARY KEY, > > > quote TEXT NOT NULL UNIQUE, > > > lastUsed TEXT, > > > totalUsed INT DEFAULT 'unused' > > > ) > > > ; > > > INSERT INTO quotes > > > (quoteID, quote) > > > VALUES > > > ("1230FCF5-B25D-4087-88A4-41DF3AC353DA", '[ > > > "Limitations live only in our minds. > > > But if we use our imaginations, > > > our possibilities become limitless. > > > > > > - Jamie Paolinett", > > > "Hoe gebruik jij je verbeelding om > > > je mogelijkheden te vergroten?" > > > ]'), > > > (2, "Second record.") > > > ; > > > SELECT * > > > FROM quotes > > > ; > > > #+END_SRC > > > > > > When I put a JSON field in the quote field the parsing goes wrong. > > > > > > > > > > umm, yes. Actually what seems to happen is that emacs tries to > > evaluate the JSON part as emacs lisp code, in this case an array. In > > detail, I think, this happens: > > > > > > - org-babel-execute:sqlite (ob-sqlite, line 60) > > calls (for converting the results) > > > > - org-babel-sqlite-table-or-scalar (ob-sqlite, line 133), > > which apparently thinks the result looks like a =E2=80=9Ctrivial tabl= e=E2=80=9D and > > calls > > > > - org-babel-read (ob-core.el, line 2912), > > which detects the JSON string (begins with a "[ ) as lisp and tries > > to evaluate the lisp form. The call to =E2=80=9Cread=E2=80=9D in lin= e 2927 then > > fails, because there is no closing ] (only the contents on one cell > > is sent to org-babel-read; note, there are no multi-line cells in > > org tables). > > > > > > Line numbers are from Org release_9.1.14-1-g4931fc. > > > > > > > > > > That's no solution of course. To resolve this, > > > > - is there a reason to evaluate table cell contents as lisp code? > > > > If no, > > > > - don't use org-babel-read (in org-babel-sqlite-table-or-scalar) > > - or compare =E2=80=9C(org-babel-result-cond...)=E2=80=9D code with oth= er ob-*.el > > (ob-sql.el?) and rewrite. > > > > If yes, > > > > - is there a way to check if a string is correct lisp code before > > calling =E2=80=9Cread=E2=80=9D? > > > > > > > > In the =E2=80=9Cyes=E2=80=9D case, there's still the issue of JSON bein= g possibly > > detected as =E2=80=9Ccorrect=E2=80=9D lisp code (e.g. ["alfa"]). > > > > > > In your case, if you haven't invested too much in the dependency on > > JSON, you might want to redesign the database, e.g. > > > > > > CREATE TABLE "quotes" ( > > quoteID TEXT PRIMARY KEY, > > quote_en TEXT NOT NULL UNIQUE, > > quote_nl TEXT NOT NULL UNIQUE, > > lastUsed TEXT, > > totalUsed INT DEFAULT 'unused' > > ); > > > > > > > > > > Best regards > > Robert > > Hi Cecil, > > could you try to put the following code in your .emacs _after_ > =E2=80=9Corg-babel-do-load-languages=E2=80=9D for ob-sqlite? > > (defun org-babel-read (cell &optional inhibit-lisp-eval) > "Convert the string value of CELL to a number if appropriate. > Otherwise if cell looks like lisp (meaning it starts with a > \"(\", \"\\=3D'\", \"\\=3D`\" or a \"[\") then read it as lisp, > otherwise return it unmodified as a string. Optional argument > NO-LISP-EVAL inhibits lisp evaluation for situations in which is > it not appropriate." > (if (and (stringp cell) (not (equal cell ""))) > (or (org-babel-number-p cell) > (if (and (not inhibit-lisp-eval) > (or (member (substring cell 0 1) '("(" "'" "`" "[")) > (string=3D cell "*this*"))) > (eval (read cell)) > (if (and (not inhibit-lisp-eval) > (string=3D (substring cell 0 1) "\"")) > (read cell) > (progn (set-text-properties 0 (length cell) nil cell) > cell)))) cell)) > > > (This should work for Emacs 25.x) > It goes quit a way in the right direction. When I execute: SELECT quote , lastUsed , totalUsed FROM quotes WHERE lastUsed =3D DATE('now') I get: | quote | lastUsed | totalUsed | |-----------------------------------+------------+-----------| | "[ | | | | The thought manifests the word; | | | | The word manifests the deed; | | | | The deed develops into habit; | | | | And habit hardens into character; | | | | So watch the thought and | | | | its ways with care. | | | | | | | | - Juan Mascaro"" | | | | Je gedachten zijn | | | | de grondslag van je: | | | | daden | | | | gewoontes en | | | | karakter. | | | | | | | | Waak over je gedachten."" | | | | ]" | 2018-09-10 | 5 | Is not completely correct, because the real quote is: [ "The thought manifests the word; The word manifests the deed; The deed develops into habit; And habit hardens into character; So watch the thought and its ways with care. - Juan Mascaro", "Je gedachten zijn de grondslag van je: daden, gewoontes en karakter. Waak over je gedachten." ] But that is really not a problem. When I execute: SELECT * FROM quotes WHERE lastUsed =3D DATE('now') I get: | quoteID | quote | lastUsed | totalUsed = | |--------------------------------------+------------+----------+-----------= | | 55d0b51c-7b46-44f8-9e67-ebe59c63ca34 | "[ | | = | | The thought manifests the word; | | | = | | The word manifests the deed; | | | = | | The deed develops into habit; | | | = | | And habit hardens into character; | | | = | | So watch the thought and | | | = | | its ways with care. | | | = | | | | | = | | - Juan Mascaro"" | | | = | | Je gedachten zijn | | | = | | de grondslag van je: | | | = | | daden | | | = | | gewoontes en | | | = | | karakter. | | | = | | | | | = | | Waak over je gedachten."" | | | = | | ]" | 2018-09-10 | 5 | = | So everything after the first line of quote goes to quoteID. And the other fields go a to the previous field. At the moment that is not a query I need to do, and if I need everything I could rewrite it as: SELECT quote , quoteID , lastUsed , totalUsed FROM quotes WHERE lastUsed =3D DATE('now') and then I get: | quote | quoteID | lastUsed | totalUsed | |-----------------------------------+--------------------------------------= +------------+-----------| | "[ | | | | | The thought manifests the word; | | | | | The word manifests the deed; | | | | | The deed develops into habit; | | | | | And habit hardens into character; | | | | | So watch the thought and | | | | | its ways with care. | | | | | | | | | | - Juan Mascaro"" | | | | | Je gedachten zijn | | | | | de grondslag van je: | | | | | daden | | | | | gewoontes en | | | | | karakter. | | | | | | | | | | Waak over je gedachten."" | | | | | ]" | 55d0b51c-7b46-44f8-9e67-ebe59c63ca34 | 2018-09-10 | 5 | I would get a problem when I have two fields that contain JSON data, but I think it is very unlikely I will get in such a situation. --=20 Cecil Westerhof --000000000000cfd6a405757efa50 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9Imx0 ciI+PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9Imx0ciI+PGRpdiBjbGFz cz0iZ21haWxfZXh0cmEiPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj4yMDE4LTA5LTA5IDE0OjM2 IEdNVCswMjowMCBSb2JlcnQgS2xlaW4gPHNwYW4gZGlyPSJsdHIiPiZsdDs8YSBocmVmPSJtYWls dG86cm9rbGVpbkByb2tsZWluLmRlIiB0YXJnZXQ9Il9ibGFuayI+cm9rbGVpbkByb2tsZWluLmRl PC9hPiZndDs8L3NwYW4+Ojxicj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxl PSJtYXJnaW46MHB4IDBweCAwcHggMC44ZXg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYigyMDQs MjA0LDIwNCk7cGFkZGluZy1sZWZ0OjFleCI+PGRpdiBjbGFzcz0iZ21haWwtSE9FblpiIj48ZGl2 IGNsYXNzPSJnbWFpbC1oNSI+T24gV2VkLCA1IFNlcCAyMDE4IDA4OjU2OjAyICswMjAwPGJyPg0K Um9iZXJ0IEtsZWluICZsdDs8YSBocmVmPSJtYWlsdG86cm9rbGVpbkByb2tsZWluLmRlIj5yb2ts ZWluQHJva2xlaW4uZGU8L2E+Jmd0OyB3cm90ZTo8YnI+DQo8YnI+DQomZ3Q7IEhpIENlY2lsLDxi cj4NCiZndDsgPGJyPg0KJmd0OyBPbiBNb24sIDMgU2VwIDIwMTggMDM6MjM6MTcgKzAyMDA8YnI+ DQomZ3Q7IENlY2lsIFdlc3RlcmhvZiAmbHQ7PGEgaHJlZj0ibWFpbHRvOmNsZHdlc3RlcmhvZkBn bWFpbC5jb20iPmNsZHdlc3RlcmhvZkBnbWFpbC5jb208L2E+Jmd0OyB3cm90ZTo8YnI+DQomZ3Q7 IDxicj4NCiZndDsgJmd0OyBJdCBoYXMgdG8gZG8gd2l0aCB0aGUgZGF0YS4gV2l0aCB0aGUgZm9s bG93aW5nIEkgY2FuIHJlcHJvZHVjZSBpdDo8YnI+DQomZ3Q7ICZndDsgIytCRUdJTl9TUkMgc3Fs aXRlIDpkYiB+L3Rlc3RpbmdPcmdCYWJlbC5zcWxpdGUgOmNvbG5hbWVzIHllczxicj4NCiZndDsg Jmd0OyBEUk9QIFRBQkxFIElGIEVYSVNUUyBxdW90ZXM8YnI+DQomZ3Q7ICZndDsgOzxicj4NCiZn dDsgJmd0OyBDUkVBVEUgVEFCTEUgJnF1b3Q7cXVvdGVzJnF1b3Q7ICg8YnI+DQomZ3Q7ICZndDvC oCDCoCDCoHF1b3RlSUTCoCDCoCDCoCDCoCDCoFRFWFTCoCDCoCDCoCDCoCDCoCDCoFBSSU1BUlkg S0VZLDxicj4NCiZndDsgJmd0O8KgIMKgIMKgcXVvdGXCoCDCoCDCoCDCoCDCoCDCoFRFWFQgTk9U IE5VTEzCoCBVTklRVUUsPGJyPg0KJmd0OyAmZ3Q7wqAgwqAgwqBsYXN0VXNlZMKgIMKgIMKgIMKg IFRFWFQsPGJyPg0KJmd0OyAmZ3Q7wqAgwqAgwqB0b3RhbFVzZWTCoCDCoCDCoCDCoElOVMKgIERF RkFVTFQgJiMzOTt1bnVzZWQmIzM5Ozxicj4NCiZndDsgJmd0OyApPGJyPg0KJmd0OyAmZ3Q7IDs8 YnI+DQomZ3Q7ICZndDsgSU5TRVJUIElOVE8gcXVvdGVzPGJyPg0KJmd0OyAmZ3Q7IChxdW90ZUlE LCBxdW90ZSk8YnI+DQomZ3Q7ICZndDsgVkFMVUVTPGJyPg0KJmd0OyAmZ3Q7ICgmcXVvdDsxMjMw RkNGNS1CMjVELTQwODctODhBNC08d2JyPjQxREYzQUMzNTNEQSZxdW90OywgJiMzOTtbPGJyPg0K Jmd0OyAmZ3Q7wqAgwqAmcXVvdDtMaW1pdGF0aW9ucyBsaXZlIG9ubHkgaW4gb3VyIG1pbmRzLjxi cj4NCiZndDsgJmd0OyBCdXQgaWYgd2UgdXNlIG91ciBpbWFnaW5hdGlvbnMsPGJyPg0KJmd0OyAm Z3Q7IG91ciBwb3NzaWJpbGl0aWVzIGJlY29tZSBsaW1pdGxlc3MuPGJyPg0KJmd0OyAmZ3Q7IDxi cj4NCiZndDsgJmd0OyAtIEphbWllIFBhb2xpbmV0dCZxdW90Oyw8YnI+DQomZ3Q7ICZndDvCoCDC oCZxdW90O0hvZSBnZWJydWlrIGppaiBqZSB2ZXJiZWVsZGluZyBvbTxicj4NCiZndDsgJmd0OyBq ZSBtb2dlbGlqa2hlZGVuIHRlIHZlcmdyb3Rlbj8mcXVvdDs8YnI+DQomZ3Q7ICZndDsgXSYjMzk7 KSw8YnI+DQomZ3Q7ICZndDsgKDIsICZxdW90O1NlY29uZCByZWNvcmQuJnF1b3Q7KTxicj4NCiZn dDsgJmd0OyA7PGJyPg0KJmd0OyAmZ3Q7IFNFTEVDVCAqPGJyPg0KJmd0OyAmZ3Q7IEZST03CoCDC oHF1b3Rlczxicj4NCiZndDsgJmd0OyA7PGJyPg0KJmd0OyAmZ3Q7ICMrRU5EX1NSQzxicj4NCiZn dDsgJmd0OyA8YnI+DQomZ3Q7ICZndDsgV2hlbiBJIHB1dCBhIEpTT04gZmllbGQgaW4gdGhlIHF1 b3RlIGZpZWxkIHRoZSBwYXJzaW5nIGdvZXMgd3JvbmcuPGJyPg0KJmd0OyAmZ3Q7IDxicj4NCiZn dDsgJmd0O8KgIMKgPGJyPg0KJmd0OyA8YnI+DQomZ3Q7IHVtbSwgeWVzLsKgIEFjdHVhbGx5IHdo YXQgc2VlbXMgdG8gaGFwcGVuIGlzIHRoYXQgZW1hY3MgdHJpZXMgdG88YnI+DQomZ3Q7IGV2YWx1 YXRlIHRoZSBKU09OIHBhcnQgYXMgZW1hY3MgbGlzcCBjb2RlLCBpbiB0aGlzIGNhc2UgYW4gYXJy YXkuwqAgSW48YnI+DQomZ3Q7IGRldGFpbCwgSSB0aGluaywgdGhpcyBoYXBwZW5zOjxicj4NCiZn dDsgPGJyPg0KJmd0OyA8YnI+DQomZ3Q7IC0gb3JnLWJhYmVsLWV4ZWN1dGU6c3FsaXRlIChvYi1z cWxpdGUsIGxpbmUgNjApPGJyPg0KJmd0O8KgIMKgY2FsbHMgKGZvciBjb252ZXJ0aW5nIHRoZSBy ZXN1bHRzKTxicj4NCiZndDsgPGJyPg0KJmd0OyAtIG9yZy1iYWJlbC1zcWxpdGUtdGFibGUtb3It PHdicj5zY2FsYXIgKG9iLXNxbGl0ZSwgbGluZSAxMzMpLDxicj4NCiZndDvCoCDCoHdoaWNoIGFw cGFyZW50bHkgdGhpbmtzIHRoZSByZXN1bHQgbG9va3MgbGlrZSBhIOKAnHRyaXZpYWwgdGFibGXi gJ0gYW5kPGJyPg0KJmd0O8KgIMKgY2FsbHM8YnI+DQomZ3Q7IDxicj4NCiZndDsgLSBvcmctYmFi ZWwtcmVhZCAob2ItY29yZS5lbCwgbGluZSAyOTEyKSw8YnI+DQomZ3Q7wqAgwqB3aGljaCBkZXRl Y3RzIHRoZSBKU09OIHN0cmluZyAoYmVnaW5zIHdpdGggYSAmcXVvdDtbICkgYXMgbGlzcCBhbmQg dHJpZXM8YnI+DQomZ3Q7wqAgwqB0byBldmFsdWF0ZSB0aGUgbGlzcCBmb3JtLsKgIFRoZSBjYWxs IHRvIOKAnHJlYWTigJ0gaW4gbGluZSAyOTI3IHRoZW48YnI+DQomZ3Q7wqAgwqBmYWlscywgYmVj YXVzZSB0aGVyZSBpcyBubyBjbG9zaW5nIF3CoCAob25seSB0aGUgY29udGVudHMgb24gb25lIGNl bGw8YnI+DQomZ3Q7wqAgwqBpcyBzZW50IHRvIG9yZy1iYWJlbC1yZWFkOyBub3RlLCB0aGVyZSBh cmUgbm8gbXVsdGktbGluZSBjZWxscyBpbjxicj4NCiZndDsgb3JnIHRhYmxlcykuPGJyPg0KJmd0 OyA8YnI+DQomZ3Q7IDxicj4NCiZndDsgTGluZSBudW1iZXJzIGFyZSBmcm9tIE9yZyByZWxlYXNl XzkuMS4xNC0xLWc0OTMxZmMuPGJyPg0KJmd0OyA8YnI+DQomZ3Q7IDxicj4NCiZndDsgPGJyPg0K Jmd0OyA8YnI+DQomZ3Q7IFRoYXQmIzM5O3Mgbm8gc29sdXRpb24gb2YgY291cnNlLiBUbyByZXNv bHZlIHRoaXMsPGJyPg0KJmd0OyA8YnI+DQomZ3Q7IC0gaXMgdGhlcmUgYSByZWFzb24gdG8gZXZh bHVhdGUgdGFibGUgY2VsbCBjb250ZW50cyBhcyBsaXNwIGNvZGU/PGJyPg0KJmd0OyA8YnI+DQom Z3Q7IElmIG5vLDxicj4NCiZndDsgPGJyPg0KJmd0OyAtIGRvbiYjMzk7dCB1c2Ugb3JnLWJhYmVs LXJlYWQgKGluIG9yZy1iYWJlbC1zcWxpdGUtdGFibGUtb3ItPHdicj5zY2FsYXIpPGJyPg0KJmd0 OyAtIG9yIGNvbXBhcmUg4oCcKG9yZy1iYWJlbC1yZXN1bHQtY29uZC4uLinigJ0gY29kZSB3aXRo IG90aGVyIG9iLSouZWw8YnI+DQomZ3Q7wqAgwqAob2Itc3FsLmVsPykgYW5kIHJld3JpdGUuPGJy Pg0KJmd0OyA8YnI+DQomZ3Q7IElmIHllcyw8YnI+DQomZ3Q7IDxicj4NCiZndDsgLSBpcyB0aGVy ZSBhIHdheSB0byBjaGVjayBpZiBhIHN0cmluZyBpcyBjb3JyZWN0IGxpc3AgY29kZSBiZWZvcmU8 YnI+DQomZ3Q7wqAgwqBjYWxsaW5nIOKAnHJlYWTigJ0/PGJyPg0KJmd0OyA8YnI+DQomZ3Q7IDxi cj4NCiZndDsgPGJyPg0KJmd0OyBJbiB0aGUg4oCceWVz4oCdIGNhc2UsIHRoZXJlJiMzOTtzIHN0 aWxsIHRoZSBpc3N1ZSBvZiBKU09OIGJlaW5nIHBvc3NpYmx5PGJyPg0KJmd0OyBkZXRlY3RlZCBh cyDigJxjb3JyZWN04oCdIGxpc3AgY29kZSAoZS5nLiBbJnF1b3Q7YWxmYSZxdW90O10pLjxicj4N CiZndDsgPGJyPg0KJmd0OyA8YnI+DQomZ3Q7IEluIHlvdXIgY2FzZSwgaWYgeW91IGhhdmVuJiMz OTt0IGludmVzdGVkIHRvbyBtdWNoIGluIHRoZSBkZXBlbmRlbmN5IG9uPGJyPg0KJmd0OyBKU09O LCB5b3UgbWlnaHQgd2FudCB0byByZWRlc2lnbiB0aGUgZGF0YWJhc2UsIGUuZy4gPGJyPg0KJmd0 OyA8YnI+DQomZ3Q7IDxicj4NCiZndDsgQ1JFQVRFIFRBQkxFICZxdW90O3F1b3RlcyZxdW90OyAo PGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgcXVvdGVJRMKgIMKgIMKgIMKgIMKgVEVYVMKgIMKgIMKg IMKgIMKgIMKgUFJJTUFSWSBLRVksPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgcXVvdGVfZW7CoCDC oCDCoCDCoCBURVhUIE5PVCBOVUxMwqAgVU5JUVVFLDxicj4NCiZndDvCoCDCoCDCoCDCoHF1b3Rl X25swqAgwqAgwqAgwqAgVEVYVCBOT1QgTlVMTMKgIFVOSVFVRSw8YnI+DQomZ3Q7wqAgwqAgwqAg wqAgwqBsYXN0VXNlZMKgIMKgIMKgIMKgIFRFWFQsPGJyPg0KJmd0O8KgIMKgIMKgIMKgIMKgdG90 YWxVc2VkwqAgwqAgwqAgwqBJTlTCoCBERUZBVUxUICYjMzk7dW51c2VkJiMzOTs8YnI+DQomZ3Q7 wqAgwqAgwqApOzxicj4NCiZndDsgPGJyPg0KJmd0OyA8YnI+DQomZ3Q7IDxicj4NCiZndDsgPGJy Pg0KJmd0OyBCZXN0IHJlZ2FyZHM8YnI+DQomZ3Q7IFJvYmVydDxicj4NCjxicj4NCjwvZGl2Pjwv ZGl2PkhpIENlY2lsLDxicj4NCjxicj4NCmNvdWxkIHlvdSB0cnkgdG8gcHV0IHRoZSBmb2xsb3dp bmcgY29kZSBpbiB5b3VyIC5lbWFjcyBfYWZ0ZXJfPGJyPg0K4oCcb3JnLWJhYmVsLWRvLWxvYWQt bGFuZ3VhZ2Vz4oCdIGZvciBvYi1zcWxpdGU/PGJyPg0KPGJyPg0KKGRlZnVuIG9yZy1iYWJlbC1y ZWFkIChjZWxsICZhbXA7b3B0aW9uYWwgaW5oaWJpdC1saXNwLWV2YWwpPGJyPg0KwqAgJnF1b3Q7 Q29udmVydCB0aGUgc3RyaW5nIHZhbHVlIG9mIENFTEwgdG8gYSBudW1iZXIgaWYgYXBwcm9wcmlh dGUuPGJyPg0KT3RoZXJ3aXNlIGlmIGNlbGwgbG9va3MgbGlrZSBsaXNwIChtZWFuaW5nIGl0IHN0 YXJ0cyB3aXRoIGE8YnI+DQpcJnF1b3Q7KFwmcXVvdDssIFwmcXVvdDtcXD0mIzM5O1wmcXVvdDss IFwmcXVvdDtcXD1gXCZxdW90OyBvciBhIFwmcXVvdDtbXCZxdW90OykgdGhlbiByZWFkIGl0IGFz IGxpc3AsPGJyPg0Kb3RoZXJ3aXNlIHJldHVybiBpdCB1bm1vZGlmaWVkIGFzIGEgc3RyaW5nLsKg IE9wdGlvbmFsIGFyZ3VtZW50PGJyPg0KTk8tTElTUC1FVkFMIGluaGliaXRzIGxpc3AgZXZhbHVh dGlvbiBmb3Igc2l0dWF0aW9ucyBpbiB3aGljaCBpczxicj4NCml0IG5vdCBhcHByb3ByaWF0ZS4m cXVvdDs8YnI+DQrCoCAoaWYgKGFuZCAoc3RyaW5ncCBjZWxsKSAobm90IChlcXVhbCBjZWxsICZx dW90OyZxdW90OykpKTxicj4NCsKgIMKgIMKgIChvciAob3JnLWJhYmVsLW51bWJlci1wIGNlbGwp PGJyPg0KwqAgwqAgwqAgwqAgwqAgKGlmIChhbmQgKG5vdCBpbmhpYml0LWxpc3AtZXZhbCk8YnI+ DQrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoChvciAobWVtYmVyIChzdWJzdHJpbmcgY2Vs bCAwIDEpICYjMzk7KCZxdW90OygmcXVvdDsgJnF1b3Q7JiMzOTsmcXVvdDsgJnF1b3Q7YCZxdW90 OyAmcXVvdDtbJnF1b3Q7KSk8YnI+DQrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oChzdHJpbmc9IGNlbGwgJnF1b3Q7KnRoaXMqJnF1b3Q7KSkpPGJyPg0KwqAgwqAgwqAgwqAgwqAg wqAgwqAgKGV2YWwgKHJlYWQgY2VsbCkpPGJyPg0KwqAgwqAgwqAgwqAgwqAgwqAgKGlmIChhbmQg KG5vdCBpbmhpYml0LWxpc3AtZXZhbCk8YnI+DQrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoChzdHJpbmc9IChzdWJzdHJpbmcgY2VsbCAwIDEpICZxdW90O1wmcXVvdDsmcXVvdDspKTxi cj4NCsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIChyZWFkIGNlbGwpPGJyPg0KwqAgwqAgwqAgwqAg wqAgwqAgwqAgKHByb2duIChzZXQtdGV4dC1wcm9wZXJ0aWVzIDAgKGxlbmd0aCBjZWxsKSBuaWwg Y2VsbCk8YnI+DQpjZWxsKSkpKSBjZWxsKSk8YnI+DQo8YnI+DQo8YnI+DQooVGhpcyBzaG91bGQg d29yayBmb3IgRW1hY3MgMjUueCk8YnI+PC9ibG9ja3F1b3RlPjxkaXY+PGJyPjwvZGl2PjxkaXYg c3R5bGU9ImZvbnQtZmFtaWx5OmNvdXJpZXIgbmV3LG1vbm9zcGFjZSIgY2xhc3M9ImdtYWlsX2Rl ZmF1bHQiPkl0IGdvZXMgcXVpdCBhIHdheSBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLjwvZGl2Pjxk aXYgc3R5bGU9ImZvbnQtZmFtaWx5OmNvdXJpZXIgbmV3LG1vbm9zcGFjZSIgY2xhc3M9ImdtYWls X2RlZmF1bHQiPjxicj48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTpjb3VyaWVyIG5ldyxt b25vc3BhY2UiIGNsYXNzPSJnbWFpbF9kZWZhdWx0Ij5XaGVuIEkgZXhlY3V0ZTo8L2Rpdj48ZGl2 IHN0eWxlPSJmb250LWZhbWlseTpjb3VyaWVyIG5ldyxtb25vc3BhY2UiIGNsYXNzPSJnbWFpbF9k ZWZhdWx0Ij5TRUxFQ1QgcXVvdGU8YnI+LMKgwqDCoMKgwqAgbGFzdFVzZWQ8YnI+LMKgwqDCoMKg wqAgdG90YWxVc2VkPGJyPkZST03CoMKgIHF1b3Rlczxicj5XSEVSRcKgIGxhc3RVc2VkID0gREFU RSgmIzM5O25vdyYjMzk7KTxicj48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTpjb3VyaWVy IG5ldyxtb25vc3BhY2UiIGNsYXNzPSJnbWFpbF9kZWZhdWx0Ij48YnI+PC9kaXY+PGRpdiBzdHls ZT0iZm9udC1mYW1pbHk6Y291cmllciBuZXcsbW9ub3NwYWNlIiBjbGFzcz0iZ21haWxfZGVmYXVs dCI+SSBnZXQ6PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6Y291cmllciBuZXcsbW9ub3Nw YWNlIiBjbGFzcz0iZ21haWxfZGVmYXVsdCI+fCBxdW90ZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIGxhc3RVc2VkIHwgdG90YWxV c2VkIHw8YnI+fC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLXw8YnI+fCAmcXVvdDtbwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fMKgwqDCoMKgwqDCoMKgwqDCoMKgIHw8YnI+fCBUaGUgdGhvdWdodCBtYW5pZmVzdHMgdGhlIHdv cmQ7wqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqAgfDxi cj58IFRoZSB3b3JkIG1hbmlmZXN0cyB0aGUgZGVlZDvCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoCB8PGJyPnwgVGhlIGRlZWQgZGV2ZWxvcHMg aW50byBoYWJpdDvCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKg wqDCoMKgwqAgfDxicj58IEFuZCBoYWJpdCBoYXJkZW5zIGludG8gY2hhcmFjdGVyOyB8wqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqAgfDxicj58IFNvIHdhdGNoIHRo ZSB0aG91Z2h0IGFuZMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 wqDCoMKgwqDCoMKgwqDCoMKgwqAgfDxicj58IGl0cyB3YXlzIHdpdGggY2FyZS7CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDC oMKgwqDCoCB8PGJyPnzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKg wqDCoMKgwqDCoMKgwqAgfDxicj58IC0gSnVhbiBNYXNjYXJvJnF1b3Q7JnF1b3Q7wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKg wqDCoMKgwqDCoMKgwqAgfDxicj58IEplIGdlZGFjaHRlbiB6aWpuwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDC oMKgIHw8YnI+fCBkZSBncm9uZHNsYWcgdmFuIGplOsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoCB8PGJyPnwgZGFk ZW7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqAgfDxicj58IGdl d29vbnRlcyBlbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqAgfDxicj58IGthcmFrdGVy LsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqAgfDxicj58wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgIHw8YnI+fCBXYWFr IG92ZXIgamUgZ2VkYWNodGVuLiZxdW90OyZxdW90O8KgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgIHw8YnI+fCBdJnF1b3Q7wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fCAyMDE4LTA5LTEwIHzCoMKgwqDCoMKgwqDCoMKgIDUgfDxicj48L2Rpdj48ZGl2IHN0eWxlPSJm b250LWZhbWlseTpjb3VyaWVyIG5ldyxtb25vc3BhY2UiIGNsYXNzPSJnbWFpbF9kZWZhdWx0Ij48 YnI+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6Y291cmllciBuZXcsbW9ub3NwYWNlIiBj bGFzcz0iZ21haWxfZGVmYXVsdCI+SXMgbm90IGNvbXBsZXRlbHkgY29ycmVjdCwgYmVjYXVzZSB0 aGUgcmVhbCBxdW90ZSBpczo8L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTpjb3VyaWVyIG5l dyxtb25vc3BhY2UiIGNsYXNzPSJnbWFpbF9kZWZhdWx0Ij4NCg0KPHAgc3R5bGU9Im1hcmdpbjow cHg7d2hpdGUtc3BhY2U6cHJlLXdyYXAiPls8L3A+DQo8cCBzdHlsZT0ibWFyZ2luOjBweDt3aGl0 ZS1zcGFjZTpwcmUtd3JhcCI+ICAmcXVvdDtUaGUgdGhvdWdodCBtYW5pZmVzdHMgdGhlIHdvcmQ7 PC9wPg0KPHAgc3R5bGU9Im1hcmdpbjowcHg7d2hpdGUtc3BhY2U6cHJlLXdyYXAiPlRoZSB3b3Jk IG1hbmlmZXN0cyB0aGUgZGVlZDs8L3A+DQo8cCBzdHlsZT0ibWFyZ2luOjBweDt3aGl0ZS1zcGFj ZTpwcmUtd3JhcCI+VGhlIGRlZWQgZGV2ZWxvcHMgaW50byBoYWJpdDs8L3A+DQo8cCBzdHlsZT0i bWFyZ2luOjBweDt3aGl0ZS1zcGFjZTpwcmUtd3JhcCI+QW5kIGhhYml0IGhhcmRlbnMgaW50byBj aGFyYWN0ZXI7PC9wPg0KPHAgc3R5bGU9Im1hcmdpbjowcHg7d2hpdGUtc3BhY2U6cHJlLXdyYXAi PlNvIHdhdGNoIHRoZSB0aG91Z2h0IGFuZDwvcD4NCjxwIHN0eWxlPSJtYXJnaW46MHB4O3doaXRl LXNwYWNlOnByZS13cmFwIj5pdHMgd2F5cyB3aXRoIGNhcmUuPC9wPg0KPHAgc3R5bGU9Im1hcmdp bjowcHg7d2hpdGUtc3BhY2U6cHJlLXdyYXAiPjxicj48L3A+DQo8cCBzdHlsZT0ibWFyZ2luOjBw eDt3aGl0ZS1zcGFjZTpwcmUtd3JhcCI+LSBKdWFuIE1hc2Nhcm8mcXVvdDssPC9wPg0KPHAgc3R5 bGU9Im1hcmdpbjowcHg7d2hpdGUtc3BhY2U6cHJlLXdyYXAiPiAgJnF1b3Q7SmUgZ2VkYWNodGVu IHppam48L3A+DQo8cCBzdHlsZT0ibWFyZ2luOjBweDt3aGl0ZS1zcGFjZTpwcmUtd3JhcCI+ZGUg Z3JvbmRzbGFnIHZhbiBqZTo8L3A+DQo8cCBzdHlsZT0ibWFyZ2luOjBweDt3aGl0ZS1zcGFjZTpw cmUtd3JhcCI+ZGFkZW4sPC9wPg0KPHAgc3R5bGU9Im1hcmdpbjowcHg7d2hpdGUtc3BhY2U6cHJl LXdyYXAiPmdld29vbnRlcyBlbjwvcD4NCjxwIHN0eWxlPSJtYXJnaW46MHB4O3doaXRlLXNwYWNl OnByZS13cmFwIj5rYXJha3Rlci48L3A+DQo8cCBzdHlsZT0ibWFyZ2luOjBweDt3aGl0ZS1zcGFj ZTpwcmUtd3JhcCI+PGJyPjwvcD4NCjxwIHN0eWxlPSJtYXJnaW46MHB4O3doaXRlLXNwYWNlOnBy ZS13cmFwIj5XYWFrIG92ZXIgamUgZ2VkYWNodGVuLiZxdW90OzwvcD4NCjxwIHN0eWxlPSJtYXJn aW46MHB4O3doaXRlLXNwYWNlOnByZS13cmFwIj5dPC9wPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQt ZmFtaWx5OmNvdXJpZXIgbmV3LG1vbm9zcGFjZSIgY2xhc3M9ImdtYWlsX2RlZmF1bHQiPjxicj48 L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTpjb3VyaWVyIG5ldyxtb25vc3BhY2UiIGNsYXNz PSJnbWFpbF9kZWZhdWx0Ij5CdXQgdGhhdCBpcyByZWFsbHkgbm90IGEgcHJvYmxlbS48L2Rpdj48 ZGl2IHN0eWxlPSJmb250LWZhbWlseTpjb3VyaWVyIG5ldyxtb25vc3BhY2UiIGNsYXNzPSJnbWFp bF9kZWZhdWx0Ij48YnI+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6Y291cmllciBuZXcs bW9ub3NwYWNlIiBjbGFzcz0iZ21haWxfZGVmYXVsdCI+PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImZv bnQtZmFtaWx5OmNvdXJpZXIgbmV3LG1vbm9zcGFjZSIgY2xhc3M9ImdtYWlsX2RlZmF1bHQiPldo ZW4gSSBleGVjdXRlOjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OmNvdXJpZXIgbmV3LG1v bm9zcGFjZSIgY2xhc3M9ImdtYWlsX2RlZmF1bHQiPlNFTEVDVCAqPGJyPkZST03CoMKgIHF1b3Rl czxicj5XSEVSRcKgIGxhc3RVc2VkID0gREFURSgmIzM5O25vdyYjMzk7KTxicj48L2Rpdj48ZGl2 IHN0eWxlPSJmb250LWZhbWlseTpjb3VyaWVyIG5ldyxtb25vc3BhY2UiIGNsYXNzPSJnbWFpbF9k ZWZhdWx0Ij48YnI+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6Y291cmllciBuZXcsbW9u b3NwYWNlIiBjbGFzcz0iZ21haWxfZGVmYXVsdCI+SSBnZXQ6PC9kaXY+PGRpdiBzdHlsZT0iZm9u dC1mYW1pbHk6Y291cmllciBuZXcsbW9ub3NwYWNlIiBjbGFzcz0iZ21haWxfZGVmYXVsdCI+fCBx dW90ZUlEwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8IHF1b3RlwqDCoMKgwqDCoCB8IGxhc3RVc2VkIHwgdG90YWxVc2VkIHw8YnI+fC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0tfDxicj58IDU1ZDBiNTFjLTdiNDYtNDRmOC05ZTY3LWViZTU5YzYzY2Ez NCB8ICZxdW90O1vCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKg wqDCoMKgwqDCoMKgIHw8YnI+fCBUaGUgdGhvdWdodCBtYW5pZmVzdHMgdGhlIHdvcmQ7wqDCoMKg wqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDC oMKgwqDCoMKgwqDCoCB8PGJyPnwgVGhlIHdvcmQgbWFuaWZlc3RzIHRoZSBkZWVkO8KgwqDCoMKg wqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDC oMKgwqDCoMKgwqDCoMKgwqAgfDxicj58IFRoZSBkZWVkIGRldmVsb3BzIGludG8gaGFiaXQ7wqDC oMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoCB8 wqDCoMKgwqDCoMKgwqDCoMKgwqAgfDxicj58IEFuZCBoYWJpdCBoYXJkZW5zIGludG8gY2hhcmFj dGVyO8KgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgIHzC oMKgwqDCoMKgwqDCoMKgwqDCoCB8PGJyPnwgU28gd2F0Y2ggdGhlIHRob3VnaHQgYW5kwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDC oMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgIHw8YnI+fCBpdHMgd2F5cyB3aXRoIGNhcmUuwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 wqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoCB8PGJyPnzCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKg wqDCoMKgwqDCoMKgwqDCoCB8PGJyPnwgLSBKdWFuIE1hc2Nhcm8mcXVvdDsmcXVvdDvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHzCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgIHw8YnI+fCBKZSBnZWRh Y2h0ZW4gemlqbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKg IHw8YnI+fCBkZSBncm9uZHNsYWcgdmFuIGplOsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKg wqDCoMKgwqDCoMKgIHw8YnI+fCBkYWRlbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzC oMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgIHw8YnI+fCBnZXdvb250ZXMg ZW7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKg wqAgfDxicj58IGthcmFrdGVyLsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDC oMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoCB8PGJyPnzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDC oCB8PGJyPnwgV2FhayBvdmVyIGplIGdlZGFjaHRlbi4mcXVvdDsmcXVvdDvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqAgfMKg wqDCoMKgwqDCoMKgwqDCoMKgIHw8YnI+fCBdJnF1b3Q7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAyMDE4LTA5LTEw IHzCoMKgwqDCoMKgwqDCoCA1IHzCoMKgwqDCoMKgwqDCoMKgwqDCoCB8PGJyPjwvZGl2PjxkaXYg c3R5bGU9ImZvbnQtZmFtaWx5OmNvdXJpZXIgbmV3LG1vbm9zcGFjZSIgY2xhc3M9ImdtYWlsX2Rl ZmF1bHQiPjxicj48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTpjb3VyaWVyIG5ldyxtb25v c3BhY2UiIGNsYXNzPSJnbWFpbF9kZWZhdWx0Ij5TbyBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaXJz dCBsaW5lIG9mIHF1b3RlIGdvZXMgdG8gcXVvdGVJRC4gQW5kIHRoZSBvdGhlciBmaWVsZHMgZ28g YSB0byB0aGUgcHJldmlvdXMgZmllbGQuPC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6Y291 cmllciBuZXcsbW9ub3NwYWNlIiBjbGFzcz0iZ21haWxfZGVmYXVsdCI+PGJyPjwvZGl2PjxkaXYg c3R5bGU9ImZvbnQtZmFtaWx5OmNvdXJpZXIgbmV3LG1vbm9zcGFjZSIgY2xhc3M9ImdtYWlsX2Rl ZmF1bHQiPkF0IHRoZSBtb21lbnQgdGhhdCBpcyBub3QgYSBxdWVyeSBJIG5lZWQgdG8gZG8sIGFu ZCBpZiBJIG5lZWQgZXZlcnl0aGluZyBJIGNvdWxkIHJld3JpdGUgaXQgYXM6PC9kaXY+PGRpdiBz dHlsZT0iZm9udC1mYW1pbHk6Y291cmllciBuZXcsbW9ub3NwYWNlIiBjbGFzcz0iZ21haWxfZGVm YXVsdCI+U0VMRUNUIHF1b3RlPGJyPizCoMKgwqDCoMKgIHF1b3RlSUQ8YnI+LMKgwqDCoMKgwqAg bGFzdFVzZWQ8YnI+LMKgwqDCoMKgwqAgdG90YWxVc2VkPGJyPkZST03CoMKgIHF1b3Rlczxicj5X SEVSRcKgIGxhc3RVc2VkID0gREFURSgmIzM5O25vdyYjMzk7KTxicj48L2Rpdj48ZGl2IHN0eWxl PSJmb250LWZhbWlseTpjb3VyaWVyIG5ldyxtb25vc3BhY2UiIGNsYXNzPSJnbWFpbF9kZWZhdWx0 Ij48YnI+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6Y291cmllciBuZXcsbW9ub3NwYWNl IiBjbGFzcz0iZ21haWxfZGVmYXVsdCI+YW5kIHRoZW4gSSBnZXQ6PC9kaXY+PGRpdiBzdHlsZT0i Zm9udC1mYW1pbHk6Y291cmllciBuZXcsbW9ub3NwYWNlIiBjbGFzcz0iZ21haWxfZGVmYXVsdCI+ fCBxdW90ZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgcXVvdGVJRMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgbGFzdFVzZWQgfCB0b3RhbFVzZWQgfDxicj58LS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tfDxicj58ICZxdW90O1vCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKg wqDCoMKgIHw8YnI+fCBUaGUgdGhvdWdodCBtYW5pZmVzdHMgdGhlIHdvcmQ7wqDCoCB8wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKg IHw8YnI+fCBUaGUgd29yZCBtYW5pZmVzdHMgdGhlIGRlZWQ7wqDCoMKgwqDCoCB8wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgIHw8 YnI+fCBUaGUgZGVlZCBkZXZlbG9wcyBpbnRvIGhhYml0O8KgwqDCoMKgIHzCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqAgfDxicj58 IEFuZCBoYWJpdCBoYXJkZW5zIGludG8gY2hhcmFjdGVyOyB8wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgIHw8YnI+fCBTbyB3YXRj aCB0aGUgdGhvdWdodCBhbmTCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoCB8PGJyPnwgaXRzIHdh eXMgd2l0aCBjYXJlLsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoCB8PGJyPnzC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKg wqDCoMKgwqDCoMKgwqDCoMKgIHw8YnI+fCAtIEp1YW4gTWFzY2FybyZxdW90OyZxdW90O8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoCB8PGJyPnwgSmUgZ2VkYWNodGVu IHppam7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgIHw8YnI+fCBkZSBn cm9uZHNsYWcgdmFuIGplOsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqAgfDxicj58 IGRhZGVuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDC oMKgwqDCoMKgwqDCoCB8PGJyPnwgZ2V3b29udGVzIGVuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqAgfDxicj58IGthcmFrdGVyLsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgIHw8YnI+fMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDC oMKgwqDCoMKgwqAgfDxicj58IFdhYWsgb3ZlciBqZSBnZWRhY2h0ZW4uJnF1b3Q7JnF1b3Q7wqDC oMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fMKgwqDCoMKgwqDCoMKgwqDCoMKgIHw8YnI+fCBdJnF1b3Q7wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA1NWQwYjUxYy03YjQ2 LTQ0ZjgtOWU2Ny1lYmU1OWM2M2NhMzQgfCAyMDE4LTA5LTEwIHzCoMKgwqDCoMKgwqDCoMKgIDUg fDxicj48YnI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxicj48L2Rpdj48 ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6Y291cmllciBu ZXcsbW9ub3NwYWNlIiBjbGFzcz0iZ21haWxfZGVmYXVsdCI+SSB3b3VsZCBnZXQgYSBwcm9ibGVt IHdoZW4gSSBoYXZlIHR3byBmaWVsZHMgdGhhdCBjb250YWluIEpTT04gZGF0YSwgYnV0IEkgdGhp bmsgaXQgaXMgdmVyeSB1bmxpa2VseSBJIHdpbGwgZ2V0IGluIHN1Y2ggYSBzaXR1YXRpb24uPGJy PjwvZGl2PjxiciBjbGVhcj0iYWxsIj48L2Rpdj4tLSA8YnI+PGRpdiBjbGFzcz0iZ21haWxfc2ln bmF0dXJlIj5DZWNpbCBXZXN0ZXJob2Y8L2Rpdj4NCjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pjwv ZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pg0K --000000000000cfd6a405757efa50--