[silvatheme.silvacmsorg][Emiliano D'Alterio] Made silvatheme.sil...
[email protected] Fri, 13 Dec 2013 18:21:03 +0100
| Newsgroups | gmane.comp.web.zope.silva.cvs |
|---|---|
| Message-ID | <[email protected]> |
CmF1dGhvcjogICAgRW1pbGlhbm8gRCdBbHRlcmlvCmRhdGU6ICAgICAgRnJpIERlYyAxMyAxODoy MTowNCAyMDEzICswMTAwCnJldmlzaW9uOiAgNzI1OjFjMmI2ZDEzMGM5ZSBpbiBzaWx2YXRoZW1l LnNpbHZhY21zb3JnCmJyYW5jaDogICA9MjAKZGV0YWlsczogICBodHRwczovL2hnLmluZnJhZS5j b20vc2lsdmF0aGVtZS5zaWx2YWNtc29yZz9jbWQ9M0RjaGFuZ2VzZXQ7bm9kPQplPTNEMWMyYjZk MTMwYzllCm1vZGlmaWVkOiAgc2V0dXAucHkgc3JjL3NpbHZhdGhlbWUvc2lsdmFjbXNvcmcvY29u ZmlndXJlLnpjbWwgc3JjL3NpbHZhdGhlbT0KZS9zaWx2YWNtc29yZy9pbnRlcmZhY2VzLnB5IHNy Yy9zaWx2YXRoZW1lL3NpbHZhY21zb3JnL3N0YXRpYy9jc3MvaHRtbDVyZXNlPQp0LmNzcyBzcmMv c2lsdmF0aGVtZS9zaWx2YWNtc29yZy9zdGF0aWMvY3NzL3R5cG9ncmFwaHkuY3NzIHNyYy9zaWx2 YXRoZW1lL3M9CmlsdmFjbXNvcmcvc3RhdGljL2pzL21vZGVybml6ci0xLjcubWluLmpzCmFkZGVk OiAgICAgc3JjL3NpbHZhdGhlbWUvc2lsdmFjbXNvcmcvc3RhdGljL2Nzcy9odG1sNXJlc2V0LmNz cyBzcmMvc2lsdmF0aD0KZW1lL3NpbHZhY21zb3JnL3N0YXRpYy9jc3MvdHlwb2dyYXBoeS5jc3Mg c3JjL3NpbHZhdGhlbWUvc2lsdmFjbXNvcmcvc3RhdGljPQovanMvbW9kZXJuaXpyLTEuNy5taW4u anMKcmVtb3ZlZDogID0yMApsb2c6ICAgICAgIE1hZGUgc2lsdmF0aGVtZS5zaWx2YWNtc29yZyBp bmRlcGVuZGVudCBmcm9tCglzaWx2YXRoZW1lLmluZnJhZWNvbW1vbi4KCgpkaWZmc3RhdDoKCiBz ZXR1cC5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAxIC0KIHNyYy9zaWx2YXRoZW1lL3NpbHZhY21zb3JnL2NvbmZpZ3VyZS56Y21sICAgICAg ICAgICAgICAgICB8ICAgIDEgLQogc3JjL3NpbHZhdGhlbWUvc2lsdmFjbXNvcmcvaW50ZXJmYWNl cy5weSAgICAgICAgICAgICAgICAgIHwgICAxNSArLQogc3JjL3NpbHZhdGhlbWUvc2lsdmFjbXNv cmcvc3RhdGljL2Nzcy9odG1sNXJlc2V0LmNzcyAgICAgIHwgIDI1OCArKysrKysrKys9CisrKysr CiBzcmMvc2lsdmF0aGVtZS9zaWx2YWNtc29yZy9zdGF0aWMvY3NzL3R5cG9ncmFwaHkuY3NzICAg ICAgfCAgIDUzICsrCiBzcmMvc2lsdmF0aGVtZS9zaWx2YWNtc29yZy9zdGF0aWMvanMvbW9kZXJu aXpyLTEuNy5taW4uanMgfCAgICAyICsKIDYgZmlsZXMgY2hhbmdlZCwgMzIzIGluc2VydGlvbnMo KyksIDcgZGVsZXRpb25zKC0pCgpkaWZmcyAoMzgxIGxpbmVzKToKCmRpZmYgLXIgMmVmZmU4MGNm NzU3IC1yIDFjMmI2ZDEzMGM5ZSBzZXR1cC5weQotLS0gYS9zZXR1cC5weQlUdWUgT2N0IDE1IDEy OjEyOjMxIDIwMTMgKzAyMDAKKysrIGIvc2V0dXAucHkJRnJpIERlYyAxMyAxODoyMTowNCAyMDEz ICswMTAwCkBAIC0zMyw3ICszMyw2IEBACiAgICAgICAgICAgJ3NpbHZhLmNvcmUuaW50ZXJmYWNl cycsCiAgICAgICAgICAgJ3NpbHZhLmNvcmUubGF5b3V0JywKICAgICAgICAgICAnc2lsdmEuYXBw Lm5ld3MnLAotICAgICAgICAgICdzaWx2YXRoZW1lLmluZnJhZWNvbW1vbicsCiAgICAgICAgICAg J3pvcGUuY2FjaGVkZXNjcmlwdG9ycycsCiAgICAgICBdLAogICAgICAgKQpkaWZmIC1yIDJlZmZl ODBjZjc1NyAtciAxYzJiNmQxMzBjOWUgc3JjL3NpbHZhdGhlbWUvc2lsdmFjbXNvcmcvY29uZmln dXJlLno9CmNtbAotLS0gYS9zcmMvc2lsdmF0aGVtZS9zaWx2YWNtc29yZy9jb25maWd1cmUuemNt bAlUdWUgT2N0IDE1IDEyOjEyOjMxIDIwMTMgKzA9CjIwMAorKysgYi9zcmMvc2lsdmF0aGVtZS9z aWx2YWNtc29yZy9jb25maWd1cmUuemNtbAlGcmkgRGVjIDEzIDE4OjIxOjA0IDIwMTMgKzA9CjEw MApAQCAtNSw3ICs1LDYgQEAKICAgIDxpbmNsdWRlIHBhY2thZ2U9M0Qic2lsdmEuY29yZS5jb25m IiAvPgogICAgPGluY2x1ZGUgcGFja2FnZT0zRCJzaWx2YS5jb3JlLnZpZXdzIiAvPgogICAgPGlu Y2x1ZGUgcGFja2FnZT0zRCJzaWx2YS5jb3JlLmNvbnRlbnRsYXlvdXQiIC8+Ci0gICA8aW5jbHVk ZSBwYWNrYWdlPTNEInNpbHZhdGhlbWUuaW5mcmFlY29tbW9uIiAvPgo9MjAKICAgIDwhLS0gR3Jv ayB0aGlzIHBhY2thZ2UgLS0+CiAgICA8Z3Jvazpncm9rIHBhY2thZ2U9M0QiLiIgLz4KZGlmZiAt ciAyZWZmZTgwY2Y3NTcgLXIgMWMyYjZkMTMwYzllIHNyYy9zaWx2YXRoZW1lL3NpbHZhY21zb3Jn L2ludGVyZmFjZXMuPQpweQotLS0gYS9zcmMvc2lsdmF0aGVtZS9zaWx2YWNtc29yZy9pbnRlcmZh Y2VzLnB5CVR1ZSBPY3QgMTUgMTI6MTI6MzEgMjAxMyArMDI9CjAwCisrKyBiL3NyYy9zaWx2YXRo ZW1lL3NpbHZhY21zb3JnL2ludGVyZmFjZXMucHkJRnJpIERlYyAxMyAxODoyMTowNCAyMDEzICsw MT0KMDAKQEAgLTEsMTIgKzEsMjAgQEAKLQorZnJvbSB6b3BlLnB1Ymxpc2hlci5pbnRlcmZhY2Vz LmJyb3dzZXIgaW1wb3J0IElEZWZhdWx0QnJvd3NlckxheWVyCiBmcm9tIHNpbHZhLmNvcmUgaW1w b3J0IGNvbmYgYXMgc2lsdmFjb25mCiBmcm9tIHNpbHZhLmNvcmUubGF5b3V0LmludGVyZmFjZXMg aW1wb3J0IElTaWx2YVNraW4KIGZyb20gc2lsdmEuY29yZS5sYXlvdXQucG9ydG8uaW50ZXJmYWNl cyBpbXBvcnQgSVBvcnRvCi1mcm9tIHNpbHZhdGhlbWUuaW5mcmFlY29tbW9uIGltcG9ydCBJVHlw b2dyYXBoeQo9MjAKIGZyb20ganMuanF1ZXJ5IGltcG9ydCBqcXVlcnkKPTIwCj0yMAorY2xhc3Mg SVJlc2V0KElEZWZhdWx0QnJvd3NlckxheWVyKToKKyAgICBzaWx2YWNvbmYucmVzb3VyY2UoJ2Nz cy9odG1sNXJlc2V0LmNzcycpCisgICAgc2lsdmFjb25mLnJlc291cmNlKCdqcy9tb2Rlcm5penIt MS43Lm1pbi5qcycpCisKKworY2xhc3MgSVR5cG9ncmFwaHkoSVJlc2V0KToKKyAgICBzaWx2YWNv bmYucmVzb3VyY2UoJ2Nzcy90eXBvZ3JhcGh5LmNzcycpCisKKwogY2xhc3MgSVNpbHZhQ21zT3Jn KElUeXBvZ3JhcGh5LCBJUG9ydG8pOgogICAgICIiIkxheWVyIGZvciBTaWx2YUNNUy5vcmcgdGhl bWUKICAgICAiIiIKQEAgLTI5LDYgKzM3LDMgQEAKPTIwCiBjbGFzcyBJU2lsdmFDbXNPcmdTa2lu V2l0aE5hdmlnYXRpb24oSVNpbHZhU2lsdmFPcmdXaXRoTmF2aWdhdGlvbiwgSVNpbHZhUz0Ka2lu KToKICAgICBzaWx2YWNvbmYuc2tpbignU2lsdmFDTVMgd2l0aCBuYXZpZ2F0aW9uJykKLQotCi0K ZGlmZiAtciAyZWZmZTgwY2Y3NTcgLXIgMWMyYjZkMTMwYzllIHNyYy9zaWx2YXRoZW1lL3NpbHZh Y21zb3JnL3N0YXRpYy9jc3MvPQpodG1sNXJlc2V0LmNzcwotLS0gL2Rldi9udWxsCVRodSBKYW4g MDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9zcmMvc2lsdmF0aGVtZS9zaWx2YWNtc29yZy9z dGF0aWMvY3NzL2h0bWw1cmVzZXQuY3NzCUZyaSBEZWMgMTMgMTg6MjE9CjowNCAyMDEzICswMTAw CkBAIC0wLDAgKzEsMjU4IEBACisvKioKKyAqIEhUTUw1ID1FMj05Qz1CMCBCb2lsZXJwbGF0ZQor ICoKKyAqIHN0eWxlLmNzcyBjb250YWlucyBhIHJlc2V0LCBmb250IG5vcm1hbGl6YXRpb24gYW5k IHNvbWUgYmFzZSBzdHlsZXMuCisgKgorICogQ3JlZGl0IGlzIGxlZnQgd2hlcmUgY3JlZGl0IGlz IGR1ZS4KKyAqIE11Y2ggaW5zcGlyYXRpb24gd2FzIHRha2VuIGZyb20gdGhlc2UgcHJvamVjdHM6 CisgKiAtIHl1aS55YWhvb2FwaXMuY29tLzIuOC4xL2J1aWxkL2Jhc2UvYmFzZS5jc3MKKyAqIC0g Y2FtZW5kZXNpZ24uY29tL2Rlc2lnbi8KKyAqIC0gcHJhZWduYW56LmRlL3dlYmxvZy9odG1sY3Nz anMta2lja3N0YXJ0CisgKi8KKworCisvKioKKyAqIGh0bWw1ZG9jdG9yLmNvbSBSZXNldCBTdHls ZXNoZWV0IChFcmljIE1leWVyJ3MgUmVzZXQgUmVsb2FkZWQgKyBIVE1MNSBiPQphc2VsaW5lKQor ICogdjEuNi4xIDIwMTAtMDktMTcgfCBBdXRob3JzOiBFcmljIE1leWVyICYgUmljaGFyZCBDbGFy aworICogaHRtbDVkb2N0b3IuY29tL2h0bWwtNS1yZXNldC1zdHlsZXNoZWV0LworICovCisKK2h0 bWwsIGJvZHksIGRpdiwgc3Bhbiwgb2JqZWN0LCBpZnJhbWUsCitoMSwgaDIsIGgzLCBoNCwgaDUs IGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsCithYmJyLCBhZGRyZXNzLCBjaXRlLCBjb2RlLCBkZWws IGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHNhbXAsCitzbWFsbCwgc3Ryb25nLCBzdWIsIHN1 cCwgdmFyLCBiLCBpLCBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLAorZmllbGRzZXQsIGZvcm0sIGxh YmVsLCBsZWdlbmQsCit0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRo LCB0ZCwKK2FydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3Vy ZSwKK2Zvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1lbnUsIG5hdiwgc2VjdGlvbiwgc3VtbWFyeSwK K3RpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7CisgIG1hcmdpbjogMDsKKyAgcGFkZGluZzogMDsK KyAgYm9yZGVyOiAwOworICBmb250LXNpemU6IDEwMCU7CisgIGZvbnQ6IGluaGVyaXQ7CisgIHZl cnRpY2FsLWFsaWduOiBiYXNlbGluZTsKK30KKworYXJ0aWNsZSwgYXNpZGUsIGRldGFpbHMsIGZp Z2NhcHRpb24sIGZpZ3VyZSwKK2Zvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1lbnUsIG5hdiwgc2Vj dGlvbiB7CisgIGRpc3BsYXk6IGJsb2NrOworfQorCitibG9ja3F1b3RlLCBxIHsgcXVvdGVzOiBu b25lOyB9CisKK2Jsb2NrcXVvdGU6YmVmb3JlLCBibG9ja3F1b3RlOmFmdGVyLAorcTpiZWZvcmUs IHE6YWZ0ZXIgeyBjb250ZW50OiAiIjsgY29udGVudDogbm9uZTsgfQorCitpbnMgeyBiYWNrZ3Jv dW5kLWNvbG9yOiAjZmY5OyBjb2xvcjogIzAwMDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9CisK K21hcmsgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY5OyBjb2xvcjogIzAwMDsgZm9udC1zdHlsZTog aXRhbGljOyBmb250LXdlaWdoPQp0OiBib2xkOyB9CisKK2RlbCB7IHRleHQtZGVjb3JhdGlvbjog bGluZS10aHJvdWdoOyB9CisKK2FiYnJbdGl0bGVdLCBkZm5bdGl0bGVdIHsgYm9yZGVyLWJvdHRv bTogMXB4IGRvdHRlZDsgY3Vyc29yOiBoZWxwOyB9CisKK3RhYmxlIHsgYm9yZGVyLWNvbGxhcHNl OiBjb2xsYXBzZTsgYm9yZGVyLXNwYWNpbmc6IDA7IH0KKworaHIgeyBkaXNwbGF5OiBibG9jazsg aGVpZ2h0OiAxcHg7IGJvcmRlcjogMDsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNjY2M7IG09CmFy Z2luOiAxZW0gMDsgcGFkZGluZzogMDsgfQorCitpbnB1dCwgc2VsZWN0IHsgdmVydGljYWwtYWxp Z246IG1pZGRsZTsgfQorCisKKy8qKgorICogRm9udCBub3JtYWxpemF0aW9uIGluc3BpcmVkIGJ5 IFlVSSBMaWJyYXJ5J3MgZm9udHMuY3NzOiBkZXZlbG9wZXIueWFob289Ci5jb20veXVpLworICov CisKK2JvZHkgeyBmb250OjEzcHgvMS4yMzEgc2Fucy1zZXJpZjsgKmZvbnQtc2l6ZTpzbWFsbDsg fSAvKiBIYWNrIHJldGFpbmVkIHRvPQogcHJlc2VydmUgc3BlY2lmaWNpdHkgKi8KK3NlbGVjdCwg aW5wdXQsIHRleHRhcmVhLCBidXR0b24geyBmb250Ojk5JSBzYW5zLXNlcmlmOyB9CisKKy8qIE5v cm1hbGl6ZSBtb25vc3BhY2Ugc2l6aW5nOgorICAgZW4ud2lraXBlZGlhLm9yZy93aWtpL01lZGlh V2lraV90YWxrOkNvbW1vbi5jc3MvQXJjaGl2ZV8xMSNUZWxldHlwZV9zdHk9CmxlX2ZpeF9mb3Jf Q2hyb21lICovCitwcmUsIGNvZGUsIGtiZCwgc2FtcCB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2Us IHNhbnMtc2VyaWY7IH0KKworCisvKioKKyAqIE1pbmltYWwgYmFzZSBzdHlsZXMuCisgKi8KKwor LyogQWx3YXlzIGZvcmNlIGEgc2Nyb2xsYmFyIGluIG5vbi1JRSAqLworaHRtbCB7IG92ZXJmbG93 LXk6IHNjcm9sbDsgfQorCisvKiBBY2Nlc3NpYmxlIGZvY3VzIHRyZWF0bWVudDogcGVvcGxlLm9w ZXJhLmNvbS9wYXRyaWNrbC9leHBlcmltZW50cy9rZXlibz0KYXJkL3Rlc3QgKi8KK2E6aG92ZXIs IGE6YWN0aXZlIHsgb3V0bGluZTogbm9uZTsgfQorCit1bCwgb2wgeyBtYXJnaW4tbGVmdDogMmVt OyB9CitvbCB7IGxpc3Qtc3R5bGUtdHlwZTogZGVjaW1hbDsgfQorCisvKiBSZW1vdmUgbWFyZ2lu cyBmb3IgbmF2aWdhdGlvbiBsaXN0cyAqLworbmF2IHVsLCBuYXYgbGkgeyBtYXJnaW46IDA7IGxp c3Qtc3R5bGU6bm9uZTsgbGlzdC1zdHlsZS1pbWFnZTogbm9uZTsgfQorCitzbWFsbCB7IGZvbnQt c2l6ZTogODUlOyB9CitzdHJvbmcsIHRoIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0KKwordGQgeyB2 ZXJ0aWNhbC1hbGlnbjogdG9wOyB9CisKKy8qIFNldCBzdWIsIHN1cCB3aXRob3V0IGFmZmVjdGlu ZyBsaW5lLWhlaWdodDogZ2lzdC5naXRodWIuY29tLzQxMzkzMCAqLworc3ViLCBzdXAgeyBmb250 LXNpemU6IDc1JTsgbGluZS1oZWlnaHQ6IDA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfQorc3VwIHsg dG9wOiAtMC41ZW07IH0KK3N1YiB7IGJvdHRvbTogLTAuMjVlbTsgfQorCitwcmUgeworICAvKiB3 d3cucGF0aGYuY29tL2Jsb2dzLzIwMDgvMDUvZm9ybWF0dGluZy1xdW90ZWQtY29kZS1pbi1ibG9n LXBvc3RzLWNzczI9CjEtd2hpdGUtc3BhY2UtcHJlLXdyYXAvICovCisgIHdoaXRlLXNwYWNlOiBw cmU7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgd29yZC13cmFwOiBicmVhay13b3JkOworICBwYWRk aW5nOiAxNXB4OworfQorCit0ZXh0YXJlYSB7IG92ZXJmbG93OiBhdXRvOyB9IC8qIHd3dy5zaXRl cG9pbnQuY29tL2Jsb2dzLzIwMTAvMDgvMjAvaWUtcmVtbz0KdmUtdGV4dGFyZWEtc2Nyb2xsYmFy cy8gKi8KKworLmllNiBsZWdlbmQsIC5pZTcgbGVnZW5kIHsgbWFyZ2luLWxlZnQ6IC03cHg7IH0K KworLyogQWxpZ24gY2hlY2tib3hlcywgcmFkaW9zLCB0ZXh0IGlucHV0cyB3aXRoIHRoZWlyIGxh YmVsIGJ5OiBUaGllcnJ5IEtvYmw9CmVudHogdGprZGVzaWduLmNvbS9lei1jc3MvY3NzL2Jhc2Uu Y3NzICAqLworaW5wdXRbdHlwZT0zRCJyYWRpbyJdIHsgdmVydGljYWwtYWxpZ246IHRleHQtYm90 dG9tOyB9CitpbnB1dFt0eXBlPTNEImNoZWNrYm94Il0geyB2ZXJ0aWNhbC1hbGlnbjogYm90dG9t OyB9CisuaWU3IGlucHV0W3R5cGU9M0QiY2hlY2tib3giXSB7IHZlcnRpY2FsLWFsaWduOiBiYXNl bGluZTsgfQorLmllNiBpbnB1dCB7IHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbTsgfQorCisv KiBIYW5kIGN1cnNvciBvbiBjbGlja2FibGUgaW5wdXQgZWxlbWVudHMgKi8KK2xhYmVsLCBpbnB1 dFt0eXBlPTNEImJ1dHRvbiJdLCBpbnB1dFt0eXBlPTNEInN1Ym1pdCJdLCBpbnB1dFt0eXBlPTNE ImltYWdlPQoiXSwgYnV0dG9uIHsgY3Vyc29yOiBwb2ludGVyOyB9CisKKy8qIFdlYmtpdCBicm93 c2VycyBhZGQgYSAycHggbWFyZ2luIG91dHNpZGUgdGhlIGNocm9tZSBvZiBmb3JtIGVsZW1lbnRz ICovCitidXR0b24sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhIHsgbWFyZ2luOiAwOyB9CisKKy8q IENvbG9ycyBmb3IgZm9ybSB2YWxpZGl0eSAqLworaW5wdXQ6dmFsaWQsIHRleHRhcmVhOnZhbGlk ICAgeyAgfQoraW5wdXQ6aW52YWxpZCwgdGV4dGFyZWE6aW52YWxpZCB7IGJveC1zaGFkb3c6IG5v bmU7IH0KKy5uby1ib3hzaGFkb3cgaW5wdXQ6aW52YWxpZCwgLm5vLWJveHNoYWRvdyB0ZXh0YXJl YTppbnZhbGlkIHsgYmFja2dyb3VuZC1jPQpvbG9yOiAjZjBkZGRkOyB9CisKKy8qIFRoZXNlIHNl bGVjdGlvbiBkZWNsYXJhdGlvbnMgaGF2ZSB0byBiZSBzZXBhcmF0ZQorICAgTm8gdGV4dC1zaGFk b3c6IHR3aXR0ZXIuY29tL21pa2V0YXlsci9zdGF0dXMvMTIyMjg4MDUzMDEKKyAgIEFsc286IFtu b3RdIGhvdCBwaW5rISAqLworOjotbW96LXNlbGVjdGlvbnsgYmFja2dyb3VuZDogI2Q4ZTdmZjsg Y29sb3I6IzAwMDsgdGV4dC1zaGFkb3c6IG5vbmU7IH0KKzo6c2VsZWN0aW9uIHsgYmFja2dyb3Vu ZDojZDhlN2ZmOyBjb2xvcjojMDAwOyB0ZXh0LXNoYWRvdzogbm9uZTsgfQorCisvKiBqLm1wL3dl YmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yICovCithOmxpbmsgeyAtd2Via2l0LXRhcC1oaWdobGln aHQtY29sb3I6ICNkOGU3ZmY7IH0KKworLyogTWFrZSBidXR0b25zIHBsYXkgbmljZSBpbiBJRToK KyAgIHd3dy52aWdldC5jb20vaW5zcGlyZS9zdHlsaW5nLXRoZS1idXR0b24tZWxlbWVudC1pbi1p bnRlcm5ldC1leHBsb3Jlci8gPQoqLworYnV0dG9uIHsgIHdpZHRoOiBhdXRvOyBvdmVyZmxvdzog dmlzaWJsZTsgfQorCisvKiBCaWN1YmljIHJlc2l6aW5nIGZvciBub24tbmF0aXZlIHNpemVkIElN RzoKKyAgIGNvZGUuZmxpY2tyLmNvbS9ibG9nLzIwMDgvMTEvMTIvb24tdWktcXVhbGl0eS10aGUt bGl0dGxlLXRoaW5ncy1jbGllbnQtPQpzaWRlLWltYWdlLXJlc2l6aW5nLyAqLworLmllNyBpbWcg eyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOyB9CisKKy8qKgorICogWW91IG1pZ2h0 IHR3ZWFrIHRoZXNlLi4KKyAqLworCitib2R5LCBzZWxlY3QsIGlucHV0LCB0ZXh0YXJlYSB7Cisg IC8qICM0NDQgbG9va3MgYmV0dGVyIHRoYW4gYmxhY2s6IHR3aXR0ZXIuY29tL0hfRkovc3RhdHVz ZXMvMTE4MDA3MTk4NTkgKi8KKyAgY29sb3I6ICM0NDQ7CisgIC8qIFNldCB5b3VyIGJhc2UgZm9u dCBoZXJlLCB0byBhcHBseSBldmVubHkgKi8KKyAgLyogZm9udC1mYW1pbHk6IEdlb3JnaWEsIHNl cmlmOyAgKi8KK30KKworLyogSGVhZGVycyAoaDEsIGgyLCBldGMpIGhhdmUgbm8gZGVmYXVsdCBm b250LXNpemUgb3IgbWFyZ2luOyBkZWZpbmUgdGhvc2U9CiB5b3Vyc2VsZiAqLworaDEsIGgyLCBo MywgaDQsIGg1LCBoNiB7IGZvbnQtd2VpZ2h0OiBib2xkOyB9CisKK2EsIGE6YWN0aXZlLCBhOnZp c2l0ZWQgeyBjb2xvcjogIzYwNzg5MDsgfQorYTpob3ZlciB7IGNvbG9yOiAjMDM2OyB9CisKKwor LyoqCisgKiBQcmltYXJ5IHN0eWxlcworICoKKyAqIEF1dGhvcjoKKyAqLworCisKKworCisKKwor CisKKworCisKKworCisKKworCisvKioKKyAqIE5vbi1zZW1hbnRpYyBoZWxwZXIgY2xhc3Nlczog cGxlYXNlIGRlZmluZSB5b3VyIHN0eWxlcyBiZWZvcmUgdGhpcyBzZWN0PQppb24uCisgKi8KKwor LyogRm9yIGltYWdlIHJlcGxhY2VtZW50ICovCisuaXIgeyBkaXNwbGF5OiBibG9jazsgdGV4dC1p bmRlbnQ6IC05OTllbTsgb3ZlcmZsb3c6IGhpZGRlbjsgYmFja2dyb3VuZC1yZT0KcGVhdDogbm8t cmVwZWF0OyB0ZXh0LWFsaWduOiBsZWZ0OyBkaXJlY3Rpb246IGx0cjsgfQorCisvKiBIaWRlIGZv ciBib3RoIHNjcmVlbnJlYWRlcnMgYW5kIGJyb3dzZXJzOgorICAgY3NzLWRpc2N1c3MuaW5jdXRp by5jb20vd2lraS9TY3JlZW5yZWFkZXJfVmlzaWJpbGl0eSAqLworLmhpZGRlbiB7IGRpc3BsYXk6 IG5vbmU7IHZpc2liaWxpdHk6IGhpZGRlbjsgfQorCisvKiBIaWRlIG9ubHkgdmlzdWFsbHksIGJ1 dCBoYXZlIGl0IGF2YWlsYWJsZSBmb3Igc2NyZWVucmVhZGVyczogYnkgSm9uIE5lYT0KbC4KKyAg d3d3LndlYmFpbS5vcmcvdGVjaG5pcXVlcy9jc3MvaW52aXNpYmxlY29udGVudC8gICYgIGoubXAv dmlzdWFsbHloaWRkZW4gPQoqLworLnZpc3VhbGx5aGlkZGVuIHsgYm9yZGVyOiAwOyBjbGlwOiBy ZWN0KDAgMCAwIDApOyBoZWlnaHQ6IDFweDsgbWFyZ2luOiAtMXA9Cng7IG92ZXJmbG93OiBoaWRk ZW47IHBhZGRpbmc6IDA7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDFweDsgfQorLyogRXh0 ZW5kcyB0aGUgLnZpc3VhbGx5aGlkZGVuIGNsYXNzIHRvIGFsbG93IHRoZSBlbGVtZW50IHRvIGJl IGZvY3VzYWJsZSA9CndoZW4gbmF2aWdhdGVkIHRvIHZpYSB0aGUga2V5Ym9hcmQ6IGRydXBhbC5v cmcvbm9kZS84OTc2MzggKi8KKy52aXN1YWxseWhpZGRlbi5mb2N1c2FibGU6YWN0aXZlLAorLnZp c3VhbGx5aGlkZGVuLmZvY3VzYWJsZTpmb2N1cyB7IGNsaXA6IGF1dG87IGhlaWdodDogYXV0bzsg bWFyZ2luOiAwOyBvdmU9CnJmbG93OiB2aXNpYmxlOyBwb3NpdGlvbjogc3RhdGljOyB3aWR0aDog YXV0bzsgfQorCisvKiBIaWRlIHZpc3VhbGx5IGFuZCBmcm9tIHNjcmVlbnJlYWRlcnMsIGJ1dCBt YWludGFpbiBsYXlvdXQgKi8KKy5pbnZpc2libGUgeyB2aXNpYmlsaXR5OiBoaWRkZW47IH0KKwor LyogVGhlIE1hZ25pZmljZW50IENsZWFyZml4OiBVcGRhdGVkIHRvIHByZXZlbnQgbWFyZ2luLWNv bGxhcHNpbmcgb24gY2hpbGQ9CiBlbGVtZW50cy4KKyAgIGoubXAvYmVzdGNsZWFyZml4ICovCisu Y2xlYXJmaXg6YmVmb3JlLCAuY2xlYXJmaXg6YWZ0ZXIgeyBjb250ZW50OiAiXDAwMjAiOyBkaXNw bGF5OiBibG9jazsgaGVpZz0KaHQ6IDA7IG92ZXJmbG93OiBoaWRkZW47IH0KKy5jbGVhcmZpeDph ZnRlciB7IGNsZWFyOiBib3RoOyB9CisvKiBGaXggY2xlYXJmaXg6IGJsdWVwcmludGNzcy5saWdo dGhvdXNlYXBwLmNvbS9wcm9qZWN0cy8xNTMxOC90aWNrZXRzLzUtZT0KeHRyYS1tYXJnaW4tcGFk ZGluZy1ib3R0b20tb2YtcGFnZSAqLworLmNsZWFyZml4IHsgem9vbTogMTsgfQorCisKKworLyoq CisgKiBNZWRpYSBxdWVyaWVzIGZvciByZXNwb25zaXZlIGRlc2lnbi4KKyAqCisgKiBUaGVzZSBm b2xsb3cgYWZ0ZXIgcHJpbWFyeSBzdHlsZXMgc28gdGhleSB3aWxsIHN1Y2Nlc3NmdWxseSBvdmVy cmlkZS4KKyAqLworCitAbWVkaWEgYWxsIGFuZCAob3JpZW50YXRpb246cG9ydHJhaXQpIHsKKyAg LyogU3R5bGUgYWRqdXN0bWVudHMgZm9yIHBvcnRyYWl0IG1vZGUgZ29lcyBoZXJlICovCisKK30K KworQG1lZGlhIGFsbCBhbmQgKG9yaWVudGF0aW9uOmxhbmRzY2FwZSkgeworICAvKiBTdHlsZSBh ZGp1c3RtZW50cyBmb3IgbGFuZHNjYXBlIG1vZGUgZ29lcyBoZXJlICovCisKK30KKworLyogR3Jh ZGUtQSBNb2JpbGUgQnJvd3NlcnMgKE9wZXJhIE1vYmlsZSwgTW9iaWxlIFNhZmFyaSwgQW5kcm9p ZCBDaHJvbWUpCisgICBjb25zaWRlciB0aGlzOiB3d3cuY2xvdWRmb3VyLmNvbS9jc3MtbWVkaWEt cXVlcnktZm9yLW1vYmlsZS1pcy1mb29scy1nbz0KbGQvICovCitAbWVkaWEgc2NyZWVuIGFuZCAo bWF4LWRldmljZS13aWR0aDogNDgwcHgpIHsKKworCisgIC8qIFVuY29tbWVudCBpZiB5b3UgZG9u J3Qgd2FudCBpT1MgYW5kIFdpbk1vYmlsZSB0byBtb2JpbGUtb3B0aW1pemUgdGhlID0KdGV4dCBm b3IgeW91OiBqLm1wL3RleHRzaXplYWRqdXN0ICovCisgIC8qIGh0bWwgeyAtd2Via2l0LXRleHQt c2l6ZS1hZGp1c3Q6bm9uZTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6bm9uZTsgfSAqLworfQorCisK Ky8qKgorICogUHJpbnQgc3R5bGVzLgorICoKKyAqIElubGluZWQgdG8gYXZvaWQgcmVxdWlyZWQg SFRUUCBjb25uZWN0aW9uOiB3d3cucGhwaWVkLmNvbS9kZWxheS1sb2FkaW5nPQoteW91ci1wcmlu dC1jc3MvCisgKi8KK0BtZWRpYSBwcmludCB7CisgICogeyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVu dCAhaW1wb3J0YW50OyBjb2xvcjogYmxhY2sgIWltcG9ydGFudDsgdGV4dC1zaD0KYWRvdzogbm9u ZSAhaW1wb3J0YW50OyBmaWx0ZXI6bm9uZSAhaW1wb3J0YW50OworICAtbXMtZmlsdGVyOiBub25l ICFpbXBvcnRhbnQ7IH0gLyogQmxhY2sgcHJpbnRzIGZhc3Rlcjogc2FuYmVpamkuY29tL2FyY2g9 Cml2ZXMvOTUzICovCisgIGEsIGE6dmlzaXRlZCB7IGNvbG9yOiAjNDQ0ICFpbXBvcnRhbnQ7IHRl eHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9CisgIGFbaHJlZl06YWZ0ZXIgeyBjb250ZW50OiAi ICgiIGF0dHIoaHJlZikgIikiOyB9CisgIGFiYnJbdGl0bGVdOmFmdGVyIHsgY29udGVudDogIiAo IiBhdHRyKHRpdGxlKSAiKSI7IH0KKyAgLmlyIGE6YWZ0ZXIsIGFbaHJlZl49M0QiamF2YXNjcmlw dDoiXTphZnRlciwgYVtocmVmXj0zRCIjIl06YWZ0ZXIgeyBjb250PQplbnQ6ICIiOyB9ICAvKiBE b24ndCBzaG93IGxpbmtzIGZvciBpbWFnZXMsIG9yIGphdmFzY3JpcHQvaW50ZXJuYWwgbGlua3Mg Ki8KKyAgcHJlLCBibG9ja3F1b3RlIHsgYm9yZGVyOiAxcHggc29saWQgIzk5OTsgcGFnZS1icmVh ay1pbnNpZGU6IGF2b2lkOyB9CisgIHRoZWFkIHsgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3Vw OyB9IC8qIGNzcy1kaXNjdXNzLmluY3V0aW8uY29tL3dpa2kvUD0KcmludGluZ19UYWJsZXMgKi8K KyAgdHIsIGltZyB7IHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsgfQorICBAcGFnZSB7IG1hcmdp bjogMC41Y207IH0KKyAgcCwgaDIsIGgzIHsgb3JwaGFuczogMzsgd2lkb3dzOiAzOyB9CisgIGgy LCBoM3sgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7IH0KK30KKwpkaWZmIC1yIDJlZmZlODBjZjc1 NyAtciAxYzJiNmQxMzBjOWUgc3JjL3NpbHZhdGhlbWUvc2lsdmFjbXNvcmcvc3RhdGljL2Nzcy89 CnR5cG9ncmFwaHkuY3NzCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICsw MDAwCisrKyBiL3NyYy9zaWx2YXRoZW1lL3NpbHZhY21zb3JnL3N0YXRpYy9jc3MvdHlwb2dyYXBo eS5jc3MJRnJpIERlYyAxMyAxODoyMT0KOjA0IDIwMTMgKzAxMDAKQEAgLTAsMCArMSw1MyBAQAor LyogVHlwb2dyYXBoeSBmb3IgSW5mcmFlIHNpdGVzICovCitoMSB7IGZvbnQtc2l6ZToyLjJlbTsg bWFyZ2luOjAgMCAwLjVlbTsgfQoraDIgeyBmb250LXNpemU6MS44ZW07IG1hcmdpbjowIDAgMC41 ZW07IH0KK2gzIHsgZm9udC1zaXplOjEuNGVtOyBtYXJnaW46MWVtIDAgMC41ZW07IH0KK2g0IHsg Zm9udC1zaXplOjEuMmVtOyBtYXJnaW46MS4xZW0gMCAwLjRlbTsgfQoraDUgeyBmb250LXNpemU6 MS4xZW07IG1hcmdpbjoxLjJlbSAwIDAuM2VtOyB9CitoNiB7IGZvbnQtc2l6ZToxLjBlbTsgbWFy Z2luOjFlbSAwIDAuMmVtOyB9CisKK3AsIHVsLCBvbCwgZGwgeyBtYXJnaW4tYm90dG9tOjFlbTsg fQordWwsIG9sIHsgbWFyZ2luLWxlZnQ6MS44ZW07IH0KK2xpIHsgbWFyZ2luLWJvdHRvbTowLjVl bTsgfQorZHQgeyBkaXNwbGF5OmJsb2NrOyB9CitkZCB7IG1hcmdpbjowLjJlbSAwIDFlbTsgcGFk ZGluZy1sZWZ0OjEuM2VtOyB9CitwcmUgeyBtYXJnaW4tYm90dG9tOjFlbTsgfQorCithIHsgbWFy Z2luOjA7IHBhZGRpbmc6MDsgZm9udC1zaXplOjEwMCU7IHZlcnRpY2FsLWFsaWduOmJhc2VsaW5l OyBiYWNrZ3JvdT0KbmQ6dHJhbnNwYXJlbnQ7IH0KK2E6aG92ZXIsIGE6YWN0aXZlIHsgb3V0bGlu ZTpub25lOyB9CisKK3RhYmxlIHsgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOyBib3JkZXItc3Bh Y2luZzowOyB9Cit0aCwgdGQgeyBwYWRkaW5nOjNweDsgfQordGggeyB0ZXh0LWFsaWduOmxlZnQ7 IH0KK3RkLCB0ZCBpbWcgeyB2ZXJ0aWNhbC1hbGlnbjp0b3A7IH0KKworcC5sZWFkIHsgZm9udC1z aXplOjExMCU7IH0KK3AuYW5ub3RhdGlvbiB7IGZvbnQtc2l6ZTo5NSU7IH0KKworLyogYWxpZ25t ZW50cyAqLworLmFsaWduLWxlZnQgeyB9CisuYWxpZ24tcmlnaHQgeyBmbG9hdDpyaWdodDsgY2xl YXI6Ym90aDsgfQorLmZsb2F0LWxlZnQgeyBmbG9hdDpsZWZ0OyB9CisuZmxvYXQtcmlnaHQgeyBm bG9hdDpyaWdodDsgfSAvKiBkaXNwbGF5Om5vbmUgaW4gbW9iaWxlIHNraW4gKi8KK2Rpdi5pbWFn ZS1sZWZ0IHsgZmxvYXQ6bGVmdDsgbWFyZ2luOjJweCA2cHggNXB4IDA7IH0gLyogaWNvbnMgbWlk bGluZSAqLworZGl2LmltYWdlLWNlbnRlciB7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW46MDsg fQorZGl2LmltYWdlLXJpZ2h0IHsgZmxvYXQ6cmlnaHQ7IG1hcmdpbjo4cHggMCAxMHB4IDIwcHg7 IH0KK2ltZy5kZWZhdWx0IHsgbWFyZ2luLWJvdHRvbTowLjdlbTsgfQoraW1nLmZsb2F0LWxlZnQg eyBtYXJnaW46NnB4IDEwcHggNXB4IDA7IH0gLyogbmVzdGVkIGNhcCBoZWlnaHQgKi8KK2ltZy5m bG9hdC1yaWdodCB7IG1hcmdpbjo2cHggMCA1cHggMTBweDsgfSAgLyogbmVzdGVkIHggaGVpZ2h0 ICovCisKKy8qIGxvZ2luIGZvcm0gKi8KK2Rpdi5sb2dpbi1mb3JtIHsgd2lkdGg6IDI1ZW07IH0K K2Rpdi5sb2dpbi1mb3JtIHAgeyBsaW5lLWhlaWdodDppbmhlcml0OyB9CisvKiBmb3IgYSBzdGFj a2VkIGZvcm0gcmVtb3ZlIGZsb2F0cyBhbmQgaGVpZ2h0cyAqLworZGl2LmxvZ2luLWZvcm0gZGl2 LmZvcm0tZWxlbWVudCB7IGhlaWdodDogMmVtOyB9CitkaXYubG9naW4tZm9ybSBkaXYuZm9ybS10 aXRsZSB7IGhlaWdodDogMS42ZW07IGZvbnQtc2l6ZTogMS4yZW07IGZvbnQtd2VpZz0KaHQ6IGJv bGQ7IH0KK2Rpdi5sb2dpbi1mb3JtIGRpdi5mb3JtLWxhYmVsIHsgZmxvYXQ6IGxlZnQ7IHdpZHRo OiA2ZW07IH0KK2Rpdi5sb2dpbi1mb3JtIGRpdi5mb3JtLWxhYmVsIGxhYmVsIHsgZGlzcGxheTog YmxvY2s7IG1hcmdpbjogMC4yZW0gMCAwOyB9CitkaXYubG9naW4tZm9ybSBkaXYuZm9ybS1maWVs ZCBpbnB1dFt0eXBlPTNEInRleHQiXSwKK2Rpdi5sb2dpbi1mb3JtIGRpdi5mb3JtLWZpZWxkIGlu cHV0W3R5cGU9M0QicGFzc3dvcmQiXQorICB7IGZsb2F0OiByaWdodDsgd2lkdGg6IDE4ZW07IH0K K2Rpdi5sb2dpbi1mb3JtIGRpdi5mb3JtLWFjdGlvbnMgeyB0ZXh0LWFsaWduOnJpZ2h0OyB9Citk aXYubG9naW4tZm9ybSBkaXYuZm9ybS1hY3Rpb25zIGlucHV0LnN1Ym1pdCB7IGhlaWdodDogMS44 ZW07IGZvbnQtd2VpZ2h0Oj0KIGJvbGQ7IH0KK2Rpdi5sb2dpbi1mb3JtIGRpdi5mb3JtLWFjdGlv bnMgaW5wdXQuY2FuY2VsIHsgZmxvYXQ6IGxlZnQ7IGhlaWdodDogMS44ZW07PQogfQorZGl2Lmxv Z2luLWZvcm0gZGl2IGRpdi53YXJuaW5nIHsgaGVpZ2h0OiAyZW07IG1hcmdpbi1ib3R0b206IDAu NWVtOyB9CmRpZmYgLXIgMmVmZmU4MGNmNzU3IC1yIDFjMmI2ZDEzMGM5ZSBzcmMvc2lsdmF0aGVt ZS9zaWx2YWNtc29yZy9zdGF0aWMvanMvbT0Kb2Rlcm5penItMS43Lm1pbi5qcwotLS0gL2Rldi9u dWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9zcmMvc2lsdmF0aGVtZS9z aWx2YWNtc29yZy9zdGF0aWMvanMvbW9kZXJuaXpyLTEuNy5taW4uanMJRnJpIERlYyAxMyA9CjE4 OjIxOjA0IDIwMTMgKzAxMDAKQEAgLTAsMCArMSwyIEBACisvLyBNb2Rlcm5penIgdjEuNyAgd3d3 Lm1vZGVybml6ci5jb20KK3dpbmRvdy5Nb2Rlcm5penI9M0RmdW5jdGlvbihhLGIsYyl7ZnVuY3Rp b24gRygpe2UuaW5wdXQ9M0RmdW5jdGlvbihhKXtmb3IoPQp2YXIgYj0zRDAsYz0zRGEubGVuZ3Ro O2I8YztiKyspdFthW2JdXT0zRCEhKGFbYl1pbiBsKTtyZXR1cm4gdH0oImF1dG9jb21wbGU9CnRl IGF1dG9mb2N1cyBsaXN0IHBsYWNlaG9sZGVyIG1heCBtaW4gbXVsdGlwbGUgcGF0dGVybiByZXF1 aXJlZCBzdGVwIi5zcGxpdD0KKCIgIikpLGUuaW5wdXR0eXBlcz0zRGZ1bmN0aW9uKGEpe2Zvcih2 YXIgZD0zRDAsZSxmLGgsaT0zRGEubGVuZ3RoO2Q8aTtkKyspPQpsLnNldEF0dHJpYnV0ZSgidHlw ZSIsZj0zRGFbZF0pLGU9M0RsLnR5cGUhPTNEPTNEInRleHQiLGUmJihsLnZhbHVlPTNEbSxsLnM9 CnR5bGUuY3NzVGV4dD0zRCJwb3NpdGlvbjphYnNvbHV0ZTt2aXNpYmlsaXR5OmhpZGRlbjsiLC9e cmFuZ2UkLy50ZXN0KGYpJiZsLj0Kc3R5bGUuV2Via2l0QXBwZWFyYW5jZSE9M0Q9M0RjPyhnLmFw cGVuZENoaWxkKGwpLGg9M0RiLmRlZmF1bHRWaWV3LGU9M0RoLmdlPQp0Q29tcHV0ZWRTdHlsZSYm aC5nZXRDb21wdXRlZFN0eWxlKGwsbnVsbCkuV2Via2l0QXBwZWFyYW5jZSE9M0Q9M0QidGV4dGZp ZWw9CmQiJiZsLm9mZnNldEhlaWdodCE9M0Q9M0QwLGcucmVtb3ZlQ2hpbGQobCkpOi9eKHNlYXJj aHx0ZWwpJC8udGVzdChmKXx8KC9eKD0KdXJsfGVtYWlsKSQvLnRlc3QoZik/ZT0zRGwuY2hlY2tW YWxpZGl0eSYmbC5jaGVja1ZhbGlkaXR5KCk9M0Q9M0Q9M0QhMTovXmNvPQpsb3IkLy50ZXN0KGYp PyhnLmFwcGVuZENoaWxkKGwpLGcub2Zmc2V0V2lkdGgsZT0zRGwudmFsdWUhPTNEbSxnLnJlbW92 ZUNoaWw9CmQobCkpOmU9M0RsLnZhbHVlIT0zRG0pKSxzW2FbZF1dPTNEISFlO3JldHVybiBzfSgi c2VhcmNoIHRlbCB1cmwgZW1haWwgZGF0ZT0KdGltZSBkYXRlIG1vbnRoIHdlZWsgdGltZSBkYXRl dGltZS1sb2NhbCBudW1iZXIgcmFuZ2UgY29sb3IiLnNwbGl0KCIgIikpfWZ1PQpuY3Rpb24gRihh LGIpe3ZhciBjPTNEYS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSthLnN1YnN0cigxKSxkPTNEKGEr IiAiK3Auam89CmluKGMrIiAiKStjKS5zcGxpdCgiICIpO3JldHVybiEhRShkLGIpfWZ1bmN0aW9u IEUoYSxiKXtmb3IodmFyIGQgaW4gYSlpZihrWz0KYVtkXV0hPTNEPTNEYyYmKCFifHxiKGFbZF0s aikpKXJldHVybiEwfWZ1bmN0aW9uIEQoYSxiKXtyZXR1cm4oIiIrYSkuaW5kZXhPPQpmKGIpIT0z RD0zRC0xfWZ1bmN0aW9uIEMoYSxiKXtyZXR1cm4gdHlwZW9mIGE9M0Q9M0Q9M0RifWZ1bmN0aW9u IEIoYSxiKXtyZXQ9CnVybiBBKG8uam9pbihhKyI7IikrKGJ8fCIiKSl9ZnVuY3Rpb24gQShhKXtr LmNzc1RleHQ9M0RhfXZhciBkPTNEIjEuNyIsZT0zRD0Ke30sZj0zRCEwLGc9M0RiLmRvY3VtZW50 RWxlbWVudCxoPTNEYi5oZWFkfHxiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbPQowXSxp PTNEIm1vZGVybml6ciIsaj0zRGIuY3JlYXRlRWxlbWVudChpKSxrPTNEai5zdHlsZSxsPTNEYi5j cmVhdGVFbGVtZW50KCI9CmlucHV0IiksbT0zRCI6KSIsbj0zRE9iamVjdC5wcm90b3R5cGUudG9T dHJpbmcsbz0zRCIgLXdlYmtpdC0gLW1vei0gLW8tIC1tcz0KLSAta2h0bWwtICIuc3BsaXQoIiAi KSxwPTNEIldlYmtpdCBNb3ogTyBtcyBLaHRtbCIuc3BsaXQoIiAiKSxxPTNEe3N2ZzoiaHR0PQpw Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9LHI9M0R7fSxzPTNEe30sdD0zRHt9LHU9M0RbXSx2LHc9 M0RmdW5jdGlvbihhKXt2YXI9CiBjPTNEYi5jcmVhdGVFbGVtZW50KCJzdHlsZSIpLGQ9M0RiLmNy ZWF0ZUVsZW1lbnQoImRpdiIpLGU7Yy50ZXh0Q29udGVudD0zRD0KYSsieyNtb2Rlcm5penJ7aGVp Z2h0OjNweH19IixoLmFwcGVuZENoaWxkKGMpLGQuaWQ9M0QibW9kZXJuaXpyIixnLmFwcGVuZENo PQppbGQoZCksZT0zRGQub2Zmc2V0SGVpZ2h0PTNEPTNEPTNEMyxjLnBhcmVudE5vZGUucmVtb3Zl Q2hpbGQoYyksZC5wYXJlbnROb2Q9CmUucmVtb3ZlQ2hpbGQoZCk7cmV0dXJuISFlfSx4PTNEZnVu Y3Rpb24oKXtmdW5jdGlvbiBkKGQsZSl7ZT0zRGV8fGIuY3JlYXRlRT0KbGVtZW50KGFbZF18fCJk aXYiKTt2YXIgZj0zRChkPTNEIm9uIitkKWluIGU7Znx8KGUuc2V0QXR0cmlidXRlfHwoZT0zRGIu Y3JlPQphdGVFbGVtZW50KCJkaXYiKSksZS5zZXRBdHRyaWJ1dGUmJmUucmVtb3ZlQXR0cmlidXRl JiYoZS5zZXRBdHRyaWJ1dGUoZCwiIik9CixmPTNEQyhlW2RdLCJmdW5jdGlvbiIpLEMoZVtkXSxj KXx8KGVbZF09M0RjKSxlLnJlbW92ZUF0dHJpYnV0ZShkKSkpLGU9M0RudT0KbGw7cmV0dXJuIGZ9 dmFyIGE9M0R7c2VsZWN0OiJpbnB1dCIsY2hhbmdlOiJpbnB1dCIsc3VibWl0OiJmb3JtIixyZXNl dDoiZm9yPQptIixlcnJvcjoiaW1nIixsb2FkOiJpbWciLGFib3J0OiJpbWcifTtyZXR1cm4gZH0o KSx5PTNEKHt9KS5oYXNPd25Qcm9wZXJ0eSw9Cno7Qyh5LGMpfHxDKHkuY2FsbCxjKT96PTNEZnVu Y3Rpb24oYSxiKXtyZXR1cm4gYiBpbiBhJiZDKGEuY29uc3RydWN0b3IucHJvdD0Kb3R5cGVbYl0s Yyl9Ono9M0RmdW5jdGlvbihhLGIpe3JldHVybiB5LmNhbGwoYSxiKX0sci5mbGV4Ym94PTNEZnVu Y3Rpb24oKXtmPQp1bmN0aW9uIGMoYSxiLGMsZCl7YS5zdHlsZS5jc3NUZXh0PTNEby5qb2luKGIr IjoiK2MrIjsiKSsoZHx8IiIpfWZ1bmN0aW9uIGE9CihhLGIsYyxkKXtiKz0zRCI6IixhLnN0eWxl LmNzc1RleHQ9M0QoYitvLmpvaW4oYysiOyIrYikpLnNsaWNlKDAsLWIubGVuZ3RoKT0KKyhkfHwi Iil9dmFyIGQ9M0RiLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGU9M0RiLmNyZWF0ZUVsZW1lbnQoImRp diIpO2EoZCwiZGlzPQpwbGF5IiwiYm94Iiwid2lkdGg6NDJweDtwYWRkaW5nOjA7IiksYyhlLCJi b3gtZmxleCIsIjEiLCJ3aWR0aDoxMHB4OyIpLGQuYXA9CnBlbmRDaGlsZChlKSxnLmFwcGVuZENo aWxkKGQpO3ZhciBmPTNEZS5vZmZzZXRXaWR0aD0zRD0zRD0zRDQyO2QucmVtb3ZlQ2hpbD0KZChl KSxnLnJlbW92ZUNoaWxkKGQpO3JldHVybiBmfSxyLmNhbnZhcz0zRGZ1bmN0aW9uKCl7dmFyIGE9 M0RiLmNyZWF0ZUVsZW1lPQpudCgiY2FudmFzIik7cmV0dXJuIGEuZ2V0Q29udGV4dCYmYS5nZXRD b250ZXh0KCIyZCIpfSxyLmNhbnZhc3RleHQ9M0RmdW5jdGk9Cm9uKCl7cmV0dXJuIGUuY2FudmFz JiZDKGIuY3JlYXRlRWxlbWVudCgiY2FudmFzIikuZ2V0Q29udGV4dCgiMmQiKS5maWxsVGV4dD0K LCJmdW5jdGlvbiIpfSxyLndlYmdsPTNEZnVuY3Rpb24oKXtyZXR1cm4hIWEuV2ViR0xSZW5kZXJp bmdDb250ZXh0fSxyLnRvdWNoPQo9M0RmdW5jdGlvbigpe3JldHVybiJvbnRvdWNoc3RhcnQiaW4g YXx8dygiQG1lZGlhICgiK28uam9pbigidG91Y2gtZW5hYmxlZCk9CiwoIikrIm1vZGVybml6ciki KX0sci5nZW9sb2NhdGlvbj0zRGZ1bmN0aW9uKCl7cmV0dXJuISFuYXZpZ2F0b3IuZ2VvbG9jYXRp bz0Kbn0sci5wb3N0bWVzc2FnZT0zRGZ1bmN0aW9uKCl7cmV0dXJuISFhLnBvc3RNZXNzYWdlfSxy LndlYnNxbGRhdGFiYXNlPTNEZnVuPQpjdGlvbigpe3ZhciBiPTNEISFhLm9wZW5EYXRhYmFzZTty ZXR1cm4gYn0sci5pbmRleGVkREI9M0RmdW5jdGlvbigpe2Zvcih2YXI9CiBiPTNELTEsYz0zRHAu bGVuZ3RoOysrYjxjOyl7dmFyIGQ9M0RwW2JdLnRvTG93ZXJDYXNlKCk7aWYoYVtkKyJfaW5kZXhl ZERCIj0KXXx8YVtkKyJJbmRleGVkREIiXSlyZXR1cm4hMH1yZXR1cm4hMX0sci5oYXNoY2hhbmdl PTNEZnVuY3Rpb24oKXtyZXR1cm4geCgiPQpoYXNoY2hhbmdlIixhKSYmKGIuZG9jdW1lbnRNb2Rl PTNEPTNEPTNEY3x8Yi5kb2N1bWVudE1vZGU+Nyl9LHIuaGlzdG9yeT0zRGY9CnVuY3Rpb24oKXty ZXR1cm4gISEoYS5oaXN0b3J5JiZoaXN0b3J5LnB1c2hTdGF0ZSl9LHIuZHJhZ2FuZGRyb3A9M0Rm dW5jdGlvbj0KKCl7cmV0dXJuIHgoImRyYWdzdGFydCIpJiZ4KCJkcm9wIil9LHIud2Vic29ja2V0 cz0zRGZ1bmN0aW9uKCl7cmV0dXJuIldlYlNvPQpja2V0ImluIGF9LHIucmdiYT0zRGZ1bmN0aW9u KCl7QSgiYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE1MCwyNTUsMTUwLC41KSIpO3I9CmV0dXJuIEQo ay5iYWNrZ3JvdW5kQ29sb3IsInJnYmEiKX0sci5oc2xhPTNEZnVuY3Rpb24oKXtBKCJiYWNrZ3Jv dW5kLWNvbG9yOj0KaHNsYSgxMjAsNDAlLDEwMCUsLjUpIik7cmV0dXJuIEQoay5iYWNrZ3JvdW5k Q29sb3IsInJnYmEiKXx8RChrLmJhY2tncm91bmRDPQpvbG9yLCJoc2xhIil9LHIubXVsdGlwbGVi Z3M9M0RmdW5jdGlvbigpe0EoImJhY2tncm91bmQ6dXJsKC8vOiksdXJsKC8vOikscmU9CmQgdXJs KC8vOikiKTtyZXR1cm4obmV3IFJlZ0V4cCgiKHVybFxccypcXCguKj8pezN9IikpLnRlc3Qoay5i YWNrZ3JvdW5kKX0scj0KLmJhY2tncm91bmRzaXplPTNEZnVuY3Rpb24oKXtyZXR1cm4gRigiYmFj a2dyb3VuZFNpemUiKX0sci5ib3JkZXJpbWFnZT0zRGZ1PQpuY3Rpb24oKXtyZXR1cm4gRigiYm9y ZGVySW1hZ2UiKX0sci5ib3JkZXJyYWRpdXM9M0RmdW5jdGlvbigpe3JldHVybiBGKCJib3I9CmRl clJhZGl1cyIsIiIsZnVuY3Rpb24oYSl7cmV0dXJuIEQoYSwib3JkZXJSYWRpdXMiKX0pfSxyLmJv eHNoYWRvdz0zRGZ1bmN0aT0Kb24oKXtyZXR1cm4gRigiYm94U2hhZG93Iil9LHIudGV4dHNoYWRv dz0zRGZ1bmN0aW9uKCl7cmV0dXJuIGIuY3JlYXRlRWxlbWVuPQp0KCJkaXYiKS5zdHlsZS50ZXh0 U2hhZG93PTNEPTNEPTNEIiJ9LHIub3BhY2l0eT0zRGZ1bmN0aW9uKCl7Qigib3BhY2l0eTouNTU9 CiIpO3JldHVybi9eMC41NSQvLnRlc3Qoay5vcGFjaXR5KX0sci5jc3NhbmltYXRpb25zPTNEZnVu Y3Rpb24oKXtyZXR1cm4gRigiYT0KbmltYXRpb25OYW1lIil9LHIuY3NzY29sdW1ucz0zRGZ1bmN0 aW9uKCl7cmV0dXJuIEYoImNvbHVtbkNvdW50Iil9LHIuY3NzZ3JhPQpkaWVudHM9M0RmdW5jdGlv bigpe3ZhciBhPTNEImJhY2tncm91bmQtaW1hZ2U6IixiPTNEImdyYWRpZW50KGxpbmVhcixsZWZ0 IHQ9Cm9wLHJpZ2h0IGJvdHRvbSxmcm9tKCM5ZjkpLHRvKHdoaXRlKSk7IixjPTNEImxpbmVhci1n cmFkaWVudChsZWZ0IHRvcCwjOWY5LD0KIHdoaXRlKTsiO0EoKGErby5qb2luKGIrYSkrby5qb2lu KGMrYSkpLnNsaWNlKDAsLWEubGVuZ3RoKSk7cmV0dXJuIEQoay5iYWNrPQpncm91bmRJbWFnZSwi Z3JhZGllbnQiKX0sci5jc3NyZWZsZWN0aW9ucz0zRGZ1bmN0aW9uKCl7cmV0dXJuIEYoImJveFJl ZmxlY3Q9CiIpfSxyLmNzc3RyYW5zZm9ybXM9M0RmdW5jdGlvbigpe3JldHVybiEhRShbInRyYW5z Zm9ybVByb3BlcnR5IiwiV2Via2l0VHJhbj0Kc2Zvcm0iLCJNb3pUcmFuc2Zvcm0iLCJPVHJhbnNm b3JtIiwibXNUcmFuc2Zvcm0iXSl9LHIuY3NzdHJhbnNmb3JtczNkPTNEZnVuPQpjdGlvbigpe3Zh ciBhPTNEISFFKFsicGVyc3BlY3RpdmVQcm9wZXJ0eSIsIldlYmtpdFBlcnNwZWN0aXZlIiwiTW96 UGVyc3BlY3Q9Cml2ZSIsIk9QZXJzcGVjdGl2ZSIsIm1zUGVyc3BlY3RpdmUiXSk7YSYmIndlYmtp dFBlcnNwZWN0aXZlImluIGcuc3R5bGUmJihhPQo9M0R3KCJAbWVkaWEgKCIrby5qb2luKCJ0cmFu c2Zvcm0tM2QpLCgiKSsibW9kZXJuaXpyKSIpKTtyZXR1cm4gYX0sci5jc3N0cmE9Cm5zaXRpb25z PTNEZnVuY3Rpb24oKXtyZXR1cm4gRigidHJhbnNpdGlvblByb3BlcnR5Iil9LHIuZm9udGZhY2U9 M0RmdW5jdGlvbj0KKCl7dmFyIGEsYyxkPTNEaHx8ZyxlPTNEYi5jcmVhdGVFbGVtZW50KCJzdHls ZSIpLGY9M0RiLmltcGxlbWVudGF0aW9ufHx7aGFzPQpGZWF0dXJlOmZ1bmN0aW9uKCl7cmV0dXJu ITF9fTtlLnR5cGU9M0QidGV4dC9jc3MiLGQuaW5zZXJ0QmVmb3JlKGUsZC5maXJzdEM9CmhpbGQp LGE9M0RlLnNoZWV0fHxlLnN0eWxlU2hlZXQ7dmFyIGk9M0RmLmhhc0ZlYXR1cmUoIkNTUzIiLCIi KT9mdW5jdGlvbihiKT0Ke2lmKCFhfHwhYilyZXR1cm4hMTt2YXIgYz0zRCExO3RyeXthLmluc2Vy dFJ1bGUoYiwwKSxjPTNEL3NyYy9pLnRlc3QoYS5jc3NSPQp1bGVzWzBdLmNzc1RleHQpLGEuZGVs ZXRlUnVsZShhLmNzc1J1bGVzLmxlbmd0aC0xKX1jYXRjaChkKXt9cmV0dXJuIGN9OmZ1bmM9CnRp b24oYil7aWYoIWF8fCFiKXJldHVybiExO2EuY3NzVGV4dD0zRGI7cmV0dXJuIGEuY3NzVGV4dC5s ZW5ndGghPTNEPTNEMCYmLz0Kc3JjL2kudGVzdChhLmNzc1RleHQpJiZhLmNzc1RleHQucmVwbGFj ZSgvXHIrfFxuKy9nLCIiKS5pbmRleE9mKGIuc3BsaXQoIiAiPQopWzBdKT0zRD0zRD0zRDB9O2M9 M0RpKCdAZm9udC1mYWNlIHsgZm9udC1mYW1pbHk6ICJmb250Ijsgc3JjOiB1cmwoZGF0YTosKTs9 CiB9JyksZC5yZW1vdmVDaGlsZChlKTtyZXR1cm4gY30sci52aWRlbz0zRGZ1bmN0aW9uKCl7dmFy IGE9M0RiLmNyZWF0ZUVsZW1lbj0KdCgidmlkZW8iKSxjPTNEISFhLmNhblBsYXlUeXBlO2lmKGMp e2M9M0RuZXcgQm9vbGVhbihjKSxjLm9nZz0zRGEuY2FuUGxheVR5PQpwZSgndmlkZW8vb2dnOyBj b2RlY3M9M0QidGhlb3JhIicpO3ZhciBkPTNEJ3ZpZGVvL21wNDsgY29kZWNzPTNEImF2YzEuNDJF MDE9CkUnO2MuaDI2ND0zRGEuY2FuUGxheVR5cGUoZCsnIicpfHxhLmNhblBsYXlUeXBlKGQrJywg bXA0YS40MC4yIicpLGMud2VibT0zRD0KYS5jYW5QbGF5VHlwZSgndmlkZW8vd2VibTsgY29kZWNz PTNEInZwOCwgdm9yYmlzIicpfXJldHVybiBjfSxyLmF1ZGlvPTNEZnVuPQpjdGlvbigpe3ZhciBh PTNEYi5jcmVhdGVFbGVtZW50KCJhdWRpbyIpLGM9M0QhIWEuY2FuUGxheVR5cGU7YyYmKGM9M0Ru ZXcgQm89Cm9sZWFuKGMpLGMub2dnPTNEYS5jYW5QbGF5VHlwZSgnYXVkaW8vb2dnOyBjb2RlY3M9 M0Qidm9yYmlzIicpLGMubXAzPTNEYS5jYT0KblBsYXlUeXBlKCJhdWRpby9tcGVnOyIpLGMud2F2 PTNEYS5jYW5QbGF5VHlwZSgnYXVkaW8vd2F2OyBjb2RlY3M9M0QiMSInKSxjPQoubTRhPTNEYS5j YW5QbGF5VHlwZSgiYXVkaW8veC1tNGE7Iil8fGEuY2FuUGxheVR5cGUoImF1ZGlvL2FhYzsiKSk7 cmV0dXJuIGM9Cn0sci5sb2NhbHN0b3JhZ2U9M0RmdW5jdGlvbigpe3RyeXtyZXR1cm4hIWxvY2Fs U3RvcmFnZS5nZXRJdGVtfWNhdGNoKGEpe3JldD0KdXJuITF9fSxyLnNlc3Npb25zdG9yYWdlPTNE ZnVuY3Rpb24oKXt0cnl7cmV0dXJuISFzZXNzaW9uU3RvcmFnZS5nZXRJdGVtfWNhPQp0Y2goYSl7 cmV0dXJuITF9fSxyLndlYldvcmtlcnM9M0RmdW5jdGlvbigpe3JldHVybiEhYS5Xb3JrZXJ9LHIu YXBwbGljYXRpb249CmNhY2hlPTNEZnVuY3Rpb24oKXtyZXR1cm4hIWEuYXBwbGljYXRpb25DYWNo ZX0sci5zdmc9M0RmdW5jdGlvbigpe3JldHVybiEhYj0KLmNyZWF0ZUVsZW1lbnROUyYmISFiLmNy ZWF0ZUVsZW1lbnROUyhxLnN2Zywic3ZnIikuY3JlYXRlU1ZHUmVjdH0sci5pbmxpbmVzPQp2Zz0z RGZ1bmN0aW9uKCl7dmFyIGE9M0RiLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2EuaW5uZXJIVE1MPTNE IjxzdmcvPiI7cmV0dXI9Cm4oYS5maXJzdENoaWxkJiZhLmZpcnN0Q2hpbGQubmFtZXNwYWNlVVJJ KT0zRD0zRHEuc3ZnfSxyLnNtaWw9M0RmdW5jdGlvbigpez0KcmV0dXJuISFiLmNyZWF0ZUVsZW1l bnROUyYmL1NWRy8udGVzdChuLmNhbGwoYi5jcmVhdGVFbGVtZW50TlMocS5zdmcsImFuaW1hPQp0 ZSIpKSl9LHIuc3ZnY2xpcHBhdGhzPTNEZnVuY3Rpb24oKXtyZXR1cm4hIWIuY3JlYXRlRWxlbWVu dE5TJiYvU1ZHLy50ZXN0KG49Ci5jYWxsKGIuY3JlYXRlRWxlbWVudE5TKHEuc3ZnLCJjbGlwUGF0 aCIpKSl9O2Zvcih2YXIgSCBpbiByKXoocixIKSYmKHY9M0RILj0KdG9Mb3dlckNhc2UoKSxlW3Zd PTNEcltIXSgpLHUucHVzaCgoZVt2XT8iIjoibm8tIikrdikpO2UuaW5wdXR8fEcoKSxlLmNyb3Nz PQp3aW5kb3dtZXNzYWdpbmc9M0RlLnBvc3RtZXNzYWdlLGUuaGlzdG9yeW1hbmFnZW1lbnQ9M0Rl Lmhpc3RvcnksZS5hZGRUZXN0PQo9M0RmdW5jdGlvbihhLGIpe2E9M0RhLnRvTG93ZXJDYXNlKCk7 aWYoIWVbYV0pe2I9M0QhIWIoKSxnLmNsYXNzTmFtZSs9M0QiICI9CisoYj8iIjoibm8tIikrYSxl W2FdPTNEYjtyZXR1cm4gZX19LEEoIiIpLGo9M0RsPTNEbnVsbCxmJiZhLmF0dGFjaEV2ZW50JiZm dT0KbmN0aW9uKCl7dmFyIGE9M0RiLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2EuaW5uZXJIVE1MPTNE IjxlbGVtPjwvZWxlbT4iO3JldHVyPQpuIGEuY2hpbGROb2Rlcy5sZW5ndGghPTNEPTNEMX0oKSYm ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBwKGEsYil7dmFyIGM9M0QtMSw9CmQ9M0RhLmxlbmd0aCxl LGY9M0RbXTt3aGlsZSgrK2M8ZCllPTNEYVtjXSwoYj0zRGUubWVkaWF8fGIpIT0zRCJzY3JlZW4i JiZmLj0KcHVzaChwKGUuaW1wb3J0cyxiKSxlLmNzc1RleHQpO3JldHVybiBmLmpvaW4oIiIpfWZ1 bmN0aW9uIG8oYSl7dmFyIGI9M0QtMTt3PQpoaWxlKCsrYjxlKWEuY3JlYXRlRWxlbWVudChkW2Jd KX12YXIgYz0zRCJhYmJyfGFydGljbGV8YXNpZGV8YXVkaW98Y2FudmFzfGQ9CmV0YWlsc3xmaWdj YXB0aW9ufGZpZ3VyZXxmb290ZXJ8aGVhZGVyfGhncm91cHxtYXJrfG1ldGVyfG5hdnxvdXRwdXR8 cHJvZ3Jlcz0Kc3xzZWN0aW9ufHN1bW1hcnl8dGltZXx2aWRlbyIsZD0zRGMuc3BsaXQoInwiKSxl PTNEZC5sZW5ndGgsZj0zRG5ldyBSZWdFeHAoPQoiKF58XFxzKSgiK2MrIikiLCJnaSIpLGc9M0Ru ZXcgUmVnRXhwKCI8KC8qKSgiK2MrIikiLCJnaSIpLGg9M0RuZXcgUmVnRXhwKCI9CihefFteXFxu XSo/XFxzKSgiK2MrIikoW15cXG5dKikoe1tcXG5cXHdcXFddKj99KSIsImdpIiksaT0zRGIuY3Jl YXRlRG9jdW1lbj0KdEZyYWdtZW50KCksaj0zRGIuZG9jdW1lbnRFbGVtZW50LGs9M0RqLmZpcnN0 Q2hpbGQsbD0zRGIuY3JlYXRlRWxlbWVudCgiYm9kPQp5IiksbT0zRGIuY3JlYXRlRWxlbWVudCgi c3R5bGUiKSxuO28oYiksbyhpKSxrLmluc2VydEJlZm9yZShtLGsuZmlyc3RDaGlsZCk9CixtLm1l ZGlhPTNEInByaW50IixhLmF0dGFjaEV2ZW50KCJvbmJlZm9yZXByaW50IixmdW5jdGlvbigpe3Zh ciBhPTNELTEsYz0zRD0KcChiLnN0eWxlU2hlZXRzLCJhbGwiKSxrPTNEW10sbztuPTNEbnx8Yi5i b2R5O3doaWxlKChvPTNEaC5leGVjKGMpKSE9M0RudWxsPQopay5wdXNoKChvWzFdK29bMl0rb1sz XSkucmVwbGFjZShmLCIkMS5pZXBwXyQyIikrb1s0XSk7bS5zdHlsZVNoZWV0LmNzc1RleHQ9Cj0z RGsuam9pbigiXG4iKTt3aGlsZSgrK2E8ZSl7dmFyIHE9M0RiLmdldEVsZW1lbnRzQnlUYWdOYW1l KGRbYV0pLHI9M0RxLmxlbj0KZ3RoLHM9M0QtMTt3aGlsZSgrK3M8cilxW3NdLmNsYXNzTmFtZS5p bmRleE9mKCJpZXBwXyIpPDAmJihxW3NdLmNsYXNzTmFtZSs9Cj0zRCIgaWVwcF8iK2RbYV0pfWku YXBwZW5kQ2hpbGQobiksai5hcHBlbmRDaGlsZChsKSxsLmNsYXNzTmFtZT0zRG4uY2xhc3NOYT0K bWUsbC5pbm5lckhUTUw9M0RuLmlubmVySFRNTC5yZXBsYWNlKGcsIjwkMWZvbnQiKX0pLGEuYXR0 YWNoRXZlbnQoIm9uYWZ0ZXJwPQpyaW50IixmdW5jdGlvbigpe2wuaW5uZXJIVE1MPTNEIiIsai5y ZW1vdmVDaGlsZChsKSxqLmFwcGVuZENoaWxkKG4pLG0uc3R5bGU9ClNoZWV0LmNzc1RleHQ9M0Qi In0pfShhLGIpLGUuX2VuYWJsZUhUTUw1PTNEZixlLl92ZXJzaW9uPTNEZCxnLmNsYXNzTmFtZT0z RD0KZy5jbGFzc05hbWUucmVwbGFjZSgvXGJuby1qc1xiLywiIikrIiBqcyAiK3Uuam9pbigiICIp O3JldHVybiBlfSh0aGlzLHRoaXMuPQpkb2N1bWVudCkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxl