@pi-outpost/embed 0.40.0 → 0.40.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/dist/{CodeEditor-Cb6i9oIs.cjs → CodeEditor-B699PZlx.cjs} +1 -1
  2. package/dist/{CodeEditor-2Vx8PHAy.js → CodeEditor-CxKTvrhG.js} +5 -5
  3. package/dist/PdfViewer-COOgvLyp.js +428 -0
  4. package/dist/PdfViewer-Dyou2VMw.cjs +1 -0
  5. package/dist/{abnfDiagram-WEYOIA3C-B2ss_Vsq.js → abnfDiagram-WEYOIA3C-B_dTFm2g.js} +5 -5
  6. package/dist/{abnfDiagram-WEYOIA3C-DMn87p58.cjs → abnfDiagram-WEYOIA3C-Dk2VD3Iw.cjs} +1 -1
  7. package/dist/{arc-CLGGhOeW.js → arc-37kcMiGl.js} +1 -1
  8. package/dist/{arc-Dh2Zrypi.cjs → arc-C7P0rHQr.cjs} +1 -1
  9. package/dist/architecture-WOLXFQ4H-Dg4VU8sZ.js +2 -0
  10. package/dist/architecture-WOLXFQ4H-u_y_0ZVC.cjs +1 -0
  11. package/dist/architectureDiagram-ZHVYKT53-Bud-mHjo.cjs +36 -0
  12. package/dist/{architectureDiagram-ZHVYKT53-C5QppHvM.js → architectureDiagram-ZHVYKT53-CslNYmQN.js} +48 -64
  13. package/dist/{blockDiagram-RJAE7QA3-DOvlohR9.js → blockDiagram-RJAE7QA3-Dgm9J6pS.js} +27 -38
  14. package/dist/{blockDiagram-RJAE7QA3-CODM9GdZ.cjs → blockDiagram-RJAE7QA3-lEBn-_Yn.cjs} +2 -2
  15. package/dist/{c4Diagram-XDPPPE54-eTVK3Kzy.cjs → c4Diagram-XDPPPE54-BKNqVY-U.cjs} +1 -1
  16. package/dist/{c4Diagram-XDPPPE54-8dwnUpAO.js → c4Diagram-XDPPPE54-rbzhqhW5.js} +8 -8
  17. package/dist/channel-AESWk0Yw.cjs +1 -0
  18. package/dist/{channel-B1lf-ehw.js → channel-CEoRf1uz.js} +1 -1
  19. package/dist/{chunk-2E7WHVMD-DkV-cet-.cjs → chunk-2E7WHVMD-BNsJOdNP.cjs} +1 -1
  20. package/dist/{chunk-2E7WHVMD-Dg_Sckag.js → chunk-2E7WHVMD-Vo-POJc_.js} +3 -3
  21. package/dist/{chunk-4EMNKR2T-C2XrT3x_.js → chunk-4EMNKR2T-BIO9veC4.js} +1 -1
  22. package/dist/{chunk-4EMNKR2T-DfeN909d.cjs → chunk-4EMNKR2T-CGAdq4EA.cjs} +1 -1
  23. package/dist/{chunk-55XCU76K-d9D4PS_7.cjs → chunk-55XCU76K-IpMfjRYv.cjs} +1 -1
  24. package/dist/{chunk-55XCU76K-CADZXRVb.js → chunk-55XCU76K-o8OgDLPD.js} +3 -3
  25. package/dist/{chunk-7S6XSTFO-DV8etStf.js → chunk-7S6XSTFO-DrDRohsE.js} +4 -4
  26. package/dist/{chunk-7S6XSTFO-DJ37SdG5.cjs → chunk-7S6XSTFO-ejBVk-tI.cjs} +1 -1
  27. package/dist/{chunk-AQDTSKZB-DElrkKED.cjs → chunk-AQDTSKZB-B-MpZ-y2.cjs} +7 -7
  28. package/dist/{chunk-AQDTSKZB-CUCC855j.js → chunk-AQDTSKZB-DUZx386i.js} +14 -73
  29. package/dist/chunk-DSNLSHJZ-BxQ7lMXY.cjs +129 -0
  30. package/dist/{chunk-DSNLSHJZ-Bicto10E.js → chunk-DSNLSHJZ-DPpiuUZK.js} +627 -624
  31. package/dist/{chunk-HAGFOTED-Dykk1LyE.cjs → chunk-HAGFOTED-BUPxFGdn.cjs} +1 -1
  32. package/dist/{chunk-HAGFOTED-BjDmRfgG.js → chunk-HAGFOTED-ceXO12G4.js} +6 -6
  33. package/dist/{chunk-HNE4Q36P-C-j5Nn9f.cjs → chunk-HNE4Q36P-CCHAgwa3.cjs} +1 -1
  34. package/dist/{chunk-HNE4Q36P-5u7dvjgt.js → chunk-HNE4Q36P-uON_vFhT.js} +6 -6
  35. package/dist/{chunk-NGNAAXSQ-kHtfTQLE.cjs → chunk-NGNAAXSQ-BaBpWF2S.cjs} +6 -6
  36. package/dist/{chunk-NGNAAXSQ-DM0DL2MX.js → chunk-NGNAAXSQ-uUWLDjAm.js} +46 -50
  37. package/dist/{chunk-NQOKRVIF-CpOc5MEh.cjs → chunk-NQOKRVIF-DcZqKWzv.cjs} +1 -1
  38. package/dist/{chunk-NQOKRVIF-DUgN94ic.js → chunk-NQOKRVIF-DmOxzSOQ.js} +9 -9
  39. package/dist/{chunk-UHW7PFBP-NbzzxkEP.js → chunk-UHW7PFBP-BTk1ZC8L.js} +1 -1
  40. package/dist/{chunk-UHW7PFBP-SZ8KvGM0.cjs → chunk-UHW7PFBP-Bays5Zi8.cjs} +1 -1
  41. package/dist/{chunk-VQ5W62QI-D3c9tcDC.js → chunk-VQ5W62QI-Bvcxpp51.js} +2 -2
  42. package/dist/{chunk-VQ5W62QI-CsW6i5Ev.cjs → chunk-VQ5W62QI-Dw9Kffnl.cjs} +1 -1
  43. package/dist/{chunk-WQQL4CDK-l3Yf4SAX.js → chunk-WQQL4CDK-C3yDIFZ3.js} +8 -8
  44. package/dist/{chunk-WQQL4CDK-TvwGUFeE.cjs → chunk-WQQL4CDK-DxEEyQzx.cjs} +1 -1
  45. package/dist/{chunk-XXDRQBXY-IzhWXllg.js → chunk-XXDRQBXY-CNtMgRT_.js} +1 -1
  46. package/dist/{chunk-XXDRQBXY-yMT3rT5Y.cjs → chunk-XXDRQBXY-DfReYcER.cjs} +1 -1
  47. package/dist/{chunk-YZO67HFG-CLf5aoHk.cjs → chunk-YZO67HFG-DCQIFG8j.cjs} +1 -1
  48. package/dist/{chunk-YZO67HFG-DWHo0c6-.js → chunk-YZO67HFG-WF3jklBn.js} +2 -2
  49. package/dist/{chunk-ZAUX2LTX-BwjEPfG0.cjs → chunk-ZAUX2LTX-DIQkgUFr.cjs} +1 -1
  50. package/dist/{chunk-ZAUX2LTX-COHXRsvU.js → chunk-ZAUX2LTX-P8LAwm_U.js} +3 -3
  51. package/dist/{chunk-ZCHMQSOR-Cw-9SNln.js → chunk-ZCHMQSOR-BbO7eY2w.js} +78 -80
  52. package/dist/chunk-ZCHMQSOR-Cg8zPt0w.cjs +1 -0
  53. package/dist/{classDiagram-v2-4MYWR3UA-vsmkJ0Cx.js → classDiagram-v2-4MYWR3UA-DIjHIULx.js} +16 -16
  54. package/dist/{classDiagram-v2-4MYWR3UA-wLbwKHvU.cjs → classDiagram-v2-4MYWR3UA-DyMM0DMP.cjs} +2 -2
  55. package/dist/{clike-8rZWBES0.cjs → clike-I-fVVl3d.cjs} +1 -1
  56. package/dist/{clike-D-dOQnrm.js → clike-VB7owi7S.js} +1 -5
  57. package/dist/{conversationExport-BmvGyAf-.cjs → conversationExport-Co-E1-fF.cjs} +1 -1
  58. package/dist/{conversationExport-CBiBLWVk.js → conversationExport-KyCOByU5.js} +7 -8
  59. package/dist/conversationHistory-BYekdNUk.cjs +31 -0
  60. package/dist/conversationHistory-DPZF00Qz.js +21639 -0
  61. package/dist/{core-D_MCdR2m.js → core-BGZbe1UJ.js} +2 -6
  62. package/dist/{core-BrupIPpc.cjs → core-CmCLKhYZ.cjs} +2 -2
  63. package/dist/{cose-bilkent-JH36ORCC-qPjrc3_9.js → cose-bilkent-JH36ORCC-DjbvRWCz.js} +58 -71
  64. package/dist/cose-bilkent-JH36ORCC-KeNQ2SMA.cjs +1 -0
  65. package/dist/cynefin-EF2NZ3EQ-BBhIrDKD.cjs +1 -0
  66. package/dist/cynefin-EF2NZ3EQ-DDZjUykJ.js +2 -0
  67. package/dist/{cynefinDiagram-WF24UDRP-CHBmFbqk.cjs → cynefinDiagram-WF24UDRP-BC09SRT2.cjs} +1 -1
  68. package/dist/{cynefinDiagram-WF24UDRP-BhWkOxCi.js → cynefinDiagram-WF24UDRP-DEFG-MNh.js} +5 -5
  69. package/dist/cytoscape.esm-BN8NndIc.cjs +321 -0
  70. package/dist/{cytoscape.esm-Cq7KPj0t.js → cytoscape.esm-BmhLauwj.js} +412 -513
  71. package/dist/dagre-NK4GIZVX-D0_oLrA9.cjs +4 -0
  72. package/dist/{dagre-NK4GIZVX-CJfLDa-C.js → dagre-NK4GIZVX-D6Xuc_Nw.js} +43 -47
  73. package/dist/{diagram-CBK3MWTC-2pAHlnGJ.js → diagram-CBK3MWTC-CuUrHQAz.js} +7 -7
  74. package/dist/{diagram-CBK3MWTC-B_5GBGbb.cjs → diagram-CBK3MWTC-DbXGbFMz.cjs} +1 -1
  75. package/dist/{diagram-I5XIIV2D-CQ_Y9NJs.js → diagram-I5XIIV2D-DbwsxgDf.js} +5 -5
  76. package/dist/{diagram-I5XIIV2D-BPxYY-Kp.cjs → diagram-I5XIIV2D-Dom9usNq.cjs} +1 -1
  77. package/dist/{diagram-ODIL2UCW-pyDNtrY0.cjs → diagram-ODIL2UCW-CLSAtgxG.cjs} +2 -2
  78. package/dist/{diagram-ODIL2UCW-BJL-7QWJ.js → diagram-ODIL2UCW-CSnuo9bJ.js} +7 -15
  79. package/dist/{diagram-PFBEJUXE-CXd3x3TA.js → diagram-PFBEJUXE-ChA6KYWw.js} +6 -6
  80. package/dist/{diagram-PFBEJUXE-BUvTWvw5.cjs → diagram-PFBEJUXE-DAIw33Bx.cjs} +1 -1
  81. package/dist/{diagram-RJA3I4VV-T3Hd1koB.cjs → diagram-RJA3I4VV-Bt-BxYua.cjs} +1 -1
  82. package/dist/{diagram-RJA3I4VV-eMNhs7pW.js → diagram-RJA3I4VV-DCygetH_.js} +5 -5
  83. package/dist/{diagram-TYUNFSNR-CWpFSB2K.js → diagram-TYUNFSNR-BSq4ni3b.js} +22 -35
  84. package/dist/diagram-TYUNFSNR-Dy2nkVin.cjs +200 -0
  85. package/dist/{dist-Dvqp7T4I.cjs → dist-2ynRxsSC.cjs} +1 -1
  86. package/dist/{dist-B7I27gkN.cjs → dist-AeGgfThs.cjs} +1 -1
  87. package/dist/{dist-Dwv2VYAL.cjs → dist-BB5r6V4R.cjs} +1 -1
  88. package/dist/{dist-BvsCdwbL.cjs → dist-BDenKBYL.cjs} +1 -1
  89. package/dist/{dist-BhXQJ0x3.js → dist-BJHB0x8Y.js} +12 -18
  90. package/dist/{dist-BWlGU9XM.js → dist-BTD5L343.js} +3 -3
  91. package/dist/{dist-Dr4zY56l.js → dist-BWEDf1a-.js} +2 -2
  92. package/dist/{dist-BlD6NhiG.js → dist-BWVp6Da-.js} +4 -7
  93. package/dist/{dist-B8gmxwh-.cjs → dist-C6eKaA9j.cjs} +1 -1
  94. package/dist/{dist-C0_uLrCb.cjs → dist-CCIM600Y.cjs} +1 -1
  95. package/dist/{dist-BZcglaBe.cjs → dist-CFf_g4kk.cjs} +1 -1
  96. package/dist/{dist-DPXHxuWb.js → dist-CGZbBQje.js} +2 -2
  97. package/dist/{dist-Xjm88mbq.js → dist-CIBKGNWD.js} +4 -4
  98. package/dist/{dist-DqbI0un6.cjs → dist-CQNYwGEy.cjs} +1 -1
  99. package/dist/{dist-CyFPTQ2l.cjs → dist-CT7H4C9g.cjs} +1 -1
  100. package/dist/{dist-BBUKMRrs.js → dist-CYUF5YPj.js} +2 -2
  101. package/dist/{dist-DWv23S35.js → dist-CZhfI1u7.js} +1 -1
  102. package/dist/{dist-CHKg1Qb9.js → dist-ChWDi62w.js} +3 -3
  103. package/dist/dist-CmF-TINl.cjs +1 -0
  104. package/dist/{dist-C8jjSrIs.cjs → dist-Cz8GulTe.cjs} +1 -1
  105. package/dist/{dist-qNFo_ASR.cjs → dist-D6LkseRA.cjs} +1 -1
  106. package/dist/{dist-BZjcsPqi.cjs → dist-DEZD35IP.cjs} +7 -7
  107. package/dist/{dist-DZrtSp8H.js → dist-DNg4hNu7.js} +3 -3
  108. package/dist/dist-D_oMTxAl.cjs +2 -0
  109. package/dist/{dist-BfQGuM1r.js → dist-DaJf_JYz.js} +4 -4
  110. package/dist/dist-Dpu_aN4m.cjs +1 -0
  111. package/dist/{dist-CA6ERWRG.js → dist-DszFZlYh.js} +2 -2
  112. package/dist/{dist-qq9a_ch2.js → dist-Kg2QsUg8.js} +4 -4
  113. package/dist/{dist-FSzij9Rn.js → dist-LM11INLG.js} +2 -2
  114. package/dist/{dist-C9dtxVRR.cjs → dist-M4fo1U45.cjs} +1 -1
  115. package/dist/{dist-BhNvvg0I.js → dist-gn9y7Yb8.js} +116 -119
  116. package/dist/{dist-B0lO3k1f.js → dist-hv72z6I6.js} +3 -3
  117. package/dist/{dist-Bppoi_v9.js → dist-lPCEVnGX.js} +2 -2
  118. package/dist/{dist-D8I4FQ-Q.cjs → dist-rfjaCa2V.cjs} +1 -1
  119. package/dist/{docxExport-BGYavEI-.js → docxExport-DpgcioIA.js} +2 -2
  120. package/dist/{docxExport-B24fOHFl.cjs → docxExport-ZYp4tZ7k.cjs} +1 -1
  121. package/dist/{ebnfDiagram-V4P3TTPT-DAoJZ85k.cjs → ebnfDiagram-V4P3TTPT-6xhHNshj.cjs} +1 -1
  122. package/dist/{ebnfDiagram-V4P3TTPT-B7cCNP3X.js → ebnfDiagram-V4P3TTPT-e4I3Otpa.js} +5 -5
  123. package/dist/{elk-QONTBCTQ-BYnAuRAH.js → elk-QONTBCTQ-B8RYU1Ay.js} +746 -1241
  124. package/dist/elk-QONTBCTQ-hBYUI6Nr.cjs +27 -0
  125. package/dist/{erDiagram-KYQIGQAA-BKkxORU3.js → erDiagram-KYQIGQAA-BTNANm6p.js} +14 -14
  126. package/dist/{erDiagram-KYQIGQAA-BIlejnVi.cjs → erDiagram-KYQIGQAA-DsqyoDOz.cjs} +1 -1
  127. package/dist/eventmodeling-K75KTNOO-Ckh9Djrw.js +2 -0
  128. package/dist/eventmodeling-K75KTNOO-DKYlYG2c.cjs +1 -0
  129. package/dist/flowDiagram-IUGLLWBU-BJlVRCj8.js +15 -0
  130. package/dist/flowDiagram-IUGLLWBU-CsC_IEV_.cjs +1 -0
  131. package/dist/{ganttDiagram-R7GPNTJY-BGcXo1KA.cjs → ganttDiagram-R7GPNTJY-B1juClwW.cjs} +2 -2
  132. package/dist/{ganttDiagram-R7GPNTJY-dcubAqZI.js → ganttDiagram-R7GPNTJY-CEGQ6hzi.js} +18 -26
  133. package/dist/gitGraph-VSP46ZUC-5x2CrP9e.js +2 -0
  134. package/dist/gitGraph-VSP46ZUC-Cgx_wrMl.cjs +1 -0
  135. package/dist/{gitGraphDiagram-PDYL7XHY-BoJsALki.cjs → gitGraphDiagram-PDYL7XHY-6cCNinUi.cjs} +1 -1
  136. package/dist/{gitGraphDiagram-PDYL7XHY-CfRYMd3w.js → gitGraphDiagram-PDYL7XHY-D_ADFBrL.js} +4 -4
  137. package/dist/info-OHQRW6UA-DDzA9eXN.cjs +1 -0
  138. package/dist/info-OHQRW6UA-DkaWmfEE.js +2 -0
  139. package/dist/{infoDiagram-MVDRKAX5-B1QBSTSo.cjs → infoDiagram-MVDRKAX5-CVeFOzof.cjs} +1 -1
  140. package/dist/{infoDiagram-MVDRKAX5-BYGrp2QT.js → infoDiagram-MVDRKAX5-Dkuw3h5s.js} +4 -4
  141. package/dist/{ishikawaDiagram-HPEHV2GE-BWJo3pFM.cjs → ishikawaDiagram-HPEHV2GE-92CAbMpi.cjs} +2 -2
  142. package/dist/{ishikawaDiagram-HPEHV2GE-C32LoFQd.js → ishikawaDiagram-HPEHV2GE-oTSoKUOA.js} +5 -7
  143. package/dist/{javascript-CIP6I0eT.js → javascript-BSRoJWCv.js} +1 -8
  144. package/dist/javascript-B_OkdA1F.cjs +1 -0
  145. package/dist/{journeyDiagram-BOSHW7O7-DJ9OKW8H.js → journeyDiagram-BOSHW7O7-CMbGxPLA.js} +4 -4
  146. package/dist/{journeyDiagram-BOSHW7O7-090H5NM8.cjs → journeyDiagram-BOSHW7O7-Cb_yTQWF.cjs} +1 -1
  147. package/dist/{kanban-definition-FNSA4HC5-BhC2u-9L.cjs → kanban-definition-FNSA4HC5-DlUMoAIT.cjs} +1 -1
  148. package/dist/{kanban-definition-FNSA4HC5-FqIvMKJw.js → kanban-definition-FNSA4HC5-DzEQcVPw.js} +10 -10
  149. package/dist/{katex-DTnCNBYg.js → katex-BOYcAQ2I.js} +17 -26
  150. package/dist/{katex-DBUQi-HZ.cjs → katex-C-T_oEhv.cjs} +5 -5
  151. package/dist/lib-CRTt_FoR.cjs +26 -0
  152. package/dist/{lib-DILNlJGg.js → lib-CSMo4o20.js} +1522 -1452
  153. package/dist/{line-CJjnW4T-.js → line-0VTxwDiV.js} +1 -1
  154. package/dist/{line-DjYp3Ff8.cjs → line-ZwhMGa3_.cjs} +1 -1
  155. package/dist/linear-Bh2vuvAF.cjs +1 -0
  156. package/dist/{linear-DVFZQF4V.js → linear-CxE0kir0.js} +2 -3
  157. package/dist/{loadReferencedImage-CkvnSeQi.js → loadReferencedImage-2qNdVVhQ.js} +2 -2
  158. package/dist/{loadReferencedImage-CHTgZKAP.cjs → loadReferencedImage-qVqyIGz2.cjs} +1 -1
  159. package/dist/mermaid-parser.core-DKJw9lm9.cjs +6 -0
  160. package/dist/{mermaid-parser.core-CI12FMcX.js → mermaid-parser.core-IoY9gmm6.js} +19 -25
  161. package/dist/{mermaid.core-2PafqU96.cjs → mermaid.core-73kk5oPm.cjs} +7 -7
  162. package/dist/{mermaid.core-BxQmR6RW.js → mermaid.core-C8dp1dnD.js} +69 -75
  163. package/dist/{mermaidToImage-DowDuCUe.js → mermaidToImage-B2aJB9x8.js} +4900 -2274
  164. package/dist/mermaidToImage-qujM0Ggp.cjs +28 -0
  165. package/dist/{mindmap-definition-6OY57UG3-C0JXAaiI.js → mindmap-definition-6OY57UG3-CXobmoZM.js} +13 -13
  166. package/dist/{mindmap-definition-6OY57UG3-QMaMZxqJ.cjs → mindmap-definition-6OY57UG3-DLx3d1V6.cjs} +1 -1
  167. package/dist/packet-JDAUHWVQ-7Kdl1aNj.js +2 -0
  168. package/dist/packet-JDAUHWVQ-BB_DuPiR.cjs +1 -0
  169. package/dist/{pdf-D6MygsxO.js → pdf-CL7gVGT1.js} +3278 -3383
  170. package/dist/pdf-HcLHRelN.cjs +54 -0
  171. package/dist/{pegDiagram-ECIUJNBX-agFLe55J.cjs → pegDiagram-ECIUJNBX-B-eSDSQK.cjs} +1 -1
  172. package/dist/{pegDiagram-ECIUJNBX-BluDPMz-.js → pegDiagram-ECIUJNBX-ODBWqs1V.js} +5 -5
  173. package/dist/pi-outpost-embed.cjs +15 -15
  174. package/dist/pi-outpost-embed.js +160 -325
  175. package/dist/pie-XZMESJXO-CxP1ntAS.cjs +1 -0
  176. package/dist/pie-XZMESJXO-vkOzPeYA.js +2 -0
  177. package/dist/{pieDiagram-GNMPY74T-Bkt6LXIr.cjs → pieDiagram-GNMPY74T-BtYyKCrf.cjs} +1 -1
  178. package/dist/{pieDiagram-GNMPY74T-D2Dlw9oL.js → pieDiagram-GNMPY74T-DYDC5z2D.js} +7 -7
  179. package/dist/{quadrantDiagram-D57K4MC3-vbdBbRAF.js → quadrantDiagram-D57K4MC3-BfQWcg-D.js} +3 -3
  180. package/dist/{quadrantDiagram-D57K4MC3-BwUPO-ri.cjs → quadrantDiagram-D57K4MC3-Cu6JmzPE.cjs} +1 -1
  181. package/dist/radar-ABXABTNO-BIDY5R4F.cjs +1 -0
  182. package/dist/radar-ABXABTNO-DvS23EDt.js +2 -0
  183. package/dist/railroad-I3PHUGI6-BRbLa2w3.cjs +1 -0
  184. package/dist/railroad-I3PHUGI6-DH5Ttw2P.js +2 -0
  185. package/dist/railroad-abnf-LNEFI6M7-Qj3WuV4C.cjs +1 -0
  186. package/dist/railroad-abnf-LNEFI6M7-wA0DIfJr.js +2 -0
  187. package/dist/railroad-ebnf-DWYD2UWJ-C7YCjuXb.cjs +1 -0
  188. package/dist/railroad-ebnf-DWYD2UWJ-CkakbyYF.js +2 -0
  189. package/dist/railroad-peg-JR7BVNR7-CpVGf7CG.cjs +1 -0
  190. package/dist/railroad-peg-JR7BVNR7-Kw2gXekA.js +2 -0
  191. package/dist/{railroadDiagram-Y72NRBL7-CJ9MP3wV.cjs → railroadDiagram-Y72NRBL7-BdHmqKV_.cjs} +1 -1
  192. package/dist/{railroadDiagram-Y72NRBL7-B2x_q8pa.js → railroadDiagram-Y72NRBL7-ChQwG3mZ.js} +5 -5
  193. package/dist/{requirementDiagram-EQYSW5RA-CP0M11vC.cjs → requirementDiagram-EQYSW5RA-CDQ6Nza1.cjs} +1 -1
  194. package/dist/{requirementDiagram-EQYSW5RA-j7VZ-e65.js → requirementDiagram-EQYSW5RA-Dj4E0fE3.js} +13 -13
  195. package/dist/{rolldown-runtime-DArdT4gl.js → rolldown-runtime-5HNE8Q1r.js} +1 -1
  196. package/dist/rolldown-runtime-DbbDpzbe.cjs +1 -0
  197. package/dist/{sankeyDiagram-SY24JHO5-B7NuxaKG.cjs → sankeyDiagram-SY24JHO5-BPFkmPzT.cjs} +1 -1
  198. package/dist/{sankeyDiagram-SY24JHO5-Cgewgbc8.js → sankeyDiagram-SY24JHO5-luxVW4uf.js} +2 -2
  199. package/dist/{sequenceDiagram-BLEHNHQU-B5THoiqW.cjs → sequenceDiagram-BLEHNHQU-DX51aIRY.cjs} +1 -1
  200. package/dist/{sequenceDiagram-BLEHNHQU-DsjvHcWN.js → sequenceDiagram-BLEHNHQU-H4rQDzp-.js} +6 -6
  201. package/dist/{sizeCapture-INFHLROL-B5Lg3qGn.js → sizeCapture-INFHLROL-Uzko9_4n.js} +1 -1
  202. package/dist/sizeCapture-INFHLROL-bi8MyHwB.cjs +1 -0
  203. package/dist/{src-Dkp7vqs8.js → src-65Lfw03T.js} +12 -18
  204. package/dist/src-BN1VgXwj.cjs +1 -0
  205. package/dist/{stateDiagram-v2-A6IESKWZ-BD0FNkiB.js → stateDiagram-v2-A6IESKWZ-DBJ11U2p.js} +14 -14
  206. package/dist/{stateDiagram-v2-A6IESKWZ-Dqzvdrv1.cjs → stateDiagram-v2-A6IESKWZ-Dbp783Hd.cjs} +1 -1
  207. package/dist/{swimlanes-B3ENRKFQ-Do-xntE9.js → swimlanes-B3ENRKFQ-Bp3vZCmK.js} +38 -60
  208. package/dist/swimlanes-B3ENRKFQ-DY1V--Rq.cjs +1 -0
  209. package/dist/swimlanesDiagram-AYQRV4AK-COavJcG4.js +27 -0
  210. package/dist/swimlanesDiagram-AYQRV4AK-dUd5QjxZ.cjs +8 -0
  211. package/dist/{timeline-definition-JXYKGLGB-Cxi2ay-W.js → timeline-definition-JXYKGLGB-BE6iAj4r.js} +5 -5
  212. package/dist/{timeline-definition-JXYKGLGB-B_QITrmE.cjs → timeline-definition-JXYKGLGB-DKhMPFBi.cjs} +1 -1
  213. package/dist/treeView-D4JQ5SDB-BAXbN8Bf.cjs +1 -0
  214. package/dist/treeView-D4JQ5SDB-BAub6u3e.js +2 -0
  215. package/dist/treemap-SAJKECNS-DlyYa6yd.js +2 -0
  216. package/dist/treemap-SAJKECNS-EjU-hEqB.cjs +1 -0
  217. package/dist/{typescript-C93MG6Zk.js → typescript-4QjI-Ug2.js} +1 -8
  218. package/dist/typescript-CUdTaGTg.cjs +1 -0
  219. package/dist/{usecaseDiagram-WPOLBNNX-_GFZAFdK.cjs → usecaseDiagram-WPOLBNNX-BRWufOTq.cjs} +6 -6
  220. package/dist/{usecaseDiagram-WPOLBNNX-C5u6uogx.js → usecaseDiagram-WPOLBNNX-DY9Md_AG.js} +36 -48
  221. package/dist/{vennDiagram-Q3Y3IDCW-CircfM4o.js → vennDiagram-Q3Y3IDCW-DbPGt27W.js} +4 -4
  222. package/dist/{vennDiagram-Q3Y3IDCW-Bf1i94bS.cjs → vennDiagram-Q3Y3IDCW-NYVHk5sI.cjs} +1 -1
  223. package/dist/wardley-7MLQ67FV-BDYz-MEd.js +2 -0
  224. package/dist/wardley-7MLQ67FV-BdwutaJ8.cjs +1 -0
  225. package/dist/{wardleyDiagram-IVAIDKWA-BOSseRAa.js → wardleyDiagram-IVAIDKWA-BHkJFpfC.js} +5 -5
  226. package/dist/{wardleyDiagram-IVAIDKWA-Cr5LS-u2.cjs → wardleyDiagram-IVAIDKWA-DsYJNlmX.cjs} +1 -1
  227. package/dist/{xychartDiagram-4URNHDU4-DOUN6alM.cjs → xychartDiagram-4URNHDU4-B_g46bSg.cjs} +1 -1
  228. package/dist/{xychartDiagram-4URNHDU4-C4X8LFY4.js → xychartDiagram-4URNHDU4-IvFjWG-y.js} +8 -8
  229. package/package.json +14 -14
  230. package/dist/PdfViewer-BJfC4rzg.js +0 -428
  231. package/dist/PdfViewer-D6C-NAyn.cjs +0 -1
  232. package/dist/architecture-WOLXFQ4H-DupyKILn.cjs +0 -1
  233. package/dist/architecture-WOLXFQ4H-X4ZWxzi-.js +0 -3
  234. package/dist/architectureDiagram-ZHVYKT53-DBfdIpyr.cjs +0 -36
  235. package/dist/channel-BRczbI_M.cjs +0 -1
  236. package/dist/chunk-DSNLSHJZ-DZO9xahH.cjs +0 -129
  237. package/dist/chunk-ZCHMQSOR-7slscxYq.cjs +0 -1
  238. package/dist/conversationHistory-DN1r7WZT.cjs +0 -287
  239. package/dist/conversationHistory-DwB6hasI.js +0 -43647
  240. package/dist/cose-bilkent-JH36ORCC-Cc2qvpLA.cjs +0 -1
  241. package/dist/cynefin-EF2NZ3EQ-BB_WO8YQ.js +0 -3
  242. package/dist/cynefin-EF2NZ3EQ-Du3-s5Z7.cjs +0 -1
  243. package/dist/cytoscape.esm-uHsEX1XI.cjs +0 -321
  244. package/dist/dagre-NK4GIZVX-BI_akQkH.cjs +0 -4
  245. package/dist/diagram-TYUNFSNR-B_p2UHsR.cjs +0 -200
  246. package/dist/dist-DEl2Ze0j.cjs +0 -2
  247. package/dist/dist-DJbgM591.cjs +0 -1
  248. package/dist/dist-Dja2VlN5.cjs +0 -1
  249. package/dist/elk-QONTBCTQ-BDAptnPT.cjs +0 -27
  250. package/dist/eventmodeling-K75KTNOO-CMoz0K5S.js +0 -3
  251. package/dist/eventmodeling-K75KTNOO-DZdZrgwl.cjs +0 -1
  252. package/dist/flowDiagram-IUGLLWBU-BSiCLGuL.cjs +0 -1
  253. package/dist/flowDiagram-IUGLLWBU-DL_I6QCE.js +0 -16
  254. package/dist/gitGraph-VSP46ZUC-DoTshgkY.js +0 -3
  255. package/dist/gitGraph-VSP46ZUC-lawIO6K6.cjs +0 -1
  256. package/dist/info-OHQRW6UA-DPTZOb30.js +0 -3
  257. package/dist/info-OHQRW6UA-deop1PPz.cjs +0 -1
  258. package/dist/javascript-Gn0piXHk.cjs +0 -1
  259. package/dist/lib-BDkAiWI9.cjs +0 -26
  260. package/dist/linear-Nt9BuHfn.cjs +0 -1
  261. package/dist/mermaid-parser.core-BHBS1DqP.cjs +0 -6
  262. package/dist/mermaidToImage-CSR5Vyvs.cjs +0 -25
  263. package/dist/packet-JDAUHWVQ-Bcik24Kz.js +0 -3
  264. package/dist/packet-JDAUHWVQ-CrY7ylWJ.cjs +0 -1
  265. package/dist/pdf-BcvU2rBV.cjs +0 -54
  266. package/dist/pie-XZMESJXO-BYQC-ufi.js +0 -3
  267. package/dist/pie-XZMESJXO-WjCBboSE.cjs +0 -1
  268. package/dist/radar-ABXABTNO-BoQ7hH7Z.cjs +0 -1
  269. package/dist/radar-ABXABTNO-MxbyaZja.js +0 -3
  270. package/dist/railroad-I3PHUGI6-DckUArT-.js +0 -3
  271. package/dist/railroad-I3PHUGI6-DuGTlHry.cjs +0 -1
  272. package/dist/railroad-abnf-LNEFI6M7-DmAJaMEu.js +0 -3
  273. package/dist/railroad-abnf-LNEFI6M7-DoWf9u55.cjs +0 -1
  274. package/dist/railroad-ebnf-DWYD2UWJ-Bf05ZyW1.cjs +0 -1
  275. package/dist/railroad-ebnf-DWYD2UWJ-CS2AUYSv.js +0 -3
  276. package/dist/railroad-peg-JR7BVNR7-B-nctVbV.js +0 -3
  277. package/dist/railroad-peg-JR7BVNR7-CcV5KH4m.cjs +0 -1
  278. package/dist/rolldown-runtime-DF3sbh8G.cjs +0 -1
  279. package/dist/sizeCapture-INFHLROL-bJ2ZX4Du.cjs +0 -1
  280. package/dist/src-D9o9TOtH.cjs +0 -1
  281. package/dist/swimlanes-B3ENRKFQ-DEsfJ_Va.cjs +0 -1
  282. package/dist/swimlanesDiagram-AYQRV4AK-CU4USE4p.cjs +0 -8
  283. package/dist/swimlanesDiagram-AYQRV4AK-ora_Y3LB.js +0 -27
  284. package/dist/treeView-D4JQ5SDB-C3ticT1s.cjs +0 -1
  285. package/dist/treeView-D4JQ5SDB-CEuRf8gK.js +0 -3
  286. package/dist/treemap-SAJKECNS-BwIfwvl-.cjs +0 -1
  287. package/dist/treemap-SAJKECNS-DiC0668-.js +0 -3
  288. package/dist/typescript-BarIi8q9.cjs +0 -1
  289. package/dist/wardley-7MLQ67FV-BoIyQQ0E.cjs +0 -1
  290. package/dist/wardley-7MLQ67FV-CFF6IT1d.js +0 -3
@@ -0,0 +1,428 @@
1
+ import { a as e } from "./workspacePath-Dzahj9-k.js";
2
+ import { n as t, t as n } from "./findInPage-xFP831JH.js";
3
+ import { forwardRef as r, useCallback as i, useEffect as a, useImperativeHandle as o, useRef as s, useState as c } from "react";
4
+ import { Fragment as l, jsx as u, jsxs as d } from "react/jsx-runtime";
5
+ //#region ../ui/src/util/pdfFindIndex.ts
6
+ function f(e, t) {
7
+ if (e <= 0) return [];
8
+ let n = Math.min(Math.max(Math.round(t), 1), e), r = [n], i = n - 1, a = n + 1;
9
+ for (; i >= 1 || a <= e;) i >= 1 && r.push(i--), a <= e && r.push(a++);
10
+ return r;
11
+ }
12
+ function p(e, t, n, r, i = () => new Promise((e) => setTimeout(e, 0))) {
13
+ let a = !1, o = f(e.numPages, t);
14
+ return (async () => {
15
+ for (let t of o) {
16
+ if (a) return;
17
+ let r;
18
+ try {
19
+ r = await e.getPageText(t);
20
+ } catch {
21
+ r = "";
22
+ }
23
+ if (a) return;
24
+ n(t, r), await i();
25
+ }
26
+ a || r();
27
+ })(), { cancel: () => {
28
+ a = !0;
29
+ } };
30
+ }
31
+ function m(e, t, r) {
32
+ if (r === "") return [];
33
+ let i = [];
34
+ for (let a = 1; a <= t; a++) {
35
+ let t = e.get(a);
36
+ if (t === void 0) continue;
37
+ let o = n(t, r);
38
+ for (let e = 0; e < o.length; e++) i.push({
39
+ page: a,
40
+ ordinalOnPage: e
41
+ });
42
+ }
43
+ return i;
44
+ }
45
+ //#endregion
46
+ //#region ../ui/src/components/PdfViewer.tsx
47
+ var h = [
48
+ .5,
49
+ .75,
50
+ 1,
51
+ 1.25,
52
+ 1.5,
53
+ 2,
54
+ 3
55
+ ];
56
+ function g(e) {
57
+ return e >= 1048576 ? `${Math.round(e / 1048576)} MB` : `${Math.round(e / 1024)} KB`;
58
+ }
59
+ function _(e) {
60
+ switch (e.kind) {
61
+ case "too-large": return e.limitBytes === void 0 ? "This PDF is larger than the server's PDF limit." : `This PDF is larger than the ${g(e.limitBytes)} limit the server allows.`;
62
+ case "encrypted": return "This PDF is password-protected, so it cannot be displayed.";
63
+ case "not-found": return "This file no longer exists.";
64
+ case "unauthorized": return "This session is not authorized to read this file.";
65
+ case "unreadable": return "This file could not be read as a PDF.";
66
+ }
67
+ }
68
+ async function v(t, n, r, i, a) {
69
+ let o = await fetch(e(t, n, null, i, a), { headers: r ? { Authorization: `Bearer ${r}` } : {} });
70
+ if (!o.ok) {
71
+ if (o.status === 413) {
72
+ let e = await o.json().catch(() => ({}));
73
+ throw {
74
+ kind: "too-large",
75
+ ...typeof e.limit == "number" ? { limitBytes: e.limit } : {}
76
+ };
77
+ }
78
+ throw o.status === 401 || o.status === 403 ? { kind: "unauthorized" } : o.status === 404 ? { kind: "not-found" } : { kind: "unreadable" };
79
+ }
80
+ return new Uint8Array(await o.arrayBuffer());
81
+ }
82
+ var y = null;
83
+ function b() {
84
+ return y ??= import("./pdf-CL7gVGT1.js"), y;
85
+ }
86
+ async function ee(e) {
87
+ let t = await b();
88
+ t.GlobalWorkerOptions.workerSrc = new URL("data:text/javascript;base64,LyoqCiAqIEBsaWNzdGFydCBUaGUgZm9sbG93aW5nIGlzIHRoZSBlbnRpcmUgbGljZW5zZSBub3RpY2UgZm9yIHRoZQogKiBKYXZhU2NyaXB0IGNvZGUgaW4gdGhpcyBwYWdlCiAqCiAqIENvcHlyaWdodCAyMDI0IE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKiBAbGljZW5kIFRoZSBhYm92ZSBpcyB0aGUgZW50aXJlIGxpY2Vuc2Ugbm90aWNlIGZvciB0aGUKICogSmF2YVNjcmlwdCBjb2RlIGluIHRoaXMgcGFnZQogKi8KLyoqCiAqIHBkZmpzVmVyc2lvbiA9IDYuNC4yOTkKICogcGRmanNCdWlsZCA9IGQwOTkxYTBkNQogKi8KY29uc3QgZT0hKCJvYmplY3QiIT10eXBlb2YgcHJvY2Vzc3x8cHJvY2VzcysiIiE9IltvYmplY3QgcHJvY2Vzc10ifHxwcm9jZXNzLnZlcnNpb25zLm53fHxwcm9jZXNzLnZlcnNpb25zLmVsZWN0cm9uJiZwcm9jZXNzLnR5cGUmJiJicm93c2VyIiE9PXByb2Nlc3MudHlwZSksdD1bMS8wLDEvMCwtMS8wLC0xLzBdLGE9bmV3IEZsb2F0MzJBcnJheSh0KSxuPVsuMDAxLDAsMCwuMDAxLDAsMF0scz0uMzUvMS4zNSxyPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsaT0xLG89MixsPTQsZj04LGM9MTYsaD02NCx1PTEyOCxtPTI1NixwPSJwZGZqc19pbnRlcm5hbF9lZGl0b3JfIixkPTMsZz05LGI9MTMsdz0xNSxqPTEwMSxrPXtQUklOVDo0LE1PRElGWV9DT05URU5UUzo4LENPUFk6MTYsTU9ESUZZX0FOTk9UQVRJT05TOjMyLEZJTExfSU5URVJBQ1RJVkVfRk9STVM6MjU2LENPUFlfRk9SX0FDQ0VTU0lCSUxJVFk6NTEyLEFTU0VNQkxFOjEwMjQsUFJJTlRfSElHSF9RVUFMSVRZOjIwNDh9LHk9MSxxPTIsdj0zLFM9MCx4PTQsQz0xLEY9MixUPTMsUj17VEVYVDoxLExJTks6MixGUkVFVEVYVDozLExJTkU6NCxTUVVBUkU6NSxDSVJDTEU6NixQT0xZR09OOjcsUE9MWUxJTkU6OCxISUdITElHSFQ6OSxVTkRFUkxJTkU6MTAsU1FVSUdHTFk6MTEsU1RSSUtFT1VUOjEyLFNUQU1QOjEzLENBUkVUOjE0LElOSzoxNSxQT1BVUDoxNixGSUxFQVRUQUNITUVOVDoxNyxTT1VORDoxOCxNT1ZJRToxOSxXSURHRVQ6MjAsU0NSRUVOOjIxLFBSSU5URVJNQVJLOjIyLFRSQVBORVQ6MjMsV0FURVJNQVJLOjI0LFRIUkVFRDoyNSxSRURBQ1Q6MjYsUklDSE1FRElBOjI3fSxPPSJHcm91cCIsRD0iUiIsSD0wLE09NCxOPTEsRT0yLF89NCx6PTE2LEw9MzIsVT0xMjgsVz01MTIsWD0xLEs9MixHPTQwOTYsVj04MTkyLCQ9MzI3NjgsWT02NTUzNixKPTEzMTA3MixRPTEwNDg1NzYsWj0yMDk3MTUyLGVlPTgzODg2MDgsdGU9MTY3NzcyMTYsYWU9MSxuZT0yLHNlPTMscmU9NCxpZT01LG9lPXtFOiJNb3VzZSBFbnRlciIsWDoiTW91c2UgRXhpdCIsRDoiTW91c2UgRG93biIsVToiTW91c2UgVXAiLEZvOiJGb2N1cyIsQmw6IkJsdXIiLFBPOiJQYWdlT3BlbiIsUEM6IlBhZ2VDbG9zZSIsUFY6IlBhZ2VWaXNpYmxlIixQSToiUGFnZUludmlzaWJsZSIsSzoiS2V5c3Ryb2tlIixGOiJGb3JtYXQiLFY6IlZhbGlkYXRlIixDOiJDYWxjdWxhdGUifSxsZT17V0M6IldpbGxDbG9zZSIsV1M6IldpbGxTYXZlIixEUzoiRGlkU2F2ZSIsV1A6IldpbGxQcmludCIsRFA6IkRpZFByaW50In0sZmU9e086IlBhZ2VPcGVuIixDOiJQYWdlQ2xvc2UifSxjZT0xLGhlPTUsdWU9MSxtZT0yLHBlPTMsZGU9NCxnZT01LGJlPTYsd2U9NyxqZT04LGtlPTkseWU9MTAscWU9MTEsdmU9MTIsU2U9MTMsQWU9MTQseGU9MTUsQ2U9MTYsSWU9MTcsRmU9MTgsVGU9MTksUmU9MjAsT2U9MjEsQmU9MjIsRGU9MjMsSGU9MjQsTWU9MjUsTmU9MjYsUGU9MjcsRWU9MjgsX2U9MjksemU9MzAsTGU9MzEsVWU9MzIsV2U9MzMsWGU9MzQsS2U9MzUsR2U9MzYsVmU9MzcsJGU9MzgsWWU9MzksSmU9NDAsUWU9NDEsWmU9NDIsZXQ9NDMsdHQ9NDQsYXQ9NDUsbnQ9NDYsc3Q9NDcscnQ9NDgsaXQ9NDksb3Q9NTAsbHQ9NTEsZnQ9NTIsY3Q9NTMsaHQ9NTQsdXQ9NTUsbXQ9NTYscHQ9NTcsZHQ9NTgsZ3Q9NTksYnQ9NjAsd3Q9NjEsanQ9NjIsa3Q9NjMseXQ9NjQscXQ9NjUsdnQ9NjYsU3Q9NjcsQXQ9NjgseHQ9NjksQ3Q9NzAsSXQ9NzEsRnQ9NzIsVHQ9NzMsUnQ9NzQsT3Q9NzUsQnQ9NzYsRHQ9NzcsSHQ9ODAsTXQ9ODEsTnQ9ODMsUHQ9ODQsRXQ9ODUsX3Q9ODYsenQ9ODcsTHQ9ODgsVXQ9ODksV3Q9OTAsWHQ9OTEsS3Q9OTIsR3Q9OTMsVnQ9OTQsJHQ9MCxZdD0xLEp0PTIsUXQ9MyxadD00LGVhPTEsdGE9MjtsZXQgYWE9Y2U7ZnVuY3Rpb24gaW5mbyhlKXthYT49aGUmJmNvbnNvbGUuaW5mbyhgSW5mbzogJHtlfWApfWZ1bmN0aW9uIHdhcm4oZSl7YWE+PWNlJiZjb25zb2xlLndhcm4oYFdhcm5pbmc6ICR7ZX1gKX1mdW5jdGlvbiB1bnJlYWNoYWJsZShlKXt0aHJvdyBuZXcgRXJyb3IoZSl9ZnVuY3Rpb24gYXNzZXJ0KGUsdCl7ZXx8dW5yZWFjaGFibGUodCl9ZnVuY3Rpb24gY3JlYXRlVmFsaWRBYnNvbHV0ZVVybChlLHQ9bnVsbCxhPW51bGwpe2lmKCFlKXJldHVybiBudWxsO2lmKGEmJiJzdHJpbmciPT10eXBlb2YgZSl7aWYoYS5hZGREZWZhdWx0UHJvdG9jb2wmJmUuc3RhcnRzV2l0aCgid3d3LiIpKXtjb25zdCB0PWUubWF0Y2goL1wuL2cpO3Q/Lmxlbmd0aD49MiYmKGU9YGh0dHA6Ly8ke2V9YCl9aWYoYS50cnlDb252ZXJ0RW5jb2RpbmcpdHJ5e2U9c3RyaW5nVG9VVEY4U3RyaW5nKGUpfWNhdGNoe319Y29uc3Qgbj10P1VSTC5wYXJzZShlLHQpOlVSTC5wYXJzZShlKTtyZXR1cm4gZnVuY3Rpb24gX2lzVmFsaWRQcm90b2NvbChlKXtzd2l0Y2goZT8ucHJvdG9jb2wpe2Nhc2UiaHR0cDoiOmNhc2UiaHR0cHM6IjpjYXNlImZ0cDoiOmNhc2UibWFpbHRvOiI6Y2FzZSJ0ZWw6IjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0obik/bjpudWxsfWZ1bmN0aW9uIHNoYWRvdyhlLHQsYSxuPSExKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTphLGVudW1lcmFibGU6IW4sY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiExfSk7cmV0dXJuIGF9Y29uc3QgbmE9ZnVuY3Rpb24gQmFzZUV4Y2VwdGlvbkNsb3N1cmUoKXtmdW5jdGlvbiBCYXNlRXhjZXB0aW9uKGUsdCl7dGhpcy5tZXNzYWdlPWU7dGhpcy5uYW1lPXR9QmFzZUV4Y2VwdGlvbi5wcm90b3R5cGU9bmV3IEVycm9yO0Jhc2VFeGNlcHRpb24uY29uc3RydWN0b3I9QmFzZUV4Y2VwdGlvbjtyZXR1cm4gQmFzZUV4Y2VwdGlvbn0oKTtjbGFzcyBQYXNzd29yZEV4Y2VwdGlvbiBleHRlbmRzIG5he2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiUGFzc3dvcmRFeGNlcHRpb24iKTt0aGlzLmNvZGU9dH19Y2xhc3MgVW5rbm93bkVycm9yRXhjZXB0aW9uIGV4dGVuZHMgbmF7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJVbmtub3duRXJyb3JFeGNlcHRpb24iKTt0aGlzLmRldGFpbHM9dH19Y2xhc3MgSW52YWxpZFBERkV4Y2VwdGlvbiBleHRlbmRzIG5he2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkludmFsaWRQREZFeGNlcHRpb24iKX19Y2xhc3MgUmVzcG9uc2VFeGNlcHRpb24gZXh0ZW5kcyBuYXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoZSwiUmVzcG9uc2VFeGNlcHRpb24iKTt0aGlzLnN0YXR1cz10O3RoaXMubWlzc2luZz1hfX1jbGFzcyBGb3JtYXRFcnJvciBleHRlbmRzIG5he2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkZvcm1hdEVycm9yIil9fWNsYXNzIEFib3J0RXhjZXB0aW9uIGV4dGVuZHMgbmF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiQWJvcnRFeGNlcHRpb24iKX19ZnVuY3Rpb24gYnl0ZXNUb1N0cmluZyhlKXsib2JqZWN0Ij09dHlwZW9mIGUmJnZvaWQgMCE9PWU/Lmxlbmd0aHx8dW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIGJ5dGVzVG9TdHJpbmciKTtjb25zdCB0PWUubGVuZ3RoLGE9ODE5MjtpZih0PGEpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxlKTtjb25zdCBuPVtdO2ZvcihsZXQgcz0wO3M8dDtzKz1hKXtjb25zdCByPU1hdGgubWluKHMrYSx0KSxpPWUuc3ViYXJyYXkocyxyKTtuLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGkpKX1yZXR1cm4gbi5qb2luKCIiKX1mdW5jdGlvbiBzdHJpbmdUb0J5dGVzKGUpeyJzdHJpbmciIT10eXBlb2YgZSYmdW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIHN0cmluZ1RvQnl0ZXMiKTtjb25zdCB0PWUubGVuZ3RoLGE9bmV3IFVpbnQ4QXJyYXkodCk7Zm9yKGxldCBuPTA7bjx0OysrbilhW25dPTI1NSZlLmNoYXJDb2RlQXQobik7cmV0dXJuIGF9Y2xhc3MgRmVhdHVyZVRlc3R7c3RhdGljIGdldCBpc0xpdHRsZUVuZGlhbigpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoNCk7ZVswXT0xO3JldHVybiBzaGFkb3codGhpcywiaXNMaXR0bGVFbmRpYW4iLDE9PT1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIsMCwxKVswXSl9c3RhdGljIGdldCBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQiLCJ1bmRlZmluZWQiIT10eXBlb2YgT2Zmc2NyZWVuQ2FudmFzKX1zdGF0aWMgZ2V0IGlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0ltYWdlRGVjb2RlclN1cHBvcnRlZCIsInVuZGVmaW5lZCIhPXR5cGVvZiBJbWFnZURlY29kZXIpfXN0YXRpYyBnZXQgaXNGbG9hdDE2QXJyYXlTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzRmxvYXQxNkFycmF5U3VwcG9ydGVkIiwidW5kZWZpbmVkIiE9dHlwZW9mIEZsb2F0MTZBcnJheSl9c3RhdGljIGdldCBpc1Nhbml0aXplclN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNTYW5pdGl6ZXJTdXBwb3J0ZWQiLCJ1bmRlZmluZWQiIT10eXBlb2YgU2FuaXRpemVyKX1zdGF0aWMgZ2V0IHBsYXRmb3JtKCl7Y29uc3R7cGxhdGZvcm06ZSx1c2VyQWdlbnQ6dH09bmF2aWdhdG9yO3JldHVybiBzaGFkb3codGhpcywicGxhdGZvcm0iLHtpc0FuZHJvaWQ6dC5pbmNsdWRlcygiQW5kcm9pZCIpLGlzTGludXg6ZS5pbmNsdWRlcygiTGludXgiKSxpc01hYzplLmluY2x1ZGVzKCJNYWMiKSxpc1dpbmRvd3M6ZS5pbmNsdWRlcygiV2luIiksaXNGaXJlZm94OnQuaW5jbHVkZXMoIkZpcmVmb3giKX0pfXN0YXRpYyBnZXQgaXNDYW52YXNGaWx0ZXJTdXBwb3J0ZWQoKXtsZXQgZTt0aGlzLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkJiYoZT1uZXcgT2Zmc2NyZWVuQ2FudmFzKDEsMSkuZ2V0Q29udGV4dCgiMmQiKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0NhbnZhc0ZpbHRlclN1cHBvcnRlZCIsdm9pZCAwIT09ZT8uZmlsdGVyKX1zdGF0aWMgZ2V0IGlzQWxwaGFDb2xvcklucHV0U3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0FscGhhQ29sb3JJbnB1dFN1cHBvcnRlZCIsITEpfXN0YXRpYyBnZXQgaXNCYWNrZHJvcEZpbHRlclN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNCYWNrZHJvcEZpbHRlclN1cHBvcnRlZCIsInVuZGVmaW5lZCIhPXR5cGVvZiBDU1MmJkNTUy5zdXBwb3J0cygiYmFja2Ryb3AtZmlsdGVyIiwiYmx1cigxcHgpIikpfX1jbGFzcyBVdGlse3N0YXRpYyBnZXQgaGV4TnVtcygpe3JldHVybiBzaGFkb3codGhpcywiaGV4TnVtcyIsQXJyYXkuZnJvbSh7bGVuZ3RoOjI1Nn0sKGUsdCk9PnQudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSkpfXN0YXRpYyBtYWtlSGV4Q29sb3IoZSx0LGEpe3JldHVybmAjJHt0aGlzLmhleE51bXNbZV19JHt0aGlzLmhleE51bXNbdF19JHt0aGlzLmhleE51bXNbYV19YH1zdGF0aWMgdHJhbnNmb3JtKGUsdCl7cmV0dXJuW2VbMF0qdFswXStlWzJdKnRbMV0sZVsxXSp0WzBdK2VbM10qdFsxXSxlWzBdKnRbMl0rZVsyXSp0WzNdLGVbMV0qdFsyXStlWzNdKnRbM10sZVswXSp0WzRdK2VbMl0qdFs1XStlWzRdLGVbMV0qdFs0XStlWzNdKnRbNV0rZVs1XV19c3RhdGljIG11bHRpcGx5QnlET01NYXRyaXgoZSx0KXtyZXR1cm5bZVswXSp0LmErZVsyXSp0LmIsZVsxXSp0LmErZVszXSp0LmIsZVswXSp0LmMrZVsyXSp0LmQsZVsxXSp0LmMrZVszXSp0LmQsZVswXSp0LmUrZVsyXSp0LmYrZVs0XSxlWzFdKnQuZStlWzNdKnQuZitlWzVdXX1zdGF0aWMgYXBwbHlUcmFuc2Zvcm0oZSx0LGE9MCl7Y29uc3Qgbj1lW2FdLHM9ZVthKzFdO2VbYV09bip0WzBdK3MqdFsyXSt0WzRdO2VbYSsxXT1uKnRbMV0rcyp0WzNdK3RbNV19c3RhdGljIGFwcGx5VHJhbnNmb3JtVG9CZXppZXIoZSx0LGE9MCl7Y29uc3Qgbj10WzBdLHM9dFsxXSxyPXRbMl0saT10WzNdLG89dFs0XSxsPXRbNV07Zm9yKGxldCB0PTA7dDw2O3QrPTIpe2NvbnN0IGY9ZVthK3RdLGM9ZVthK3QrMV07ZVthK3RdPWYqbitjKnIrbztlW2ErdCsxXT1mKnMrYyppK2x9fXN0YXRpYyBhcHBseUludmVyc2VUcmFuc2Zvcm0oZSx0KXtjb25zdCBhPWVbMF0sbj1lWzFdLHM9dFswXSp0WzNdLXRbMV0qdFsyXTtlWzBdPShhKnRbM10tbip0WzJdK3RbMl0qdFs1XS10WzRdKnRbM10pL3M7ZVsxXT0oLWEqdFsxXStuKnRbMF0rdFs0XSp0WzFdLXRbNV0qdFswXSkvc31zdGF0aWMgYXhpYWxBbGlnbmVkQm91bmRpbmdCb3goZSx0LGEpe2NvbnN0IG49dFswXSxzPXRbMV0scj10WzJdLGk9dFszXSxvPXRbNF0sbD10WzVdLGY9ZVswXSxjPWVbMV0saD1lWzJdLHU9ZVszXTtsZXQgbT1uKmYrbyxwPW0sZD1uKmgrbyxnPWQsYj1pKmMrbCx3PWIsaj1pKnUrbCxrPWo7aWYoMCE9PXN8fDAhPT1yKXtjb25zdCBlPXMqZix0PXMqaCxhPXIqYyxuPXIqdTttKz1hO2crPWE7ZCs9bjtwKz1uO2IrPWU7ays9ZTtqKz10O3crPXR9YVswXT1NYXRoLm1pbihhWzBdLG0sZCxwLGcpO2FbMV09TWF0aC5taW4oYVsxXSxiLGosdyxrKTthWzJdPU1hdGgubWF4KGFbMl0sbSxkLHAsZyk7YVszXT1NYXRoLm1heChhWzNdLGIsaix3LGspfXN0YXRpYyBpbnZlcnNlVHJhbnNmb3JtKGUpe2NvbnN0IHQ9ZVswXSplWzNdLWVbMV0qZVsyXTtyZXR1cm5bZVszXS90LC1lWzFdL3QsLWVbMl0vdCxlWzBdL3QsKGVbMl0qZVs1XS1lWzRdKmVbM10pL3QsKGVbNF0qZVsxXS1lWzVdKmVbMF0pL3RdfXN0YXRpYyBzaW5ndWxhclZhbHVlRGVjb21wb3NlMmRTY2FsZShlLHQpe2NvbnN0IGE9ZVswXSxuPWVbMV0scz1lWzJdLHI9ZVszXSxpPWEqKjIrbioqMixvPWEqcytuKnIsbD1zKioyK3IqKjIsZj0oaStsKS8yLGM9TWF0aC5zcXJ0KGYqKjItKGkqbC1vKioyKSk7dFswXT1NYXRoLnNxcnQoZitjfHwxKTt0WzFdPU1hdGguc3FydChmLWN8fDEpfXN0YXRpYyBub3JtYWxpemVSZWN0KGUpe2NvbnN0IHQ9ZS5zbGljZSgwKTtpZihlWzBdPmVbMl0pe3RbMF09ZVsyXTt0WzJdPWVbMF19aWYoZVsxXT5lWzNdKXt0WzFdPWVbM107dFszXT1lWzFdfXJldHVybiB0fXN0YXRpYyBpbnRlcnNlY3QoZSx0KXtjb25zdCBhPU1hdGgubWF4KE1hdGgubWluKGVbMF0sZVsyXSksTWF0aC5taW4odFswXSx0WzJdKSksbj1NYXRoLm1pbihNYXRoLm1heChlWzBdLGVbMl0pLE1hdGgubWF4KHRbMF0sdFsyXSkpO2lmKGE+bilyZXR1cm4gbnVsbDtjb25zdCBzPU1hdGgubWF4KE1hdGgubWluKGVbMV0sZVszXSksTWF0aC5taW4odFsxXSx0WzNdKSkscj1NYXRoLm1pbihNYXRoLm1heChlWzFdLGVbM10pLE1hdGgubWF4KHRbMV0sdFszXSkpO3JldHVybiBzPnI/bnVsbDpbYSxzLG4scl19c3RhdGljIHBvaW50Qm91bmRpbmdCb3goZSx0LGEpe2FbMF09TWF0aC5taW4oYVswXSxlKTthWzFdPU1hdGgubWluKGFbMV0sdCk7YVsyXT1NYXRoLm1heChhWzJdLGUpO2FbM109TWF0aC5tYXgoYVszXSx0KX1zdGF0aWMgcmVjdEJvdW5kaW5nQm94KGUsdCxhLG4scyl7c1swXT1NYXRoLm1pbihzWzBdLGUsYSk7c1sxXT1NYXRoLm1pbihzWzFdLHQsbik7c1syXT1NYXRoLm1heChzWzJdLGUsYSk7c1szXT1NYXRoLm1heChzWzNdLHQsbil9c3RhdGljI2UoZSx0LGEsbixzLHIsaSxvLGwsZil7aWYobDw9MHx8bD49MSlyZXR1cm47Y29uc3QgYz0xLWwsaD1sKmwsdT1oKmwsbT1jKihjKihjKmUrMypsKnQpKzMqaCphKSt1Km4scD1jKihjKihjKnMrMypsKnIpKzMqaCppKSt1Km87ZlswXT1NYXRoLm1pbihmWzBdLG0pO2ZbMV09TWF0aC5taW4oZlsxXSxwKTtmWzJdPU1hdGgubWF4KGZbMl0sbSk7ZlszXT1NYXRoLm1heChmWzNdLHApfXN0YXRpYyN0KGUsdCxhLG4scyxyLGksbyxsLGYsYyxoKXtpZihNYXRoLmFicyhsKTwxZS0xMil7TWF0aC5hYnMoZik+PTFlLTEyJiZ0aGlzLiNlKGUsdCxhLG4scyxyLGksbywtYy9mLGgpO3JldHVybn1jb25zdCB1PWYqKjItNCpjKmw7aWYodTwwKXJldHVybjtjb25zdCBtPU1hdGguc3FydCh1KSxwPTIqbDt0aGlzLiNlKGUsdCxhLG4scyxyLGksbywoLWYrbSkvcCxoKTt0aGlzLiNlKGUsdCxhLG4scyxyLGksbywoLWYtbSkvcCxoKX1zdGF0aWMgYmV6aWVyQm91bmRpbmdCb3goZSx0LGEsbixzLHIsaSxvLGwpe2xbMF09TWF0aC5taW4obFswXSxlLGkpO2xbMV09TWF0aC5taW4obFsxXSx0LG8pO2xbMl09TWF0aC5tYXgobFsyXSxlLGkpO2xbM109TWF0aC5tYXgobFszXSx0LG8pO3RoaXMuI3QoZSxhLHMsaSx0LG4scixvLDMqKDMqKGEtcyktZStpKSw2KihlLTIqYStzKSwzKihhLWUpLGwpO3RoaXMuI3QoZSxhLHMsaSx0LG4scixvLDMqKDMqKG4tciktdCtvKSw2Kih0LTIqbityKSwzKihuLXQpLGwpfX1mdW5jdGlvbiBzdHJpbmdUb1VURjhTdHJpbmcoZSl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoZSkpfWZ1bmN0aW9uIHV0ZjhTdHJpbmdUb1N0cmluZyhlKXtyZXR1cm4gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGUpKX1mdW5jdGlvbiBpc0FycmF5RXF1YWwoZSx0KXtpZihlLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgYT0wLG49ZS5sZW5ndGg7YTxuO2ErKylpZihlW2FdIT09dFthXSlyZXR1cm4hMTtyZXR1cm4hMH1sZXQgc2E9bnVsbCxyYT1udWxsO2NvbnN0IG1ha2VBcnI9KCk9PltdLG1ha2VNYXA9KCk9Pm5ldyBNYXAsbWFrZU9iaj0oKT0+T2JqZWN0LmNyZWF0ZShudWxsKSxtYWtlU2V0PSgpPT5uZXcgU2V0OyJmdW5jdGlvbiIhPXR5cGVvZiBJdGVyYXRvci5wcm90b3R5cGUuam9pbiYmKEl0ZXJhdG9yLnByb3RvdHlwZS5qb2luPWZ1bmN0aW9uKGUpe3JldHVyblsuLi50aGlzXS5qb2luKGUpfSk7Y29uc3QgaWE9U3ltYm9sKCJDSVJDVUxBUl9SRUYiKSxvYT1TeW1ib2woIkVPRiIpLGxhPW5ldyBNYXAsZmE9bmV3IE1hcCxjYT1uZXcgTWFwO2NsYXNzIE5hbWV7Y29uc3RydWN0b3IoZSl7dGhpcy5uYW1lPWV9c3RhdGljIGdldChlKXtsZXQgdD1mYS5nZXQoZSk7aWYoIXQpe3Q9bmV3IE5hbWUoZSk7ZmEuc2V0KGUsdCl9cmV0dXJuIHR9fWNsYXNzIENtZHtjb25zdHJ1Y3RvcihlKXt0aGlzLmNtZD1lfXN0YXRpYyBnZXQoZSl7bGV0IHQ9bGEuZ2V0KGUpO2lmKCF0KXt0PW5ldyBDbWQoZSk7bGEuc2V0KGUsdCl9cmV0dXJuIHR9fWNvbnN0IG5vblNlcmlhbGl6YWJsZT0oKT0+bm9uU2VyaWFsaXphYmxlO2NsYXNzIERpY3R7X19ub25TZXJpYWxpemFibGVfXz1ub25TZXJpYWxpemFibGU7I2E9bmV3IE1hcDtvYmpJZD1udWxsO3N1cHByZXNzRW5jcnlwdGlvbj0hMTt4cmVmO2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy54cmVmPWV9YXNzaWduWHJlZihlKXt0aGlzLnhyZWY9ZX1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLiNhLnNpemV9I24oZSx0LGEpe2xldCBuPXRoaXMuI2EuZ2V0KHQpO3ZvaWQgMD09PW4mJnZvaWQgMCE9PWEmJihuPXRoaXMuI2EuZ2V0KGEpKTtyZXR1cm4gbiBpbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmP2U/dGhpcy54cmVmLmZldGNoQXN5bmMobix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6dGhpcy54cmVmLmZldGNoKG4sdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pOm59Z2V0KGUsdCl7cmV0dXJuIHRoaXMuI24oITEsZSx0KX1hc3luYyBnZXRBc3luYyhlLHQpe3JldHVybiB0aGlzLiNuKCEwLGUsdCl9Z2V0QXJyYXkoZSx0KXtsZXQgYT10aGlzLiNuKCExLGUsdCk7aWYoQXJyYXkuaXNBcnJheShhKSl7YT1hLnNsaWNlKCk7Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSsrKWFbZV1pbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmJiYoYVtlXT10aGlzLnhyZWYuZmV0Y2goYVtlXSx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbikpfXJldHVybiBhfWdldFJhdyhlKXtyZXR1cm4gdGhpcy4jYS5nZXQoZSl9Z2V0S2V5cygpe3JldHVybiB0aGlzLiNhLmtleXMoKX1nZXRSYXdWYWx1ZXMoKXtyZXR1cm4gdGhpcy4jYS52YWx1ZXMoKX1nZXRSYXdFbnRyaWVzKCl7cmV0dXJuIHRoaXMuI2EuZW50cmllcygpfXNldChlLHQpe3RoaXMuI2Euc2V0KGUsdCl9c2V0SWZOb3RFeGlzdHMoZSx0KXt0aGlzLmhhcyhlKXx8dGhpcy5zZXQoZSx0KX1zZXRJZk51bWJlcihlLHQpeyJudW1iZXIiPT10eXBlb2YgdCYmdGhpcy5zZXQoZSx0KX1zZXRJZkFycmF5KGUsdCl7KEFycmF5LmlzQXJyYXkodCl8fEFycmF5QnVmZmVyLmlzVmlldyh0KSkmJnRoaXMuc2V0KGUsdCl9c2V0SWZEZWZpbmVkKGUsdCl7bnVsbCE9dCYmdGhpcy5zZXQoZSx0KX1zZXRJZk5hbWUoZSx0KXsic3RyaW5nIj09dHlwZW9mIHQ/dGhpcy5zZXQoZSxOYW1lLmdldCh0KSk6dCBpbnN0YW5jZW9mIE5hbWUmJnRoaXMuc2V0KGUsdCl9c2V0SWZEaWN0KGUsdCl7dCBpbnN0YW5jZW9mIERpY3QmJnRoaXMuc2V0KGUsdCl9aGFzKGUpe3JldHVybiB0aGlzLiNhLmhhcyhlKX0qW1N5bWJvbC5pdGVyYXRvcl0oKXtmb3IoY29uc3RbZSx0XW9mIHRoaXMuI2EpeWllbGRbZSx0IGluc3RhbmNlb2YgUmVmJiZ0aGlzLnhyZWY/dGhpcy54cmVmLmZldGNoKHQsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pOnRdfXN0YXRpYyBnZXQgZW1wdHkoKXtjb25zdCBlPW5ldyBEaWN0KG51bGwpO2Uuc2V0PShlLHQpPT57dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBgc2V0YCBvbiB0aGUgZW1wdHkgZGljdGlvbmFyeS4iKX07cmV0dXJuIHNoYWRvdyh0aGlzLCJlbXB0eSIsZSl9c3RhdGljIG1lcmdlKHt4cmVmOmUsZGljdEFycmF5OnQsbWVyZ2VTdWJEaWN0czphPSExfSl7Y29uc3Qgbj1uZXcgRGljdChlKSxzPW5ldyBNYXA7Zm9yKGNvbnN0IGUgb2YgdClpZihlIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3RbdCxuXW9mIGUuZ2V0UmF3RW50cmllcygpKXtjb25zdCBlPXMuZ2V0T3JJbnNlcnRDb21wdXRlZCh0LG1ha2VBcnIpOyghZS5sZW5ndGh8fGEmJm4gaW5zdGFuY2VvZiBEaWN0KSYmZS5wdXNoKG4pfWZvcihjb25zdFt0LGFdb2Ygcyl7aWYoMT09PWEubGVuZ3RofHwhKGFbMF1pbnN0YW5jZW9mIERpY3QpKXtuLnNldCh0LGFbMF0pO2NvbnRpbnVlfWNvbnN0IHM9bmV3IERpY3QoZSk7Zm9yKGNvbnN0IGUgb2YgYSlmb3IoY29uc3RbdCxhXW9mIGUuZ2V0UmF3RW50cmllcygpKXMuc2V0SWZOb3RFeGlzdHModCxhKTtzLnNpemU+MCYmbi5zZXQodCxzKX1zLmNsZWFyKCk7cmV0dXJuIG4uc2l6ZT4wP246RGljdC5lbXB0eX1jbG9uZSgpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKTtmb3IoY29uc3RbdCxhXW9mIHRoaXMuI2EpZS5zZXQodCxhKTtyZXR1cm4gZX1kZWxldGUoZSl7dGhpcy4jYS5kZWxldGUoZSl9fWNsYXNzIFJlZnsjcztjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy4jcz1lO3RoaXMubnVtPXQ7dGhpcy5nZW49YX10b1N0cmluZygpe3JldHVybiB0aGlzLiNzfXN0YXRpYyBmcm9tU3RyaW5nKGUpe2xldCB0PWNhLmdldChlKTtpZih0KXJldHVybiB0O2NvbnN0IGE9L14oWzEtOV1cZCopUihbMS05XVxkKik/JC8uZXhlYyhlKTtpZighYSlyZXR1cm4gbnVsbDt0PW5ldyBSZWYoZSxwYXJzZUludChhWzFdLDEwKSxhWzJdP3BhcnNlSW50KGFbMl0sMTApOjApO2NhLnNldChlLHQpO3JldHVybiB0fXN0YXRpYyBnZXQoZSx0KXtjb25zdCBhPTA9PT10P2Ake2V9UmA6YCR7ZX1SJHt0fWA7bGV0IG49Y2EuZ2V0KGEpO2lmKCFuKXtuPW5ldyBSZWYoYSxlLHQpO2NhLnNldChhLG4pfXJldHVybiBufX1jbGFzcyBSZWZTZXR7I3I9bmV3IFNldDtjb25zdHJ1Y3RvcihlPW51bGwpe2lmKGUpZm9yKGNvbnN0IHQgb2YgZSl0aGlzLiNyLmFkZCh0KX1oYXMoZSl7cmV0dXJuIHRoaXMuI3IuaGFzKGUudG9TdHJpbmcoKSl9cHV0KGUpe3RoaXMuI3IuYWRkKGUudG9TdHJpbmcoKSl9cmVtb3ZlKGUpe3RoaXMuI3IuZGVsZXRlKGUudG9TdHJpbmcoKSl9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gdGhpcy4jci5rZXlzKCl9Y2xlYXIoKXt0aGlzLiNyLmNsZWFyKCl9fWNsYXNzIFJlZk1hcHsjYT1uZXcgTWFwO2dldCBzaXplKCl7cmV0dXJuIHRoaXMuI2Euc2l6ZX1nZXQoZSl7cmV0dXJuIHRoaXMuI2EuZ2V0KGUudG9TdHJpbmcoKSl9aGFzKGUpe3JldHVybiB0aGlzLiNhLmhhcyhlLnRvU3RyaW5nKCkpfXB1dChlLHQpe3RoaXMuI2Euc2V0KGUudG9TdHJpbmcoKSx0KX1wdXRBbGlhcyhlLHQpe3RoaXMuI2Euc2V0KGUudG9TdHJpbmcoKSx0aGlzLmdldCh0KSl9Z2V0T3JQdXRDb21wdXRlZChlLHQpe2NvbnN0IGE9dGhpcy4jYSxuPWUudG9TdHJpbmcoKTthLmhhcyhuKXx8YS5zZXQobix0KGUpKTtyZXR1cm4gYS5nZXQobil9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gdGhpcy4jYS52YWx1ZXMoKX1jbGVhcigpe3RoaXMuI2EuY2xlYXIoKX0qdmFsdWVzKCl7eWllbGQqdGhpcy4jYS52YWx1ZXMoKX0qaXRlbXMoKXtmb3IoY29uc3RbZSx0XW9mIHRoaXMuI2EpeWllbGRbUmVmLmZyb21TdHJpbmcoZSksdF19KmtleXMoKXtmb3IoY29uc3QgZSBvZiB0aGlzLiNhLmtleXMoKSl5aWVsZCBSZWYuZnJvbVN0cmluZyhlKX19ZnVuY3Rpb24gaXNOYW1lKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBOYW1lJiYodm9pZCAwPT09dHx8ZS5uYW1lPT09dCl9ZnVuY3Rpb24gaXNDbWQoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIENtZCYmKHZvaWQgMD09PXR8fGUuY21kPT09dCl9ZnVuY3Rpb24gaXNEaWN0KGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBEaWN0JiYodm9pZCAwPT09dHx8aXNOYW1lKGUuZ2V0KCJUeXBlIiksdCkpfWZ1bmN0aW9uIGlzUmVmc0VxdWFsKGUsdCl7cmV0dXJuIGUubnVtPT09dC5udW0mJmUuZ2VuPT09dC5nZW59Y2xhc3MgQmFzZVN0cmVhbXtnZXQgbGVuZ3RoKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IGdldHRlciBgbGVuZ3RoYCBhY2Nlc3NlZCIpfWdldCBpc0VtcHR5KCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IGdldHRlciBgaXNFbXB0eWAgYWNjZXNzZWQiKX1nZXQgaXNEYXRhTG9hZGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0RhdGFMb2FkZWQiLCEwKX1nZXRCeXRlKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZWAgY2FsbGVkIil9Z2V0Qnl0ZXMoZSl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZXNgIGNhbGxlZCIpfWFzeW5jIGdldEltYWdlRGF0YShlLHQpe3JldHVybiB0aGlzLmdldEJ5dGVzKGUsdCl9YXN5bmMgYXN5bmNHZXRCeXRlcygpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGFzeW5jR2V0Qnl0ZXNgIGNhbGxlZCIpfWdldCBpc0FzeW5jKCl7cmV0dXJuITF9Z2V0IGlzQXN5bmNEZWNvZGVyKCl7cmV0dXJuITF9Z2V0IGlzSW1hZ2VTdHJlYW0oKXtyZXR1cm4hMX1nZXQgY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIoKXtyZXR1cm4hMX1hc3luYyBnZXRUcmFuc2ZlcmFibGVJbWFnZShlLHQpe3JldHVybiBudWxsfXBlZWtCeXRlKCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKTstMSE9PWUmJnRoaXMucG9zLS07cmV0dXJuIGV9cGVla0J5dGVzKGUpe2NvbnN0IHQ9dGhpcy5nZXRCeXRlcyhlKTt0aGlzLnBvcy09dC5sZW5ndGg7cmV0dXJuIHR9Z2V0VWludDE2KCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKSx0PXRoaXMuZ2V0Qnl0ZSgpO3JldHVybi0xPT09ZXx8LTE9PT10Py0xOihlPDw4KSt0fWdldEludDMyKCl7cmV0dXJuKHRoaXMuZ2V0Qnl0ZSgpPDwyNCkrKHRoaXMuZ2V0Qnl0ZSgpPDwxNikrKHRoaXMuZ2V0Qnl0ZSgpPDw4KSt0aGlzLmdldEJ5dGUoKX1nZXRCeXRlUmFuZ2UoZSx0KXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRCeXRlUmFuZ2VgIGNhbGxlZCIpfWdldFN0cmluZyhlKXtyZXR1cm4gYnl0ZXNUb1N0cmluZyh0aGlzLmdldEJ5dGVzKGUpKX1za2lwKGUpe3RoaXMucG9zKz1lfHwxfXJlc2V0KCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgcmVzZXRgIGNhbGxlZCIpfW1vdmVTdGFydCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYG1vdmVTdGFydGAgY2FsbGVkIil9bWFrZVN1YlN0cmVhbShlLHQsYT1udWxsKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBtYWtlU3ViU3RyZWFtYCBjYWxsZWQiKX1jbG9uZSgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGNsb25lYCBjYWxsZWQiKX1nZXRCYXNlU3RyZWFtcygpe3JldHVybiBudWxsfWdldE9yaWdpbmFsU3RyZWFtKCl7cmV0dXJuIHRoaXMuc3RyZWFtPy5nZXRPcmlnaW5hbFN0cmVhbSgpfHx0aGlzfX1jb25zdCBoYT0vXHB7Q2N9L3U7ZnVuY3Rpb24gc2VyaWFsaXplRm9udEZhbWlseShlKXtpZihmdW5jdGlvbiBpc0NTU1N0cmluZyhlKXtjb25zdCB0PWVbMF07aWYoZS5sZW5ndGg8Mnx8JyInIT09dCYmIiciIT09dHx8ZS5hdCgtMSkhPT10KXJldHVybiExO2NvbnN0IGE9ZS5sZW5ndGgtMTtmb3IobGV0IG49MTtuPGE7bisrKXtjb25zdCBzPWVbbl07aWYocz09PXR8fGhhLnRlc3QocykpcmV0dXJuITE7aWYoIlxcIj09PXMmJigrK24+PWF8fGhhLnRlc3QoZVtuXSkpKXJldHVybiExfXJldHVybiEwfShlKSlyZXR1cm4gZTtyZXR1cm5gIiR7ZS5yZXBsYWNlQWxsKC9bIlxcXHB7Q2N9XS9ndSxlPT4nIic9PT1lfHwiXFwiPT09ZT9gXFwke2V9YDpgXFwke2UuY29kZVBvaW50QXQoMCkudG9TdHJpbmcoMTYpfSBgKX0iYH1mdW5jdGlvbiBzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGUpe3JldHVybiBudWxsPT1lfHxmdW5jdGlvbiBpc0FzY2lpKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmKCFlfHwvXltceDAwLVx4N0ZdKiQvLnRlc3QoZSkpfShlKT9lOnN0cmluZ1RvVVRGMTZTdHJpbmcoZSwhMCl9ZnVuY3Rpb24gc3RyaW5nVG9VVEYxNkhleFN0cmluZyhlKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wLG49ZS5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgbj1lLmNoYXJDb2RlQXQoYSk7dC5wdXNoKFV0aWwuaGV4TnVtc1tuPj44JjI1NV0sVXRpbC5oZXhOdW1zWzI1NSZuXSl9cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gc3RyaW5nVG9VVEYxNlN0cmluZyhlLHQ9ITEpe2NvbnN0IGE9W107dCYmYS5wdXNoKCLDvsO/Iik7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPWUuY2hhckNvZGVBdCh0KTthLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuPj44JjI1NSksU3RyaW5nLmZyb21DaGFyQ29kZSgyNTUmbikpfXJldHVybiBhLmpvaW4oIiIpfWNvbnN0IHVhPVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3MjgsNzExLDcxMCw3MjksNzMzLDczMSw3MzAsNzMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDgyMjYsODIyNCw4MjI1LDgyMzAsODIxMiw4MjExLDQwMiw4MjYwLDgyNDksODI1MCw4NzIyLDgyNDAsODIyMiw4MjIwLDgyMjEsODIxNiw4MjE3LDgyMTgsODQ4Miw2NDI1Nyw2NDI1OCwzMjEsMzM4LDM1MiwzNzYsMzgxLDMwNSwzMjIsMzM5LDM1MywzODIsMCw4MzY0XSxtYT1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIHN0cmluZ1RvUERGU3RyaW5nKGUsdD0hMSl7aWYoZVswXT49IsOvIil7bGV0IGE7aWYoIsO+Ij09PWVbMF0mJiLDvyI9PT1lWzFdKXthPSJ1dGYtMTZiZSI7ZS5sZW5ndGglMj09MSYmKGU9ZS5zbGljZSgwLC0xKSl9ZWxzZSBpZigiw78iPT09ZVswXSYmIsO+Ij09PWVbMV0pe2E9InV0Zi0xNmxlIjtlLmxlbmd0aCUyPT0xJiYoZT1lLnNsaWNlKDAsLTEpKX1lbHNlIsOvIj09PWVbMF0mJiLCuyI9PT1lWzFdJiYiwr8iPT09ZVsyXSYmKGE9InV0Zi04Iik7aWYoYSl0cnl7Y29uc3Qgbj1tYVthXT8/PW5ldyBUZXh0RGVjb2RlcihhLHtmYXRhbDohMH0pLHM9c3RyaW5nVG9CeXRlcyhlKSxyPW4uZGVjb2RlKHMpO3JldHVybiB0fHwhci5pbmNsdWRlcygiGyIpP3I6ci5yZXBsYWNlQWxsKC9ceDFiW15ceDFiXSooPzpceDFifCQpL2csIiIpfWNhdGNoKGUpe3dhcm4oYHN0cmluZ1RvUERGU3RyaW5nOiAiJHtlfSIuYCl9fWNvbnN0IGE9W107Zm9yKGxldCBuPTAscz1lLmxlbmd0aDtuPHM7bisrKXtjb25zdCByPWUuY2hhckNvZGVBdChuKTtpZighdCYmMjc9PT1yKXtmb3IoOysrbjxzJiYyNyE9PWUuY2hhckNvZGVBdChuKTspO2NvbnRpbnVlfWNvbnN0IGk9dWFbcl07YS5wdXNoKGk/U3RyaW5nLmZyb21DaGFyQ29kZShpKTplLmNoYXJBdChuKSl9cmV0dXJuIGEuam9pbigiIil9Y29uc3QgcGE9L15bMS05XVwuXGQkLyxkYT0yKiozMS0xLGdhPVsxLDAsMCwxLDAsMF0sYmE9WyJDb2xvclNwYWNlIiwiRXh0R1N0YXRlIiwiRm9udCIsIlBhdHRlcm4iLCJQcm9wZXJ0aWVzIiwiU2hhZGluZyIsIlhPYmplY3QiXSx3YT1bIkV4dEdTdGF0ZSIsIkZvbnQiLCJQcm9wZXJ0aWVzIiwiWE9iamVjdCJdO2Z1bmN0aW9uIGdldExvb2t1cFRhYmxlRmFjdG9yeShlLHQ9ITEpe2xldCBhO3JldHVybiBmdW5jdGlvbigpe2lmKGUpe2E9dD9bXTpPYmplY3QuY3JlYXRlKG51bGwpO2UoYSk7ZT1udWxsfXJldHVybiBhfX1jbGFzcyBNaXNzaW5nRGF0YUV4Y2VwdGlvbiBleHRlbmRzIG5he2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoYE1pc3NpbmcgZGF0YSBbJHtlfSwgJHt0fSlgLCJNaXNzaW5nRGF0YUV4Y2VwdGlvbiIpO3RoaXMuYmVnaW49ZTt0aGlzLmVuZD10fX1jbGFzcyBQYXJzZXJFT0ZFeGNlcHRpb24gZXh0ZW5kcyBuYXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJQYXJzZXJFT0ZFeGNlcHRpb24iKX19Y2xhc3MgWFJlZkVudHJ5RXhjZXB0aW9uIGV4dGVuZHMgbmF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiWFJlZkVudHJ5RXhjZXB0aW9uIil9fWNsYXNzIFhSZWZQYXJzZUV4Y2VwdGlvbiBleHRlbmRzIG5he2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIlhSZWZQYXJzZUV4Y2VwdGlvbiIpfX1mdW5jdGlvbiBhcnJheUJ1ZmZlcnNUb0J5dGVzKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7aWYoMD09PXQpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2lmKDE9PT10KXJldHVybiBuZXcgVWludDhBcnJheShlWzBdKTtsZXQgYT0wO2ZvcihsZXQgbj0wO248dDtuKyspYSs9ZVtuXS5ieXRlTGVuZ3RoO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoYSk7bGV0IHM9MDtmb3IobGV0IGE9MDthPHQ7YSsrKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KGVbYV0pO24uc2V0KHQscyk7cys9dC5ieXRlTGVuZ3RofXJldHVybiBufWFzeW5jIGZ1bmN0aW9uIGZldGNoQmluYXJ5RGF0YShlKXtjb25zdCB0PWF3YWl0IGZldGNoKGUpO2lmKCF0Lm9rKXRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7ZX0iIHdpdGggIiR7dC5zdGF0dXNUZXh0fSIuYCk7cmV0dXJuIHQuYnl0ZXMoKX1mdW5jdGlvbiBnZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OmUsa2V5OnQsZ2V0QXJyYXk6YT0hMSxzdG9wV2hlbkZvdW5kOm49ITB9KXtsZXQgcztjb25zdCByPW5ldyBSZWZTZXQ7Zm9yKDtlIGluc3RhbmNlb2YgRGljdCYmKCFlLm9iaklkfHwhci5oYXMoZS5vYmpJZCkpOyl7ZS5vYmpJZCYmci5wdXQoZS5vYmpJZCk7Y29uc3QgaT1hP2UuZ2V0QXJyYXkodCk6ZS5nZXQodCk7aWYodm9pZCAwIT09aSl7aWYobilyZXR1cm4gaTsoc3x8PVtdKS5wdXNoKGkpfWU9ZS5nZXQoIlBhcmVudCIpfXJldHVybiBzfWZ1bmN0aW9uIGRlZXBDb21wYXJlKGUsdCl7aWYoZT09PXQpcmV0dXJuITA7aWYoZSBpbnN0YW5jZW9mIFJlZiYmdCBpbnN0YW5jZW9mIFJlZilyZXR1cm4gaXNSZWZzRXF1YWwoZSx0KTtpZihlIGluc3RhbmNlb2YgTmFtZSYmdCBpbnN0YW5jZW9mIE5hbWUpcmV0dXJuIGUubmFtZT09PXQubmFtZTtpZihlIGluc3RhbmNlb2YgRGljdCYmdCBpbnN0YW5jZW9mIERpY3Qpe2lmKGUuc2l6ZSE9PXQuc2l6ZSlyZXR1cm4hMTtmb3IoY29uc3RbYSxuXW9mIGUuZ2V0UmF3RW50cmllcygpKXtjb25zdCBlPXQuZ2V0UmF3KGEpO2lmKHZvaWQgMD09PWV8fCFkZWVwQ29tcGFyZShuLGUpKXJldHVybiExfXJldHVybiEwfWlmKEFycmF5LmlzQXJyYXkoZSkmJkFycmF5LmlzQXJyYXkodCkpe2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBhPTAsbj1lLmxlbmd0aDthPG47YSsrKWlmKCFkZWVwQ29tcGFyZShlW2FdLHRbYV0pKXJldHVybiExO3JldHVybiEwfXJldHVybiExfWNvbnN0IGphPVsiIiwiQyIsIkNDIiwiQ0NDIiwiQ0QiLCJEIiwiREMiLCJEQ0MiLCJEQ0NDIiwiQ00iLCIiLCJYIiwiWFgiLCJYWFgiLCJYTCIsIkwiLCJMWCIsIkxYWCIsIkxYWFgiLCJYQyIsIiIsIkkiLCJJSSIsIklJSSIsIklWIiwiViIsIlZJIiwiVklJIiwiVklJSSIsIklYIl07ZnVuY3Rpb24gdG9Sb21hbk51bWVyYWxzKGUsdD0hMSl7YXNzZXJ0KE51bWJlci5pc0ludGVnZXIoZSkmJmU+MCwiVGhlIG51bWJlciBzaG91bGQgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLiIpO2NvbnN0IGE9Ik0iLnJlcGVhdChlLzFlM3wwKStqYVtlJTFlMy8xMDB8MF0ramFbMTArKGUlMTAwLzEwfDApXStqYVsyMCtlJTEwXTtyZXR1cm4gdD9hLnRvTG93ZXJDYXNlKCk6YX1mdW5jdGlvbiBpc1doaXRlU3BhY2UoZSl7cmV0dXJuIDMyPT09ZXx8OT09PWV8fDEzPT09ZXx8MTA9PT1lfWZ1bmN0aW9uIGlzTnVtYmVyQXJyYXkoZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8obnVsbD09PXR8fGUubGVuZ3RoPT09dCkmJmUuZXZlcnkoZT0+Im51bWJlciI9PXR5cGVvZiBlKTpBcnJheUJ1ZmZlci5pc1ZpZXcoZSkmJiEoZSBpbnN0YW5jZW9mIEJpZ0ludDY0QXJyYXl8fGUgaW5zdGFuY2VvZiBCaWdVaW50NjRBcnJheSkmJihudWxsPT09dHx8ZS5sZW5ndGg9PT10KX1mdW5jdGlvbiBsb29rdXBNYXRyaXgoZSx0KXtyZXR1cm4gaXNOdW1iZXJBcnJheShlLDYpP2U6dH1mdW5jdGlvbiBsb29rdXBSZWN0KGUsdCl7cmV0dXJuIGlzTnVtYmVyQXJyYXkoZSw0KT9lOnR9ZnVuY3Rpb24gbG9va3VwTm9ybWFsUmVjdChlLHQpe3JldHVybiBpc051bWJlckFycmF5KGUsNCk/VXRpbC5ub3JtYWxpemVSZWN0KGUpOnR9ZnVuY3Rpb24gcGFyc2VYRkFQYXRoKGUpe2NvbnN0IHQ9L14oLispXFsoXGQrKVxdJC87cmV0dXJuIGUuc3BsaXQoIi4iKS5tYXAoZT0+e2NvbnN0IGE9ZS5tYXRjaCh0KTtyZXR1cm4gYT97bmFtZTphWzFdLHBvczpwYXJzZUludChhWzJdLDEwKX06e25hbWU6ZSxwb3M6MH19KX1mdW5jdGlvbiBlc2NhcGVQREZOYW1lKGUpe2NvbnN0IHQ9W107bGV0IGE9MDtmb3IobGV0IG49MCxzPWUubGVuZ3RoO248cztuKyspe2NvbnN0IHM9ZS5jaGFyQ29kZUF0KG4pO2lmKHM8MzN8fHM+MTI2fHwzNT09PXN8fDQwPT09c3x8NDE9PT1zfHw2MD09PXN8fDYyPT09c3x8OTE9PT1zfHw5Mz09PXN8fDEyMz09PXN8fDEyNT09PXN8fDQ3PT09c3x8Mzc9PT1zKXthPG4mJnQucHVzaChlLnN1YnN0cmluZyhhLG4pKTt0LnB1c2goYCMke3MudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKX1gKTthPW4rMX19aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2E8ZS5sZW5ndGgmJnQucHVzaChlLnN1YnN0cmluZyhhKSk7cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gZXNjYXBlU3RyaW5nKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoLyhbKClcXFxuXHJdKS9nLGU9PiJcbiI9PT1lPyJcXG4iOiJcciI9PT1lPyJcXHIiOmBcXCR7ZX1gKX1mdW5jdGlvbiBfY29sbGVjdEpTKGUsdCxhLG4pe2lmKCFlKXJldHVybjtsZXQgcz1udWxsO2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKG4uaGFzKGUpKXJldHVybjtzPWU7bi5wdXQocyk7ZT10LmZldGNoKGUpfWlmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IHMgb2YgZSlfY29sbGVjdEpTKHMsdCxhLG4pO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIERpY3Qpe2lmKGlzTmFtZShlLmdldCgiUyIpLCJKYXZhU2NyaXB0Iikpe2NvbnN0IHQ9ZS5nZXQoIkpTIik7bGV0IG47dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/bj10LmdldFN0cmluZygpOiJzdHJpbmciPT10eXBlb2YgdCYmKG49dCk7biYmPXN0cmluZ1RvUERGU3RyaW5nKG4sITApLnJlcGxhY2VBbGwoIlwwIiwiIik7biYmYS5wdXNoKG4udHJpbSgpKX1fY29sbGVjdEpTKGUuZ2V0UmF3KCJOZXh0IiksdCxhLG4pfXMmJm4ucmVtb3ZlKHMpfWZ1bmN0aW9uIF9jb2xsZWN0QWN0aW9uKGUsdCxhLG4pe2NvbnN0IHM9W107X2NvbGxlY3RKUyhlLGEscyxuZXcgUmVmU2V0KTtzLmxlbmd0aCYmbi5zZXQodCxzKX1mdW5jdGlvbiBjb2xsZWN0QWN0aW9ucyhlLHQsYSl7Y29uc3Qgbj1uZXcgTWFwLHM9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiQUEiLHN0b3BXaGVuRm91bmQ6ITF9KTtpZihzKWZvcihsZXQgdD1zLmxlbmd0aC0xO3Q+PTA7dC0tKXtjb25zdCByPXNbdF07aWYociBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0W3Qsc11vZiByLmdldFJhd0VudHJpZXMoKSl7Y29uc3Qgcj1hW3RdO3ImJl9jb2xsZWN0QWN0aW9uKHMscixlLG4pfX10LmhhcygiQSIpJiZfY29sbGVjdEFjdGlvbih0LmdldCgiQSIpLCJBY3Rpb24iLGUsbik7cmV0dXJuIG4uc2l6ZT9uOm51bGx9Y29uc3Qga2E9ezYwOiImbHQ7Iiw2MjoiJmd0OyIsMzg6IiZhbXA7IiwzNDoiJnF1b3Q7IiwzOToiJmFwb3M7In07ZnVuY3Rpb24qY29kZVBvaW50SXRlcihlKXtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0Kyspe2NvbnN0IGE9ZS5jb2RlUG9pbnRBdCh0KTthPjU1Mjk1JiYoYTw1NzM0NHx8YT42NTUzMykmJnQrKzt5aWVsZCBhfX1mdW5jdGlvbiBlbmNvZGVUb1htbFN0cmluZyhlKXtjb25zdCB0PVtdO2xldCBhPTA7Zm9yKGxldCBuPTAscz1lLmxlbmd0aDtuPHM7bisrKXtjb25zdCBzPWUuY29kZVBvaW50QXQobik7aWYoMzI8PXMmJnM8PTEyNil7Y29uc3Qgcj1rYVtzXTtpZihyKXthPG4mJnQucHVzaChlLnN1YnN0cmluZyhhLG4pKTt0LnB1c2gocik7YT1uKzF9fWVsc2V7YTxuJiZ0LnB1c2goZS5zdWJzdHJpbmcoYSxuKSk7dC5wdXNoKGAmI3gke3MudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9O2ApO3M+NjU1MzUmJm4rKzthPW4rMX19aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2E8ZS5sZW5ndGgmJnQucHVzaChlLnN1YnN0cmluZyhhKSk7cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gdmFsaWRhdGVGb250TmFtZShlLHQ9ITEpe2NvbnN0IGE9L14oInwnKS4qKCJ8JykkLy5leGVjKGUpO2lmKGEmJmFbMV09PT1hWzJdKXtpZihuZXcgUmVnRXhwKGBbXlxcXFxdJHthWzFdfWApLnRlc3QoZS5zbGljZSgxLC0xKSkpe3QmJndhcm4oYEZvbnRGYW1pbHkgY29udGFpbnMgdW5lc2NhcGVkICR7YVsxXX06ICR7ZX0uYCk7cmV0dXJuITF9aWYoaGEudGVzdChlKSl7dCYmd2FybihgRm9udEZhbWlseSBjb250YWlucyBjb250cm9sIGNoYXJhY3RlcnM6ICR7ZX0uYCk7cmV0dXJuITF9fWVsc2UgZm9yKGNvbnN0IGEgb2YgZS5zcGxpdCgvWyBcdF0rLykpaWYoL14oPzpcZHwtW1xkLV0pLy50ZXN0KGEpfHwhL15bXHdcXC1dKyQvLnRlc3QoYSkpe3QmJndhcm4oYEZvbnRGYW1pbHkgY29udGFpbnMgaW52YWxpZCA8Y3VzdG9tLWlkZW50PjogJHtlfS5gKTtyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBub3JtYWxpemVDU1NGb250RmFtaWx5KGUpe3JldHVybiBlLnJlcGxhY2VBbGwoLyggKykoXGQpPy9nLChlLHQsYSk9PmE/PyIgIil9ZnVuY3Rpb24gdmFsaWRhdGVDU1NGb250KGUpe2NvbnN0IHQ9bmV3IFNldChbIjEwMCIsIjIwMCIsIjMwMCIsIjQwMCIsIjUwMCIsIjYwMCIsIjcwMCIsIjgwMCIsIjkwMCIsIjEwMDAiLCJub3JtYWwiLCJib2xkIiwiYm9sZGVyIiwibGlnaHRlciJdKSx7Zm9udEZhbWlseTphLGZvbnRXZWlnaHQ6bixpdGFsaWNBbmdsZTpzfT1lO2lmKCF2YWxpZGF0ZUZvbnROYW1lKGEsITApKXJldHVybiExO2NvbnN0IHI9bj9uLnRvU3RyaW5nKCk6IiI7ZS5mb250V2VpZ2h0PXQuaGFzKHIpP3I6IjQwMCI7Y29uc3QgaT1wYXJzZUZsb2F0KHMpO2UuaXRhbGljQW5nbGU9aXNOYU4oaSl8fGk8LTkwfHxpPjkwPyIxNCI6cy50b1N0cmluZygpO3JldHVybiEwfWZ1bmN0aW9uIHJlY292ZXJKc1VSTChlKXtjb25zdCB0PW5ldyBSZWdFeHAoIl5cXHMqKCIrWyJhcHAubGF1bmNoVVJMIiwid2luZG93Lm9wZW4iLCJ4ZmEuaG9zdC5nb3RvVVJMIl0uam9pbigifCIpLnJlcGxhY2VBbGwoIi4iLCJcXC4iKSsiKVxcKCg/Oid8XCIpKFteJ1wiXSopKD86J3xcIikoPzosXFxzKihcXHcrKVxcKXxcXCkpIiwiaSIpLmV4ZWMoZSk7cmV0dXJuIHQ/LlsyXT97dXJsOnRbMl0sbmV3V2luZG93OiJhcHAubGF1bmNoVVJMIj09PXRbMV0mJiJ0cnVlIj09PXRbM119Om51bGx9ZnVuY3Rpb24gbnVtYmVyVG9TdHJpbmcoZSl7aWYoTnVtYmVyLmlzSW50ZWdlcihlKSlyZXR1cm4gZS50b1N0cmluZygpO2NvbnN0IHQ9TWF0aC5yb3VuZCgxMDAqZSk7cmV0dXJuIHQlMTAwPT0wPyh0LzEwMCkudG9TdHJpbmcoKTp0JTEwPT0wP2UudG9GaXhlZCgxKTplLnRvRml4ZWQoMil9ZnVuY3Rpb24gZ2V0TmV3QW5ub3RhdGlvbnNNYXAoZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFthLG5db2YgZSlhLnN0YXJ0c1dpdGgocCkmJnQuZ2V0T3JJbnNlcnRDb21wdXRlZChuLnBhZ2VJbmRleCxtYWtlQXJyKS5wdXNoKG4pO3JldHVybiB0LnNpemU+MD90Om51bGx9ZnVuY3Rpb24gZ2V0TW9kaWZpY2F0aW9uRGF0ZShlPW5ldyBEYXRlKXtlIGluc3RhbmNlb2YgRGF0ZXx8KGU9bmV3IERhdGUoZSkpO3JldHVybltlLmdldFVUQ0Z1bGxZZWFyKCkudG9TdHJpbmcoKSwoZS5nZXRVVENNb250aCgpKzEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDRGF0ZSgpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDSG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ01pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ1NlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKV0uam9pbigiIil9ZnVuY3Rpb24gZ2V0Um90YXRpb25NYXRyaXgoZSx0LGEpe3N3aXRjaChlKXtjYXNlIDkwOnJldHVyblswLDEsLTEsMCx0LDBdO2Nhc2UgMTgwOnJldHVyblstMSwwLDAsLTEsdCxhXTtjYXNlIDI3MDpyZXR1cm5bMCwtMSwxLDAsMCxhXTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCByb3RhdGlvbiIpfX1mdW5jdGlvbiBnZXRTaXplSW5CeXRlcyhlKXtyZXR1cm4gTWF0aC5jZWlsKE1hdGguY2VpbChNYXRoLmxvZzIoMStlKSkvOCl9Y29uc3QgeWE9MT09PW5ldyBVaW50OEFycmF5KG5ldyBVaW50MzJBcnJheShbMV0pLmJ1ZmZlcilbMF0/NDI3ODE5MDA4MDoyNTUscWE9fnlhO2NsYXNzIFFDTVN7c3RhdGljI2k9bnVsbDtzdGF0aWMgX21lbW9yeT1udWxsO3N0YXRpYyBfZGVzdEJ1ZmZlcj1udWxsO3N0YXRpYyBfZGVzdE9mZnNldD0wO3N0YXRpYyBfa2VlcEFscGhhPSExO3N0YXRpYyBnZXQgX21lbW9yeUFycmF5KCl7Y29uc3QgZT10aGlzLiNpO3JldHVybiBlPy5ieXRlTGVuZ3RoP2U6dGhpcy4jaT1uZXcgVWludDhBcnJheSh0aGlzLl9tZW1vcnkuYnVmZmVyKX19Y29uc3QgdmE9T2JqZWN0LmZyZWV6ZSh7UkdCODowLDA6IlJHQjgiLFJHQkE4OjEsMToiUkdCQTgiLEJHUkE4OjIsMjoiQkdSQTgiLEdyYXk4OjMsMzoiR3JheTgiLEdyYXlBODo0LDQ6IkdyYXlBOCIsQ01ZSzo1LDU6IkNNWUsifSksU2E9T2JqZWN0LmZyZWV6ZSh7UGVyY2VwdHVhbDowLDA6IlBlcmNlcHR1YWwiLFJlbGF0aXZlQ29sb3JpbWV0cmljOjEsMToiUmVsYXRpdmVDb2xvcmltZXRyaWMiLFNhdHVyYXRpb246MiwyOiJTYXR1cmF0aW9uIixBYnNvbHV0ZUNvbG9yaW1ldHJpYzozLDM6IkFic29sdXRlQ29sb3JpbWV0cmljIn0pO2Z1bmN0aW9uIHFjbXNfY29udmVydF9hcnJheShlLHQsYSl7Y29uc3Qgbj1wYXNzQXJyYXk4VG9XYXNtMCh0LFJhLl9fd2JpbmRnZW5fbWFsbG9jKSxzPU9hO1JhLnFjbXNfY29udmVydF9hcnJheShlLG4scyxhKX1mdW5jdGlvbiBfX3diZ19nZXRfaW1wb3J0cygpe3JldHVybntfX3Byb3RvX186bnVsbCwiLi9xY21zX2JnLmpzIjp7X19wcm90b19fOm51bGwsX193YmdfX193YmluZGdlbl90aHJvd18zNDRmNDJkMzIxMWM0NzY1OmZ1bmN0aW9uKGUsdCl7dGhyb3cgbmV3IEVycm9yKGZ1bmN0aW9uIGdldFN0cmluZ0Zyb21XYXNtMChlLHQpe3JldHVybiBmdW5jdGlvbiBkZWNvZGVUZXh0KGUsdCl7SWErPXQ7aWYoSWE+PUNhKXt4YT1uZXcgVGV4dERlY29kZXIoInV0Zi04Iix7aWdub3JlQk9NOiEwLGZhdGFsOiEwfSk7eGEuZGVjb2RlKCk7SWE9dH1yZXR1cm4geGEuZGVjb2RlKGdldFVpbnQ4QXJyYXlNZW1vcnkwKCkuc3ViYXJyYXkoZSxlK3QpKX0oZT4+PjAsdCl9KGUsdCkpfSxfX3diZ19jb3B5X3Jlc3VsdF8wZDE1ZjNiZjlkOTAxMmFlOmZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uIGNvcHlfcmVzdWx0KGUsdCl7Y29uc3R7X2Rlc3RCdWZmZXI6YSxfZGVzdE9mZnNldDpuLF9rZWVwQWxwaGE6cyxfbWVtb3J5QXJyYXk6cn09UUNNUztpZighcyl7YS5zZXQoci5zdWJhcnJheShlLGUrdCksbik7cmV0dXJufWNvbnN0IGk9dD4+MixvPWEuYnl0ZU9mZnNldCtuO2lmKCEoMyYob3xlKSkpe2NvbnN0IHQ9bmV3IFVpbnQzMkFycmF5KGEuYnVmZmVyLG8saSksbj1uZXcgVWludDMyQXJyYXkoUUNNUy5fbWVtb3J5LmJ1ZmZlcixlLGkpO2ZvcihsZXQgZT0wO2U8aTtlKyspdFtlXT10W2VdJnlhfG5bZV0mcWE7cmV0dXJufWZvcihsZXQgcz1lLGk9ZSt0LG89bjtzPGk7cys9NCxvKz00KXthW29dPXJbc107YVtvKzFdPXJbcysxXTthW28rMl09cltzKzJdfX0oZT4+PjAsdD4+PjApfSxfX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlOmZ1bmN0aW9uKCl7Y29uc3QgZT1SYS5fX3diaW5kZ2VuX2V4dGVybnJlZnMsdD1lLmdyb3coNCk7ZS5zZXQoMCx2b2lkIDApO2Uuc2V0KHQrMCx2b2lkIDApO2Uuc2V0KHQrMSxudWxsKTtlLnNldCh0KzIsITApO2Uuc2V0KHQrMywhMSl9fX19bGV0IEFhPW51bGw7ZnVuY3Rpb24gZ2V0VWludDhBcnJheU1lbW9yeTAoKXtudWxsIT09QWEmJjAhPT1BYS5ieXRlTGVuZ3RofHwoQWE9bmV3IFVpbnQ4QXJyYXkoUmEubWVtb3J5LmJ1ZmZlcikpO3JldHVybiBBYX1mdW5jdGlvbiBwYXNzQXJyYXk4VG9XYXNtMChlLHQpe2NvbnN0IGE9dCgxKmUubGVuZ3RoLDEpPj4+MDtnZXRVaW50OEFycmF5TWVtb3J5MCgpLnNldChlLGEvMSk7T2E9ZS5sZW5ndGg7cmV0dXJuIGF9bGV0IHhhPW5ldyBUZXh0RGVjb2RlcigidXRmLTgiLHtpZ25vcmVCT006ITAsZmF0YWw6ITB9KTt4YS5kZWNvZGUoKTtjb25zdCBDYT0yMTQ2NDM1MDcyO2xldCBJYT0wO2xldCBGYSxUYSxSYSxPYT0wO2Z1bmN0aW9uIF9fd2JnX2ZpbmFsaXplX2luaXQoZSx0KXtUYT1lO1JhPWUuZXhwb3J0cztGYT10O0FhPW51bGw7UmEuX193YmluZGdlbl9zdGFydCgpO3JldHVybiBSYX1mdW5jdGlvbiBNYXRoQ2xhbXAoZSx0LGEpe3JldHVybiBNYXRoLm1pbihNYXRoLm1heChlLHQpLGEpfWZ1bmN0aW9uIGlzRGVmYXVsdERlY29kZUhlbHBlcihlLHQpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiEwO2NvbnN0IGE9ZS5sZW5ndGg7aWYoYTx0KXt3YXJuKCJEZWNvZGUgbWFwIGxlbmd0aCBpcyB0b28gc2hvcnQuIik7cmV0dXJuITB9aWYoYT50KXtpbmZvKCJUcnVuY2F0aW5nIHRvbyBsb25nIGRlY29kZSBtYXAuIik7ZS5sZW5ndGg9dH1yZXR1cm4hMX1jbGFzcyBDb2xvclNwYWNle3N0YXRpYyNvPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtjb25zdHJ1Y3RvcihlLHQpe3RoaXMubmFtZT1lO3RoaXMubnVtQ29tcHM9dH1nZXRSZ2IoZSx0LGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpKXt0aGlzLmdldFJnYkl0ZW0oZSx0LGEsMCk7cmV0dXJuIGF9Z2V0UmdiSGV4KGUsdCl7Y29uc3QgYT10aGlzLmdldFJnYihlLHQsQ29sb3JTcGFjZS4jbyk7cmV0dXJuIFV0aWwubWFrZUhleENvbG9yKGFbMF0sYVsxXSxhWzJdKX1nZXRSZ2JJdGVtKGUsdCxhLG4pe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgQ29sb3JTcGFjZS5nZXRSZ2JJdGVtIil9Z2V0UmdiQnVmZmVyKGUsdCxhLG4scyxyLGkpe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgQ29sb3JTcGFjZS5nZXRSZ2JCdWZmZXIiKX1nZXRSZ2JJdGVtcyhlLHQsYSxuLHMpe2NvbnN0e251bUNvbXBzOnJ9PXRoaXM7Zm9yKGxldCBpPTAsbz0wO2k8dDtpKyssbys9cil7dGhpcy5nZXRSZ2JJdGVtKGUsbyxhLG4pO24rPTMrc319aXNQYXNzdGhyb3VnaChlKXtyZXR1cm4hMX1pc0RlZmF1bHREZWNvZGUoZSx0KXtyZXR1cm4gQ29sb3JTcGFjZS5pc0RlZmF1bHREZWNvZGUoZSx0aGlzLm51bUNvbXBzKX1maWxsUmdiKGUsdCxhLG4scyxyLGksbyxsKXtjb25zdCBmPXQqYTtsZXQgYz1udWxsO2NvbnN0IGg9MTw8aSx1PWEhPT1zfHx0IT09bjtpZih0aGlzLmlzUGFzc3Rocm91Z2goaSkpYz1vO2Vsc2UgaWYoMT09PXRoaXMubnVtQ29tcHMmJmY+aCYmIkRldmljZUdyYXkiIT09dGhpcy5uYW1lJiYiRGV2aWNlUkdCIiE9PXRoaXMubmFtZSl7Y29uc3QgdD1pPD04P25ldyBVaW50OEFycmF5KGgpOm5ldyBVaW50MTZBcnJheShoKTtmb3IobGV0IGU9MDtlPGg7ZSsrKXRbZV09ZTtjb25zdCBhPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKmgpO3RoaXMuZ2V0UmdiQnVmZmVyKHQsMCxoLGEsMCxpLDApO2lmKHUpe2M9bmV3IFVpbnQ4QXJyYXkoMypmKTtsZXQgZT0wO2ZvcihsZXQgdD0wO3Q8ZjsrK3Qpe2NvbnN0IG49MypvW3RdO2NbZSsrXT1hW25dO2NbZSsrXT1hW24rMV07Y1tlKytdPWFbbisyXX19ZWxzZXtsZXQgdD0wO2ZvcihsZXQgbj0wO248ZjsrK24pe2NvbnN0IHM9MypvW25dO2VbdCsrXT1hW3NdO2VbdCsrXT1hW3MrMV07ZVt0KytdPWFbcysyXTt0Kz1sfX19ZWxzZSBpZih1KXtjPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKmYpO3RoaXMuZ2V0UmdiQnVmZmVyKG8sMCxmLGMsMCxpLDApfWVsc2UgdGhpcy5nZXRSZ2JCdWZmZXIobywwLG4qcixlLDAsaSxsKTtpZihjKWlmKHUpIWZ1bmN0aW9uIHJlc2l6ZVJnYkltYWdlKGUsdCxhLG4scyxyLGkpe2k9MSE9PWk/MDppO2NvbnN0IG89YS9zLGw9bi9yO2xldCBmLGM9MDtjb25zdCBoPW5ldyBVaW50MTZBcnJheShzKSx1PTMqYTtmb3IobGV0IGU9MDtlPHM7ZSsrKWhbZV09MypNYXRoLmZsb29yKGUqbyk7Zm9yKGxldCBhPTA7YTxyO2ErKyl7Y29uc3Qgbj1NYXRoLmZsb29yKGEqbCkqdTtmb3IobGV0IGE9MDthPHM7YSsrKXtmPW4raFthXTt0W2MrK109ZVtmKytdO3RbYysrXT1lW2YrK107dFtjKytdPWVbZisrXTtjKz1pfX19KGMsZSx0LGEsbixzLGwpO2Vsc2V7bGV0IHQ9MCxhPTA7Zm9yKGxldCBzPTAsaT1uKnI7czxpO3MrKyl7ZVt0KytdPWNbYSsrXTtlW3QrK109Y1thKytdO2VbdCsrXT1jW2ErK107dCs9bH19fWdldCB1c2VzWmVyb1RvT25lUmFuZ2UoKXtyZXR1cm4gc2hhZG93KHRoaXMsInVzZXNaZXJvVG9PbmVSYW5nZSIsITApfXN0YXRpYyBpc0RlZmF1bHREZWNvZGUoZSx0KXtpZihpc0RlZmF1bHREZWNvZGVIZWxwZXIoZSwyKnQpKXJldHVybiEwO2ZvcihsZXQgdD0wLGE9ZS5sZW5ndGg7dDxhO3QrPTIpaWYoMCE9PWVbdF18fDEhPT1lW3QrMV0pcmV0dXJuITE7cmV0dXJuITB9fWNsYXNzIEFsdGVybmF0ZUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoIkFsdGVybmF0ZSIsZSk7dGhpcy5iYXNlPXQ7dGhpcy50aW50Rm49YTt0aGlzLnRtcEJ1Zj1uZXcgRmxvYXQzMkFycmF5KHQubnVtQ29tcHMpfWdldFJnYkl0ZW0oZSx0LGEsbil7Y29uc3Qgcz10aGlzLnRtcEJ1Zjt0aGlzLnRpbnRGbihlLHQscywwKTt0aGlzLmJhc2UuZ2V0UmdiSXRlbShzLDAsYSxuKX1nZXRSZ2JJdGVtcyhlLHQsYSxuLHMpe2NvbnN0e2Jhc2U6cixudW1Db21wczppLHRpbnRGbjpvfT10aGlzLGw9ci5udW1Db21wcyxmPW5ldyBGbG9hdDMyQXJyYXkodCpsKTtmb3IobGV0IGE9MCxuPTAscz0wO2E8dDthKyspe28oZSxuLGYscyk7bis9aTtzKz1sfXIuZ2V0UmdiSXRlbXMoZix0LGEsbixzKX1nZXRSZ2JCdWZmZXIoZSx0LGEsbixzLHIsaSl7Y29uc3Qgbz10aGlzLnRpbnRGbixsPXRoaXMuYmFzZSxmPTEvKCgxPDxyKS0xKSxjPWwubnVtQ29tcHMsaD1sLnVzZXNaZXJvVG9PbmVSYW5nZSx1PShsLmlzUGFzc3Rocm91Z2goOCl8fCFoKSYmMD09PWk7bGV0IG09dT9zOjA7Y29uc3QgcD11P246bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGMqYSksZD10aGlzLm51bUNvbXBzLGc9bmV3IEZsb2F0MzJBcnJheShkKSxiPW5ldyBGbG9hdDMyQXJyYXkoYyk7bGV0IHcsajtmb3Iodz0wO3c8YTt3Kyspe2ZvcihqPTA7ajxkO2orKylnW2pdPWVbdCsrXSpmO28oZywwLGIsMCk7aWYoaClmb3Ioaj0wO2o8YztqKyspcFttKytdPTI1NSpiW2pdO2Vsc2V7bC5nZXRSZ2JJdGVtKGIsMCxwLG0pO20rPWN9fXV8fGwuZ2V0UmdiQnVmZmVyKHAsMCxhLG4scyw4LGkpfX1jbGFzcyBQYXR0ZXJuQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUpe3N1cGVyKCJQYXR0ZXJuIixudWxsKTt0aGlzLmJhc2U9ZX1pc0RlZmF1bHREZWNvZGUoZSx0KXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIFBhdHRlcm5DUy5pc0RlZmF1bHREZWNvZGUiKX19Y2xhc3MgSW5kZXhlZENTIGV4dGVuZHMgQ29sb3JTcGFjZXsjbDtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoIkluZGV4ZWQiLDEpO3RoaXMuaGlnaFZhbD10O2NvbnN0IG49dCsxLHM9ZS5udW1Db21wcypuLHI9bmV3IFVpbnQ4QXJyYXkocyk7aWYoYSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pci5zZXQoYS5nZXRCeXRlcyhzKSk7ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIGEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbmRleGVkQ1MgLSB1bnJlY29nbml6ZWQgbG9va3VwIHRhYmxlOiAke2F9YCk7Zm9yKGxldCBlPTA7ZTxzOysrZSlyW2VdPWEuY2hhckNvZGVBdChlKX10aGlzLiNsPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKm4pO2UuZ2V0UmdiQnVmZmVyKHIsMCxuLHRoaXMuI2wsMCw4LDApfWdldFJnYkl0ZW0oZSx0LGEsbil7Y29uc3Qgcz10aGlzLiNsLHI9MypNYXRoQ2xhbXAoTWF0aC5yb3VuZChlW3RdKSwwLHRoaXMuaGlnaFZhbCk7YVtuXT1zW3JdO2FbbisxXT1zW3IrMV07YVtuKzJdPXNbcisyXX1nZXRSZ2JCdWZmZXIoZSx0LGEsbixzLHIsaSl7Y29uc3R7aGlnaFZhbDpvfT10aGlzLGw9dGhpcy4jbDtmb3IobGV0IHI9MDtyPGE7KytyKXtjb25zdCBhPTMqTWF0aENsYW1wKE1hdGgucm91bmQoZVt0KytdKSwwLG8pO25bcysrXT1sW2FdO25bcysrXT1sW2ErMV07bltzKytdPWxbYSsyXTtzKz1pfX1pc0RlZmF1bHREZWNvZGUoZSx0KXtpZihpc0RlZmF1bHREZWNvZGVIZWxwZXIoZSwyKSlyZXR1cm4hMDtpZighTnVtYmVyLmlzSW50ZWdlcih0KXx8dDwxKXt3YXJuKCJCaXRzIHBlciBjb21wb25lbnQgaXMgbm90IGNvcnJlY3QiKTtyZXR1cm4hMH1yZXR1cm4gMD09PWVbMF0mJmVbMV09PT0oMTw8dCktMX19Y2xhc3MgRGV2aWNlR3JheUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VHcmF5IiwxKX1nZXRSZ2JJdGVtKGUsdCxhLG4pe2NvbnN0IHM9MjU1KmVbdF07YVtuXT1hW24rMV09YVtuKzJdPXN9Z2V0UmdiQnVmZmVyKGUsdCxhLG4scyxyLGkpe2NvbnN0IG89MjU1LygoMTw8ciktMSk7bGV0IGw9dCxmPXM7Zm9yKGxldCB0PTA7dDxhOysrdCl7Y29uc3QgdD1vKmVbbCsrXTtuW2YrK109dDtuW2YrK109dDtuW2YrK109dDtmKz1pfX19Y2xhc3MgRGV2aWNlUmdiQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZVJHQiIsMyl9Z2V0UmdiSXRlbShlLHQsYSxuKXthW25dPTI1NSplW3RdO2FbbisxXT0yNTUqZVt0KzFdO2FbbisyXT0yNTUqZVt0KzJdfWdldFJnYkJ1ZmZlcihlLHQsYSxuLHMscixpKXtpZig4PT09ciYmMD09PWkpe24uc2V0KGUuc3ViYXJyYXkodCx0KzMqYSkscyk7cmV0dXJufWNvbnN0IG89MjU1LygoMTw8ciktMSk7bGV0IGw9dCxmPXM7Zm9yKGxldCB0PTA7dDxhOysrdCl7bltmKytdPW8qZVtsKytdO25bZisrXT1vKmVbbCsrXTtuW2YrK109byplW2wrK107Zis9aX19aXNQYXNzdGhyb3VnaChlKXtyZXR1cm4gOD09PWV9fWNsYXNzIERldmljZVJnYmFDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoKXtzdXBlcigiRGV2aWNlUkdCQSIsNCl9aXNQYXNzdGhyb3VnaChlKXtyZXR1cm4gOD09PWV9ZmlsbFJnYihlLHQsYSxuLHMscixpLG8sbCl7YSE9PXN8fHQhPT1uP2Z1bmN0aW9uIHJlc2l6ZVJnYmFJbWFnZShlLHQsYSxuLHMscixpKXtjb25zdCBvPWEvcyxsPW4vcjtsZXQgZj0wO2NvbnN0IGM9bmV3IFVpbnQxNkFycmF5KHMpO2lmKDE9PT1pKXtmb3IobGV0IGU9MDtlPHM7ZSsrKWNbZV09TWF0aC5mbG9vcihlKm8pO2NvbnN0IG49bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyKSxpPW5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlciksaD1GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj8xNjc3NzIxNTo0Mjk0OTY3MDQwO2ZvcihsZXQgZT0wO2U8cjtlKyspe2NvbnN0IHQ9bi5zdWJhcnJheShNYXRoLmZsb29yKGUqbCkqYSk7Zm9yKGxldCBlPTA7ZTxzO2UrKylpW2YrK118PXRbY1tlXV0maH19ZWxzZXtjb25zdCBuPTQsaT1hKm47Zm9yKGxldCBlPTA7ZTxzO2UrKyljW2VdPU1hdGguZmxvb3IoZSpvKSpuO2ZvcihsZXQgYT0wO2E8cjthKyspe2NvbnN0IG49ZS5zdWJhcnJheShNYXRoLmZsb29yKGEqbCkqaSk7Zm9yKGxldCBlPTA7ZTxzO2UrKyl7Y29uc3QgYT1jW2VdO3RbZisrXT1uW2FdO3RbZisrXT1uW2ErMV07dFtmKytdPW5bYSsyXX19fX0obyxlLHQsYSxuLHMsbCk6ZnVuY3Rpb24gY29weVJnYmFJbWFnZShlLHQsYSl7aWYoMT09PWEpe2NvbnN0IGE9bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyKSxuPW5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlcikscz1GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj8xNjc3NzIxNTo0Mjk0OTY3MDQwO2ZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrKyluW2VdfD1hW2VdJnN9ZWxzZXtsZXQgYT0wO2ZvcihsZXQgbj0wLHM9ZS5sZW5ndGg7bjxzO24rPTQpe3RbYSsrXT1lW25dO3RbYSsrXT1lW24rMV07dFthKytdPWVbbisyXX19fShvLGUsbCl9fWNsYXNzIERldmljZUNteWtDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoKXtzdXBlcigiRGV2aWNlQ01ZSyIsNCl9I2YoZSx0LGEsbixzKXtjb25zdCByPWVbdF0qYSxpPWVbdCsxXSphLG89ZVt0KzJdKmEsbD1lW3QrM10qYTtuW3NdPTI1NStyKigtNC4zODczMzIzODQ2MDk5ODgqcis1NC40ODYxNTE5NDE4OTE3NippKzE4LjgyMjkwNTAyMTY1MzAyKm8rMjEyLjI1NjYyNDUxNjM5NTg1KmwtMjg1LjIzMzEwMjYxMzcwMDQpK2kqKDEuNzE0OTc2MzQ3NzM2MjEzNCppLTUuNjA5NjczNjkwNDA0NzMxNSpvKy0xNy44NzM4NzA4NjE0MTU0NDQqbC01LjQ5NzAwNjQyNzE5NjM2NikrbyooLTIuNTIxNzM0MDEzMTY4MzAzMypvLTIxLjI0ODkyMzMzNzM1MzA3MypsKzE3LjUxMTkyNzA4NDE4MTMpK2wqKC0yMS44NjEyMjE0NzQ2MzYwNSpsLTE4OS40ODE4MDgzNTkyMjc0Nyk7bltzKzFdPTI1NStyKig4Ljg0MTA0MTQyMjAzNjE0OSpyKzYwLjExODAyNzA0NTU5NzM2NippKzYuODcxNDI1NTkyMDQ5MDA3Km8rMzEuMTU5MTAwMTMwMDU1OTIyKmwtNzkuMjk3MDg0NDgxNjU0OCkraSooLTE1LjMxMDM2MTMwNjk2NzgxNyppKzE3LjU3NTI1MTI2MTEwOTQ4MipvKzEzMS4zNTI1MDkxMjQ5Mzk3NipsLTE5MC45NDUzMzAyNTg4OTUxKStvKig0LjQ0NDMzOTEwMjg1MjczOSpvKzkuODYzMjg2MTQ5MzQwNSpsLTI0Ljg2NzQxNTgyNTU1ODc4KStsKigtMjAuNzM3MzI1NDcxMTgxMDM0KmwtMTg3LjgwNDUzNzA5NzE5NTc4KTtuW3MrMl09MjU1K3IqKC44ODQyNTIyNDMwMDAzMjk2KnIrOC4wNzg2Nzc1MDMxMTI5MjgqaSszMC44OTk3ODMwOTcwMzcyOSpvLS4yMzg4MzIzODY4OTE3ODkzNCpsLTE0LjE4MzU3Njc5OTY3MzI4NikraSooMTAuNDk1OTMyNzM0MzIwNzIqaSs2My4wMjM3ODQ5NDc1NDA1MipvKzUwLjYwNjk1NzY1NjM2MDczNCpsLTExMi4yMzg4NDI1MzcxOTI0OCkrbyooLjAzMjk2MDQxMTE0ODczMjE3Km8rMTE1LjYwMzg0NDQ5NjQ2NjQxKmwtMTkzLjU4MjA5MzU2ODYxNTA1KStsKigtMjIuMzM4MTY4MDczMDk4ODYqbC0xODAuMTI2MTM5NzQ3MDgzNjcpfWdldFJnYkl0ZW0oZSx0LGEsbil7dGhpcy4jZihlLHQsMSxhLG4pfWdldFJnYkJ1ZmZlcihlLHQsYSxuLHMscixpKXtjb25zdCBvPTEvKCgxPDxyKS0xKTtmb3IobGV0IHI9MDtyPGE7cisrKXt0aGlzLiNmKGUsdCxvLG4scyk7dCs9NDtzKz0zK2l9fX1jbGFzcyBDYWxHcmF5Q1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiQ2FsR3JheSIsMSk7aWYoIWUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgQ2FsR3JheSIpO1t0aGlzLlhXLHRoaXMuWVcsdGhpcy5aV109ZTtbdGhpcy5YQix0aGlzLllCLHRoaXMuWkJdPXR8fFswLDAsMF07dGhpcy5HPWF8fDE7aWYodGhpcy5YVzwwfHx0aGlzLlpXPDB8fDEhPT10aGlzLllXKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBXaGl0ZVBvaW50IGNvbXBvbmVudHMgZm9yICR7dGhpcy5uYW1lfSwgbm8gZmFsbGJhY2sgYXZhaWxhYmxlYCk7aWYodGhpcy5YQjwwfHx0aGlzLllCPDB8fHRoaXMuWkI8MCl7aW5mbyhgSW52YWxpZCBCbGFja1BvaW50IGZvciAke3RoaXMubmFtZX0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuWEI9dGhpcy5ZQj10aGlzLlpCPTB9MD09PXRoaXMuWEImJjA9PT10aGlzLllCJiYwPT09dGhpcy5aQnx8d2FybihgJHt0aGlzLm5hbWV9LCBCbGFja1BvaW50OiBYQjogJHt0aGlzLlhCfSwgWUI6ICR7dGhpcy5ZQn0sIFpCOiAke3RoaXMuWkJ9LCBvbmx5IGRlZmF1bHQgdmFsdWVzIGFyZSBzdXBwb3J0ZWQuYCk7aWYodGhpcy5HPDEpe2luZm8oYEludmFsaWQgR2FtbWE6ICR7dGhpcy5HfSBmb3IgJHt0aGlzLm5hbWV9LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5gKTt0aGlzLkc9MX19I2YoZSx0LGEsbixzKXtjb25zdCByPShlW3RdKnMpKip0aGlzLkcsaT10aGlzLllXKnIsbz1NYXRoLm1heCgyOTUuOCppKiouMzMzMzMzMzMzMzMzMzMzMy00MC44LDApO2Fbbl09bzthW24rMV09bzthW24rMl09b31nZXRSZ2JJdGVtKGUsdCxhLG4pe3RoaXMuI2YoZSx0LGEsbiwxKX1nZXRSZ2JCdWZmZXIoZSx0LGEsbixzLHIsaSl7Y29uc3Qgbz0xLygoMTw8ciktMSk7Zm9yKGxldCByPTA7cjxhOysrcil7dGhpcy4jZihlLHQsbixzLG8pO3QrPTE7cys9MytpfX19Y2xhc3MgQ2FsUkdCQ1MgZXh0ZW5kcyBDb2xvclNwYWNle3N0YXRpYyNjPW5ldyBGbG9hdDMyQXJyYXkoWy44OTUxLC4yNjY0LC0uMTYxNCwtLjc1MDIsMS43MTM1LC4wMzY3LC4wMzg5LC0uMDY4NSwxLjAyOTZdKTtzdGF0aWMjaD1uZXcgRmxvYXQzMkFycmF5KFsuOTg2OTkyOSwtLjE0NzA1NDMsLjE1OTk2MjcsLjQzMjMwNTMsLjUxODM2MDMsLjA0OTI5MTIsLS4wMDg1Mjg3LC4wNDAwNDI4LC45Njg0ODY3XSk7c3RhdGljI3U9bmV3IEZsb2F0MzJBcnJheShbMy4yNDA0NTQyLC0xLjUzNzEzODUsLS40OTg1MzE0LC0uOTY5MjY2LDEuODc2MDEwOCwuMDQxNTU2LC4wNTU2NDM0LC0uMjA0MDI1OSwxLjA1NzIyNTJdKTtzdGF0aWMjbT1uZXcgRmxvYXQzMkFycmF5KFsxLDEsMV0pO3N0YXRpYyNwPW5ldyBGbG9hdDMyQXJyYXkoMyk7c3RhdGljI2Q9bmV3IEZsb2F0MzJBcnJheSgzKTtzdGF0aWMjZz1uZXcgRmxvYXQzMkFycmF5KDMpO3N0YXRpYyNiPSgyNC8xMTYpKiozLzg7Y29uc3RydWN0b3IoZSx0LGEsbil7c3VwZXIoIkNhbFJHQiIsMyk7aWYoIWUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgQ2FsUkdCIik7Y29uc3RbcyxyLGldPXRoaXMud2hpdGVQb2ludD1lLFtvLGwsZl09dGhpcy5ibGFja1BvaW50PXR8fG5ldyBGbG9hdDMyQXJyYXkoMyk7W3RoaXMuR1IsdGhpcy5HRyx0aGlzLkdCXT1hfHxuZXcgRmxvYXQzMkFycmF5KFsxLDEsMV0pO1t0aGlzLk1YQSx0aGlzLk1ZQSx0aGlzLk1aQSx0aGlzLk1YQix0aGlzLk1ZQix0aGlzLk1aQix0aGlzLk1YQyx0aGlzLk1ZQyx0aGlzLk1aQ109bnx8bmV3IEZsb2F0MzJBcnJheShbMSwwLDAsMCwxLDAsMCwwLDFdKTtpZihzPDB8fGk8MHx8MSE9PXIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cyBmb3IgJHt0aGlzLm5hbWV9LCBubyBmYWxsYmFjayBhdmFpbGFibGVgKTtpZihvPDB8fGw8MHx8ZjwwKXtpbmZvKGBJbnZhbGlkIEJsYWNrUG9pbnQgZm9yICR7dGhpcy5uYW1lfSBbJHtvfSwgJHtsfSwgJHtmfV0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuYmxhY2tQb2ludD1uZXcgRmxvYXQzMkFycmF5KDMpfWlmKHRoaXMuR1I8MHx8dGhpcy5HRzwwfHx0aGlzLkdCPDApe2luZm8oYEludmFsaWQgR2FtbWEgWyR7dGhpcy5HUn0sICR7dGhpcy5HR30sICR7dGhpcy5HQn1dIGZvciAke3RoaXMubmFtZX0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuR1I9dGhpcy5HRz10aGlzLkdCPTF9fSN3KGUsdCxhKXthWzBdPWVbMF0qdFswXStlWzFdKnRbMV0rZVsyXSp0WzJdO2FbMV09ZVszXSp0WzBdK2VbNF0qdFsxXStlWzVdKnRbMl07YVsyXT1lWzZdKnRbMF0rZVs3XSp0WzFdK2VbOF0qdFsyXX0jaihlLHQsYSl7YVswXT0xKnRbMF0vZVswXTthWzFdPTEqdFsxXS9lWzFdO2FbMl09MSp0WzJdL2VbMl19I2soZSx0LGEpe2FbMF09Ljk1MDQ3KnRbMF0vZVswXTthWzFdPTEqdFsxXS9lWzFdO2FbMl09MS4wODg4Myp0WzJdL2VbMl19I3koZSl7cmV0dXJuIGU8PS4wMDMxMzA4P01hdGhDbGFtcCgxMi45MiplLDAsMSk6ZT49Ljk5NTU0NTI1PzE6TWF0aENsYW1wKDEuMDU1KmUqKigxLzIuNCktLjA1NSwwLDEpfSNxKGUpe3JldHVybiBlPDA/LXRoaXMuI3EoLWUpOmU+OD8oKGUrMTYpLzExNikqKjM6ZSpDYWxSR0JDUy4jYn0jdihlLHQsYSl7aWYoMD09PWVbMF0mJjA9PT1lWzFdJiYwPT09ZVsyXSl7YVswXT10WzBdO2FbMV09dFsxXTthWzJdPXRbMl07cmV0dXJufWNvbnN0IG49dGhpcy4jcSgwKSxzPSgxLW4pLygxLXRoaXMuI3EoZVswXSkpLHI9MS1zLGk9KDEtbikvKDEtdGhpcy4jcShlWzFdKSksbz0xLWksbD0oMS1uKS8oMS10aGlzLiNxKGVbMl0pKSxmPTEtbDthWzBdPXRbMF0qcytyO2FbMV09dFsxXSppK287YVsyXT10WzJdKmwrZn0jUyhlLHQsYSl7aWYoMT09PWVbMF0mJjE9PT1lWzJdKXthWzBdPXRbMF07YVsxXT10WzFdO2FbMl09dFsyXTtyZXR1cm59Y29uc3Qgbj1hO3RoaXMuI3coQ2FsUkdCQ1MuI2MsdCxuKTtjb25zdCBzPUNhbFJHQkNTLiNwO3RoaXMuI2ooZSxuLHMpO3RoaXMuI3coQ2FsUkdCQ1MuI2gscyxhKX0jQShlLHQsYSl7Y29uc3Qgbj1hO3RoaXMuI3coQ2FsUkdCQ1MuI2MsdCxuKTtjb25zdCBzPUNhbFJHQkNTLiNwO3RoaXMuI2soZSxuLHMpO3RoaXMuI3coQ2FsUkdCQ1MuI2gscyxhKX0jZihlLHQsYSxuLHMpe2NvbnN0IHI9TWF0aENsYW1wKGVbdF0qcywwLDEpLGk9TWF0aENsYW1wKGVbdCsxXSpzLDAsMSksbz1NYXRoQ2xhbXAoZVt0KzJdKnMsMCwxKSxsPTE9PT1yPzE6cioqdGhpcy5HUixmPTE9PT1pPzE6aSoqdGhpcy5HRyxjPTE9PT1vPzE6byoqdGhpcy5HQixoPXRoaXMuTVhBKmwrdGhpcy5NWEIqZit0aGlzLk1YQypjLHU9dGhpcy5NWUEqbCt0aGlzLk1ZQipmK3RoaXMuTVlDKmMsbT10aGlzLk1aQSpsK3RoaXMuTVpCKmYrdGhpcy5NWkMqYyxwPUNhbFJHQkNTLiNkO3BbMF09aDtwWzFdPXU7cFsyXT1tO2NvbnN0IGQ9Q2FsUkdCQ1MuI2c7dGhpcy4jUyh0aGlzLndoaXRlUG9pbnQscCxkKTtjb25zdCBnPUNhbFJHQkNTLiNkO3RoaXMuI3YodGhpcy5ibGFja1BvaW50LGQsZyk7Y29uc3QgYj1DYWxSR0JDUy4jZzt0aGlzLiNBKENhbFJHQkNTLiNtLGcsYik7Y29uc3Qgdz1DYWxSR0JDUy4jZDt0aGlzLiN3KENhbFJHQkNTLiN1LGIsdyk7YVtuXT0yNTUqdGhpcy4jeSh3WzBdKTthW24rMV09MjU1KnRoaXMuI3kod1sxXSk7YVtuKzJdPTI1NSp0aGlzLiN5KHdbMl0pfWdldFJnYkl0ZW0oZSx0LGEsbil7dGhpcy4jZihlLHQsYSxuLDEpfWdldFJnYkJ1ZmZlcihlLHQsYSxuLHMscixpKXtjb25zdCBvPTEvKCgxPDxyKS0xKTtmb3IobGV0IHI9MDtyPGE7KytyKXt0aGlzLiNmKGUsdCxuLHMsbyk7dCs9MztzKz0zK2l9fX1jbGFzcyBMYWJDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKCJMYWIiLDMpO2lmKCFlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiV2hpdGVQb2ludCBtaXNzaW5nIC0gcmVxdWlyZWQgZm9yIGNvbG9yIHNwYWNlIExhYiIpO1t0aGlzLlhXLHRoaXMuWVcsdGhpcy5aV109ZTtbdGhpcy5hbWluLHRoaXMuYW1heCx0aGlzLmJtaW4sdGhpcy5ibWF4XT1hfHxbLTEwMCwxMDAsLTEwMCwxMDBdO1t0aGlzLlhCLHRoaXMuWUIsdGhpcy5aQl09dHx8WzAsMCwwXTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cywgbm8gZmFsbGJhY2sgYXZhaWxhYmxlIik7aWYodGhpcy5YQjwwfHx0aGlzLllCPDB8fHRoaXMuWkI8MCl7aW5mbygiSW52YWxpZCBCbGFja1BvaW50LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdCIpO3RoaXMuWEI9dGhpcy5ZQj10aGlzLlpCPTB9aWYodGhpcy5hbWluPnRoaXMuYW1heHx8dGhpcy5ibWluPnRoaXMuYm1heCl7aW5mbygiSW52YWxpZCBSYW5nZSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHRzIik7dGhpcy5hbWluPS0xMDA7dGhpcy5hbWF4PTEwMDt0aGlzLmJtaW49LTEwMDt0aGlzLmJtYXg9MTAwfX0jeChlKXtyZXR1cm4gZT49Ni8yOT9lKiozOjEwOC84NDEqKGUtNC8yOSl9I0MoZSx0LGEsbil7cmV0dXJuIGErZSoobi1hKS90fSNmKGUsdCxhLG4scyl7bGV0IHI9ZVt0XSxpPWVbdCsxXSxvPWVbdCsyXTtpZighMSE9PWEpe3I9dGhpcy4jQyhyLGEsMCwxMDApO2k9dGhpcy4jQyhpLGEsdGhpcy5hbWluLHRoaXMuYW1heCk7bz10aGlzLiNDKG8sYSx0aGlzLmJtaW4sdGhpcy5ibWF4KX1pPnRoaXMuYW1heD9pPXRoaXMuYW1heDppPHRoaXMuYW1pbiYmKGk9dGhpcy5hbWluKTtvPnRoaXMuYm1heD9vPXRoaXMuYm1heDpvPHRoaXMuYm1pbiYmKG89dGhpcy5ibWluKTtjb25zdCBsPShyKzE2KS8xMTYsZj1sK2kvNTAwLGM9bC1vLzIwMCxoPXRoaXMuWFcqdGhpcy4jeChmKSx1PXRoaXMuWVcqdGhpcy4jeChsKSxtPXRoaXMuWlcqdGhpcy4jeChjKTtsZXQgcCxkLGc7aWYodGhpcy5aVzwxKXtwPTMuMTMzOSpoKy0xLjYxNyp1Ky0uNDkwNiptO2Q9LS45Nzg1KmgrMS45MTYqdSsuMDMzMyptO2c9LjA3MipoKy0uMjI5KnUrMS40MDU3Km19ZWxzZXtwPTMuMjQwNipoKy0xLjUzNzIqdSstLjQ5ODYqbTtkPS0uOTY4OSpoKzEuODc1OCp1Ky4wNDE1Km07Zz0uMDU1NypoKy0uMjA0KnUrMS4wNTcqbX1uW3NdPTI1NSpNYXRoLnNxcnQocCk7bltzKzFdPTI1NSpNYXRoLnNxcnQoZCk7bltzKzJdPTI1NSpNYXRoLnNxcnQoZyl9Z2V0UmdiSXRlbShlLHQsYSxuKXt0aGlzLiNmKGUsdCwhMSxhLG4pfWdldFJnYkJ1ZmZlcihlLHQsYSxuLHMscixpKXtjb25zdCBvPSgxPDxyKS0xO2ZvcihsZXQgcj0wO3I8YTtyKyspe3RoaXMuI2YoZSx0LG8sbixzKTt0Kz0zO3MrPTMraX19aXNEZWZhdWx0RGVjb2RlKGUsdCl7cmV0dXJuITB9Z2V0IHVzZXNaZXJvVG9PbmVSYW5nZSgpe3JldHVybiBzaGFkb3codGhpcywidXNlc1plcm9Ub09uZVJhbmdlIiwhMSl9fWZ1bmN0aW9uIGZldGNoU3luYyhlKXtjb25zdCB0PW5ldyBYTUxIdHRwUmVxdWVzdDt0Lm9wZW4oIkdFVCIsZSwhMSk7dC5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIjt0LnNlbmQobnVsbCk7cmV0dXJuIHQucmVzcG9uc2V9Y2xhc3MgSWNjQ29sb3JTcGFjZSBleHRlbmRzIENvbG9yU3BhY2V7I0k7I0Y7c3RhdGljI1Q9ITA7c3RhdGljI1I9bnVsbDtzdGF0aWMjTz1udWxsO2NvbnN0cnVjdG9yKGUsdCxhKXtpZighSWNjQ29sb3JTcGFjZS5pc1VzYWJsZSl0aHJvdyBuZXcgRXJyb3IoIk5vIElDQyBjb2xvciBzcGFjZSBzdXBwb3J0Iik7c3VwZXIodCxhKTtsZXQgbjtzd2l0Y2goYSl7Y2FzZSAxOm49dmEuR3JheTg7dGhpcy4jRj0oZSx0KT0+ZnVuY3Rpb24gcWNtc19jb252ZXJ0X29uZShlLHQpe3JldHVybiBSYS5xY21zX2NvbnZlcnRfb25lKGUsdCk+Pj4wfSh0aGlzLiNJLDI1NSplW3RdKTticmVhaztjYXNlIDM6bj12YS5SR0I4O3RoaXMuI0Y9KGUsdCk9PmZ1bmN0aW9uIHFjbXNfY29udmVydF90aHJlZShlLHQsYSxuKXtyZXR1cm4gUmEucWNtc19jb252ZXJ0X3RocmVlKGUsdCxhLG4pPj4+MH0odGhpcy4jSSwyNTUqZVt0XSwyNTUqZVt0KzFdLDI1NSplW3QrMl0pO2JyZWFrO2Nhc2UgNDpuPXZhLkNNWUs7dGhpcy4jRj0oZSx0KT0+ZnVuY3Rpb24gcWNtc19jb252ZXJ0X2ZvdXIoZSx0LGEsbixzKXtyZXR1cm4gUmEucWNtc19jb252ZXJ0X2ZvdXIoZSx0LGEsbixzKT4+PjB9KHRoaXMuI0ksMjU1KmVbdF0sMjU1KmVbdCsxXSwyNTUqZVt0KzJdLDI1NSplW3QrM10pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBudW1iZXIgb2YgY29tcG9uZW50czogJHthfWApfXRoaXMuI0k9ZnVuY3Rpb24gcWNtc190cmFuc2Zvcm1lcl9mcm9tX21lbW9yeShlLHQsYSl7Y29uc3Qgbj1wYXNzQXJyYXk4VG9XYXNtMChlLFJhLl9fd2JpbmRnZW5fbWFsbG9jKSxzPU9hO3JldHVybiBSYS5xY21zX3RyYW5zZm9ybWVyX2Zyb21fbWVtb3J5KG4scyx0LGEpPj4+MH0oZSxuLFNhLlBlcmNlcHR1YWwpO2lmKCF0aGlzLiNJKXRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSBJQ0MgY29sb3Igc3BhY2UiKTtJY2NDb2xvclNwYWNlLiNPfHw9bmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGU9PnshZnVuY3Rpb24gcWNtc19kcm9wX3RyYW5zZm9ybWVyKGUpe1JhLnFjbXNfZHJvcF90cmFuc2Zvcm1lcihlKX0oZSl9KTtJY2NDb2xvclNwYWNlLiNPLnJlZ2lzdGVyKHRoaXMsdGhpcy4jSSl9Z2V0UmdiSGV4KGUsdCl7Y29uc3QgYT10aGlzLiNGKGUsdCk7cmV0dXJuIFV0aWwubWFrZUhleENvbG9yKGE+PjE2LGE+PjgmMjU1LDI1NSZhKX1nZXRSZ2JJdGVtKGUsdCxhLG4pe2NvbnN0IHM9dGhpcy4jRihlLHQpO2Fbbl09cz4+MTY7YVtuKzFdPXM+PjgmMjU1O2FbbisyXT0yNTUmc31nZXRSZ2JJdGVtcyhlLHQsYSxuLHMpe2NvbnN0e251bUNvbXBzOnJ9PXRoaXMsaT10KnIsbz1uZXcgVWludDhBcnJheShpKTtmb3IobGV0IHQ9MDt0PGk7dCsrKW9bdF09MjU1KmVbdF07UUNNUy5fZGVzdEJ1ZmZlcj1hO1FDTVMuX2Rlc3RPZmZzZXQ9bjtRQ01TLl9rZWVwQWxwaGE9MT09PXM7cWNtc19jb252ZXJ0X2FycmF5KHRoaXMuI0ksbywxPT09cyk7UUNNUy5fZGVzdEJ1ZmZlcj1udWxsfWdldFJnYkJ1ZmZlcihlLHQsYSxuLHMscixpKXtlPWUuc3ViYXJyYXkodCx0K2EqdGhpcy5udW1Db21wcyk7aWYoOCE9PXIpe2NvbnN0IHQ9MjU1LygoMTw8ciktMSk7Zm9yKGxldCBhPTAsbj1lLmxlbmd0aDthPG47YSsrKWVbYV0qPXR9UUNNUy5fZGVzdEJ1ZmZlcj1uO1FDTVMuX2Rlc3RPZmZzZXQ9cztRQ01TLl9rZWVwQWxwaGE9MT09PWkmJm4uYnVmZmVyIT09ZS5idWZmZXI7cWNtc19jb252ZXJ0X2FycmF5KHRoaXMuI0ksZSwxPT09aSk7UUNNUy5fZGVzdEJ1ZmZlcj1udWxsfXN0YXRpYyBzZXRPcHRpb25zKHt1c2VXYXNtOmUsdXNlV29ya2VyRmV0Y2g6dCx3YXNtVXJsOmF9KXtpZih0KXt0aGlzLiNUPWU7dGhpcy4jUj1hfWVsc2UgdGhpcy4jVD0hMX1zdGF0aWMgZ2V0IGlzVXNhYmxlKCl7bGV0IGU9ITE7aWYodGhpcy4jVClpZih0aGlzLiNSKXRyeXt0aGlzLl9tb2R1bGU9ZnVuY3Rpb24gaW5pdFN5bmMoZSl7aWYodm9pZCAwIT09UmEpcmV0dXJuIFJhO3ZvaWQgMCE9PWUmJihPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk9PT1PYmplY3QucHJvdG90eXBlPyh7bW9kdWxlOmV9PWUpOmNvbnNvbGUud2FybigidXNpbmcgZGVwcmVjYXRlZCBwYXJhbWV0ZXJzIGZvciBgaW5pdFN5bmMoKWA7IHBhc3MgYSBzaW5nbGUgb2JqZWN0IGluc3RlYWQiKSk7Y29uc3QgdD1fX3diZ19nZXRfaW1wb3J0cygpO2UgaW5zdGFuY2VvZiBXZWJBc3NlbWJseS5Nb2R1bGV8fChlPW5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoZSkpO3JldHVybiBfX3diZ19maW5hbGl6ZV9pbml0KG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShlLHQpLGUpfSh7bW9kdWxlOmZldGNoU3luYyhgJHt0aGlzLiNSfXFjbXNfYmcud2FzbWApfSk7ZT0hIXRoaXMuX21vZHVsZTtRQ01TLl9tZW1vcnk9dGhpcy5fbW9kdWxlLm1lbW9yeX1jYXRjaChlKXt3YXJuKGBJQ0NCYXNlZCBjb2xvciBzcGFjZTogIiR7ZX0iLmApfWVsc2Ugd2FybigiTm8gSUNDIGNvbG9yIHNwYWNlIHN1cHBvcnQgZHVlIHRvIG1pc3NpbmcgYHdhc21VcmxgIEFQSSBvcHRpb24iKTtyZXR1cm4gc2hhZG93KHRoaXMsImlzVXNhYmxlIixlKX19Y2xhc3MgQ215a0lDQ0Jhc2VkQ1MgZXh0ZW5kcyBJY2NDb2xvclNwYWNle3N0YXRpYyNCO2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IFVpbnQ4QXJyYXkoZmV0Y2hTeW5jKGAke0NteWtJQ0NCYXNlZENTLiNCfUNHQVRTMDAxQ29tcGF0LXYyLW1pY3JvLmljY2ApKSwiRGV2aWNlQ01ZSyIsNCl9c3RhdGljIHNldE9wdGlvbnMoe2ljY1VybDplfSl7dGhpcy4jQj1lfXN0YXRpYyBnZXQgaXNVc2FibGUoKXtsZXQgZT0hMTtJY2NDb2xvclNwYWNlLmlzVXNhYmxlJiYodGhpcy4jQj9lPSEwOndhcm4oIk5vIENNWUsgSUNDIHByb2ZpbGUgc3VwcG9ydCBkdWUgdG8gbWlzc2luZyBgaWNjVXJsYCBBUEkgb3B0aW9uIikpO3JldHVybiBzaGFkb3codGhpcywiaXNVc2FibGUiLGUpfX1jbGFzcyBTdHJlYW0gZXh0ZW5kcyBCYXNlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxhLG4pe3N1cGVyKCk7dGhpcy5ieXRlcz1lIGluc3RhbmNlb2YgVWludDhBcnJheT9lOm5ldyBVaW50OEFycmF5KGUpO3RoaXMuc3RhcnQ9dHx8MDt0aGlzLnBvcz10aGlzLnN0YXJ0O3RoaXMuZW5kPXQrYXx8dGhpcy5ieXRlcy5sZW5ndGg7dGhpcy5kaWN0PW59Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmVuZC10aGlzLnN0YXJ0fWdldCBpc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzLmxlbmd0aH1nZXRCeXRlKCl7cmV0dXJuIHRoaXMucG9zPj10aGlzLmVuZD8tMTp0aGlzLmJ5dGVzW3RoaXMucG9zKytdfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5wb3MsYT1lP01hdGgubWluKHQrZSx0aGlzLmVuZCk6dGhpcy5lbmQ7dGhpcy5wb3M9YTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheSh0LGEpfWdldEJ5dGVSYW5nZShlLHQpe2U8MCYmKGU9MCk7dD50aGlzLmVuZCYmKHQ9dGhpcy5lbmQpO3JldHVybiB0aGlzLmJ5dGVzLnN1YmFycmF5KGUsdCl9cmVzZXQoKXt0aGlzLnBvcz10aGlzLnN0YXJ0fW1vdmVTdGFydCgpe3RoaXMuc3RhcnQ9dGhpcy5wb3N9bWFrZVN1YlN0cmVhbShlLHQsYT1udWxsKXtyZXR1cm4gbmV3IFN0cmVhbSh0aGlzLmJ5dGVzLmJ1ZmZlcixlLHQsYSl9Y2xvbmUoKXtyZXR1cm4gbmV3IFN0cmVhbSh0aGlzLmJ5dGVzLmJ1ZmZlcix0aGlzLnN0YXJ0LHRoaXMubGVuZ3RoLHRoaXMuZGljdD8uY2xvbmUoKSl9fWNsYXNzIFN0cmluZ1N0cmVhbSBleHRlbmRzIFN0cmVhbXtjb25zdHJ1Y3RvcihlLHQ9bnVsbCl7c3VwZXIoc3RyaW5nVG9CeXRlcyhlKSxOYU4sTmFOLHQpfX1jbGFzcyBOdWxsU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IFVpbnQ4QXJyYXkoMCkpfX1jbGFzcyBDaHVua2VkU3RyZWFtIGV4dGVuZHMgU3RyZWFte3Byb2dyZXNzaXZlRGF0YUxlbmd0aD0wO19sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz0tMTtfbG9hZGVkQ2h1bmtzPW5ldyBTZXQ7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKG5ldyBVaW50OEFycmF5KGUpLDAsZSxudWxsKTt0aGlzLmNodW5rU2l6ZT10O3RoaXMubnVtQ2h1bmtzPU1hdGguY2VpbChlL3QpO3RoaXMubWFuYWdlcj1hfWdldE1pc3NpbmdDaHVua3MoKXtjb25zdCBlPVtdO2ZvcihsZXQgdD0wLGE9dGhpcy5udW1DaHVua3M7dDxhOysrdCl0aGlzLl9sb2FkZWRDaHVua3MuaGFzKHQpfHxlLnB1c2godCk7cmV0dXJuIGV9Z2V0IG51bUNodW5rc0xvYWRlZCgpe3JldHVybiB0aGlzLl9sb2FkZWRDaHVua3Muc2l6ZX1nZXQgaXNEYXRhTG9hZGVkKCl7cmV0dXJuIHRoaXMubnVtQ2h1bmtzTG9hZGVkPT09dGhpcy5udW1DaHVua3N9b25SZWNlaXZlRGF0YShlLHQpe2NvbnN0IGE9dGhpcy5jaHVua1NpemU7aWYoZSVhIT09MCl0aHJvdyBuZXcgRXJyb3IoYEJhZCBiZWdpbiBvZmZzZXQ6ICR7ZX1gKTtjb25zdCBuPWUrdC5ieXRlTGVuZ3RoO2lmKG4lYSE9PTAmJm4hPT10aGlzLmJ5dGVzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYEJhZCBlbmQgb2Zmc2V0OiAke259YCk7dGhpcy5ieXRlcy5zZXQobmV3IFVpbnQ4QXJyYXkodCksZSk7Y29uc3Qgcz1NYXRoLmZsb29yKGUvYSkscj1NYXRoLmZsb29yKChuLTEpL2EpKzE7Zm9yKGxldCBlPXM7ZTxyOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuYWRkKGUpfW9uUmVjZWl2ZVByb2dyZXNzaXZlRGF0YShlKXtsZXQgdD10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aDtjb25zdCBhPU1hdGguZmxvb3IodC90aGlzLmNodW5rU2l6ZSk7dGhpcy5ieXRlcy5zZXQobmV3IFVpbnQ4QXJyYXkoZSksdCk7dCs9ZS5ieXRlTGVuZ3RoO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPXQ7Y29uc3Qgbj10Pj10aGlzLmVuZD90aGlzLm51bUNodW5rczpNYXRoLmZsb29yKHQvdGhpcy5jaHVua1NpemUpO2ZvcihsZXQgZT1hO2U8bjsrK2UpdGhpcy5fbG9hZGVkQ2h1bmtzLmFkZChlKX1lbnN1cmVCeXRlKGUpe2lmKGU8dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgpcmV0dXJuO2NvbnN0IHQ9TWF0aC5mbG9vcihlL3RoaXMuY2h1bmtTaXplKTtpZighKHQ+dGhpcy5udW1DaHVua3N8fHQ9PT10aGlzLl9sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaykpe2lmKCF0aGlzLl9sb2FkZWRDaHVua3MuaGFzKHQpKXRocm93IG5ldyBNaXNzaW5nRGF0YUV4Y2VwdGlvbihlLGUrMSk7dGhpcy5fbGFzdFN1Y2Nlc3NmdWxFbnN1cmVCeXRlQ2h1bms9dH19ZW5zdXJlUmFuZ2UoZSx0KXtpZihlPj10fHx0PD10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgYT1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKGE+dGhpcy5udW1DaHVua3MpcmV0dXJuO2NvbnN0IG49TWF0aC5taW4oTWF0aC5mbG9vcigodC0xKS90aGlzLmNodW5rU2l6ZSkrMSx0aGlzLm51bUNodW5rcyk7Zm9yKGxldCBzPWE7czxuOysrcylpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhzKSl0aHJvdyBuZXcgTWlzc2luZ0RhdGFFeGNlcHRpb24oZSx0KX1uZXh0RW1wdHlDaHVuayhlKXtjb25zdCB0PXRoaXMubnVtQ2h1bmtzO2ZvcihsZXQgYT0wO2E8dDsrK2Epe2NvbnN0IG49KGUrYSkldDtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhuKSlyZXR1cm4gbn1yZXR1cm4gbnVsbH1oYXNDaHVuayhlKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhlKX1nZXRCeXRlKCl7Y29uc3QgZT10aGlzLnBvcztpZihlPj10aGlzLmVuZClyZXR1cm4tMTtlPj10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVCeXRlKGUpO3JldHVybiB0aGlzLmJ5dGVzW3RoaXMucG9zKytdfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5wb3MsYT1lP01hdGgubWluKHQrZSx0aGlzLmVuZCk6dGhpcy5lbmQ7YT50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZSh0LGEpO3RoaXMucG9zPWE7cmV0dXJuIHRoaXMuYnl0ZXMuc3ViYXJyYXkodCxhKX1nZXRCeXRlUmFuZ2UoZSx0KXtlPDAmJihlPTApO3Q+dGhpcy5lbmQmJih0PXRoaXMuZW5kKTt0PnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGUsdCk7cmV0dXJuIHRoaXMuYnl0ZXMuc3ViYXJyYXkoZSx0KX1tYWtlU3ViU3RyZWFtKGUsdCxhPW51bGwpe3Q/ZSt0PnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGUsZSt0KTplPj10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVCeXRlKGUpO2Z1bmN0aW9uIENodW5rZWRTdHJlYW1TdWJzdHJlYW0oKXt9Q2h1bmtlZFN0cmVhbVN1YnN0cmVhbS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0aGlzKTtDaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZS5nZXRNaXNzaW5nQ2h1bmtzPWZ1bmN0aW9uKCl7Y29uc3QgZT10aGlzLmNodW5rU2l6ZSx0PU1hdGguZmxvb3IodGhpcy5zdGFydC9lKSxhPU1hdGguZmxvb3IoKHRoaXMuZW5kLTEpL2UpKzEsbj1bXTtmb3IobGV0IGU9dDtlPGE7KytlKXRoaXMuX2xvYWRlZENodW5rcy5oYXMoZSl8fG4ucHVzaChlKTtyZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KENodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlLCJpc0RhdGFMb2FkZWQiLHtnZXQoKXtyZXR1cm4gdGhpcy5udW1DaHVua3NMb2FkZWQ9PT10aGlzLm51bUNodW5rc3x8MD09PXRoaXMuZ2V0TWlzc2luZ0NodW5rcygpLmxlbmd0aH0sY29uZmlndXJhYmxlOiEwfSk7Y29uc3Qgbj1uZXcgQ2h1bmtlZFN0cmVhbVN1YnN0cmVhbTtuLnBvcz1uLnN0YXJ0PWU7bi5lbmQ9ZSt0fHx0aGlzLmVuZDtuLmRpY3Q9YTtyZXR1cm4gbn1nZXRCYXNlU3RyZWFtcygpe3JldHVyblt0aGlzXX19Y2xhc3MgQ2h1bmtlZFN0cmVhbU1hbmFnZXJ7I0Q9ITE7I0g9MDsjTT1uZXcgTWFwOyNOPVByb21pc2Uud2l0aFJlc29sdmVycygpO19wcm9taXNlc0J5UmVxdWVzdD1uZXcgTWFwO19yZXF1ZXN0c0J5Q2h1bms9bmV3IE1hcDtjb25zdHJ1Y3RvcihlLHQpe3RoaXMubGVuZ3RoPXQubGVuZ3RoO3RoaXMuY2h1bmtTaXplPXQucmFuZ2VDaHVua1NpemU7dGhpcy5zdHJlYW09bmV3IENodW5rZWRTdHJlYW0odGhpcy5sZW5ndGgsdGhpcy5jaHVua1NpemUsdGhpcyk7dGhpcy5wZGZTdHJlYW09ZTt0aGlzLmRpc2FibGVBdXRvRmV0Y2g9dC5kaXNhYmxlQXV0b0ZldGNoO3RoaXMubXNnSGFuZGxlcj10Lm1zZ0hhbmRsZXJ9YXN5bmMgc2VuZFJlcXVlc3QoZSx0KXtjb25zdCBhPXRoaXMucGRmU3RyZWFtLmdldFJhbmdlUmVhZGVyKGUsdCk7bGV0IG49W107Zm9yKDs7KXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgYS5yZWFkKCk7aWYodGhpcy4jRCl7bj1udWxsO3JldHVybn1pZih0KWJyZWFrO24ucHVzaChlKX1pZigwPT09bi5sZW5ndGgmJnRoaXMuZGlzYWJsZUF1dG9GZXRjaClyZXR1cm47Y29uc3Qgcz1hcnJheUJ1ZmZlcnNUb0J5dGVzKG4pO249bnVsbDt0aGlzLm9uUmVjZWl2ZURhdGEoe2NodW5rOnMuYnVmZmVyLGJlZ2luOmV9KX1yZXF1ZXN0QWxsQ2h1bmtzKGU9ITEpe2lmKCFlKXtjb25zdCBlPXRoaXMuc3RyZWFtLmdldE1pc3NpbmdDaHVua3MoKTt0aGlzLl9yZXF1ZXN0Q2h1bmtzKGUpfXJldHVybiB0aGlzLiNOLnByb21pc2V9X3JlcXVlc3RDaHVua3MoZSl7Y29uc3QgdD1uZXcgU2V0O2Zvcihjb25zdCBhIG9mIGUpdGhpcy5zdHJlYW0uaGFzQ2h1bmsoYSl8fHQuYWRkKGEpO2lmKDA9PT10LnNpemUpcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGE9dGhpcy4jSCsrO3RoaXMuI00uc2V0KGEsdCk7Y29uc3Qgbj1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5zZXQoYSxuKTtjb25zdCBzPVtdO2Zvcihjb25zdCBlIG9mIHQpe3RoaXMuX3JlcXVlc3RzQnlDaHVuay5nZXRPckluc2VydENvbXB1dGVkKGUsKCk9PntzLnB1c2goZSk7cmV0dXJuW119KS5wdXNoKGEpfWlmKHMubGVuZ3RoPjApe2NvbnN0IGU9dGhpcy5ncm91cENodW5rcyhzKTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPXQuYmVnaW5DaHVuayp0aGlzLmNodW5rU2l6ZSxhPU1hdGgubWluKHQuZW5kQ2h1bmsqdGhpcy5jaHVua1NpemUsdGhpcy5sZW5ndGgpO3RoaXMuc2VuZFJlcXVlc3QoZSxhKS5jYXRjaChuLnJlamVjdCl9fXJldHVybiBuLnByb21pc2UuY2F0Y2goZT0+e2lmKCF0aGlzLiNEKXRocm93IGV9KX1nZXRTdHJlYW0oKXtyZXR1cm4gdGhpcy5zdHJlYW19cmVxdWVzdFJhbmdlKGUsdCl7dD1NYXRoLm1pbih0LHRoaXMubGVuZ3RoKTtjb25zdCBhPXRoaXMuZ2V0QmVnaW5DaHVuayhlKSxuPXRoaXMuZ2V0RW5kQ2h1bmsodCkscz1bXTtmb3IobGV0IGU9YTtlPG47KytlKXMucHVzaChlKTtyZXR1cm4gdGhpcy5fcmVxdWVzdENodW5rcyhzKX1yZXF1ZXN0UmFuZ2VzKGU9W10pe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT10aGlzLmdldEJlZ2luQ2h1bmsoYS5iZWdpbiksbj10aGlzLmdldEVuZENodW5rKGEuZW5kKTtmb3IobGV0IGE9ZTthPG47KythKXQuaW5jbHVkZXMoYSl8fHQucHVzaChhKX10LnNvcnQoKGUsdCk9PmUtdCk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3ModCl9Z3JvdXBDaHVua3MoZSl7Y29uc3QgdD1bXTtsZXQgYT0tMSxuPS0xO2ZvcihsZXQgcz0wLHI9ZS5sZW5ndGg7czxyOysrcyl7Y29uc3Qgcj1lW3NdO2E8MCYmKGE9cik7aWYobj49MCYmbisxIT09cil7dC5wdXNoKHtiZWdpbkNodW5rOmEsZW5kQ2h1bms6bisxfSk7YT1yfXMrMT09PWUubGVuZ3RoJiZ0LnB1c2goe2JlZ2luQ2h1bms6YSxlbmRDaHVuazpyKzF9KTtuPXJ9cmV0dXJuIHR9b25SZWNlaXZlRGF0YShlKXtjb25zdHtjaHVua1NpemU6dCxsZW5ndGg6YSxzdHJlYW06bn09dGhpcyxzPWUuY2h1bmsscj12b2lkIDA9PT1lLmJlZ2luLGk9cj9uLnByb2dyZXNzaXZlRGF0YUxlbmd0aDplLmJlZ2luLG89aStzLmJ5dGVMZW5ndGgsbD1NYXRoLmZsb29yKGkvdCksZj1vPGE/TWF0aC5mbG9vcihvL3QpOk1hdGguY2VpbChvL3QpO3I/bi5vblJlY2VpdmVQcm9ncmVzc2l2ZURhdGEocyk6bi5vblJlY2VpdmVEYXRhKGkscyk7bi5pc0RhdGFMb2FkZWQmJnRoaXMuI04ucmVzb2x2ZShuKTtjb25zdCBjPVtdO2ZvcihsZXQgZT1sO2U8ZjsrK2Upe2NvbnN0IHQ9dGhpcy5fcmVxdWVzdHNCeUNodW5rLmdldChlKTtpZih0KXt0aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZGVsZXRlKGUpO2Zvcihjb25zdCBhIG9mIHQpe2NvbnN0IHQ9dGhpcy4jTS5nZXQoYSk7dC5oYXMoZSkmJnQuZGVsZXRlKGUpO3Quc2l6ZT4wfHxjLnB1c2goYSl9fX1pZighdGhpcy5kaXNhYmxlQXV0b0ZldGNoJiYwPT09dGhpcy5fcmVxdWVzdHNCeUNodW5rLnNpemUpe2xldCBlO2lmKDE9PT1uLm51bUNodW5rc0xvYWRlZCl7Y29uc3QgdD1uLm51bUNodW5rcy0xO24uaGFzQ2h1bmsodCl8fChlPXQpfWVsc2UgZT1uLm5leHRFbXB0eUNodW5rKGYpO051bWJlci5pc0ludGVnZXIoZSkmJnRoaXMuX3JlcXVlc3RDaHVua3MoW2VdKX1mb3IoY29uc3QgZSBvZiBjKXtjb25zdCB0PXRoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LmdldChlKTt0aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5kZWxldGUoZSk7dC5yZXNvbHZlKCl9dGhpcy5tc2dIYW5kbGVyLnNlbmQoIkRvY1Byb2dyZXNzIix7bG9hZGVkOk1hdGhDbGFtcChuLm51bUNodW5rc0xvYWRlZCp0LG4ucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoLGEpLHRvdGFsOmF9KX1nZXRCZWdpbkNodW5rKGUpe3JldHVybiBNYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpfWdldEVuZENodW5rKGUpe3JldHVybiBNYXRoLmZsb29yKChlLTEpL3RoaXMuY2h1bmtTaXplKSsxfWFib3J0KGUpe3RoaXMuI0Q9ITA7dGhpcy5wZGZTdHJlYW0/LmNhbmNlbEFsbFJlcXVlc3RzKGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LnZhbHVlcygpKXQucmVqZWN0KGUpO3RoaXMuI04ucmVqZWN0KGUpfX1mdW5jdGlvbiBjb252ZXJ0VG9SR0JBKGUpe3N3aXRjaChlLmtpbmQpe2Nhc2UgQzpyZXR1cm4gY29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoZSk7Y2FzZSBGOnJldHVybiBmdW5jdGlvbiBjb252ZXJ0UkdCVG9SR0JBKHtzcmM6ZSxzcmNQb3M6dD0wLGRlc3Q6YSxkZXN0UG9zOm49MCx3aWR0aDpzLGhlaWdodDpyfSl7bGV0IGk9MDtjb25zdCBvPXMqciozLGw9bz4+MixmPW5ldyBVaW50MzJBcnJheShlLmJ1ZmZlcix0LGwpLGM9RmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/NDI3ODE5MDA4MDoyNTU7aWYoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pe2Zvcig7aTxsLTI7aSs9MyxuKz00KXtjb25zdCBlPWZbaV0sdD1mW2krMV0scz1mW2krMl07YVtuXT1lfGM7YVtuKzFdPWU+Pj4yNHx0PDw4fGM7YVtuKzJdPXQ+Pj4xNnxzPDwxNnxjO2FbbiszXT1zPj4+OHxjfWZvcihsZXQgcz10KzQqaSxyPXQrbztzPHI7cys9MylhW24rK109ZVtzXXxlW3MrMV08PDh8ZVtzKzJdPDwxNnxjfWVsc2V7Zm9yKDtpPGwtMjtpKz0zLG4rPTQpe2NvbnN0IGU9ZltpXSx0PWZbaSsxXSxzPWZbaSsyXTthW25dPWV8YzthW24rMV09ZTw8MjR8dD4+Pjh8YzthW24rMl09dDw8MTZ8cz4+PjE2fGM7YVtuKzNdPXM8PDh8Y31mb3IobGV0IHM9dCs0Kmkscj10K287czxyO3MrPTMpYVtuKytdPWVbc108PDI0fGVbcysxXTw8MTZ8ZVtzKzJdPDw4fGN9cmV0dXJue3NyY1Bvczp0K28sZGVzdFBvczpufX0oZSl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gY29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoe3NyYzplLHNyY1Bvczp0PTAsZGVzdDphLHdpZHRoOm4saGVpZ2h0OnMsbm9uQmxhY2tDb2xvcjpyPTQyOTQ5NjcyOTUsaW52ZXJzZURlY29kZTppPSExfSl7Y29uc3Qgbz1GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NSxbbCxmXT1pP1tyLG9dOltvLHJdLGM9bj4+MyxoPTcmbix1PWxeZixtPWUubGVuZ3RoO2E9bmV3IFVpbnQzMkFycmF5KGEuYnVmZmVyKTtsZXQgcD0wO2ZvcihsZXQgbj0wO248czsrK24pe2Zvcihjb25zdCBuPXQrYzt0PG47Kyt0LHArPTgpe2NvbnN0IG49ZVt0XTthW3BdPWxeLShuPj43JjEpJnU7YVtwKzFdPWxeLShuPj42JjEpJnU7YVtwKzJdPWxeLShuPj41JjEpJnU7YVtwKzNdPWxeLShuPj40JjEpJnU7YVtwKzRdPWxeLShuPj4zJjEpJnU7YVtwKzVdPWxeLShuPj4yJjEpJnU7YVtwKzZdPWxeLShuPj4xJjEpJnU7YVtwKzddPWxeLSgxJm4pJnV9aWYoMD09PWgpY29udGludWU7Y29uc3Qgbj10PG0/ZVt0KytdOjI1NTtmb3IobGV0IGU9MDtlPGg7KytlLCsrcClhW3BdPWxeLShuPj43LWUmMSkmdX1yZXR1cm57c3JjUG9zOnQsZGVzdFBvczpwfX1jbGFzcyBJbWFnZVJlc2l6ZXJ7c3RhdGljI1A9MjA0ODtzdGF0aWMjRT1GZWF0dXJlVGVzdC5pc0ltYWdlRGVjb2RlclN1cHBvcnRlZDtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2ltZ0RhdGE9ZTt0aGlzLl9pc01hc2s9dH1zdGF0aWMgZ2V0IGNhblVzZUltYWdlRGVjb2Rlcigpe3JldHVybiBzaGFkb3codGhpcywiY2FuVXNlSW1hZ2VEZWNvZGVyIix0aGlzLiNFP0ltYWdlRGVjb2Rlci5pc1R5cGVTdXBwb3J0ZWQoImltYWdlL2JtcCIpOlByb21pc2UucmVzb2x2ZSghMSkpfXN0YXRpYyBuZWVkc1RvQmVSZXNpemVkKGUsdCl7aWYoZTw9dGhpcy4jUCYmdDw9dGhpcy4jUClyZXR1cm4hMTtjb25zdHtNQVhfRElNOmF9PXRoaXM7aWYoZT5hfHx0PmEpcmV0dXJuITA7Y29uc3Qgbj1lKnQ7aWYodGhpcy5faGFzTWF4QXJlYSlyZXR1cm4gbj50aGlzLk1BWF9BUkVBO2lmKG48dGhpcy4jUCoqMilyZXR1cm4hMTtpZih0aGlzLl9hcmVHb29kRGltcyhlLHQpKXt0aGlzLiNQPU1hdGgubWF4KHRoaXMuI1AsTWF0aC5mbG9vcihNYXRoLnNxcnQoZSp0KSkpO3JldHVybiExfXRoaXMuI1A9dGhpcy5fZ3Vlc3NNYXgodGhpcy4jUCxhLDEyOCwwKTtyZXR1cm4gbj4odGhpcy5NQVhfQVJFQT10aGlzLiNQKioyKX1zdGF0aWMgZ2V0UmVkdWNlUG93ZXIoZSx0LGE9MS8wKXtpZighTnVtYmVyLmlzSW50ZWdlcihlKXx8ZTw9MHx8IU51bWJlci5pc0ludGVnZXIodCl8fHQ8PTApcmV0dXJuIDA7Y29uc3Qgbj1lKnQ7aWYoIXRoaXMubmVlZHNUb0JlUmVzaXplZChlLHQpKXJldHVybiBuPmE/TWF0aC5jZWlsKE1hdGgubG9nMihuL2EpKTowO2NvbnN0e01BWF9ESU06cyxNQVhfQVJFQTpyfT10aGlzLGk9TWF0aC5tYXgoZS9zLHQvcyxNYXRoLnNxcnQobi9NYXRoLm1pbihhLHIpKSk7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5jZWlsKE1hdGgubG9nMihpKSkpfXN0YXRpYyBnZXRSZWR1Y2VQb3dlckZvckpQWChlLHQsYSl7cmV0dXJuIHRoaXMuZ2V0UmVkdWNlUG93ZXIoZSx0LDIqKjMwLyg0KmEpKX1zdGF0aWMgZ2V0IE1BWF9ESU0oKXtyZXR1cm4gc2hhZG93KHRoaXMsIk1BWF9ESU0iLHRoaXMuX2d1ZXNzTWF4KDIwNDgsMzI3NjgsMCwxKSl9c3RhdGljIGdldCBNQVhfQVJFQSgpe3RoaXMuX2hhc01heEFyZWE9ITA7cmV0dXJuIHNoYWRvdyh0aGlzLCJNQVhfQVJFQSIsdGhpcy5fZ3Vlc3NNYXgodGhpcy4jUCx0aGlzLk1BWF9ESU0sMTI4LDApKioyKX1zdGF0aWMgc2V0IE1BWF9BUkVBKGUpe2lmKGU+PTApe3RoaXMuX2hhc01heEFyZWE9ITA7c2hhZG93KHRoaXMsIk1BWF9BUkVBIixlKX19c3RhdGljIHNldE9wdGlvbnMoe2NhbnZhc01heEFyZWFJbkJ5dGVzOmU9LTEsaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQ6dD0hMX0pe3RoaXMuX2hhc01heEFyZWF8fCh0aGlzLk1BWF9BUkVBPWU+PjIpO3RoaXMuI0U9dH1zdGF0aWMgX2FyZUdvb2REaW1zKGUsdCl7dHJ5e2NvbnN0IGE9bmV3IE9mZnNjcmVlbkNhbnZhcyhlLHQpLG49YS5nZXRDb250ZXh0KCIyZCIpO24uZmlsbFJlY3QoMCwwLDEsMSk7Y29uc3Qgcz1uLmdldEltYWdlRGF0YSgwLDAsMSwxKS5kYXRhWzNdO2Eud2lkdGg9YS5oZWlnaHQ9MTtyZXR1cm4gMCE9PXN9Y2F0Y2h7cmV0dXJuITF9fXN0YXRpYyBfZ3Vlc3NNYXgoZSx0LGEsbil7Zm9yKDtlK2ErMTx0Oyl7Y29uc3QgYT1NYXRoLmZsb29yKChlK3QpLzIpLHM9bnx8YTt0aGlzLl9hcmVHb29kRGltcyhhLHMpP2U9YTp0PWF9cmV0dXJuIGV9c3RhdGljIGFzeW5jIGNyZWF0ZUltYWdlKGUsdD0hMSl7cmV0dXJuIG5ldyBJbWFnZVJlc2l6ZXIoZSx0KS5fY3JlYXRlSW1hZ2UoKX1hc3luYyBfY3JlYXRlSW1hZ2UoKXtjb25zdHtfaW1nRGF0YTplfT10aGlzLHt3aWR0aDp0LGhlaWdodDphfT1lO2lmKHQqYSo0PmRhKXtjb25zdCBlPXRoaXMuI18oKTtpZihlKXJldHVybiBlfWNvbnN0IG49dGhpcy5fZW5jb2RlQk1QKCk7bGV0IHMscjtpZihhd2FpdCBJbWFnZVJlc2l6ZXIuY2FuVXNlSW1hZ2VEZWNvZGVyKXtzPW5ldyBJbWFnZURlY29kZXIoe2RhdGE6bix0eXBlOiJpbWFnZS9ibXAiLHByZWZlckFuaW1hdGlvbjohMSx0cmFuc2Zlcjpbbi5idWZmZXJdfSk7cj1zLmRlY29kZSgpLmNhdGNoKGU9Pnt3YXJuKGBCTVAgaW1hZ2UgZGVjb2RpbmcgZmFpbGVkOiAke2V9YCk7cmV0dXJuIGNyZWF0ZUltYWdlQml0bWFwKG5ldyBCbG9iKFt0aGlzLl9lbmNvZGVCTVAoKS5idWZmZXJdLHt0eXBlOiJpbWFnZS9ibXAifSkpfSkuZmluYWxseSgoKT0+e3MuY2xvc2UoKX0pfWVsc2Ugcj1jcmVhdGVJbWFnZUJpdG1hcChuZXcgQmxvYihbbi5idWZmZXJdLHt0eXBlOiJpbWFnZS9ibXAifSkpO2NvbnN0e01BWF9BUkVBOmksTUFYX0RJTTpvfT1JbWFnZVJlc2l6ZXIsbD1NYXRoLm1heCh0L28sYS9vLE1hdGguc3FydCh0KmEvaSkpLGY9TWF0aC5tYXgobCwyKSxjPU1hdGgucm91bmQoMTAqKGwrMS4yNSkpLzEwL2YsaD1NYXRoLmZsb29yKE1hdGgubG9nMihjKSksdT1uZXcgQXJyYXkoaCsyKS5maWxsKDIpO3VbMF09Zjt1LnNwbGljZSgtMSwxLGMvKDE8PGgpKTtsZXQgbT10LHA9YTtjb25zdCBkPWF3YWl0IHI7bGV0IGc9ZC5pbWFnZXx8ZDtmb3IoY29uc3QgZSBvZiB1KXtjb25zdCB0PW0sYT1wO209TWF0aC5mbG9vcihtL2UpO3A9TWF0aC5mbG9vcihwL2UpO2NvbnN0IG49bmV3IE9mZnNjcmVlbkNhbnZhcyhtLHApO24uZ2V0Q29udGV4dCgiMmQiKS5kcmF3SW1hZ2UoZywwLDAsdCxhLDAsMCxtLHApO2cuY2xvc2UoKTtnPW4udHJhbnNmZXJUb0ltYWdlQml0bWFwKCl9ZS5kYXRhPW51bGw7ZS5iaXRtYXA9ZztlLndpZHRoPW07ZS5oZWlnaHQ9cDtyZXR1cm4gZX0jXygpe2NvbnN0e19pbWdEYXRhOmV9PXRoaXMse2RhdGE6dCx3aWR0aDphLGhlaWdodDpuLGtpbmQ6c309ZSxyPWEqbio0LGk9TWF0aC5jZWlsKE1hdGgubG9nMihyL2RhKSksbz1hPj5pLGw9bj4+aTtsZXQgZixjPW47dHJ5e2Y9bmV3IFVpbnQ4QXJyYXkocil9Y2F0Y2h7bGV0IGU9TWF0aC5mbG9vcihNYXRoLmxvZzIocisxKSk7Zm9yKDs7KXRyeXtmPW5ldyBVaW50OEFycmF5KDIqKmUtMSk7YnJlYWt9Y2F0Y2h7ZS09MX1jPU1hdGguZmxvb3IoKDIqKmUtMSkvKDQqYSkpO2NvbnN0IHQ9YSpjKjQ7dDxmLmxlbmd0aCYmKGY9bmV3IFVpbnQ4QXJyYXkodCkpfWNvbnN0IGg9bmV3IFVpbnQzMkFycmF5KGYuYnVmZmVyKSx1PW5ldyBVaW50MzJBcnJheShvKmwpO2xldCBtPTAscD0wO2NvbnN0IGQ9TWF0aC5jZWlsKG4vYyksZz1uJWM9PT0wP246biVjO2ZvcihsZXQgZT0wO2U8ZDtlKyspe2NvbnN0IG49ZTxkLTE/YzpnOyh7c3JjUG9zOm19PWNvbnZlcnRUb1JHQkEoe2tpbmQ6cyxzcmM6dCxkZXN0Omgsd2lkdGg6YSxoZWlnaHQ6bixpbnZlcnNlRGVjb2RlOnRoaXMuX2lzTWFzayxzcmNQb3M6bX0pKTtmb3IobGV0IGU9MCx0PW4+Pmk7ZTx0O2UrKyl7Y29uc3QgdD1oLnN1YmFycmF5KChlPDxpKSphKTtmb3IobGV0IGU9MDtlPG87ZSsrKXVbcCsrXT10W2U8PGldfX1pZihJbWFnZVJlc2l6ZXIubmVlZHNUb0JlUmVzaXplZChvLGwpKXtlLmRhdGE9dTtlLndpZHRoPW87ZS5oZWlnaHQ9bDtlLmtpbmQ9VDtyZXR1cm4gbnVsbH1jb25zdCBiPW5ldyBPZmZzY3JlZW5DYW52YXMobyxsKTtiLmdldENvbnRleHQoIjJkIix7d2lsbFJlYWRGcmVxdWVudGx5OiEwfSkucHV0SW1hZ2VEYXRhKG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHUuYnVmZmVyKSxvLGwpLDAsMCk7ZS5kYXRhPW51bGw7ZS5iaXRtYXA9Yi50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKTtlLndpZHRoPW87ZS5oZWlnaHQ9bDtyZXR1cm4gZX1fZW5jb2RlQk1QKCl7Y29uc3R7d2lkdGg6ZSxoZWlnaHQ6dCxraW5kOmF9PXRoaXMuX2ltZ0RhdGE7bGV0IG4scz10aGlzLl9pbWdEYXRhLmRhdGEscj1uZXcgVWludDhBcnJheSgwKSxpPXIsbz0wO3N3aXRjaChhKXtjYXNlIEM6e249MTtyPW5ldyBVaW50OEFycmF5KHRoaXMuX2lzTWFzaz9bMjU1LDI1NSwyNTUsMjU1LDAsMCwwLDBdOlswLDAsMCwwLDI1NSwyNTUsMjU1LDI1NV0pO2NvbnN0IGE9ZSs3Pj4zLGk9YSszJi00O2lmKGEhPT1pKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGkqdCk7bGV0IG49MDtmb3IobGV0IHI9MCxvPXQqYTtyPG87cis9YSxuKz1pKWUuc2V0KHMuc3ViYXJyYXkocixyK2EpLG4pO3M9ZX1icmVha31jYXNlIEY6bj0yNDtpZigzJmUpe2NvbnN0IGE9MyplLG49YSszJi00LHI9bi1hLGk9bmV3IFVpbnQ4QXJyYXkobip0KTtsZXQgbz0wO2ZvcihsZXQgZT0wLG49dCphO2U8bjtlKz1hKXtjb25zdCB0PXMuc3ViYXJyYXkoZSxlK2EpO2ZvcihsZXQgZT0wO2U8YTtlKz0zKXtpW28rK109dFtlKzJdO2lbbysrXT10W2UrMV07aVtvKytdPXRbZV19bys9cn1zPWl9ZWxzZSBmb3IobGV0IGU9MCx0PXMubGVuZ3RoO2U8dDtlKz0zKXtjb25zdCB0PXNbZV07c1tlXT1zW2UrMl07c1tlKzJdPXR9YnJlYWs7Y2FzZSBUOm49MzI7bz0zO2k9bmV3IFVpbnQ4QXJyYXkoNjgpO2NvbnN0IGE9bmV3IERhdGFWaWV3KGkuYnVmZmVyKTtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbil7YS5zZXRVaW50MzIoMCwyNTUsITApO2Euc2V0VWludDMyKDQsNjUyODAsITApO2Euc2V0VWludDMyKDgsMTY3MTE2ODAsITApO2Euc2V0VWludDMyKDEyLDQyNzgxOTAwODAsITApfWVsc2V7YS5zZXRVaW50MzIoMCw0Mjc4MTkwMDgwLCEwKTthLnNldFVpbnQzMig0LDE2NzExNjgwLCEwKTthLnNldFVpbnQzMig4LDY1MjgwLCEwKTthLnNldFVpbnQzMigxMiwyNTUsITApfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdCIpfWxldCBsPTA7Y29uc3QgZj00MCtpLmxlbmd0aCxjPTE0K2Yrci5sZW5ndGgrcy5sZW5ndGgsaD1uZXcgVWludDhBcnJheShjKSx1PW5ldyBEYXRhVmlldyhoLmJ1ZmZlcik7dS5zZXRVaW50MTYobCwxOTc3OCwhMCk7bCs9Mjt1LnNldFVpbnQzMihsLGMsITApO2wrPTQ7dS5zZXRVaW50MzIobCwwLCEwKTtsKz00O3Uuc2V0VWludDMyKGwsMTQrZityLmxlbmd0aCwhMCk7bCs9NDt1LnNldFVpbnQzMihsLGYsITApO2wrPTQ7dS5zZXRJbnQzMihsLGUsITApO2wrPTQ7dS5zZXRJbnQzMihsLC10LCEwKTtsKz00O3Uuc2V0VWludDE2KGwsMSwhMCk7bCs9Mjt1LnNldFVpbnQxNihsLG4sITApO2wrPTI7dS5zZXRVaW50MzIobCxvLCEwKTtsKz00O3Uuc2V0VWludDMyKGwsMCwhMCk7bCs9NDt1LnNldEludDMyKGwsMCwhMCk7bCs9NDt1LnNldEludDMyKGwsMCwhMCk7bCs9NDt1LnNldFVpbnQzMihsLHIubGVuZ3RoLzQsITApO2wrPTQ7dS5zZXRVaW50MzIobCwwLCEwKTtsKz00O2guc2V0KGksbCk7bCs9aS5sZW5ndGg7aC5zZXQocixsKTtsKz1yLmxlbmd0aDtoLnNldChzLGwpO3JldHVybiBofX1jb25zdCBCYT1uZXcgVWludDhBcnJheSgwKTtjbGFzcyBEZWNvZGVTdHJlYW0gZXh0ZW5kcyBCYXNlU3RyZWFte2J1ZmZlcj1CYTtidWZmZXJMZW5ndGg9MDtlb2Y9ITE7bWluQnVmZmVyTGVuZ3RoPTUxMjtwb3M9MDtjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX3Jhd01pbkJ1ZmZlckxlbmd0aD1lfHwwO2lmKGUpZm9yKDt0aGlzLm1pbkJ1ZmZlckxlbmd0aDxlOyl0aGlzLm1pbkJ1ZmZlckxlbmd0aCo9Mn1yZWFkQmxvY2soKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGByZWFkQmxvY2tgIGNhbGxlZCIpfWdldCBpc0VtcHR5KCl7Zm9yKDshdGhpcy5lb2YmJjA9PT10aGlzLmJ1ZmZlckxlbmd0aDspdGhpcy5yZWFkQmxvY2soKTtyZXR1cm4gMD09PXRoaXMuYnVmZmVyTGVuZ3RofWVuc3VyZUJ1ZmZlcihlKXtjb25zdCB0PXRoaXMuYnVmZmVyO2lmKGU8PXQuYnl0ZUxlbmd0aClyZXR1cm4gdDtsZXQgYT10aGlzLm1pbkJ1ZmZlckxlbmd0aDtmb3IoO2E8ZTspYSo9Mjtjb25zdCBuPW5ldyBVaW50OEFycmF5KGEpO24uc2V0KHQpO3JldHVybiB0aGlzLmJ1ZmZlcj1ufWdldEJ5dGUoKXtjb25zdCBlPXRoaXMucG9zO2Zvcig7dGhpcy5idWZmZXJMZW5ndGg8PWU7KXtpZih0aGlzLmVvZilyZXR1cm4tMTt0aGlzLnJlYWRCbG9jaygpfXJldHVybiB0aGlzLmJ1ZmZlclt0aGlzLnBvcysrXX1nZXRCeXRlcyhlLHQ9bnVsbCl7Y29uc3QgYT10aGlzLnBvcztsZXQgbjtpZihlKXt0aGlzLmVuc3VyZUJ1ZmZlcihhK2UpO249YStlO2Zvcig7IXRoaXMuZW9mJiZ0aGlzLmJ1ZmZlckxlbmd0aDxuOyl0aGlzLnJlYWRCbG9jayh0KTtjb25zdCBzPXRoaXMuYnVmZmVyTGVuZ3RoO24+cyYmKG49cyl9ZWxzZXtmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2sodCk7bj10aGlzLmJ1ZmZlckxlbmd0aH10aGlzLnBvcz1uO3JldHVybiB0aGlzLmJ1ZmZlci5zdWJhcnJheShhLG4pfWFzeW5jIGdldEltYWdlRGF0YShlLHQpe2lmKCF0aGlzLmNhbkFzeW5jRGVjb2RlSW1hZ2VGcm9tQnVmZmVyKXJldHVybiB0aGlzLmlzQXN5bmNEZWNvZGVyP3RoaXMuZGVjb2RlSW1hZ2UobnVsbCxlLHQpOnRoaXMuZ2V0Qnl0ZXMoZSx0KTtjb25zdCBhPWF3YWl0IHRoaXMuc3RyZWFtLmFzeW5jR2V0Qnl0ZXMoKTtyZXR1cm4gdGhpcy5kZWNvZGVJbWFnZShhLGUsdCl9YXN5bmMgYXN5bmNHZXRCeXRlc0Zyb21EZWNvbXByZXNzaW9uU3RyZWFtKGUpe3RoaXMuc3RyZWFtLnJlc2V0KCk7Y29uc3QgdD10aGlzLnN0cmVhbS5pc0FzeW5jP2F3YWl0IHRoaXMuc3RyZWFtLmFzeW5jR2V0Qnl0ZXMoKTp0aGlzLnN0cmVhbS5nZXRCeXRlcygpO3RyeXtjb25zdHtyZWFkYWJsZTphLHdyaXRhYmxlOm59PW5ldyBEZWNvbXByZXNzaW9uU3RyZWFtKGUpLHM9bi5nZXRXcml0ZXIoKTthd2FpdCBzLnJlYWR5O3Mud3JpdGUodCkudGhlbihhc3luYygpPT57YXdhaXQgcy5yZWFkeTthd2FpdCBzLmNsb3NlKCl9KS5jYXRjaCgoKT0+e30pO2NvbnN0IHI9W107bGV0IGk9MDtmb3IgYXdhaXQoY29uc3QgZSBvZiBhKXtyLnB1c2goZSk7aSs9ZS5ieXRlTGVuZ3RofWNvbnN0IG89bmV3IFVpbnQ4QXJyYXkoaSk7bGV0IGw9MDtmb3IoY29uc3QgZSBvZiByKXtvLnNldChlLGwpO2wrPWUuYnl0ZUxlbmd0aH1yZXR1cm57ZGVjb21wcmVzc2VkOm8sY29tcHJlc3NlZDp0fX1jYXRjaHtyZXR1cm57ZGVjb21wcmVzc2VkOm51bGwsY29tcHJlc3NlZDp0fX19cmVzZXQoKXt0aGlzLnBvcz0wfW1ha2VTdWJTdHJlYW0oZSx0LGE9bnVsbCl7aWYodm9pZCAwPT09dClmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKTtlbHNle2NvbnN0IGE9ZSt0O2Zvcig7dGhpcy5idWZmZXJMZW5ndGg8PWEmJiF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKX1yZXR1cm4gbmV3IFN0cmVhbSh0aGlzLmJ1ZmZlcixlLHQsYSl9Y2xvbmUoKXtmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKTtyZXR1cm4gbmV3IFN0cmVhbSh0aGlzLmJ1ZmZlciwwLHRoaXMuYnVmZmVyTGVuZ3RoLHRoaXMuZGljdD8uY2xvbmUoKSl9Z2V0QmFzZVN0cmVhbXMoKXtyZXR1cm4gdGhpcy5zdHJlYW0/dGhpcy5zdHJlYW0uZ2V0QmFzZVN0cmVhbXMoKTpudWxsfX1jbGFzcyBTdHJlYW1zU2VxdWVuY2VTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0PW51bGwpe2U9ZS5maWx0ZXIoZT0+ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJiFlLmlzSW1hZ2VTdHJlYW0pO2xldCBhPTA7Zm9yKGNvbnN0IHQgb2YgZSlhKz10IGluc3RhbmNlb2YgRGVjb2RlU3RyZWFtP3QuX3Jhd01pbkJ1ZmZlckxlbmd0aDp0Lmxlbmd0aDtzdXBlcihhKTt0aGlzLnN0cmVhbXM9ZTt0aGlzLl9vbkVycm9yPXR9cmVhZEJsb2NrKCl7Y29uc3QgZT10aGlzLnN0cmVhbXM7aWYoMD09PWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59Y29uc3QgdD1lLnNoaWZ0KCk7bGV0IGE7dHJ5e2E9dC5nZXRCeXRlcygpfWNhdGNoKGUpe2lmKHRoaXMuX29uRXJyb3Ipe3RoaXMuX29uRXJyb3IoZSx0LmRpY3Q/Lm9iaklkKTtyZXR1cm59dGhyb3cgZX1jb25zdCBuPXRoaXMuYnVmZmVyTGVuZ3RoLHM9bithLmxlbmd0aDt0aGlzLmVuc3VyZUJ1ZmZlcihzKS5zZXQoYSxuKTt0aGlzLmJ1ZmZlckxlbmd0aD1zfWdldEJhc2VTdHJlYW1zKCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgdCBvZiB0aGlzLnN0cmVhbXMpe2NvbnN0IGE9dC5nZXRCYXNlU3RyZWFtcygpO2EmJmUucHVzaCguLi5hKX1yZXR1cm4gZS5sZW5ndGg+MD9lOm51bGx9fWNsYXNzIENvbG9yU3BhY2VVdGlsc3tzdGF0aWMgcGFyc2Uoe2NzOmUseHJlZjp0LHJlc291cmNlczphPW51bGwscGRmRnVuY3Rpb25GYWN0b3J5Om4sZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6cixhc3luY0lmTm90Q2FjaGVkOmk9ITF9KXtjb25zdCBvPXt4cmVmOnQscmVzb3VyY2VzOmEscGRmRnVuY3Rpb25GYWN0b3J5Om4sZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6cn07bGV0IGwsZixjO2lmKGUgaW5zdGFuY2VvZiBSZWYpe2Y9ZTtjb25zdCBhPXMuZ2V0QnlSZWYoZil8fHIuZ2V0QnlSZWYoZik7aWYoYSlyZXR1cm4gYTtlPXQuZmV0Y2goZSl9aWYoZSBpbnN0YW5jZW9mIE5hbWUpe2w9ZS5uYW1lO2NvbnN0IHQ9ci5nZXRCeU5hbWUobCk7aWYodClyZXR1cm4gdH10cnl7Yz10aGlzLiN6KGUsbyl9Y2F0Y2goZSl7aWYoaSYmIShlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pKXJldHVybiBQcm9taXNlLnJlamVjdChlKTt0aHJvdyBlfWlmKGx8fGYpe3Iuc2V0KGwsZixjKTtmJiZzLnNldChudWxsLGYsYyl9cmV0dXJuIGk/UHJvbWlzZS5yZXNvbHZlKGMpOmN9c3RhdGljI0woZSx0KXtjb25zdHtnbG9iYWxDb2xvclNwYWNlQ2FjaGU6YX09dDtsZXQgbjtpZihlIGluc3RhbmNlb2YgUmVmKXtuPWU7Y29uc3QgdD1hLmdldEJ5UmVmKG4pO2lmKHQpcmV0dXJuIHR9Y29uc3Qgcz10aGlzLiN6KGUsdCk7biYmYS5zZXQobnVsbCxuLHMpO3JldHVybiBzfXN0YXRpYyN6KGUsdCl7Y29uc3R7eHJlZjphLHJlc291cmNlczpuLHBkZkZ1bmN0aW9uRmFjdG9yeTpzLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpyfT10O2lmKChlPWEuZmV0Y2hJZlJlZihlKSlpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJHIjpjYXNlIkRldmljZUdyYXkiOnJldHVybiB0aGlzLmdyYXk7Y2FzZSJSR0IiOmNhc2UiRGV2aWNlUkdCIjpyZXR1cm4gdGhpcy5yZ2I7Y2FzZSJEZXZpY2VSR0JBIjpyZXR1cm4gdGhpcy5yZ2JhO2Nhc2UiQ01ZSyI6Y2FzZSJEZXZpY2VDTVlLIjpyZXR1cm4gdGhpcy5jbXlrO2Nhc2UiUGF0dGVybiI6cmV0dXJuIG5ldyBQYXR0ZXJuQ1MobnVsbCk7ZGVmYXVsdDppZihuIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgYT1uLmdldCgiQ29sb3JTcGFjZSIpO2lmKGEgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBuPWEuZ2V0KGUubmFtZSk7aWYobil7aWYobiBpbnN0YW5jZW9mIE5hbWUpcmV0dXJuIHRoaXMuI3oobix0KTtlPW47YnJlYWt9fX13YXJuKGBVbnJlY29nbml6ZWQgQ29sb3JTcGFjZTogJHtlLm5hbWV9YCk7cmV0dXJuIHRoaXMuZ3JheX1pZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCBuPWEuZmV0Y2hJZlJlZihlWzBdKS5uYW1lO2xldCBpLG8sbCxmLGMsaDtzd2l0Y2gobil7Y2FzZSJHIjpjYXNlIkRldmljZUdyYXkiOnJldHVybiB0aGlzLmdyYXk7Y2FzZSJSR0IiOmNhc2UiRGV2aWNlUkdCIjpyZXR1cm4gdGhpcy5yZ2I7Y2FzZSJDTVlLIjpjYXNlIkRldmljZUNNWUsiOnJldHVybiB0aGlzLmNteWs7Y2FzZSJDYWxHcmF5IjppPWEuZmV0Y2hJZlJlZihlWzFdKTtmPWkuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtjPWkuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtoPWkuZ2V0KCJHYW1tYSIpO3JldHVybiBuZXcgQ2FsR3JheUNTKGYsYyxoKTtjYXNlIkNhbFJHQiI6aT1hLmZldGNoSWZSZWYoZVsxXSk7Zj1pLmdldEFycmF5KCJXaGl0ZVBvaW50Iik7Yz1pLmdldEFycmF5KCJCbGFja1BvaW50Iik7aD1pLmdldEFycmF5KCJHYW1tYSIpO2NvbnN0IHU9aS5nZXRBcnJheSgiTWF0cml4Iik7cmV0dXJuIG5ldyBDYWxSR0JDUyhmLGMsaCx1KTtjYXNlIklDQ0Jhc2VkIjpjb25zdCBtPWVbMV1pbnN0YW5jZW9mIFJlZjtpZihtKXtjb25zdCB0PXIuZ2V0QnlSZWYoZVsxXSk7aWYodClyZXR1cm4gdH1jb25zdCBwPWEuZmV0Y2hJZlJlZihlWzFdKSxkPXAuZGljdDtvPWQuZ2V0KCJOIik7aWYoSWNjQ29sb3JTcGFjZS5pc1VzYWJsZSl0cnl7Y29uc3QgdD1uZXcgSWNjQ29sb3JTcGFjZShwLmdldEJ5dGVzKCksIklDQ0Jhc2VkIixvKTttJiZyLnNldChudWxsLGVbMV0sdCk7cmV0dXJuIHR9Y2F0Y2godCl7aWYodCBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IHQ7d2FybihgSUNDQmFzZWQgY29sb3Igc3BhY2UgKCR7ZVsxXX0pOiAiJHt0fSIuYCl9Y29uc3QgZz1kLmdldFJhdygiQWx0ZXJuYXRlIik7aWYoZyl7Y29uc3QgZT10aGlzLiNMKGcsdCk7aWYoZS5udW1Db21wcz09PW8pcmV0dXJuIGU7d2FybigiSUNDQmFzZWQgY29sb3Igc3BhY2U6IElnbm9yaW5nIGluY29ycmVjdCAvQWx0ZXJuYXRlIGVudHJ5LiIpfWlmKDE9PT1vKXJldHVybiB0aGlzLmdyYXk7aWYoMz09PW8pcmV0dXJuIHRoaXMucmdiO2lmKDQ9PT1vKXJldHVybiB0aGlzLmNteWs7YnJlYWs7Y2FzZSJQYXR0ZXJuIjpsPWVbMV18fG51bGw7bCYmPXRoaXMuI0wobCx0KTtyZXR1cm4gbmV3IFBhdHRlcm5DUyhsKTtjYXNlIkkiOmNhc2UiSW5kZXhlZCI6bD10aGlzLiNMKGVbMV0sdCk7Y29uc3QgYj1NYXRoQ2xhbXAoYS5mZXRjaElmUmVmKGVbMl0pLDAsMjU1KSx3PWEuZmV0Y2hJZlJlZihlWzNdKTtyZXR1cm4gbmV3IEluZGV4ZWRDUyhsLGIsdyk7Y2FzZSJTZXBhcmF0aW9uIjpjYXNlIkRldmljZU4iOmNvbnN0IGo9YS5mZXRjaElmUmVmKGVbMV0pO289QXJyYXkuaXNBcnJheShqKT9qLmxlbmd0aDoxO2w9dGhpcy4jTChlWzJdLHQpO2NvbnN0IGs9cy5jcmVhdGUoZVszXSk7cmV0dXJuIG5ldyBBbHRlcm5hdGVDUyhvLGwsayk7Y2FzZSJMYWIiOmk9YS5mZXRjaElmUmVmKGVbMV0pO2Y9aS5nZXRBcnJheSgiV2hpdGVQb2ludCIpO2M9aS5nZXRBcnJheSgiQmxhY2tQb2ludCIpO2NvbnN0IHk9aS5nZXRBcnJheSgiUmFuZ2UiKTtyZXR1cm4gbmV3IExhYkNTKGYsYyx5KTtkZWZhdWx0Ondhcm4oYFVuaW1wbGVtZW50ZWQgQ29sb3JTcGFjZSBvYmplY3Q6ICR7bn1gKTtyZXR1cm4gdGhpcy5ncmF5fX13YXJuKGBVbnJlY29nbml6ZWQgQ29sb3JTcGFjZSBvYmplY3Q6ICR7ZX1gKTtyZXR1cm4gdGhpcy5ncmF5fXN0YXRpYyBnZXQgZ3JheSgpe3JldHVybiBzaGFkb3codGhpcywiZ3JheSIsbmV3IERldmljZUdyYXlDUyl9c3RhdGljIGdldCByZ2IoKXtyZXR1cm4gc2hhZG93KHRoaXMsInJnYiIsbmV3IERldmljZVJnYkNTKX1zdGF0aWMgZ2V0IHJnYmEoKXtyZXR1cm4gc2hhZG93KHRoaXMsInJnYmEiLG5ldyBEZXZpY2VSZ2JhQ1MpfXN0YXRpYyBnZXQgY215aygpe2lmKENteWtJQ0NCYXNlZENTLmlzVXNhYmxlKXRyeXtyZXR1cm4gc2hhZG93KHRoaXMsImNteWsiLG5ldyBDbXlrSUNDQmFzZWRDUyl9Y2F0Y2h7d2FybigiQ01ZSyBmYWxsYmFjazogRGV2aWNlQ01ZSyIpfXJldHVybiBzaGFkb3codGhpcywiY215ayIsbmV3IERldmljZUNteWtDUyl9fWNsYXNzIEpwZWdFcnJvciBleHRlbmRzIG5he2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkpwZWdFcnJvciIpfX1jbGFzcyBETkxNYXJrZXJFcnJvciBleHRlbmRzIG5he2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiRE5MTWFya2VyRXJyb3IiKTt0aGlzLnNjYW5MaW5lcz10fX1jbGFzcyBFT0lNYXJrZXJFcnJvciBleHRlbmRzIG5he2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkVPSU1hcmtlckVycm9yIil9fWNvbnN0IERhPW5ldyBVaW50OEFycmF5KFswLDEsOCwxNiw5LDIsMywxMCwxNywyNCwzMiwyNSwxOCwxMSw0LDUsMTIsMTksMjYsMzMsNDAsNDgsNDEsMzQsMjcsMjAsMTMsNiw3LDE0LDIxLDI4LDM1LDQyLDQ5LDU2LDU3LDUwLDQzLDM2LDI5LDIyLDE1LDIzLDMwLDM3LDQ0LDUxLDU4LDU5LDUyLDQ1LDM4LDMxLDM5LDQ2LDUzLDYwLDYxLDU0LDQ3LDU1LDYyLDYzXSksSGE9NDAxNyxNYT03OTksTmE9MzQwNixQYT0yMjc2LEVhPTE1NjcsX2E9Mzc4NCx6YT01NzkzLExhPTI4OTY7ZnVuY3Rpb24gYnVpbGRIdWZmbWFuVGFibGUoZSx0KXtsZXQgYSxuLHM9MCxyPTE2O2Zvcig7cj4wJiYhZVtyLTFdOylyLS07Y29uc3QgaT1be2NoaWxkcmVuOltdLGluZGV4OjB9XTtsZXQgbyxsPWlbMF07Zm9yKGE9MDthPHI7YSsrKXtmb3Iobj0wO248ZVthXTtuKyspe2w9aS5wb3AoKTtsLmNoaWxkcmVuW2wuaW5kZXhdPXRbc107Zm9yKDtsLmluZGV4PjA7KWw9aS5wb3AoKTtsLmluZGV4Kys7aS5wdXNoKGwpO2Zvcig7aS5sZW5ndGg8PWE7KXtpLnB1c2gobz17Y2hpbGRyZW46W10saW5kZXg6MH0pO2wuY2hpbGRyZW5bbC5pbmRleF09by5jaGlsZHJlbjtsPW99cysrfWlmKGErMTxyKXtpLnB1c2gobz17Y2hpbGRyZW46W10saW5kZXg6MH0pO2wuY2hpbGRyZW5bbC5pbmRleF09by5jaGlsZHJlbjtsPW99fXJldHVybiBpWzBdLmNoaWxkcmVufWZ1bmN0aW9uIGdldEJsb2NrQnVmZmVyT2Zmc2V0KGUsdCxhKXtyZXR1cm4gNjQqKChlLmJsb2Nrc1BlckxpbmUrMSkqdCthKX1mdW5jdGlvbiBkZWNvZGVTY2FuKGUsdCxhLG4scyxyLGksbyxsLGYsYz0hMSl7Y29uc3QgaD1uLm1jdXNQZXJMaW5lLHU9bi5wcm9ncmVzc2l2ZSxtPWE7bGV0IHA9MCxkPTA7ZnVuY3Rpb24gcmVhZEJpdCgpe2lmKGQ+MCl7ZC0tO3JldHVybiBwPj5kJjF9cD1lW2ErK107aWYoMjU1PT09cCl7Y29uc3Qgcz1lW2ErK107aWYocyl7aWYoMjIwPT09cyYmYyl7YSs9Mjtjb25zdCBlPXQuZ2V0VWludDE2KGEpO2ErPTI7aWYoZT4wJiZlIT09bi5zY2FuTGluZXMpdGhyb3cgbmV3IEROTE1hcmtlckVycm9yKCJGb3VuZCBETkwgbWFya2VyICgweEZGREMpIHdoaWxlIHBhcnNpbmcgc2NhbiBkYXRhIixlKX1lbHNlIGlmKDIxNz09PXMpe2lmKGMpe2NvbnN0IGU9aiooOD09PW4ucHJlY2lzaW9uPzg6MCk7aWYoZT4wJiZNYXRoLnJvdW5kKG4uc2NhbkxpbmVzL2UpPj01KXRocm93IG5ldyBETkxNYXJrZXJFcnJvcigiRm91bmQgRU9JIG1hcmtlciAoMHhGRkQ5KSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSwgcG9zc2libHkgY2F1c2VkIGJ5IGluY29ycmVjdCBgc2NhbkxpbmVzYCBwYXJhbWV0ZXIiLGUpfXRocm93IG5ldyBFT0lNYXJrZXJFcnJvcigiRm91bmQgRU9JIG1hcmtlciAoMHhGRkQ5KSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSIpfXRocm93IG5ldyBKcGVnRXJyb3IoYHVuZXhwZWN0ZWQgbWFya2VyICR7KHA8PDh8cykudG9TdHJpbmcoMTYpfWApfX1kPTc7cmV0dXJuIHA+Pj43fWZ1bmN0aW9uIGRlY29kZUh1ZmZtYW4oZSl7bGV0IHQ9ZTtmb3IoOzspe3Q9dFtyZWFkQml0KCldO3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJudW1iZXIiOnJldHVybiB0O2Nhc2Uib2JqZWN0Ijpjb250aW51ZX10aHJvdyBuZXcgSnBlZ0Vycm9yKCJpbnZhbGlkIGh1ZmZtYW4gc2VxdWVuY2UiKX19ZnVuY3Rpb24gcmVjZWl2ZShlKXtsZXQgdD0wO2Zvcig7ZT4wOyl7dD10PDwxfHJlYWRCaXQoKTtlLS19cmV0dXJuIHR9ZnVuY3Rpb24gcmVjZWl2ZUFuZEV4dGVuZChlKXtpZigxPT09ZSlyZXR1cm4gMT09PXJlYWRCaXQoKT8xOi0xO2NvbnN0IHQ9cmVjZWl2ZShlKTtyZXR1cm4gdD49MTw8ZS0xP3Q6dCsoLTE8PGUpKzF9bGV0IGc9MDtsZXQgYix3PTA7bGV0IGo9MDtmdW5jdGlvbiBkZWNvZGVNY3UoZSx0LGEsbixzKXtjb25zdCByPWElaDtqPShhL2h8MCkqZS52K247Y29uc3QgaT1yKmUuaCtzO3QoZSxnZXRCbG9ja0J1ZmZlck9mZnNldChlLGosaSkpfWZ1bmN0aW9uIGRlY29kZUJsb2NrKGUsdCxhKXtqPWEvZS5ibG9ja3NQZXJMaW5lfDA7Y29uc3Qgbj1hJWUuYmxvY2tzUGVyTGluZTt0KGUsZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSxqLG4pKX1jb25zdCBrPXMubGVuZ3RoO2xldCB5LHEsdixTLHgsQztDPXU/MD09PWk/MD09PWw/ZnVuY3Rpb24gZGVjb2RlRENGaXJzdChlLHQpe2NvbnN0IGE9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZURDKSxuPTA9PT1hPzA6cmVjZWl2ZUFuZEV4dGVuZChhKTw8ZjtlLmJsb2NrRGF0YVt0XT1lLnByZWQrPW59OmZ1bmN0aW9uIGRlY29kZURDU3VjY2Vzc2l2ZShlLHQpe2UuYmxvY2tEYXRhW3RdfD1yZWFkQml0KCk8PGZ9OjA9PT1sP2Z1bmN0aW9uIGRlY29kZUFDRmlyc3QoZSx0KXtpZihnPjApe2ctLTtyZXR1cm59bGV0IGE9aTtjb25zdCBuPW87Zm9yKDthPD1uOyl7Y29uc3Qgbj1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlQUMpLHM9MTUmbixyPW4+PjQ7aWYoMD09PXMpe2lmKHI8MTUpe2c9cmVjZWl2ZShyKSsoMTw8ciktMTticmVha31hKz0xNjtjb250aW51ZX1hKz1yO2NvbnN0IGk9RGFbYV07ZS5ibG9ja0RhdGFbdCtpXT1yZWNlaXZlQW5kRXh0ZW5kKHMpKigxPDxmKTthKyt9fTpmdW5jdGlvbiBkZWNvZGVBQ1N1Y2Nlc3NpdmUoZSx0KXtsZXQgYT1pO2NvbnN0IG49bztsZXQgcyxyLGw9MDtmb3IoO2E8PW47KXtjb25zdCBuPXQrRGFbYV0saT1lLmJsb2NrRGF0YVtuXTwwPy0xOjE7c3dpdGNoKHcpe2Nhc2UgMDpyPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVBQyk7cz0xNSZyO2w9cj4+NDtpZigwPT09cylpZihsPDE1KXtnPXJlY2VpdmUobCkrKDE8PGwpO3c9NH1lbHNle2w9MTY7dz0xfWVsc2V7aWYoMSE9PXMpdGhyb3cgbmV3IEpwZWdFcnJvcigiaW52YWxpZCBBQ24gZW5jb2RpbmciKTtiPXJlY2VpdmVBbmRFeHRlbmQocyk7dz1sPzI6M31jb250aW51ZTtjYXNlIDE6Y2FzZSAyOmlmKGUuYmxvY2tEYXRhW25dKWUuYmxvY2tEYXRhW25dKz1pKihyZWFkQml0KCk8PGYpO2Vsc2V7bC0tOzA9PT1sJiYodz0yPT09dz8zOjApfWJyZWFrO2Nhc2UgMzppZihlLmJsb2NrRGF0YVtuXSllLmJsb2NrRGF0YVtuXSs9aSoocmVhZEJpdCgpPDxmKTtlbHNle2UuYmxvY2tEYXRhW25dPWI8PGY7dz0wfWJyZWFrO2Nhc2UgNDplLmJsb2NrRGF0YVtuXSYmKGUuYmxvY2tEYXRhW25dKz1pKihyZWFkQml0KCk8PGYpKX1hKyt9aWYoND09PXcpe2ctLTswPT09ZyYmKHc9MCl9fTpmdW5jdGlvbiBkZWNvZGVCYXNlbGluZShlLHQpe2NvbnN0IGE9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZURDKSxuPTA9PT1hPzA6cmVjZWl2ZUFuZEV4dGVuZChhKTtlLmJsb2NrRGF0YVt0XT1lLnByZWQrPW47bGV0IHM9MTtmb3IoO3M8NjQ7KXtjb25zdCBhPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVBQyksbj0xNSZhLHI9YT4+NDtpZigwPT09bil7aWYocjwxNSlicmVhaztzKz0xNjtjb250aW51ZX1zKz1yO2NvbnN0IGk9RGFbc107ZS5ibG9ja0RhdGFbdCtpXT1yZWNlaXZlQW5kRXh0ZW5kKG4pO3MrK319O2xldCBGLFQ9MDtjb25zdCBSPTE9PT1rP3NbMF0uYmxvY2tzUGVyTGluZSpzWzBdLmJsb2Nrc1BlckNvbHVtbjpoKm4ubWN1c1BlckNvbHVtbjtsZXQgTyxEO2Zvcig7VDw9Ujspe2NvbnN0IG49cj9NYXRoLm1pbihSLVQscik6UjtpZihuPjApe2ZvcihxPTA7cTxrO3ErKylzW3FdLnByZWQ9MDtnPTA7aWYoMT09PWspe3k9c1swXTtmb3IoeD0wO3g8bjt4Kyspe2RlY29kZUJsb2NrKHksQyxUKTtUKyt9fWVsc2UgZm9yKHg9MDt4PG47eCsrKXtmb3IocT0wO3E8aztxKyspe3k9c1txXTtPPXkuaDtEPXkudjtmb3Iodj0wO3Y8RDt2KyspZm9yKFM9MDtTPE87UysrKWRlY29kZU1jdSh5LEMsVCx2LFMpfVQrK319ZD0wO0Y9ZmluZE5leHRGaWxlTWFya2VyKGUsdCxhKTtpZighRilicmVhaztpZihGLmludmFsaWQpe3dhcm4oYGRlY29kZVNjYW4gLSAke24+MD8idW5leHBlY3RlZCI6ImV4Y2Vzc2l2ZSJ9IE1DVSBkYXRhLCBjdXJyZW50IG1hcmtlciBpczogJHtGLmludmFsaWR9YCk7YT1GLm9mZnNldH1pZighKEYubWFya2VyPj02NTQ4OCYmRi5tYXJrZXI8PTY1NDk1KSlicmVhazthKz0yfXJldHVybiBhLW19ZnVuY3Rpb24gcXVhbnRpemVBbmRJbnZlcnNlKGUsdCxhKXtjb25zdCBuPWUucXVhbnRpemF0aW9uVGFibGUscz1lLmJsb2NrRGF0YTtsZXQgcixpLG8sbCxmLGMsaCx1LG0scCxkLGcsYix3LGosayx5O2lmKCFuKXRocm93IG5ldyBKcGVnRXJyb3IoIm1pc3NpbmcgcmVxdWlyZWQgUXVhbnRpemF0aW9uIFRhYmxlLiIpO2ZvcihsZXQgZT0wO2U8NjQ7ZSs9OCl7bT1zW3QrZV07cD1zW3QrZSsxXTtkPXNbdCtlKzJdO2c9c1t0K2UrM107Yj1zW3QrZSs0XTt3PXNbdCtlKzVdO2o9c1t0K2UrNl07az1zW3QrZSs3XTttKj1uW2VdO2lmKDAhPT0ocHxkfGd8Ynx3fGp8aykpe3AqPW5bZSsxXTtkKj1uW2UrMl07Zyo9bltlKzNdO2IqPW5bZSs0XTt3Kj1uW2UrNV07aio9bltlKzZdO2sqPW5bZSs3XTtyPXphKm0rMTI4Pj44O2k9emEqYisxMjg+Pjg7bz1kO2w9ajtmPUxhKihwLWspKzEyOD4+ODt1PUxhKihwK2spKzEyOD4+ODtjPWc8PDQ7aD13PDw0O3I9citpKzE+PjE7aT1yLWk7eT1vKl9hK2wqRWErMTI4Pj44O289bypFYS1sKl9hKzEyOD4+ODtsPXk7Zj1mK2grMT4+MTtoPWYtaDt1PXUrYysxPj4xO2M9dS1jO3I9citsKzE+PjE7bD1yLWw7aT1pK28rMT4+MTtvPWktbzt5PWYqUGErdSpOYSsyMDQ4Pj4xMjtmPWYqTmEtdSpQYSsyMDQ4Pj4xMjt1PXk7eT1jKk1hK2gqSGErMjA0OD4+MTI7Yz1jKkhhLWgqTWErMjA0OD4+MTI7aD15O2FbZV09cit1O2FbZSs3XT1yLXU7YVtlKzFdPWkraDthW2UrNl09aS1oO2FbZSsyXT1vK2M7YVtlKzVdPW8tYzthW2UrM109bCtmO2FbZSs0XT1sLWZ9ZWxzZXt5PXphKm0rNTEyPj4xMDthW2VdPXk7YVtlKzFdPXk7YVtlKzJdPXk7YVtlKzNdPXk7YVtlKzRdPXk7YVtlKzVdPXk7YVtlKzZdPXk7YVtlKzddPXl9fWZvcihsZXQgZT0wO2U8ODsrK2Upe209YVtlXTtwPWFbZSs4XTtkPWFbZSsxNl07Zz1hW2UrMjRdO2I9YVtlKzMyXTt3PWFbZSs0MF07aj1hW2UrNDhdO2s9YVtlKzU2XTtpZigwIT09KHB8ZHxnfGJ8d3xqfGspKXtyPXphKm0rMjA0OD4+MTI7aT16YSpiKzIwNDg+PjEyO289ZDtsPWo7Zj1MYSoocC1rKSsyMDQ4Pj4xMjt1PUxhKihwK2spKzIwNDg+PjEyO2M9ZztoPXc7cj00MTEyKyhyK2krMT4+MSk7aT1yLWk7eT1vKl9hK2wqRWErMjA0OD4+MTI7bz1vKkVhLWwqX2ErMjA0OD4+MTI7bD15O2Y9ZitoKzE+PjE7aD1mLWg7dT11K2MrMT4+MTtjPXUtYztyPXIrbCsxPj4xO2w9ci1sO2k9aStvKzE+PjE7bz1pLW87eT1mKlBhK3UqTmErMjA0OD4+MTI7Zj1mKk5hLXUqUGErMjA0OD4+MTI7dT15O3k9YypNYStoKkhhKzIwNDg+PjEyO2M9YypIYS1oKk1hKzIwNDg+PjEyO2g9eTttPXIrdTtrPXItdTtwPWkraDtqPWktaDtkPW8rYzt3PW8tYztnPWwrZjtiPWwtZjttPDE2P209MDptPj00MDgwP209MjU1Om0+Pj00O3A8MTY/cD0wOnA+PTQwODA/cD0yNTU6cD4+PTQ7ZDwxNj9kPTA6ZD49NDA4MD9kPTI1NTpkPj49NDtnPDE2P2c9MDpnPj00MDgwP2c9MjU1Omc+Pj00O2I8MTY/Yj0wOmI+PTQwODA/Yj0yNTU6Yj4+PTQ7dzwxNj93PTA6dz49NDA4MD93PTI1NTp3Pj49NDtqPDE2P2o9MDpqPj00MDgwP2o9MjU1Omo+Pj00O2s8MTY/az0wOms+PTQwODA/az0yNTU6az4+PTQ7c1t0K2VdPW07c1t0K2UrOF09cDtzW3QrZSsxNl09ZDtzW3QrZSsyNF09ZztzW3QrZSszMl09YjtzW3QrZSs0MF09dztzW3QrZSs0OF09ajtzW3QrZSs1Nl09a31lbHNle3k9emEqbSs4MTkyPj4xNDt5PXk8LTIwNDA/MDp5Pj0yMDI0PzI1NTp5KzIwNTY+PjQ7c1t0K2VdPXk7c1t0K2UrOF09eTtzW3QrZSsxNl09eTtzW3QrZSsyNF09eTtzW3QrZSszMl09eTtzW3QrZSs0MF09eTtzW3QrZSs0OF09eTtzW3QrZSs1Nl09eX19fWZ1bmN0aW9uIGJ1aWxkQ29tcG9uZW50RGF0YShlLHQpe2NvbnN0IGE9dC5ibG9ja3NQZXJMaW5lLG49dC5ibG9ja3NQZXJDb2x1bW4scz1uZXcgSW50MTZBcnJheSg2NCk7Zm9yKGxldCBlPTA7ZTxuO2UrKylmb3IobGV0IG49MDtuPGE7bisrKXtxdWFudGl6ZUFuZEludmVyc2UodCxnZXRCbG9ja0J1ZmZlck9mZnNldCh0LGUsbikscyl9cmV0dXJuIHQuYmxvY2tEYXRhfWZ1bmN0aW9uIGZpbmROZXh0RmlsZU1hcmtlcihlLHQsYSxuPWEpe2NvbnN0IHM9ZS5sZW5ndGgtMTtsZXQgcj1uPGE/bjphO2lmKGE+PXMpcmV0dXJuIG51bGw7Y29uc3QgaT10LmdldFVpbnQxNihhKTtpZihpPj02NTQ3MiYmaTw9NjU1MzQpcmV0dXJue2ludmFsaWQ6bnVsbCxtYXJrZXI6aSxvZmZzZXQ6YX07bGV0IG89dC5nZXRVaW50MTYocik7Zm9yKDshKG8+PTY1NDcyJiZvPD02NTUzNCk7KXtpZigrK3I+PXMpcmV0dXJuIG51bGw7bz10LmdldFVpbnQxNihyKX1yZXR1cm57aW52YWxpZDppLnRvU3RyaW5nKDE2KSxtYXJrZXI6byxvZmZzZXQ6cn19ZnVuY3Rpb24gcHJlcGFyZUNvbXBvbmVudHMoZSl7Y29uc3QgdD1NYXRoLmNlaWwoZS5zYW1wbGVzUGVyTGluZS84L2UubWF4SCksYT1NYXRoLmNlaWwoZS5zY2FuTGluZXMvOC9lLm1heFYpO2Zvcihjb25zdCBuIG9mIGUuY29tcG9uZW50cyl7Y29uc3Qgcz1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2FtcGxlc1BlckxpbmUvOCkqbi5oL2UubWF4SCkscj1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2NhbkxpbmVzLzgpKm4udi9lLm1heFYpLGk9dCpuLmgsbz02NCooYSpuLnYpKihpKzEpO24uYmxvY2tEYXRhPW5ldyBJbnQxNkFycmF5KG8pO24uYmxvY2tzUGVyTGluZT1zO24uYmxvY2tzUGVyQ29sdW1uPXJ9ZS5tY3VzUGVyTGluZT10O2UubWN1c1BlckNvbHVtbj1hfWZ1bmN0aW9uIHJlYWREYXRhQmxvY2soZSx0LGEpe2NvbnN0IG49dC5nZXRVaW50MTYoYSk7bGV0IHM9KGErPTIpK24tMjtjb25zdCByPWZpbmROZXh0RmlsZU1hcmtlcihlLHQscyxhKTtpZihyPy5pbnZhbGlkKXt3YXJuKCJyZWFkRGF0YUJsb2NrIC0gaW5jb3JyZWN0IGxlbmd0aCwgY3VycmVudCBtYXJrZXIgaXM6ICIrci5pbnZhbGlkKTtzPXIub2Zmc2V0fWNvbnN0IGk9ZS5zdWJhcnJheShhLHMpO3JldHVybnthcHBEYXRhOmksb2xkT2Zmc2V0OmEsbmV3T2Zmc2V0OmEraS5sZW5ndGh9fWZ1bmN0aW9uIHNraXBEYXRhKGUsdCxhKXtjb25zdCBuPXQuZ2V0VWludDE2KGEpLHM9KGErPTIpK24tMixyPWZpbmROZXh0RmlsZU1hcmtlcihlLHQscyxhKTtyZXR1cm4gcj8uaW52YWxpZD9yLm9mZnNldDpzfWNsYXNzIEpwZWdJbWFnZXtjb25zdHJ1Y3RvcihlKXt0aGlzLl9jb2xvclRyYW5zZm9ybT1lPy5jb2xvclRyYW5zZm9ybT8/LTF9c3RhdGljIGNhblVzZUltYWdlRGVjb2RlcihlLHQ9LTEpe2NvbnN0IGE9bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpLG49e3dpZHRoOjAsaGVpZ2h0OjAsZXhpZlN0YXJ0OjAsZXhpZkVuZDowfTtsZXQgcz0wLHI9bnVsbCxpPWEuZ2V0VWludDE2KHMpO3MrPTI7aWYoNjU0OTYhPT1pKXRocm93IG5ldyBKcGVnRXJyb3IoIlNPSSBub3QgZm91bmQiKTtpPWEuZ2V0VWludDE2KHMpO3MrPTI7ZTpmb3IoOzY1NDk3IT09aTspe3N3aXRjaChpKXtjYXNlIDY1NTA1OmNvbnN0e2FwcERhdGE6dCxvbGRPZmZzZXQ6byxuZXdPZmZzZXQ6bH09cmVhZERhdGFCbG9jayhlLGEscyk7cz1sO2lmKDY5PT09dFswXSYmMTIwPT09dFsxXSYmMTA1PT09dFsyXSYmMTAyPT09dFszXSYmMD09PXRbNF0mJjA9PT10WzVdKXtpZihuLmV4aWZTdGFydCl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJEdXBsaWNhdGUgRVhJRi1ibG9ja3MgZm91bmQuIik7bi5leGlmU3RhcnQ9bys2O24uZXhpZkVuZD1sfWk9YS5nZXRVaW50MTYocyk7cys9Mjtjb250aW51ZTtjYXNlIDY1NDcyOmNhc2UgNjU0NzM6Y2FzZSA2NTQ3NDpuLmhlaWdodD1hLmdldFVpbnQxNihzKzMpO24ud2lkdGg9YS5nZXRVaW50MTYocys1KTtyPWVbcys3XTticmVhayBlO2Nhc2UgNjU1MzU6MjU1IT09ZVtzXSYmcy0tfXM9c2tpcERhdGEoZSxhLHMpO2k9YS5nZXRVaW50MTYocyk7cys9Mn1yZXR1cm4gND09PXJ8fDM9PT1yJiYwPT09dD9udWxsOm59cGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQ9bnVsbH09e30pe2NvbnN0IGE9bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpLG49ZS5sZW5ndGgtMTtsZXQgcyxyLGk9MCxvPW51bGwsbD1udWxsLGY9MDtjb25zdCBjPVtdLGg9W10sdT1bXTtsZXQgbT1hLmdldFVpbnQxNihpKTtpKz0yO2lmKDY1NDk2IT09bSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJTT0kgbm90IGZvdW5kIik7bT1hLmdldFVpbnQxNihpKTtpKz0yO2U6Zm9yKDs2NTQ5NyE9PW07KXtsZXQgcCxkLGc7c3dpdGNoKG0pe2Nhc2UgNjU1MDQ6Y2FzZSA2NTUwNTpjYXNlIDY1NTA2OmNhc2UgNjU1MDc6Y2FzZSA2NTUwODpjYXNlIDY1NTA5OmNhc2UgNjU1MTA6Y2FzZSA2NTUxMTpjYXNlIDY1NTEyOmNhc2UgNjU1MTM6Y2FzZSA2NTUxNDpjYXNlIDY1NTE1OmNhc2UgNjU1MTY6Y2FzZSA2NTUxNzpjYXNlIDY1NTE4OmNhc2UgNjU1MTk6Y2FzZSA2NTUzNDpjb25zdHthcHBEYXRhOmIsbmV3T2Zmc2V0Ond9PXJlYWREYXRhQmxvY2soZSxhLGkpO2k9dzs2NTUwND09PW0mJjc0PT09YlswXSYmNzA9PT1iWzFdJiY3Mz09PWJbMl0mJjcwPT09YlszXSYmMD09PWJbNF0mJihvPXt2ZXJzaW9uOnttYWpvcjpiWzVdLG1pbm9yOmJbNl19LGRlbnNpdHlVbml0czpiWzddLHhEZW5zaXR5OmJbOF08PDh8Yls5XSx5RGVuc2l0eTpiWzEwXTw8OHxiWzExXSx0aHVtYldpZHRoOmJbMTJdLHRodW1iSGVpZ2h0OmJbMTNdLHRodW1iRGF0YTpiLnN1YmFycmF5KDE0LDE0KzMqYlsxMl0qYlsxM10pfSk7NjU1MTg9PT1tJiY2NT09PWJbMF0mJjEwMD09PWJbMV0mJjExMT09PWJbMl0mJjk4PT09YlszXSYmMTAxPT09Yls0XSYmKGw9e3ZlcnNpb246Yls1XTw8OHxiWzZdLGZsYWdzMDpiWzddPDw4fGJbOF0sZmxhZ3MxOmJbOV08PDh8YlsxMF0sdHJhbnNmb3JtQ29kZTpiWzExXX0pO2JyZWFrO2Nhc2UgNjU0OTk6Y29uc3Qgaj1hLmdldFVpbnQxNihpKTtpKz0yO2NvbnN0IGs9aitpLTI7bGV0IHk7Zm9yKDtpPGs7KXtjb25zdCB0PWVbaSsrXSxuPW5ldyBVaW50MTZBcnJheSg2NCk7aWYodD4+NCl7aWYodD4+NCE9MSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJEUVQgLSBpbnZhbGlkIHRhYmxlIHNwZWMiKTtmb3IoZD0wO2Q8NjQ7ZCsrKXt5PURhW2RdO25beV09YS5nZXRVaW50MTYoaSk7aSs9Mn19ZWxzZSBmb3IoZD0wO2Q8NjQ7ZCsrKXt5PURhW2RdO25beV09ZVtpKytdfWNbMTUmdF09bn1icmVhaztjYXNlIDY1NDcyOmNhc2UgNjU0NzM6Y2FzZSA2NTQ3NDppZihzKXRocm93IG5ldyBKcGVnRXJyb3IoIk9ubHkgc2luZ2xlIGZyYW1lIEpQRUdzIHN1cHBvcnRlZCIpO2krPTI7cz17fTtzLmV4dGVuZGVkPTY1NDczPT09bTtzLnByb2dyZXNzaXZlPTY1NDc0PT09bTtzLnByZWNpc2lvbj1lW2krK107Y29uc3QgcT1hLmdldFVpbnQxNihpKTtpKz0yO3Muc2NhbkxpbmVzPXR8fHE7cy5zYW1wbGVzUGVyTGluZT1hLmdldFVpbnQxNihpKTtpKz0yO3MuY29tcG9uZW50cz1bXTtzLmNvbXBvbmVudElkcz17fTtjb25zdCB2PWVbaSsrXTtsZXQgUz0wLHg9MDtmb3IocD0wO3A8djtwKyspe2NvbnN0IHQ9ZVtpXSxhPWVbaSsxXT4+NCxuPTE1JmVbaSsxXTtTPGEmJihTPWEpO3g8biYmKHg9bik7Y29uc3Qgcj1lW2krMl07Zz1zLmNvbXBvbmVudHMucHVzaCh7aDphLHY6bixxdWFudGl6YXRpb25JZDpyLHF1YW50aXphdGlvblRhYmxlOm51bGx9KTtzLmNvbXBvbmVudElkc1t0XT1nLTE7aSs9M31zLm1heEg9UztzLm1heFY9eDtwcmVwYXJlQ29tcG9uZW50cyhzKTticmVhaztjYXNlIDY1NDc2OmNvbnN0IEM9YS5nZXRVaW50MTYoaSk7aSs9Mjtmb3IocD0yO3A8Qzspe2NvbnN0IHQ9ZVtpKytdLGE9bmV3IFVpbnQ4QXJyYXkoMTYpO2xldCBuPTA7Zm9yKGQ9MDtkPDE2O2QrKyxpKyspbis9YVtkXT1lW2ldO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkobik7Zm9yKGQ9MDtkPG47ZCsrLGkrKylzW2RdPWVbaV07cCs9MTcrbjsodD4+ND9oOnUpWzE1JnRdPWJ1aWxkSHVmZm1hblRhYmxlKGEscyl9YnJlYWs7Y2FzZSA2NTUwMTppKz0yO3I9YS5nZXRVaW50MTYoaSk7aSs9MjticmVhaztjYXNlIDY1NDk4OmNvbnN0IEY9MT09PSsrZiYmIXQ7aSs9Mjtjb25zdCBUPWVbaSsrXSxSPVtdO2ZvcihwPTA7cDxUO3ArKyl7Y29uc3QgdD1lW2krK10sYT1zLmNvbXBvbmVudElkc1t0XSxuPXMuY29tcG9uZW50c1thXTtuLmluZGV4PXQ7Y29uc3Qgcj1lW2krK107bi5odWZmbWFuVGFibGVEQz11W3I+PjRdO24uaHVmZm1hblRhYmxlQUM9aFsxNSZyXTtSLnB1c2gobil9Y29uc3QgTz1lW2krK10sRD1lW2krK10sSD1lW2krK107dHJ5e2krPWRlY29kZVNjYW4oZSxhLGkscyxSLHIsTyxELEg+PjQsMTUmSCxGKX1jYXRjaCh0KXtpZih0IGluc3RhbmNlb2YgRE5MTWFya2VyRXJyb3Ipe3dhcm4oYCR7dC5tZXNzYWdlfSAtLSBhdHRlbXB0aW5nIHRvIHJlLXBhcnNlIHRoZSBKUEVHIGltYWdlLmApO3JldHVybiB0aGlzLnBhcnNlKGUse2RubFNjYW5MaW5lczp0LnNjYW5MaW5lc30pfWlmKHQgaW5zdGFuY2VvZiBFT0lNYXJrZXJFcnJvcil7d2FybihgJHt0Lm1lc3NhZ2V9IC0tIGlnbm9yaW5nIHRoZSByZXN0IG9mIHRoZSBpbWFnZSBkYXRhLmApO2JyZWFrIGV9dGhyb3cgdH1icmVhaztjYXNlIDY1NTAwOmkrPTQ7YnJlYWs7Y2FzZSA2NTUzNToyNTUhPT1lW2ldJiZpLS07YnJlYWs7ZGVmYXVsdDpjb25zdCBNPWZpbmROZXh0RmlsZU1hcmtlcihlLGEsaS0yLGktMyk7aWYoTT8uaW52YWxpZCl7d2FybigiSnBlZ0ltYWdlLnBhcnNlIC0gdW5leHBlY3RlZCBkYXRhLCBjdXJyZW50IG1hcmtlciBpczogIitNLmludmFsaWQpO2k9TS5vZmZzZXQ7YnJlYWt9aWYoIU18fGk+PW4pe3dhcm4oIkpwZWdJbWFnZS5wYXJzZSAtIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW1hZ2UgZGF0YSB3aXRob3V0IGZpbmRpbmcgYW4gRU9JIG1hcmtlciAoMHhGRkQ5KS4iKTticmVhayBlfXRocm93IG5ldyBKcGVnRXJyb3IoIkpwZWdJbWFnZS5wYXJzZSAtIHVua25vd24gbWFya2VyOiAiK20udG9TdHJpbmcoMTYpKX1pZihpPG4pe209YS5nZXRVaW50MTYoaSk7aSs9Mn1lbHNlIG09MH1pZighcyl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJKcGVnSW1hZ2UucGFyc2UgLSBubyBmcmFtZSBkYXRhIGZvdW5kLiIpO3RoaXMud2lkdGg9cy5zYW1wbGVzUGVyTGluZTt0aGlzLmhlaWdodD1zLnNjYW5MaW5lczt0aGlzLmpmaWY9bzt0aGlzLmFkb2JlPWw7dGhpcy5jb21wb25lbnRzPVtdO2Zvcihjb25zdCBlIG9mIHMuY29tcG9uZW50cyl7Y29uc3QgdD1jW2UucXVhbnRpemF0aW9uSWRdO3QmJihlLnF1YW50aXphdGlvblRhYmxlPXQpO3RoaXMuY29tcG9uZW50cy5wdXNoKHtpbmRleDplLmluZGV4LG91dHB1dDpidWlsZENvbXBvbmVudERhdGEoMCxlKSxzY2FsZVg6ZS5oL3MubWF4SCxzY2FsZVk6ZS52L3MubWF4VixibG9ja3NQZXJMaW5lOmUuYmxvY2tzUGVyTGluZSxibG9ja3NQZXJDb2x1bW46ZS5ibG9ja3NQZXJDb2x1bW59KX10aGlzLm51bUNvbXBvbmVudHM9dGhpcy5jb21wb25lbnRzLmxlbmd0aH0jVShlLHQpe2NvbnN0IGE9dGhpcy53aWR0aC9lLG49dGhpcy5oZWlnaHQvdDtsZXQgcyxyLGksbyxsLGYsYyxoLHU9MDtjb25zdCBtPXRoaXMuY29tcG9uZW50cy5sZW5ndGgscD1uZXcgVWludDhDbGFtcGVkQXJyYXkoZSp0Km0pLGQ9bmV3IFVpbnQzMkFycmF5KGUpLGc9NDI5NDk2NzI4ODtsZXQgYjtmb3IoYz0wO2M8bTtjKyspe3M9dGhpcy5jb21wb25lbnRzW2NdO3I9cy5zY2FsZVgqYTtpPXMuc2NhbGVZKm47dT1jO2NvbnN0IHc9cy5vdXRwdXQ7bz1zLmJsb2Nrc1BlckxpbmUrMTw8MztpZihyIT09Yil7Zm9yKGw9MDtsPGU7bCsrKXtoPTB8bCpyO2RbbF09KGgmZyk8PDN8NyZofWI9cn1mb3IoZj0wO2Y8dDtmKyspe2g9MHxmKmk7Y29uc3QgdD1vKihoJmcpfCg3JmgpPDwzO2ZvcihsPTA7bDxlO2wrKyl7cFt1XT13W3QrZFtsXV07dSs9bX19fXJldHVybiBwfWdldCBfaXNDb2xvckNvbnZlcnNpb25OZWVkZWQoKXtyZXR1cm4gdGhpcy5hZG9iZT8hIXRoaXMuYWRvYmUudHJhbnNmb3JtQ29kZTozPT09dGhpcy5udW1Db21wb25lbnRzPzAhPT10aGlzLl9jb2xvclRyYW5zZm9ybSYmKDgyIT09dGhpcy5jb21wb25lbnRzWzBdLmluZGV4fHw3MSE9PXRoaXMuY29tcG9uZW50c1sxXS5pbmRleHx8NjYhPT10aGlzLmNvbXBvbmVudHNbMl0uaW5kZXgpOjE9PT10aGlzLl9jb2xvclRyYW5zZm9ybX1fY29udmVydFljY1RvUmdiKGUpe2xldCB0LGEsbjtmb3IobGV0IHM9MCxyPWUubGVuZ3RoO3M8cjtzKz0zKXt0PWVbc107YT1lW3MrMV07bj1lW3MrMl07ZVtzXT10LTE3OS40NTYrMS40MDIqbjtlW3MrMV09dCsxMzUuNDU5LS4zNDQqYS0uNzE0Km47ZVtzKzJdPXQtMjI2LjgxNisxLjc3MiphfXJldHVybiBlfV9jb252ZXJ0WWNjVG9SZ2JhKGUsdCl7Zm9yKGxldCBhPTAsbj0wLHM9ZS5sZW5ndGg7YTxzO2ErPTMsbis9NCl7Y29uc3Qgcz1lW2FdLHI9ZVthKzFdLGk9ZVthKzJdO3Rbbl09cy0xNzkuNDU2KzEuNDAyKmk7dFtuKzFdPXMrMTM1LjQ1OS0uMzQ0KnItLjcxNCppO3RbbisyXT1zLTIyNi44MTYrMS43NzIqcjt0W24rM109MjU1fXJldHVybiB0fV9jb252ZXJ0WWNja1RvUmdiKGUpe3RoaXMuX2NvbnZlcnRZY2NrVG9DbXlrKGUpO3JldHVybiB0aGlzLl9jb252ZXJ0Q215a1RvUmdiKGUpfV9jb252ZXJ0WWNja1RvUmdiYShlKXt0aGlzLl9jb252ZXJ0WWNja1RvQ215ayhlKTtyZXR1cm4gdGhpcy5fY29udmVydENteWtUb1JnYmEoZSl9X2NvbnZlcnRZY2NrVG9DbXlrKGUpe2xldCB0LGEsbjtmb3IobGV0IHM9MCxyPWUubGVuZ3RoO3M8cjtzKz00KXt0PWVbc107YT1lW3MrMV07bj1lW3MrMl07ZVtzXT00MzQuNDU2LXQtMS40MDIqbjtlW3MrMV09MTE5LjU0MS10Ky4zNDQqYSsuNzE0Km47ZVtzKzJdPTQ4MS44MTYtdC0xLjc3MiphfXJldHVybiBlfV9jb252ZXJ0Q215a1RvUmdiKGUpe2NvbnN0IHQ9ZS5sZW5ndGgvNDtDb2xvclNwYWNlVXRpbHMuY215ay5nZXRSZ2JCdWZmZXIoZSwwLHQsZSwwLDgsMCk7cmV0dXJuIGUuc3ViYXJyYXkoMCwzKnQpfV9jb252ZXJ0Q215a1RvUmdiYShlKXtDb2xvclNwYWNlVXRpbHMuY215ay5nZXRSZ2JCdWZmZXIoZSwwLGUubGVuZ3RoLzQsZSwwLDgsMSk7aWYoQ29sb3JTcGFjZVV0aWxzLmNteWsgaW5zdGFuY2VvZiBEZXZpY2VDbXlrQ1MpZm9yKGxldCB0PTMsYT1lLmxlbmd0aDt0PGE7dCs9NCllW3RdPTI1NTtyZXR1cm4gZX1nZXREYXRhKHt3aWR0aDplLGhlaWdodDp0LGZvcmNlUkdCQTphPSExLGZvcmNlUkdCOm49ITF9KXtpZih0aGlzLm51bUNvbXBvbmVudHM+NCl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJVbnN1cHBvcnRlZCBjb2xvciBtb2RlIik7Y29uc3Qgcz10aGlzLiNVKGUsdCk7aWYoMT09PXRoaXMubnVtQ29tcG9uZW50cyYmKGF8fG4pKXtjb25zdCBlPXMubGVuZ3RoKihhPzQ6MyksdD1uZXcgVWludDhDbGFtcGVkQXJyYXkoZSk7aWYoYSkhZnVuY3Rpb24gZ3JheVRvUkdCQShlLHQpe2lmKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuKWZvcihsZXQgYT0wLG49ZS5sZW5ndGg7YTxuO2ErKyl0W2FdPTY1NzkzKmVbYV18NDI3ODE5MDA4MDtlbHNlIGZvcihsZXQgYT0wLG49ZS5sZW5ndGg7YTxuO2ErKyl0W2FdPTE2ODQzMDA4KmVbYV18MjU1fShzLG5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlcikpO2Vsc2V7bGV0IGU9MDtmb3IoY29uc3QgYSBvZiBzKXt0W2UrK109YTt0W2UrK109YTt0W2UrK109YX19cmV0dXJuIHR9aWYoMz09PXRoaXMubnVtQ29tcG9uZW50cyYmdGhpcy5faXNDb2xvckNvbnZlcnNpb25OZWVkZWQpe2lmKGEpe2NvbnN0IGU9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHMubGVuZ3RoLzMqNCk7cmV0dXJuIHRoaXMuX2NvbnZlcnRZY2NUb1JnYmEocyxlKX1yZXR1cm4gdGhpcy5fY29udmVydFljY1RvUmdiKHMpfWlmKDQ9PT10aGlzLm51bUNvbXBvbmVudHMpe2lmKHRoaXMuX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKXJldHVybiBhP3RoaXMuX2NvbnZlcnRZY2NrVG9SZ2JhKHMpOm4/dGhpcy5fY29udmVydFljY2tUb1JnYihzKTp0aGlzLl9jb252ZXJ0WWNja1RvQ215ayhzKTtpZihhKXJldHVybiB0aGlzLl9jb252ZXJ0Q215a1RvUmdiYShzKTtpZihuKXJldHVybiB0aGlzLl9jb252ZXJ0Q215a1RvUmdiKHMpfXJldHVybiBzfX1jbGFzcyBKcGVnU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte3N0YXRpYyNFPUZlYXR1cmVUZXN0LmlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkO2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10O3RoaXMucGFyYW1zPWF9c3RhdGljIGdldCBjYW5Vc2VJbWFnZURlY29kZXIoKXtyZXR1cm4gc2hhZG93KHRoaXMsImNhblVzZUltYWdlRGVjb2RlciIsdGhpcy4jRT9JbWFnZURlY29kZXIuaXNUeXBlU3VwcG9ydGVkKCJpbWFnZS9qcGVnIik6UHJvbWlzZS5yZXNvbHZlKCExKSl9c3RhdGljIHNldE9wdGlvbnMoe2lzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkOmU9ITF9KXt0aGlzLiNFPWV9Z2V0IGJ5dGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJieXRlcyIsdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpfWVuc3VyZUJ1ZmZlcihlKXt9cmVhZEJsb2NrKCl7dGhpcy5kZWNvZGVJbWFnZSgpfWdldCBqcGVnT3B0aW9ucygpe2NvbnN0IGU9e2NvbG9yVHJhbnNmb3JtOnZvaWQgMH07aWYodGhpcy5wYXJhbXMgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCB0PXRoaXMucGFyYW1zLmdldCgiQ29sb3JUcmFuc2Zvcm0iKTtOdW1iZXIuaXNJbnRlZ2VyKHQpJiYoZS5jb2xvclRyYW5zZm9ybT10KX1yZXR1cm4gc2hhZG93KHRoaXMsImpwZWdPcHRpb25zIixlKX0jVyhlKXtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoLTE7dDxhO3QrKylpZigyNTU9PT1lW3RdJiYyMTY9PT1lW3QrMV0pe3Q+MCYmKGU9ZS5zdWJhcnJheSh0KSk7YnJlYWt9cmV0dXJuIGV9ZGVjb2RlSW1hZ2UoZSl7aWYodGhpcy5lb2YpcmV0dXJuIHRoaXMuYnVmZmVyO2U9dGhpcy4jVyhlfHx0aGlzLmJ5dGVzKTtjb25zdCB0PW5ldyBKcGVnSW1hZ2UodGhpcy5qcGVnT3B0aW9ucyk7dC5wYXJzZShlKTtjb25zdCBhPXQuZ2V0RGF0YSh7d2lkdGg6dGhpcy5kcmF3V2lkdGgsaGVpZ2h0OnRoaXMuZHJhd0hlaWdodCxmb3JjZVJHQkE6dGhpcy5mb3JjZVJHQkEsZm9yY2VSR0I6dGhpcy5mb3JjZVJHQn0pO3RoaXMuYnVmZmVyPWE7dGhpcy5idWZmZXJMZW5ndGg9YS5sZW5ndGg7dGhpcy5lb2Y9ITA7cmV0dXJuIHRoaXMuYnVmZmVyfWdldCBjYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlcigpe3JldHVybiB0aGlzLnN0cmVhbS5pc0FzeW5jfWFzeW5jIGdldFRyYW5zZmVyYWJsZUltYWdlKGUsdCl7aWYoIWF3YWl0IEpwZWdTdHJlYW0uY2FuVXNlSW1hZ2VEZWNvZGVyKXJldHVybiBudWxsO2NvbnN0IGE9dGhpcy5qcGVnT3B0aW9ucztsZXQgbjt0cnl7Y29uc3Qgcz10aGlzLmNhbkFzeW5jRGVjb2RlSW1hZ2VGcm9tQnVmZmVyJiZhd2FpdCB0aGlzLnN0cmVhbS5hc3luY0dldEJ5dGVzKCl8fHRoaXMuYnl0ZXM7aWYoIXMpcmV0dXJuIG51bGw7bGV0IHI9dGhpcy4jVyhzKTtjb25zdCBpPUpwZWdJbWFnZS5jYW5Vc2VJbWFnZURlY29kZXIocixhLmNvbG9yVHJhbnNmb3JtKTtpZighaSlyZXR1cm4gbnVsbDtjb25zdHt3aWR0aDpvLGhlaWdodDpsfT1pLGY9SW1hZ2VSZXNpemVyLmdldFJlZHVjZVBvd2VyKG8sbCk7aWYoKG8hPT1lfHxsIT09dCkmJihmfHwhbCkpcmV0dXJuIG51bGw7aWYoaS5leGlmU3RhcnQpe3I9ci5zbGljZSgpO3IuZmlsbCgwLGkuZXhpZlN0YXJ0LGkuZXhpZkVuZCl9Y29uc3QgYz17ZGF0YTpyLHR5cGU6ImltYWdlL2pwZWciLHByZWZlckFuaW1hdGlvbjohMX07aWYoZil7Y29uc3QgZT0yKipmO2MuZGVzaXJlZFdpZHRoPU1hdGguY2VpbChvL2UpO2MuZGVzaXJlZEhlaWdodD1NYXRoLmNlaWwobC9lKX1uPW5ldyBJbWFnZURlY29kZXIoYyk7cmV0dXJuKGF3YWl0IG4uZGVjb2RlKCkpLmltYWdlfWNhdGNoKGUpe3dhcm4oYGdldFRyYW5zZmVyYWJsZUltYWdlIC0gZmFpbGVkOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9ZmluYWxseXtuPy5jbG9zZSgpfX1nZXQgaXNJbWFnZVN0cmVhbSgpe3JldHVybiEwfX1mdW5jdGlvbiBhZGRTdGF0ZShlLHQsYSxuLHMpe2xldCByPWU7Zm9yKGxldCBlPTAsYT10Lmxlbmd0aC0xO2U8YTtlKyspe2NvbnN0IGE9dFtlXTtyPXJbYV18fD1bXX1yW3QuYXQoLTEpXT17Y2hlY2tGbjphLGl0ZXJhdGVGbjpuLHByb2Nlc3NGbjpzfX1jb25zdCBVYT1bXTthZGRTdGF0ZShVYSxbeWUsdmUsX3QscWVdLG51bGwsZnVuY3Rpb24gaXRlcmF0ZUlubGluZUltYWdlR3JvdXAoZSx0KXtjb25zdCBhPWUuZm5BcnJheSxuPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChuKXtjYXNlIDA6cmV0dXJuIGFbdF09PT15ZTtjYXNlIDE6cmV0dXJuIGFbdF09PT12ZTtjYXNlIDI6cmV0dXJuIGFbdF09PT1fdDtjYXNlIDM6cmV0dXJuIGFbdF09PT1xZX10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVJbmxpbmVJbWFnZUdyb3VwIC0gaW52YWxpZCBwb3M6ICR7bn1gKX0sZnVuY3Rpb24gZm91bmRJbmxpbmVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj1lLmFyZ3NBcnJheSxzPWUuaUN1cnIscj1zLTMsaT1zLTIsbz1zLTEsbD1NYXRoLm1pbihNYXRoLmZsb29yKCh0LXIpLzQpLDIwMCk7aWYobDwxMClyZXR1cm4gdC0odC1yKSU0O2xldCBmPTA7Y29uc3QgYz1bXTtsZXQgaD0wLHU9MSxtPTE7Zm9yKGxldCBlPTA7ZTxsO2UrKyl7Y29uc3QgdD1uW2krKGU8PDIpXSxhPW5bbysoZTw8MildWzBdO2lmKHUrYS53aWR0aD4xZTMpe2Y9TWF0aC5tYXgoZix1KTttKz1oKzI7dT0wO2g9MH1jLnB1c2goe3RyYW5zZm9ybTp0LHg6dSx5Om0sdzphLndpZHRoLGg6YS5oZWlnaHR9KTt1Kz1hLndpZHRoKzI7aD1NYXRoLm1heChoLGEuaGVpZ2h0KX1jb25zdCBwPU1hdGgubWF4KGYsdSkrMSxkPW0raCsxLGc9bmV3IFVpbnQ4QXJyYXkocCpkKjQpLGI9cDw8Mjtmb3IobGV0IGU9MDtlPGw7ZSsrKXtjb25zdCB0PW5bbysoZTw8MildWzBdLmRhdGEsYT1jW2VdLnc8PDI7bGV0IHM9MCxyPWNbZV0ueCtjW2VdLnkqcDw8MjtnLnNldCh0LnN1YmFycmF5KDAsYSksci1iKTtmb3IobGV0IG49MCxpPWNbZV0uaDtuPGk7bisrKXtnLnNldCh0LnN1YmFycmF5KHMscythKSxyKTtzKz1hO3IrPWJ9Zy5zZXQodC5zdWJhcnJheShzLWEscykscik7Zm9yKDtyPj0wOyl7dFtyLTRdPXRbcl07dFtyLTNdPXRbcisxXTt0W3ItMl09dFtyKzJdO3Rbci0xXT10W3IrM107dFtyK2FdPXRbcithLTRdO3RbcithKzFdPXRbcithLTNdO3RbcithKzJdPXRbcithLTJdO3RbcithKzNdPXRbcithLTFdO3ItPWJ9fWNvbnN0IHc9e3dpZHRoOnAsaGVpZ2h0OmR9O2lmKGUuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpe2NvbnN0IGU9bmV3IE9mZnNjcmVlbkNhbnZhcyhwLGQpO2UuZ2V0Q29udGV4dCgiMmQiKS5wdXRJbWFnZURhdGEobmV3IEltYWdlRGF0YShuZXcgVWludDhDbGFtcGVkQXJyYXkoZy5idWZmZXIpLHAsZCksMCwwKTt3LmJpdG1hcD1lLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpO3cuZGF0YT1udWxsfWVsc2V7dy5raW5kPVQ7dy5kYXRhPWd9YS5zcGxpY2Uociw0KmwsenQpO24uc3BsaWNlKHIsNCpsLFt3LGNdKTtyZXR1cm4gcisxfSk7YWRkU3RhdGUoVWEsW3llLHZlLE50LHFlXSxudWxsLGZ1bmN0aW9uIGl0ZXJhdGVJbWFnZU1hc2tHcm91cChlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LG49KHQtKGUuaUN1cnItMykpJTQ7c3dpdGNoKG4pe2Nhc2UgMDpyZXR1cm4gYVt0XT09PXllO2Nhc2UgMTpyZXR1cm4gYVt0XT09PXZlO2Nhc2UgMjpyZXR1cm4gYVt0XT09PU50O2Nhc2UgMzpyZXR1cm4gYVt0XT09PXFlfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZUltYWdlTWFza0dyb3VwIC0gaW52YWxpZCBwb3M6ICR7bn1gKX0sZnVuY3Rpb24gZm91bmRJbWFnZU1hc2tHcm91cChlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LG49ZS5hcmdzQXJyYXkscz1lLmlDdXJyLHI9cy0zLGk9cy0yLG89cy0xO2xldCBsPU1hdGguZmxvb3IoKHQtcikvNCk7aWYobDwxMClyZXR1cm4gdC0odC1yKSU0O2xldCBmLGMsaD0hMTtjb25zdCB1PW5bb11bMF0sbT1uW2ldWzBdLHA9bltpXVsxXSxkPW5baV1bMl0sZz1uW2ldWzNdO2lmKHA9PT1kKXtoPSEwO2Y9aSs0O2xldCBlPW8rNDtmb3IobGV0IHQ9MTt0PGw7dCsrLGYrPTQsZSs9NCl7Yz1uW2ZdO2lmKG5bZV1bMF0hPT11fHxjWzBdIT09bXx8Y1sxXSE9PXB8fGNbMl0hPT1kfHxjWzNdIT09Zyl7dDwxMD9oPSExOmw9dDticmVha319fWlmKGgpe2w9TWF0aC5taW4obCwxZTMpO2NvbnN0IGU9bmV3IEZsb2F0MzJBcnJheSgyKmwpO2Y9aTtmb3IobGV0IHQ9MDt0PGw7dCsrLGYrPTQpe2M9bltmXTtlW3Q8PDFdPWNbNF07ZVsxKyh0PDwxKV09Y1s1XX1hLnNwbGljZShyLDQqbCxVdCk7bi5zcGxpY2Uociw0KmwsW3UsbSxwLGQsZyxlXSl9ZWxzZXtsPU1hdGgubWluKGwsMTAwKTtjb25zdCBlPVtdO2ZvcihsZXQgdD0wO3Q8bDt0Kyspe2M9bltpKyh0PDwyKV07Y29uc3QgYT1uW28rKHQ8PDIpXVswXTtlLnB1c2goe2RhdGE6YS5kYXRhLHdpZHRoOmEud2lkdGgsaGVpZ2h0OmEuaGVpZ2h0LGludGVycG9sYXRlOmEuaW50ZXJwb2xhdGUsY291bnQ6YS5jb3VudCx0cmFuc2Zvcm06Y30pfWEuc3BsaWNlKHIsNCpsLFB0KTtuLnNwbGljZShyLDQqbCxbZV0pfXJldHVybiByKzF9KTthZGRTdGF0ZShVYSxbeWUsdmUsRXQscWVdLGZ1bmN0aW9uKGUpe2NvbnN0IHQ9ZS5hcmdzQXJyYXksYT1lLmlDdXJyLTI7cmV0dXJuIDA9PT10W2FdWzFdJiYwPT09dFthXVsyXX0sZnVuY3Rpb24gaXRlcmF0ZUltYWdlR3JvdXAoZSx0KXtjb25zdCBhPWUuZm5BcnJheSxuPWUuYXJnc0FycmF5LHM9KHQtKGUuaUN1cnItMykpJTQ7c3dpdGNoKHMpe2Nhc2UgMDpyZXR1cm4gYVt0XT09PXllO2Nhc2UgMTppZihhW3RdIT09dmUpcmV0dXJuITE7Y29uc3Qgcz1lLmlDdXJyLTIscj1uW3NdWzBdLGk9bltzXVszXTtyZXR1cm4gblt0XVswXT09PXImJjA9PT1uW3RdWzFdJiYwPT09blt0XVsyXSYmblt0XVszXT09PWk7Y2FzZSAyOmlmKGFbdF0hPT1FdClyZXR1cm4hMTtjb25zdCBvPW5bZS5pQ3Vyci0xXVswXTtyZXR1cm4gblt0XVswXT09PW87Y2FzZSAzOnJldHVybiBhW3RdPT09cWV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VHcm91cCAtIGludmFsaWQgcG9zOiAke3N9YCl9LGZ1bmN0aW9uKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj1lLmFyZ3NBcnJheSxzPWUuaUN1cnIscj1zLTMsaT1zLTIsbz1uW3MtMV1bMF0sbD1uW2ldWzBdLGY9bltpXVszXSxjPU1hdGgubWluKE1hdGguZmxvb3IoKHQtcikvNCksMWUzKTtpZihjPDMpcmV0dXJuIHQtKHQtciklNDtjb25zdCBoPW5ldyBGbG9hdDMyQXJyYXkoMipjKTtsZXQgdT1pO2ZvcihsZXQgZT0wO2U8YztlKyssdSs9NCl7Y29uc3QgdD1uW3VdO2hbZTw8MV09dFs0XTtoWzErKGU8PDEpXT10WzVdfWNvbnN0IG09W28sbCxmLGhdO2Euc3BsaWNlKHIsNCpjLEx0KTtuLnNwbGljZShyLDQqYyxtKTtyZXR1cm4gcisxfSk7YWRkU3RhdGUoVWEsW0xlLFZlLFplLHR0LFVlXSxudWxsLGZ1bmN0aW9uIGl0ZXJhdGVTaG93VGV4dEdyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj1lLmFyZ3NBcnJheSxzPSh0LShlLmlDdXJyLTQpKSU1O3N3aXRjaChzKXtjYXNlIDA6cmV0dXJuIGFbdF09PT1MZTtjYXNlIDE6cmV0dXJuIGFbdF09PT1WZTtjYXNlIDI6cmV0dXJuIGFbdF09PT1aZTtjYXNlIDM6aWYoYVt0XSE9PXR0KXJldHVybiExO2NvbnN0IHM9ZS5pQ3Vyci0zLHI9bltzXVswXSxpPW5bc11bMV07cmV0dXJuIG5bdF1bMF09PT1yJiZuW3RdWzFdPT09aTtjYXNlIDQ6cmV0dXJuIGFbdF09PT1VZX10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVTaG93VGV4dEdyb3VwIC0gaW52YWxpZCBwb3M6ICR7c31gKX0sZnVuY3Rpb24oZSx0KXtjb25zdCBhPWUuZm5BcnJheSxuPWUuYXJnc0FycmF5LHM9ZS5pQ3VycixyPXMtNCxpPXMtMyxvPXMtMixsPXMtMSxmPXMsYz1uW2ldWzBdLGg9bltpXVsxXTtsZXQgdT1NYXRoLm1pbihNYXRoLmZsb29yKCh0LXIpLzUpLDFlMyk7aWYodTwzKXJldHVybiB0LSh0LXIpJTU7bGV0IG09cjtpZihyPj00JiZhW3ItNF09PT1hW2ldJiZhW3ItM109PT1hW29dJiZhW3ItMl09PT1hW2xdJiZhW3ItMV09PT1hW2ZdJiZuW3ItNF1bMF09PT1jJiZuW3ItNF1bMV09PT1oKXt1Kys7bS09NX1sZXQgcD1tKzQ7Zm9yKGxldCBlPTE7ZTx1O2UrKyl7YS5zcGxpY2UocCwzKTtuLnNwbGljZShwLDMpO3ArPTJ9cmV0dXJuIHArMX0pO2FkZFN0YXRlKFVhLFt5ZSx2ZSxYdCxxZV0sZT0+e2NvbnN0IHQ9ZS5hcmdzQXJyYXksYT10W2UuaUN1cnItMV1bMF07aWYoYSE9PVJlJiZhIT09T2UmJmEhPT1IZSYmYSE9PU1lJiZhIT09TmUmJmEhPT1QZSlyZXR1cm4hMDtjb25zdCBuPXRbZS5pQ3Vyci0yXTtyZXR1cm4gMT09PW5bMF0mJjA9PT1uWzFdJiYwPT09blsyXSYmMT09PW5bM119LCgpPT4hMSwoZSx0KT0+e2NvbnN0e2ZuQXJyYXk6bixhcmdzQXJyYXk6c309ZSxyPWUuaUN1cnIsaT1yLTMsbz1yLTIsbD1zW3ItMV0sZj1zW29dLFssW2NdLGhdPWw7aWYoaCl7Y29uc3QgZT1hLnNsaWNlKCk7VXRpbC5heGlhbEFsaWduZWRCb3VuZGluZ0JveChoLGYsZSk7aC5zZXQoZSk7Zm9yKGxldCBlPTAsdD1jLmxlbmd0aDtlPHQ7KXN3aXRjaChjW2UrK10pe2Nhc2UgJHQ6Y2FzZSBZdDpVdGlsLmFwcGx5VHJhbnNmb3JtKGMsZixlKTtlKz0yO2JyZWFrO2Nhc2UgSnQ6VXRpbC5hcHBseVRyYW5zZm9ybVRvQmV6aWVyKGMsZixlKTtlKz02fX1uLnNwbGljZShpLDQsWHQpO3Muc3BsaWNlKGksNCxsKTtyZXR1cm4gaSsxfSk7Y2xhc3MgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXt0aGlzLnF1ZXVlPWV9X29wdGltaXplKCl7fXB1c2goZSx0KXt0aGlzLnF1ZXVlLmZuQXJyYXkucHVzaChlKTt0aGlzLnF1ZXVlLmFyZ3NBcnJheS5wdXNoKHQpO3RoaXMuX29wdGltaXplKCl9Zmx1c2goKXt9cmVzZXQoKXt9fWNsYXNzIFF1ZXVlT3B0aW1pemVyIGV4dGVuZHMgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLnN0YXRlPW51bGw7dGhpcy5jb250ZXh0PXtpQ3VycjowLGZuQXJyYXk6ZS5mbkFycmF5LGFyZ3NBcnJheTplLmFyZ3NBcnJheSxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpPcGVyYXRvckxpc3QuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWR9O3RoaXMubWF0Y2g9bnVsbDt0aGlzLmxhc3RQcm9jZXNzZWQ9MH1fb3B0aW1pemUoKXtjb25zdCBlPXRoaXMucXVldWUuZm5BcnJheTtsZXQgdD10aGlzLmxhc3RQcm9jZXNzZWQsYT1lLmxlbmd0aCxuPXRoaXMuc3RhdGUscz10aGlzLm1hdGNoO2lmKCFuJiYhcyYmdCsxPT09YSYmIVVhW2VbdF1dKXt0aGlzLmxhc3RQcm9jZXNzZWQ9YTtyZXR1cm59Y29uc3Qgcj10aGlzLmNvbnRleHQ7Zm9yKDt0PGE7KXtpZihzKXtpZigoMCxzLml0ZXJhdGVGbikocix0KSl7dCsrO2NvbnRpbnVlfXQ9KDAscy5wcm9jZXNzRm4pKHIsdCsxKTthPWUubGVuZ3RoO3M9bnVsbDtuPW51bGw7aWYodD49YSlicmVha31uPShufHxVYSlbZVt0XV07aWYobiYmIUFycmF5LmlzQXJyYXkobikpe3IuaUN1cnI9dDt0Kys7aWYoIW4uY2hlY2tGbnx8KDAsbi5jaGVja0ZuKShyKSl7cz1uO249bnVsbH1lbHNlIG49bnVsbH1lbHNlIHQrK310aGlzLnN0YXRlPW47dGhpcy5tYXRjaD1zO3RoaXMubGFzdFByb2Nlc3NlZD10fWZsdXNoKCl7Zm9yKDt0aGlzLm1hdGNoOyl7Y29uc3QgZT10aGlzLnF1ZXVlLmZuQXJyYXkubGVuZ3RoO3RoaXMubGFzdFByb2Nlc3NlZD0oMCx0aGlzLm1hdGNoLnByb2Nlc3NGbikodGhpcy5jb250ZXh0LGUpO3RoaXMubWF0Y2g9bnVsbDt0aGlzLnN0YXRlPW51bGw7dGhpcy5fb3B0aW1pemUoKX19cmVzZXQoKXt0aGlzLnN0YXRlPW51bGw7dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfX1jbGFzcyBPcGVyYXRvckxpc3R7c3RhdGljIENIVU5LX1NJWkU9MWUzO3N0YXRpYyBDSFVOS19TSVpFX0FCT1VUPXRoaXMuQ0hVTktfU0laRS01O3N0YXRpYyBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD0hMTtjb25zdHJ1Y3RvcihlPTAsdCl7dGhpcy5fc3RyZWFtU2luaz10O3RoaXMuZm5BcnJheT1bXTt0aGlzLmFyZ3NBcnJheT1bXTt0aGlzLm9wdGltaXplcj0hdHx8ZSZtP25ldyBOdWxsT3B0aW1pemVyKHRoaXMpOm5ldyBRdWV1ZU9wdGltaXplcih0aGlzKTt0aGlzLmRlcGVuZGVuY2llcz1uZXcgU2V0O3RoaXMud2VpZ2h0PTA7dGhpcy5fcmVzb2x2ZWQ9dD9udWxsOlByb21pc2UucmVzb2x2ZSgpfXN0YXRpYyBzZXRPcHRpb25zKHtpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDplfSl7dGhpcy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD1lfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5hcmdzQXJyYXkubGVuZ3RofWdldCByZWFkeSgpe3JldHVybiB0aGlzLl9yZXNvbHZlZHx8dGhpcy5fc3RyZWFtU2luay5yZWFkeX1hZGRPcChlLHQpe3RoaXMub3B0aW1pemVyLnB1c2goZSx0KTt0aGlzLndlaWdodCsrO3RoaXMuX3N0cmVhbVNpbmsmJih0aGlzLndlaWdodD49T3BlcmF0b3JMaXN0LkNIVU5LX1NJWkV8fHRoaXMud2VpZ2h0Pj1PcGVyYXRvckxpc3QuQ0hVTktfU0laRV9BQk9VVCYmKGU9PT1xZXx8ZT09PVVlKSkmJnRoaXMuZmx1c2goKX1hZGRJbWFnZU9wcyhlLHQsYSxuPSExKXtpZihuKXt0aGlzLmFkZE9wKHllKTt0aGlzLmFkZE9wKGtlLFtbWyJTTWFzayIsITFdXV0pfXZvaWQgMCE9PWEmJnRoaXMuYWRkT3AoQ3QsWyJPQyIsYV0pO3RoaXMuYWRkT3AoZSx0KTt2b2lkIDAhPT1hJiZ0aGlzLmFkZE9wKEl0LFtdKTtuJiZ0aGlzLmFkZE9wKHFlKX1hZGREZXBlbmRlbmN5KGUpe2lmKCF0aGlzLmRlcGVuZGVuY2llcy5oYXMoZSkpe3RoaXMuZGVwZW5kZW5jaWVzLmFkZChlKTt0aGlzLmFkZE9wKHVlLFtlXSl9fWFkZERlcGVuZGVuY2llcyhlKXtmb3IoY29uc3QgdCBvZiBlKXRoaXMuYWRkRGVwZW5kZW5jeSh0KX1hZGRPcExpc3QoZSl7aWYoZSBpbnN0YW5jZW9mIE9wZXJhdG9yTGlzdCl7Zm9yKGNvbnN0IHQgb2YgZS5kZXBlbmRlbmNpZXMpdGhpcy5kZXBlbmRlbmNpZXMuYWRkKHQpO2ZvcihsZXQgdD0wLGE9ZS5sZW5ndGg7dDxhO3QrKyl0aGlzLmFkZE9wKGUuZm5BcnJheVt0XSxlLmFyZ3NBcnJheVt0XSl9ZWxzZSB3YXJuKCdhZGRPcExpc3QgLSBpZ25vcmluZyBpbnZhbGlkICJvcExpc3QiIHBhcmFtZXRlci4nKX1nZXRJUigpe3JldHVybntmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGVuZ3RoOnRoaXMubGVuZ3RofX1nZXQgX3RyYW5zZmVycygpe2NvbnN0IGU9W10se2ZuQXJyYXk6dCxhcmdzQXJyYXk6YSxsZW5ndGg6bn09dGhpcztmb3IobGV0IHM9MDtzPG47cysrKXN3aXRjaCh0W3NdKXtjYXNlIF90OmNhc2UgenQ6Y2FzZSBOdDp7Y29uc3R7Yml0bWFwOnQsZGF0YTpufT1hW3NdWzBdOyh0fHxuPy5idWZmZXIpJiZlLnB1c2godHx8bi5idWZmZXIpO2JyZWFrfWNhc2UgWHQ6e2NvbnN0WyxbdF0sbl09YVtzXTt0JiZlLnB1c2godC5idWZmZXIsbi5idWZmZXIpO2JyZWFrfWNhc2UgUnQ6Y29uc3RbdCxuXT1hW3NdO3QmJmUucHVzaCh0LmJ1ZmZlcik7biYmZS5wdXNoKG4uYnVmZmVyKTticmVhaztjYXNlIFplOmUucHVzaChhW3NdWzBdLmJ1ZmZlcil9cmV0dXJuIGV9Zmx1c2goZT0hMSx0PW51bGwpe3RoaXMub3B0aW1pemVyLmZsdXNoKCk7dGhpcy5fc3RyZWFtU2luay5lbnF1ZXVlKHtmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGFzdENodW5rOmUsc2VwYXJhdGVBbm5vdHM6dCxsZW5ndGg6dGhpcy5sZW5ndGh9LDEsdGhpcy5fdHJhbnNmZXJzKTt0aGlzLmRlcGVuZGVuY2llcy5jbGVhcigpO3RoaXMuZm5BcnJheS5sZW5ndGg9MDt0aGlzLmFyZ3NBcnJheS5sZW5ndGg9MDt0aGlzLndlaWdodD0wO3RoaXMub3B0aW1pemVyLnJlc2V0KCl9fWNsYXNzIENoZWNrZWRPcGVyYXRvckxpc3QgZXh0ZW5kcyBPcGVyYXRvckxpc3R7bmVlZHNJc29sYXRpb249ITE7aGFzU29mdE1hc2s9ITE7YWRkT3AoZSx0KXtpZighdGhpcy5uZWVkc0lzb2xhdGlvbnx8IXRoaXMuaGFzU29mdE1hc2spaWYoZT09PUJ0KXt0aGlzLm5lZWRzSXNvbGF0aW9ufHw9dFswXS5uZWVkc0lzb2xhdGlvbjt0aGlzLmhhc1NvZnRNYXNrfHw9dFswXS5oYXNTb2Z0TWFza31lbHNlIGlmKGU9PT1rZSlmb3IoY29uc3RbZSxhXW9mIHRbMF0paWYoIkJNIj09PWUmJiJzb3VyY2Utb3ZlciIhPT1hKXRoaXMubmVlZHNJc29sYXRpb249ITA7ZWxzZSBpZigiU01hc2siPT09ZSYmITEhPT1hKXt0aGlzLm5lZWRzSXNvbGF0aW9uPSEwO3RoaXMuaGFzU29mdE1hc2s9ITB9c3VwZXIuYWRkT3AoZSx0KX19Y29uc3QgV2E9MSxYYT0yLEthPTMsR2E9NCxWYT01LCRhPTYsWWE9NztmdW5jdGlvbiBnZXRDb2xvckNvbnZlcnNpb25CYXRjaFNpemUoZSx0KXtyZXR1cm4gTWF0aENsYW1wKE1hdGguZmxvb3IoNjU1MzYvdCksMSxlKX1mdW5jdGlvbiBwYXJzZVNoYWRpbmdGdW5jdGlvbihlLHQsYSxuKXtjb25zdCBzPXQuY3JlYXRlKGUsITApO2lmKHMubnVtSW5wdXRzIT09YXx8cy5udW1PdXRwdXRzIT09bil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgc2hhZGluZyBmdW5jdGlvbjogZXhwZWN0ZWQgJHthfS1pbiAke259LW91dCwgZ290ICR7cy5udW1JbnB1dHN9LWluICR7cy5udW1PdXRwdXRzfS1vdXQuYCk7cmV0dXJuIHN9Y2xhc3MgUGF0dGVybntzdGF0aWMjWD0hMTtjb25zdHJ1Y3Rvcigpe3VucmVhY2hhYmxlKCJDYW5ub3QgaW5pdGlhbGl6ZSBQYXR0ZXJuLiIpfXN0YXRpYyBzZXRPcHRpb25zKHtoYXNHUFU6ZX0pe3RoaXMuI1g9ZX1zdGF0aWMgcGFyc2VTaGFkaW5nKGUsdCxhLG4scyxyKXtjb25zdCBpPWUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2UuZGljdDplLG89aS5nZXQoIlNoYWRpbmdUeXBlIik7dHJ5e3N3aXRjaChvKXtjYXNlIFdhOnJldHVybiBuZXcgRnVuY3Rpb25CYXNlZFNoYWRpbmcoaSx0LGEsbixzLHIpO2Nhc2UgWGE6Y2FzZSBLYTpyZXR1cm4gbmV3IFJhZGlhbEF4aWFsU2hhZGluZyhpLHQsYSxuLHMscik7Y2FzZSBHYTpjYXNlIFZhOmNhc2UgJGE6Y2FzZSBZYTpyZXR1cm4gbmV3IE1lc2hTaGFkaW5nKGUsdCxhLG4scyxyKTtkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5zdXBwb3J0ZWQgU2hhZGluZ1R5cGU6ICIrbyl9fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oZSk7cmV0dXJuIG5ldyBEdW1teVNoYWRpbmd9fX1jbGFzcyBCYXNlU2hhZGluZ3tzdGF0aWMgU01BTExfTlVNQkVSPTFlLTY7Z2V0SVIoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRJUmAgY2FsbGVkLiIpfX1jbGFzcyBSYWRpYWxBeGlhbFNoYWRpbmcgZXh0ZW5kcyBCYXNlU2hhZGluZ3tjb25zdHJ1Y3RvcihlLHQsYSxuLHMscil7c3VwZXIoKTt0aGlzLnNoYWRpbmdUeXBlPWUuZ2V0KCJTaGFkaW5nVHlwZSIpO2xldCBpPTA7dGhpcy5zaGFkaW5nVHlwZT09PVhhP2k9NDp0aGlzLnNoYWRpbmdUeXBlPT09S2EmJihpPTYpO3RoaXMuY29vcmRzQXJyPWUuZ2V0QXJyYXkoIkNvb3JkcyIpO2lmKCFpc051bWJlckFycmF5KHRoaXMuY29vcmRzQXJyLGkpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUmFkaWFsQXhpYWxTaGFkaW5nOiBJbnZhbGlkIC9Db29yZHMgYXJyYXkuIik7Y29uc3Qgbz1Db2xvclNwYWNlVXRpbHMucGFyc2Uoe2NzOmUuZ2V0UmF3KCJDUyIpfHxlLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6bixnbG9iYWxDb2xvclNwYWNlQ2FjaGU6cyxsb2NhbENvbG9yU3BhY2VDYWNoZTpyfSk7dGhpcy5iYm94PWxvb2t1cE5vcm1hbFJlY3QoZS5nZXRBcnJheSgiQkJveCIpLG51bGwpO2NvbnN0IGw9ZS5nZXRBcnJheSgiRG9tYWluIiksW2YsY109aXNOdW1iZXJBcnJheShsLDIpP2w6WzAsMV0saD1lLmdldEFycmF5KCJFeHRlbmQiKSxbdSxtXT1mdW5jdGlvbiBpc0Jvb2xlYW5BcnJheShlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KGUpJiYobnVsbD09PXR8fGUubGVuZ3RoPT09dCkmJmUuZXZlcnkoZT0+ImJvb2xlYW4iPT10eXBlb2YgZSl9KGgsMik/aDpbITEsITFdLHA9cGFyc2VTaGFkaW5nRnVuY3Rpb24oZS5nZXRSYXcoIkZ1bmN0aW9uIiksbiwxLG8ubnVtQ29tcHMpLGQ9ODQwLGc9KGMtZikvZCxiPXRoaXMuY29sb3JTdG9wcz1bXTtpZihmPj1jfHxnPD0wKXtpbmZvKCJCYWQgc2hhZGluZyBkb21haW4uIik7cmV0dXJufWNvbnN0e251bUNvbXBzOnd9PW8saj1uZXcgRmxvYXQzMkFycmF5KDEpLGs9Z2V0Q29sb3JDb252ZXJzaW9uQmF0Y2hTaXplKGQsdykseT1uZXcgRmxvYXQzMkFycmF5KGsqdykscT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMjUyMCk7Zm9yKGxldCBlPTA7ZTxkO2UrPWspe2NvbnN0IHQ9TWF0aC5taW4oayxkLWUpO2ZvcihsZXQgYT0wLG49MDthPHQ7YSsrLG4rPXcpe2pbMF09ZisoZSthKSpnO3AoaiwwLHksbil9by5nZXRSZ2JJdGVtcyh5LHQscSwzKmUsMCl9bGV0IHY9MCxTPXFbMF0seD1xWzFdLEM9cVsyXTtiLnB1c2goWzAsVXRpbC5tYWtlSGV4Q29sb3IoUyx4LEMpXSk7bGV0IEY9MSxUPXFbM10sUj1xWzRdLE89cVs1XSxEPVQtUysxLEg9Ui14KzEsTT1PLUMrMSxOPVQtUy0xLEU9Ui14LTEsXz1PLUMtMTtmb3IobGV0IGU9MjtlPGQ7ZSsrKXtjb25zdCB0PTMqZSxhPXFbdF0sbj1xW3QrMV0scz1xW3QrMl0scj1lLXY7RD1NYXRoLm1pbihELChhLVMrMSkvcik7SD1NYXRoLm1pbihILChuLXgrMSkvcik7TT1NYXRoLm1pbihNLChzLUMrMSkvcik7Tj1NYXRoLm1heChOLChhLVMtMSkvcik7RT1NYXRoLm1heChFLChuLXgtMSkvcik7Xz1NYXRoLm1heChfLChzLUMtMSkvcik7aWYoIShOPD1EJiZFPD1IJiZfPD1NKSl7Y29uc3QgZT1VdGlsLm1ha2VIZXhDb2xvcihULFIsTyk7Yi5wdXNoKFtGL2QsZV0pO0Q9YS1UKzE7SD1uLVIrMTtNPXMtTysxO049YS1ULTE7RT1uLVItMTtfPXMtTy0xO3Y9RjtTPVQ7eD1SO0M9T31GPWU7VD1hO1I9bjtPPXN9Yi5wdXNoKFsxLFV0aWwubWFrZUhleENvbG9yKFQsUixPKV0pO2NvbnN0IHo9ZS5oYXMoIkJhY2tncm91bmQiKT9vLmdldFJnYkhleChlLmdldCgiQmFja2dyb3VuZCIpLDApOiJ0cmFuc3BhcmVudCI7aWYoIXUpe2IudW5zaGlmdChbMCx6XSk7YlsxXVswXSs9QmFzZVNoYWRpbmcuU01BTExfTlVNQkVSfWlmKCFtKXtiLmF0KC0xKVswXS09QmFzZVNoYWRpbmcuU01BTExfTlVNQkVSO2IucHVzaChbMSx6XSl9fWdldElSKCl7Y29uc3R7Y29vcmRzQXJyOmUsc2hhZGluZ1R5cGU6dH09dGhpcztsZXQgYSxuLHMscixpO2lmKHQ9PT1YYSl7bj1bZVswXSxlWzFdXTtzPVtlWzJdLGVbM11dO3I9bnVsbDtpPW51bGw7YT0iYXhpYWwifWVsc2UgaWYodD09PUthKXtuPVtlWzBdLGVbMV1dO3M9W2VbM10sZVs0XV07cj1lWzJdO2k9ZVs1XTthPSJyYWRpYWwifWVsc2UgdW5yZWFjaGFibGUoYGdldFBhdHRlcm4gdHlwZSB1bmtub3duOiAke3R9YCk7cmV0dXJuWyJSYWRpYWxBeGlhbCIsYSx0aGlzLmJib3gsdGhpcy5jb2xvclN0b3BzLG4scyxyLGldfX1mdW5jdGlvbiBidWlsZE1lc2hWZXJ0ZXhEYXRhKGUsdCxhKXtsZXQgbj0wO2Zvcihjb25zdCBlIG9mIGEpaWYoZS50eXBlPT09eSluKz1lLmNvb3Jkcy5sZW5ndGg7ZWxzZSBpZihlLnR5cGU9PT1xKXtjb25zdCB0PWUudmVydGljZXNQZXJSb3c7bis9KE1hdGguZmxvb3IoZS5jb29yZHMubGVuZ3RoL3QpLTEpKih0LTEpKjZ9Y29uc3Qgcz1uZXcgRmxvYXQzMkFycmF5KDIqbikscj1uZXcgVWludDhBcnJheSg0Km4pO2xldCBpPTAsbz0wO2NvbnN0IGFkZFZlcnRleD0oYSxuKT0+e3NbaSsrXT1lWzIqYV07c1tpKytdPWVbMiphKzFdO3JbbysrXT10WzQqbl07cltvKytdPXRbNCpuKzFdO3JbbysrXT10WzQqbisyXTtvKyt9O2Zvcihjb25zdCBlIG9mIGEpe2NvbnN0IHQ9ZS5jb29yZHMsYT1lLmNvbG9ycztpZihlLnR5cGU9PT15KWZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKylhZGRWZXJ0ZXgodFtlXSxhW2VdKTtlbHNlIGlmKGUudHlwZT09PXEpe2NvbnN0IG49ZS52ZXJ0aWNlc1BlclJvdyxzPU1hdGguZmxvb3IodC5sZW5ndGgvbiktMSxyPW4tMTtmb3IobGV0IGU9MDtlPHM7ZSsrKXtsZXQgcz1lKm47Zm9yKGxldCBlPTA7ZTxyO2UrKyxzKyspe2FkZFZlcnRleCh0W3NdLGFbc10pO2FkZFZlcnRleCh0W3MrMV0sYVtzKzFdKTthZGRWZXJ0ZXgodFtzK25dLGFbcytuXSk7YWRkVmVydGV4KHRbcytuKzFdLGFbcytuKzFdKTthZGRWZXJ0ZXgodFtzKzFdLGFbcysxXSk7YWRkVmVydGV4KHRbcytuXSxhW3Mrbl0pfX19fXJldHVybntwb3NEYXRhOnMsY29sRGF0YTpyLHZlcnRleENvdW50Om59fWNsYXNzIEZ1bmN0aW9uQmFzZWRTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7c3RhdGljIE1BWF9TVEVQX0NPVU5UPTUxMjtjb25zdHJ1Y3RvcihlLGEsbixzLHIsaSl7c3VwZXIoKTt0aGlzLmJib3g9bG9va3VwTm9ybWFsUmVjdChlLmdldEFycmF5KCJCQm94IiksbnVsbCk7Y29uc3Qgbz1Db2xvclNwYWNlVXRpbHMucGFyc2Uoe2NzOmUuZ2V0UmF3KCJDUyIpfHxlLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6YSxyZXNvdXJjZXM6bixwZGZGdW5jdGlvbkZhY3Rvcnk6cyxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6cixsb2NhbENvbG9yU3BhY2VDYWNoZTppfSk7dGhpcy5iYWNrZ3JvdW5kPWUuaGFzKCJCYWNrZ3JvdW5kIik/by5nZXRSZ2IoZS5nZXQoIkJhY2tncm91bmQiKSwwKTpudWxsO2NvbnN0IGw9ZS5nZXRSYXcoIkZ1bmN0aW9uIik7aWYoIWwpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJGdW5jdGlvbkJhc2VkU2hhZGluZzogbWlzc2luZyAvRnVuY3Rpb24iKTtjb25zdCBmPXBhcnNlU2hhZGluZ0Z1bmN0aW9uKGwscywyLG8ubnVtQ29tcHMpLFtjLGgsdSxtXT1sb29rdXBSZWN0KGUuZ2V0QXJyYXkoIkRvbWFpbiIpLFswLDEsMCwxXSkscD1sb29rdXBNYXRyaXgoZS5nZXRBcnJheSgiTWF0cml4IiksZ2EpO3RoaXMuYm91bmRzPXQuc2xpY2UoKTtVdGlsLmF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KFtjLHUsaCxtXSxwLHRoaXMuYm91bmRzKTtjb25zdCBkPXRoaXMuYm91bmRzWzJdLXRoaXMuYm91bmRzWzBdLGc9dGhpcy5ib3VuZHNbM10tdGhpcy5ib3VuZHNbMV0sYj1NYXRoQ2xhbXAoTWF0aC5jZWlsKGQpLDEsRnVuY3Rpb25CYXNlZFNoYWRpbmcuTUFYX1NURVBfQ09VTlQpLHc9TWF0aENsYW1wKE1hdGguY2VpbChnKSwxLEZ1bmN0aW9uQmFzZWRTaGFkaW5nLk1BWF9TVEVQX0NPVU5UKSxqPWIrMSxrPSh3KzEpKmoseT10aGlzLmNvb3Jkcz1uZXcgRmxvYXQzMkFycmF5KDIqayksdj10aGlzLmNvbG9ycz1uZXcgVWludDhDbGFtcGVkQXJyYXkoNCprKSx7bnVtQ29tcHM6U309byx4PW5ldyBGbG9hdDMyQXJyYXkoMiksQz1nZXRDb2xvckNvbnZlcnNpb25CYXRjaFNpemUoayxTKSxGPW5ldyBGbG9hdDMyQXJyYXkoQypTKSxUPShoLWMpL2IsUj0obS11KS93LE89VC8yLEQ9Ui8yO2xldCBIPTAsTT0wLE49MCxFPTA7Zm9yKGxldCBlPTA7ZTw9dztlKyspe2NvbnN0IHQ9dStSKmU7eFsxXT1lPT09dz90LUQ6dDtmb3IobGV0IGU9MDtlPD1iO2UrKyl7Y29uc3QgYT1jK1QqZTt4WzBdPWU9PT1iP2EtTzphO2YoeCwwLEYsTSk7TSs9UztOKys7eVtIXT1hO3lbSCsxXT10O1V0aWwuYXBwbHlUcmFuc2Zvcm0oeSxwLEgpO0grPTI7aWYoTj09PUMpe28uZ2V0UmdiSXRlbXMoRixOLHYsRSwxKTtFKz00Kk47TT1OPTB9fX1OPjAmJm8uZ2V0UmdiSXRlbXMoRixOLHYsRSwxKTtjb25zdCBfPW5ldyBVaW50MzJBcnJheShrKTtmb3IobGV0IGU9MDtlPGs7ZSsrKV9bZV09ZTt0aGlzLmZpZ3VyZXM9W3t0eXBlOnEsY29vcmRzOl8sY29sb3JzOm5ldyBVaW50MzJBcnJheShfKSx2ZXJ0aWNlc1BlclJvdzpqfV19Z2V0SVIoKXtjb25zdHtwb3NEYXRhOmUsY29sRGF0YTp0LHZlcnRleENvdW50OmF9PWJ1aWxkTWVzaFZlcnRleERhdGEodGhpcy5jb29yZHMsdGhpcy5jb2xvcnMsdGhpcy5maWd1cmVzKTtyZXR1cm5bIk1lc2giLFdhLGUsdCxhLHRoaXMuYm91bmRzLHRoaXMuYmJveCx0aGlzLmJhY2tncm91bmRdfX1jbGFzcyBNZXNoU3RyZWFtUmVhZGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLmNvbnRleHQ9dDt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTA7Y29uc3QgYT10Lm51bUNvbXBzO3RoaXMudG1wQ29tcHNCdWY9bmV3IEZsb2F0MzJBcnJheShhKTtjb25zdCBuPXQuY29sb3JTcGFjZS5udW1Db21wczt0aGlzLnRtcENzQ29tcHNCdWY9dC5jb2xvckZuP25ldyBGbG9hdDMyQXJyYXkobik6dGhpcy50bXBDb21wc0J1Zn1nZXQgaGFzRGF0YSgpe2lmKHRoaXMuc3RyZWFtLmVuZClyZXR1cm4gdGhpcy5zdHJlYW0ucG9zPHRoaXMuc3RyZWFtLmVuZDtpZih0aGlzLmJ1ZmZlckxlbmd0aD4wKXJldHVybiEwO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2lmKGU8MClyZXR1cm4hMTt0aGlzLmJ1ZmZlcj1lO3RoaXMuYnVmZmVyTGVuZ3RoPTg7cmV0dXJuITB9cmVhZEJpdHMoZSl7Y29uc3R7c3RyZWFtOnR9PXRoaXM7bGV0e2J1ZmZlcjphLGJ1ZmZlckxlbmd0aDpufT10aGlzO2lmKDMyPT09ZSl7aWYoMD09PW4pcmV0dXJuIHQuZ2V0SW50MzIoKT4+PjA7YT1hPDwyNHx0LmdldEJ5dGUoKTw8MTZ8dC5nZXRCeXRlKCk8PDh8dC5nZXRCeXRlKCk7Y29uc3QgZT10LmdldEJ5dGUoKTt0aGlzLmJ1ZmZlcj1lJigxPDxuKS0xO3JldHVybihhPDw4LW58KDI1NSZlKT4+bik+Pj4wfWlmKDg9PT1lJiYwPT09bilyZXR1cm4gdC5nZXRCeXRlKCk7Zm9yKDtuPGU7KXthPWE8PDh8dC5nZXRCeXRlKCk7bis9OH1uLT1lO3RoaXMuYnVmZmVyTGVuZ3RoPW47dGhpcy5idWZmZXI9YSYoMTw8biktMTtyZXR1cm4gYT4+bn1hbGlnbigpe3RoaXMuYnVmZmVyPTA7dGhpcy5idWZmZXJMZW5ndGg9MH1yZWFkRmxhZygpe3JldHVybiB0aGlzLnJlYWRCaXRzKHRoaXMuY29udGV4dC5iaXRzUGVyRmxhZyl9cmVhZENvb3JkaW5hdGUoKXtjb25zdHtiaXRzUGVyQ29vcmRpbmF0ZTplLGRlY29kZTp0fT10aGlzLmNvbnRleHQsYT10aGlzLnJlYWRCaXRzKGUpLG49dGhpcy5yZWFkQml0cyhlKSxzPWU8MzI/MS8oKDE8PGUpLTEpOjIuMzI4MzA2NDM2NTM4Njk2M2UtMTA7cmV0dXJuW2EqcyoodFsxXS10WzBdKSt0WzBdLG4qcyoodFszXS10WzJdKSt0WzJdXX1yZWFkQ29tcG9uZW50cygpe2NvbnN0e2JpdHNQZXJDb21wb25lbnQ6ZSxjb2xvckZuOnQsY29sb3JTcGFjZTphLGRlY29kZTpuLG51bUNvbXBzOnN9PXRoaXMuY29udGV4dCxyPWU8MzI/MS8oKDE8PGUpLTEpOjIuMzI4MzA2NDM2NTM4Njk2M2UtMTAsaT10aGlzLnRtcENvbXBzQnVmO2ZvcihsZXQgdD0wLGE9NDt0PHM7dCsrLGErPTIpe2NvbnN0IHM9dGhpcy5yZWFkQml0cyhlKTtpW3RdPXMqciooblthKzFdLW5bYV0pK25bYV19Y29uc3Qgbz10aGlzLnRtcENzQ29tcHNCdWY7dD8uKGksMCxvLDApO3JldHVybiBhLmdldFJnYihvLDApfX1sZXQgSmE9bnVsbDtmdW5jdGlvbiBnZXRCKGUpe3JldHVybihKYT8/PW5ldyBNYXApLmdldE9ySW5zZXJ0Q29tcHV0ZWQoZSwoKT0+QXJyYXkuZnJvbSh7bGVuZ3RoOmUrMX0sKHQsYSk9Pntjb25zdCBuPWEvZSxzPTEtbjtyZXR1cm4gbmV3IEZsb2F0MzJBcnJheShbcyoqMywzKm4qcyoqMiwzKm4qKjIqcyxuKiozXSl9KSl9Y2xhc3MgTWVzaFNoYWRpbmcgZXh0ZW5kcyBCYXNlU2hhZGluZ3tzdGF0aWMgTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQ9MztzdGF0aWMgTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQ9MjA7c3RhdGljIFRSSUFOR0xFX0RFTlNJVFk9MjA7Y29uc3RydWN0b3IoZSx0LGEsbixzLHIpe3N1cGVyKCk7aWYoIShlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNZXNoIGRhdGEgaXMgbm90IGEgc3RyZWFtIik7Y29uc3QgaT1lLmRpY3Q7dGhpcy5zaGFkaW5nVHlwZT1pLmdldCgiU2hhZGluZ1R5cGUiKTt0aGlzLmJib3g9bG9va3VwTm9ybWFsUmVjdChpLmdldEFycmF5KCJCQm94IiksbnVsbCk7Y29uc3Qgbz1Db2xvclNwYWNlVXRpbHMucGFyc2Uoe2NzOmkuZ2V0UmF3KCJDUyIpfHxpLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6bixnbG9iYWxDb2xvclNwYWNlQ2FjaGU6cyxsb2NhbENvbG9yU3BhY2VDYWNoZTpyfSk7dGhpcy5iYWNrZ3JvdW5kPWkuaGFzKCJCYWNrZ3JvdW5kIik/by5nZXRSZ2IoaS5nZXQoIkJhY2tncm91bmQiKSwwKTpudWxsO2NvbnN0IGw9aS5nZXRSYXcoIkZ1bmN0aW9uIiksZj1sP3BhcnNlU2hhZGluZ0Z1bmN0aW9uKGwsbiwxLG8ubnVtQ29tcHMpOm51bGw7dGhpcy5jb29yZHM9W107dGhpcy5jb2xvcnM9W107dGhpcy5maWd1cmVzPVtdO2NvbnN0IGM9e2JpdHNQZXJDb29yZGluYXRlOmkuZ2V0KCJCaXRzUGVyQ29vcmRpbmF0ZSIpLGJpdHNQZXJDb21wb25lbnQ6aS5nZXQoIkJpdHNQZXJDb21wb25lbnQiKSxiaXRzUGVyRmxhZzppLmdldCgiQml0c1BlckZsYWciKSxkZWNvZGU6aS5nZXRBcnJheSgiRGVjb2RlIiksY29sb3JGbjpmLGNvbG9yU3BhY2U6byxudW1Db21wczpmPzE6by5udW1Db21wc30saD1uZXcgTWVzaFN0cmVhbVJlYWRlcihlLGMpO2xldCB1PSExO3N3aXRjaCh0aGlzLnNoYWRpbmdUeXBlKXtjYXNlIEdhOnRoaXMuX2RlY29kZVR5cGU0U2hhZGluZyhoKTticmVhaztjYXNlIFZhOmNvbnN0IGU9MHxpLmdldCgiVmVydGljZXNQZXJSb3ciKTtpZihlPDIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFZlcnRpY2VzUGVyUm93Iik7dGhpcy5fZGVjb2RlVHlwZTVTaGFkaW5nKGgsZSk7YnJlYWs7Y2FzZSAkYTp0aGlzLl9kZWNvZGVUeXBlNlNoYWRpbmcoaCk7dT0hMDticmVhaztjYXNlIFlhOnRoaXMuX2RlY29kZVR5cGU3U2hhZGluZyhoKTt1PSEwO2JyZWFrO2RlZmF1bHQ6dW5yZWFjaGFibGUoIlVuc3VwcG9ydGVkIG1lc2ggdHlwZS4iKX1pZih1KXt0aGlzLl91cGRhdGVCb3VuZHMoKTtmb3IobGV0IGU9MCx0PXRoaXMuZmlndXJlcy5sZW5ndGg7ZTx0O2UrKyl0aGlzLl9idWlsZEZpZ3VyZUZyb21QYXRjaChlKX10aGlzLl91cGRhdGVCb3VuZHMoKTt0aGlzLl9wYWNrRGF0YSgpfV9kZWNvZGVUeXBlNFNoYWRpbmcoZSl7Y29uc3QgdD10aGlzLmNvb3JkcyxhPXRoaXMuY29sb3JzLG49W10scz1bXTtsZXQgcj0wO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3QgaT1lLnJlYWRGbGFnKCksbz1lLnJlYWRDb29yZGluYXRlKCksbD1lLnJlYWRDb21wb25lbnRzKCk7aWYoMD09PXIpe2lmKCEoMDw9aSYmaTw9MikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU0IGZsYWciKTtzd2l0Y2goaSl7Y2FzZSAwOnI9MzticmVhaztjYXNlIDE6cy5wdXNoKHMuYXQoLTIpLHMuYXQoLTEpKTtyPTE7YnJlYWs7Y2FzZSAyOnMucHVzaChzLmF0KC0zKSxzLmF0KC0xKSk7cj0xfW4ucHVzaChpKX1zLnB1c2godC5sZW5ndGgpO3QucHVzaChvKTthLnB1c2gobCk7ci0tO2UuYWxpZ24oKX10aGlzLmZpZ3VyZXMucHVzaCh7dHlwZTp5LGNvb3JkczpuZXcgSW50MzJBcnJheShzKSxjb2xvcnM6bmV3IEludDMyQXJyYXkocyl9KX1fZGVjb2RlVHlwZTVTaGFkaW5nKGUsdCl7Y29uc3QgYT10aGlzLmNvb3JkcyxuPXRoaXMuY29sb3JzLHM9W107Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCB0PWUucmVhZENvb3JkaW5hdGUoKSxyPWUucmVhZENvbXBvbmVudHMoKTtzLnB1c2goYS5sZW5ndGgpO2EucHVzaCh0KTtuLnB1c2gocil9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6cSxjb29yZHM6bmV3IEludDMyQXJyYXkocyksY29sb3JzOm5ldyBJbnQzMkFycmF5KHMpLHZlcnRpY2VzUGVyUm93OnR9KX1fZGVjb2RlVHlwZTZTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxuPW5ldyBJbnQzMkFycmF5KDE2KSxzPW5ldyBJbnQzMkFycmF5KDQpO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3Qgcj1lLnJlYWRGbGFnKCk7aWYoISgwPD1yJiZyPD0zKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTYgZmxhZyIpO2NvbnN0IGk9dC5sZW5ndGg7Zm9yKGxldCBhPTAsbj0wIT09cj84OjEyO2E8bjthKyspdC5wdXNoKGUucmVhZENvb3JkaW5hdGUoKSk7Y29uc3Qgbz1hLmxlbmd0aDtmb3IobGV0IHQ9MCxuPTAhPT1yPzI6NDt0PG47dCsrKWEucHVzaChlLnJlYWRDb21wb25lbnRzKCkpO2xldCBsLGYsYyxoO3N3aXRjaChyKXtjYXNlIDA6blsxMl09aSszO25bMTNdPWkrNDtuWzE0XT1pKzU7blsxNV09aSs2O25bOF09aSsyO25bMTFdPWkrNztuWzRdPWkrMTtuWzddPWkrODtuWzBdPWk7blsxXT1pKzExO25bMl09aSsxMDtuWzNdPWkrOTtzWzJdPW8rMTtzWzNdPW8rMjtzWzBdPW87c1sxXT1vKzM7YnJlYWs7Y2FzZSAxOmw9blsxMl07Zj1uWzEzXTtjPW5bMTRdO2g9blsxNV07blsxMl09aDtuWzEzXT1pKzA7blsxNF09aSsxO25bMTVdPWkrMjtuWzhdPWM7blsxMV09aSszO25bNF09ZjtuWzddPWkrNDtuWzBdPWw7blsxXT1pKzc7blsyXT1pKzY7blszXT1pKzU7bD1zWzJdO2Y9c1szXTtzWzJdPWY7c1szXT1vO3NbMF09bDtzWzFdPW8rMTticmVhaztjYXNlIDI6bD1uWzE1XTtmPW5bMTFdO25bMTJdPW5bM107blsxM109aSswO25bMTRdPWkrMTtuWzE1XT1pKzI7bls4XT1uWzddO25bMTFdPWkrMztuWzRdPWY7bls3XT1pKzQ7blswXT1sO25bMV09aSs3O25bMl09aSs2O25bM109aSs1O2w9c1szXTtzWzJdPXNbMV07c1szXT1vO3NbMF09bDtzWzFdPW8rMTticmVhaztjYXNlIDM6blsxMl09blswXTtuWzEzXT1pKzA7blsxNF09aSsxO25bMTVdPWkrMjtuWzhdPW5bMV07blsxMV09aSszO25bNF09blsyXTtuWzddPWkrNDtuWzBdPW5bM107blsxXT1pKzc7blsyXT1pKzY7blszXT1pKzU7c1syXT1zWzBdO3NbM109bztzWzBdPXNbMV07c1sxXT1vKzF9bls1XT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W25bMF1dWzBdLXRbblsxNV1dWzBdKzYqKHRbbls0XV1bMF0rdFtuWzFdXVswXSktMioodFtuWzEyXV1bMF0rdFtuWzNdXVswXSkrMyoodFtuWzEzXV1bMF0rdFtuWzddXVswXSkpLzksKC00KnRbblswXV1bMV0tdFtuWzE1XV1bMV0rNioodFtuWzRdXVsxXSt0W25bMV1dWzFdKS0yKih0W25bMTJdXVsxXSt0W25bM11dWzFdKSszKih0W25bMTNdXVsxXSt0W25bN11dWzFdKSkvOV0pO25bNl09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFtuWzNdXVswXS10W25bMTJdXVswXSs2Kih0W25bMl1dWzBdK3Rbbls3XV1bMF0pLTIqKHRbblswXV1bMF0rdFtuWzE1XV1bMF0pKzMqKHRbbls0XV1bMF0rdFtuWzE0XV1bMF0pKS85LCgtNCp0W25bM11dWzFdLXRbblsxMl1dWzFdKzYqKHRbblsyXV1bMV0rdFtuWzddXVsxXSktMioodFtuWzBdXVsxXSt0W25bMTVdXVsxXSkrMyoodFtuWzRdXVsxXSt0W25bMTRdXVsxXSkpLzldKTtuWzldPXQubGVuZ3RoO3QucHVzaChbKC00KnRbblsxMl1dWzBdLXRbblszXV1bMF0rNioodFtuWzhdXVswXSt0W25bMTNdXVswXSktMioodFtuWzBdXVswXSt0W25bMTVdXVswXSkrMyoodFtuWzExXV1bMF0rdFtuWzFdXVswXSkpLzksKC00KnRbblsxMl1dWzFdLXRbblszXV1bMV0rNioodFtuWzhdXVsxXSt0W25bMTNdXVsxXSktMioodFtuWzBdXVsxXSt0W25bMTVdXVsxXSkrMyoodFtuWzExXV1bMV0rdFtuWzFdXVsxXSkpLzldKTtuWzEwXT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W25bMTVdXVswXS10W25bMF1dWzBdKzYqKHRbblsxMV1dWzBdK3RbblsxNF1dWzBdKS0yKih0W25bMTJdXVswXSt0W25bM11dWzBdKSszKih0W25bMl1dWzBdK3Rbbls4XV1bMF0pKS85LCgtNCp0W25bMTVdXVsxXS10W25bMF1dWzFdKzYqKHRbblsxMV1dWzFdK3RbblsxNF1dWzFdKS0yKih0W25bMTJdXVsxXSt0W25bM11dWzFdKSszKih0W25bMl1dWzFdK3Rbbls4XV1bMV0pKS85XSk7dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6dixjb29yZHM6bmV3IEludDMyQXJyYXkobiksY29sb3JzOm5ldyBJbnQzMkFycmF5KHMpfSl9fV9kZWNvZGVUeXBlN1NoYWRpbmcoZSl7Y29uc3QgdD10aGlzLmNvb3JkcyxhPXRoaXMuY29sb3JzLG49bmV3IEludDMyQXJyYXkoMTYpLHM9bmV3IEludDMyQXJyYXkoNCk7Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCByPWUucmVhZEZsYWcoKTtpZighKDA8PXImJnI8PTMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNyBmbGFnIik7Y29uc3QgaT10Lmxlbmd0aDtmb3IobGV0IGE9MCxuPTAhPT1yPzEyOjE2O2E8bjthKyspdC5wdXNoKGUucmVhZENvb3JkaW5hdGUoKSk7Y29uc3Qgbz1hLmxlbmd0aDtmb3IobGV0IHQ9MCxuPTAhPT1yPzI6NDt0PG47dCsrKWEucHVzaChlLnJlYWRDb21wb25lbnRzKCkpO2xldCBsLGYsYyxoO3N3aXRjaChyKXtjYXNlIDA6blsxMl09aSszO25bMTNdPWkrNDtuWzE0XT1pKzU7blsxNV09aSs2O25bOF09aSsyO25bOV09aSsxMztuWzEwXT1pKzE0O25bMTFdPWkrNztuWzRdPWkrMTtuWzVdPWkrMTI7bls2XT1pKzE1O25bN109aSs4O25bMF09aTtuWzFdPWkrMTE7blsyXT1pKzEwO25bM109aSs5O3NbMl09bysxO3NbM109bysyO3NbMF09bztzWzFdPW8rMzticmVhaztjYXNlIDE6bD1uWzEyXTtmPW5bMTNdO2M9blsxNF07aD1uWzE1XTtuWzEyXT1oO25bMTNdPWkrMDtuWzE0XT1pKzE7blsxNV09aSsyO25bOF09YztuWzldPWkrOTtuWzEwXT1pKzEwO25bMTFdPWkrMztuWzRdPWY7bls1XT1pKzg7bls2XT1pKzExO25bN109aSs0O25bMF09bDtuWzFdPWkrNztuWzJdPWkrNjtuWzNdPWkrNTtsPXNbMl07Zj1zWzNdO3NbMl09ZjtzWzNdPW87c1swXT1sO3NbMV09bysxO2JyZWFrO2Nhc2UgMjpsPW5bMTVdO2Y9blsxMV07blsxMl09blszXTtuWzEzXT1pKzA7blsxNF09aSsxO25bMTVdPWkrMjtuWzhdPW5bN107bls5XT1pKzk7blsxMF09aSsxMDtuWzExXT1pKzM7bls0XT1mO25bNV09aSs4O25bNl09aSsxMTtuWzddPWkrNDtuWzBdPWw7blsxXT1pKzc7blsyXT1pKzY7blszXT1pKzU7bD1zWzNdO3NbMl09c1sxXTtzWzNdPW87c1swXT1sO3NbMV09bysxO2JyZWFrO2Nhc2UgMzpuWzEyXT1uWzBdO25bMTNdPWkrMDtuWzE0XT1pKzE7blsxNV09aSsyO25bOF09blsxXTtuWzldPWkrOTtuWzEwXT1pKzEwO25bMTFdPWkrMztuWzRdPW5bMl07bls1XT1pKzg7bls2XT1pKzExO25bN109aSs0O25bMF09blszXTtuWzFdPWkrNztuWzJdPWkrNjtuWzNdPWkrNTtzWzJdPXNbMF07c1szXT1vO3NbMF09c1sxXTtzWzFdPW8rMX10aGlzLmZpZ3VyZXMucHVzaCh7dHlwZTp2LGNvb3JkczpuZXcgSW50MzJBcnJheShuKSxjb2xvcnM6bmV3IEludDMyQXJyYXkocyl9KX19X2J1aWxkRmlndXJlRnJvbVBhdGNoKGUpe2NvbnN0IHQ9dGhpcy5maWd1cmVzW2VdO2Fzc2VydCh0LnR5cGU9PT12LCJVbmV4cGVjdGVkIHBhdGNoIG1lc2ggZmlndXJlIik7Y29uc3QgYT10aGlzLmNvb3JkcyxuPXRoaXMuY29sb3JzLHM9dC5jb29yZHMscj10LmNvbG9ycyxpPU1hdGgubWluKGFbc1swXV1bMF0sYVtzWzNdXVswXSxhW3NbMTJdXVswXSxhW3NbMTVdXVswXSksbz1NYXRoLm1pbihhW3NbMF1dWzFdLGFbc1szXV1bMV0sYVtzWzEyXV1bMV0sYVtzWzE1XV1bMV0pLGw9TWF0aC5tYXgoYVtzWzBdXVswXSxhW3NbM11dWzBdLGFbc1sxMl1dWzBdLGFbc1sxNV1dWzBdKSxmPU1hdGgubWF4KGFbc1swXV1bMV0sYVtzWzNdXVsxXSxhW3NbMTJdXVsxXSxhW3NbMTVdXVsxXSk7bGV0IGM9TWF0aC5jZWlsKChsLWkpKk1lc2hTaGFkaW5nLlRSSUFOR0xFX0RFTlNJVFkvKHRoaXMuYm91bmRzWzJdLXRoaXMuYm91bmRzWzBdKSk7Yz1NYXRoQ2xhbXAoYyxNZXNoU2hhZGluZy5NSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCxNZXNoU2hhZGluZy5NQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCk7bGV0IGg9TWF0aC5jZWlsKChmLW8pKk1lc2hTaGFkaW5nLlRSSUFOR0xFX0RFTlNJVFkvKHRoaXMuYm91bmRzWzNdLXRoaXMuYm91bmRzWzFdKSk7aD1NYXRoQ2xhbXAoaCxNZXNoU2hhZGluZy5NSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCxNZXNoU2hhZGluZy5NQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCk7Y29uc3QgdT1jKzEsbT1uZXcgSW50MzJBcnJheSgoaCsxKSp1KSxwPW5ldyBJbnQzMkFycmF5KChoKzEpKnUpO2xldCBkPTA7Y29uc3QgZz1uZXcgVWludDhBcnJheSgzKSxiPW5ldyBVaW50OEFycmF5KDMpLHc9bltyWzBdXSxqPW5bclsxXV0saz1uW3JbMl1dLHk9bltyWzNdXSxTPWdldEIoaCkseD1nZXRCKGMpO2ZvcihsZXQgZT0wO2U8PWg7ZSsrKXtnWzBdPSh3WzBdKihoLWUpK2tbMF0qZSkvaHwwO2dbMV09KHdbMV0qKGgtZSkra1sxXSplKS9ofDA7Z1syXT0od1syXSooaC1lKStrWzJdKmUpL2h8MDtiWzBdPShqWzBdKihoLWUpK3lbMF0qZSkvaHwwO2JbMV09KGpbMV0qKGgtZSkreVsxXSplKS9ofDA7YlsyXT0oalsyXSooaC1lKSt5WzJdKmUpL2h8MDtmb3IobGV0IHQ9MDt0PD1jO3QrKyxkKyspe2lmKCEoMCE9PWUmJmUhPT1ofHwwIT09dCYmdCE9PWMpKWNvbnRpbnVlO2xldCByPTAsaT0wLG89MDtmb3IobGV0IG49MDtuPD0zO24rKylmb3IobGV0IGw9MDtsPD0zO2wrKyxvKyspe2NvbnN0IGY9U1tlXVtuXSp4W3RdW2xdO3IrPWFbc1tvXV1bMF0qZjtpKz1hW3Nbb11dWzFdKmZ9bVtkXT1hLmxlbmd0aDthLnB1c2goW3IsaV0pO3BbZF09bi5sZW5ndGg7Y29uc3QgbD1uZXcgVWludDhBcnJheSgzKTtsWzBdPShnWzBdKihjLXQpK2JbMF0qdCkvY3wwO2xbMV09KGdbMV0qKGMtdCkrYlsxXSp0KS9jfDA7bFsyXT0oZ1syXSooYy10KStiWzJdKnQpL2N8MDtuLnB1c2gobCl9fW1bMF09c1swXTtwWzBdPXJbMF07bVtjXT1zWzNdO3BbY109clsxXTttW3UqaF09c1sxMl07cFt1KmhdPXJbMl07bVt1KmgrY109c1sxNV07cFt1KmgrY109clszXTt0aGlzLmZpZ3VyZXNbZV09e3R5cGU6cSxjb29yZHM6bSxjb2xvcnM6cCx2ZXJ0aWNlc1BlclJvdzp1fX1fdXBkYXRlQm91bmRzKCl7IWZ1bmN0aW9uIG1lc2hVcGRhdGVCb3VuZHMoZSl7bGV0IHQ9ZS5jb29yZHNbMF1bMF0sYT1lLmNvb3Jkc1swXVsxXSxuPXQscz1hO2ZvcihsZXQgcj0xLGk9ZS5jb29yZHMubGVuZ3RoO3I8aTtyKyspe2NvbnN0IGk9ZS5jb29yZHNbcl1bMF0sbz1lLmNvb3Jkc1tyXVsxXTt0PXQ+aT9pOnQ7YT1hPm8/bzphO249bjxpP2k6bjtzPXM8bz9vOnN9ZS5ib3VuZHM9W3QsYSxuLHNdfSh0aGlzKX1fcGFja0RhdGEoKXshZnVuY3Rpb24gbWVzaFBhY2tEYXRhKGUpe2xldCB0LGEsbjtjb25zdCBzPWUuY29vcmRzLHI9bmV3IEZsb2F0MzJBcnJheSgyKnMubGVuZ3RoKTtmb3IodD0wLGE9MCxuPXMubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IGU9c1t0XTtyW2ErK109ZVswXTtyW2ErK109ZVsxXX1lLmNvb3Jkcz1yO2NvbnN0IGk9ZS5jb2xvcnMsbz1uZXcgVWludDhBcnJheSg0KmkubGVuZ3RoKTtmb3IodD0wLGE9MCxuPWkubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IGU9aVt0XTtvW2ErK109ZVswXTtvW2ErK109ZVsxXTtvW2ErK109ZVsyXTthKyt9ZS5jb2xvcnM9bztmb3IoY29uc3QgdCBvZiBlLmZpZ3VyZXMpe3QuY29vcmRzPW5ldyBVaW50MzJBcnJheSh0LmNvb3Jkcyk7dC5jb2xvcnM9bmV3IFVpbnQzMkFycmF5KHQuY29sb3JzKX19KHRoaXMpfWdldElSKCl7Y29uc3R7cG9zRGF0YTplLGNvbERhdGE6dCx2ZXJ0ZXhDb3VudDphfT1idWlsZE1lc2hWZXJ0ZXhEYXRhKHRoaXMuY29vcmRzLHRoaXMuY29sb3JzLHRoaXMuZmlndXJlcyk7cmV0dXJuWyJNZXNoIix0aGlzLnNoYWRpbmdUeXBlLGUsdCxhLHRoaXMuYm91bmRzLHRoaXMuYmJveCx0aGlzLmJhY2tncm91bmRdfX1jbGFzcyBEdW1teVNoYWRpbmcgZXh0ZW5kcyBCYXNlU2hhZGluZ3tnZXRJUigpe3JldHVyblsiRHVtbXkiXX19ZnVuY3Rpb24gZ2V0VGlsaW5nUGF0dGVybklSKGUsdCxhLG49ITApe2NvbnN0IHM9bG9va3VwTWF0cml4KHQuZ2V0QXJyYXkoIk1hdHJpeCIpLGdhKSxyPWxvb2t1cE5vcm1hbFJlY3QodC5nZXRBcnJheSgiQkJveCIpLG51bGwpO2lmKCFyfHxyWzJdLXJbMF09PT0wfHxyWzNdLXJbMV09PT0wKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL0JCb3ggYXJyYXkuIik7Y29uc3QgaT10LmdldCgiWFN0ZXAiKTtpZigibnVtYmVyIiE9dHlwZW9mIGkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvWFN0ZXAgdmFsdWUuIik7Y29uc3Qgbz10LmdldCgiWVN0ZXAiKTtpZigibnVtYmVyIiE9dHlwZW9mIG8pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvWVN0ZXAgdmFsdWUuIik7Y29uc3QgbD10LmdldCgiUGFpbnRUeXBlIik7aWYoIU51bWJlci5pc0ludGVnZXIobCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvUGFpbnRUeXBlIHZhbHVlLiIpO2NvbnN0IGY9dC5nZXQoIlRpbGluZ1R5cGUiKTtpZighTnVtYmVyLmlzSW50ZWdlcihmKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgZ2V0VGlsaW5nUGF0dGVybklSIC9UaWxpbmdUeXBlIHZhbHVlLiIpO3JldHVyblsiVGlsaW5nUGF0dGVybiIsYSxlLHMscixpLG8sbCxmLG5dfWZ1bmN0aW9uIGhleFRvSW50KGUsdCl7bGV0IGE9MDtmb3IobGV0IG49MDtuPD10O24rKylhPWE8PDh8ZVtuXTtyZXR1cm4gYT4+PjB9ZnVuY3Rpb24gaGV4VG9TdHIoZSx0KXtyZXR1cm4gMT09PXQ/U3RyaW5nLmZyb21DaGFyQ29kZShlWzBdLGVbMV0pOjM9PT10P1N0cmluZy5mcm9tQ2hhckNvZGUoZVswXSxlWzFdLGVbMl0sZVszXSk6U3RyaW5nLmZyb21DaGFyQ29kZSguLi5lLnN1YmFycmF5KDAsdCsxKSl9ZnVuY3Rpb24gYWRkSGV4KGUsdCxhKXtsZXQgbj0wO2ZvcihsZXQgcz1hO3M+PTA7cy0tKXtuKz1lW3NdK3Rbc107ZVtzXT0yNTUmbjtuPj49OH19ZnVuY3Rpb24gaW5jSGV4KGUsdCl7bGV0IGE9MTtmb3IobGV0IG49dDtuPj0wJiZhPjA7bi0tKXthKz1lW25dO2Vbbl09MjU1JmE7YT4+PTh9fWNvbnN0IFFhPTE2O2NsYXNzIEJpbmFyeUNNYXBTdHJlYW0gZXh0ZW5kcyBTdHJlYW17dG1wQnVmPW5ldyBVaW50OEFycmF5KDE5KTtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLDAsZS5sZW5ndGgsbnVsbCl9cmVhZE51bWJlcigpe2xldCBlLHQ9MDtkb3tjb25zdCBhPXRoaXMuZ2V0Qnl0ZSgpO2lmKGE8MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInVuZXhwZWN0ZWQgRU9GIGluIGJjbWFwIik7ZT0hKDEyOCZhKTt0PXQ8PDd8MTI3JmF9d2hpbGUoIWUpO3JldHVybiB0fXJlYWRTaWduZWQoKXtjb25zdCBlPXRoaXMucmVhZE51bWJlcigpO3JldHVybiAxJmU/fihlPj4+MSk6ZT4+PjF9cmVhZEhleChlLHQpe2Uuc2V0KHRoaXMuZ2V0Qnl0ZXModCsxKSl9cmVhZEhleE51bWJlcihlLHQpe2xldCBhO2NvbnN0IG49dGhpcy50bXBCdWY7bGV0IHM9MDtkb3tjb25zdCBlPXRoaXMuZ2V0Qnl0ZSgpO2lmKGU8MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInVuZXhwZWN0ZWQgRU9GIGluIGJjbWFwIik7YT0hKDEyOCZlKTtuW3MrK109MTI3JmV9d2hpbGUoIWEpO2xldCByPXQsaT0wLG89MDtmb3IoO3I+PTA7KXtmb3IoO288OCYmbi5sZW5ndGg+MDspe2l8PW5bLS1zXTw8bztvKz03fWVbcl09MjU1Jmk7ci0tO2k+Pj04O28tPTh9fXJlYWRIZXhTaWduZWQoZSx0KXt0aGlzLnJlYWRIZXhOdW1iZXIoZSx0KTtjb25zdCBhPTEmZVt0XT8yNTU6MDtsZXQgbj0wO2ZvcihsZXQgcz0wO3M8PXQ7cysrKXtuPSgxJm4pPDw4fGVbc107ZVtzXT1uPj4xXmF9fXJlYWRTdHJpbmcoKXtjb25zdCBlPXRoaXMucmVhZE51bWJlcigpLHQ9bmV3IEFycmF5KGUpO2ZvcihsZXQgYT0wO2E8ZTthKyspdFthXT10aGlzLnJlYWROdW1iZXIoKTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSguLi50KX19Y2xhc3MgQmluYXJ5Q01hcFJlYWRlcnthc3luYyBwcm9jZXNzKGUsdCxhKXtjb25zdCBuPW5ldyBCaW5hcnlDTWFwU3RyZWFtKGUpLHM9bi5nZXRCeXRlKCk7dC52ZXJ0aWNhbD0hISgxJnMpO2xldCByPW51bGw7Y29uc3QgaT1uZXcgVWludDhBcnJheShRYSksbz1uZXcgVWludDhBcnJheShRYSksbD1uZXcgVWludDhBcnJheShRYSksZj1uZXcgVWludDhBcnJheShRYSksYz1uZXcgVWludDhBcnJheShRYSk7bGV0IGgsdTtmb3IoOyh1PW4uZ2V0Qnl0ZSgpKT49MDspe2NvbnN0IGU9dT4+NTtpZig3PT09ZSl7c3dpdGNoKDMxJnUpe2Nhc2UgMDpuLnJlYWRTdHJpbmcoKTticmVhaztjYXNlIDE6cj1uLnJlYWRTdHJpbmcoKX1jb250aW51ZX1jb25zdCBhPSEhKDE2JnUpLHM9MTUmdTtpZihzKzE+UWEpdGhyb3cgbmV3IEVycm9yKCJCaW5hcnlDTWFwUmVhZGVyLnByb2Nlc3M6IEludmFsaWQgZGF0YVNpemUuIik7Y29uc3QgbT0xLHA9bi5yZWFkTnVtYmVyKCk7c3dpdGNoKGUpe2Nhc2UgMDpuLnJlYWRIZXgoaSxzKTtuLnJlYWRIZXhOdW1iZXIobyxzKTthZGRIZXgobyxpLHMpO3QuYWRkQ29kZXNwYWNlUmFuZ2UocysxLGhleFRvSW50KGkscyksaGV4VG9JbnQobyxzKSk7Zm9yKGxldCBlPTE7ZTxwO2UrKyl7aW5jSGV4KG8scyk7bi5yZWFkSGV4TnVtYmVyKGkscyk7YWRkSGV4KGksbyxzKTtuLnJlYWRIZXhOdW1iZXIobyxzKTthZGRIZXgobyxpLHMpO3QuYWRkQ29kZXNwYWNlUmFuZ2UocysxLGhleFRvSW50KGkscyksaGV4VG9JbnQobyxzKSl9YnJlYWs7Y2FzZSAxOm4ucmVhZEhleChpLHMpO24ucmVhZEhleE51bWJlcihvLHMpO2FkZEhleChvLGkscyk7bi5yZWFkTnVtYmVyKCk7Zm9yKGxldCBlPTE7ZTxwO2UrKyl7aW5jSGV4KG8scyk7bi5yZWFkSGV4TnVtYmVyKGkscyk7YWRkSGV4KGksbyxzKTtuLnJlYWRIZXhOdW1iZXIobyxzKTthZGRIZXgobyxpLHMpO24ucmVhZE51bWJlcigpfWJyZWFrO2Nhc2UgMjpuLnJlYWRIZXgobCxzKTtoPW4ucmVhZE51bWJlcigpO3QubWFwT25lKGhleFRvSW50KGwscyksaCk7Zm9yKGxldCBlPTE7ZTxwO2UrKyl7aW5jSGV4KGwscyk7aWYoIWEpe24ucmVhZEhleE51bWJlcihjLHMpO2FkZEhleChsLGMscyl9aD1uLnJlYWRTaWduZWQoKSsoaCsxKTt0Lm1hcE9uZShoZXhUb0ludChsLHMpLGgpfWJyZWFrO2Nhc2UgMzpuLnJlYWRIZXgoaSxzKTtuLnJlYWRIZXhOdW1iZXIobyxzKTthZGRIZXgobyxpLHMpO2g9bi5yZWFkTnVtYmVyKCk7dC5tYXBDaWRSYW5nZShoZXhUb0ludChpLHMpLGhleFRvSW50KG8scyksaCk7Zm9yKGxldCBlPTE7ZTxwO2UrKyl7aW5jSGV4KG8scyk7aWYoYSlpLnNldChvKTtlbHNle24ucmVhZEhleE51bWJlcihpLHMpO2FkZEhleChpLG8scyl9bi5yZWFkSGV4TnVtYmVyKG8scyk7YWRkSGV4KG8saSxzKTtoPW4ucmVhZE51bWJlcigpO3QubWFwQ2lkUmFuZ2UoaGV4VG9JbnQoaSxzKSxoZXhUb0ludChvLHMpLGgpfWJyZWFrO2Nhc2UgNDpuLnJlYWRIZXgobCxtKTtuLnJlYWRIZXgoZixzKTt0Lm1hcE9uZShoZXhUb0ludChsLG0pLGhleFRvU3RyKGYscykpO2ZvcihsZXQgZT0xO2U8cDtlKyspe2luY0hleChsLG0pO2lmKCFhKXtuLnJlYWRIZXhOdW1iZXIoYyxtKTthZGRIZXgobCxjLG0pfWluY0hleChmLHMpO24ucmVhZEhleFNpZ25lZChjLHMpO2FkZEhleChmLGMscyk7dC5tYXBPbmUoaGV4VG9JbnQobCxtKSxoZXhUb1N0cihmLHMpKX1icmVhaztjYXNlIDU6bi5yZWFkSGV4KGksbSk7bi5yZWFkSGV4TnVtYmVyKG8sbSk7YWRkSGV4KG8saSxtKTtuLnJlYWRIZXgoZixzKTt0Lm1hcEJmUmFuZ2UoaGV4VG9JbnQoaSxtKSxoZXhUb0ludChvLG0pLGhleFRvU3RyKGYscykpO2ZvcihsZXQgZT0xO2U8cDtlKyspe2luY0hleChvLG0pO2lmKGEpaS5zZXQobyk7ZWxzZXtuLnJlYWRIZXhOdW1iZXIoaSxtKTthZGRIZXgoaSxvLG0pfW4ucmVhZEhleE51bWJlcihvLG0pO2FkZEhleChvLGksbSk7bi5yZWFkSGV4KGYscyk7dC5tYXBCZlJhbmdlKGhleFRvSW50KGksbSksaGV4VG9JbnQobyxtKSxoZXhUb1N0cihmLHMpKX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgQmluYXJ5Q01hcFJlYWRlci5wcm9jZXNzIC0gdW5rbm93biB0eXBlOiAke2V9YCl9fXJldHVybiByP2Eocik6dH19Y2xhc3MgQXNjaWk4NVN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXsjSz1uZXcgVWludDhBcnJheSg1KTtjb25zdHJ1Y3RvcihlLHQpe3QmJih0Kj0uOCk7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0fXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHJlYW07bGV0IHQ9ZS5nZXRCeXRlKCk7Zm9yKDtpc1doaXRlU3BhY2UodCk7KXQ9ZS5nZXRCeXRlKCk7aWYoLTE9PT10fHwxMjY9PT10KXt0aGlzLmVvZj0hMDtyZXR1cm59Y29uc3QgYT10aGlzLmJ1ZmZlckxlbmd0aDtsZXQgbixzO2lmKDEyMj09PXQpe249dGhpcy5lbnN1cmVCdWZmZXIoYSs0KTtuLmZpbGwoMCxhLGErNCk7dGhpcy5idWZmZXJMZW5ndGgrPTR9ZWxzZXtjb25zdCByPXRoaXMuI0s7clswXT10O2ZvcihzPTE7czw1Oysrcyl7dD1lLmdldEJ5dGUoKTtmb3IoO2lzV2hpdGVTcGFjZSh0KTspdD1lLmdldEJ5dGUoKTtyW3NdPXQ7aWYoLTE9PT10fHwxMjY9PT10KWJyZWFrfW49dGhpcy5lbnN1cmVCdWZmZXIoYStzLTEpO3RoaXMuYnVmZmVyTGVuZ3RoKz1zLTE7aWYoczw1KXtyLmZpbGwoMTE3LHMsNSk7dGhpcy5lb2Y9ITB9bGV0IGk9MDtmb3Iocz0wO3M8NTsrK3MpaT04NSppKyhyW3NdLTMzKTtmb3Iocz0zO3M+PTA7LS1zKXtuW2Erc109MjU1Jmk7aT4+PTh9fX19Y2xhc3MgQXNjaWlIZXhTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0KXt0JiYodCo9LjUpO3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmZpcnN0RGlnaXQ9LTF9cmVhZEJsb2NrKCl7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRCeXRlcyg4ZTMpO2lmKCFlLmxlbmd0aCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IHQ9ZS5sZW5ndGgrMT4+MSxhPXRoaXMuZW5zdXJlQnVmZmVyKHRoaXMuYnVmZmVyTGVuZ3RoK3QpO2xldCBuPXRoaXMuYnVmZmVyTGVuZ3RoLHM9dGhpcy5maXJzdERpZ2l0O2Zvcihjb25zdCB0IG9mIGUpe2xldCBlO2lmKHQ+PTQ4JiZ0PD01NyllPTE1JnQ7ZWxzZXtpZighKHQ+PTY1JiZ0PD03MHx8dD49OTcmJnQ8PTEwMikpe2lmKDYyPT09dCl7dGhpcy5lb2Y9ITA7YnJlYWt9Y29udGludWV9ZT05KygxNSZ0KX1pZihzPDApcz1lO2Vsc2V7YVtuKytdPXM8PDR8ZTtzPS0xfX1pZihzPj0wJiZ0aGlzLmVvZil7YVtuKytdPXM8PDQ7cz0tMX10aGlzLmZpcnN0RGlnaXQ9czt0aGlzLmJ1ZmZlckxlbmd0aD1ufX1sZXQgWmE9KCgpPT57Y29uc3QgZT1JbnQzMkFycmF5LmZyb20oWzI1Niw0MDIsNDM2LDQ2OCw1MDAsNTM0LDU2Niw1OTgsNjMwLDY2Miw2OTQsNzI2LDc1OCw3OTAsODIyLDg1NCw4ODYsOTIwLDk1Miw5ODQsMTAxNiwxMDQ4LDEwODBdKSx0PUludDMyQXJyYXkuZnJvbShbMSwyLDMsNCwwLDUsMTcsNiwxNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNV0pLGE9SW50MzJBcnJheS5mcm9tKFswLDMsMiwxLDAsMCwwLDAsMCwwLDMsMywzLDMsMywzXSksbj1JbnQzMkFycmF5LmZyb20oWzAsMCwwLDAsLTEsMSwtMiwyLC0zLDMsLTEsMSwtMiwyLC0zLDNdKSxzPUludDMyQXJyYXkuZnJvbShbMTMxMDcyLDEzMTA3NiwxMzEwNzUsMTk2NjEwLDEzMTA3MiwxMzEwNzYsMTMxMDc1LDI2MjE0NSwxMzEwNzIsMTMxMDc2LDEzMTA3NSwxOTY2MTAsMTMxMDcyLDEzMTA3NiwxMzEwNzUsMjYyMTQ5XSkscj1JbnQzMkFycmF5LmZyb20oWzEsNSw5LDEzLDE3LDI1LDMzLDQxLDQ5LDY1LDgxLDk3LDExMywxNDUsMTc3LDIwOSwyNDEsMzA1LDM2OSw0OTcsNzUzLDEyNjUsMjI4OSw0MzM3LDg0MzMsMTY2MjVdKSxpPUludDMyQXJyYXkuZnJvbShbMiwyLDIsMiwzLDMsMywzLDQsNCw0LDQsNSw1LDUsNSw2LDYsNyw4LDksMTAsMTEsMTIsMTMsMjRdKSxvPUludDE2QXJyYXkuZnJvbShbMCwwLDAsMCwwLDAsMSwxLDIsMiwzLDMsNCw0LDUsNSw2LDcsOCw5LDEwLDEyLDE0LDI0XSksbD1JbnQxNkFycmF5LmZyb20oWzAsMCwwLDAsMCwwLDAsMCwxLDEsMiwyLDMsMyw0LDQsNSw1LDYsNyw4LDksMTAsMjRdKSxmPW5ldyBJbnQxNkFycmF5KDI4MTYpOyFmdW5jdGlvbiB1bnBhY2tDb21tYW5kTG9va3VwVGFibGUoZSl7Y29uc3QgdD1uZXcgSW50MzJBcnJheSgyNCksYT1uZXcgSW50MzJBcnJheSgyNCk7YVswXT0yO2ZvcihsZXQgZT0wO2U8MjM7KytlKXt0W2UrMV09dFtlXSsoMTw8b1tlXSk7YVtlKzFdPWFbZV0rKDE8PGxbZV0pfWZvcihsZXQgbj0wO248NzA0Oysrbil7bGV0IHM9bj4+NixyPS00O2lmKHM+PTIpe3MtPTI7cj0wfWNvbnN0IGk9KDE3MDA2ND4+MipzJjMpPDwzfG4+PjMmNyxmPSgxNTYyMjg+PjIqcyYzKTw8M3w3Jm4sYz1hW2ZdLGg9citNYXRoLm1pbihjLDUpLTIsdT00Km47ZVt1XT1vW2ldfGxbZl08PDg7ZVt1KzFdPXRbaV07ZVt1KzJdPWFbZl07ZVt1KzNdPWh9fShmKTtmdW5jdGlvbiBsb2cyZmxvb3IoZSl7bGV0IHQ9LTEsYT0xNixuPWU7Zm9yKDthPjA7KXtsZXQgZT1uPj5hO2lmKDAhPT1lKXt0Kz1hO249ZX1hPj49MX1yZXR1cm4gdCtufWZ1bmN0aW9uIGNhbGN1bGF0ZURpc3RhbmNlQWxwaGFiZXRTaXplKGUsdCxhKXtyZXR1cm4gMTYrdCsyKihhPDxlKX1mdW5jdGlvbiBjYWxjdWxhdGVEaXN0YW5jZUFscGhhYmV0TGltaXQoZSx0LGEsbil7aWYodDxuKygyPDxhKSlyZXR1cm4gbWFrZUVycm9yKGUsLTIzKTtjb25zdCBzPTQrKHQtbj4+YSkscj1sb2cyZmxvb3IocyktMTtyZXR1cm4oKHItMTw8MXxzPj5yJjEpLTE8PGEpKygxPDxhKStuKzE2fWZ1bmN0aW9uIGluaXRTdGF0ZShlKXtpZigwIT09ZS5ydW5uaW5nU3RhdGUpcmV0dXJuIG1ha2VFcnJvcihlLC0yNik7ZS5ibG9ja1RyZWVzPW5ldyBJbnQzMkFycmF5KDMwOTEpO2UuYmxvY2tUcmVlc1swXT03O2UuZGlzdFJiSWR4PTM7bGV0IHQ9Y2FsY3VsYXRlRGlzdGFuY2VBbHBoYWJldExpbWl0KGUsMjE0NzQ4MzY0NCwzLDEyMCk7aWYodDwwKXJldHVybiB0O2NvbnN0IGE9dDtlLmRpc3RFeHRyYUJpdHM9bmV3IEludDhBcnJheShhKTtlLmRpc3RPZmZzZXQ9bmV3IEludDMyQXJyYXkoYSk7dD1mdW5jdGlvbiBpbml0Qml0UmVhZGVyKGUpe2UuYnl0ZUJ1ZmZlcj1uZXcgSW50OEFycmF5KDQxNjApO2UuYWNjdW11bGF0b3IzMj0wO2Uuc2hvcnRCdWZmZXI9bmV3IEludDE2QXJyYXkoMjA4MCk7ZS5iaXRPZmZzZXQ9MzI7ZS5oYWxmT2Zmc2V0PTIwNDg7ZS5lbmRPZlN0cmVhbVJlYWNoZWQ9MDtyZXR1cm4gcHJlcGFyZShlKX0oZSk7aWYodDwwKXJldHVybiB0O2UucnVubmluZ1N0YXRlPTE7cmV0dXJuIDB9ZnVuY3Rpb24gZGVjb2RlVmFyTGVuVW5zaWduZWRCeXRlKGUpe2lmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9aWYoMCE9PXJlYWRGZXdCaXRzKGUsMSkpe2NvbnN0IHQ9cmVhZEZld0JpdHMoZSwzKTtyZXR1cm4gMD09PXQ/MTpyZWFkRmV3Qml0cyhlLHQpKygxPDx0KX1yZXR1cm4gMH1mdW5jdGlvbiByZWFkU3ltYm9sKGUsdCxhKXtsZXQgbj1lW3RdO2NvbnN0IHM9YS5hY2N1bXVsYXRvcjMyPj4+YS5iaXRPZmZzZXQ7bis9MjU1JnM7Y29uc3Qgcj1lW25dPj4xNixpPTY1NTM1JmVbbl07aWYocjw9OCl7YS5iaXRPZmZzZXQrPXI7cmV0dXJuIGl9bis9aTtuKz0ocyYoMTw8ciktMSk+Pj44O2EuYml0T2Zmc2V0Kz04KyhlW25dPj4xNik7cmV0dXJuIDY1NTM1JmVbbl19ZnVuY3Rpb24gcmVhZEJsb2NrTGVuZ3RoKGUsdCxhKXtpZihhLmJpdE9mZnNldD49MTYpe2EuYWNjdW11bGF0b3IzMj1hLnNob3J0QnVmZmVyW2EuaGFsZk9mZnNldCsrXTw8MTZ8YS5hY2N1bXVsYXRvcjMyPj4+MTY7YS5iaXRPZmZzZXQtPTE2fWNvbnN0IG49cmVhZFN5bWJvbChlLHQsYSkscz1pW25dO2lmKGEuYml0T2Zmc2V0Pj0xNil7YS5hY2N1bXVsYXRvcjMyPWEuc2hvcnRCdWZmZXJbYS5oYWxmT2Zmc2V0KytdPDwxNnxhLmFjY3VtdWxhdG9yMzI+Pj4xNjthLmJpdE9mZnNldC09MTZ9cmV0dXJuIHJbbl0rKHM8PTE2P3JlYWRGZXdCaXRzKGEscyk6cmVhZE1hbnlCaXRzKGEscykpfWZ1bmN0aW9uIG1vdmVUb0Zyb250KGUsdCl7bGV0IGE9dDtjb25zdCBuPWVbYV07Zm9yKDthPjA7KXtlW2FdPWVbYS0xXTthLS19ZVswXT1ufWZ1bmN0aW9uIHJlYWRTaW1wbGVIdWZmbWFuQ29kZShlLHQsYSxuLHMpe2NvbnN0IHI9bmV3IEludDMyQXJyYXkodCksaT1uZXcgSW50MzJBcnJheSg0KSxvPTErbG9nMmZsb29yKGUtMSksbD1yZWFkRmV3Qml0cyhzLDIpKzE7Zm9yKGxldCBlPTA7ZTxsOysrZSl7aWYocy5iaXRPZmZzZXQ+PTE2KXtzLmFjY3VtdWxhdG9yMzI9cy5zaG9ydEJ1ZmZlcltzLmhhbGZPZmZzZXQrK108PDE2fHMuYWNjdW11bGF0b3IzMj4+PjE2O3MuYml0T2Zmc2V0LT0xNn1jb25zdCBhPXJlYWRGZXdCaXRzKHMsbyk7aWYoYT49dClyZXR1cm4gbWFrZUVycm9yKHMsLTE1KTtpW2VdPWF9Y29uc3QgZj1mdW5jdGlvbiBjaGVja0R1cGVzKGUsdCxhKXtmb3IobGV0IG49MDtuPGEtMTsrK24pZm9yKGxldCBzPW4rMTtzPGE7KytzKWlmKHRbbl09PT10W3NdKXJldHVybiBtYWtlRXJyb3IoZSwtNyk7cmV0dXJuIDB9KHMsaSxsKTtpZihmPDApcmV0dXJuIGY7bGV0IGM9bDs0PT09bCYmKGMrPXJlYWRGZXdCaXRzKHMsMSkpO3N3aXRjaChjKXtjYXNlIDE6cltpWzBdXT0xO2JyZWFrO2Nhc2UgMjpyW2lbMF1dPTE7cltpWzFdXT0xO2JyZWFrO2Nhc2UgMzpyW2lbMF1dPTE7cltpWzFdXT0yO3JbaVsyXV09MjticmVhaztjYXNlIDQ6cltpWzBdXT0yO3JbaVsxXV09MjtyW2lbMl1dPTI7cltpWzNdXT0yO2JyZWFrO2Nhc2UgNTpyW2lbMF1dPTE7cltpWzFdXT0yO3JbaVsyXV09MztyW2lbM11dPTN9cmV0dXJuIGJ1aWxkSHVmZm1hblRhYmxlKGEsbiw4LHIsdCl9ZnVuY3Rpb24gcmVhZENvbXBsZXhIdWZmbWFuQ29kZShlLGEsbixyLGkpe2NvbnN0IG89bmV3IEludDMyQXJyYXkoZSksbD1uZXcgSW50MzJBcnJheSgxOCk7bGV0IGY9MzIsYz0wO2ZvcihsZXQgZT1hO2U8MTg7KytlKXtjb25zdCBhPXRbZV07aWYoaS5iaXRPZmZzZXQ+PTE2KXtpLmFjY3VtdWxhdG9yMzI9aS5zaG9ydEJ1ZmZlcltpLmhhbGZPZmZzZXQrK108PDE2fGkuYWNjdW11bGF0b3IzMj4+PjE2O2kuYml0T2Zmc2V0LT0xNn1jb25zdCBuPWkuYWNjdW11bGF0b3IzMj4+PmkuYml0T2Zmc2V0JjE1O2kuYml0T2Zmc2V0Kz1zW25dPj4xNjtjb25zdCByPTY1NTM1JnNbbl07bFthXT1yO2lmKDAhPT1yKXtmLT0zMj4+cjtjKys7aWYoZjw9MClicmVha319aWYoMCE9PWYmJjEhPT1jKXJldHVybiBtYWtlRXJyb3IoaSwtNCk7Y29uc3QgaD1mdW5jdGlvbiByZWFkSHVmZm1hbkNvZGVMZW5ndGhzKGUsdCxhLG4pe2xldCBzPTAscj04LGk9MCxvPTAsbD0zMjc2ODtjb25zdCBmPW5ldyBJbnQzMkFycmF5KDMzKTtidWlsZEh1ZmZtYW5UYWJsZShmLGYubGVuZ3RoLTEsNSxlLDE4KTtmb3IoO3M8dCYmbD4wOyl7aWYobi5oYWxmT2Zmc2V0PjIwMzApe2NvbnN0IGU9cmVhZE1vcmVJbnB1dChuKTtpZihlPDApcmV0dXJuIGV9aWYobi5iaXRPZmZzZXQ+PTE2KXtuLmFjY3VtdWxhdG9yMzI9bi5zaG9ydEJ1ZmZlcltuLmhhbGZPZmZzZXQrK108PDE2fG4uYWNjdW11bGF0b3IzMj4+PjE2O24uYml0T2Zmc2V0LT0xNn1jb25zdCBlPW4uYWNjdW11bGF0b3IzMj4+Pm4uYml0T2Zmc2V0JjMxO24uYml0T2Zmc2V0Kz1mW2VdPj4xNjtjb25zdCBjPTY1NTM1JmZbZV07aWYoYzwxNil7aT0wO2FbcysrXT1jO2lmKDAhPT1jKXtyPWM7bC09MzI3Njg+PmN9fWVsc2V7Y29uc3QgZT1jLTE0O2xldCBmPTA7MTY9PT1jJiYoZj1yKTtpZihvIT09Zil7aT0wO289Zn1jb25zdCBoPWk7aWYoaT4wKXtpLT0yO2k8PD1lfWlmKG4uYml0T2Zmc2V0Pj0xNil7bi5hY2N1bXVsYXRvcjMyPW4uc2hvcnRCdWZmZXJbbi5oYWxmT2Zmc2V0KytdPDwxNnxuLmFjY3VtdWxhdG9yMzI+Pj4xNjtuLmJpdE9mZnNldC09MTZ9aSs9cmVhZEZld0JpdHMobixlKSszO2NvbnN0IHU9aS1oO2lmKHMrdT50KXJldHVybiBtYWtlRXJyb3IobiwtMik7Zm9yKGxldCBlPTA7ZTx1OysrZSlhW3MrK109bzswIT09byYmKGwtPXU8PDE1LW8pfX1pZigwIT09bClyZXR1cm4gbWFrZUVycm9yKG4sLTE4KTthLmZpbGwoMCxzLHQpO3JldHVybiAwfShsLGUsbyxpKTtyZXR1cm4gaDwwP2g6YnVpbGRIdWZmbWFuVGFibGUobixyLDgsbyxlKX1mdW5jdGlvbiByZWFkSHVmZm1hbkNvZGUoZSx0LGEsbixzKXtpZihzLmhhbGZPZmZzZXQ+MjAzMCl7Y29uc3QgZT1yZWFkTW9yZUlucHV0KHMpO2lmKGU8MClyZXR1cm4gZX1pZihzLmJpdE9mZnNldD49MTYpe3MuYWNjdW11bGF0b3IzMj1zLnNob3J0QnVmZmVyW3MuaGFsZk9mZnNldCsrXTw8MTZ8cy5hY2N1bXVsYXRvcjMyPj4+MTY7cy5iaXRPZmZzZXQtPTE2fWNvbnN0IHI9cmVhZEZld0JpdHMocywyKTtyZXR1cm4gMT09PXI/cmVhZFNpbXBsZUh1ZmZtYW5Db2RlKGUsdCxhLG4scyk6cmVhZENvbXBsZXhIdWZmbWFuQ29kZSh0LHIsYSxuLHMpfWZ1bmN0aW9uIGRlY29kZUNvbnRleHRNYXAodCxhLG4pe2xldCBzO2lmKG4uaGFsZk9mZnNldD4yMDMwKXtzPXJlYWRNb3JlSW5wdXQobik7aWYoczwwKXJldHVybiBzfWNvbnN0IHI9ZGVjb2RlVmFyTGVuVW5zaWduZWRCeXRlKG4pKzE7aWYoMT09PXIpe2EuZmlsbCgwLDAsdCk7cmV0dXJuIHJ9aWYobi5iaXRPZmZzZXQ+PTE2KXtuLmFjY3VtdWxhdG9yMzI9bi5zaG9ydEJ1ZmZlcltuLmhhbGZPZmZzZXQrK108PDE2fG4uYWNjdW11bGF0b3IzMj4+PjE2O24uYml0T2Zmc2V0LT0xNn1sZXQgaT0wOzAhPT1yZWFkRmV3Qml0cyhuLDEpJiYoaT1yZWFkRmV3Qml0cyhuLDQpKzEpO2NvbnN0IG89citpLGw9ZVtvKzMxPj41XSxmPW5ldyBJbnQzMkFycmF5KGwrMSksYz1mLmxlbmd0aC0xO3M9cmVhZEh1ZmZtYW5Db2RlKG8sbyxmLGMsbik7aWYoczwwKXJldHVybiBzO2xldCBoPTA7Zm9yKDtoPHQ7KXtpZihuLmhhbGZPZmZzZXQ+MjAzMCl7cz1yZWFkTW9yZUlucHV0KG4pO2lmKHM8MClyZXR1cm4gc31pZihuLmJpdE9mZnNldD49MTYpe24uYWNjdW11bGF0b3IzMj1uLnNob3J0QnVmZmVyW24uaGFsZk9mZnNldCsrXTw8MTZ8bi5hY2N1bXVsYXRvcjMyPj4+MTY7bi5iaXRPZmZzZXQtPTE2fWNvbnN0IGU9cmVhZFN5bWJvbChmLGMsbik7aWYoMD09PWUpe2FbaF09MDtoKyt9ZWxzZSBpZihlPD1pKXtpZihuLmJpdE9mZnNldD49MTYpe24uYWNjdW11bGF0b3IzMj1uLnNob3J0QnVmZmVyW24uaGFsZk9mZnNldCsrXTw8MTZ8bi5hY2N1bXVsYXRvcjMyPj4+MTY7bi5iaXRPZmZzZXQtPTE2fWxldCBzPSgxPDxlKStyZWFkRmV3Qml0cyhuLGUpO2Zvcig7MCE9PXM7KXtpZihoPj10KXJldHVybiBtYWtlRXJyb3IobiwtMyk7YVtoXT0wO2grKztzLS19fWVsc2V7YVtoXT1lLWk7aCsrfX1pZihuLmJpdE9mZnNldD49MTYpe24uYWNjdW11bGF0b3IzMj1uLnNob3J0QnVmZmVyW24uaGFsZk9mZnNldCsrXTw8MTZ8bi5hY2N1bXVsYXRvcjMyPj4+MTY7bi5iaXRPZmZzZXQtPTE2fTE9PT1yZWFkRmV3Qml0cyhuLDEpJiZmdW5jdGlvbiBpbnZlcnNlTW92ZVRvRnJvbnRUcmFuc2Zvcm0oZSx0KXtjb25zdCBhPW5ldyBJbnQzMkFycmF5KDI1Nik7Zm9yKGxldCBlPTA7ZTwyNTY7KytlKWFbZV09ZTtmb3IobGV0IG49MDtuPHQ7KytuKXtjb25zdCB0PTI1NSZlW25dO2Vbbl09YVt0XTswIT09dCYmbW92ZVRvRnJvbnQoYSx0KX19KGEsdCk7cmV0dXJuIHJ9ZnVuY3Rpb24gZGVjb2RlQmxvY2tUeXBlQW5kTGVuZ3RoKGUsdCxhKXtjb25zdCBuPWUucmluZ3Mscz00KzIqdDtpZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fWxldCByPXJlYWRTeW1ib2woZS5ibG9ja1RyZWVzLDIqdCxlKTtjb25zdCBpPXJlYWRCbG9ja0xlbmd0aChlLmJsb2NrVHJlZXMsMip0KzEsZSk7MT09PXI/cj1uW3MrMV0rMTowPT09cj9yPW5bc106ci09MjtyPj1hJiYoci09YSk7bltzXT1uW3MrMV07bltzKzFdPXI7cmV0dXJuIGl9ZnVuY3Rpb24gZGVjb2RlTGl0ZXJhbEJsb2NrU3dpdGNoKGUpe2UubGl0ZXJhbEJsb2NrTGVuZ3RoPWRlY29kZUJsb2NrVHlwZUFuZExlbmd0aChlLDAsZS5udW1MaXRlcmFsQmxvY2tUeXBlcyk7Y29uc3QgdD1lLnJpbmdzWzVdO2UuY29udGV4dE1hcFNsaWNlPXQ8PDY7ZS5saXRlcmFsVHJlZUlkeD0yNTUmZS5jb250ZXh0TWFwW2UuY29udGV4dE1hcFNsaWNlXTtjb25zdCBhPWUuY29udGV4dE1vZGVzW3RdO2UuY29udGV4dExvb2t1cE9mZnNldDE9YTw8OTtlLmNvbnRleHRMb29rdXBPZmZzZXQyPWUuY29udGV4dExvb2t1cE9mZnNldDErMjU2fWZ1bmN0aW9uIGRlY29kZUNvbW1hbmRCbG9ja1N3aXRjaChlKXtlLmNvbW1hbmRCbG9ja0xlbmd0aD1kZWNvZGVCbG9ja1R5cGVBbmRMZW5ndGgoZSwxLGUubnVtQ29tbWFuZEJsb2NrVHlwZXMpO2UuY29tbWFuZFRyZWVJZHg9ZS5yaW5nc1s3XX1mdW5jdGlvbiBkZWNvZGVEaXN0YW5jZUJsb2NrU3dpdGNoKGUpe2UuZGlzdGFuY2VCbG9ja0xlbmd0aD1kZWNvZGVCbG9ja1R5cGVBbmRMZW5ndGgoZSwyLGUubnVtRGlzdGFuY2VCbG9ja1R5cGVzKTtlLmRpc3RDb250ZXh0TWFwU2xpY2U9ZS5yaW5nc1s5XTw8Mn1mdW5jdGlvbiByZWFkTmV4dE1ldGFibG9ja0hlYWRlcihlKXtpZigwIT09ZS5pbnB1dEVuZCl7ZS5uZXh0UnVubmluZ1N0YXRlPTEwO2UucnVubmluZ1N0YXRlPTEyO3JldHVybiAwfWUubGl0ZXJhbFRyZWVHcm91cD1uZXcgSW50MzJBcnJheSgwKTtlLmNvbW1hbmRUcmVlR3JvdXA9bmV3IEludDMyQXJyYXkoMCk7ZS5kaXN0YW5jZVRyZWVHcm91cD1uZXcgSW50MzJBcnJheSgwKTtsZXQgdDtpZihlLmhhbGZPZmZzZXQ+MjAzMCl7dD1yZWFkTW9yZUlucHV0KGUpO2lmKHQ8MClyZXR1cm4gdH10PWZ1bmN0aW9uIGRlY29kZU1ldGFCbG9ja0xlbmd0aChlKXtpZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fWUuaW5wdXRFbmQ9cmVhZEZld0JpdHMoZSwxKTtlLm1ldGFCbG9ja0xlbmd0aD0wO2UuaXNVbmNvbXByZXNzZWQ9MDtlLmlzTWV0YWRhdGE9MDtpZigwIT09ZS5pbnB1dEVuZCYmMCE9PXJlYWRGZXdCaXRzKGUsMSkpcmV0dXJuIDA7Y29uc3QgdD1yZWFkRmV3Qml0cyhlLDIpKzQ7aWYoNz09PXQpe2UuaXNNZXRhZGF0YT0xO2lmKDAhPT1yZWFkRmV3Qml0cyhlLDEpKXJldHVybiBtYWtlRXJyb3IoZSwtNik7Y29uc3QgdD1yZWFkRmV3Qml0cyhlLDIpO2lmKDA9PT10KXJldHVybiAwO2ZvcihsZXQgYT0wO2E8dDsrK2Epe2lmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9Y29uc3Qgbj1yZWFkRmV3Qml0cyhlLDgpO2lmKDA9PT1uJiZhKzE9PT10JiZ0PjEpcmV0dXJuIG1ha2VFcnJvcihlLC04KTtlLm1ldGFCbG9ja0xlbmd0aCs9bjw8OCphfX1lbHNlIGZvcihsZXQgYT0wO2E8dDsrK2Epe2lmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9Y29uc3Qgbj1yZWFkRmV3Qml0cyhlLDQpO2lmKDA9PT1uJiZhKzE9PT10JiZ0PjQpcmV0dXJuIG1ha2VFcnJvcihlLC04KTtlLm1ldGFCbG9ja0xlbmd0aCs9bjw8NCphfWUubWV0YUJsb2NrTGVuZ3RoKys7MD09PWUuaW5wdXRFbmQmJihlLmlzVW5jb21wcmVzc2VkPXJlYWRGZXdCaXRzKGUsMSkpO3JldHVybiAwfShlKTtpZih0PDApcmV0dXJuIHQ7aWYoMD09PWUubWV0YUJsb2NrTGVuZ3RoJiYwPT09ZS5pc01ldGFkYXRhKXJldHVybiAwO2lmKDAhPT1lLmlzVW5jb21wcmVzc2VkfHwwIT09ZS5pc01ldGFkYXRhKXt0PWp1bXBUb0J5dGVCb3VuZGFyeShlKTtpZih0PDApcmV0dXJuIHQ7MD09PWUuaXNNZXRhZGF0YT9lLnJ1bm5pbmdTdGF0ZT02OmUucnVubmluZ1N0YXRlPTV9ZWxzZSBlLnJ1bm5pbmdTdGF0ZT0zO2lmKDAhPT1lLmlzTWV0YWRhdGEpcmV0dXJuIDA7ZS5leHBlY3RlZFRvdGFsU2l6ZSs9ZS5tZXRhQmxvY2tMZW5ndGg7ZS5leHBlY3RlZFRvdGFsU2l6ZT4xPDwzMCYmKGUuZXhwZWN0ZWRUb3RhbFNpemU9MTw8MzApO2UucmluZ0J1ZmZlclNpemU8ZS5tYXhSaW5nQnVmZmVyU2l6ZSYmZnVuY3Rpb24gbWF5YmVSZWFsbG9jYXRlUmluZ0J1ZmZlcihlKXtsZXQgdD1lLm1heFJpbmdCdWZmZXJTaXplO2lmKHQ+ZS5leHBlY3RlZFRvdGFsU2l6ZSl7Y29uc3QgYT1lLmV4cGVjdGVkVG90YWxTaXplO2Zvcig7dD4+MT5hOyl0Pj49MTswPT09ZS5pbnB1dEVuZCYmdDwxNjM4NCYmZS5tYXhSaW5nQnVmZmVyU2l6ZT49MTYzODQmJih0PTE2Mzg0KX1pZih0PD1lLnJpbmdCdWZmZXJTaXplKXJldHVybjtjb25zdCBhPW5ldyBJbnQ4QXJyYXkodCszNyksbj1lLnJpbmdCdWZmZXI7MCE9PW4ubGVuZ3RoJiZhLnNldChuLnN1YmFycmF5KDAsZS5yaW5nQnVmZmVyU2l6ZSksMCk7ZS5yaW5nQnVmZmVyPWE7ZS5yaW5nQnVmZmVyU2l6ZT10fShlKTtyZXR1cm4gMH1mdW5jdGlvbiByZWFkTWV0YWJsb2NrUGFydGl0aW9uKGUsdCxhKXtsZXQgbj1lLmJsb2NrVHJlZXNbMip0XTtpZihhPD0xKXtlLmJsb2NrVHJlZXNbMip0KzFdPW47ZS5ibG9ja1RyZWVzWzIqdCsyXT1uO3JldHVybiAxPDwyOH1jb25zdCBzPWErMjtsZXQgcj1yZWFkSHVmZm1hbkNvZGUocyxzLGUuYmxvY2tUcmVlcywyKnQsZSk7aWYocjwwKXJldHVybiByO24rPXI7ZS5ibG9ja1RyZWVzWzIqdCsxXT1uO3I9cmVhZEh1ZmZtYW5Db2RlKDI2LDI2LGUuYmxvY2tUcmVlcywyKnQrMSxlKTtpZihyPDApcmV0dXJuIHI7bis9cjtlLmJsb2NrVHJlZXNbMip0KzJdPW47cmV0dXJuIHJlYWRCbG9ja0xlbmd0aChlLmJsb2NrVHJlZXMsMip0KzEsZSl9ZnVuY3Rpb24gcmVhZE1ldGFibG9ja0h1ZmZtYW5Db2Rlc0FuZENvbnRleHRNYXBzKGUpe2UubnVtTGl0ZXJhbEJsb2NrVHlwZXM9ZGVjb2RlVmFyTGVuVW5zaWduZWRCeXRlKGUpKzE7bGV0IHQ9cmVhZE1ldGFibG9ja1BhcnRpdGlvbihlLDAsZS5udW1MaXRlcmFsQmxvY2tUeXBlcyk7aWYodDwwKXJldHVybiB0O2UubGl0ZXJhbEJsb2NrTGVuZ3RoPXQ7ZS5udW1Db21tYW5kQmxvY2tUeXBlcz1kZWNvZGVWYXJMZW5VbnNpZ25lZEJ5dGUoZSkrMTt0PXJlYWRNZXRhYmxvY2tQYXJ0aXRpb24oZSwxLGUubnVtQ29tbWFuZEJsb2NrVHlwZXMpO2lmKHQ8MClyZXR1cm4gdDtlLmNvbW1hbmRCbG9ja0xlbmd0aD10O2UubnVtRGlzdGFuY2VCbG9ja1R5cGVzPWRlY29kZVZhckxlblVuc2lnbmVkQnl0ZShlKSsxO3Q9cmVhZE1ldGFibG9ja1BhcnRpdGlvbihlLDIsZS5udW1EaXN0YW5jZUJsb2NrVHlwZXMpO2lmKHQ8MClyZXR1cm4gdDtlLmRpc3RhbmNlQmxvY2tMZW5ndGg9dDtpZihlLmhhbGZPZmZzZXQ+MjAzMCl7dD1yZWFkTW9yZUlucHV0KGUpO2lmKHQ8MClyZXR1cm4gdH1pZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fWUuZGlzdGFuY2VQb3N0Zml4Qml0cz1yZWFkRmV3Qml0cyhlLDIpO2UubnVtRGlyZWN0RGlzdGFuY2VDb2Rlcz1yZWFkRmV3Qml0cyhlLDQpPDxlLmRpc3RhbmNlUG9zdGZpeEJpdHM7ZS5jb250ZXh0TW9kZXM9bmV3IEludDhBcnJheShlLm51bUxpdGVyYWxCbG9ja1R5cGVzKTtsZXQgYT0wO2Zvcig7YTxlLm51bUxpdGVyYWxCbG9ja1R5cGVzOyl7Y29uc3Qgbj1NYXRoLm1pbihhKzk2LGUubnVtTGl0ZXJhbEJsb2NrVHlwZXMpO2Zvcig7YTxuOyl7aWYoZS5iaXRPZmZzZXQ+PTE2KXtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNn1lLmNvbnRleHRNb2Rlc1thXT1yZWFkRmV3Qml0cyhlLDIpO2ErK31pZihlLmhhbGZPZmZzZXQ+MjAzMCl7dD1yZWFkTW9yZUlucHV0KGUpO2lmKHQ8MClyZXR1cm4gdH19Y29uc3Qgbj1lLm51bUxpdGVyYWxCbG9ja1R5cGVzPDw2O2UuY29udGV4dE1hcD1uZXcgSW50OEFycmF5KG4pO3Q9ZGVjb2RlQ29udGV4dE1hcChuLGUuY29udGV4dE1hcCxlKTtpZih0PDApcmV0dXJuIHQ7Y29uc3Qgcz10O2UudHJpdmlhbExpdGVyYWxDb250ZXh0PTE7Zm9yKGxldCB0PTA7dDxuOysrdClpZihlLmNvbnRleHRNYXBbdF0hPT10Pj42KXtlLnRyaXZpYWxMaXRlcmFsQ29udGV4dD0wO2JyZWFrfWUuZGlzdENvbnRleHRNYXA9bmV3IEludDhBcnJheShlLm51bURpc3RhbmNlQmxvY2tUeXBlczw8Mik7dD1kZWNvZGVDb250ZXh0TWFwKGUubnVtRGlzdGFuY2VCbG9ja1R5cGVzPDwyLGUuZGlzdENvbnRleHRNYXAsZSk7aWYodDwwKXJldHVybiB0O2NvbnN0IHI9dDtlLmxpdGVyYWxUcmVlR3JvdXA9bmV3IEludDMyQXJyYXkoaHVmZm1hblRyZWVHcm91cEFsbG9jU2l6ZSgyNTYscykpO3Q9ZGVjb2RlSHVmZm1hblRyZWVHcm91cCgyNTYsMjU2LHMsZSxlLmxpdGVyYWxUcmVlR3JvdXApO2lmKHQ8MClyZXR1cm4gdDtlLmNvbW1hbmRUcmVlR3JvdXA9bmV3IEludDMyQXJyYXkoaHVmZm1hblRyZWVHcm91cEFsbG9jU2l6ZSg3MDQsZS5udW1Db21tYW5kQmxvY2tUeXBlcykpO3Q9ZGVjb2RlSHVmZm1hblRyZWVHcm91cCg3MDQsNzA0LGUubnVtQ29tbWFuZEJsb2NrVHlwZXMsZSxlLmNvbW1hbmRUcmVlR3JvdXApO2lmKHQ8MClyZXR1cm4gdDtsZXQgaT1jYWxjdWxhdGVEaXN0YW5jZUFscGhhYmV0U2l6ZShlLmRpc3RhbmNlUG9zdGZpeEJpdHMsZS5udW1EaXJlY3REaXN0YW5jZUNvZGVzLDI0KSxvPWk7aWYoMT09PWUuaXNMYXJnZVdpbmRvdyl7aT1jYWxjdWxhdGVEaXN0YW5jZUFscGhhYmV0U2l6ZShlLmRpc3RhbmNlUG9zdGZpeEJpdHMsZS5udW1EaXJlY3REaXN0YW5jZUNvZGVzLDYyKTt0PWNhbGN1bGF0ZURpc3RhbmNlQWxwaGFiZXRMaW1pdChlLDIxNDc0ODM2NDQsZS5kaXN0YW5jZVBvc3RmaXhCaXRzLGUubnVtRGlyZWN0RGlzdGFuY2VDb2Rlcyk7aWYodDwwKXJldHVybiB0O289dH1lLmRpc3RhbmNlVHJlZUdyb3VwPW5ldyBJbnQzMkFycmF5KGh1ZmZtYW5UcmVlR3JvdXBBbGxvY1NpemUobyxyKSk7dD1kZWNvZGVIdWZmbWFuVHJlZUdyb3VwKGksbyxyLGUsZS5kaXN0YW5jZVRyZWVHcm91cCk7aWYodDwwKXJldHVybiB0OyFmdW5jdGlvbiBjYWxjdWxhdGVEaXN0YW5jZUx1dChlLHQpe2NvbnN0IGE9ZS5kaXN0RXh0cmFCaXRzLG49ZS5kaXN0T2Zmc2V0LHM9ZS5kaXN0YW5jZVBvc3RmaXhCaXRzLHI9ZS5udW1EaXJlY3REaXN0YW5jZUNvZGVzLGk9MTw8cztsZXQgbz0xLGw9MCxmPTE2O2ZvcihsZXQgZT0wO2U8cjsrK2Upe2FbZl09MDtuW2ZdPWUrMTsrK2Z9Zm9yKDtmPHQ7KXtjb25zdCBlPXIrKCgyK2w8PG8pLTQ8PHMpKzE7Zm9yKGxldCB0PTA7dDxpOysrdCl7YVtmXT1vO25bZl09ZSt0OysrZn1vKz1sO2xePTF9fShlLG8pO2UuY29udGV4dE1hcFNsaWNlPTA7ZS5kaXN0Q29udGV4dE1hcFNsaWNlPTA7ZS5jb250ZXh0TG9va3VwT2Zmc2V0MT01MTIqZS5jb250ZXh0TW9kZXNbMF07ZS5jb250ZXh0TG9va3VwT2Zmc2V0Mj1lLmNvbnRleHRMb29rdXBPZmZzZXQxKzI1NjtlLmxpdGVyYWxUcmVlSWR4PTA7ZS5jb21tYW5kVHJlZUlkeD0wO2UucmluZ3NbNF09MTtlLnJpbmdzWzVdPTA7ZS5yaW5nc1s2XT0xO2UucmluZ3NbN109MDtlLnJpbmdzWzhdPTE7ZS5yaW5nc1s5XT0wO3JldHVybiAwfWZ1bmN0aW9uIGNvcHlVbmNvbXByZXNzZWREYXRhKGUpe2NvbnN0IHQ9ZS5yaW5nQnVmZmVyO2xldCBhO2lmKGUubWV0YUJsb2NrTGVuZ3RoPD0wKXthPXJlbG9hZChlKTtpZihhPDApcmV0dXJuIGE7ZS5ydW5uaW5nU3RhdGU9MjtyZXR1cm4gMH1jb25zdCBuPU1hdGgubWluKGUucmluZ0J1ZmZlclNpemUtZS5wb3MsZS5tZXRhQmxvY2tMZW5ndGgpO2E9ZnVuY3Rpb24gY29weVJhd0J5dGVzKGUsdCxhLG4pe2xldCBzPWEscj1uO2lmKDcmZS5iaXRPZmZzZXQpcmV0dXJuIG1ha2VFcnJvcihlLC0zMCk7Zm9yKDszMiE9PWUuYml0T2Zmc2V0JiYwIT09cjspe3RbcysrXT1lLmFjY3VtdWxhdG9yMzI+Pj5lLmJpdE9mZnNldDtlLmJpdE9mZnNldCs9ODtyLS19aWYoMD09PXIpcmV0dXJuIDA7Y29uc3QgaT1NYXRoLm1pbihoYWxmQXZhaWxhYmxlKGUpLHI+PjEpO2lmKGk+MCl7Y29uc3QgYT1lLmhhbGZPZmZzZXQ8PDEsbj1pPDwxO3Quc2V0KGUuYnl0ZUJ1ZmZlci5zdWJhcnJheShhLGErbikscyk7cys9bjtyLT1uO2UuaGFsZk9mZnNldCs9aX1pZigwPT09cilyZXR1cm4gMDtpZihoYWxmQXZhaWxhYmxlKGUpPjApe2lmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9Zm9yKDswIT09cjspe3RbcysrXT1lLmFjY3VtdWxhdG9yMzI+Pj5lLmJpdE9mZnNldDtlLmJpdE9mZnNldCs9ODtyLS19cmV0dXJuIGNoZWNrSGVhbHRoKGUsMCl9Zm9yKDtyPjA7KXtjb25zdCBhPXJlYWRJbnB1dChlLHQscyxyKTtpZihhPC0xKXJldHVybiBhO2lmKGE8PTApcmV0dXJuIG1ha2VFcnJvcihlLC0xNik7cys9YTtyLT1hfXJldHVybiAwfShlLHQsZS5wb3Msbik7aWYoYTwwKXJldHVybiBhO2UubWV0YUJsb2NrTGVuZ3RoLT1uO2UucG9zKz1uO2lmKGUucG9zPT09ZS5yaW5nQnVmZmVyU2l6ZSl7ZS5uZXh0UnVubmluZ1N0YXRlPTY7ZS5ydW5uaW5nU3RhdGU9MTI7cmV0dXJuIDB9YT1yZWxvYWQoZSk7aWYoYTwwKXJldHVybiBhO2UucnVubmluZ1N0YXRlPTI7cmV0dXJuIDB9ZnVuY3Rpb24gd3JpdGVSaW5nQnVmZmVyKGUpe2NvbnN0IHQ9TWF0aC5taW4oZS5vdXRwdXRMZW5ndGgtZS5vdXRwdXRVc2VkLGUucmluZ0J1ZmZlckJ5dGVzUmVhZHktZS5yaW5nQnVmZmVyQnl0ZXNXcml0dGVuKTtpZigwIT09dCl7ZS5vdXRwdXQuc2V0KGUucmluZ0J1ZmZlci5zdWJhcnJheShlLnJpbmdCdWZmZXJCeXRlc1dyaXR0ZW4sZS5yaW5nQnVmZmVyQnl0ZXNXcml0dGVuK3QpLGUub3V0cHV0T2Zmc2V0K2Uub3V0cHV0VXNlZCk7ZS5vdXRwdXRVc2VkKz10O2UucmluZ0J1ZmZlckJ5dGVzV3JpdHRlbis9dH1yZXR1cm4gZS5vdXRwdXRVc2VkPGUub3V0cHV0TGVuZ3RoPzA6Mn1mdW5jdGlvbiBodWZmbWFuVHJlZUdyb3VwQWxsb2NTaXplKHQsYSl7cmV0dXJuIGErYSplW3QrMzE+PjVdfWZ1bmN0aW9uIGRlY29kZUh1ZmZtYW5UcmVlR3JvdXAoZSx0LGEsbixzKXtsZXQgcj1hO2ZvcihsZXQgaT0wO2k8YTsrK2kpe3NbaV09cjtjb25zdCBhPXJlYWRIdWZmbWFuQ29kZShlLHQscyxpLG4pO2lmKGE8MClyZXR1cm4gYTtyKz1hfXJldHVybiAwfWZ1bmN0aW9uIGNhbGN1bGF0ZUZlbmNlKGUpe2xldCB0PWUucmluZ0J1ZmZlclNpemU7MCE9PWUuaXNFYWdlciYmKHQ9TWF0aC5taW4odCxlLnJpbmdCdWZmZXJCeXRlc1dyaXR0ZW4rZS5vdXRwdXRMZW5ndGgtZS5vdXRwdXRVc2VkKSk7cmV0dXJuIHR9ZnVuY3Rpb24gZG9Vc2VEaWN0aW9uYXJ5KGUsdCl7aWYoZS5kaXN0YW5jZT4yMTQ3NDgzNjQ0KXJldHVybiBtYWtlRXJyb3IoZSwtOSk7Y29uc3QgYT1lLmRpc3RhbmNlLWUubWF4RGlzdGFuY2UtMS1lLmNkVG90YWxTaXplO2lmKGE8MCl7Y29uc3QgdD1mdW5jdGlvbiBpbml0aWFsaXplQ29tcG91bmREaWN0aW9uYXJ5Q29weShlLHQsYSl7LTE9PT1lLmNkQmxvY2tCaXRzJiZmdW5jdGlvbiBpbml0aWFsaXplQ29tcG91bmREaWN0aW9uYXJ5KGUpe2UuY2RCbG9ja01hcD1uZXcgSW50OEFycmF5KDI1Nik7bGV0IHQ9ODtmb3IoO2UuY2RUb3RhbFNpemUtMT4+dDspdCsrO3QtPTg7ZS5jZEJsb2NrQml0cz10O2xldCBhPTAsbj0wO2Zvcig7YTxlLmNkVG90YWxTaXplOyl7Zm9yKDtlLmNkQ2h1bmtPZmZzZXRzW24rMV08YTspbisrO2UuY2RCbG9ja01hcFthPj50XT1uO2ErPTE8PHR9fShlKTtsZXQgbj1lLmNkQmxvY2tNYXBbdD4+ZS5jZEJsb2NrQml0c107Zm9yKDt0Pj1lLmNkQ2h1bmtPZmZzZXRzW24rMV07KW4rKztpZihlLmNkVG90YWxTaXplPnQrYSlyZXR1cm4gbWFrZUVycm9yKGUsLTkpO2UuZGlzdFJiSWR4PWUuZGlzdFJiSWR4KzEmMztlLnJpbmdzW2UuZGlzdFJiSWR4XT1lLmRpc3RhbmNlO2UubWV0YUJsb2NrTGVuZ3RoLT1hO2UuY2RCckluZGV4PW47ZS5jZEJyT2Zmc2V0PXQtZS5jZENodW5rT2Zmc2V0c1tuXTtlLmNkQnJMZW5ndGg9YTtlLmNkQnJDb3BpZWQ9MDtyZXR1cm4gMH0oZSwtYS0xLGUuY29weUxlbmd0aCk7aWYodDwwKXJldHVybiB0O2UucnVubmluZ1N0YXRlPTE0fWVsc2V7Y29uc3Qgbj11LHM9ZS5jb3B5TGVuZ3RoO2lmKHM+MzEpcmV0dXJuIG1ha2VFcnJvcihlLC05KTtjb25zdCByPXBbc107aWYoMD09PXIpcmV0dXJuIG1ha2VFcnJvcihlLC05KTtsZXQgaT1tW3NdO2NvbnN0IG89YT4+cjtpKz0oYSYoMTw8ciktMSkqcztjb25zdCBsPWM7aWYobz49bC5udW1UcmFuc2Zvcm1zKXJldHVybiBtYWtlRXJyb3IoZSwtOSk7Y29uc3QgZj1mdW5jdGlvbiB0cmFuc2Zvcm1EaWN0aW9uYXJ5V29yZChlLHQsYSxuLHMscixpKXtsZXQgbz10O2NvbnN0IGw9ci50cmlwbGV0cyxmPXIucHJlZml4U3VmZml4U3RvcmFnZSxjPXIucHJlZml4U3VmZml4SGVhZHMsaD0zKmksdT1sW2hdLG09bFtoKzFdLHA9bFtoKzJdO2xldCBkPWNbdV07Y29uc3QgZz1jW3UrMV07bGV0IGI9Y1twXTtjb25zdCB3PWNbcCsxXTtsZXQgaj1tLTExLGs9bTsoajwxfHxqPjkpJiYoaj0wKTsoazwxfHxrPjkpJiYoaz0wKTtmb3IoO2QhPT1nOyllW28rK109ZltkKytdO2xldCB5PXM7aj55JiYoaj15KTtsZXQgcT1uK2o7eS09ajt5LT1rO2xldCB2PXk7Zm9yKDt2PjA7KXtlW28rK109YVtxKytdO3YtLX1pZigxMD09PW18fDExPT09bSl7bGV0IHQ9by15OzEwPT09bSYmKHk9MSk7Zm9yKDt5PjA7KXtjb25zdCBhPTI1NSZlW3RdO2lmKGE8MTkyKXthPj05NyYmYTw9MTIyJiYoZVt0XT0zMl5lW3RdKTt0Kz0xO3ktPTF9ZWxzZSBpZihhPDIyNCl7ZVt0KzFdPTMyXmVbdCsxXTt0Kz0yO3ktPTJ9ZWxzZXtlW3QrMl09NV5lW3QrMl07dCs9Mzt5LT0zfX19ZWxzZSBpZigyMT09PW18fDIyPT09bSl7bGV0IHQ9by15O2NvbnN0IGE9ci5wYXJhbXNbaV07bGV0IG49MTY3NzcyMTYtKDMyNzY4JmEpKygzMjc2NyZhKTtmb3IoO3k+MDspe2xldCBhPTE7Y29uc3Qgcz0yNTUmZVt0XTtpZihzPDEyOCl7bis9cztlW3RdPTEyNyZufWVsc2UgaWYoczwxOTIpO2Vsc2UgaWYoczwyMjQpaWYoeT49Mil7Y29uc3Qgcj1lW3QrMV07bis9NjMmcnwoMzEmcyk8PDY7ZVt0XT0xOTJ8bj4+NiYzMTtlW3QrMV09MTkyJnJ8NjMmbjthPTJ9ZWxzZSBhPXk7ZWxzZSBpZihzPDI0MClpZih5Pj0zKXtjb25zdCByPWVbdCsxXSxpPWVbdCsyXTtuKz02MyZpfCg2MyZyKTw8NnwoMTUmcyk8PDEyO2VbdF09MjI0fG4+PjEyJjE1O2VbdCsxXT0xOTImcnxuPj42JjYzO2VbdCsyXT0xOTImaXw2MyZuO2E9M31lbHNlIGE9eTtlbHNlIGlmKHM8MjQ4KWlmKHk+PTQpe2NvbnN0IHI9ZVt0KzFdLGk9ZVt0KzJdLG89ZVt0KzNdO24rPTYzJm98KDYzJmkpPDw2fCg2MyZyKTw8MTJ8KDcmcyk8PDE4O2VbdF09MjQwfG4+PjE4Jjc7ZVt0KzFdPTE5MiZyfG4+PjEyJjYzO2VbdCsyXT0xOTImaXxuPj42JjYzO2VbdCszXT0xOTImb3w2MyZuO2E9NH1lbHNlIGE9eTt0Kz1hO3ktPWE7MjE9PT1tJiYoeT0wKX19Zm9yKDtiIT09dzspZVtvKytdPWZbYisrXTtyZXR1cm4gby10fShlLnJpbmdCdWZmZXIsZS5wb3MsbixpLHMsbCxvKTtlLnBvcys9ZjtlLm1ldGFCbG9ja0xlbmd0aC09ZjtpZihlLnBvcz49dCl7ZS5uZXh0UnVubmluZ1N0YXRlPTQ7ZS5ydW5uaW5nU3RhdGU9MTI7cmV0dXJuIDB9ZS5ydW5uaW5nU3RhdGU9NH1yZXR1cm4gMH1mdW5jdGlvbiBjb3B5RnJvbUNvbXBvdW5kRGljdGlvbmFyeShlLHQpe2xldCBhPWUucG9zO2NvbnN0IG49YTtmb3IoO2UuY2RCckxlbmd0aCE9PWUuY2RCckNvcGllZDspe2NvbnN0IG49dC1hLHM9ZS5jZENodW5rT2Zmc2V0c1tlLmNkQnJJbmRleCsxXS1lLmNkQ2h1bmtPZmZzZXRzW2UuY2RCckluZGV4XS1lLmNkQnJPZmZzZXQ7bGV0IHI9ZS5jZEJyTGVuZ3RoLWUuY2RCckNvcGllZDtyPnMmJihyPXMpO3I+biYmKHI9bik7ZS5yaW5nQnVmZmVyLnNldChlLmNkQ2h1bmtzW2UuY2RCckluZGV4XS5zdWJhcnJheShlLmNkQnJPZmZzZXQsZS5jZEJyT2Zmc2V0K3IpLGEpO2ErPXI7ZS5jZEJyT2Zmc2V0Kz1yO2UuY2RCckNvcGllZCs9cjtpZihyPT09cyl7ZS5jZEJySW5kZXgrKztlLmNkQnJPZmZzZXQ9MH1pZihhPj10KWJyZWFrfXJldHVybiBhLW59ZnVuY3Rpb24gZGVjb21wcmVzcyhlKXtsZXQgdDtpZigwPT09ZS5ydW5uaW5nU3RhdGUpcmV0dXJuIG1ha2VFcnJvcihlLC0yNSk7aWYoZS5ydW5uaW5nU3RhdGU8MClyZXR1cm4gbWFrZUVycm9yKGUsLTI4KTtpZigxMT09PWUucnVubmluZ1N0YXRlKXJldHVybiBtYWtlRXJyb3IoZSwtMjIpO2lmKDE9PT1lLnJ1bm5pbmdTdGF0ZSl7Y29uc3QgdD1mdW5jdGlvbiBkZWNvZGVXaW5kb3dCaXRzKGUpe2NvbnN0IHQ9ZS5pc0xhcmdlV2luZG93O2UuaXNMYXJnZVdpbmRvdz0wO2lmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9aWYoMD09PXJlYWRGZXdCaXRzKGUsMSkpcmV0dXJuIDE2O2xldCBhPXJlYWRGZXdCaXRzKGUsMyk7aWYoMCE9PWEpcmV0dXJuIDE3K2E7YT1yZWFkRmV3Qml0cyhlLDMpO2lmKDAhPT1hKXtpZigxPT09YSl7aWYoMD09PXQpcmV0dXJuLTE7ZS5pc0xhcmdlV2luZG93PTE7aWYoMT09PXJlYWRGZXdCaXRzKGUsMSkpcmV0dXJuLTE7YT1yZWFkRmV3Qml0cyhlLDYpO3JldHVybiBhPDEwfHxhPjMwPy0xOmF9cmV0dXJuIDgrYX1yZXR1cm4gMTd9KGUpO2lmKC0xPT09dClyZXR1cm4gbWFrZUVycm9yKGUsLTExKTtlLm1heFJpbmdCdWZmZXJTaXplPTE8PHQ7ZS5tYXhCYWNrd2FyZERpc3RhbmNlPWUubWF4UmluZ0J1ZmZlclNpemUtMTY7ZS5ydW5uaW5nU3RhdGU9Mn1sZXQgcz1jYWxjdWxhdGVGZW5jZShlKSxyPWUucmluZ0J1ZmZlclNpemUtMSxpPWUucmluZ0J1ZmZlcjtmb3IoOzEwIT09ZS5ydW5uaW5nU3RhdGU7KXN3aXRjaChlLnJ1bm5pbmdTdGF0ZSl7Y2FzZSAyOmlmKGUubWV0YUJsb2NrTGVuZ3RoPDApcmV0dXJuIG1ha2VFcnJvcihlLC0xMCk7dD1yZWFkTmV4dE1ldGFibG9ja0hlYWRlcihlKTtpZih0PDApcmV0dXJuIHQ7cz1jYWxjdWxhdGVGZW5jZShlKTtyPWUucmluZ0J1ZmZlclNpemUtMTtpPWUucmluZ0J1ZmZlcjtjb250aW51ZTtjYXNlIDM6dD1yZWFkTWV0YWJsb2NrSHVmZm1hbkNvZGVzQW5kQ29udGV4dE1hcHMoZSk7aWYodDwwKXJldHVybiB0O2UucnVubmluZ1N0YXRlPTQ7Y29udGludWU7Y2FzZSA0OmlmKGUubWV0YUJsb2NrTGVuZ3RoPD0wKXtlLnJ1bm5pbmdTdGF0ZT0yO2NvbnRpbnVlfWlmKGUuaGFsZk9mZnNldD4yMDMwKXt0PXJlYWRNb3JlSW5wdXQoZSk7aWYodDwwKXJldHVybiB0fTA9PT1lLmNvbW1hbmRCbG9ja0xlbmd0aCYmZGVjb2RlQ29tbWFuZEJsb2NrU3dpdGNoKGUpO2UuY29tbWFuZEJsb2NrTGVuZ3RoLS07aWYoZS5iaXRPZmZzZXQ+PTE2KXtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNn1jb25zdCBvPXJlYWRTeW1ib2woZS5jb21tYW5kVHJlZUdyb3VwLGUuY29tbWFuZFRyZWVJZHgsZSk8PDIsbD1mW29dLGM9ZltvKzFdLHU9ZltvKzJdO2UuZGlzdGFuY2VDb2RlPWZbbyszXTtpZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fWNvbnN0IG09MjU1Jmw7ZS5pbnNlcnRMZW5ndGg9YysobTw9MTY/cmVhZEZld0JpdHMoZSxtKTpyZWFkTWFueUJpdHMoZSxtKSk7aWYoZS5iaXRPZmZzZXQ+PTE2KXtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNn1jb25zdCBwPWw+Pjg7ZS5jb3B5TGVuZ3RoPXUrKHA8PTE2P3JlYWRGZXdCaXRzKGUscCk6cmVhZE1hbnlCaXRzKGUscCkpO2Uuaj0wO2UucnVubmluZ1N0YXRlPTc7Y29udGludWU7Y2FzZSA3OmlmKDAhPT1lLnRyaXZpYWxMaXRlcmFsQ29udGV4dClmb3IoO2UuajxlLmluc2VydExlbmd0aDspe2lmKGUuaGFsZk9mZnNldD4yMDMwKXt0PXJlYWRNb3JlSW5wdXQoZSk7aWYodDwwKXJldHVybiB0fTA9PT1lLmxpdGVyYWxCbG9ja0xlbmd0aCYmZGVjb2RlTGl0ZXJhbEJsb2NrU3dpdGNoKGUpO2UubGl0ZXJhbEJsb2NrTGVuZ3RoLS07aWYoZS5iaXRPZmZzZXQ+PTE2KXtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNn1pW2UucG9zXT1yZWFkU3ltYm9sKGUubGl0ZXJhbFRyZWVHcm91cCxlLmxpdGVyYWxUcmVlSWR4LGUpO2UucG9zKys7ZS5qKys7aWYoZS5wb3M+PXMpe2UubmV4dFJ1bm5pbmdTdGF0ZT03O2UucnVubmluZ1N0YXRlPTEyO2JyZWFrfX1lbHNle2xldCBhPTI1NSZpW2UucG9zLTEmcl0sbj0yNTUmaVtlLnBvcy0yJnJdO2Zvcig7ZS5qPGUuaW5zZXJ0TGVuZ3RoOyl7aWYoZS5oYWxmT2Zmc2V0PjIwMzApe3Q9cmVhZE1vcmVJbnB1dChlKTtpZih0PDApcmV0dXJuIHR9MD09PWUubGl0ZXJhbEJsb2NrTGVuZ3RoJiZkZWNvZGVMaXRlcmFsQmxvY2tTd2l0Y2goZSk7Y29uc3Qgcj1oW2UuY29udGV4dExvb2t1cE9mZnNldDErYV18aFtlLmNvbnRleHRMb29rdXBPZmZzZXQyK25dLG89MjU1JmUuY29udGV4dE1hcFtlLmNvbnRleHRNYXBTbGljZStyXTtlLmxpdGVyYWxCbG9ja0xlbmd0aC0tO249YTtpZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fWE9cmVhZFN5bWJvbChlLmxpdGVyYWxUcmVlR3JvdXAsbyxlKTtpW2UucG9zXT1hO2UucG9zKys7ZS5qKys7aWYoZS5wb3M+PXMpe2UubmV4dFJ1bm5pbmdTdGF0ZT03O2UucnVubmluZ1N0YXRlPTEyO2JyZWFrfX19aWYoNyE9PWUucnVubmluZ1N0YXRlKWNvbnRpbnVlO2UubWV0YUJsb2NrTGVuZ3RoLT1lLmluc2VydExlbmd0aDtpZihlLm1ldGFCbG9ja0xlbmd0aDw9MCl7ZS5ydW5uaW5nU3RhdGU9NDtjb250aW51ZX1sZXQgZD1lLmRpc3RhbmNlQ29kZTtpZihkPDApZS5kaXN0YW5jZT1lLnJpbmdzW2UuZGlzdFJiSWR4XTtlbHNle2lmKGUuaGFsZk9mZnNldD4yMDMwKXt0PXJlYWRNb3JlSW5wdXQoZSk7aWYodDwwKXJldHVybiB0fTA9PT1lLmRpc3RhbmNlQmxvY2tMZW5ndGgmJmRlY29kZURpc3RhbmNlQmxvY2tTd2l0Y2goZSk7ZS5kaXN0YW5jZUJsb2NrTGVuZ3RoLS07aWYoZS5iaXRPZmZzZXQ+PTE2KXtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNn1jb25zdCBzPTI1NSZlLmRpc3RDb250ZXh0TWFwW2UuZGlzdENvbnRleHRNYXBTbGljZStkXTtkPXJlYWRTeW1ib2woZS5kaXN0YW5jZVRyZWVHcm91cCxzLGUpO2lmKGQ8MTYpe2NvbnN0IHQ9ZS5kaXN0UmJJZHgrYVtkXSYzO2UuZGlzdGFuY2U9ZS5yaW5nc1t0XStuW2RdO2lmKGUuZGlzdGFuY2U8MClyZXR1cm4gbWFrZUVycm9yKGUsLTEyKX1lbHNle2NvbnN0IHQ9ZS5kaXN0RXh0cmFCaXRzW2RdO2xldCBhO2lmKGUuYml0T2Zmc2V0K3Q8PTMyKWE9cmVhZEZld0JpdHMoZSx0KTtlbHNle2lmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9YT10PD0xNj9yZWFkRmV3Qml0cyhlLHQpOnJlYWRNYW55Qml0cyhlLHQpfWUuZGlzdGFuY2U9ZS5kaXN0T2Zmc2V0W2RdKyhhPDxlLmRpc3RhbmNlUG9zdGZpeEJpdHMpfX1lLm1heERpc3RhbmNlIT09ZS5tYXhCYWNrd2FyZERpc3RhbmNlJiZlLnBvczxlLm1heEJhY2t3YXJkRGlzdGFuY2U/ZS5tYXhEaXN0YW5jZT1lLnBvczplLm1heERpc3RhbmNlPWUubWF4QmFja3dhcmREaXN0YW5jZTtpZihlLmRpc3RhbmNlPmUubWF4RGlzdGFuY2Upe2UucnVubmluZ1N0YXRlPTk7Y29udGludWV9aWYoZD4wKXtlLmRpc3RSYklkeD1lLmRpc3RSYklkeCsxJjM7ZS5yaW5nc1tlLmRpc3RSYklkeF09ZS5kaXN0YW5jZX1pZihlLmNvcHlMZW5ndGg+ZS5tZXRhQmxvY2tMZW5ndGgpcmV0dXJuIG1ha2VFcnJvcihlLC05KTtlLmo9MDtlLnJ1bm5pbmdTdGF0ZT04O2NvbnRpbnVlO2Nhc2UgODpsZXQgZz1lLnBvcy1lLmRpc3RhbmNlJnIsYj1lLnBvcztjb25zdCB3PWUuY29weUxlbmd0aC1lLmosaj1nK3csaz1iK3c7aWYoajxyJiZrPHIpe2lmKHc8MTJ8fGo+YiYmaz5nKXtjb25zdCBlPXcrMz4+Mjtmb3IobGV0IHQ9MDt0PGU7Kyt0KXtpW2IrK109aVtnKytdO2lbYisrXT1pW2crK107aVtiKytdPWlbZysrXTtpW2IrK109aVtnKytdfX1lbHNlIGkuY29weVdpdGhpbihiLGcsaik7ZS5qKz13O2UubWV0YUJsb2NrTGVuZ3RoLT13O2UucG9zKz13fWVsc2UgZm9yKDtlLmo8ZS5jb3B5TGVuZ3RoOyl7aVtlLnBvc109aVtlLnBvcy1lLmRpc3RhbmNlJnJdO2UubWV0YUJsb2NrTGVuZ3RoLS07ZS5wb3MrKztlLmorKztpZihlLnBvcz49cyl7ZS5uZXh0UnVubmluZ1N0YXRlPTg7ZS5ydW5uaW5nU3RhdGU9MTI7YnJlYWt9fTg9PT1lLnJ1bm5pbmdTdGF0ZSYmKGUucnVubmluZ1N0YXRlPTQpO2NvbnRpbnVlO2Nhc2UgOTp0PWRvVXNlRGljdGlvbmFyeShlLHMpO2lmKHQ8MClyZXR1cm4gdDtjb250aW51ZTtjYXNlIDE0OmUucG9zKz1jb3B5RnJvbUNvbXBvdW5kRGljdGlvbmFyeShlLHMpO2lmKGUucG9zPj1zKXtlLm5leHRSdW5uaW5nU3RhdGU9MTQ7ZS5ydW5uaW5nU3RhdGU9MTI7cmV0dXJuIDJ9ZS5ydW5uaW5nU3RhdGU9NDtjb250aW51ZTtjYXNlIDU6Zm9yKDtlLm1ldGFCbG9ja0xlbmd0aD4wOyl7aWYoZS5oYWxmT2Zmc2V0PjIwMzApe3Q9cmVhZE1vcmVJbnB1dChlKTtpZih0PDApcmV0dXJuIHR9aWYoZS5iaXRPZmZzZXQ+PTE2KXtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNn1yZWFkRmV3Qml0cyhlLDgpO2UubWV0YUJsb2NrTGVuZ3RoLS19ZS5ydW5uaW5nU3RhdGU9Mjtjb250aW51ZTtjYXNlIDY6dD1jb3B5VW5jb21wcmVzc2VkRGF0YShlKTtpZih0PDApcmV0dXJuIHQ7Y29udGludWU7Y2FzZSAxMjplLnJpbmdCdWZmZXJCeXRlc1JlYWR5PU1hdGgubWluKGUucG9zLGUucmluZ0J1ZmZlclNpemUpO2UucnVubmluZ1N0YXRlPTEzO2NvbnRpbnVlO2Nhc2UgMTM6dD13cml0ZVJpbmdCdWZmZXIoZSk7aWYoMCE9PXQpcmV0dXJuIHQ7ZS5wb3M+PWUubWF4QmFja3dhcmREaXN0YW5jZSYmKGUubWF4RGlzdGFuY2U9ZS5tYXhCYWNrd2FyZERpc3RhbmNlKTtpZihlLnBvcz49ZS5yaW5nQnVmZmVyU2l6ZSl7ZS5wb3M+ZS5yaW5nQnVmZmVyU2l6ZSYmaS5jb3B5V2l0aGluKDAsZS5yaW5nQnVmZmVyU2l6ZSxlLnBvcyk7ZS5wb3M9ZS5wb3MmcjtlLnJpbmdCdWZmZXJCeXRlc1dyaXR0ZW49MH1lLnJ1bm5pbmdTdGF0ZT1lLm5leHRSdW5uaW5nU3RhdGU7Y29udGludWU7ZGVmYXVsdDpyZXR1cm4gbWFrZUVycm9yKGUsLTI4KX1pZigxMCE9PWUucnVubmluZ1N0YXRlKXJldHVybiBtYWtlRXJyb3IoZSwtMjkpO2lmKGUubWV0YUJsb2NrTGVuZ3RoPDApcmV0dXJuIG1ha2VFcnJvcihlLC0xMCk7dD1qdW1wVG9CeXRlQm91bmRhcnkoZSk7aWYoMCE9PXQpcmV0dXJuIHQ7dD1jaGVja0hlYWx0aChlLDEpO3JldHVybiAwIT09dD90OjF9Y29uc3QgYz1uZXcgZnVuY3Rpb24gVHJhbnNmb3JtcyhlLHQsYSl7dGhpcy5udW1UcmFuc2Zvcm1zPTA7dGhpcy50cmlwbGV0cz1uZXcgSW50MzJBcnJheSgwKTt0aGlzLnByZWZpeFN1ZmZpeFN0b3JhZ2U9bmV3IEludDhBcnJheSgwKTt0aGlzLnByZWZpeFN1ZmZpeEhlYWRzPW5ldyBJbnQzMkFycmF5KDApO3RoaXMucGFyYW1zPW5ldyBJbnQxNkFycmF5KDApO3RoaXMubnVtVHJhbnNmb3Jtcz1lO3RoaXMudHJpcGxldHM9bmV3IEludDMyQXJyYXkoMyplKTt0aGlzLnBhcmFtcz1uZXcgSW50MTZBcnJheShlKTt0aGlzLnByZWZpeFN1ZmZpeFN0b3JhZ2U9bmV3IEludDhBcnJheSh0KTt0aGlzLnByZWZpeFN1ZmZpeEhlYWRzPW5ldyBJbnQzMkFycmF5KGErMSl9KDEyMSwxNjcsNTApOyFmdW5jdGlvbiB1bnBhY2tUcmFuc2Zvcm1zKGUsdCxhLG4scyl7Y29uc3Qgcj10b1V0ZjhSdW5lcyhuKSxpPXIubGVuZ3RoO2xldCBvPTEsbD0wO2ZvcihsZXQgYT0wO2E8aTsrK2Epe2NvbnN0IG49clthXTszNT09PW4/dFtvKytdPWw6ZVtsKytdPW59Zm9yKGxldCBlPTA7ZTwzNjM7KytlKWFbZV09cy5jaGFyQ29kZUF0KGUpLTMyfShjLnByZWZpeFN1ZmZpeFN0b3JhZ2UsYy5wcmVmaXhTdWZmaXhIZWFkcyxjLnRyaXBsZXRzLCcjICNzICMsICNlICMuIyB0aGUgIy5jb20vI8OCwqAjIG9mICMgYW5kICMgaW4gIyB0byAjIiMiPiNcbiNdIyBmb3IgIyBhICMgdGhhdCAjLiAjIHdpdGggI1wnIyBmcm9tICMgYnkgIy4gVGhlICMgb24gIyBhcyAjIGlzICNpbmcgI1xuXHQjOiNlZCAjKCMgYXQgI2x5ICM9IiMgb2YgdGhlICMuIFRoaXMgIywjIG5vdCAjZXIgI2FsICM9XCcjZnVsICNpdmUgI2xlc3MgI2VzdCAjaXplICNvdXMgIycsIiAgICAgISEgISAsICAqISAgJiEgIFwiICEgICkgKiAgICogLSAgISAjICEgICMhKiEgICsgICwkICEgIC0gICUgIC4gIC8gIyAgIDAgIDEgLiAgXCIgICAyICAzISogICA0JSAgISAjIC8gICA1ICA2ICA3ICA4IDAgIDEgJiAgICQgICA5ICsgICA6ICA7ICA8ICcgICE9ICA+ICA/ISA0ICBAIDQgIDIgICYgICBBICojICggICBCICBDJiApICUgICkgISojICotJSBBICshICouICBEISAlJyAgJiBFICo2ICBGICBHJSAhICpBIColICBIISBEICBJISshICBKISsgICBLICstICo0ISBBICBMISo0ICBNICBOICs2ICBPISolICsuISBLICpHICBQICslKCAgISBHICpEICtEICBRICsjICpLISpHIStEISsjICtHICtBICs0ISslICtLISs0ISpEIStLISpLIik7ZnVuY3Rpb24gZ2V0TmV4dEtleShlLHQpe2xldCBhPTE8PHQtMTtmb3IoOzAhPT0oZSZhKTspYT4+PTE7cmV0dXJuKGUmYS0xKSthfWZ1bmN0aW9uIHJlcGxpY2F0ZVZhbHVlKGUsdCxhLG4scyl7bGV0IHI9bjtmb3IoO3I+MDspe3ItPWE7ZVt0K3JdPXN9fWZ1bmN0aW9uIG5leHRUYWJsZUJpdFNpemUoZSx0LGEpe2xldCBuPXQscz0xPDxuLWE7Zm9yKDtuPDE1Oyl7cy09ZVtuXTtpZihzPD0wKWJyZWFrO24rKztzPDw9MX1yZXR1cm4gbi1hfWZ1bmN0aW9uIGJ1aWxkSHVmZm1hblRhYmxlKGUsdCxhLG4scyl7Y29uc3Qgcj1lW3RdLGk9bmV3IEludDMyQXJyYXkocyksbz1uZXcgSW50MzJBcnJheSgxNiksbD1uZXcgSW50MzJBcnJheSgxNik7Zm9yKGxldCBlPTA7ZTxzOysrZSlvW25bZV1dKys7bFsxXT0wO2ZvcihsZXQgZT0xO2U8MTU7KytlKWxbZSsxXT1sW2VdK29bZV07Zm9yKGxldCBlPTA7ZTxzOysrZSkwIT09bltlXSYmKGlbbFtuW2VdXSsrXT1lKTtsZXQgZj1hLGM9MTw8ZixoPWM7aWYoMT09PWxbMTVdKXtmb3IobGV0IHQ9MDt0PGg7Kyt0KWVbcit0XT1pWzBdO3JldHVybiBofWxldCB1PTAsbT0wLHA9MTtmb3IobGV0IHQ9MTt0PD1hOysrdCl7cDw8PTE7Zm9yKDtvW3RdPjA7KXtyZXBsaWNhdGVWYWx1ZShlLHIrdSxwLGMsdDw8MTZ8aVttKytdKTt1PWdldE5leHRLZXkodSx0KTtvW3RdLS19fWNvbnN0IGQ9aC0xO2xldCBnPS0xLGI9cjtwPTE7Zm9yKGxldCB0PWErMTt0PD0xNTsrK3Qpe3A8PD0xO2Zvcig7b1t0XT4wOyl7aWYoKHUmZCkhPT1nKXtiKz1jO2Y9bmV4dFRhYmxlQml0U2l6ZShvLHQsYSk7Yz0xPDxmO2grPWM7Zz11JmQ7ZVtyK2ddPWYrYTw8MTZ8Yi1yLWd9cmVwbGljYXRlVmFsdWUoZSxiKyh1Pj5hKSxwLGMsdC1hPDwxNnxpW20rK10pO3U9Z2V0TmV4dEtleSh1LHQpO29bdF0tLX19cmV0dXJuIGh9ZnVuY3Rpb24gcmVhZE1vcmVJbnB1dChlKXtpZigwIT09ZS5lbmRPZlN0cmVhbVJlYWNoZWQpcmV0dXJuIGhhbGZBdmFpbGFibGUoZSk+PS0yPzA6bWFrZUVycm9yKGUsLTE2KTtjb25zdCB0PWUuaGFsZk9mZnNldDw8MTtsZXQgYT00MDk2LXQ7ZS5ieXRlQnVmZmVyLmNvcHlXaXRoaW4oMCx0LDQwOTYpO2UuaGFsZk9mZnNldD0wO2Zvcig7YTw0MDk2Oyl7Y29uc3QgdD00MDk2LWEsbj1yZWFkSW5wdXQoZSxlLmJ5dGVCdWZmZXIsYSx0KTtpZihuPC0xKXJldHVybiBuO2lmKG48PTApe2UuZW5kT2ZTdHJlYW1SZWFjaGVkPTE7ZS50YWlsQnl0ZXM9YTthKz0xO2JyZWFrfWErPW59IWZ1bmN0aW9uIGJ5dGVzVG9OaWJibGVzKGUsdCl7Y29uc3QgYT1lLmJ5dGVCdWZmZXIsbj10Pj4xLHM9ZS5zaG9ydEJ1ZmZlcjtmb3IobGV0IGU9MDtlPG47KytlKXNbZV09MjU1JmFbMiplXXwoMjU1JmFbMiplKzFdKTw8OH0oZSxhKTtyZXR1cm4gMH1mdW5jdGlvbiBjaGVja0hlYWx0aChlLHQpe2lmKDA9PT1lLmVuZE9mU3RyZWFtUmVhY2hlZClyZXR1cm4gMDtjb25zdCBhPShlLmhhbGZPZmZzZXQ8PDEpKyhlLmJpdE9mZnNldCs3Pj4zKS00O3JldHVybiBhPmUudGFpbEJ5dGVzP21ha2VFcnJvcihlLC0xMyk6MCE9PXQmJmEhPT1lLnRhaWxCeXRlcz9tYWtlRXJyb3IoZSwtMTcpOjB9ZnVuY3Rpb24gcmVhZEZld0JpdHMoZSx0KXtjb25zdCBhPWUuYWNjdW11bGF0b3IzMj4+PmUuYml0T2Zmc2V0JigxPDx0KS0xO2UuYml0T2Zmc2V0Kz10O3JldHVybiBhfWZ1bmN0aW9uIHJlYWRNYW55Qml0cyhlLHQpe2NvbnN0IGE9cmVhZEZld0JpdHMoZSwxNik7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTY7cmV0dXJuIGF8cmVhZEZld0JpdHMoZSx0LTE2KTw8MTZ9ZnVuY3Rpb24gcHJlcGFyZShlKXtpZihlLmhhbGZPZmZzZXQ+MjAzMCl7Y29uc3QgdD1yZWFkTW9yZUlucHV0KGUpO2lmKDAhPT10KXJldHVybiB0fWxldCB0PWNoZWNrSGVhbHRoKGUsMCk7aWYoMCE9PXQpcmV0dXJuIHQ7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTY7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTY7cmV0dXJuIDB9ZnVuY3Rpb24gcmVsb2FkKGUpe3JldHVybiAzMj09PWUuYml0T2Zmc2V0P3ByZXBhcmUoZSk6MH1mdW5jdGlvbiBqdW1wVG9CeXRlQm91bmRhcnkoZSl7Y29uc3QgdD0zMi1lLmJpdE9mZnNldCY3O2lmKDAhPT10KXtpZigwIT09cmVhZEZld0JpdHMoZSx0KSlyZXR1cm4gbWFrZUVycm9yKGUsLTUpfXJldHVybiAwfWZ1bmN0aW9uIGhhbGZBdmFpbGFibGUoZSl7bGV0IHQ9MjA0ODswIT09ZS5lbmRPZlN0cmVhbVJlYWNoZWQmJih0PWUudGFpbEJ5dGVzKzE+PjEpO3JldHVybiB0LWUuaGFsZk9mZnNldH1jb25zdCBoPW5ldyBJbnQzMkFycmF5KDIwNDgpOyFmdW5jdGlvbiB1bnBhY2tMb29rdXBUYWJsZShlLHQsYSl7Zm9yKGxldCB0PTA7dDwyNTY7Kyt0KXtlW3RdPTYzJnQ7ZVs1MTIrdF09dD4+MjtlWzE3OTIrdF09MisodD4+Nil9Zm9yKGxldCBhPTA7YTwxMjg7KythKWVbMTAyNCthXT00Kih0LmNoYXJDb2RlQXQoYSktMzIpO2ZvcihsZXQgdD0wO3Q8NjQ7Kyt0KXtlWzExNTIrdF09MSZ0O2VbMTIxNit0XT0yKygxJnQpfWxldCBuPTEyODA7Zm9yKGxldCB0PTA7dDwxOTsrK3Qpe2NvbnN0IHM9MyZ0LHI9YS5jaGFyQ29kZUF0KHQpLTMyO2ZvcihsZXQgdD0wO3Q8cjsrK3QpZVtuKytdPXN9Zm9yKGxldCB0PTA7dDwxNjsrK3Qpe2VbMTc5Mit0XT0xO2VbMjAzMit0XT02fWVbMTc5Ml09MDtlWzIwNDddPTc7Zm9yKGxldCB0PTA7dDwyNTY7Kyt0KWVbMTUzNit0XT1lWzE3OTIrdF08PDN9KGgsIiAgICAgICAgICEhICAhICAgICAgICAgICAgICAgICAgXCIjJCMjJSMkJicjIygjKSMrKysrKysrKysrKCgmKicjIywtLS0sLS0tLC0tLS0tLC0tLS0tLC0tLS0tJiMnIyMjLi8vLy4vLy8uLy8vLy8uLy8vLy8uLy8vLy8mIycjICIsIkEvKiAgJzogICYgOiAkICDCgSBAIik7ZnVuY3Rpb24gU3RhdGUoKXt0aGlzLnJpbmdCdWZmZXI9bmV3IEludDhBcnJheSgwKTt0aGlzLmNvbnRleHRNb2Rlcz1uZXcgSW50OEFycmF5KDApO3RoaXMuY29udGV4dE1hcD1uZXcgSW50OEFycmF5KDApO3RoaXMuZGlzdENvbnRleHRNYXA9bmV3IEludDhBcnJheSgwKTt0aGlzLmRpc3RFeHRyYUJpdHM9bmV3IEludDhBcnJheSgwKTt0aGlzLm91dHB1dD1uZXcgSW50OEFycmF5KDApO3RoaXMuYnl0ZUJ1ZmZlcj1uZXcgSW50OEFycmF5KDApO3RoaXMuc2hvcnRCdWZmZXI9bmV3IEludDE2QXJyYXkoMCk7dGhpcy5pbnRCdWZmZXI9bmV3IEludDMyQXJyYXkoMCk7dGhpcy5yaW5ncz1uZXcgSW50MzJBcnJheSgwKTt0aGlzLmJsb2NrVHJlZXM9bmV3IEludDMyQXJyYXkoMCk7dGhpcy5saXRlcmFsVHJlZUdyb3VwPW5ldyBJbnQzMkFycmF5KDApO3RoaXMuY29tbWFuZFRyZWVHcm91cD1uZXcgSW50MzJBcnJheSgwKTt0aGlzLmRpc3RhbmNlVHJlZUdyb3VwPW5ldyBJbnQzMkFycmF5KDApO3RoaXMuZGlzdE9mZnNldD1uZXcgSW50MzJBcnJheSgwKTt0aGlzLmFjY3VtdWxhdG9yNjQ9MDt0aGlzLnJ1bm5pbmdTdGF0ZT0wO3RoaXMubmV4dFJ1bm5pbmdTdGF0ZT0wO3RoaXMuYWNjdW11bGF0b3IzMj0wO3RoaXMuYml0T2Zmc2V0PTA7dGhpcy5oYWxmT2Zmc2V0PTA7dGhpcy50YWlsQnl0ZXM9MDt0aGlzLmVuZE9mU3RyZWFtUmVhY2hlZD0wO3RoaXMubWV0YUJsb2NrTGVuZ3RoPTA7dGhpcy5pbnB1dEVuZD0wO3RoaXMuaXNVbmNvbXByZXNzZWQ9MDt0aGlzLmlzTWV0YWRhdGE9MDt0aGlzLmxpdGVyYWxCbG9ja0xlbmd0aD0wO3RoaXMubnVtTGl0ZXJhbEJsb2NrVHlwZXM9MDt0aGlzLmNvbW1hbmRCbG9ja0xlbmd0aD0wO3RoaXMubnVtQ29tbWFuZEJsb2NrVHlwZXM9MDt0aGlzLmRpc3RhbmNlQmxvY2tMZW5ndGg9MDt0aGlzLm51bURpc3RhbmNlQmxvY2tUeXBlcz0wO3RoaXMucG9zPTA7dGhpcy5tYXhEaXN0YW5jZT0wO3RoaXMuZGlzdFJiSWR4PTA7dGhpcy50cml2aWFsTGl0ZXJhbENvbnRleHQ9MDt0aGlzLmxpdGVyYWxUcmVlSWR4PTA7dGhpcy5jb21tYW5kVHJlZUlkeD0wO3RoaXMuaj0wO3RoaXMuaW5zZXJ0TGVuZ3RoPTA7dGhpcy5jb250ZXh0TWFwU2xpY2U9MDt0aGlzLmRpc3RDb250ZXh0TWFwU2xpY2U9MDt0aGlzLmNvbnRleHRMb29rdXBPZmZzZXQxPTA7dGhpcy5jb250ZXh0TG9va3VwT2Zmc2V0Mj0wO3RoaXMuZGlzdGFuY2VDb2RlPTA7dGhpcy5udW1EaXJlY3REaXN0YW5jZUNvZGVzPTA7dGhpcy5kaXN0YW5jZVBvc3RmaXhCaXRzPTA7dGhpcy5kaXN0YW5jZT0wO3RoaXMuY29weUxlbmd0aD0wO3RoaXMubWF4QmFja3dhcmREaXN0YW5jZT0wO3RoaXMubWF4UmluZ0J1ZmZlclNpemU9MDt0aGlzLnJpbmdCdWZmZXJTaXplPTA7dGhpcy5leHBlY3RlZFRvdGFsU2l6ZT0wO3RoaXMub3V0cHV0T2Zmc2V0PTA7dGhpcy5vdXRwdXRMZW5ndGg9MDt0aGlzLm91dHB1dFVzZWQ9MDt0aGlzLnJpbmdCdWZmZXJCeXRlc1dyaXR0ZW49MDt0aGlzLnJpbmdCdWZmZXJCeXRlc1JlYWR5PTA7dGhpcy5pc0VhZ2VyPTA7dGhpcy5pc0xhcmdlV2luZG93PTA7dGhpcy5jZE51bUNodW5rcz0wO3RoaXMuY2RUb3RhbFNpemU9MDt0aGlzLmNkQnJJbmRleD0wO3RoaXMuY2RCck9mZnNldD0wO3RoaXMuY2RCckxlbmd0aD0wO3RoaXMuY2RCckNvcGllZD0wO3RoaXMuY2RDaHVua3M9bmV3IEFycmF5KDApO3RoaXMuY2RDaHVua09mZnNldHM9bmV3IEludDMyQXJyYXkoMCk7dGhpcy5jZEJsb2NrQml0cz0wO3RoaXMuY2RCbG9ja01hcD1uZXcgSW50OEFycmF5KDApO3RoaXMuaW5wdXQ9bmV3IElucHV0U3RyZWFtKG5ldyBJbnQ4QXJyYXkoMCkpO3RoaXMucmluZ0J1ZmZlcj1uZXcgSW50OEFycmF5KDApO3RoaXMucmluZ3M9bmV3IEludDMyQXJyYXkoMTApO3RoaXMucmluZ3NbMF09MTY7dGhpcy5yaW5nc1sxXT0xNTt0aGlzLnJpbmdzWzJdPTExO3RoaXMucmluZ3NbM109NH1sZXQgdT1uZXcgSW50OEFycmF5KDApO2NvbnN0IG09bmV3IEludDMyQXJyYXkoMzIpLHA9bmV3IEludDMyQXJyYXkoMzIpO2NvbnN0IGQ9bmV3IEludDhBcnJheSgxMjI3ODQpLGc9bmV3IEludDMyQXJyYXkoMjUpOyFmdW5jdGlvbiB1bnBhY2tEaWN0aW9uYXJ5RGF0YShlLHQsYSxuLHMscil7Y29uc3QgaT1mdW5jdGlvbiB0b1VzQXNjaWlCeXRlcyhlKXtjb25zdCB0PWUubGVuZ3RoLGE9bmV3IEludDhBcnJheSh0KTtmb3IobGV0IG49MDtuPHQ7KytuKWFbbl09ZS5jaGFyQ29kZUF0KG4pO3JldHVybiBhfSh0K2EpLG89dG9VdGY4UnVuZXMobik7bGV0IGw9MDtjb25zdCBmPW8ubGVuZ3RoPj4xO2ZvcihsZXQgZT0wO2U8ZjsrK2Upe2NvbnN0IHQ9b1syKmVdLTM2LGE9b1syKmUrMV0tMzY7Zm9yKGxldCBlPTA7ZTx0OysrZSl7aVtsXT0zXmlbbF07bCsrfWZvcihsZXQgZT0wO2U8YTsrK2Upe2lbbF09MjM2XmlbbF07bCsrfX1mb3IobGV0IGU9MDtlPHIubGVuZ3RoOysrZSlzW2VdPXIuY2hhckNvZGVBdChlKS02NTtlLnNldChpKX0oZCwnd2puZmdsdG1vamVmb2Zld2FiYGhgbGdmZ2J3YnBrbHRsbW96cGp3ZmBqd3psc2ZtaXZwd29qaGZlcWZmdGxxaHdme3d6ZmJxbHVmcWFsZ3pvbHVmZWxxbmFsbGhzb2J6b2p1Zm9qbWZrZm9za2xuZnBqZ2ZubHFmdGxxZ29sbWR3a2ZudWpmdGVqbWdzYmRmZ2J6cGV2b29rZmJnd2ZxbmZiYGticWZiZXFsbndxdmZuYnFoYmFvZnZzbG1ramRrZ2J3Zm9ibWdtZnRwZnVmbW1me3dgYnBmYWx3a3NscHd2cGZnbmJnZmtibWdrZnFmdGtid21ibmZPam1oYW9sZHBqeWZhYnBma2ZvZ25iaGZuYmptdnBmcSQqIyhrbG9nZm1ncHRqd2tNZnRwcWZiZ3RmcWZwamRtd2JoZmtidWZkYm5mcGZmbWBib29zYndrdGZvb3NvdnBuZm12ZWpvbnNicXdpbGptd2tqcG9qcHdkbGxnbWZmZ3RienB0ZnB3aWxhcG5qbWdib3Bsb2xkbHFqYGt2cGZwb2Jwd3dmYm5icW56ZWxsZ2hqbWR0am9vZmJwd3RicWdhZnB3ZWpxZlNiZGZobWx0YnRiei1zbWRubHVmd2tibW9sYmdkanVmcGZvZW1sd2ZudmBrZWZmZ25ibXpxbGBoamBsbWxtYGZvbGxoa2pnZmdqZmdLbG5mcXZvZmtscHdiaWJ7am1lbGBvdmFvYnRwb2ZwcGtib2VwbG5mcHZga3lsbWYyMzMmbG1mcGBicWZXam5mcWJgZmFvdmZlbHZxdGZmaGViYGZrbHNmZGJ1ZmticWdvbHB3dGtmbXNicWhoZnN3c2JwcHBranNxbGxuS1dOT3NvYm1XenNmZ2xtZnBidWZoZmZzZW9iZG9qbWhwbG9nZWp1ZndsbGhxYndmd2x0bWl2bnN3a3ZwZ2JxaGBicWdlam9mZWZicXB3Ynpoam9vd2tid2Vib29idndsZnVmcS1gbG53Ym9ocGtsc3Vsd2ZnZmZzbmxnZnFmcHd3dnFtYWxxbWFibWdlZm9vcWxwZnZxbytwaGptcWxvZmBsbmZiYHdwYmRmcG5mZndkbG9nLWlzZGp3Zm51YnF6ZWZvd3drZm1wZm1nZ3Fsc1VqZnRgbHN6Mi0zIT8sYj1wd2xzZm9wZm9qZnB3bHZxc2JgaC1kamVzYnB3YHBwPGRxYnpuZmJtJWR3OHFqZ2Zwa2x3b2J3ZnBiamdxbGJndWJxI2VmZm9pbGttcWpgaHNscXdlYnB3JFZCLmdmYmc/LGE9c2xscWFqb293enNmVi1QLXRsbGdudnB3MXN7OEptZWxxYm1odGpnZnRibXd0Ym9vb2ZiZ1gzXjhzYnZvdGJ1ZnB2cWZcJyskIHRianduYnBwYnFucGRsZnBkYmptb2JtZHNiamciLi4jb2xgaHZtandxbGx3dGJvaGVqcW50amVme25vIXBsbWR3ZnB3MTNze2hqbWdxbHRwd2xsb2VsbXduYmpvcGJlZnB3YnFuYnNwYGxxZnFiam1lb2x0YWJhenBzYm1wYnpwN3N7ODVzezhicXdwZWxsd3FmYm90amhqa2Zid3B3ZnN3cWpzbHFkLG9iaGZ0ZmJod2xvZ0VscW5gYnB3ZWJtcGFibWh1ZnF6cXZtcGl2b3p3YnBoMnN7OGRsYm9kcWZ0cG9sdGZnZGZqZz4hcGZ3cDZzezgtaXA8NzNze2plIytwbGxtcGZid21sbWZ3dmFmeWZxbHBmbXdxZmZnZWJgd2ptd2xkamV3a2JxbjI7c3tgYm5ma2pvb2Fsb2d5bGxudWxqZ2ZicHpxam1kZWpvb3NmYmhqbWp3YGxwdzBzezhpYmBod2JkcGFqd3BxbG9vZmdqd2htZnRtZmJxPyIuLmRxbHRJUExNZ3Z3ek1ibmZwYm9memx2I29sd3BzYmptaWJ5eWBsb2dmemZwZWpwa3R0dC1xanBod2JhcHNxZnUyM3N7cWpwZjE2c3tBb3ZmZ2ptZDAzMy9hYm9vZWxxZ2ZicW10am9nYWx7LWVianFvYmBodWZxcHNianFpdm1md2Zga2plKyJzamBoZnVqb1wnKyEgdGJxbm9scWdnbGZwc3Zvby8zMzNqZ2ZiZ3FidGt2ZGZwc2x3ZXZtZ2F2cW1rcWZlYGZvb2hmenB3amBoa2x2cW9scHBldmZvMjFze3B2andnZmJvUVBQIWJkZmdkcWZ6REZXIWZicGZiam5wZGpxb2JqZ3A7c3s4bWJ1emRxamd3anNwIDo6OnRicXBvYmd6YGJxcCo4I35za3M8a2Zvb3dib290a2xueWs5XHQpLA5cdCMyMzNrYm9vLVx0XHRCNHN7OHN2cGtga2J3M3N7OGBxZnQpLD8sa2JwazQ2c3tlb2J3cWJxZiMlJSN3Zm9vYGJuc2xtd2xvYmpnbmpwcHBoanN3Zm13ZWptZm5ib2ZkZndwc29sdzczMy8OXHQOXHRgbGxvZWZmdy1za3M/YXE9ZnFqYG5scHdkdmpnYWZvb2dmcGBrYmpxbmJ3a2J3bG4sam5kJSA7MW92YGhgZm13MzMzOHdqbXpkbG1ma3dub3Bmb29ncXZkRVFGRm1sZ2ZtamBoPGpnPm9scGZtdm9vdWJwd3RqbWdRUFAjdGZicXFmb3phZmZtcGJuZmd2aGZtYnBiYGJzZnRqcGtkdm9lVzEwOWtqd3Bwb2x3ZGJ3ZmhqYGhhb3Zxd2tmejI2c3skJCo4KjghPW5wamZ0am1wYWpxZ3BscXdhZndicGZmaFcyOzlscWdwd3FmZm5ib281M3N7ZWJxbg5sdXBhbHpwWDNeLSQqOCFTTFBXYWZicWhqZ3AqOH5+bmJxendmbWcrVkgqcnZiZ3lrOVxuLnBqeS4uLi5zcWxzJCo4Dm9qZXdXMjo5dWpgZmJtZ3pnZmF3PVFQUHNsbG9tZmBoYW9sdFcyNTlnbGxxZnVib1cyNDlvZndwZWJqb2xxYm9zbG9vbWx1YmBsb3BkZm1mIw5seHBsZXdxbG5md2pvb3FscHA/azA9c2x2cWViZ2Zzam1oP3dxPW5qbWoqfyIrbmptZnlrOQRhYnFwa2ZicTMzKjhuam9oIy4uPWpxbG1lcWZnZ2pwaHRmbXdwbGpvc3Z3cCxpcCxrbG96VzExOUpQQU1XMTM5YmdibnBmZnA/azE9aXBsbSQvIyRgbG13VzEyOSNRUFBvbGxzYnBqYm5sbG0/LHM9cGx2b09KTUZlbHF3YGJxd1cyNzk/azI9OzNzeyIuLj86c3s4VzM3OW5qaGY5NzVZbWpgZmptYGtabHFocWpgZnlrOVxiJCoqOHN2cWZuYmRmc2JxYndsbWZhbG1nOTA0WVxcbGVcXCReKjgzMzMveWs5XHZ3Ym1oemJxZ2FsdG9hdnBrOTY1WUlidWIwM3N7XHR/flx0JkAwJjkwN1lpZmVlRltTSmBicGt1anBiZGxvZXBtbHR5azkFcnZmcS1gcHBwamBobmZid25qbS1ham1nZ2Zvb2tqcWZzamBwcWZtdzkwNVlLV1dTLjEzMmVsd2x0bG9lRk1HI3thbHs5NjdZQUxHWmdqYGg4XHR+XHRme2p3OTA2WXVicXBhZmJ3JH4qOGdqZnc6Ojo4Ym1tZn5+PyxYal4tT2JtZGhuLl50anFmd2x6cGJnZ3BwZmJvYm9mezhcdFxufmZga2xtam1mLWxxZDMzNip3bG16aWZ0cHBibWdvZmRwcWxsZTMzMyojMTMzdGptZmRmYnFnbGRwYWxsd2RicXpgdndwd3pvZndmbnN3amxtLXtub2BsYGhkYm1kXCcrJC02M3N7U2stR25qcGBib2Jtb2xibWdmcGhuam9mcXpibXZtantnanBgKjh+XHRndnB3YG9qcyotXHRcdDQzc3suMTMzR1VHcDRePT93YnNmZ2ZubGooKCp0YmRmZnZxbHNram9sc3dwa2xvZkVCUnBicGptLjE1V29iYXBzZndwVlFPI2F2b2hgbGxoOH4OXHRLRkJHWDNeKmJhYXFpdmJtKzI6O29mcGt3dGptPyxqPXBsbXpkdnpwZXZgaHNqc2Z/Llx0IjMzMSptZ2x0WDJeOFheOFx0T2xkI3Bib3cOXHRcblxuYWJtZHdxam5hYndrKngOXHQzM3N7XHR+KjhobDlcMGVmZnBiZz0OcDksLCNYXjh3bG9vc292ZCsqeFx0eA5cdCMtaXAkMTMzc2d2Ym9hbGJ3LUlTRCo4XHR+cnZsdyo4XHRcdCQqOFx0Dlx0fg4xMzI3MTMyNjEzMjUxMzI0MTMyOzEzMjoxMzEzMTMxMjEzMTExMzEwMTMxNzEzMTYxMzE1MTMxNDEzMTsxMzE6MTMwMzEzMDIxMzAxMTMwMDEzMDcxMzA2MTMwNTEzMDQxMzIwMTMyMTEzMjIxMzIzMTMzOjEzMzsxMzM0MTMzNTEzMzYxMzM3MTMzMDEzMzExMzMyMTMzMzI6OjoyOjo7Mjo6NDI6OjUyOjo2Mjo6NzI6OjAyOjoxMjo6MjI6OjMyOjs6Mjo7OzI6OzQyOjs1Mjo7NjI6OzcyOjswMjo7MTI6OzIyOjszMjo0OjI6NDsyOjQ0Mjo0NTI6NDYyOjQ3Mjo0MDI6NDEyOjQyMjo0MzI6NToyOjU7Mjo1NDI6NTUyOjU2Mjo1NzI6NTAyOjUxMjo1MjI6NTMyOjY6Mjo2OzI6NjQyOjY1Mjo2NjI6NjcyOjYwMjo2MTI6NjIyOjYzMjMzMzIzMTcyMDo3MzMzMzo6OjpgbG5sbi9NcGZwd2ZmcHdic2ZxbHdsZ2xrYmBmYGJnYmIvXWxhamZtZy9BYmJwL0F1amdiYGJwbGx3cWxlbHFscGxvbGx3cWJgdmJvZ2ppbHBqZ2xkcWJtd2pzbHdmbmJnZmFmYm9kbHJ2L0VmcHdsbWJnYndxZnBzbGBsYGJwYmFiaWx3bGdicGptbGJkdmJzdmZwdm1scGJtd2ZnamBmb3ZqcGZvb2JuYnpseWxtYmJubHFzanBsbGFxYmBvamBmb29sZ2pscGtscWJgYnBqPFs8XFw8UTxcXDxSPFA9bDxcXD1sPW89bjxcXDxRPFk8UzxSPFI9bjxUPFs8UTxSPFg8Uj1uPFI8WjxZPFI8UTxUPWk8cTxcXDxZPFk8XT1nPFA9Zzx+PWc9bTxSPF49ZzxePFI8cTxSPFI8XTxzPFI8VzxUPFE8VDxMPEg8cTxZPHA9Zz1uPWc8cjxRPFQ8UDxYPFxcPHs8XFw8eDxcXDxxPW88cjxdPW48WTx0PFs8WTxVPFE9bzxQPFA8Tj1nPW88WjVtNWY0TzVqNWk0SzVpNFU1bzVoNE81ZDRdNEM1ZjRLNW01ZTVrNWQ1aDVpNWg1bzRLNWQ1aDVrNEQ0XzRLNWg0STVqNWs1ZjRPNWY1bjRDNWs1aDRHNWk0RDVrNWg1ZDVoNWY0RDVoNEs1ZjRENW80WDVmNEs1aTRPNWk1ajRGNEQ1ZjVoNWo0QTRENWs1aTVpNFg1ZDRYZWpxcHd1amdmbG9qZGt3dGxxb2duZmdqYnRrandmYG9scGZhb2JgaHFqZGt3cG5ib29hbGxocHNvYmBmbnZwamBlamZvZ2xxZ2Zxc2xqbXd1Ym92Zm9mdWZvd2Jhb2ZhbGJxZ2tsdnBmZHFsdnN0bHFocHpmYnFwcHdid2Z3bGdienRid2ZxcHdicXdwd3pvZmdmYndrc2x0ZnFza2xtZm1qZGt3ZnFxbHFqbXN2d2JhbHZ3d2ZxbnB3andvZndsbG9wZnVmbXdvbGBib3dqbmZwb2JxZGZ0bHFncGRibmZwcGtscXdwc2JgZmVsYHZwYG9mYnFubGdmb2FvbGBoZHZqZ2ZxYmdqbHBrYnFmdGxuZm1iZGJqbW5sbWZ6am5iZGZtYm5mcHpsdm1kb2ptZnBvYndmcWBsb2xxZHFmZm1lcWxtdyVibnM4dGJ3YGtlbHFgZnNxamBmcXZvZnBhZmRqbWJld2ZxdWpwandqcHB2ZmJxZmJwYWZvbHRqbWdme3dsd2Jva2x2cXBvYmFmb3Nxam13c3FmcHBhdmpvd29qbWhwcHNmZmdwd3ZnendxYmdmZWx2bWdwZm1wZnZtZ2ZxcGtsdG1lbHFucHFibWRmYmdnZmdwd2pvb25sdWZnd2JoZm1iYWx1ZmVvYnBrZWp7ZmdsZXdmbWx3a2ZxdWpmdHBga2ZgaG9mZGJvcWp1ZnFqd2ZucHJ2amBocGtic2Zrdm5ibWZ7anB3ZGxqbWRubHVqZndranFnYWJwamBzZmJgZnB3YmRmdGpnd2tvbGRqbWpnZmJwdHFsd2ZzYmRmcHZwZnFwZ3FqdWZwd2xxZmFxZmJocGx2d2t1bGpgZnBqd2Zwbmxtd2t0a2ZxZmF2am9ndGtqYGtmYnF3a2VscXZud2txZmZwc2xxd3NicXd6QG9qYGhvbHRmcW9qdWZwYG9icHBvYnpmcWZtd3F6cHdscXp2cGJkZnBsdm1nYGx2cXd6bHZxI2FqcXdrc2xzdnN3enNmcGJzc296Sm5iZGZhZmptZHZzc2ZxbWx3ZnBmdWZxenBrbHRwbmZibXBme3dxYm5id2Brd3FiYGhobWx0bWZicW96YWZkYm1wdnNmcXNic2ZxbWxxd2tvZmJxbWRqdWZtbWJuZmdmbWdmZ1dmcW5wc2Jxd3BEcWx2c2FxYm1ndnBqbWR0bG5ibWVib3BmcWZiZ3pidmdqbHdiaGZwdGtqb2YtYGxuLG9qdWZnYGJwZnBnYmpvemBram9nZHFmYndpdmdkZndrbHBmdm1qd3BtZnVmcWFxbGJnYGxicHdgbHVmcWJzc29mZWpvZnBgemBvZnBgZm1mc29ibXBgb2pgaHRxandmcnZmZm1zamZgZmZuYmpvZXFibmZsb2dmcXNrbHdsb2puandgYmBrZmBqdWpvcGBib2ZmbXdmcXdrZm5md2tmcWZ3bHZga2Fsdm1ncWx6Ym9icGhmZ3RrbG9mcGptYGZwd2xgaCNtYm5mZWJqd2trZmJxd2Zuc3d6bGVlZnFwYGxzZmx0bWZnbmpka3dib2F2bndram1oYW9sbGdicXFiem5iaWxxd3F2cHdgYm1sbXZtamxtYGx2bXd1Ym9qZ3B3bG1mUHd6b2ZPbGRqbWtic3N6bGBgdnFvZmV3OWVxZnBrcnZqd2Zlam9ucGRxYmdmbWZmZ3B2cWFibWVqZGt3YWJwanBrbHVmcWJ2d2w4cWx2d2Yta3dub25qe2ZnZWptYm9abHZxI3Bvamdmd2xzamBhcWx0bWJvbG1mZ3FidG1wc29qd3FmYmBrUWpka3dnYndmcG5icWBrcnZsd2ZkbGxncE9qbWhwZ2x2YXdicHptYHdrdm5hYm9vbHRga2pmZXpsdndrbWx1Zm8yM3N7OHBmcXVmdm13am9rYm1ncEBrZmBoUHNiYGZydmZxemlibmZwZnJ2Ym93dGpgZjMvMzMzUHdicXdzYm1mb3BsbWRwcWx2bWdmamRrd3BramV3dGxxd2tzbHB3cG9mYmdwdGZmaHBidWxqZ3drZnBmbmpvZnBzb2JtZnBuYnF3Ym9za2Jzb2Jtd25icWhwcWJ3ZnBzb2J6cGBvYmpucGJvZnB3Znt3cHB3YnFwdHFsbWQ/LGswPXdram1kLWxxZCxudm93amtmYnFnU2x0ZnFwd2JtZ3dsaGZtcGxvamcrd2tqcGFxam1kcGtqc3Bwd2JlZXdxamZnYGJvb3Bldm9vemViYHdwYmRmbXdXa2pwIywsLi49Ymduam1mZHpzd0Z1Zm13MjZzezhGbmJqb3dxdmYhYHFscHBwc2Ztd2FvbGRwYWx7IT1tbHdmZ29mYnVmYGtqbWJwanlmcGR2ZnB3PyxrNz1xbGFsd2tmYnV6d3F2Zi9wZnVmbWRxYm1nYHFqbmZwamRtcGJ0YnFmZ2JtYGZza2JwZj0/Ii4uZm1cXFZQJSAwOjgxMzNze1xcbWJuZm9id2ptZm1pbHpiaWJ7LWJ3amxtcG5qd2tWLVAtI2tsb2dwc2Z3ZnFqbWdqYm1idSE9YGtiam1wYGxxZmBsbmZwZ2xqbWRzcWpscVBrYnFmMjo6M3BxbG5ibW9qcHdwaWJzYm1lYm9vcHdxamJvbHRtZnFiZHFmZj8sazE9YmF2cGZib2Zxd2xzZnFiIS4sLFRgYnFncGtqb29wd2ZibnBTa2x3bHdxdndrYG9mYm0tc2tzPHBiam13bmZ3Ym9vbHZqcG5mYm13c3FsbGVhcWpmZXFsdCE9ZGZtcWZ3cXZgaG9sbGhwVWJvdmZFcWJuZi1tZncsLi49XHQ/d3F6I3hcdHVicSNuYmhmcGBscHdwc29iam1iZ3Zvd3J2ZnB3d3Fiam1vYmFscWtmb3NwYGJ2cGZuYmRqYG5sd2xxd2tmanExNjNze29mYnB3cHdmc3BAbHZtd2Bsdm9nZG9icHBwamdmcGV2bWdwa2x3Zm9idGJxZ25sdndrbmx1ZnBzYnFqcGRqdWZwZ3Z3YGt3ZnticGVxdmp3bXZvby9/f1heOHdscyE9XHQ/Ii4uU0xQVyFsYGZibT9hcSw9ZW9sbHFwc2ZiaGdmc3drI3BqeWZhYm1ocGBid2BrYGticXcxM3N7OGJvamRtZ2Zib3B0bHZvZzYzc3s4dnFvPiFzYnFocG5sdnBmTmxwdyMtLS0/LGJubG1kYXFiam1hbGd6I21sbWY4YWJwZmdgYnFxemdxYmV3cWZlZnFzYmRmXFxrbG5mLW5md2ZxZ2ZvYnpncWZibnNxbHVmaWxqbXc/LHdxPWdxdmRwPyIuLiNic3Fqb2pnZmJvYm9vZm1me2Jgd2VscXdrYGxnZnBvbGRqYFVqZnQjcGZmbnBhb2JtaHNscXdwIysxMzNwYnVmZ1xcb2ptaGRsYm9wZHFibXdkcWZmaGtsbmZwcWptZHBxYndmZzAzc3s4dGtscGZzYnFwZisqOCEjQW9sYGhvam12e2lsbWZwc2p7Zm8kKjghPSo4amUrLm9mZXdnYnVqZ2tscXBmRWxgdnBxYmpwZmFse2ZwV3FiYGhmbmZtdz8sZm49YWJxIT0tcHFgPndsdGZxYm93PiFgYmFvZmtmbXF6MTdzezhwZnd2c2p3Ym96cGticXNuam1scXdicHdmdGJtd3B3a2pwLXFmcGZ3dGtmZm9kanFvcCxgcHAsMjMzJjhgb3ZhcHB3dmVlYWphb2Z1bHdmcCMyMzMzaGxxZmJ+KjgOXHRhYm1ncHJ2ZnZmPiN4fjg7M3N7OGBoam1keA5cdFxuXG5ia2ZiZ2BvbGBoanFqcGtvamhmI3Fid2pscHdid3BFbHFuIXpia2xsKlgzXjhCYWx2d2VqbWdwPyxrMj1nZmF2ZHdicGhwVlFPIz5gZm9vcH4qKyo4MjFzezhzcWpuZndmb29wd3ZxbXAzezUzMy1pc2QhcHNiam1hZmJga3die2ZwbmpgcWxibWRmby4uPT8sZGpld3Bwd2Z1Zi5vam1oYWxnei1+KjhcdFxubmx2bXcjKzI6OkVCUj8scWxkZnFlcWJtaEBvYnBwMTtzezhlZmZncD9rMj0/cGBsd3d3ZnB3cDExc3s4Z3FqbWgqI39/I29mdGpwcGtib28gMzA6OCNlbHEjb2x1Zmd0YnB3ZjMzc3s4aWI5D25wam5sbT9lbG13cWZzb3puZmZ3cHZtd2ZxYGtmYnN3amRrd0FxYm1nKiMiPiNncWZwcGBvanNwcWxsbnBsbWhmem5sYWpvbmJqbS1NYm5mI3NvYndmZXZtbXp3cWZmcGBsbiwhMi1pc2R0bmxnZnNicWJuUFdCUVdvZmV3I2pnZ2ZtLyMxMzIqOFx0flx0ZWxxbi11anF2cGBrYmpxd3FibXB0bHFwd1NiZGZwandqbG1zYndgaz8iLi5cdGwuYGJgZWpxbnB3bHZxcC8zMzMjYnBqYm1qKCgqeGJnbGFmJCpYM15qZz4yM2Fsd2s4bmZtdiMtMS1uai1zbWQhaGZ1am1gbGJga0Bram9nYXF2YGYxLWlzZFZRTyooLWlzZH9wdmp3ZnBvamBma2JxcXoyMTMhI3B0ZmZ3d3E9Dlx0bWJuZj5namZkbHNiZGYjcHRqcHAuLj1cdFx0IGVlZTghPU9sZC1gbG4hd3FmYndwa2ZmdyojJSUjMjdzezhwb2Zmc213Zm13ZWpvZmdpYjkPb2pnPiFgTWJuZiF0bHFwZnBrbHdwLmFsey5nZm93Ylx0JW93OGFmYnFwOTc7WT9nYndiLnF2cWJvPyxiPSNwc2ZtZ2FiaGZxcGtsc3A+IyEhOHNrcyE9YHdqbG0yMHN7OGFxamJta2Zvb2xwanlmPmw+JjFFI2lsam1uYnphZj9qbmQjam5kIT0vI2VpcGpuZCEjISpYM15OV2xzQVd6c2YhbWZ0b3pHYm1waGB5ZmBrd3Fiam9obWx0cD8sazY9ZWJyIT15ay5gbTIzKjhcdC4yISo4d3pzZj5hb3ZmcHdxdm96Z2J1anAtaXAkOD0OXHQ/InB3ZmZvI3psdiNrMT0OXHRlbHFuI2lmcHZwMjMzJiNuZm12LQ5cdFxuDlx0dGJvZnBxanBocHZuZm13Z2dqbWRhLm9qaHdmYmBrZGplISN1ZmRicGdibXBoZmZwd2pwa3Jqc3B2bG5qcGxhcWZnZnBnZmZtd3Fmd2xnbHBzdmZnZmIvXWxwZnB3L013amZtZmticHdibHdxbHBzYnF3ZmdsbWdmbXZmdWxrYmBmcWVscW5ibmpwbmxuZmlscW52bWdsYnJ2L0FnL0FicHAvX29sYnp2Z2JlZmBrYndsZ2Jwd2Jtd2xuZm1scGdid2xwbHdxYnBwandqbG52YGtsYmtscWJvdmRicW5iemxxZnB3bHBrbHFicHdmbWZxYm13ZnBlbHdscGZwd2Jwc2IvQXBtdmZ1YnBib3ZnZWxxbHBuZmdqbHJ2amZtbmZwZnBzbGdmcWBram9mcGZxL011ZmBmcGdmYGpxaWxwL0VmcHdicXVmbXdiZHF2c2xrZmBrbGZvb2xwd2ZtZGxibmpkbGBscGJwbWp1Zm9kZm13Zm5qcG5iYmpxZnBpdm9qbHdmbmJwa2JgamJlYnVscWl2bWpsb2phcWZzdm13bGF2Zm1sYnZ3bHFiYXFqb2F2Zm1id2Z7d2xuYnF5bHBiYWZxb2pwd2JvdmZkbGAvX25sZm1mcWxpdmZkbHNmcS9Wa2JhZnFmcHdsem12bWBibnZpZnF1Ym9scWV2ZnFib2phcWxkdnB3YmpkdmJvdWx3bHBgYnBscGR2L0Fic3ZmZ2xwbG5scGJ1anBsdnB3ZmdnZmFmbW1sYGtmYXZwYGJlYm93YmZ2cWxwcGZxamZnamBrbGB2cXBsYG9idWZgYnBicG9mL19tc29ieWxvYnFkbGxhcWJwdWpwd2Jic2x6bGl2bXdsd3Fid2J1anB3bGBxZmJxYGJuc2xrZm5scGBqbWBsYGJxZGxzanBscGxxZ2Zta2JgZm0vTXFmYmdqcGBsc2ZncWxgZnFgYnN2Zmdic2JzZm9uZm1scS9Wd2pvYG9icWxpbHFkZmBib29mc2xtZnF3YnFnZm1iZ2pmbmJxYGJwamR2ZmZvb2JwcGpkb2xgbGBrZm5sd2xwbmJncWZgb2JwZnFmcHdsbWovXWxydmZnYnNicGJxYWJtYGxramlscHVqYmlmc2Jhb2wvRXB3ZnVqZm1mcWZqbWxnZmlicWVsbWdsYGJtYm9tbHF3Zm9md3FiYGJ2cGJ3bG5icW5ibWxwb3ZtZnBidndscHVqb29idWZtZ2xzZnBicXdqc2xwd2ZtZGJuYnFgbG9vZnVic2JncWZ2bWpnbHVibmxweWxtYnBibmFscGFibWdibmJxamJiYXZwbG52YGticHZhanFxamxpYnVqdWpxZHFiZ2xga2pgYmJvby9BaWx1Zm1namBrYmZwd2Jtd2JvZnBwYm9qcXB2Zm9sc2ZwbHBlam1mcG9vYm5iYXZwYGwvRXB3Ym9vZmRibWZkcWxzb2J5Ymt2bmxxc2JkYnFpdm13YmdsYW9manBvYnBhbG9wYmFiL11sa2Jhb2JvdmBrYi9tcWZiZ2pgZm1pdmRicW1sd2JwdWJvb2Zib28vTWBicWRiZ2xvbHFiYWJpbGZwdy9FZHZwd2xuZm13Zm5icWpsZWpxbmJgbHB3bGVqYGtic29id2JrbGRicWJxd2Zwb2Z6ZnBicnZmb252cGZsYWJwZnBzbGBscG5qd2JnYGpmb2xga2pgbG5qZmdsZGJtYnFwYm13bGZ3YnNiZ2ZhZnBzb2J6YnFmZ2ZwcGpmd2ZgbHF3ZmBscWZiZ3ZnYnBnZnBmbHVqZmlsZ2ZwZmJiZHZicCVydmx3OGdsbmJqbWBsbm5sbXB3Ynd2cGZ1Zm13cG5icHdmcXB6cHdmbmJgd2psbWFibW1mcXFmbmx1ZnBgcWxvb3ZzZ2J3ZmRvbGFib25mZ2p2bmVqb3dmcW12bmFmcWBrYm1kZnFmcHZvd3N2YW9qYHBgcWZmbWBrbGxwZm1scW5ib3dxYnVmb2pwcHZmcHBsdnFgZndicWRmd3BzcWptZG5sZ3ZvZm5sYWpvZnB0andga3NrbHdscGFscWdmcXFmZGpsbWp3cGZvZXBsYGpib2Jgd2p1ZmBsb3ZubXFmYGxxZ2Vsb29sdHdqd29mPWZqd2tmcW9mbWR3a2VibmpvemVxamZtZ29iemx2d2J2d2tscWBxZmJ3ZnFmdWpmdHB2bm5mcXBmcXVmcXNvYnpmZ3NvYnpmcWZ7c2JtZ3Nsb2pgemVscW5id2dsdmFvZnNsam13cHBmcWpmcHNmcXBsbW9qdWptZGdmcGpkbW5sbXdrcGVscWBmcHZtanJ2ZnRmamRrd3NmbHNvZmZtZnFkem1id3ZxZnBmYnFga2VqZHZxZmtidWptZGB2cHdsbmxlZXBmd29md3dmcXRqbWdsdHB2YW5qd3FmbWdmcWRxbHZzcHZzb2xiZ2tmYm93a25md2tsZ3VqZ2ZscHBga2xsb2V2d3ZxZnBrYmdsdGdmYWJ3ZnVib3ZmcExhaWZgd2x3a2ZxcHFqZGt3cG9mYmR2ZmBrcWxuZnBqbnNvZm1sd2pgZnBrYnFmZ2ZtZ2ptZHBmYnBsbXFmc2xxd2xtb2ptZnBydmJxZmF2d3dsbWpuYmRmcGZtYmFvZm5sdWptZG9id2Zwd3RqbXdmcUVxYm1gZnNmcWpsZ3B3cWxtZHFmc2Zid09sbWdsbWdmd2Jqb2VscW5mZ2dmbmJtZ3BmYHZxZnNicHBmZ3dsZGRvZnNvYmBmcGdmdWpgZnB3YndqYGBqd2pmcHB3cWZibnpmb29sdGJ3d2JgaHB3cWZmd2VvamRrd2tqZ2dmbWptZWwhPWxzZm1mZ3ZwZmV2b3Vib29memBidnBmcG9mYmdmcXBmYHFmd3BmYGxtZ2dibmJkZnBzbHF3cGZ7YGZzd3Fid2ptZHBqZG1mZ3dram1kcGZlZWZgd2VqZm9ncHB3YndmcGxlZWpgZnVqcHZib2ZnandscXVsb3ZuZlFmc2xxd252cGZ2bm5sdWpmcHNicWZtd2JgYGZwcG5scHdvem5sd2tmcSEjamc+IW5icWhmd2RxbHZtZ2BrYm1gZnB2cXVmemFmZWxxZnB6bmFsb25sbmZtd3BzZmZga25sd2psbWptcGpnZm5id3dmcUBmbXdmcWxhaWZgd2Z7anB3cG5qZ2dvZkZ2cWxzZmRxbHR3a29mZGJgem5ibW1mcWZtbHZka2BicWZmcWJtcHRmcWxxamRqbXNscXdib2BvamZtd3Bmb2Zgd3FibWdsbmBvbHBmZ3dsc2pgcGBsbmptZGVid2tmcWxzd2psbXBqbnNvenFianBmZ2ZwYGJzZmBrbHBmbWBrdnFga2dmZWptZnFmYnBsbWBscW1mcWx2d3N2d25mbmxxemplcWJuZnNsb2pgZm5sZ2ZvcE12bmFmcWd2cWptZGxlZWZxcHB3em9mcGhqb29mZ29qcHdmZ2Bib29mZ3Bqb3VmcW5icWRqbWdmb2Z3ZmFmd3dmcWFxbHRwZm9qbmp3cERvbGFib3BqbWRvZnRqZ2Rmd2BmbXdmcWF2Z2Rmd21sdHFic2BxZmdqd2BvYmpucGZtZGptZnBiZWZ3emBrbGpgZnBzanFqdy5wd3pvZnBzcWZiZ25iaGptZG1mZmdmZ3F2cHBqYnNvZmJwZmZ7d2Ztd1BgcWpzd2FxbGhmbWJvb2x0cGBrYnFkZmdqdWpnZmViYHdscW5mbmFmcS5hYnBmZ3drZmxxemBsbWVqZGJxbHZtZ3RscWhmZ2tmb3NmZ0BrdnFga2puc2Jgd3BrbHZvZ2JvdGJ6cG9sZGwhI2Fsd3dsbm9qcHchPSp4dWJxI3NxZmVqe2xxYm1kZktmYmdmcS1zdnBrK2BsdnNvZmRicWdmbWFxamdkZm9idm1ga1FmdWpmdHdiaGptZHVqcGpsbW9qd3dvZmdid2ptZEF2d3dsbWFmYnZ3endrZm5mcGVscWRsd1BmYnFga2JtYGtscWJvbmxwd29sYmdmZ0BrYm1kZnFmd3ZxbXB3cWptZHFmb2xiZ05sYWpvZmptYGxuZnB2c3NvelBsdnFgZmxxZ2ZxcHVqZnRmZyVtYXBzOGBsdnFwZkJhbHZ3I2pwb2JtZz9rd25vI2BsbGhqZm1ibmY+IWJuYnlsbW5sZ2ZxbWJndWpgZmptPyxiPTkjV2tmI2dqYm9sZGtsdnBmcEFGREpNI05me2pgbHB3YnF3cGBmbXdxZmtmamRrd2JnZ2ptZEpwb2JtZ2JwcGZ3cEZuc2pxZlBga2xsb2ZlZWxxd2dqcWZgd21mYnFvem5ibXZib1Bmb2Zgdy1cdFx0TG1maWxqbWZnbmZtdiE9U2tqb2pzYnRicWdwa2JtZ29mam5zbHF3TGVlamBmcWZkYnFncGhqb29wbWJ3amxtUHNscXdwZ2ZkcWZmdGZmaG96IytmLWQtYWZram1nZ2xgd2xxb2xkZGZndm1qd2ZnPyxhPT8sYWZkam1wc29ibXdwYnBwanB3YnF3anB3anBwdmZnMDMzc3t/YGJtYmdiYmRmbWB6cGBrZm5mcWZuYmptQXFieWpvcGJuc29mb2xkbCE9YWZ6bG1nLnBgYm9mYmBgZnN3cGZxdWZnbmJxam1mRWxsd2ZxYGJuZnFiPyxrMj1cdFxcZWxxbiFvZmJ1ZnBwd3FmcHAhIyw9Dlx0LWRqZSEjbG1vbGJnb2xiZ2ZxTHtlbHFncGpwd2ZxcHZxdWp1b2pwd2ZtZWZuYm9mR2ZwamRtcGp5Zj4hYnNzZmJvd2Z7dyE9b2Z1Zm9wd2tibWhwa2pka2ZxZWxxYGZnYm1qbmJvYm16bG1mQmVxamBiYmRxZmZncWZgZm13U2Zsc29mP2FxIyw9dGxtZ2Zxc3FqYGZwd3ZxbWZnf38jeH44bmJqbSE9am1vam1mcHZtZ2J6dHFicyE9ZWJqb2ZnYGZtcHZwbmptdndmYWZiYGxtcnZsd2ZwMjYzc3t/ZnB3YndmcWZubHdmZm5iam8hb2ptaGZncWpka3c4cGpkbWJvZWxxbmJvMi1rd25vcGpkbXZzc3FqbWBmZW9sYnc5LXNtZCEjZWxxdm4tQmBgZnBwc2JzZnFwcGx2bWdwZnt3Zm1nS2ZqZGt3cG9qZ2ZxVldFLjshJWJuczgjQWZlbHFmLSNUandrcHd2Z2psbHRtZnFwbmJtYmRmc3FsZWp3aVJ2ZnF6Ym1tdmJvc2JxYm5wYWx2ZGt3ZWJubHZwZGxsZG9mb2xtZGZxaigoKiN4anBxYmZvcGJ6am1kZ2Zgamdma2xuZiE9a2ZiZ2ZxZm1wdnFmYXFibWBrc2pmYGZwYW9sYGg4cHdid2Znd2xzIT0/cWJgam1kcWZwanlmLi4lZHc4c2Jgand6cGZ7dmJvYXZxZmJ2LWlzZCEjMjMvMzMzbGF3Ymptd2p3b2ZwYm5sdm13LyNKbWAtYGxuZmd6bmZtdiEjb3pxamBwd2xnYnotam1nZmZnYGx2bXd6XFxvbGRsLUVibmpvem9sbGhmZ05icWhmd29wZiNqZVNvYnpmcXd2cWhmeio4dWJxI2VscWZwd2RqdWptZGZxcWxxcEdsbmJqbX5mb3BmeGptcGZxd0FvbGQ/LGVsbHdmcW9sZGptLWVicHdmcWJkZm13cD9hbGd6IzIzc3sjM3NxYmRuYmVxamdieml2bWpscWdsb29icXNvYmBmZ2BsdWZxcHNvdmRqbTYvMzMzI3NiZGYhPWFscHdsbS13ZnB3K2J1YndicXdmcHdmZ1xcYGx2bXdlbHF2bnBwYGtmbmJqbWdmey9lam9vZmdwa2JxZnBxZmJnZnFib2Zxdytic3NmYnFQdmFuandvam1mIT1hbGd6IT1cdCkjV2tmV2tsdmRrcGZmam1kaWZxcGZ6TWZ0cD8sdWZxamV6ZntzZnF3am1pdnF6dGpnd2s+QGxsaGpmUFdCUVcjYmBxbHBwXFxqbmJkZndrcWZiZ21id2p1ZnNsYGhmd2FseyE9XHRQenB3Zm4jR2J1amdgYm1gZnF3YmFvZnBzcWx1ZmdCc3FqbyNxZmJvb3pncWp1ZnFqd2ZuIT1ubHFmIT1hbGJxZ3BgbG9scXBgYm5zdnBlanFwdyN/fyNYXjhuZmdqYi1kdmp3YnFlam1qcGt0amd3azlwa2x0ZmdMd2tmcSMtc2tzISNicHB2bmZvYnpmcXB0am9wbG1wd2xxZnBxZm9qZmVwdGZnZm1AdnB3bG5mYnBqb3ojemx2cSNQd3FqbWRcdFx0VGtqb3diem9scWBvZmJxOXFmcGxxd2VxZm1ga3drbHZkayEqIygjIT9hbGd6PWF2emptZGFxYm1ncE5mbmFmcW1ibmYhPWxzc2ptZHBmYHdscTZzezghPXVwc2JgZnNscHdmcW5iaWxxI2BsZWVmZm5icXdqbW5id3ZxZmtic3NmbT8sbWJ1PWhibXBicG9qbWghPUpuYmRmcD5lYm9wZnRram9mI2twc2JgZjMlYm5zOCNcdFx0Sm0jI3NsdGZxU2xvcGhqLmBsb2xxaWxxZ2JtQWx3d2xuUHdicXcjLmBsdm13MS1rd25vbWZ0cCE9MzItaXNkTG1vam1mLnFqZGt3bmpvb2ZxcGZtamxxSlBBTSMzMy8zMzMjZHZqZ2ZwdWJvdmYqZmB3amxtcWZzYmpxLXtubyEjI3FqZGt3cC1rd25vLmFvbGBocWZkRntzOWtsdWZxdGp3a2ptdWpxZGptc2tsbWZwPyx3cT0OdnBqbWQjXHRcbnVicSM9JCo4XHRcbj8sd2c9XHQ/LHdxPVx0YWJrYnBiYXFicGpvZGJvZmRsbmJkemJxc2xvcGhqcHFzcGhqNF00QzVkXGJUQVxuemtcdkJsXGJRf1x2VW0FR3hcYlNNXG5tQ1xiVEFcdHdRXG5kfVxiV0BcYlRsXGJURlx0aUBcdGNUXHZCTVx2fGoEQlZcdHF3XHRjQ1xiV0lcbnBhXHRmTVxue1oFe1hcYlRGXGJWVlxiVktcdH9tBGtGXHRbXVxiUG1cYlR2XG5zSVx2cGdcdFtJXGJRcARteFx2X1dcbl5NXG5wZVx2UX1cdkd1XG5lbFxucGUEQ2gEQlZcYlRBXHRTb1xuemtcdkdMXHZ4RFxuZFsFSnoFTVlcYlFwBGxpXG5mbFxucEMFe0IFTnRcdndUXHRpX1xiVGcEUVFcbnxwXHZYTlxiUVNcdnhEBFFDXGJXWlx0cERcdlZTXGJUVwVOdARZaFxuenUES2oFTn1cdHdyXHRIYVxuX0RcdGpgXHZRfVx2V3BcbnhaBHtjXHRqaVx0QlVcbmJEBGF8XHRUblx0cFZcblpkXG5tQ1x2RVYFe1hcdGN9XHRUb1xiV2xcYlVkXHRJUVx0Y2dcdnhzXG5YV1x0d1JcdmVrXHRjfVx0XXlcdEpuXG5ycFxuZWdcbnBWXG56XFwFe1dcbnBsXG56XFxcbnpVXHRQY1x0YHtcYlZAXG5jfFxiUndcdGlfXGJWYlxud1hcdEh2BFN1XGJURlx2X1dcdldzXHZzSQVtf1xuVFRcbmRjXHRVU1x0fWZcdGlaXGJXelx0Y30ETURcdEJlXHRpRFx2QEBcYlRsXGJQdlx0fXQEU3cETWBcdm5VXHRrV1x2ZWRcbnFvXHZ4WVx0QXxcYlR6XHZ5YARCUgRCTVx0aWEEWFVcbnl1BG5eXHRmTFx0aUlcblhXXHRmRFxiV3pcYldAXHR5alx0f21cdGF2XHRCTlx2YlxcXHRwRFxiVGZcbllbXHRKblxiUXlcdFteXHZXY1x2eXUERGwEQ0pcdldqXHZIUlx0YFZcdnVXXHRReVxucEBcdkd1BXBsBEptXGJXW1xuTFBcbnhDXG5gbVx0d1EFdWkFf1JcbmJJXHR3UVx0QlpcdFdWBEJSXG5wZ1x0Y2cFdGkEQ1dcbl95XHRSZ1xiUWFcdlFCXHZXY1xuWWIFbGVcbmdFBFN1XG5MW1x0UX9cdGVhXHRkalx2XVdcbmJ+BE1gXHR3TFxiVFZcYlZIXG50f1xucGxcdHxiBXNfXGJVfFxiVGEEb1EFbHYEU2sETWBcYlR2XHZLfVxuZmxcdGNDBG9RBEJSXHRIa1x0fGRcYlFwXHRIS1x0QlpcdkhSXGJQdlx2THhcdkVaXGJUf1xiVHZcdGlEBW9EBU1VXHZ3QgRTdQVrYARTdFxudENcdFBsXHRLZ1xub2lcdGpZXHZ4WQRofVxuemtcYldaXHR/bVx2ZWBcdFRCXHRmRVxuemtcdGB6BFloXG5WfFx0SEtcdEFKXHRBSlxiVUxcdHBcXFx0cWxcblljBEtkXG5meQRZaFx0W0lcdkRnBEptXG5dblxubGJcYlVkXG57Wlx0bHVcdGZzBG9RXGJUVwRKbVx2d0JcdGVhBFloBEJDXHRzYlx0VG5cbnpVXG5feVx2eFlcdFFdXG5ndwRtdFx0T1xcXG50YlxiV1dcYlF5XHRtSVx0VltcbnlcXFxuYUJcdlJiXHR3UVxuXVEEUUpcYldnXHZXYVxiUWpcbnRDXGJWSFxuWW1cdnhzXGJWS1xuZWxcYldJXHZ4WQRDcVxudFJcdkhWXGJUbFxiVndcdGF5XGJRYVxiVlZcdH10XHRkalxucnxcdHBcXFx0d1JcbntpXG5UVFx0W0lcdGlbXHRBSlx2eHNcdl9XXHRke1x2UX1cdGNnXHRUelx0QXxcdENqXHZMbQVOfQVtf1xuYktcdGRaXHRwXFxcdGBWXHRzVlxucEBcdGlEXHR3UVx2UX1cYlRmBWthBEptXHZAQFxiVmBcdHpwXG5ATgRTd1x0aUlcdGNnXG5vaQRTdVxiVncEbG8EQ3lcdGN9XHZiXFxcdHNVBEJBXGJXSVxiVGZcbnhTXHRWcFxuZHxcYlRWXHZiQ1x0Tm8FSnVcblRDXHR8YFxue1pcdERdXGJVfFx0Y30FbG1cYlRsXHRCdlx0UGxcdGN9XGJRcFx0f21cbkxrXHRralxuQE4EU2IES09cdGpfXHRwXFxcbnpVXGJUbFxiVGdcYldJXHRjZgRYT1xiV1dcbmR6BGxpXHRCTlxuZFtcYldPBE1EXHZLQ1x0ZGpcdElfXGJWVlxueVxcXHZMbQV4bFx0eEJcdGtWXHZiXFxcdkpXXHZWU1x0VnhcdnhEXHRkewRNRFxiVGFcdHxgXHZQegRSfVx2V3MEQk1cbnNJBENOXGJUYQRKbVxucGVcdGlfXG5wVlxucmhcdFJkXHRIdlxufkFcbnhSXHZXaFx2V2tcbnhTXHZBelx2d1hcbmJJBG9RXHRmd1xucUlcblZ8XG51bgV6f1x2cGdcdGRcXFx2b0EFe0RcdGlfBXhCXGJUf1x0YFYFcXJcdFRUBGddBENBXHZ1Ulx0VkpcdFRgXG5wd1x2UmJcdElfXG5DeARSb1x2c0kEQ2oES2hcdEJ2XHRXVgRCQgVvRAV7RFxuaGMES21cdl5SXHRRRVxue0lcbnBAXG5jfAVHdFx0Y30ERGxcbnpVBXFOXHRzVgVrfVx0SGhcdnxqXG5xbwV1fFx0UV1cdmVrBX9aBE1gBFN0XG5wZVx0ZGpcYlZHXHZlRVx0f21cdldjBHxJXG5bV1x0ZkxcYlR/XHRCWgRTdVx2S2EEQ3EFTnQEWVtcbnFJXGJUdlx0Zk1cdGlAXHR9ZgRCXFxcdFF5XHZCbFxiV2cEWEQFa2NcdnhbXGJWVlx0UV1cdH9hXHRQeVx2eERcbmZJXHR9ZgVvRFx0ZGpcdFNHBWxzXHR+RARDTlxue1pcdFxcdlxuX0RcbmhjXHZ4XwRDW1x0QUpcbkxNXHRWeARDSVx0YmpcdGNeXHRjRlxudEMEU3hcdHdyBFhBXGJVXFxcdHxhXHZLXFxcYlRWXGJWalxuZHxcdGZzBENYXG50YlxiUndcdFZ4XHRBRVx0QXxcYlR/BU50XHZEZ1x0VmNcYlRsBGRAXG5wb1x0f01cdGNGXG5wZVx0aVpcdEJvXGJTcVxuZkgEbGBcYlR4XGJXZlx0SEVcdkZ7XHRjT1x0ZkRcbmxtXHZmWlxubG1cdmVVXHRkRwRCSFxiVFZcdFNpBU1XXG53WFxuelxcXHRcXGMEQ1hcbmR9XHRsfVxiUXBcYlRWXHRGflxiUX9cdGBpXG5nQAVuT1xiVWRcYlRsXG5MW1x0d1FcdGppXG50Q1x0fEpcbkxVXG5hQlx2eFkES2pcdEFKBXVOXHRpW1xucGUEU2tcdkRnXHZ4XVxiVmJcYlZWXG5lYVx0a1ZcbnFJXGJUYQRTa1xuQU9cdHBEXG50YlxudHNcbnlpXGJWZ1x0aV9cdl9XXG5MawVOdFx0eWpcdGZNBFJ/XHRpSVxiVGxcdndYXHRzVlx2TWxcbnl1XHRBSlxiVmoES09cdFdWXHZBfVx2V39cbnJwXHRpRFx2fG8FbHZcdnNJBEJNXHRkflx0Q1VcYlZiBGVWXG5wQ1x2d1RcdGpgXHRjfVx2eHNcdnBzXHZ2aFx0V1ZcdkdnXHZBZVx2Vktcdl1XXHRyZ1x2V2MFRmBcdEJyXHZiXFxcdGRaXGJRcFxucUkEa0ZcbkxrXHZBUlxiV0lcYlRnXHRic1x0ZHdcbntMXG5feVx0aVpcYlRBXHRsZ1xiVlZcYlRsXHRka1xuYGtcdGF7XHRpXwV7QQV3alx0d05cdkBAXGJUZVx0aV9cbl9EXHR3TFxuQUhcdmlLXHZla1xuW11cdHBfXHR5alxiVHZcdFVTXHRbclxue0lcbnBzBUd0XHZWS1xucGwEU31cdldQXHR8ZARNRFx2SFZcYlR/BFJ9BE1gXGJUVlxiVkgFbHYEQ2hcYldbBEtlXHRSe1x2XlJcdGFiXHRCWlx0VkFcdEJgXG5kfFxuaHMES2VcdEJlBE9pXHRSe1x0ZFxcBW5CXGJXWlx0ZFpcdFZKBU9zXHR/bQR1UVx2aFoEUUAEUVFcbmZJXGJXWwRCXFwEbGlcbnpVXG5NZARNYFxueFNcYlZWXG5cXH1cdnhEXHR/bVxiVHAESVNcbmN8XHRrVgVpflx0VntcdmhaXHR8YlxiV3RcbkBSXHZvQVx2blVcYldJXHRlYVx0QmBcdGlEXHRjfVx0VHoEQlJcdlFCBU5qXHRDUFx0W0lcYlR2XHRgVwV1Tlx2cGdcdnBnXHZXY1x0aVRcdGJzXHR3TFx0VV9cdGNcXFx0fGhcdkthXHROclx0ZkxcbnF8XG56dVxuelxcXHROclxiVWdcdHxiBG1gXGJUdlxueWRcbnJwXGJXZlx0VVgEQlZcbnprXG5kfVx0d1FcdH1mBENlXHZlZFxiVFdcYlNCXG54VVx0Y25cYlRiXG5lf1x0YVxcXHRTR1xiVXxcbnBWXG5OXFwES25cdm5VXHRBdFx0cERcdl5SXHZJcgRiW1x0UntcdGRFXHZ4RFx2V0tcdldBXGJRTFxiV0AEU3VcYlVkXG5ETVx0UGMEQ0EERGwEb1FcdEhzBXdpBHViXG5/YVxiUXAFT2JcbkxQXGJUbARZW1x2S31cdEFKXGJRfwRuXlx2c0FcYlNNXG5xTVxiV1pcbl5XXHZ6ewRTfFx0ZkRcYlZLXGJUdlxiUHYEQkJcdENQBGRGXHRpZFx2eHMEbXhcdndzXHRjQ1xudENcdHljBU1gXHZXf1xucmhcYlFwXHZ4RARcXG9cbnNJBF9rXG56dQRrRlx0ZkQEWHMEWE9cdGpwXGJUdgRCUwV7Qlx0QnJcbnpRXG5iSVx0Y3sEQkQEQlYFbk9cYlRGXHRjYQVKZFx0ZkxcdFBWXHRJX1xubEsEYG9cdHdYXG5wYVx0Z3VcYlB9BXteXGJXZlxue0lcdEJOXG5wYQRLbFx2cGdcdGNuXHRmTFx2dmgEQ3FcYlRsXHZuVVxiU3EEQ21cdHdSXGJVSlxucGVcbnlkXG5ZZwRDeVx2S1dcdGZEXG5lYQRvUVx0al9cdEJ2BG5NXHZJRFxiVGFcbnpBBXBsXG5dblxiVGFcdFJ7XHRmclxuX3lcYlVnBXtYBWtrXHZ4RAR8SQV4bFxuZnkEQ2VcdndCXG5Ma1x2ZF1cbm9pXG59aFx0UV1cbnBlXGJWdwRIawRPUVxuemtcdEFKXG5wVlxiUHZcbnlcXFx0QXsET2lcYlNCBFhBXHZlRVx0anBcbnF9XHRpRAVxTlx2XlJcdH9tXHRpWlx0QnJcYlZnXG5vaVxuXFxYXHRVX1xuY3xcdkhWXGJUZlx0VG4EXFxOBFxcTlxudUIFbHZcbnl1XHRUZFxiVGZcYlBMXHZdV1x0ZEdcbkFgXG53XlxuZ0lcbnBlXHRkd1xuelxcBWlhXGJXWlx0Y0YESm1cbntaXGJXTwRfawREZgRSUlx0ZFxcXGJWVlx2eHMEQk4FdGkEbG1cdFRkXHRdeVx2SFZcdFNvXHZ8agRYWFx0QXxcdlpeXHZHdVxiVFcFTWAEa0ZcdmhaXHZWS1x0ZEdcdkJsXHRheVxueFUFcUUFbk9cYlZ3XG5xSQRDWFxuZX9cdFBsXGJXT1x2TG1cdGRMBXVIBENtXHRkVARmblx2d0IFa2Fcdm5VXG5ATVxueVRcdEh2XHRcXH0ES2hcdGR+BFloBWt9XG5lUlx0ZFxcXGJXSVx0fGJcdEhLXHRpRFxiVFcFTVlcbnBsXGJRX1x0d3JcdkF4XHRIRVxiVGdcYlNxBXZwXHZiXFxcYldPXG5PbFxuc0lcbmZ5XHZJRFx0XFxjXG57WlxuXn5cbnBlXG5BT1x0VFRcdnh2BGtfXGJXT1x2fGpcdndCXHRReVx0aUBcdFBsXHRIYVx0ZFoFa30EcmFcdFVUXHZKY1x2ZWRcbnBAXHRRTlxuZHxcdGtqXHRIawRNYFxub2lcdHdyXHRkXFxcbmxxXG5vX1xubGJcbkxbXHRhYwRCQgRCSARDbVxucGxcdElRXGJWS1x2eHNcbmBlXHZpS1xucGEET2lcdFVTXGJUcFx0ZkRcblBHBWtrBFhBXG56XFxcbmVnXHZXaFx0d1IFcU5cbnFTXHRjbgRsb1xueFNcbl5XXHRCVVxudH9cdEhFXHRwXFxcdGZGXHRmd1xiVlZcYldAXHRha1x2VksFbHNcdFZKXGJWVlx2ZUUEXFxvXG55WFxuWW0ETWAFbExcbmR8XG56a1x0QXsFc0VcdHdRBFhUXG50f1x0UGxcdF15XHZ3VAV7cARNRFx2YlxcXHRRXQRLalx0Sm5cbkFIXHZSYlx0QlVcdEhLXHRcXGNcbmZJBW1/XG5xTVxuQFJcdFNvXG5vaQRCVFx0SHZcbl95BEtoXHRCWlx0XWlcYlVKXHRWewRTclxuYklcdkdnXHRhX1xiVFJcbmZJXG5mbFx0W0tcdElJBFN8XHZ1V1x0aUlcYldJXG5xSVx2fGoEQlZcYlZnXGJXWgRrRlx2eF1cYlRBXHRhYlx0ZnJcdGlAXHRKZFx0SmRcdnBzXG5BT1xiVGEFeHVcdGlEXG56a1x0fGRcdHxgXGJXW1x0bFBcdGRHXGJWVlx2d31cdnFPXHRpW1xiUX9cYlR6XHZWRlx0d04FdHNcdGR3XGJUdlxuZVNcbmdpXHROcgV5U1xucGVcYlZWXGJTcVxuYG1cdHlqXHRCWlx2V1hcYlNCXHRjXFxcblVSXHRbSlx0Y18Ebk1cYldRXHZBeFxuTWRcdEJyBXVpXHZ4WVxiU01cdldjXHZ8alx2eHNcdH1RXHRCT1xiUExcYldXXHRmTVxuQU9cdFBjXHZlVQRlXlxiVGdcbnFJXHRhY1xiUHZcdGNGBG9RXHRRf1x2aFoFa2FcbnpcXFx0aUtcdEJVXG5ga1x0Q1AEU3wETWBcbntJXHRTewRfT1x0QloEWmkEU2tcdHBzXHRwXFxcbll1XG5dc1xueENcYld0XG5iRFx0a1Zcdkd1BXlTXG5xQVx0W3JcbmVLBE1gXHRkWgVsTFxiVWdcYlRsXG5iRFx0VVNcdmJcXFx0cFZcbmNjBFNcXFx0Y3RcdGB6XGJQTFx2V3NcbkFgXG5lZ1xiU3EFdUUEQ1JcdkRnXHRgV1x2entcdldjBFNrBFNrXHRiV1xiVWdcdGVhXG54Wlx0aUlcdFVYXHRWSlxucW5cdFN7XHZSYlxiVFFcbnBsBUd0XHZ1VwV1alxucEZcbnFJXHRmTFx0W0lcdGlhBFhPXG55dVx2RGdcdmVkXHRxewRWR1xiUX8Fa2FcdFZqXHRrVlx0eEJcbmR8XG5wQFx0UU5cdFBjXHRwcwRdalx0a1ZcdG9VXGJUcFxuelUFbkJcdkJdXHRhe1xiVkBcbl1uBG1gXHRjelx0UnsEbWBcYlFhXHZ3VFxiU00FTVkFcU5cdGRqBX5zXHZRfQVNWVx2TUJcdEJ2XHR3UlxiUmdcdlF9XHRxbFx2S0NcbnJtBXh1BENDXHZ3Qlx2dmhcdEJxBFhxXG5wVlx0aV8FT2IFdUVcbmJkXG5xb1x2e2lcbkN+XHRCTFx2ZUUFdUhcYlZqBEV5BEd6XHZ6Ulx2e2lcdGNmXG57WlxuXW4EWEFcdkd1XHZuVVx0aFNcdkdJXG5DY1x0SEVcYlRBXHRIQgRCSARDalxuQ2NcYlRGXHRIRVxuWElcdEF7XGJRf1x0Y1xcXHZtT1x2V1hcbmZIXG5wQAVNWVxiVEZcbmxLXHRCdFxuelVcdFRUBEttXHZ3VFxucFZcbmR0XHZ5SVx0VnhcdFF/XHRSZ1x0VGRcbnpVXGJSU1xuTE1cdHdBBG5NXHRUblxuZFNcdF1nXG5MY1x2d0JcdH10XHRbSVx0Q1AEa1hcdkZtXHZoWgVtf1x0aVtcbnBAXHZRfVx2V39cdHxkXG5NT1xuTWRcdGZfXHRmRFx0Y0pcdEh6XHZSYlx0aW9cdFB5BFlbXG54VVx0Y3RcdkBAXHR3d1xiUHYEQk0ERkZcbnRiBXZ8XHZLbVx0QnFcdEJxBEtoBGBvXG5aZARYVVx0aV1cdHxgXHRTdARCXFxcYlF/XHZfV1x0VEpcbnFJXHR8YVx0QXtcdnVQBE1EXHRQbFxueFJcdGZMXHZ3c1x0Y3tcdGRcXFxiVmBcbmVnXHRISwVrY1xuZHxcYlZWXG55XFwFa2NcdGldXGJWR1x0YFZcdHNzXHRJX1x0QUVcdGJzXHRkdVxuZWxcdHBEXHZXf1xucXMFbHZcYlNNBFppXHZWSwVpYVx2UUJcdFF/XG57WlxiUHRcdktsXG5sS1xuaHNcbmRTXGJWSwVtZlxuZF5cdGtWXHRjT1xuY3xcYlZIXHRcXF1cYlR2XGJTcVx0bUlcdkRnXHRWSlx0Y25cbnlcXFxiVmdcYlR2XG55WFxiVEZcdF1dXGJUcFxub2lcbmhzXHZlVVxuQmZcdGRqBU1yXG58cFx0XFxnXHRdclxiVmIFe0RcbmRbBFhOXHRmTVx0T1xcBXNfXHRjZlx0aVoEWE5cdldjXHRxdlxuYG1cdFVeBW9EXG5kfFx2R2dcdGRFXHZ3ZgRsbwR1fVxuZHwFb1FcdGBpBE9pXHZ4RFxuZFpcbkN4BFl3XG56a1xudGJcbmd3XHR5alx0QmBcbnlYXHZwc1xudENcdnBQXHZxd1xiUHVcYlBYXHREbVxucHcFTmpcdHNzXHRhR1x2eHNcYlB0XG5vTARHelx0T2tcdGlAXHRpXQRlQ1x0SVFcdGlpXHRkalx2QEpcdHxkBXVoXGJXWlx2ZVVcdm5VXGJUYVx0Y0MEZ11cbnprBFloXGJWS1xuTFVcbnBAXG50YlxudFJcdENqXHZOUFx0aUBcYlB7XG5cXH1cbntjXG53WFx0ZkxcYlZHXHRje1x0fGBcdEFKXHR8Q1x0ZkQFbG5cdHxkXHRic1xucUkFe0JcdkF4XG5wQFxuemtcdlJiBU9zXHZXUwRlXlx2RF9cdEJ2XHZXZFxiVmJcdnhzXHZlRVxiUndcbl1uXG58cFx2Z3xcdGZ3BWtjXGJUSQVrYVxuXFxUBFNwXHRqdVx2cHNcbnBlBXV8XHZHclxiVmVcdENVBF1NBFhVXHZ4RFxiVGFcdElRXHZXcVx0Q1VcdGFtXHRkalxiU28EU3dcdm5VBENoXHRRXQVzX1xiUHRcdGZTXGJUYVx0XFx9XG5ATwRZY1x0VVpcYlR4XG5wZVx2blVcbnpVXHR8fVx0aURcbnpcXFxiU01cdnhEBEJSXG56UVx0UU4EXU0EWWhcbkxQXHZGbVx2TFgFdmNcdnFsBWthXHRIS1xiVmJcbnRDXG5DeVxiVHZcbnVWBG9RXHRgelx0W0lcdEJgXHZSYlx0eWpcdHNiXHZXc1xiVGxcdGtWXHZlZFxuZX8FbExcdnhOXHR/bVxuSm5cdGpZXHZ4RFxiVmJcYlNxXHZ5dVx0d0xcdlhMXGJUQVx0cGdcdEF0XHRuRARYWFx0d1JcbnBsXG5odwV5U1xucHNcdGNPXGJXW1x2fGoEWE5cdHNWXHRwXFxcdEJlXG5iflxuQUpcbl1lBWtgBXFOXHRkd1x0V1ZcdEhFXHZFVgVKelx0aWRcdEJgXHR6aAVFXVx0ZkRcYlRnBXFOXGJUYVx0amEEQ3ZcYlNNXG5oY1xiVWUFdF9cdGllBGddXHR3UVxuUG5cYlZCXHRqd1xiVmdcdmJFXHRCWlx2UkhcYlB7XHRqcFxuXFx9XHRhX1x0Y0NcdHxhXHZEXVx0QlpcdGlbXHRmRFx2eFdcbm9fXHRkXFxcbl9EXG50Ylx0XFxjXHRBSlxubEsEb1EEbG9cdkx4XHZNQFxiV1oES25cdnBnXG5UaVxuSXZcbnxyXHZAfQVKegVMbQVXaAVrfQVsblx2eERcbl1zBGdjXHZwc1x0QnJcYlRXXHZCTQV0WlxuQlkERFdcdGpmXHZTVwRDfVxucW9cdGRFXHRtdlx0SVFcYlBQXGJVYgVsdgRCQ1xuelFcdFtJXHZnbFxuaWdcYlVzBEJUXHZiQ1xiU3FcdHNVXHRpV1xuSm5cdFNZXHRIS1x0cmdcbnBWXHZJRFx2fGoES09cdGBTXHR8YWB2Ym1nbGZtdWpicW5iZ3FqZ2F2cGBicWptamBqbHdqZm5zbHNscXJ2ZmB2Zm13YmZwd2JnbHN2ZmdmbWl2ZmRscGBsbXdxYmZwdy9NbW1sbmFxZndqZm1mbXNmcWVqb25ibWZxYmJuamRscGBqdmdiZ2BmbXdxbGJ2bXJ2ZnN2ZmdmcGdmbXdxbHNxam5mcXNxZmBqbHBmZC9WbWF2Zm1scHVsb3VmcXN2bXdscHBmbmJtYmtiYS9BYmJkbHB3bG12ZnVscHZtamdscGBicW9scGZydmpzbG1qL11scG52YGtscGJvZHZtYmBscXFmbGpuYmRmbXNicXdqcWJxcWphYm5icS9BYmtsbmFxZmZuc29mbHVmcWdiZ2BibmFqbG52YGticGV2ZnFsbXNicGJnbG8vQW1mYnNicWZgZm12ZnVicGB2cXBscGZwd2JhYnJ2amZxbG9qYXFscGB2Ym13bGJgYGZwbG5qZHZmb3VicWpscGB2YndxbHdqZm1mcGRxdnNscHBmcS9NbWZ2cWxzYm5mZ2pscGVxZm13ZmJgZnFgYmdmbi9NcGxlZnF3YmBsYGtmcG5sZ2ZvbGp3Ym9qYm9md3FicGJvZC9WbWBsbnNxYmB2Ym9mcGZ7anB3ZmB2ZnFzbHBqZm1nbHNxZm1wYm9vZmRicXVqYmlmcGdqbWZxbG52cWBqYnNsZ3EvTXN2ZnB3bGdqYnFqbHN2ZmFvbHJ2amZxZm5ibXZmb3NxbHNqbGBxanBqcGBqZnF3bHBmZHZxbG52ZnF3ZmV2Zm13ZmBmcXFicWRxYm1nZmZlZmB3bHNicXdmcG5mZ2pnYnNxbHNqYmxlcWZgZndqZnFxYmYubmJqb3VicWpicGVscW5icGV2d3ZxbGxhaWZ3bHBmZHZqcXFqZnBkbG1scW5icG5qcG5scC9WbWpgbGBibmptbHBqd2pscHFieS9fbWdmYWpnbHNxdmZhYndsb2ZnbHdmbS9BYmlmcC9WcGZwc2ZxbGBsYGptYmxxamRmbXdqZm1nYmBqZm13bGAvTWdqeWtiYW9icXBmcS9BYm9id2ptYmV2ZnF5YmZwd2pvbGR2ZnFxYmZtd3FicS9Fe2p3bG8vX3NmeWJkZm1nYnUvQWdmbGZ1andicXNiZGptYm5md3FscGlidWpmcXNiZ3FmcGUvTWBqb2BiYWZ5Yi9NcWZicHBib2pnYmZtdS9BbGlicy9fbWJhdnBscGFqZm1mcHdme3dscG9vZnVicXN2ZmdibWV2ZnF3ZmBsbi9WbWBvYnBmcGt2bmJtbHdmbWpnbGFqb2FibHZtamdiZ2Zwdy9NcGZnandicWBxZmJnbDxYPFc9Yz1rPW48UjxWPFxcPFY8VDxXPFQ9YT1uPFI8Xj1tPFk8WTxfPFI8Uz1sPFQ9bjxcXDxWPFk9ZTxZPW88WjxZPHY8XFw8VjxdPFk8WzxdPWc8VzxSPFE8VDx+PW08WTxTPFI8WDxBPW48Uj1uPFI8UD1rPFk8UDxRPFk9bjxXPFk9bj1sPFxcPFs8UjxRPFxcPF88WDxZPFA8UTxZPHg8Vz1jPHM9bDxUPFE8XFw9bTxRPFQ9aT1uPFk8UDxWPW48UjxfPFI8WDxePFI9bj1uPFxcPFA8TTxEPHw8UDxcXD1jPEs9bjxSPF48XFw9bTxePFxcPFA8WTxQPW88TjxcXDxWPFg8XjxcXDxRPFxcPFA9YT1uPFQ9YT1uPW88fjxcXDxQPW48WT1pPFM9bDxSPW49bz1uPFE8XFw8WDxYPFE9Yzx+PFI9bj1uPWw8VDxRPFk8VTx+PFxcPW08UTxUPFA9bTxcXDxQPW48Uj1uPWw9bzxdPHI8UTxUPFA8VD1sPFE8WTxZPHI8cjxyPFc8VD1qPWE9bjxcXDxyPFE8XFw8UTxZPFA8WDxSPFA8UDxSPFU8WDxePFk8UjxRPFI9bT1vPFhcZkh5XGZJa1xmSFVcZklkXGZIeVxmSWxcZkhUXGZJa1xmSHlcZkhSXGZIeVxmSWdcZkh4XGZIXFxcZkhGXGZIXFxcZkhEXGZJa1xmSGNcZkh5XGZIeVxmSFNcZkhBXGZJbFxmSGtcZkhUXGZIeVxmSFxcXGZISFxmSWdcZkhVXGZJZ1xmSGpcZkhGXGZIVVxmSWxcZkhDXGZIVVxmSENcZkhSXGZISFxmSHlcZkhJXGZIUmliZHFibVxmSGpcZkhwXGZIcFxmSWdcZkhpXGZIQFxmSEpcZklnXGZIe1xmSGRcZkhwXGZIUlxmSHtcZkhjXGZIVVxmSEJcZkhrXGZIRFxmSFlcZkhVXGZIQ1xmSWtcZkhJXGZJa1xmSElcZklsXGZIdFxmSFxcXGZIcFxmSEBcZkhKXGZJbFxmSHlcZkhkXGZIcFxmSWxcZkhZXGZJa1xmSERcZkhkXGZIRFxmSGNcZkhVXGZIXFxcZkhlXGZIVFxmSEJcZklrXGZIeVxmSEJcZkhZXGZJZ1xmSF5cZklrXGZIVFxmSEBcZkhCXGZIZFxmSEpcZklrXGZIf1xmSFxcXGZIalxmSEJcZkhAXGZIVFxmSEFcZkhcXFxmSEBcZkhEXGZIdlxmSF5cZkhCXGZIRFxmSGpcZkh7XGZIVFxmSWxcZkheXGZJbDRVNWg1ZTRJNWg1ZTVrNFxcNEs0TjRCNF00VTRDNEM0SzVoNWU1azRcXDVrNFk1ZDRdNFY1ZjRdNW80SzVqNWQ1aDRLNEQ1ZjVqNFU0XTRaNFxcNWg1bzVrNWo0SzVmNWQ1aTVuNEs1aDRVNWg1ZjRLNWo0SzVoNW81ajRBNEY1ZTVuNEQ1aDVkNEE0RTRLNEI0XTVtNW40WzRVNEQ0QzRdNW81ajRJNFxcNEs1bzVpNEs0SzRBNEM0STVoNEs1bTVmNWs0RDRVNFo1bzVmNW00RDRBNEc1ZDVpNWo1ZDVrNWQ0TzVqNEs0QDRDNEs1aDVrNEs0XzVoNWk0VTVqNEM1aDVmNF80VTRENF00WTVoNWU1aTVqNFxcNEQ1azRLNE81ajVrNWk0RzVoNW81ajRGNEs1aDRLNEE1ZjRHNWk0WTRdNFg0XTRBNEE1ZDVoNWQ1bTVmNEs0XFw0SzVoNW81aDVpNF00RTRLNWo0RjRLNWg1bTRPNEQ1ZDRCNEs0WTRPNWo0RjRLNWo1azRLNWg1ZjRVNFo1ZDVkNW40QzRLNEQ1ajRCNWY0XTRENWo0RjVoNW81aTRYNEs0TTVkNWs1ZjRLNEQ1ZDVuNFk0WTVkNWk0SzRdNW41aTRPNEE0QzVqNEE1ajRVNEM1aTRdNE81ZjRLNEE0RTVvNEY0RDRDNWQ1ajVmNEA0RDVpNWo1azRGNEE0RjRANWs0RTRfNWo0RTVmNEY1aTVvNF00RTRWNF40RTVqNW00XzRENWY0RjVoNWg1azVoNWo0SzRGNWg1bzVuNWg0RDVoNWk0SzRVNWo1azRPNWQ1aDRYNWY0TTVqNWQ0XTRPNWk0SzVtNWY1bzRENW81aDRcXDRLNEY0XTRGNEQ0RDRPNWo1azVpNF80SzVqNW80RDVmNFU1bTVuNEM0QTRfNWo1aDVrNWk0WDRVNF00TzVrNWg0WDVrNF01bjRbNF00WzVoNERzcWxlam9mcGZxdWpgZmdmZWJ2b3dram5wZm9lZ2Z3YmpvcGBsbXdmbXdwdnNzbHF3cHdicXdmZ25mcHBiZGZwdmBgZnBwZWJwa2psbT93andvZj1gbHZtd3F6YmBgbHZtd2BxZmJ3Zmdwd2xxamZwcWZwdm93cHF2bW1qbWRzcWxgZnBwdHFqd2ptZGxhaWZgd3B1anBqYW9mdGZvYGxuZmJxd2pgb2Z2bWhtbHRtbWZ3dGxxaGBsbnNibXpnem1ibmpgYXFsdHBmcXNxanViYHpzcWxhb2ZuUGZxdWpgZnFmcHNmYHdnanBzb2J6cWZydmZwd3FmcGZxdWZ0ZmFwandma2pwd2xxemVxamZtZ3Bsc3dqbG1wdGxxaGptZHVmcXBqbG1uam9vamxtYGtibW1mb3RqbWdsdC1iZ2dxZnBwdWpwandmZ3RmYndrZnFgbHFxZmB3c3FsZ3Zgd2ZnanFmYHdlbHF0YnFnemx2I2BibXFmbmx1ZmdwdmFpZmB3YGxtd3Fsb2JxYGtqdWZgdnFxZm13cWZiZ2ptZG9qYXFicXpvam5qd2ZnbmJtYmRmcWV2cXdrZnFwdm5uYnF6bmJga2ptZm5qbXZ3ZnBzcWp1YndmYGxtd2Z7d3NxbGRxYm5wbGBqZnd6bXZuYWZxcHRxand3Zm1mbWJhb2Znd3FqZGRmcXBsdnFgZnBvbGJnam1kZm9mbmZtd3NicXdtZnFlam1ib296c2ZxZWZgd25mYm1qbWRwenB3Zm5waGZmc2ptZGB2b3d2cWYlcnZsdzgvaWx2cW1ib3NxbGlmYHdwdnFlYmBmcCVydmx3OGZ7c2pxZnBxZnVqZnRwYWJvYm1gZkZtZG9qcGtAbG13Zm13d2txbHZka1NvZmJwZiNsc2ptamxtYGxtd2Jgd2J1ZnFiZGZzcWpuYnF6dWpvb2JkZlBzYm1qcGtkYm9vZnF6Z2Zgb2ptZm5mZndqbWRuanBwamxtc2xzdm9icXJ2Ym9qd3puZmJwdnFmZGZtZnFib3BzZmBqZnBwZnBwamxtcGZgd2psbXRxandmcXBgbHZtd2Zxam1qd2pib3Fmc2xxd3BlamR2cWZwbmZuYWZxcGtsb2dqbWRnanBzdndmZmJxb2pmcWZ7c3FmcHBnamRqd2Jvc2pgd3ZxZkJtbHdrZnFuYnFxamZnd3FiZWVqYG9mYmdqbWRga2JtZGZnYGZtd3Fib3VqYHdscXpqbmJkZnAscWZicGxtcHB3dmdqZnBlZmJ3dnFmb2pwd2ptZG52cHcjYWZwYGtsbG9wVWZxcGpsbXZwdmJvb3pmc2pwbGdmc29iemptZGRxbHRqbWRsYXVqbHZwbHVmcW9ienNxZnBmbXdiYHdqbG1wPyx2bz0OXHR0cWJzc2ZxYm9xZmJnemBmcXdiam1xZmJvand6cHdscWJkZmJtbHdrZnFnZnBod2xzbGVlZnFmZ3Nid3dmcW12bXZwdmJvR2pkandib2Bic2p3Ym9UZmFwandmZWJqb3ZxZmBsbW1mYHdxZmd2YGZnQm1ncWxqZ2dmYGJnZnBxZmR2b2JxIyVibnM4I2Jtam5ib3BxZm9mYnBmQnZ3bG5id2Rmd3dqbWRuZndrbGdwbWx3a2ptZFNsc3ZvYnFgYnN3amxtb2Z3d2ZxcGBic3d2cWZwYGpmbWBmb2pgZm1wZmBrYm1kZnBGbWRvYm1nPjIlYm5zOEtqcHdscXojPiNtZnQjQGZtd3Fib3ZzZ2J3ZmdQc2ZgamJvTWZ3dGxxaHFmcnZqcWZgbG5uZm13dGJxbWptZEBsb29mZGZ3bGxvYWJxcWZuYmptcGFmYGJ2cGZmb2Zgd2ZnR2Z2d3Bga2VqbWJtYGZ0bHFoZnFwcnZqYGhvemFmd3RmZm1me2Jgd296cGZ3d2ptZGdqcGZicGZQbGBqZnd6dGZic2xtcGZ7a2phanclb3c4Ii4uQGxtd3Fsb2BvYnBwZnBgbHVmcWZnbHZ3b2ptZmJ3d2JgaHBnZnVqYGZwK3RqbWdsdHN2cXNscGZ3andvZj4hTmxham9mI2hqb29qbWRwa2x0am1kSndib2pibWdxbHNzZmdrZmJ1am96ZmVlZmB3cC4yJF4qOFx0YGxtZWpxbkB2cXFmbXdiZ3VibWBmcGticWptZGxzZm1qbWRncWJ0am1kYWpvb2psbWxxZ2ZxZmdEZnFuYm16cWZvYndmZz8sZWxxbj1qbWBvdmdmdGtmd2tmcWdmZWptZmdQYGpmbWBmYGJ3Ym9sZEJxd2pgb2Zhdnd3bG1wb2JxZGZwd3ZtamVscW5pbHZxbWZ6cGpnZmFicUBramBiZGxrbG9qZ2J6RGZtZnFib3NicHBiZGYvJXJ2bHc4Ym1qbmJ3ZmVmZm9qbWRicXFqdWZnc2JwcGptZG1id3ZxYm9xbHZka296LVx0XHRXa2YjYXZ3I21sd2dmbXBqd3pBcWp3YmptQGtqbWZwZm9iYGgjbGV3cWphdndmSnFmb2JtZyEjZ2J3Yi5lYmB3bHFwcWZgZmp1ZndrYncjanBPamFxYnF6a3ZwYWJtZ2ptI2ViYHdiZWVianFwQGticW9mcHFiZ2pgYm9hcWx2ZGt3ZWptZ2ptZG9ibWdqbWQ5b2JtZD4hcWZ3dnFtI29mYmdmcXBzb2JtbWZnc3Fmbmp2bnNiYGhiZGZCbmZxamBiRmdqd2psbV4lcnZsdzhOZnBwYmRmbWZmZyN3bHVib3ZmPiFgbG5zb2Z7b2xsaGptZHB3YndqbG1hZm9qZnVmcG5ib29mcS5ubGFqb2ZxZmBscWdwdGJtdyN3bGhqbWcjbGVFanFmZWx7emx2I2JxZnBqbmpvYnFwd3ZnamZnbmJ7am52bmtmYmdqbWRxYnNqZ296YG9qbmJ3ZmhqbWRnbG5mbmZxZGZnYm5sdm13cGVsdm1nZmdzamxtZmZxZWxxbnZvYmd6bWJwd3prbHQjd2wjUHZzc2xxd3FmdWZtdmZmYGxtbG56UWZwdm93cGFxbHdrZnFwbG9namZxb2JxZGZvemBib29qbWQtJXJ2bHc4QmBgbHZtd0ZndGJxZyNwZmRuZm13UWxhZnF3I2ZlZWxxd3BTYmBqZWpgb2ZicW1mZ3ZzI3Rqd2trZmpka3c5dGYja2J1ZkJtZGZvZnBtYndqbG1wXFxwZmJxYGtic3NvamZnYmBydmpxZm5icHBqdWZkcWJtd2ZnOSNlYm9wZndxZmJ3ZmdhamRkZnB3YWZtZmVqd2dxanVqbWRQd3ZnamZwbmptam52bnNmcWtic3BubHFtam1kcGZvb2ptZGpwI3ZwZmdxZnVmcXBmdWJxamJtdyNxbG9mPiFuanBwam1kYmBramZ1ZnNxbG5sd2Zwd3ZnZm13cGxuZmxtZmZ7d3FmbmZxZnB3bHFmYWx3d2xuOWZ1bG91Zmdib28jd2tmcGp3Zm5ic2ZtZG9qcGt0Ynojd2wjI0J2ZHZwd3B6bmFsb3BAbG5zYm16bmJ3d2ZxcG52cGpgYm9iZGJqbXB3cGZxdWptZH4qKyo4Dlx0c2J6bmZtd3dxbHZhb2ZgbG1gZnN3YGxuc2JxZnNicWZtd3Bzb2J6ZnFwcWZkamxtcG5sbWp3bHEjJCRXa2YjdGptbWptZGZ7c29scWZiZ2Jzd2ZnRGJvb2ZxenNxbGd2YGZiYWpvand6Zm1rYm1gZmBicWZmcXAqLSNXa2YjYGxvb2Zgd1BmYnFgayNibWBqZm13ZntqcHdmZ2VsbHdmcSNrYm1nb2Zxc3FqbXdmZ2BsbXBsb2ZGYnB3ZnFtZntzbHF3cHRqbWdsdHBAa2JtbWZvam9vZmRib21mdndxYm9wdmRkZnB3XFxrZmJnZnFwamRtam1kLWt3bm8hPXBmd3dvZmd0ZnB3ZnFtYGJ2cGptZC50ZmFoandgb2JqbmZnSXZwd2pgZmBrYnN3ZnF1amB3am5wV2tsbmJwI25seWpvb2JzcWxuanBmc2Jxd2pmcGZnandqbG1sdndwamdmOWVib3BmL2t2bWdxZmdMb3puc2pgXFxhdnd3bG1idndrbHFwcWZiYGtmZ2BrcWxtamBnZm5ibWdwcGZgbG1ncHNxbHdmYHdiZ2xzd2Znc3Fmc2JxZm1mandrZnFkcWZid296ZHFmYndmcWx1ZnFib29qbnNxbHVmYGxubmJtZ3BzZmBqYm9wZmJxYGstdGxxcGtqc2V2bWdqbWR3a2x2ZGt3a2pka2Zwd2ptcHdmYmd2d2pvand6cnZicXdmcUB2b3d2cWZ3ZnB3am1kYG9mYnFvemZ7c2xwZmdBcWx0cGZxb2phZnFib34jYGJ3YGtTcWxpZmB3ZntibnNvZmtqZ2YrKjhFb2xxamdiYm1wdGZxcGJvb2x0ZmdGbnNmcWxxZ2ZlZm1wZnBmcWpsdnBlcWZmZ2xuUGZ1ZnFiby5hdnd3bG1FdnF3a2ZxbHZ3I2xlIyI+I212b293cWJqbWZnR2ZtbmJxaHVsamcrMyosYm9vLWlwc3FmdWZtd1FmcnZmcHdQd2Zza2ZtXHRcdFRrZm0jbGFwZnF1Zj8sazE9Dlx0TmxnZnFtI3NxbHVqZ2YhI2Jvdz4hYWxxZ2ZxcC1cdFx0RWxxI1x0XHROYm16I2Jxd2pwd3BzbHRmcWZnc2ZxZWxxbmVqYHdqbG13enNmI2xlbmZnamBib3dqYGhmd3Bsc3NscGZnQGx2bWBqb3Rqd21mcHBpdnB3amBmRGZscWRmI0Fmb2Rqdm4tLS0/LGI9d3Rqd3dmcW1sd2Jhb3p0Ymp3am1kdGJxZWJxZiNMd2tmcSNxYm1oam1kc2txYnBmcG5mbXdqbG1wdnF1anVmcGBrbG9icT8scz0OXHQjQGx2bXdxempkbWxxZmdvbHBwI2xlaXZwdyNicERmbHFkamJwd3FibWRmP2tmYmc9P3B3bHNzZmcyJF4qOA5cdGpwb2JtZ3BtbHdiYW9mYWxxZ2ZxOW9qcHcjbGVgYnFxamZnMjMzLzMzMz8sazA9XHQjcGZ1ZnFib2FmYGxuZnBwZm9mYHcjdGZnZ2ptZDMzLWt3bm9ubG1icWBrbGVlI3drZndmYmBrZnFramRrb3ojYWpsb2xkem9qZWYjbGVscSNmdWZtcWpwZiNsZSVxYnJ2bDhzb3ZwbG1ma3Ztd2ptZCt3a2x2ZGtHbHZkb2JwaWxqbWptZGBqcWBvZnBFbHEjd2tmQm1gamZtd1VqZndtYm51ZmtqYG9mcHZgayNicGBxenB3Ym91Ym92ZiM+VGptZ2x0cGZtaWx6ZmdiI3BuYm9vYnBwdm5mZz9iI2pnPiFlbHFmamRtI0JvbyNxamtsdCN3a2ZHanBzb2J6cWZ3anFmZ2tsdGZ1ZnFramdnZm04YWJ3d29mcHBmZmhqbWRgYmFqbWZ3dGJwI21sd29sbGgjYndgbG1ndmB3ZGZ3I3drZklibXZicXprYnNzZm1wd3ZxbWptZGI5a2x1ZnFMbW9qbWYjRXFmbWBrI29iYGhqbWR3enNqYGJvZnt3cWJgd2ZtZm5qZnBmdWZtI2plZGZtZnFid2dmYGpnZmdicWYjbWx3LHBmYnFga2Fmb2pmZXAuam5iZGY5b2xgYndmZ3B3YndqYC1vbGRqbSE9YGxtdWZxd3VqbG9mbXdmbXdmcWZnZWpxcHchPWBqcWB2andFam1vYm1nYGtmbmpwd3BrZiN0YnAyM3N7OCE9YnAjcHZga2dqdWpnZmc/LHBzYm09dGpvbyNhZm9qbWYjbGViI2RxZmJ3bnpwd2ZxeixqbWdmey1lYm9vam1kZ3ZmI3dsI3Fiam90YnpgbG9vZmRmbmxtcHdmcWdmcGBmbXdqdyN0andrbXZgb2ZicUlmdGpwayNzcWx3ZnB3QXFqd2pwa2VvbHRmcXBzcWZnamB3cWZlbHFucGF2d3dsbSN0a2wjdGJwb2Zgd3ZxZmptcHdibXdwdmpgamdmZGZtZnFqYHNmcWpsZ3BuYnFoZndwUGxgamJvI2VqcGtqbWRgbG5ham1mZHFic2tqYHRqbW1mcXA/YXEjLD0/YXojd2tmI01id3ZxYm9TcWp1YmB6YGxsaGpmcGx2d2BsbmZxZnBsb3VmUHRmZ2pwa2FxamZlb3pTZnFwamJtcGwjbnZga0BmbXd2cXpnZnNqYHdwYGxvdm5tcGtsdnBqbWRwYHFqc3dwbWZ7dyN3bGFmYnFqbWRuYnNzam1kcWZ1anBmZ2lSdmZxeisudGpnd2s5d2p3b2YhPXdsbG93anNQZmB3amxtZ2ZwamRtcFd2cWhqcGt6bHZtZGZxLW5id2BrK34qKyo4XHRcdGF2cW1qbWRsc2ZxYndmZ2ZkcWZmcHBsdnFgZj5RamBrYnFnYG9scGZvenNvYnB3amBmbXdxamZwPyx3cT0OXHRgbG9scTkgdm8jamc+IXNscHBmcHBxbG9vam1kc2t6cGpgcGViam9qbWRme2ZgdndmYGxtd2Zwd29qbWgjd2xHZmVidm93P2FxIyw9XHQ5I3dxdmYvYGticXdmcXdsdnFqcG5gb2JwcGpgc3FsYGZmZ2Z7c29iam0/LGsyPQ5cdGxtb2ptZi08e25vI3Vma2Zvc2ptZGdqYm5sbWd2cGYjd2tmYmpxb2ptZmZtZyMuLj0qLWJ3d3ErcWZiZ2ZxcGtscHdqbWQgZWVlZWVlcWZib2p5ZlVqbWBmbXdwamRtYm9wI3BxYD4hLFNxbGd2YHdnZnBzandmZ2p1ZnFwZndmb29qbWRTdmFvamAja2ZvZyNqbUlscGZzayN3a2Zid3FmYmVlZmB3cD9wd3pvZj1iI29icWRmZ2xmcG0kd29id2ZxLyNGb2ZuZm13ZWJ1amBsbWBxZmJ3bHFLdm1kYnF6Qmpxc2xxd3BmZiN3a2ZwbCN3a2J3Tmpga2Jmb1B6cHdmbnBTcWxkcWJucC8jYm1nIyN0amd3az5mJXJ2bHc4d3FiZ2ptZG9mZXchPVx0c2ZxcGxtcERsb2dmbSNCZWVianFwZHFibm5icWVscW5qbWRnZnB3cWx6amdmYiNsZWBicGYjbGVsb2dmcHcjd2tqcCNqcC1wcWAjPiNgYnF3bGxtcWZkanB3cUBsbm5sbXBOdnBvam5wVGtidyNqcGptI25ibXpuYnFoam1kcWZ1ZmJvcEptZ2ZmZy9mcnZib296LHBrbHRcXGJsdndnbGxxZnBgYnNmK0J2cHdxamJkZm1md2pgcHpwd2ZuL0ptI3drZiNwand3am1kS2YjYm9wbEpwb2JtZ3BCYGJnZm56XHRcblxuPyIuLkdibWpmbyNham1nam1kYW9sYGghPWpuc2xwZmd2d2pvanlmQmFxYmtibitme2Bmc3d4dGpnd2s5c3Z3d2ptZCota3dubyt/fyNYXjhcdEdCV0JYIyloandga2Ztbmx2bXdmZ2Jgd3ZibyNnamJvZmB3bmJqbW96I1xcYW9ibWgkam1wd2Jvb2Z7c2Zxd3BqZSt3enNmSncjYm9wbCVgbHN6OCMhPVdmcW5wYWxxbSNqbUxzd2psbXBmYnB3ZnFtd2JvaGptZGBsbWBmcW1kYmptZmcjbG1kbGptZGl2cHdqZXpgcWp3amBwZWJgd2xxemp3cCNsdG1icHBidm93am11andmZ29icHdqbWRranAjbHRta3FmZT4hLCEjcWZvPiFnZnVmb2xzYGxtYGZxd2dqYmRxYm5nbG9vYnFwYG92cHdmcXNrczxqZz5ib2Bsa2xvKjh+KisqOHZwam1kI2I9P3BzYm09dWZwcGZvcHFmdWp1Ym9CZ2dxZnBwYm5id2Z2cWJtZ3Fsamdib29mZGZnam9vbWZwcHRib2hqbWRgZm13ZnFwcnZib2plem5id2BrZnB2bWplamZnZnt3am1gd0dmZWZtcGZnamZnI2ptXHRcbj8iLi4jYHZwd2xucG9qbWhqbWRPand3b2YjQWxsaCNsZWZ1Zm1qbWRuam0taXA8YnFmI3drZmhsbXdiaHd3bGdieiRwLWt3bm8hI3dicWRmdz50ZmJxam1kQm9vI1FqZDhcdH4qKyo4cWJqcGptZCNCb3BsLyNgcXZgamJvYmFsdnchPWdmYG9icWYuLj1cdD9wYGVqcWZlbHticCNudmBrYnNzb2pmcGptZ2Z7LyNwLyNhdncjd3pzZiM+I1x0Dlx0PyIuLndsdGJxZ3BRZmBscWdwU3FqdWJ3ZkVscWZqZG1TcWZuamZxYGtsamBmcFVqcXd2Ym9xZnd2cW1wQGxubmZtd1NsdGZxZmdqbW9qbWY4c2x1ZnF3emBrYm5hZnFPanVqbWQjdWxvdm5mcEJtd2tsbXpvbGRqbSEjUWZvYndmZ0ZgbG1sbnpxZmJga2ZwYHZ3d2ptZGRxYnVqd3pvamVmI2ptQGtic3dmcS5wa2JnbHRNbHdiYW9mPyx3Zz0OXHQjcWZ3dnFtcHdiZ2p2bnRqZ2Rmd3B1YnF6am1kd3FidWZvcGtmb2cjYXp0a2wjYnFmdGxxaCNqbWViYHZvd3pibWR2b2JxdGtsI2tiZ2JqcXNscXd3bHRtI2xlXHRcdFBsbmYjJGBvamBoJGBrYnFkZnBoZnp0bHFnancjdGpvb2Bqd3ojbGUrd2tqcCo4Qm1ncWZ0I3ZtanJ2ZiNga2ZgaGZnbHEjbmxxZjAzM3N7OCNxZnd2cW04cXBqbG0+IXNvdmRqbXB0andram0ja2ZxcGZvZVB3YndqbG1FZmdmcWJvdWZtd3ZxZnN2YW9qcGtwZm13I3dsd2ZtcGpsbWJgd3FmcHBgbG5mI3dsZWptZGZxcEd2aGYjbGVzZmxzb2YvZntzb2xqd3RrYncjanBrYnFubG16YiNuYmlscSE5IWt3d3NqbSNranAjbmZtdiE9XHRubG13a296bGVlamBmcWBsdm1gam9kYmptam1kZnVmbSNqbVB2bm5icXpnYndmI2xlb2x6Ym93emVqd21mcHBibWcjdGJwZm5zZnFscXB2c3FmbmZQZmBsbWcja2ZicWptZFF2cHBqYm1vbG1kZnB3Qm9hZnF3Ym9id2ZxYm9wZncjbGUjcG5ib28hPS1ic3NmbWdnbCN0andrZWZnZnFib2FibWgjbGVhZm1mYndrR2Zwc2p3ZkBic2p3Ym9kcWx2bWdwKi8jYm1nI3NmcWBmbXdqdyNlcWxuYG9scGptZGBsbXdiam1KbXB3ZmJnZWpld2ZmbWJwI3Rmb28temJrbGwtcWZwc2xtZ2VqZGt3ZnFsYXBgdnFmcWZlb2Zgd2xxZGJtamA+I05id2stZmdqd2ptZGxtb2ptZiNzYmdnam1kYiN0a2xvZmxtZnFxbHF6ZmJxI2xlZm1nI2xlI2FicXFqZnF0a2ZtI2p3a2ZiZ2ZxI2tsbmYjbGVxZnB2bmZncWZtYm5mZ3B3cWxtZD1rZmJ3am1kcWZ3YmptcGBvbHZnZXF0YnojbGUjTmJxYGsjMmhtbHRqbWRqbSNzYnF3QWZ3dGZmbW9mcHBsbXBgb2xwZnB3dWpxd3Zib29qbWhwIT1gcWxwcGZnRk1HIy4uPWVibmx2cCNidGJxZ2ZnT2pgZm1wZktmYm93ayNlYmpxb3ojdGZib3drem5qbWpuYm9CZXFqYGJtYGxuc2Z3Zm9iYWZvIT1wam1kam1kZWJxbmZxcEFxYnBqbypnanBgdnBwcWZzb2JgZkRxZmRscXplbG13I2Bsc3ZxcHZmZ2Jzc2ZicXBuYmhmI3ZzcWx2bWdmZ2Fsd2sjbGVhb2xgaGZncGJ0I3drZmxlZWpgZnBgbG9sdnFwamUrZ2xgdnRrZm0ja2ZmbWVscWBmc3ZwaytldkJ2ZHZwdyNWV0UuOyE9RWJtd2JwemptI25scHdqbWl2cWZnVnB2Ym9vemVicW5qbWRgb2xwdnFmbGFpZmB3I2dmZWZtYGZ2cGYjbGUjTmZnamBibz9hbGd6PVx0ZnVqZ2Ztd2FmI3ZwZmdoZnpAbGdmcGp7d2ZmbUpwb2JuamAgMzMzMzMzZm13anFmI3RqZ2ZveiNiYHdqdWYjK3d6c2ZsZWxtZiNgYm1gbG9scSM+cHNmYmhmcWZ7d2ZtZ3BTa3pwamBwd2ZxcWJqbT93YWxnej1ldm1mcWJvdWpmdGptZG5qZ2dvZiNgcWpgaGZ3c3Fsc2tmd3BramV3ZmdnbGB3bHFwUXZwcGZvbyN3YnFkZndgbG5zYmB3Ym9kZmFxYnBsYGpiby5hdm9oI2xlbmJtI2JtZz8sd2c9XHQja2Yjb2ZldyotdWJvKyplYm9wZio4b2xkamBib2FibWhqbWRrbG5mI3dsbWJuam1kI0JxanlsbWJgcWZnandwKjhcdH4qOFx0ZWx2bWdmcWptI3d2cW1AbG9vam1wYWZlbHFmI0F2dyN3a2Zga2JxZGZnV2p3b2YhPUBic3diam1wc2Zvb2ZnZGxnZ2ZwcFdiZCMuLj1CZ2dqbWQ5YXZ3I3RicFFmYGZtdyNzYndqZm13YWJgaCNqbT5lYm9wZiVPam1gbG9tdGYjaG1sdEBsdm13ZnFJdmdianBucGBxanN3I2Jvd2ZxZmckXio4XHQjI2ticCN3a2Z2bWBvZmJxRnVmbXckL2Fsd2sjam1tbHcjYm9vXHRcdD8iLi4jc29iYGptZGticWcjd2wjYGZtd2ZxcGxxdyNsZWBvamZtd3Bwd3FmZndwQWZxbWJxZ2JwcGZxd3B3Zm1nI3dsZWJtd2JwemdsdG0jam1rYnFhbHZxRXFmZmdsbmlmdGZvcXosYmFsdnctLXBmYnFga29mZGZtZ3BqcCNuYmdmbmxnZnFtI2xtb3ojbG1sbW96I3dsam5iZGYhI29qbWZicSNzYmptd2ZxYm1nI21sd3FicWZveiNiYHFsbXpuZ2ZvanVmcXBrbHF3ZnEzMyVibnM4YnAjbmJtenRqZ3drPiEsKSM/IlhAd2p3b2YjPmxlI3drZiNvbHRmcHcjc2pgaGZnI2ZwYGJzZmd2cGZwI2xlc2Zsc29mcCNTdmFvamBOYnd3a2Z0d2Jgd2pgcGdibmJkZmd0YnojZWxxb2J0cCNsZWZicHojd2wjdGptZ2x0cHdxbG1kIyNwam5zb2Z+YGJ3YGsrcGZ1Zm13a2ptZWxhbHt0Zm13I3dsc2JqbXdmZ2Bqd2p5Zm1KI2dsbSR3cWZ3cWZidy0jUGxuZiN0dC0hKjhcdGFsbmFqbWRuYmpvd2w5bmJnZiNqbS0jTmJteiNgYnFxamZwf394fjh0anRscWgjbGVwem1sbXpuZ2ZlZmJ3cGVidWxxZmdsc3dqYGJvc2JkZldxYnZtb2ZwcCNwZm1nam1kb2ZldyE9P2BsblBgbHFCb28jd2tmaVJ2ZnF6LXdsdnFqcHdAb2JwcGpgZWJvcGYhI1Rqb2tmb25wdmF2cWFwZGZtdmptZmFqcGtsc3AtcHNvancrZG9sYWJvI2Vsb29sdHBhbGd6I2xlbWxuam1ib0BsbXdiYHdwZmB2b2Jxb2ZldyN3bGBramZlb3oua2pnZ2ZtLmFibW1mcT8sb2o9XHRcdC0jVGtmbSNqbSNhbHdrZ2pwbmpwcEZ7c29scWZib3RienAjdWpiI3drZnBzYi9dbG90Zm9lYnFmcXZvam1kI2JxcWJtZGZgYnN3Ympta2pwI3BsbXF2b2YjbGVrZiN3bGxoandwZm9lLz4zJWJuczgrYGJvb2ZncGJuc29mcHdsI25iaGZgbG4sc2JkTmJxd2ptI0hmbW1mZ3piYGBmc3dwZXZvbyNsZWtibWdvZmdBZnBqZ2ZwLCwuLj0/LGJhb2Yjd2x3YnFkZndwZnBwZm1gZmtqbiN3bCNqd3AjYXojYGxubmxtLW5qbWZxYm93bCN3YmhmdGJ6cCN3bHAtbHFkLG9iZ3VqcGZnc2ZtYm93enBqbnNvZjlqZSN3a2Z6T2Z3d2ZxcGIjcGtscXdLZnFhZnF3cHdxamhmcCNkcWx2c3Atb2ZtZHdrZW9qZGt3cGx1ZnFvYnNwb2x0b3ojb2ZwcGZxI3BsYGpibyM/LHM9XHRcblxuancjam13bHFibWhmZyNxYndmI2xldm89Dlx0IyNid3dmbnN3c2JqcSNsZW5iaGYjandIbG13Ymh3Qm13bG1qbGtidWptZCNxYndqbWRwI2Jgd2p1ZnB3cWZibnB3cWJzc2ZnISotYHBwK2tscHdqb2ZvZmJnI3dsb2p3d29mI2RxbHZzcC9TamB3dnFmLi49Dlx0Dlx0I3FsdHA+ISNsYWlmYHdqbXVmcXBmP2VsbHdmcUB2cHdsblU9P18scGBxcGxvdWptZEBrYm5hZnFwb2J1ZnF6dGx2bWdmZ3RrZnFmYnAiPiMkdm1nZWxxI2Jvb3NicXdveiMucWpka3c5QnFiYWpibWFiYGhmZyNgZm13dnF6dm1qdyNsZW5sYWpvZi5GdnFsc2YvanAja2xuZnFqcGgjbGVnZnBqcWZnQG9qbXdsbWBscHcjbGViZGYjbGUjYWZgbG5mI21sbWYjbGVzJXJ2bHc4TmpnZ29mI2ZiZyQqWDNAcWp3amBwcHd2Z2pscD0lYGxzejhkcWx2cyE9YnBwZm5hb25iaGptZCNzcWZwcGZndGpnZGZ3LXNwOSEjPCNxZmF2am93YXojcGxuZkVscW5mcSNmZ2p3bHFwZ2ZvYnpmZ0BibWxtamBrYmcjd2tmc3Zwa2ptZGBvYnBwPiFhdncjYnFmc2Jxd2pib0FiYXpvbG1hbHd3bG4jYGJxcWpmcUBsbm5ibWdqd3AjdnBmQnAjdGp3a2BsdnFwZnBiI3dranFnZ2ZtbHdmcGJvcGwjam1LbHZwd2xtMTNzezghPWJgYHZwZmdnbHZhb2YjZGxibyNsZUVibmx2cCMqLWFqbWcrc3FqZnB3cCNMbW9qbWZqbSNJdm96cHcjKCMhZGBsbXB2b3dnZmBqbmJva2Zvc2V2b3FmdWp1ZmdqcCN1ZnF6cSQoJGpzd29scGptZCNlZm5ib2ZwanAjYm9wbHB3cWptZHBnYnpwI2xlYnFxanVib2V2d3ZxZiM/bGFpZmB3ZWxxYGptZFB3cWptZCshIyw9XHRcblxua2ZxZiNqcGZtYGxnZmctIyNXa2YjYWJvb2xsbWdsbWYjYXosYGxubmxtYWRgbG9scW9idCNsZSNKbWdqYm1iYnVsamdmZ2F2dyN3a2Yxc3sjMHN7aXJ2ZnF6LWJld2ZxI2JzbG9qYHotbmZtI2JtZ2VsbHdmcS4+I3dxdmY4ZWxxI3ZwZnBgcWZmbS1KbWdqYm0jam5iZGYjPmVibmpvei9rd3dzOSwsIyVtYXBzOGdxanVmcXBmd2ZxbWJvcGJuZiNicG1sd2pgZmd1amZ0ZnFwfiorKjhcdCNqcCNubHFmcGZicGxtcGVscW5mcSN3a2YjbWZ0anAjaXZwd2BsbXBmbXcjUGZicWBrdGJwI3drZnRreiN3a2Zwa2pzc2ZnYXE9P2FxPXRqZ3drOSNrZmpka3c+bmJnZiNsZWB2anBqbWZqcCN3a2J3YiN1ZnF6I0JnbmpxYm8jZWp7Zmc4bWxxbmJvI05qcHBqbG1TcWZwcC8jbG13YnFqbGBrYnFwZnd3cXojd2wjam11YmdmZz4hd3F2ZiFwc2Jgam1kanAjbmxwd2IjbmxxZiN3bHdib296ZWJvbyNsZX4qOA5cdCMjam5uZm1wZndqbmYjam1wZncjbHZ3cGJ3anBlendsI2VqbWdnbHRtI3dsb2x3I2xlI1NvYnpmcXBqbSNJdm1mcnZibXd2bm1sdyN3a2Z3am5mI3dsZ2pwd2Jtd0VqbW1qcGtwcWAjPiMrcGptZG9mI2tmb3MjbGVEZnFuYm0jb2J0I2JtZ29iYWZvZmdlbHFmcHdwYGxsaGptZHBzYmBmIT1rZmJnZnEudGZvbyNicFB3Ym1vZnphcWpnZGZwLGRvbGFib0BxbGJ3amIjQmFsdncjWDNeOFx0IyNqdy8jYm1nZHFsdnNmZ2Fmam1kI2IqeHdrcWx0a2YjbmJnZm9qZGt3ZnFmd2tqYGJvRUVFRUVFIWFsd3dsbiFvamhmI2IjZm5zb2x6cG9qdWYjam1icCNwZmZtc3FqbXdmcW5scHcjbGV2YS5vam1ocWZpZmB3cGJtZyN2cGZqbmJkZiE9cHZgYGZmZ2VmZmdqbWRNdmBvZmJxam1lbHFuYndsI2tmb3NUbG5mbSRwTWZqd2tmcU5me2pgYm1zcWx3ZmptP3diYW9mI2F6I25ibXprZmJvd2t6b2J0cHZqd2dmdWpwZmctc3Zwayt4cGZvb2ZxcHBqbnNveiNXa3FsdmRrLWBsbGhqZiNKbmJkZitsb2dmcSE9dnAtaXAhPSNQam1gZiN2bWp1ZnFwb2JxZGZxI2xzZm0jd2wiLi4jZm1nb2pmcCNqbSReKjgOXHQjI25icWhmd3RrbCNqcCMrIUdMTkBsbmJtYmRmZ2xtZiNlbHF3enNmbGUjSGptZGdsbnNxbGVqd3BzcWxzbHBmd2wjcGtsdGBmbXdmcThuYmdmI2p3Z3FmcHBmZ3RmcWYjam1uant3dnFmc3FmYGpwZmJxanBqbWRwcWAjPiMkbmJoZiNiI3BmYHZxZmdBYnN3anB3dWx3am1kI1x0XG5cbnVicSNOYnFgayMxZHFmdCN2c0Bvam5id2YtcWZubHVmcGhqb29mZ3RieiN3a2Y/LGtmYmc9ZWJgZiNsZWJgd2ptZCNxamRrdyE9d2wjdGxxaHFmZ3ZgZnBrYnAja2JnZnFmYHdmZ3BrbHQrKjhiYHdqbG0+YWxsaCNsZWJtI2JxZmI+PiMha3d3P2tmYmdmcVx0P2t3bm89YGxtZWxxbmViYGptZCNgbGxoamYtcWZveiNsbWtscHdmZyMtYHZwd2xua2YjdGZtd2F2dyNlbHFwc3FmYmcjRWJuam96I2IjbmZibXBsdncjd2tmZWxxdm5wLWVsbHdiZGYhPU5sYWpvQG9mbmZtd3AhI2pnPiFicCNramRram13Zm1wZi4uPT8iLi5lZm5ib2YjanAjcGZmbWpuc29qZmdwZncjd2tmYiNwd2J3ZmJtZyNranBlYnB3ZnB3YWZwamdmcGF2d3dsbVxcYWx2bWdmZyE9P2puZCNKbWVsYWx7ZnVmbXdwL2Ijemx2bWRibWcjYnFmTWJ3anVmI2BrZmJzZnFXam5mbHZ3Ym1nI2ticGZtZGptZnB0bG0jd2tmK25scHdvenFqZGt3OSNlam1nI2IjLmFsd3dsblNxam1gZiNicWZiI2xlbmxxZiNsZXBmYnFga1xcbWJ3dnFmL29mZGJvb3pzZnFqbGcvb2JtZyNsZWxxI3Rqd2tqbWd2YGZnc3FsdWptZG5qcHBqb2ZvbGBib296QmRiam1wd3drZiN0YnpoJXJ2bHc4c3s4IT0OXHRzdnBrZmcjYmFibWdsbW12bmZxYm9AZnF3YmptSm0jd2tqcG5scWYjam1scSNwbG5mbWJuZiNqcGJtZy8jam1gcWx0bWZnSlBBTSMzLmBxZmJ3ZnBMYHdsYWZxbmJ6I21sd2BmbXdmcSNvYndmI2ptR2ZlZm1gZmZtYmB3Zmd0anBrI3dsYXFsYmdvemBsbG9qbWRsbW9sYmc+anctI1drZnFmYGx1ZnFOZm5hZnFwa2ZqZGt3I2JwcHZuZnA/a3dubz1cdHNmbHNvZi1qbSNsbWYjPnRqbWdsdGVsbHdmcVxcYiNkbGxnI3FmaG9ibmJsd2tmcXAvd2wjd2tqcFxcYGxsaGpmc2JtZm8hPU9sbWdsbS9nZmVqbWZwYHF2cGtmZ2Fic3dqcG5gbGJwd2JvcHdid3ZwI3dqd29mISNubHVmI3dsb2xwdyNqbWFmd3dmcSNqbnNvamZwcWp1Ym9xenBmcXVmcXAjUHpwd2ZuU2Zxa2JzcGZwI2JtZyNgbG13Zm1nZW9sdGptZG9icHdmZyNxanBmI2ptRGZtZnBqcHVqZnQjbGVxanBqbWQjcGZmbiN3bGF2dyNqbSNhYmBoam1ka2YjdGpvb2RqdWZtI2JkanVqbWQjYGp3amZwLWVvbHQjbGUjT2J3ZnEjYm9vI2F2d0tqZGt0YnpsbW96I2F6cGpkbSNsZWtmI2dsZnBnamVlZnFwYWJ3d2ZxeiVibnM4b2Jwam1kb2Zwd2txZmJ3cGptd2ZkZnF3YmhmI2xtcWZldnBmZ2Bib29mZyM+VlAlYm5zUGZmI3drZm1id2p1ZnBheiN3a2pwcHpwd2ZuLWtmYmcjbGU5a2x1ZnEvb2ZwYWpibXB2cW1ibmZibWcjYm9vYGxubmxtLGtmYmdmcVxcXFxzYnFibnBLYnF1YnFnLHNqe2ZvLXFmbmx1Ym9wbCNvbG1kcWxvZiNsZWlsam13b3pwaHpwYHFiVm1qYGxnZmFxIyw9Dlx0QndvYm13Ym12YG9mdnBAbHZtd3ovc3ZxZm96I2Bsdm13IT1mYnBqb3ojYXZqb2cjYmxtYG9qYGhiI2RqdWZtc2xqbXdmcWslcnZsdzhmdWZtd3AjZm9wZiN4XHRnandqbG1wbWx0I3drZi8jdGp3ayNuYm0jdGtsbHFkLFRmYWxtZiNibWdgYnVib3F6S2YjZ2pmZ3BmYnd3b2YzMy8zMzMjeHRqbWdsdGtidWYjd2xqZSt0am1nYm1nI2p3cHBsb2ZveiNuJXJ2bHc4cWZtZnRmZ0dmd3FsandibmxtZHB3Zmp3a2ZxI3drZm4jam1QZm1id2xxVnA/LGI9P0hqbWQjbGVFcWJtYGpwLnNxbGd2YGtmI3ZwZmdicXcjYm1na2puI2JtZ3ZwZmcjYXpwYGxxam1kYncja2xuZndsI2tidWZxZm9id2ZwamFqb2p3emViYHdqbG1BdmVlYm9sb2ptaCE9P3RrYncja2ZlcWZmI3dsQGp3eiNsZWBsbmYjam1wZmB3bHFwYGx2bXdmZ2xtZiNnYnptZnF1bHZwcHJ2YnFmI344amUrZGxqbSN0a2J3am5kISNib2pwI2xtb3pwZmJxYGssd3ZmcGdiem9sbHBmb3pQbG9sbmxtcGZ7dmJvIy4jP2Ija3FuZmdqdm4hR0wjTUxXI0VxYm1gZi90andrI2IjdGJxI2JtZ3BmYGxtZyN3YmhmI2IjPQ5cdA5cdA5cdG5icWhmdy1ramRrdGJ6Z2xtZiNqbWB3anVqd3ohb2JwdyE9bGFvamRmZ3FqcGYjd2whdm1nZmVqbmJnZiN3bCNGYnFveiNzcWJqcGZnam0jandwI2VscSNranBid2tvZndmSXZzandmcVpia2xsIiN3ZnFuZmcjcGwjbmJtenFmYm9veiNwLSNXa2YjYiN0bG5ibTx1Ym92Zj5nanFmYHcjcWpka3chI2FqYHpgb2ZiYGptZD4hZ2J6I2JtZ3B3YndqbWRRYndrZnEva2pka2ZxI0xlZWpgZiNicWYjbWx0d2puZnAvI3RrZm0jYiNzYnojZWxxbG0jd2tqcC5vam1oIT04YWxxZ2ZxYnFsdm1nI2JtbXZibyN3a2YjTWZ0c3Z3I3drZi1gbG4hI3diaGptI3dsYiNhcWpmZStqbSN3a2ZkcWx2c3AtOCN0amd3a2ZteXpuZnBwam5zb2Yjam0jb2J3ZnhxZnd2cW13a2ZxYnN6YiNzbGptd2FibW1qbWRqbWhwIT1cdCsqOCEjcWZiI3NvYmBmX3YzMzBAYmJhbHZ3I2J3cT0OXHRcblxuYGBsdm13I2RqdWZwI2I/UEBRSlNXUWJqb3RiendrZm5mcCx3bGxvYWx7QXpKZyshe2t2bmJtcC90Yndga2Zwam0jcGxuZiNqZSMrdGpgbG5qbWQjZWxxbmJ3cCNWbWdmcSNhdncja2Jwa2JtZ2ZnI25iZ2YjYXp3a2JtI2ptZWZicSNsZWdmbWx3ZmcsamVxYm5mb2ZldyNqbXVsb3diZGZqbSNmYmBrYiVydmx3OGFicGYjbGVKbSNuYm16dm1nZnFkbHFmZGpuZnBiYHdqbG0jPyxzPQ5cdD92cHdsblViOCVkdzg/LGpuc2xxd3BscSN3a2J3bmxwd296IyVibnM4cWYjcGp5Zj4hPyxiPT8sa2IjYG9icHBzYnBwanVmS2xwdyM+I1RrZndrZnFlZnF3am9mVWJxamx2cD5YXjgrZXZgYm5mcWJwLD0/LHdnPWJgd3AjYnBKbSNwbG5mPQ5cdA5cdD8ibHFkYm1qcCM/YXEjLD1BZmppam1kYGJ3Ym8vTGdmdndwYGtmdnFsc2Z2ZnZwaGJxYmRiZmpvZGZwdWZtcGhiZnBzYi9dYm5mbXBiaWZ2cHZicWpsd3FiYWJpbG4vRXtqYGxzL01kam1icGpmbnNxZnBqcHdmbmJsYHd2YXFmZ3ZxYm13ZmIvXWJnanFmbnNxZnBibmxuZm13bG12ZnB3cWxzcWpuZnFid3FidS9FcGRxYmBqYnBtdmZwd3Fic3FsYGZwbGZwd2JnbHBgYm9qZ2Jnc2ZxcGxtYm0vVm5mcWxiYHZmcWdsbi9WcGpgYm5qZm5hcWxsZWZxd2JwYm9kdm1scHNiL0FwZnBmaWZuc29sZ2ZxZmBrbGJnZm4vTXBzcWp1YmdsYmRxZmRicWZtb2JgZnBzbHBqYW9ma2x3Zm9mcHBmdWpvb2JzcWpuZnFsL1Zvd2pubGZ1Zm13bHBicWBranVsYHZvd3ZxYm52aWZxZnBmbXdxYmdiYm12bWBqbGZuYWJxZGxuZnFgYmdsZHFibWdmcGZwd3ZnamxuZmlscWZwZWZhcWZxbGdqcGYvXWx3dnFqcG5sYC9fZ2pkbHNscXdiZ2JmcHNiYGpsZWJuam9qYmJtd2xtamxzZnFuandmZHZicWdicWJvZHZtYnBzcWZgamxwYm9kdmpmbXBmbXdqZ2x1anBqd2Jwdy9Bd3ZvbGBsbWxgZnFwZmR2bWdsYGxtcGZpbGVxYm1gamJuam12d2xwcGZkdm1nYndmbWZubHBmZWZgd2xwbi9Nb2JkYnBmcGovX21xZnVqcHdiZHFibWJnYmBsbnNxYnFqbWRxZnBsZGJxYC9BYmJgYGovX21mYHZiZ2xxcnZqZm1mcGptYG92cGxnZmFmcS9NbmJ3ZnFqYmtsbmFxZnBudmZwd3Fic2xncS9BYm5iL11ibWIvVm93am5iZnB3Ym5scGxlamBqYm93Ym5hamZtbWptZC9WbXBib3ZnbHBzbGdmbmxwbmZpbHFicXNscGp3amxtYXZwam1mcHBrbG5mc2JkZnBmYHZxand6b2JtZHZiZGZwd2JtZ2JxZ2BibnNiamRtZWZid3ZxZnBgYndmZGxxemZ7d2ZxbWJvYGtqb2dxZm1xZnBmcXVmZ3FmcGZicWBrZntga2JtZGZlYnVscWp3ZndmbnNvYndmbmpvandicXpqbWd2cHdxenBmcXVqYGZwbmJ3ZnFqYm9zcWxndmB3cHkuam1nZns5YGxubmZtd3BwbGV3dGJxZmBsbnNvZndmYGJvZm1nYnFzb2J3ZWxxbmJxd2pgb2ZwcWZydmpxZmdubHVmbmZtd3J2ZnB3amxtYXZqb2dqbWRzbG9qd2pgcHNscHBqYW9mcWZvamRqbG1za3pwamBib2VmZmdhYmBocWZkanB3ZnFzamB3dnFmcGdqcGJhb2Znc3Fsd2xgbG9idmdqZm1gZnBmd3dqbWRwYmB3anVqd3pmb2ZuZm13cG9mYnFtam1kYm16d2tqbWRiYXB3cWJgd3NxbGRxZnBwbHVmcXVqZnRuYmRieWptZmZgbG1sbmpgd3Fiam1qbWRzcWZwcHZxZnVicWpsdnAjP3B3cWxtZD1zcWxzZnF3enBrbHNzam1kd2xkZndrZnFiZ3VibWBmZ2Fma2J1amxxZ2x0bW9sYmdlZmJ3dnFmZ2VsbHdhYm9vcGZvZmB3ZmdPYm1kdmJkZmdqcHdibWBmcWZuZm5hZnF3cWJgaGptZHNicHB0bHFnbmxnamVqZmdwd3ZnZm13cGdqcWZgd296ZWpka3dqbWRtbHF3a2ZxbWdid2JhYnBmZWZwd2p1Ym9hcWZiaGptZG9sYGJ3amxtam13ZnFtZndncWxzZ2x0bXNxYmB3amBmZnVqZ2ZtYGZldm1gd2psbW5icXFqYmRmcWZwc2xtcGZzcWxhb2ZucG1mZGJ3anVmc3FsZHFibnBibWJvenBqcHFmb2ZicGZnYWJtbWZxIT1zdnFga2JwZnNsb2pgamZwcWZkamxtYm9gcWZid2p1ZmJxZHZuZm13YWxsaG5icWhxZmVmcXFmcWBrZm5qYGJvZ2p1anBqbG1gYm9vYWJgaHBmc2JxYndmc3FsaWZgd3BgbG1lb2pgd2ticWd0YnFmam13ZnFmcHdnZm9qdWZxem5sdm13YmptbGF3YmptZmc+I2Vib3BmOGVscSt1YnEjYmBgZnN3ZmdgYnNiYGp3emBsbnN2d2ZxamdmbXdqd3pianFgcWJld2Zuc29semZnc3Fsc2xwZmdnbG5mcHdqYGptYG92Z2Zwc3FsdWpnZmdrbHBzandib3VmcXdqYGJvYGxvb2JzcGZic3NxbGJga3NicXdtZnFwb2xkbCE9P2JnYnZka3dmcWJ2d2tscSEjYHZvd3ZxYm9lYm5qb2pmcCxqbmJkZnAsYnBwZm5hb3pzbHRmcWV2b3dmYmBram1kZWptanBrZmdnanB3cWpgd2BxandqYGJvYGRqLmFqbSxzdnFzbHBmcHFmcnZqcWZwZm9mYHdqbG1hZmBsbmptZHNxbHVqZ2ZwYmBiZ2ZuamBme2ZxYGpwZmJgd3Zib296bmZnamBqbWZgbG1wd2Jtd2JgYGpnZm13TmJkYnlqbWZnbGB2bmZtd3B3YnF3am1kYWx3d2xuIT1sYXBmcXVmZzkjJXJ2bHc4Znt3Zm1nZmdzcWZ1amx2cFBsZXd0YnFmYHZwd2xuZnFnZmBqcGpsbXB3cWZtZHdrZ2Z3YmpvZmdwb2pka3dvenNvYm1tam1kd2Z7d2JxZmJgdnFxZm1gemZ1ZnF6bG1mcHdxYmpka3d3cWJtcGVmcXNscGp3anVmc3FsZ3ZgZmdrZnFqd2JkZnBranNzam1kYmFwbG92d2ZxZmBmanVmZ3Fmb2Z1Ym13YXZ3d2xtISN1amxvZm1gZmJtenRrZnFmYWZtZmVqd3BvYnZtYGtmZ3FmYGZtd296Ym9vamJtYGZlbG9vbHRmZ252b3dqc29mYXZvb2Z3am1qbWBvdmdmZ2xgYHZxcWZnam13ZnFtYm9cJyt3a2pwKi1xZnN2YW9qYD0/d3E9P3dnYGxtZHFmcHBxZmBscWdmZ3Zvd2puYndmcGxvdndqbG0/dm8jamc+IWdqcGBsdWZxS2xuZj8sYj10ZmFwandmcG1md3RscWhwYm93a2x2ZGtmbXdqcWZvem5mbmxxamJvbmZwcGJkZnBgbG13am12ZmJgd2p1ZiE9cGxuZnRrYnd1amB3bHFqYlRmcHdmcW0jI3dqd29mPiFPbGBid2psbWBsbXdxYmB3dWpwandscXBHbHRtb2xiZ3Rqd2tsdncjcWpka3chPVx0bmZicHZxZnB0amd3ayM+I3VicWpiYW9mam11bG91Zmd1anFkam1qYm1scW5ib296a2Jzc2ZtZmdiYGBsdm13cHB3Ym1nam1kbWJ3amxtYm9RZmRqcHdmcXNxZnNicWZnYGxtd3Fsb3BiYGB2cWJ3ZmFqcXdrZ2J6cHdxYndmZHpsZWVqYGpib2RxYnNramBwYHFqbmptYm9zbHBwamFvemBsbXB2bmZxU2ZxcGxtYm9wc2ZiaGptZHVib2pnYndmYmBramZ1ZmctaXNkISMsPW5iYGtqbWZwPyxrMT1cdCMjaGZ6dGxxZ3BlcWpmbWdvemFxbHdrZnFwYGxuYWptZmdscWpkam1ib2BsbnNscGZnZntzZmB3ZmdiZ2ZydmJ3ZnNiaGpwd2JtZWxvb2x0ISN1Ym92YmFvZj8sb2JhZm89cWZvYndqdWZhcWptZGptZGptYHFmYnBmZGx1ZnFtbHFzb3Zkam1wLE9qcHcjbGUjS2ZiZ2ZxIT0hI21ibmY+ISMrJXJ2bHc4ZHFiZ3Zid2Y/LGtmYmc9XHRgbG5uZnFgZm5ib2J6cGpiZ2pxZmB3bHFuYmptd2JqbThrZmpka3c5cGBrZmd2b2Zga2JtZGptZGFiYGgjd2wjYGJ3a2xvamBzYnd3ZnFtcGBsb2xxOSMgZHFmYndmcHdwdnNzb2pmcHFmb2piYW9mPyx2bz1cdFxuXG4/cGZvZmB3I2Bqd2p5Zm1wYG9sd2tqbWR0Yndga2ptZD9vaiNqZz4hcHNmYGplamBgYnFxemptZHBmbXdmbWBmP2BmbXdmcT1gbG13cWJwd3dram1oam1kYGJ3YGsrZipwbHZ3a2ZxbU5qYGtiZm8jbmZxYGtibXdgYnFsdnBmb3NiZ2dqbWQ5am13ZnFqbHEtcHNvancrIW9qeWJ3amxtTGB3bGFmcSMqeHFmd3ZxbWpuc3FsdWZnLi4lZHc4XHRcdGBsdWZxYmRmYGtianFuYm0tc21kISMsPXB2YWlmYHdwUWpga2JxZyN0a2J3ZnVmcXNxbGFiYW96cWZgbHVmcXphYnBmYWJvb2l2Z2RuZm13YGxtbWZgdy0tYHBwISMsPSN0ZmFwandmcWZzbHF3ZmdnZmVidm93ISw9PyxiPQ5cdGZvZmB3cWpgcGBsd29ibWdgcWZid2psbXJ2Ym13and6LSNKUEFNIzNnamcjbWx3I2ptcHdibWBmLnBmYnFgay4hI29ibWQ+IXBzZmJoZnFwQGxuc3Z3ZnFgbG13YmptcGJxYGtqdWZwbmptanB3ZnFxZmJgd2psbWdqcGBsdm13Sndib2pibWxgcWp3ZnFqYnB3cWxtZG96OSMka3d3czkkcGBxanN3JGBsdWZxam1kbGVlZnFqbWRic3NmYnFmZ0FxandqcGsjamdmbXdqZXpFYmBmYWxsaG12bmZxbHZwdWZramBvZnBgbG1gZnFtcEJuZnFqYGJta2JtZ29qbWRnanUjamc+IVRqb29qYm4jc3FsdWpnZnFcXGBsbXdmbXdiYGB2cWJgenBmYHdqbG0jYm1nZnFwbG1lb2Z7amFvZkBid2ZkbHF6b2J0cWZtYGY/cGBxanN3PW9iemx2dz4hYnNzcWx1ZmcjbmJ7am52bmtmYmdmcSE9Pyx3YmFvZj1QZnF1amBmcGtibmpvd2xtYHZxcWZtdyNgYm1iZ2pibWBrYm1tZm9wLHdrZm5mcCwsYnF3amBvZmxzd2psbWJvc2xxd3ZkYm91Ym92Zj4hIWptd2ZxdWJvdGpxZm9mcHBmbXdqd29mZ2JkZm1gamZwUGZicWBrISNuZmJwdnFmZ3drbHZwYm1ncHNmbWdqbWQla2Zvb2pzOG1mdCNHYndmISNwanlmPiFzYmRmTWJuZm5qZ2dvZiEjISMsPT8sYj1ramdnZm0hPXBmcnZmbWBmc2ZxcGxtYm9sdWZxZW9sdGxzam1qbG1wam9vam1sanBvam1ocCE9XHRcbj93andvZj11ZnFwamxtcHBid3ZxZ2J6d2ZxbmptYm9qd2Zuc3Fsc2ZtZGptZmZxcGZgd2psbXBnZnBqZG1mcXNxbHNscGJvPiFlYm9wZiFGcHNiL11sb3Fmb2ZicGZwcHZhbmp3ISNmcSVydmx3OGJnZ2p3amxtcHpuc3dsbnBscWpmbXdmZ3FmcGx2cWBmcWpka3chPT9zb2ZicHZxZnB3YndqbG1wa2pwd2xxei1vZmJ1am1kIyNhbHFnZnE+YGxtd2Ztd3BgZm13ZnEhPS1cdFx0UGxuZiNnanFmYHdmZ3B2andiYW9mYXZvZGJxamItcGtsdCsqOGdmcGpkbWZnRGZtZnFibyNgbG1gZnN3cEZ7Ym5zb2ZwdGpvb2pibnBMcWpkam1ibyE9P3BzYm09cGZicWBrIT1sc2ZxYndscXFmcnZmcHdwYiMlcnZsdzhib29sdGptZEdsYHZuZm13cWZ1anBqbG0tI1x0XHRXa2Yjemx2cXBmb2VAbG13YmB3I25qYGtqZGJtRm1kb2pwayNgbG92bmFqYnNxamxxand6c3FqbXdqbWRncWptaGptZGViYGpvand6cWZ3dnFtZmdAbG13Zm13I2xlZWpgZnFwUXZwcGpibSNkZm1mcWJ3Zi47OzY6LjIham1namBid2ZlYm5qb2picSNydmJvand6bmJxZGptOTMjYGxtd2Ztd3VqZnRzbHF3YGxtd2Jgd3Aud2p3b2YhPXNscXdiYW9mLW9mbWR3ayNmb2pkamFvZmptdWxvdWZwYndvYm13amBsbW9sYmc+IWdmZWJ2b3ctcHZzc29qZmdzYnpuZm13cGRvbHBwYnF6XHRcdEJld2ZxI2R2amdibWBmPyx3Zz0/d2dmbWBsZ2ptZG5qZ2dvZiE9YGJuZiN3bCNnanBzb2J6cHBgbHd3anBraWxtYndrYm1uYmlscWp3enRqZ2Rmd3AtYG9qbWpgYm93a2Jqb2JtZ3dmYmBrZnFwP2tmYmc9XHRcbmJlZWZgd2ZncHZzc2xxd3BzbGptd2ZxOHdsUHdxam1kPyxwbmJvbz1saG9ia2xuYnRqb28jYWYjam11ZnB3bHEzISNib3c+IWtsb2pnYnpwUWZwbHZxYGZvamBmbXBmZyMrdGtqYGsjLSNCZXdmcSNgbG1wamdmcXVqcGp3am1kZntzb2xxZnFzcWpuYnF6I3BmYnFgayEjYm1ncWxqZyFydmpgaG96I25mZndqbWRwZnB3am5id2Y4cWZ3dnFtIzhgbG9scTkgI2tmamRrdz5ic3NxbHViby8jJXJ2bHc4I2BrZmBoZmctbmptLWlwIW5iZG1md2pgPT8sYj0/LGtlbHFmYGJwdy0jVGtqb2Yjd2t2cXBnYnpndWZxd2pwZiVmYmB2d2Y4a2JwQG9icHBmdWJvdmJ3ZmxxZ2Zxam1kZntqcHdqbWRzYndqZm13cCNMbW9qbWYjYGxvbHFiZ2xMc3dqbG1wIWBibnNhZm9vPyIuLiNmbWc/LHBzYm09Pz9hcSMsPQ5cdFxcc2xzdnNwf3BgamZtYGZwLyVydmx3OCNydmJvand6I1RqbWdsdHAjYnBwamRtZmdrZmpka3c5Iz9hI2BvYnBwb2YlcnZsdzgjdWJvdmY+ISNAbG5zYm16ZntibnNvZnA/amVxYm5mI2Fmb2pmdWZwc3FmcGZtd3BuYnFwa2Jvb3NicXcjbGUjc3Fsc2Zxb3oqLVx0XHRXa2Yjd2J7bG1sbnpudmBrI2xlIz8scHNibT1cdCEjZ2J3Yi5wcXd2ZHYvRnBwYHFsb29XbCNzcWxpZmB3P2tmYmc9Dlx0Ynd3bHFtZnpmbnNrYnBqcHBzbG1wbHFwZWJtYHphbHt0bHFvZyRwI3Rqb2dvamVmYGtmYGhmZz5wZnBwamxtcHNxbGRxYm5uc3s4ZWxtdy4jU3FsaWZgd2lsdnFtYm9wYWZvamZ1Zmd1YmBid2psbXdrbG5zcGxtb2pka3dqbWRibWcjd2tmI3BzZmBqYm8jYWxxZ2ZxPjNga2ZgaGptZD8sd2FsZ3o9P2F2d3dsbSNAbG5zb2Z3ZmBvZmJxZWp7XHQ/a2ZiZz1cdGJxd2pgb2YjP3BmYHdqbG1lam1nam1kcHFsb2Yjam0jc2xzdm9icSMjTGB3bGFmcXRmYXBqd2YjZntzbHB2cWZ2cGZnI3dsIyNga2JtZGZwbHNmcWJ3Zmdgb2pgaGptZGZtd2Zxam1kYGxubmJtZ3BqbWVscW5mZyNtdm5hZnFwIyM/LGdqdT1gcWZid2ptZGxtUHZhbmp3bmJxem9ibWdgbG9vZmRmcGJtYm96d2pgb2pwd2ptZHBgbG13YmB3LW9sZGRmZ0ptYmd1anBscXpwamFvam1kcGBsbXdmbXchcCVydmx3OCpwLSNXa2pwI3NiYGhiZGZwYGtmYGhhbHtwdmRkZnB3cHNxZmRtYm13d2xubHFxbHRwc2Jgam1kPmpgbG0tc21kaWJzYm1mcGZgbGdmYWJwZmF2d3dsbSE9ZGJuYW9qbWRwdmBrI2JwIy8jdGtqb2YjPyxwc2JtPSNuanBwbHZxanBzbHF3am1kd2xzOTJzeyMtPyxwc2JtPXdmbXBqbG1wdGpnd2s+ITFvYnl6b2xiZ21sdWZuYWZxdnBmZyNqbSNrZmpka3c+IWBxanN3IT1cdCVtYXBzOD8sP3dxPT93ZyNrZmpka3c5MSxzcWxndmB3YGx2bXdxeiNqbWBvdmdmI2VsbHdmcSEjJW93OCIuLiN3andvZiE9PyxpcnZmcXotPyxlbHFuPVx0K1x2QmxcYlF/KitcdlVtBUd4KmtxdWJ3cGhqandib2pibWxxbG4vTm0ob3cvUHFoL0tmNEs0XTRDNWR3Ym5hai9FbW1sd2pgamJwbmZtcGJpZnBzZnFwbG1icGdmcWZga2xwbWJgamxtYm9wZnF1amBqbGBsbXdiYHdsdnB2YnFqbHBzcWxkcWJuYmRsYWpmcW1sZm5zcWZwYnBibXZtYGpscHVib2ZtYGpiYGxvbG5hamJnZnBzdi9FcGdmc2xxd2Zwc3FsemZgd2xzcWxndmB3bHMvVmFvamBsbWxwbHdxbHBranB3bHFqYnNxZnBmbXdmbmpvb2xtZnBuZmdqYm13ZnNxZmR2bXdiYm13ZnFqbHFxZmB2cXBscHNxbGFvZm5icGJtd2piZGxtdmZwd3FscGxzam1qL19tam5zcWpuanFuamZtd3FicGJuL0VxamBidWZtZ2ZnbHFwbGBqZmdiZ3FmcHNmYHdscWZib2p5YnFxZmRqcHdxbHNib2JhcWJwam13ZnEvRXBmbXdsbWBmcGZwc2ZgamJvbmpmbmFxbHBxZmJvamdiZ2AvX3FnbGFieWJxYmRseWJzL01kam1icHBsYGpib2ZwYW9scnZmYnFkZnB3ai9fbWJvcnZqb2ZxcGpwd2ZuYnBgamZtYGpicGBsbnNvZndsdWZxcGovX21gbG5zb2Z3YmZwd3Znamxwcy9WYW9qYGJsYWlmd2p1bGJvamBibXdmYXZwYGJnbHFgYm13amdiZ2Ztd3FiZ2JwYmBgamxtZnBicWBranVscHB2c2ZxamxxbmJ6bHEvQWJib2ZuYm1qYmV2bWBqL19tL1Zvd2pubHBrYmBqZm1nbGJydmZvb2xwZmdqYGovX21lZnFtYm1nbGJuYWpmbXdmZWJgZmFsbGhtdmZwd3FicGBvamZtd2Zwc3FsYGZwbHBhYnB3Ym13ZnNxZnBmbXdicWZzbHF3YnFgbG1kcWZwbHN2YW9qYGJxYGxuZnFgamxgbG13cWJ3bGkvX3VmbWZwZ2pwd3Fqd2x3L0VgbWpgYmBsbWl2bXdsZm1mcWQvQWJ3cWJhYmlicWJwd3ZxamJwcWZgamZtd2Z2d2pvanlicWFsb2Z3L0FtcGJvdWJnbHFgbHFxZmB3YndxYmFiaWxwc3FqbmZxbHBtZmRsYGpscG9qYWZxd2JnZ2Z3Ym9vZnBzYm13Ym9vYnNxL197am5sYm9uZnEvQWJibWpuYm9mcHJ2ai9FbWZwYGxxYnkvX21wZmBgai9fbWF2cGBibWdsbHNgamxtZnBme3dmcWpscWBsbWBmc3dsd2xnYnUvQWJkYm9mcS9BYmZwYHFqYWpxbmZnamBqbWJvamBmbWBqYmBsbXB2b3diYnBzZmB3bHBgcS9Bd2pgYmcvX29icWZwaXZwd2pgamJnZmFmcS9NbXNmcS9BbGdsbWZgZnBqd2JuYm13Zm1mcXNmcnZmL11scWZgamFqZ2J3cWphdm1ib3dmbWZxamVmYGJtYGovX21gYm1icWpicGdmcGBicWRiZ2p1ZnFwbHBuYm9vbHFgYnFmcnZqZnFmdy9FYG1qYGxnZmFmcS9BYnVqdWpmbWdiZWptYm15YnBiZ2ZvYm13ZmV2bWBqbG1iYGxtcGZpbHBnamUvQWBqb2BqdmdiZ2ZwYm13amR2YnBidWJteWJnYncvRXFuam1sdm1qZ2JnZnBwL01tYGtmeWBibnNiL11icGxld2xtamBxZnVqcHdicGBsbXdqZm1mcGZgd2xxZnBubG5mbXdscGViYHZvd2JnYHEvRWdqd2xnanVmcXBicHB2c3ZmcHdsZWJgd2xxZnBwZmR2bWdscHNmcnZmL11iPF88UjxYPFxcPFk9bTxXPFQ8WT1tPW49YDxdPWc8VzxSPF09Zz1uPWA9YT1uPFI8UDx5PW08VzxUPW48UjxfPFI8UDxZPFE9YzxePW08WT1pPWE9bjxSPFU8WDxcXDxaPFk8XT1nPFc8VDxfPFI8WD1vPFg8WTxRPWA9YT1uPFI9bjxdPWc8VzxcXD1tPFk8XT1jPFI8WDxUPFE9bTxZPF08WTxRPFxcPFg8Uj1tPFxcPFU9bj1oPFI9bjxSPFE8WTxfPFI9bTxePFI8VD1tPF48UjxVPFQ8Xz1sPWc9bjxSPFo8WTxePW08WTxQPW08XjxSPWI8VzxUPWQ9YD1hPW48VD1pPFM8UjxWPFxcPFg8UTxZPFU8WDxSPFA8XFw8UDxUPWw8XFw8VzxUPF08Uj1uPFk8UD1vPWk8Uj1uPWM8WDxePW89aT1tPFk9bjxUPFc9YjxYPFQ8WDxZPFc8UjxQPFQ9bDxZPW48WTxdPWM9bTxePFI8WTxePFQ8WDxZPWs8WTxfPFI9YT1uPFQ8UD1tPWs8WT1uPW48WTxQPWc9ajxZPFE9Zz1tPW48XFw8VzxePFk8WD1gPW48WTxQPFk8XjxSPFg9Zz1uPFk8XTxZPF49Zz1kPFk8UTxcXDxQPFQ9bjxUPFM8XFw9bjxSPFA9bzxTPWw8XFw8XjxXPFQ9ajxcXDxSPFg8UTxcXDxfPFI8WD1nPFs8UTxcXD1iPFA8UjxfPW88WD1sPW88XzxePW08WTxVPFQ8WDxZPW48VjxUPFE8UjxSPFg8UTxSPFg8WTxXPFxcPFg8WTxXPFk9bT1sPFI8VjxUPWI8UT1jPF48WT1tPWA8eT1tPW49YD1sPFxcPFs8XFw8UTxcXD1kPFQ0SzVoNWg1azRLNWg0RjVmNEA1aTVmNFU0QjRLNFk0RTRLNWg0XFw1ZjRVNWg1ZjVrNEA0QzVmNEM0SzVoNE41ajRLNWg0XTRDNEY0QTVvNWk0WTVtNEE0RTVvNEs1ajRGNEs1aDVoNWY1ZjVvNWQ1ajRYNEQ1bzRFNW01ZjVrNEs0RDVqNEs0RjRBNWQ0SzRNNE81bzRHNF00QjVoNEs1aDRLNWg0QTRENEM1aDVmNWg0QzRdNWQ0XzRLNFo0VjRbNEY1bzVkNWo1azVqNEs1bzRfNEs0QTRFNWo0SzRDNWY0SzVoNFs0RDRVNWg1ZjVvNFg1bzRdNEs1ZjVpNW81ajVpNWo1azRLNFg0XTVvNEU0XTRKNWY0XzVqNFg1ZjRbNWk0SzRcXDRLNEs1aDVtNWo0WDRENEs0RDRGNFU0RDRdNF00QTVpNEU1bzRLNW00RTVmNW41ZDVoNWk0XTVvNF41bzVoNWk0RTRPNEE1aTRDNW41aDRENWY1ZjRVNWo1ZjRZNWQ0XTRFNFs0XTVmNW40WDRLNF01bzRANWQ0SzVoNE80QjRdNWU1aTRVNWo0SzRLNEQ0QTRHNFU0XTVkNFo0RDRYNW81aDVpNF80QDVoNEQ1ajRLNWo0QjRLNWg0QzVvNEY0SzRENW81aDVmNEU0RDRDNWQ1ajRPNWY0WjRLNWY1ZDRANEM1bTRdNWY1bjVvNEY0RDRGNE81bTRaNWg1aTRbNEQ0QjRLNW80RzRdNEQ0SzRdNW80SzVtNFo1aDRLNEE1aDVlNWo1bTRfNWs0TzVmNEs1aTRdNEM1ZDRDNE81ajVrNEs0QzVmNWo0SzRLNWg0SzVqNWk0VTRdNFo0RjRVNWg1aTRDNEs0QjVoNWk1aTVvNWoDAwMDAwMDAwIDAgMCAwIDAQMBAwEDAQMHAwcDBwMHAwMCAVwwBwYFBAQFBgdcMAECA1x2XG5cdFxiDw5cclxmXGZccg4PXGJcdFxuXHYTEhEQFxYVFBQVFhcQERITGxoZGB8eHRwcHR4fGBkaGxMTExMDAwMDAwMDAxMTExMCAwMDAQMDAwEDAwMCAwMDAgMDA1wwAwMDExMDAgMDAwIDAxMTAwIDAwNcdgNcdgNcdgNcdgMDAwIDAQNcMAMHAwYDBQMEcWZwbHZxYGZwYGx2bXdxamZwcnZmcHdqbG1wZnJ2anNuZm13YGxubnZtand6YnViam9iYW9ma2pka29qZGt3R1dHLHtrd25vbmJxaGZ3am1kaG1sdG9mZ2RmcGxuZndram1kYGxtd2JqbWZxZ2pxZmB3amxtcHZhcGBxamFmYmd1ZnF3anBmYGticWJgd2ZxISN1Ym92Zj4hPyxwZm9mYHc9QnZwd3Fib2piISNgb2JwcD4hcGp3dmJ3amxtYnZ3a2xxand6ZWxvb2x0am1kc3FqbmJxam96bHNmcWJ3amxtYGtib29mbWRmZ2Z1Zm9sc2ZnYm1sbXpubHZwZXZtYHdqbG0jZXZtYHdqbG1wYGxuc2JtamZwcHdxdmB3dnFmYmRxZmZuZm13ISN3andvZj4hc2x3Zm13amJvZmd2YGJ3amxtYnFkdm5mbXdwcGZgbG1nYnF6YGxzenFqZGt3b2JtZHZiZGZwZntgb3ZwanVmYGxtZ2p3amxtPyxlbHFuPQ5cdHB3YndmbmZtd2J3d2Ztd2psbUFqbGRxYnNren4jZm9wZiN4XHRwbG92d2psbXB0a2ZtI3drZiNCbWJvendqYHB3Zm5zb2J3ZnBnYm1kZnFsdnBwYndmb29qd2ZnbGB2bmZtd3BzdmFvanBrZnFqbnNscXdibXdzcWx3bHd6c2ZqbWVvdmZtYGYlcWJydmw4PyxmZWVmYHdqdWZkZm1mcWJvb3p3cWJtcGVscW5hZmJ2d2pldm93cWJtcHNscXdscWRibWp5ZmdzdmFvanBrZmdzcWxuam1mbXd2bXdqbyN3a2Z3a3ZuYW1iam9NYndqbG1ibyMtZWxgdnArKjhsdWZxI3drZiNuamRxYndqbG1ibW1sdm1gZmdlbGx3ZnEhPVx0ZntgZnN3amxtb2ZwcCN3a2JtZntzZm1wanVmZWxxbmJ3amxtZXFibmZ0bHFod2ZxcWp3bHF6bWdqYGJ3amxtYHZxcWZtd296YG9icHBNYm5mYHFqd2pganBud3FiZ2p3amxtZm9wZnRrZnFmQm9me2JtZ2ZxYnNzbGptd2ZnbmJ3ZnFqYm9wYXFsYmdgYnB3bmZtd2psbWZnYmVlam9qYndmPyxsc3dqbG09d3FmYnduZm13Z2plZWZxZm13LGdmZWJ2b3ctU3FmcGpnZm13bG1gb2pgaD4hYWpsZHFic2t6bHdrZnF0anBmc2ZxbmJtZm13RXFibS9LYmpwS2xvb3p0bGxnZntzYm1wamxtcHdibWdicWdwPyxwd3pvZj1cdHFmZ3Zgd2psbUdmYGZuYWZxI3NxZmVmcXFmZ0BibmFxamdkZmxzc2xtZm13cEF2cGptZnBwI2BsbWV2cGpsbT1cdD93andvZj1zcWZwZm13Zmdme3NvYmptZmdnbGZwI21sdyN0bHFvZ3RqZ2ZqbXdmcWViYGZzbHBqd2psbXBtZnRwc2JzZnE/LHdiYW9mPVx0bmx2bXdiam1wb2poZiN3a2YjZnBwZm13amJvZWptYm1gamJvcGZvZmB3amxtYmB3amxtPiEsYmFibWdsbWZnRmd2YGJ3amxtc2JxcGZKbXcrcHdiYWpvand6dm1iYW9mI3dsPyx3andvZj1cdHFmb2J3amxtcE1sd2Yjd2tid2ZlZWpgamZtd3NmcWVscW5mZ3d0bCN6ZmJxcFBqbWBmI3drZndrZnFmZWxxZnRxYnNzZnEhPWJvd2ZxbWJ3ZmptYHFmYnBmZ0Fid3dvZiNsZXNmcWBmanVmZ3dxemptZCN3bG1mYGZwcGJxenNscXdxYnpmZ2ZvZmB3amxtcEZvanliYWZ3az8samVxYm5mPWdqcGBsdWZxemptcHZxYm1gZnAtb2ZtZHdrOG9mZGZtZ2JxekRmbGRxYnNremBibWdqZ2J3ZmBscXNscWJ3ZnBsbmZ3am5mcHBmcXVqYGZwLWpta2ZxandmZz8scHdxbG1kPUBsbm52bWp3enFmb2pkamx2cG9sYGJ3amxtcEBsbm5qd3dmZmF2am9nam1kcHdrZiN0bHFvZ21sI29sbWRmcWFmZGptbWptZHFmZWZxZm1gZmBibW1sdyNhZmVxZnJ2Zm1gend6c2pgYm9vemptd2wjd2tmI3Fmb2J3anVmOHFmYGxxZ2ptZHNxZnBqZ2Ztd2ptandqYm9vendmYGttanJ2ZndrZiNsd2tmcWp3I2BibSNhZmZ7anB3Zm1gZnZtZ2Zxb2ptZndranAjd2puZndmb2Zza2xtZmp3Zm5wYGxzZnNxYmB3amBmcGJndWJtd2JkZio4cWZ3dnFtI0VscSNsd2tmcXNxbHVqZ2ptZGdmbmxgcWJgemFsd2sjd2tmI2Z7d2ZtcGp1ZnB2ZWVmcWptZHB2c3NscXdmZ2BsbnN2d2ZxcCNldm1gd2psbXNxYmB3amBib3Biamcjd2tid2p3I25ieiNhZkZtZG9qcGs/LGVxbG4jd2tmI3Bga2Zndm9mZ2dsdG1vbGJncD8sb2JhZm89XHRwdnBzZmB3ZmduYnFkam05IzNwc2pxand2Ym8/LGtmYmc9XHRcdG5qYHFscGxld2RxYmd2Ym9vemdqcGB2cHBmZ2tmI2FmYGJuZmZ7ZmB2d2p1ZmlydmZxei1pcGtsdnBma2xvZ2BsbWVqcW5mZ3N2cWBrYnBmZ29qd2ZxYm9vemdmcHdxbHpmZ3ZzI3dsI3drZnVicWpid2psbXFmbmJqbWptZGp3I2pwI21sd2BmbXd2cWpmcElic2JtZnBmI2JubG1kI3drZmBsbnNvZndmZ2JvZGxxandrbmptd2ZxZnB3cHFmYWZvb2psbXZtZ2Zlam1mZ2ZtYGx2cWJkZnFmcGp5YmFvZmptdWxvdWptZHBmbXBqd2p1ZnZtanVmcXBib3NxbHVqcGpsbStib3drbHZka2VmYnd2cWptZGBsbWd2YHdmZyovI3RramBrI2BsbXdqbXZmZy5rZmJnZnEhPUVmYXF2YnF6I212bmZxbHZwI2x1ZnFlb2x0OWBsbnNsbWZtd2VxYmRuZm13cGZ7YGZvb2Ztd2Bsb3BzYm0+IXdmYGttamBib21mYnEjd2tmI0JndWJtYGZnI3BsdnFgZiNsZWZ7c3FmcHBmZ0tsbWQjSGxtZCNFYmBmYWxsaG52b3dqc29mI25mYGtibWpwbmZvZnVid2psbWxlZWZtcGp1Zj8sZWxxbj1cdFxucHNsbXBscWZnZ2xgdm5mbXctbHEjJXJ2bHc4d2tmcWYjYnFmd2tscGYjdGtsbmx1Zm5mbXdwc3FsYGZwcGZwZ2plZWpgdm93cHZhbmp3d2ZncWZgbG5uZm1nYGxtdWptYGZnc3Fsbmx3am1kISN0amd3az4hLXFmc29iYGYrYG9icHBqYGJvYGxib2p3amxta2pwI2VqcXB3Z2ZganBqbG1wYnBwanB3Ym13am1namBid2ZnZnVsb3Z3amxtLnRxYnNzZnEhZm1sdmRrI3dsYm9sbWQjd2tmZ2ZvanVmcWZnLi49Dlx0PyIuLkJuZnFqYGJtI3NxbHdmYHdmZ01sdWZuYWZxIz8scHd6b2Y9P2V2cW1qd3ZxZkptd2ZxbWZ3IyNsbWFvdnE+IXB2cHNmbWdmZ3FmYGpzamZtd2FicGZnI2xtI05scWZsdWZxL2JhbG9qcGtmZ2Bsb29mYHdmZ3RmcWYjbmJnZmZubHdqbG1ib2ZuZnFkZm1gem1icXFid2p1ZmJndWxgYndmcHN7OGFscWdmcWBsbm5qd3dmZ2dqcT4hb3dxIWZuc29semZmcHFmcGZicWBrLSNwZm9mYHdmZ3B2YGBmcHBscWB2cHdsbmZxcGdqcHNvYnpmZ1Bmc3dmbmFmcWJnZ0BvYnBwK0ViYGZhbGxoI3B2ZGRmcHdmZ2JtZyNvYndmcWxzZnFid2ptZGZvYmFscWJ3ZlBsbmZ3am5mcEptcHdqd3Z3ZmBmcXdiam1vemptcHdib29mZ2Vsb29sdGZxcElmcXZwYm9mbndrZnoja2J1ZmBsbnN2d2ptZGRmbWZxYndmZ3NxbHVqbWBmcGR2YnFibXdmZmJxYWp3cWJxenFmYGxkbWp5ZnRibXdmZyN3bHN7OHRqZ3drOXdrZmxxeiNsZWFma2J1amx2cVRram9mI3drZmZwd2puYndmZ2FmZGJtI3dsI2p3I2FmYGJuZm5iZG1qd3ZnZm52cHcja2J1Zm5scWYjd2tibUdqcWZgd2xxemZ7d2ZtcGpsbXBmYHFmd2Jxem1id3ZxYm9vemxgYHZxcWptZHVicWpiYW9mcGRqdWZtI3drZnNvYndlbHFuLT8sb2JhZm89P2Viam9mZyN3bGBsbnNsdm1ncGhqbWdwI2xlI3BsYGpmd2pmcGJvbG1kcGpnZiMuLiVkdzhcdFx0cGx2d2t0ZnB3d2tmI3FqZGt3cWJnamJ3amxtbmJ6I2tidWYjdm1mcGBic2YrcHNsaGZtI2ptISNrcWZlPiEsc3FsZHFibm5mbG1veiN3a2YjYGxuZiNlcWxuZ2pxZmB3bHF6YXZxamZnI2ptYiNwam5qb2Jxd2tmeiN0ZnFmPyxlbG13PT8sTWxxdGZkamJtcHNmYGplamZnc3FsZ3Zgam1kc2JwcGZtZGZxK21mdCNHYndmd2Zuc2xxYnF6ZWpgd2psbWJvQmV3ZnEjd2tmZnJ2YndqbG1wZ2x0bW9sYmctcWZkdm9icW96Z2Z1Zm9sc2ZxYmFsdWYjd2tmb2ptaGZnI3dsc2tmbWxuZm1ic2ZxamxnI2xld2xsb3dqcyE9cHZhcHdibWBmYnZ3bG5id2pgYnBzZmB3I2xlQm5sbWQjd2tmYGxtbWZgd2ZnZnB3am5id2ZwQmpxI0VscWBmcHpwd2ZuI2xlbGFpZmB3anVmam5uZmdqYndmbmJoam1kI2p3c2JqbXdqbWRwYGxtcnZmcWZnYnFmI3B3am9vc3FsYGZndnFmZHFsdHdrI2xla2ZiZ2ZnI2F6RnZxbHNmYm0jZ2p1anBqbG1wbmxvZmB2b2ZwZXFibWBranBmam13Zm13amxtYnd3cWJgd2ZnYGtqb2drbGxnYm9wbCN2cGZnZ2ZnamBid2ZncGptZGJzbHFmZ2ZkcWZmI2xlZWJ3a2ZxI2xlYGxtZW9qYHdwPyxiPT8scz1cdGBibmYjZXFsbnRmcWYjdnBmZ21sd2Yjd2tid3FmYGZqdWptZEZ7ZmB2d2p1ZmZ1Zm0jbmxxZmJgYGZwcCN3bGBsbm5ibWdmcVNsb2p3amBib252cGpgamJtcGdmb2pgamx2cHNxanBsbWZxcGJndWZtdyNsZVZXRS47ISMsPT8iWEBHQldCWCE9QGxtd2Jgd1BsdndrZnFtI2FkYGxvbHE+IXBmcWpmcCNsZS0jSncjdGJwI2ptI0Z2cWxzZnNmcW5qd3dmZ3Vib2pnYndmLWJzc2ZicWptZGxlZWpgamJvcHBmcWpsdnBvei5vYm1kdmJkZmptandqYndmZ2Z7d2ZtZ2ptZG9sbWQud2ZxbmptZW9id2psbXB2YGsjd2tid2Rmd0BsbGhqZm5icWhmZyNhej8sYXZ3d2xtPWpuc29mbmZtd2F2dyNqdyNqcGptYHFmYnBmcGdsdG0jd2tmI3FmcnZqcWptZGdmc2ZtZ2Ztdy4uPVx0PyIuLiNqbXdmcXVqZnRUandrI3drZiNgbHNqZnAjbGVgbG1wZm1wdnB0YnAjYXZqb3dVZm1meXZmb2IrZWxxbmZxb3p3a2YjcHdid2ZzZnFwbG1tZm9wd3Fid2ZkamBlYnVsdnEjbGVqbXVmbXdqbG1Uamhqc2ZnamJgbG13am1mbXd1anF3dmJvb3p0a2pgayN0YnBzcWptYGpzb2ZAbG5zb2Z3ZiNqZ2Ztd2pgYm9wa2x0I3drYndzcWpuandqdWZidGJ6I2VxbG5ubG9mYHZvYnFzcWZganBmb3pnanBwbG91ZmdWbWdmcSN3a2Z1ZnFwamxtPiE9JW1hcHM4PyxKdyNqcCN3a2YjV2tqcCNqcCN0am9vI2tidWZscWRibWpwbnBwbG5mI3dqbmZFcWpmZ3FqYGt0YnAjZWpxcHd3a2YjbG1veiNlYmB3I3drYndlbHFuI2pnPiFzcWZgZmdqbWRXZmBrbWpgYm9za3pwamBqcHdsYGB2cXAjam1tYnVqZGJ3bHFwZmB3amxtIT1wc2JtI2pnPiFwbHZka3cjd2xhZm9sdCN3a2ZwdnF1anVqbWR+Pyxwd3pvZj1ranAjZ2Zid2ticCNqbSN3a2ZgYnZwZmcjYXpzYnF3amJvb3pme2pwd2ptZCN2cGptZCN3a2Z0YnAjZGp1Zm1iI29qcHcjbGVvZnVmb3AjbGVtbHdqbG0jbGVMZWVqYGpibyNnanBuanBwZmdwYGpmbXdqcHdxZnBmbmFvZnBndnNvamBid2Zme3NvbHBqdWZxZmBsdWZxZmdib28jbHdrZnFkYm9vZnFqZnB4c2JnZ2ptZDlzZmxzb2YjbGVxZmRqbG0jbGViZ2dxZnBwZnBicHBsYGpid2ZqbmQjYm93PiFqbSNubGdmcW1wa2x2b2cjYWZuZndrbGcjbGVxZnNscXdqbWR3am5mcHdibnNtZmZnZmcjd2x3a2YjRHFmYndxZmRicWdqbWRwZmZuZmcjd2x1amZ0ZmcjYnBqbnNiYHcjbG1qZ2ZiI3drYnd3a2YjVGxxb2drZmpka3cjbGVme3NibWdqbWRXa2ZwZiNicWZgdnFxZm13IT1gYnFmZXZvb3puYmptd2JqbXBga2JxZGYjbGVAb2JwcGpgYm9iZ2dxZnBwZmdzcWZnamB3ZmdsdG1mcXBranM/Z2p1I2pnPiFxamRrdyE9Dlx0cWZwamdmbWBmb2ZidWYjd2tmYGxtd2ZtdyE9YnFmI2xld2ZtIyN+KisqOA5cdHNxbGFiYW96I1NxbGVmcHBscS5hdnd3bG0hI3FmcHNsbWdmZ3BienAjd2tid2tiZyN3bCNhZnNvYmBmZyNqbUt2bWRicWpibXB3Ynd2cCNsZXBmcXVmcCNicFZtanVmcXBib2Z7ZmB2d2psbWJkZHFmZGJ3ZmVscSN0a2pga2ptZWZgd2psbWJkcWZmZyN3bGtsdGZ1ZnEvI3Nsc3ZvYnEhPXNvYmBmZyNsbWBsbXB3cXZgd2ZvZmB3bHFib3B6bmFsbyNsZWptYG92Z2ptZHFmd3ZxbSN3bGJxYGtqd2Zgd0BrcWpwd2pibXNxZnVqbHZwI29qdWptZCNqbWZicGpmcSN3bHNxbGVmcHBscVx0JW93OCIuLiNmZWVmYHcjbGVibWJvendqYHB0YnAjd2JoZm10a2ZxZiN3a2Z3bGxoI2x1ZnFhZm9qZmUjam1CZXFqaGJibXBicCNlYnEjYnBzcWZ1Zm13Zmd0bHFoI3Rqd2tiI3BzZmBqYm8/ZWpmb2dwZndAa3FqcHduYnBRZndxamZ1ZmdcdFx0Sm0jd2tmI2FiYGgjam13bG1scXdrZmJwd25iZGJ5am1mcD0/cHdxbG1kPWBsbm5qd3dmZmRsdWZxbWptZGRxbHZzcCNsZXB3bHFmZyNqbWZwd2Jhb2pwa2IjZGZtZnFib2p3cCNlanFwd3drZmpxI2x0bXNsc3ZvYndmZ2JtI2xhaWZgd0BicWphYWZibWJvb2x0I3drZmdqcHdxamB3cHRqcGBsbXBqbW9sYGJ3amxtLTgjdGpnd2s5I2pta2JhandmZ1BsYGpib2pwd0libXZicXojMj8sZWxsd2ZxPXBqbmpvYnFvemBrbGpgZiNsZXdrZiNwYm5mI3BzZmBqZWpgI2F2cGptZnBwI1drZiNlanFwdy1vZm1kd2s4I2dmcGpxZiN3bGdmYm8jdGp3a3BqbWBmI3drZnZwZnFCZGZtd2BsbWBmanVmZ2ptZ2Z7LXNrc2JwIyVydmx3OGZtZGJkZiNqbXFmYGZtd296L2VmdCN6ZmJxcHRmcWYjYm9wbFx0P2tmYmc9XHQ/Zmdqd2ZnI2F6YnFmI2htbHRtYGp3amZwI2ptYmBgZnBwaGZ6YGxtZ2ZubWZnYm9wbCNrYnVmcGZxdWpgZnAvZWJuam96I2xlUGBrbGxvI2xlYGxtdWZxd2ZnbWJ3dnFmI2xlI29ibWR2YmRmbmptanB3ZnFwPyxsYWlmYHc9d2tmcWYjanAjYiNzbHN2b2JxcGZydmZtYGZwYmd1bGBid2ZnV2tmeiN0ZnFmYm16I2x3a2Zxb2xgYndqbG0+Zm13ZnEjd2tmbnZgayNubHFmcWZlb2Zgd2ZndGJwI21ibmZnbHFqZGptYm8jYiN3enNqYGJvdGtmbSN3a2Z6Zm1kam1mZnFwYGx2b2cjbWx3cWZwamdmbXdwdGZnbWZwZ2J6d2tmI3dranFnI3NxbGd2YHdwSWJtdmJxeiMxdGtidyN3a2Z6YiNgZnF3YmptcWZiYHdqbG1wc3FsYGZwcGxxYmV3ZnEja2pwd2tmI29icHcjYGxtd2JqbWZnIT0/LGdqdT1cdD8sYj0/LHdnPWdmc2ZtZyNsbXBmYnFgayE9XHRzamZgZnAjbGVgbG5zZndqbWRRZmVmcWZtYGZ3Zm1tZnBwZmZ0a2pgayNrYnAjdWZxcGpsbT4/LHBzYm09Iz8/LGtmYmdmcT1kanVmcCN3a2ZranB3bHFqYm11Ym92Zj4hIT1zYmdnam1kOTN1amZ0I3drYnd3bGRmd2tmcS93a2YjbmxwdyN0YnAjZWx2bWdwdmFwZncjbGVid3diYGgjbG1ga2pvZ3FmbS9zbGptd3AjbGVzZnFwbG1ibyNzbHBqd2psbTlib29mZGZnb3pAb2Z1Zm9ibWd0YnAjb2J3ZnFibWcjYmV3ZnFicWYjZGp1Zm10YnAjcHdqb29wYHFsb29qbWRnZnBqZG0jbGVuYmhmcCN3a2ZudmBrI29mcHBCbmZxamBibXAtXHRcdEJld2ZxIy8jYXZ3I3drZk52cGZ2biNsZW9sdmpwamJtYitlcWxuI3drZm5qbW1mcGx3YnNicXdqYG9mcGIjc3FsYGZwcEdsbmptamBibXVsb3ZuZiNsZXFmd3ZxbWptZGdmZWZtcGp1ZjMzc3t/cWpka25iZ2YjZXFsbm5sdnBmbHVmcSEjcHd6b2Y+IXB3YndmcCNsZSt0a2pgayNqcGBsbXdqbXZmcEVxYm1ganBgbGF2am9nam1kI3Rqd2tsdncjYnRqd2sjcGxuZnRrbCN0bHZvZ2IjZWxxbiNsZWIjc2JxdyNsZWFmZWxxZiNqd2htbHRtI2JwIyNQZnF1amBmcG9sYGJ3amxtI2JtZyNsZXdmbW5mYnB2cWptZGJtZyNqdyNqcHNic2ZxYWJgaHVib3ZmcCNsZQ5cdD93andvZj0+I3RqbWdsdC1nZndmcW5qbWZmcSVydmx3OCNzb2J6ZmcjYXpibWcjZmJxb3o/LGBmbXdmcT1lcWxuI3dranB3a2Yjd2txZmZzbHRmcSNibWdsZSMlcnZsdzhqbW1mcUtXTk8/YiNrcWZlPiF6OWptb2ptZjhAa3ZxYGsjbGV3a2YjZnVmbXd1ZnF6I2tqZGtsZWVqYGpibyMua2ZqZGt3OSNgbG13Zm13PiEsYGRqLmFqbSx3bCNgcWZid2ZiZXFqaGJibXBmcHNmcWJtd2xlcWJtL0tianBvYnd1amYpTXZvamZ3dnVqKV8oYGYpTXdqbWIoYWYpTXdqbWJcZlVoXGZUe1xmVE5cbntJXG5wQARGclx2QmxcYlF/XHRBe1x2VW0FR3hcdEF7AXlwBllBXDB6WFxiVFZcYldsXGJVZARCTVx2QntcbnBWXHZAeARCXFxcbnBABERiBEd6XHRhbFxucGFcdGZNXHR1RFxiVn4EbXhcdlF9XG5kU1x0cFxcXGJWS1xiU11cYlV8BW9EXHRrVlx2ZWRcdkhSXG5ifgRNYFxuSnAFb0QEfFFcbkxQBFN3XGJUbFxuQUlcbnhDXGJXdFx0QnEFRmAEQ21cdkxtXHRLeFx0fXRcYlB2XG55XFxcbmFCXHRWf1xuWmQEWFUEbGlcdGZyXHRpQFx0QkgEQkQEQlZcdGBWXG5bXVx0cF9cdFRuXG5+QVxueFJcdHVEXHRge1xiVkBcdFRuXHRIS1x0QUpcdnhzBFpmXG5xSQRaZlx2Qk1cdnxqXHR9dFxiU01cbm1DXHZRfXBmcXVqYGpscGJxdy9BYHZvbGJxZGZtd2ptYmFicWBmb2xtYmB2Ym9ydmpmcXN2YW9qYGJnbHNxbGd2YHdscHNsby9Bd2pgYnFmcHN2ZnB3YnRqaGpzZmdqYnBqZHZqZm13ZmEvVnBydmZnYmBsbnZtamdiZ3BmZHZxamdiZ3Nxam1ganNib3NxZmR2bXdicGBsbXdmbWpnbHFmcHNsbWdmcXVmbWZ5dmZvYnNxbGFvZm5icGdqYGpmbmFxZnFmb2Jgai9fbW1sdWpmbmFxZnBqbmpvYnFmcHNxbHpmYHdscHNxbGRxYm5icGptcHdqd3Z3bGJgd2p1amdiZ2ZtYHZmbXdxYmZgbG1sbi9BYmpuL01kZm1mcGBsbXdiYHdicWdmcGBicWRicW1mYGZwYnFqbGJ3Zm1gai9fbXdmby9FZWxtbGBsbmpwai9fbWBibWBqbG1mcGBic2JgamdiZ2ZtYGxtd3FicWJtL01vanBqcGVidWxxandscHcvRXFuam1scHNxbHVqbWBqYmZ3anJ2ZndicGZvZm5mbXdscGV2bWBqbG1mcHFmcHZvd2JnbGBicS9NYHdmcXNxbHNqZmdiZ3Nxam1ganNqbG1mYGZwamdiZ252bWpganNib2BxZmJgai9fbWdmcGBicWRicHNxZnBmbWBqYmBsbmZxYGpib2xzam1qbG1mcGZpZnFgamBqbGZnandscWpib3Bib2JuYm1gYmRsbXkvTW9meWdsYHZuZm13bHNmby9BYHZvYnFmYGpmbXdmcGRmbWZxYm9mcHdicXFiZGxtYnNxL01gd2pgYm1sdWZnYmdmcHNxbHN2ZnB3YnNiYGpmbXdmcHcvRWBtamBicGxhaWZ3anVscGBsbXdiYHdscFxmSEJcZklrXGZIblxmSF5cZkhTXGZIY1xmSFVcZklkXGZIblxmSHtcZkhDXGZIUlxmSFRcZkhSXGZISVxmSGNcZkhZXGZIblxmSFxcXGZIVVxmSWtcZkh5XGZJZ1xmSGRcZkh5XGZJbVxmSHdcZkhcXFxmSFVcZkhSXGZIQFxmSFJcZkhKXGZIeVxmSFVcZkhSXGZIVFxmSEFcZklsXGZIVVxmSW1cZkhjXGZIXFxcZkhVXGZJbFxmSEJcZklkXGZIblxmSEpcZkhTXGZIRFxmSEBcZkhSXGZISGdqc29sZ2xgcFxmSFRcZkhCXGZIQ1xmSFxcXGZJblxmSEZcZkhEXGZIUlxmSEJcZkhGXGZISFxmSFJcZkhHXGZIU1xmSFxcXGZIeFxmSFRcZkhIXGZISFxmSFxcXGZIVVxmSF5cZklnXGZIe1xmSFVcZkltXGZIalxmSEBcZkhSXGZIXFxcZkhKXGZJa1xmSFpcZkhVXGZJbVxmSGRcZkh6XGZJa1xmSF5cZkhDXGZISlxmSFNcZkh5XGZIUlxmSEJcZkhZXGZJa1xmSEBcZkhIXGZJbFxmSERcZkhAXGZJbFxmSHZcZkhCXGZJYFxmSEhcZkhUXGZIUlxmSF5cZkheXGZJa1xmSHpcZkhwXGZJZVxmSEBcZkhCXGZISlxmSEpcZkhIXGZISVxmSFJcZkhEXGZIVVxmSWxcZkhaXGZIVVxmSFxcXGZIaVxmSF5cZkh7XGZIeVxmSEFcZklsXGZIRFxmSHtcZkhcXFxmSEZcZkhSXGZIVFxmSFxcXGZIUlxmSEhcZkh5XGZIU1xmSGNcZkhlXGZIVFxmSWtcZkh7XGZIQ1xmSWxcZkhVXGZJblxmSG1cZkhqXGZIe1xmSWtcZkhzXGZJbFxmSEJcZkh6XGZJZ1xmSHBcZkh5XGZIUlxmSFxcXGZIaVxmSEFcZklsXGZIe1xmSENcZklrXGZISFxmSW1cZkhCXGZIWVxmSWdcZkhzXGZISlxmSWtcZkhuXGZIaVxmSHtcZkhcXFxmSHxcZkhUXGZJa1xmSEJcZklrXGZIXlxmSF5cZkh7XGZIUlxmSFVcZkhSXGZIXlxmSGZcZkhGXGZIXFxcZkh2XGZIUlxmSFxcXGZIfFxmSFRcZkhSXGZISlxmSWtcZkhcXFxmSHBcZkhTXGZIVFxmSEpcZkhTXGZIXlxmSEBcZkhuXGZISlxmSEBcZkhEXGZIUlxmSFVcZkluXGZIblxmSF5cZkhSXGZIelxmSHBcZklsXGZISFxmSEBcZkhzXGZIRFxmSEJcZkhTXGZIXlxmSGtcZkhUXGZJa1xmSGpcZkhEXGZJa1xmSERcZkhDXGZIUlxmSHlcZkltXGZIXlxmSF5cZkllXGZIe1xmSEFcZkhSXGZIe1xmSFxcXGZJa1xmSF5cZkhwXGZIe1xmSFVcZkhcXFxmSFJcZkhCXGZIXlxmSHtcZklrXGZIRlxmSWtcZkhwXGZIVVxmSFJcZkhJXGZIa1xmSFRcZklsXGZIVFxmSFVcZklsXGZIeVxmSF5cZkhSXGZITFxmSWxcZkh5XGZIVVxmSFJcZkhtXGZISlxmSW5cZkhcXFxmSEhcZkhVXGZISFxmSFRcZkhSXGZISFxmSENcZkhSXGZISlxmSGpcZkhDXGZIUlxmSEZcZkhSXGZIeVxmSHlcZklgXGZIRFxmSFpcZkhSXGZIQlxmSEpcZklrXGZIelxmSENcZkhVXGZJbFxmSFxcXGZIUlxmSENcZkh6XGZJbVxmSEpcZkheXGZIe1xmSWxgYndmZGxxamZwZntzZnFqZm1gZj8sd2p3b2Y9Dlx0QGxzenFqZGt3I2lidWJwYHFqc3dgbG1nandqbG1wZnVmcXp3a2ptZD9zI2BvYnBwPiF3ZmBrbWxvbGR6YWJgaGRxbHZtZz9iI2BvYnBwPiFuYm1iZGZuZm13JWBsc3o4IzEzMmlidWJQYHFqc3dga2JxYmB3ZnFwYXFmYmdgcXZuYXdrZm5wZm91ZnBrbHFqeWxtd2JvZGx1ZnFtbmZtd0Bib2plbHFtamJiYHdqdWp3amZwZ2pwYGx1ZnFmZ01idWpkYndqbG13cWJtcGp3amxtYGxtbWZgd2psbW1idWpkYndqbG1ic3NmYnFibWBmPyx3andvZj0/bmBrZmBoYWx7ISN3ZmBrbWpydmZwc3Fsd2Zgd2psbWJzc2JxZm13b3picCN0Zm9vI2Jwdm13JC8jJFZCLnFmcGxvdndqbG1sc2ZxYndqbG1wd2ZvZnVqcGpsbXdxYm1wb2J3ZmdUYnBram1kd2xtbWJ1amRid2xxLSM+I3RqbWdsdC1qbnNxZnBwamxtJW93OGFxJWR3OG9qd2ZxYnd2cWZzbHN2b2J3amxtYWRgbG9scT4hIGZwc2ZgamJvb3ojYGxtd2Ztdz4hc3FsZ3Zgd2psbW1mdHBvZnd3ZnFzcWxzZnF3amZwZ2Zlam1qd2psbW9mYmdmcXBranNXZmBrbWxvbGR6U2Jxb2pibmZtd2BsbnNicWpwbG12byNgb2JwcD4hLWptZ2Z7TGUrIWBsbWBvdnBqbG1nanBgdnBwamxtYGxuc2xtZm13cGFqbG9sZGpgYm9RZnVsb3Z3amxtXFxgbG13YmptZnF2bWdmcXB3bGxnbWxwYHFqc3c9P3NmcW5qcHBqbG1mYmBrI2x3a2ZxYndubHBza2ZxZiNsbWVsYHZwPiE/ZWxxbiNqZz4hc3FsYGZwcGptZHdranAtdWJvdmZkZm1mcWJ3amxtQGxtZWZxZm1gZnB2YXBmcnZmbXd0Zm9vLmhtbHRtdWJxamJ3amxtcHFmc3Z3YndqbG1za2ZtbG5mbWxtZ2pwYGpzb2ptZm9sZGwtc21kISMrZ2xgdm5mbXcvYWx2bWdicWpmcGZ7c3FmcHBqbG1wZnd3b2ZuZm13QWJgaGRxbHZtZ2x2dyNsZSN3a2ZmbXdmcXNxanBmKyFrd3dzcDkhI3ZtZnBgYnNmKyFzYnBwdGxxZyEjZ2ZubGBxYndqYD9iI2txZmU+ISx0cWJzc2ZxIT1cdG5mbmFmcXBranNvam1kdmpwd2pgc3s4c2JnZ2ptZHNram9scGxza3picHBqcHdibWBmdm1qdWZxcGp3emViYGpvandqZnBxZmBsZG1qeWZnc3FmZWZxZm1gZmplIyt3enNmbGVuYmptd2JqbWZndWxgYmF2b2Jxemt6c2x3a2ZwanAtcHZhbmp3Kyo4JWJuczhtYXBzOGJtbWx3YndqbG1hZmtqbWcjd2tmRWx2bWdid2psbXN2YW9qcGtmcSFicHB2bnN3amxtam13cWxndmBmZ2BscXF2c3dqbG1wYGpmbXdqcHdwZntzb2pgandvemptcHdmYmcjbGVnam5mbXBqbG1wI2xtQG9qYGg+IWBsbXBqZ2ZxZmdnZnNicXduZm13bGBgdnNid2psbXBsbG0jYmV3ZnFqbXVmcHduZm13c3FsbWx2bWBmZ2pnZm13amVqZmdme3NmcWpuZm13TmJtYmRmbmZtd2RmbGRxYnNramAhI2tmamRrdz4hb2ptaCNxZm8+IS1xZnNvYmBmKyxnZnNxZnBwamxtYGxtZWZxZm1gZnN2bWpwa25mbXdmb2puam1id2ZncWZwanB3Ym1gZmJnYnN3YndqbG1sc3NscGp3amxtdGZvbyNobWx0bXB2c3NvZm5mbXdnZndmcW5qbWZnazIjYG9icHA+ITNzezhuYnFkam1uZmBrYm1qYGJvcHdid2pwd2pgcGBmb2ZhcWJ3ZmdEbHVmcW1uZm13XHRcdEd2cWptZCN3Z2Z1Zm9sc2ZxcGJxd2plamBqYm9mcnZqdWJvZm13bHFqZGptYndmZ0Bsbm5qcHBqbG1id3diYGtuZm13P3BzYm0jamc+IXdrZnFmI3RmcWZNZmdmcW9ibWdwYWZ6bG1nI3drZnFmZGpwd2ZxZmdpbHZxbWJvanB3ZXFmcnZmbXdvemJvbyNsZSN3a2ZvYm1kPiFmbSEjPyxwd3pvZj0OXHRiYXBsb3Z3ZjgjcHZzc2xxd2ptZGZ7d3FmbmZveiNuYmptcHdxZmJuPyxwd3FsbWQ9I3Nsc3ZvYnFqd3pmbnNvbHpuZm13Pyx3YmFvZj0OXHQjYGxvcHNibT4hPyxlbHFuPVx0IyNgbG11ZnFwamxtYmFsdncjd2tmIz8scz0/LGdqdT1qbXdmZHFid2ZnISNvYm1kPiFmbVNscXd2ZHZmcGZwdmFwd2p3dndmam1nanVqZ3Zib2puc2xwcGphb2Zudm93am5mZ2piYm9ubHB3I2Jvb3N7I3Bsb2pnIyBic2JxdyNlcWxucHZhaWZgdyN3bGptI0ZtZG9qcGtgcWp3amBqeWZnZntgZnN3I2VscWR2amdmb2ptZnBscWpkam1ib296cWZuYnFoYmFvZndrZiNwZmBsbWdrMSNgb2JwcD4hP2Ijd2p3b2Y+IStqbWBvdmdqbWRzYnFibmZ3ZnFwc3Fsa2phandmZz4jIWt3d3M5LCxnamB3amxtYnF6c2ZxYGZzd2psbXFmdWxvdndqbG1lbHZtZ2J3amxtc3s4a2ZqZGt3OXB2YGBmcHBldm9wdnNzbHF3ZnFwbmpvb2ZtbWp2bmtqcCNlYndrZnF3a2YjJXJ2bHc4bWwucWZzZmJ3OGBsbm5mcWBqYm9qbWd2cHdxamJvZm1gbHZxYmRmZ2JubHZtdyNsZSN2bWxlZWpgamJvZmVlamBqZm1gelFmZWZxZm1gZnBgbGxxZ2ptYndmZ2pwYG9iam5mcWZ7c2ZnandqbG1nZnVmb2xzam1kYGJvYHZvYndmZ3BqbnNvamVqZmdvZmRqd2puYndmcHZhcHdxam1kKzMhI2BvYnBwPiFgbG5zb2Z3Zm96am9vdnB3cWJ3ZmVqdWYjemZicXBqbXB3cXZuZm13U3Zhb2pwa2ptZDIhI2BvYnBwPiFzcHpga2xvbGR6YGxtZWpnZm1gZm12bmFmcSNsZSNiYXBmbWBmI2xlZWxgdnBmZyNsbWlsam1mZyN3a2Zwd3F2YHd2cWZwc3FmdWpsdnBvej0/LGplcWJuZj1sbWBmI2JkYmptYXZ3I3Fid2tmcWpubmpkcWJtd3BsZSNgbHZxcGYvYiNkcWx2cyNsZU9qd2ZxYnd2cWZWbW9qaGYjd2tmPyxiPSVtYXBzOFx0ZXZtYHdqbG0jancjdGJwI3drZkBsbXVmbXdqbG1idndsbmxham9mU3Fsd2Zwd2Jtd2JkZHFmcHBqdWZiZXdmcSN3a2YjUGpuam9icW96LyEjLD0/LGdqdT1gbG9vZmB3amxtDlx0ZXZtYHdqbG11anBqYWpvand6d2tmI3ZwZiNsZXVsb3Ztd2ZmcXBid3dxYmB3amxtdm1nZnEjd2tmI3drcWZid2ZtZmcpPyJYQEdCV0JYam5zbHF3Ym1gZmptI2RmbWZxYm93a2Yjb2J3d2ZxPyxlbHFuPVx0Pywtam1nZntMZSskaiM+IzM4I2ojP2dqZWVmcWZtYGZnZnVsd2ZnI3dsd3FiZ2p3amxtcHBmYnFgayNlbHF2b3dqbmJ3Zm96d2x2cW1ibmZtd2J3d3FqYXZ3ZnBwbC5gYm9vZmcjflx0Pyxwd3pvZj1mdWJvdmJ3amxtZm5za2JwanlmZ2JgYGZwcGphb2Y/LHBmYHdqbG09cHZgYGZwcGpsbWJvbG1kI3Rqd2tOZmJtdGtqb2Yvam1ndnB3cWpmcD8sYj0/YXEjLD1rYnAjYWZgbG5mYnBzZmB3cCNsZVdmb2Z1anBqbG1wdmVlamBqZm13YWJwaGZ3YWJvb2Fsd2sjcGpnZnBgbG13am12am1kYm0jYnF3amBvZj9qbmQjYm93PiFiZ3VmbXd2cWZwa2pwI25sd2tmcW5ibWBrZnB3ZnFzcWptYGpzb2Zwc2Jxd2pgdm9icWBsbm5mbXdicXpmZWVmYHdwI2xlZ2ZgamdmZyN3bCE9P3B3cWxtZD1zdmFvanBrZnFwSWx2cW1ibyNsZWdqZWVqYHZvd3plYmBqb2p3YndmYmBgZnN3YmFvZnB3em9mLWBwcCFcbmV2bWB3amxtI2ptbWx1YndqbG09QGxzenFqZGt3cGp3dmJ3amxtcHRsdm9nI2tidWZhdnBqbWZwcGZwR2pgd2psbWJxenB3YndmbmZtd3BsZXdmbSN2cGZnc2ZxcGpwd2Ztd2ptI0libXZicXpgbG5zcWpwam1kPyx3andvZj1cdFxuZ2pzb2xuYndqYGBsbXdiam1qbWRzZnFlbHFuam1kZnt3Zm1wamxtcG5ieiNtbHcjYWZgbG1gZnN3I2xlI2xtYG9qYGg+IUp3I2pwI2JvcGxlam1ibWBqYm8jbmJoam1kI3drZk92e2ZuYWx2cWRiZ2dqd2psbWJvYnFmI2Bib29mZ2ZtZGJkZmcjam0hcGBxanN3ISo4YXZ3I2p3I3RicGZvZmB3cWxtamBsbXB2YW5qdz4hXHQ/Ii4uI0ZtZyNmb2Zgd3FqYGJvbGVlamBqYm9venB2ZGRmcHdqbG13bHMjbGUjd2tmdm1vamhmI3drZkJ2cHdxYm9qYm1McWpkam1ib296cWZlZnFmbWBmcFx0PyxrZmJnPQ5cdHFmYGxkbWpwZmdqbWp3amJvanlmb2puandmZyN3bEJvZntibWdxamJxZndqcWZuZm13Qmd1Zm13dnFmcGVsdnEjemZicXBcdFx0JW93OCIuLiNqbWBxZmJwam1kZ2ZgbHFid2psbWswI2BvYnBwPiFscWpkam1wI2xlbGFvamRid2psbXFmZHZvYndqbG1gb2JwcGplamZnK2V2bWB3amxtK2JndWJtd2JkZnBhZmptZCN3a2Yja2pwd2xxamJtcD9hYnBmI2txZmVxZnNmYndmZ296dGpvb2ptZCN3bGBsbnNicWJhb2ZnZnBqZG1id2ZnbWxuam1id2psbWV2bWB3amxtYm9qbXBqZ2Yjd2tmcWZ1Zm9id2psbWZtZyNsZSN3a2ZwI2VscSN3a2YjYnZ3a2xxanlmZ3FmZXZwZmcjd2x3YmhmI3NvYmBmYnZ3bG1sbmx2cGBsbnNxbG5qcGZzbG9qd2pgYm8jcWZwd2J2cWJtd3d0bCNsZSN3a2ZFZmFxdmJxeiMxcnZib2p3eiNsZXB0ZWxhaWZgdy12bWdmcXB3Ym1nbWZicW96I2Jvb3Rxand3Zm0jYXpqbXdmcXVqZnRwISN0amd3az4hMnRqd2tncWJ0Ym9lb2xidzlvZmV3anAjdnB2Ym9vemBibWdqZ2J3ZnBtZnRwc2JzZnFwbnpwd2Zxamx2cEdmc2Jxd25mbXdhZnB3I2htbHRtc2Jxb2pibmZtd3B2c3NxZnBwZmdgbG11Zm1qZm13cWZuZm5hZnFmZ2dqZWVmcWZtdyNwenB3Zm5id2pga2JwI29mZyN3bHNxbHNiZGJtZ2JgbG13cWxvb2Znam1lb3ZmbWBmcGBmcWZubG1qYm9zcWxgb2JqbmZnU3Fsd2Zgd2psbW9qI2BvYnBwPiFQYGpmbXdqZWpgYG9icHA+IW1sLndxYmdmbmJxaHBubHFmI3drYm0jdGpnZnBzcWZiZ09qYWZxYndqbG13bGxoI3NvYmBmZ2J6I2xlI3drZmJwI29sbWQjYnBqbnNxanBsbWZnQmdnandqbG1ib1x0P2tmYmc9XHQ/bk9iYWxxYndscXpNbHVmbmFmcSMxZntgZnN3amxtcEptZ3Zwd3FqYm91YnFqZnd6I2xlZW9sYnc5I29mZUd2cWptZCN3a2ZicHBmcHBuZm13a2J1ZiNhZmZtI2dmYm9wI3Rqd2tQd2J3anB3amBwbGBgdnFxZm1gZix2bz0/LGdqdT1gb2ZicWVqeyE9d2tmI3N2YW9qYG5ibXojemZicXB0a2pgayN0ZnFmbHVmcSN3am5mL3B6bWxtem5sdnBgbG13Zm13IT1cdHNxZnB2bmJhb3pranAjZWJuam96dnBmcUJkZm13LXZtZntzZmB3ZmdqbWBvdmdqbWQjYGtib29mbWRmZ2IjbmptbHFqd3p2bWdmZWptZmchYWZvbG1kcCN3bHdiaGZtI2VxbG5qbSNMYHdsYWZxc2xwandqbG05I3Biamcjd2wjYWZxZm9qZGpsdnAjRWZnZnFid2psbSNxbHRwc2JtPiFsbW96I2IjZWZ0bmZibXcjd2tid29mZyN3bCN3a2YuLj0OXHQ/Z2p1Iz9lamZvZ3Bmdz1CcWBrYWpwa2xzI2BvYnBwPiFtbGFmam1kI3ZwZmdic3NxbGJga2Zwc3FqdWpvZmRmcG1scGBxanN3PVx0cWZwdm93cCNqbW5ieiNhZiN3a2ZGYnB3ZnEjZmRkbmZga2JtanBucHFmYnBsbWJhb2ZTbHN2b2J3amxtQGxvb2Zgd2psbXBmb2Zgd2ZnIT1tbHBgcWpzdz0OLGptZ2Z7LXNrc2JxcWp1Ym8jbGUuaXBwZ2gkKio4bmJtYmRmZyN3bGptYGxuc29md2ZgYnB2Ym93amZwYGxuc29md2psbUBrcWpwd2pibXBQZnN3Zm5hZnEjYnFqd2tuZndqYHNxbGBmZ3ZxZnBuamRrdyNrYnVmU3FsZ3Zgd2psbWp3I2Jzc2ZicXBTa2pvbHBsc2t6ZXFqZm1ncGtqc29mYmdqbWQjd2xkanVqbWQjd2tmd2x0YnFnI3drZmR2YnFibXdmZmdnbGB2bmZtd2ZnYGxvbHE5IDMzM3VqZ2ZsI2RibmZgbG5uanBwamxtcWZlb2Zgd2ptZGBrYm1kZiN3a2ZicHBsYGpid2ZncGJtcC5wZnFqZWxtaGZ6c3FmcHA4I3NiZ2dqbWQ5S2YjdGJwI3drZnZtZ2Zxb3pqbWR3enNqYGJvb3ojLyNibWcjd2tmI3BxYEZvZm5mbXdwdmBgZnBwanVmcGptYGYjd2tmI3BrbHZvZyNhZiNtZnd0bHFoam1kYmBgbHZtd2ptZHZwZiNsZSN3a2ZvbHRmcSN3a2JtcGtsdHAjd2tidz8scHNibT1cdFxuXG5gbG5zb2JqbXdwYGxtd2ptdmx2cHJ2Ym13andqZnBicHdxbG1sbmZxa2YjZ2pnI21sd2d2ZiN3bCNqd3Bic3NvamZnI3dsYm0jYnVmcWJkZmZlZWxxd3Ajd2x3a2YjZXZ3dnFmYnd3Zm5zdyN3bFdrZnFmZWxxZi9gYnNiYWpvand6UWZzdmFvamBibXRicCNlbHFuZmdGb2Zgd3FsbWpgaGpvbG5md2ZxcGBrYm9vZm1kZnBzdmFvanBram1kd2tmI2VscW5mcWptZ2pkZm1sdnBnanFmYHdqbG1wcHZhcGpnamJxemBsbXBzanFiYHpnZndiam9wI2xlYm1nI2ptI3drZmJlZWxxZ2Jhb2ZwdmFwd2JtYGZwcWZicGxtI2VscWBsbXVmbXdqbG1qd2Zud3pzZj4hYmFwbG92d2ZvenB2c3NscGZnb3pxZm5iam1mZyNiYnd3cWJgd2p1ZndxYnVmb29qbWRwZnNicWJ3Zm96ZWxgdnBmcCNsbWZvZm5mbXdicXpic3NvamBiYW9mZWx2bWcjd2tid3B3em9mcGtmZnduYm12cGBxanN3cHdibWdwI2VscSNtbC5xZnNmYncrcGxuZndqbmZwQGxubmZxYGpib2ptI0JuZnFqYGJ2bWdmcXdiaGZtcnZicXdmcSNsZWJtI2Z7Ym5zb2ZzZnFwbG1ib296am1nZnstc2tzPD8sYXZ3d2xtPVx0c2ZxYGZtd2JkZmFmcHcuaG1sdG1gcWZid2ptZCNiISNnanE+IW93cU9qZnZ3Zm1ibXdcdD9nanUjamc+IXdrZnojdGx2b2diYWpvand6I2xlbmJnZiN2cyNsZW1sd2ZnI3drYndgb2ZicSN3a2J3YnFkdmYjd2tid3dsI2JtbHdrZnFga2pvZ3FmbSRwc3Zxc2xwZiNsZWVscW52b2J3ZmdhYnBmZyN2c2xtd2tmI3FmZGpsbXB2YWlmYHcjbGVzYnBwZm1kZnFwc2xwcGZwcGpsbS1cdFx0Sm0jd2tmI0FmZWxxZiN3a2ZiZXdmcXRicWdwYHZxcWZtd296I2JgcWxwcCN3a2ZwYGpmbXdqZWpgYGxubnZtand6LWBic2p3Ym9qcG5qbSNEZnFuYm16cWpka3cudGptZHdrZiNwenB3Zm5QbGBqZnd6I2xlc2xvandqYGpibWdqcWZgd2psbTl0Zm13I2xtI3dscWZubHVibyNsZSNNZnQjWmxxaCNic2Jxd25mbXdwam1namBid2psbWd2cWptZCN3a2Z2bW9mcHAjd2tma2pwd2xxamBib2tiZyNhZmZtI2JnZmVqbWp3anVmam1kcWZnamZtd2J3d2ZtZ2JtYGZAZm13ZnEjZWxxc3FsbmptZm1gZnFmYmd6UHdid2Zwd3Fid2ZkamZwYXZ3I2ptI3drZmJwI3NicXcjbGVgbG1wd2p3dndmYG9iam4jd2tid29iYWxxYndscXpgbG5zYndqYW9mZWJqb3ZxZiNsZS8jcHZgayNicCNhZmRibSN0andrdnBqbWQjd2tmI3dsI3NxbHVqZ2ZlZmJ3dnFmI2xlZXFsbiN0a2pgaywhI2BvYnBwPiFkZmxvbGRqYGJvcGZ1ZnFibyNsZWdmb2phZnFid2ZqbnNscXdibXcja2xvZ3Ajd2tid2ptZCVydmx3OCN1Ym9qZG0+d2xzd2tmI0RmcW5ibWx2d3BqZ2YjbGVtZmRsd2pid2Zna2pwI2BicWZmcXBmc2JxYndqbG1qZz4hcGZicWBrdGJwI2Bib29mZ3drZiNlbHZxd2txZmBxZmJ3amxtbHdrZnEjd2tibXNxZnVmbXdqbG10a2pvZiN3a2YjZmd2YGJ3amxtL2BsbW1mYHdqbWRiYGB2cWJ3Zm96dGZxZiNhdmpvd3RicCNoam9vZmdiZHFmZm5mbXdwbnZgayNubHFmI0d2ZiN3bCN3a2Z0amd3azkjMjMzcGxuZiNsd2tmcUhqbWRnbG4jbGV3a2YjZm13anFmZWJubHZwI2VscXdsI2BsbW1mYHdsYWlmYHdqdWZwd2tmI0VxZm1ga3NmbHNvZiNibWdlZmJ3dnFmZyE9anAjcGJqZyN3bHB3cXZgd3ZxYm9xZmVmcWZtZ3ZubmxwdyNsZXdmbWIjcGZzYnFid2YuPVx0P2dqdSNqZyNMZWVqYGpibyN0bHFvZ3RqZ2YtYnFqYi5vYmFmb3drZiNzb2JtZndibWcjancjdGJwZyEjdWJvdmY+IW9sbGhqbWQjYndhZm1mZWpgamJvYnFmI2ptI3drZm5sbWp3bHFqbWRxZnNscXdmZ296d2tmI25sZ2ZxbXRscWhqbWQjbG1ib29sdGZnI3dsdGtmcWYjd2tmI2ptbWx1YndqdWY/LGI9PyxnanU9cGx2bWd3cWJgaHBmYnFga0VscW53Zm1nI3dsI2Fmam1zdncjamc+IWxzZm1qbWQjbGVxZnB3cWpgd2ZnYmdsc3dmZyNhemJnZ3FmcHBqbWR3a2Zsb2xkamJtbmZ3a2xncCNsZXVicWpibXcjbGVAa3FqcHdqYm0jdWZxeiNvYnFkZmJ2d2xubHdqdWZheiNlYnEjd2tmcWJtZGYjZXFsbnN2cXB2ancjbGVlbG9vbHQjd2tmYXFsdmRrdyN3bGptI0ZtZG9ibWdiZHFmZiN3a2J3YmBgdnBmZyNsZWBsbmZwI2VxbG5zcWZ1Zm13am1kZ2p1I3B3em9mPmtqcCNscSNrZnF3cWZuZm1nbHZwZXFmZmdsbiNsZWBsbWBmcW1qbWQzIzJmbiMyZm44QWJwaGZ3YWJvbyxwd3pvZi1gcHBibSNmYnFvamZxZnVmbSNiZXdmcSwhI3dqd29mPiEtYGxuLGptZ2Z7d2Joam1kI3drZnNqd3dwYXZxZGtgbG13Zm13IT0OP3BgcWpzdz0rZXd2cW1mZyNsdndrYnVqbWQjd2tmPyxwc2JtPQ5cdCNsYGBicGpsbWJvYWZgYnZwZiNqd3B3YnF3Zmcjd2xza3pwamBib296PT8sZ2p1PVx0IyNgcWZid2ZnI2F6QHZxcWZtd296LyNhZGBsb2xxPiF3YmFqbWdmez4hZ2pwYnB3cWx2cEJtYm96d2pgcCNib3BsI2ticCNiPT9nanUjamc+IT8scHd6b2Y9XHQ/YGJvb2ZnI2VscXBqbWRmcSNibWctcHFgIz4jISwsdWpsb2J3amxtcHdranAjc2xqbXdgbG1wd2Jtd296anAjb2xgYndmZ3FmYGxxZ2ptZHBnI2VxbG4jd2tmbWZnZnFvYm1ncHNscXd2ZHYvRnA7Tjt9O0Q7dTtGNW00SzRdNF83YGdmcGJxcWxvb2xgbG5mbXdicWpsZmd2YGJgai9fbXBmc3dqZm5hcWZxZmRqcHdxYmdsZ2pxZmBgai9fbXZhamBiYGovX21zdmFvamBqZ2JncWZwc3ZmcHdicHFmcHZvd2JnbHBqbnNscXdibXdmcWZwZnF1YmdscGJxdy9BYHZvbHBnamVmcWZtd2ZwcGpkdmpmbXdmcHFmcy9WYW9qYGJwand2YmBqL19tbmptanB3ZnFqbHNxanViYGpnYmdnanFmYHdscWpsZWxxbmJgai9fbXNsYW9iYGovX21zcWZwamdmbXdmYGxtdycsJ2ZtamdscGJgYGZwbHFqbHB3ZmBrbWxxYndqc2ZxcGxtYm9mcGBid2ZkbHEvQWJmcHNmYGpib2ZwZ2pwc2xtamFvZmJgd3Zib2pnYmdxZmVmcWZtYGpidWJvb2JnbG9qZ2FqYW9qbHdmYGJxZm9iYGpsbWZwYGJvZm1nYnFqbHNsby9Bd2pgYnBibXdmcWpscWZwZ2xgdm5mbXdscG1id3ZxYm9meWJuYndmcWpib2ZwZ2plZnFmbWBqYmZgbG0vX25qYGJ3cWJtcHNscXdmcWxncS9BZHZmeXNicXdqYGpzYnFmbWB2Zm13cWJtZ2pwYHZwai9fbWZwd3F2YHd2cWJldm1nYmBqL19tZXFmYHZmbXdmcHNmcW5ibWZtd2Z3bHdib25mbXdmPFA8UjxaPFE8UjxdPW88WDxZPW48UDxSPFo8WT1uPF49bDxZPFA9Yz1uPFxcPFY8WjxZPWs9bjxSPF09ZzxdPFI8VzxZPFk8Uj1rPFk8UT1gPWE9bjxSPF88UjxWPFI8XzxYPFxcPFM8Uj1tPFc8WTxePW08WTxfPFI9bTxcXDxVPW48WT1rPFk9bDxZPFs8UDxSPF89bz1uPW08XFw8VT1uPFxcPFo8VDxbPFE8VDxQPFk8WjxYPW88XT1vPFg9bz1uPHM8UjxUPW08VjxbPFg8WT1tPWA8XjxUPFg8WTxSPW08Xj1jPFs8VDxRPW88WjxRPFI9bTxePFI8WTxVPFc9YjxYPFk8VTxTPFI9bDxRPFI8UDxRPFI8XzxSPFg8WT1uPFk8VT1tPF48UjxUPWk8Uz1sPFxcPF48XFw9bjxcXDxWPFI8VTxQPFk9bT1uPFI8VDxQPFk8WT1uPFo8VDxbPFE9YDxSPFg8UTxSPFU8Vz1vPWs9ZDxZPFM8WT1sPFk8WD1rPFxcPW09bjxUPWs8XFw9bT1uPWA9bDxcXDxdPFI9bjxRPFI8Xj1nPWk8Uz1sPFxcPF48Uj1tPFI8XTxSPFU8UzxSPW48UjxQPFA8WTxRPFk8WT1rPFQ9bTxXPFk8UTxSPF49ZzxZPW89bTxXPW88XzxSPFY8UjxXPFI8UTxcXDxbPFxcPFg9bjxcXDxWPFI8WT1uPFI8XzxYPFxcPFM8Uj1rPW48VDxzPFI9bTxXPFk9bjxcXDxWPFQ8WTxRPFI8Xj1nPFU9bT1uPFI8VD1uPW48XFw8VjxUPWk9bT1sPFxcPFs9bzxNPFxcPFE8Vj1uPWg8Uj1sPW88UDx2PFI8XzxYPFxcPFY8UTxUPF88VD1tPFc8UjxePFxcPFE8XFw9ZDxZPFU8UTxcXDxVPW48VD1tPF48UjxUPFA9bTxePWM8Wz1gPFc9YjxdPFI8VT1rPFxcPW09bjxSPW09bDxZPFg8VDx2PWw8UjxQPFk8SDxSPWw9bzxQPWw9ZzxRPFY8WT1tPW48XFw8VzxUPFM8UjxUPW08Vj1uPWc9bT1jPWs8UDxZPW09Yz1qPWo8WTxRPW49bD1uPWw9bzxYPFxcPW08XFw8UD1nPWk9bD1nPFE8VjxcXDxxPFI8Xj1nPFU9azxcXD1tPFI8XjxQPFk9bT1uPFxcPWg8VDxXPWA8UDxQPFxcPWw9bjxcXD1tPW49bDxcXDxRPFA8WT1tPW48WT1uPFk8Vj1tPW48UTxcXD1kPFQ9aTxQPFQ8UT1vPW48VDxQPFk8UTxUPFQ8UDxZPWI9bjxRPFI8UDxZPWw8XzxSPWw8UjxYPW08XFw8UDxSPFA9YT1uPFI8UD1vPFY8UjxRPWo8WT1tPF48UjxZPFA8VjxcXDxWPFI8VTx8PWw9aTxUPF41aTVqNEY0QzVlNEk0XTRfNEs1aDRdNF80SzVoNEU0SzVoNFU0SzVpNW80RjRENWs0SzRENF00SzVpNEA0SzVoNWY1ZDVpNEs1aDRZNWQ0XTRANEM1ZjRDNEU0SzVoNFU0WjVkNEk0WjRLNW00RTRLNWg1bjRfNWk0SzVoNFU0SzRENEY0QTVpNWY1aDVpNWg1bTRLNEY1aTVoNEY1bjVlNEY0VTRDNWY1aDRLNWg0WDRVNF00TzRCNEQ0SzRdNEY0WzVkNWY0XTRVNWg1ZjVvNWk0STRdNW00SzVuNFs1aDRENEs0RjRLNWg1aDRWNEU0RjRdNEY1ZjRENEs1aDVqNEs0XzRLNWg0WDVmNEI1aTVqNEY0QzVmNEs1aDRVNF00RDRLNWg1bjRZNFk0SzVtNWg0SzVpNFU1aDVmNWs0SzRGNEE0QzVmNEc0SzVoNWg1azVpNEs1aDRVNWk1aDVpNW80RjRENEU1ZjVpNW81ajVvNEs1aDRbNW01aDVtNWY0QzVmNWQ0STRDNEs0XTRFNEY0SzRdNWY0QjRLNWg0WTRBNEU0RjRfNEA1ZjVoNEs1aDVkNW40RjRVNWo0QzVpNEs1aTRDNWY1ajRFNEY0WTVpNWY1aTRPNF00WDVmNW00SzVoNFxcNWY1ajRVNF00RDVmNEU0RDVkNEs0RDRFNE81aDRVNEs0RDRLNWg0XzVtNF01aTRYNEs1bzVoNEY0VTRLNWg1ZTRLNWg0TzVkNWg0SzVoNF81ajRFNEA0SzVpNFU0RTRLNWg0WTRBNW00SzVoNEM1ZjVqNW81aDVpNEs0RjRLNWg0QjRLNFk0SzVoNWk1aDVtNE80VTRaNEs0TTVvNEY0SzRENEU0SzVoNEI1ZjRdNF00XzRLNEo1aDRLNWg1bjVoNEQ0SzVoNE80QzRENWk1bjRLNFs0VTVpNF00SzRfNWg1aTVqNFs1bjRFNEs1aDVvNEY0RDRLNWg0XTRANWg0SzRYNEY0XTVvNEs1aDVuNEM1aTVmNFU0WzVmNW9wQXpXYmRNYm5mKy1pc2QhI2Jvdz4hMnN7I3Bsb2pnIyAtZGplISNib3c+IXdxYm1wc2JxZm13am1lbHFuYndqbG1ic3NvamBid2psbSEjbG1gb2pgaD4hZnB3YmFvanBrZmdiZ3VmcXdqcGptZC1zbWQhI2Jvdz4hZm11anFsbW5mbXdzZnFlbHFuYm1gZmJzc3Fsc3FqYndmJWJuczhuZ2Jwazhqbm5mZ2pid2Zvej8scHdxbG1kPT8scWJ3a2ZxI3drYm13Zm5zZnFid3ZxZmdmdWZvbHNuZm13YGxuc2Z3andqbG1zb2JgZmtsb2dmcXVqcGpham9qd3o5YGxzenFqZGt3IT0zISNrZmpka3c+IWZ1Zm0jd2tsdmRrcWZzb2JgZm5mbXdnZnB3am1id2psbUBscXNscWJ3amxtP3ZvI2BvYnBwPiFCcHBsYGpid2psbWptZ2p1amd2Ym9wc2ZxcHNmYHdqdWZwZndXam5mbHZ3K3Zxbytrd3dzOSwsbmJ3a2ZuYndqYHBuYnFkam0ud2xzOWZ1Zm13dmJvb3ojZ2ZwYHFqc3dqbG0qI21sLnFmc2Zid2Bsb29mYHdqbG1wLUlTRH93a3ZuYX9zYnF3amBqc2J3ZixrZmJnPT9hbGd6ZW9sYnc5b2Zldzg/b2ojYG9icHA+IWt2bWdxZmdwI2xlXHRcdEtsdGZ1ZnEvI2BsbnNscGp3amxtYG9mYnE5YWx3azhgbGxzZnFid2psbXRqd2tqbSN3a2Yjb2JhZm8jZWxxPiFhbHFnZnEud2xzOU1mdCNZZmJvYm1ncWZgbG5uZm1nZmdza2x3bGRxYnNremptd2ZxZnB3am1kJW93OHB2cyVkdzhgbG13cWx1ZnFwek1md2tmcW9ibWdwYm93ZnFtYndqdWZuYntvZm1kd2s+IXB0and5ZnFvYm1nR2Z1Zm9sc25mbXdmcHBmbXdqYm9velx0XHRCb3drbHZkayM/LHdme3dicWZiPXdrdm1nZnFhanFncWZzcWZwZm13ZmclYm5zOG1nYnBrOHBzZmB2b2J3amxtYGxubnZtandqZnBvZmRqcG9id2psbWZvZmB3cWxtamBwXHRcbj9nanUjamc+IWpvb3Zwd3Fid2ZnZm1kam1mZnFqbWR3ZnFxandscWpmcGJ2d2tscWp3amZwZ2pwd3FqYXZ3Zmc1ISNrZmpka3c+IXBibXAucGZxamU4YGJzYmFvZiNsZSNnanBic3NmYnFmZ2ptd2ZxYmB3anVmb2xsaGptZCNlbHFqdyN0bHZvZyNhZkJlZGtibWpwd2JtdGJwI2BxZmJ3ZmdOYndrLWVvbGxxK3B2cXFsdm1nam1kYGJtI2JvcGwjYWZsYXBmcXVid2psbW5iam13Zm1ibWBmZm1gbHZtd2ZxZmc/azEjYG9icHA+IW5scWYjcWZgZm13ancja2JwI2FmZm1qbXVicGpsbSNsZSotZGZ3V2puZisqZXZtZ2JuZm13Ym9HZnBzandmI3drZiE9P2dqdSNqZz4ham1wc2pxYndqbG1me2Juam1id2psbXNxZnNicWJ3amxtZntzb2JtYndqbG0/am1zdncjamc+IT8sYj0/LHBzYm09dWZxcGpsbXAjbGVqbXB3cXZuZm13cGFmZWxxZiN3a2YjIz4jJGt3d3M5LCxHZnBgcWpzd2psbXFmb2J3anVmb3ojLXB2YXB3cWptZCtmYmBrI2xlI3drZmZ7c2Zxam5mbXdwam1lb3ZmbXdqYm9qbXdmZHFid2psbW5ibXojc2Zsc29mZ3ZmI3dsI3drZiNgbG5ham1id2psbWdsI21sdyNrYnVmTmpnZ29mI0ZicHc/bWxwYHFqc3c9P2Bsc3pxamRrdyEjc2Zxa2JzcCN3a2ZqbXB3and2d2psbWptI0dmYGZuYWZxYnFxYm1kZm5mbXdubHB3I2Vibmx2cHNmcXBsbWJvand6YHFmYndqbG0jbGVvam5qd2J3amxtcGZ7YG92cGp1Zm96cGx1ZnFmamRtd3ouYGxtd2ZtdyE9XHQ/d2cjYG9icHA+IXZtZ2ZxZHFsdm1nc2JxYm9vZm8jd2xnbGB3cWptZiNsZWxgYHZzamZnI2F6d2ZxbmptbG9sZHpRZm1ianBwYm1gZmIjbXZuYWZxI2xlcHZzc2xxdyNlbHFme3NvbHFid2psbXFmYGxkbWp3amxtc3FmZ2ZgZnBwbHE/am5kI3BxYD4hLD9rMiNgb2JwcD4hc3Zhb2pgYndqbG1uYnojYm9wbCNhZnBzZmBqYm9qeWZnPyxlamZvZ3Bmdz1zcWxkcWZwcGp1Zm5qb29qbG1wI2xlcHdid2ZwI3drYndmbWVscWBmbmZtd2JxbHZtZyN3a2YjbG1mI2JtbHdrZnEtc2JxZm13TWxnZmJkcWpgdm93dnFmQm93ZnFtYndqdWZxZnBmYnFga2ZxcHdsdGJxZ3Ajd2tmTmxwdyNsZSN3a2ZuYm16I2x3a2ZxIytmcHNmYGpib296P3dnI3RqZ3drPiE4dGpnd2s5MjMzJmptZ2ZzZm1nZm13P2swI2BvYnBwPiEjbG1ga2JtZGY+ISotYmdnQG9icHAram13ZnFiYHdqbG1MbWYjbGUjd2tmI2didmRrd2ZxI2xlYmBgZnBwbHFqZnBhcWJtYGtmcCNsZQ5cdD9nanUjamc+IXdrZiNvYnFkZnB3Z2Zgb2JxYndqbG1xZmR2b2J3amxtcEptZWxxbmJ3amxtd3FibXBvYndqbG1nbGB2bmZtd2JxemptI2xxZ2ZxI3dsIT1cdD9rZmJnPVx0PyEja2ZqZGt3PiEyYmBxbHBwI3drZiNscWpmbXdid2psbSo4PyxwYHFqc3c9am5zb2ZuZm13ZmdgYm0jYWYjcGZmbXdrZnFmI3RicCNiZ2ZubG1wd3Fid2ZgbG13YmptZnEhPWBsbW1mYHdqbG1wd2tmI0FxandqcGt0YnAjdHFqd3dmbSJqbnNscXdibXc4c3s4I25icWRqbS5lbG9vbHRmZyNhemJham9qd3ojd2wjYGxuc29qYGJ3ZmdndnFqbWQjd2tmI2pubmpkcWJ3amxtYm9wbCNgYm9vZmc/azcjYG9icHA+IWdqcHdqbWB3amxtcWZzb2JgZmcjYXpkbHVmcW1uZm13cG9sYGJ3amxtI2xlam0jTWx1Zm5hZnF0a2Z3a2ZxI3drZj8scz1cdD8sZ2p1PWJgcnZqcGp3amxtYGJvb2ZnI3drZiNzZnFwZmB2d2psbWdmcGpkbWJ3amxteGVsbXcucGp5Zjlic3NmYnFmZyNqbWptdWZwd2pkYndmZntzZnFqZm1gZmdubHB3I29qaGZvenRqZ2ZveiN2cGZnZ2pwYHZwcGpsbXBzcWZwZm1gZiNsZSMrZ2xgdm5mbXctZnt3Zm1wanVmb3pKdyNrYnAjYWZmbWp3I2dsZnAjbWx3YGxtd3FicXojd2xqbWtiYWp3Ym13cGpuc3FsdWZuZm13cGBrbG9icXBranNgbG1wdm5zd2psbWptcHdxdmB3amxtZWxxI2Z7Ym5zb2ZsbWYjbHEjbmxxZnN7OCNzYmdnam1kd2tmI2B2cXFmbXdiI3BmcWpmcCNsZWJxZiN2cHZib296cWxvZiNqbSN3a2ZzcWZ1amx2cG96I2dmcWp1YndqdWZwZnVqZ2ZtYGYjbGVme3NmcWpmbWBmcGBsb2xxcGBrZm5mcHdid2ZnI3drYndgZnF3amVqYGJ3Zj8sYj0/LGdqdT1cdCNwZm9mYHdmZz4ha2pkayNwYGtsbG9xZnBzbG1wZiN3bGBsbmVscXdiYW9mYmdsc3dqbG0jbGV3a3FmZiN6ZmJxcHdrZiNgbHZtd3F6am0jRWZhcXZicXpwbCN3a2J3I3drZnNmbHNvZiN0a2wjc3FsdWpnZmcjYXo/c2JxYm4jbWJuZmJlZWZgd2ZnI2F6am0jd2ZxbnAjbGVic3Nsam13bmZtd0pQTC47OzY6LjIhdGJwI2FscW0jam1ranB3bHFqYGJvI3FmZGJxZ2ZnI2JwbmZicHZxZm5mbXdqcCNhYnBmZyNsbSNibWcjbHdrZnEjOSNldm1gd2psbStwamRtamVqYGJtd2Bmb2ZhcWJ3amxtd3FibXBuand3ZmcsaXAsaXJ2ZnF6LWpwI2htbHRtI2Jwd2tmbHFmd2pgYm8jd2Jham1nZns+IWp3I2Bsdm9nI2FmP21scGBxanN3PVx0a2J1am1kI2FmZm0OXHQ/a2ZiZz0OXHQ/IyVydmx3OFdrZiNgbG5zam9id2psbWtmI2tiZyNhZmZtc3FsZ3ZgZmcjYXpza2pvbHBsc2tmcWBsbXB3cXZgd2Znam13Zm1nZmcjd2xibmxtZCNsd2tmcWBsbnNicWZnI3dsd2wjcGJ6I3drYndGbWRqbWZmcWptZGIjZ2plZWZxZm13cWZlZnFxZmcjd2xnamVlZnFmbWBmcGFmb2pmZSN3a2J3c2tsd2xkcWJza3BqZ2Ztd2plemptZEtqcHdscXojbGUjUWZzdmFvamAjbGVtZmBmcHBicWpvenNxbGFiYWpvand6d2Zga21qYGJvb3pvZmJ1am1kI3drZnBzZmB3YmB2b2JxZXFiYHdqbG0jbGVmb2Zgd3FqYGp3emtmYmcjbGUjd2tmcWZwd2J2cWJtd3BzYnF3bWZxcGtqc2Zuc2ticGpwI2xtbmxwdyNxZmBmbXdwa2JxZiN0andrI3BiemptZCN3a2J3ZWpvb2ZnI3Rqd2tnZnBqZG1mZyN3bGp3I2pwI2xld2ZtIT0/LGplcWJuZj1icCNlbG9vbHRwOW5mcWRmZyN0andrd2txbHZkayN3a2ZgbG5uZnFgamJvI3Nsam13ZmcjbHZ3bHNzbHF3dm1qd3p1amZ0I2xlI3drZnFmcnZqcWZuZm13Z2p1anBqbG0jbGVzcWxkcWJubmptZGtmI3FmYGZqdWZncGZ3Sm13ZnF1Ym8hPT8scHNibT0/LGptI01mdCNabHFoYmdnandqbG1ibyNgbG5zcWZwcGpsbVx0XHQ/Z2p1I2pnPiFqbWBscXNscWJ3Zjg/LHBgcWpzdz0/Ynd3YmBrRnVmbXdhZmBibmYjd2tmIyEjd2JxZGZ3PiFcXGBicXFqZmcjbHZ3UGxuZiNsZSN3a2ZwYGpmbWBmI2JtZ3drZiN3am5mI2xlQGxtd2JqbWZxIT1uYmptd2JqbWptZEBrcWpwd2xza2ZxTnZgayNsZSN3a2Z0cWp3am1kcCNsZSEja2ZqZGt3PiExcGp5ZiNsZSN3a2Z1ZnFwamxtI2xlI25qe3d2cWYjbGUjYWZ3dGZmbSN3a2ZGe2Juc29mcCNsZWZndmBid2psbWJvYGxuc2Z3andqdWYjbG1wdmFuanc+IWdqcWZgd2xxI2xlZ2pwd2ptYHdqdWYsR1dHI1tLV05PI3Fmb2J3am1kI3dsd2ZtZ2ZtYHojd2xzcWx1am1gZiNsZXRramBrI3Rsdm9nZ2Zwc2p3ZiN3a2ZwYGpmbXdqZWpgI29mZGpwb2J3dnFmLWptbWZxS1dOTyNib29mZGJ3amxtcEJkcWpgdm93dnFmdGJwI3ZwZmcjam1ic3NxbGJgayN3bGptd2Zvb2pkZm13emZicXAjb2J3ZnEvcGJtcC5wZnFqZWdmd2Zxbmptam1kU2ZxZWxxbmJtYGZic3NmYnFibWBmcC8jdGtqYGsjanAjZWx2bWdid2psbXBiYWFxZnVqYndmZ2tqZGtmcSN3a2JtcCNlcWxuI3drZiNqbWdqdWpndmJvI2BsbnNscGZnI2xlcHZzc2xwZmcjd2xgb2JqbnAjd2tid2J3d3FqYXZ3amxtZWxtdy5wanlmOTJmb2ZuZm13cCNsZUtqcHdscWpgYm8ja2pwI2FxbHdrZnFidyN3a2Yjd2puZmJtbWp1ZnFwYnF6ZGx1ZnFtZmcjYXpxZm9id2ZnI3dsI3Zvd2puYndmb3ojam1tbHVid2psbXBqdyNqcCNwd2pvb2BibSNsbW96I2FmZ2Zlam1qd2psbXB3bEROV1B3cWptZEIjbXZuYWZxI2xlam5kI2BvYnBwPiFGdWZtd3Zib296L3RicCNga2JtZGZnbGBgdnFxZmcjam1tZmpka2FscWptZGdqcHdqbWR2anBrdGtmbSNrZiN0YnBqbXdxbGd2YGptZHdmcXFmcHdxamJvTmJteiNsZSN3a2ZicWR2ZnAjd2tid2JtI0JuZnFqYGJtYGxtcnZmcHcjbGV0amdmcHNxZmJnI3RmcWYjaGpvb2ZncGBxZmZtI2JtZyNKbSNscWdmcSN3bGZ7c2Zgd2ZnI3dsZ2ZwYGZtZ2Jtd3BicWYjb2xgYndmZ29mZGpwb2J3anVmZGZtZnFid2psbXAjYWJgaGRxbHZtZ25scHcjc2Zsc29memZicXAjYmV3ZnF3a2ZxZiNqcCNtbHdrZiNramRrZnB3ZXFmcnZmbXdveiN3a2Z6I2dsI21sd2JxZHZmZyN3a2J3cGtsdGZnI3drYndzcWZnbG5qbWJtd3drZmxvbGRqYGJvYXojd2tmI3dqbmZgbG1wamdmcWptZHBrbHF3Lm9qdWZnPyxwc2JtPT8sYj1gYm0jYWYjdnBmZ3VmcXojb2p3d29mbG1mI2xlI3drZiNrYmcjYm9xZmJnemptd2Zxc3Fmd2ZnYGxubnZtamBid2ZlZmJ3dnFmcCNsZWRsdWZxbW5mbXcvPyxtbHBgcWpzdz1mbXdmcWZnI3drZiEja2ZqZGt3PiEwSm1nZnNmbWdmbXdzbHN2b2J3amxtcG9icWRmLnBgYm9mLSNCb3drbHZkayN2cGZnI2ptI3drZmdmcHdxdmB3amxtc2xwcGpham9qd3pwd2Jxd2ptZCNqbXd0bCNscSNubHFmZntzcWZwcGpsbXBwdmFscWdqbWJ3Zm9icWRmcSN3a2Jta2pwd2xxeiNibWc/LGxzd2psbT0OXHRAbG13am1mbXdib2Zvam5qbWJ3am1kdGpvbyNtbHcjYWZzcWJgd2pgZiNsZWptI2VxbG13I2xlcGp3ZiNsZSN3a2ZmbXB2cWYjd2tid3dsI2BxZmJ3ZiNibmpwcGpwcGpzc2pzbHdmbXdqYm9vemx2d3B3Ym1nam1kYWZ3d2ZxI3drYm10a2J3I2pwI21sdHBqd3Zid2ZnI2ptbmZ3YiNtYm5mPiFXcWJnandqbG1ib3B2ZGRmcHdqbG1wV3FibXBvYndqbG13a2YjZWxxbiNsZWJ3bmxwc2tmcWpgamdmbG9sZGpgYm9mbXdmcXNxanBmcGBib2B2b2J3am1kZmJwdyNsZSN3a2ZxZm5tYm13cCNsZXNvdmRqbXBzYmRmLGptZ2Z7LXNrczxxZm5iam1mZyNqbXdxYm1wZWxxbmZnS2YjdGJwI2JvcGx0YnAjYm9xZmJnenB3YndqcHdqYGJvam0jZWJ1bHEjbGVOam1qcHdxeiNsZW5sdWZuZm13I2xlZWxxbnZvYndqbG1qcCNxZnJ2anFmZz9vam1oI3Fmbz4hV2tqcCNqcCN3a2YjP2Ija3FmZT4hLHNsc3ZvYnFqeWZnam11bG91Zmcjam1icWYjdnBmZyN3bGJtZyNwZnVmcWJvbmJnZiNheiN3a2ZwZmZucCN3bCNhZm9qaGZveiN3a2J3U2JvZnB3am1qYm1tYm5mZyNiZXdmcWp3I2tiZyNhZmZtbmxwdyNgbG5ubG13bCNxZmVmcSN3bGF2dyN3a2pwI2pwYGxtcGZgdndqdWZ3Zm5zbHFicWpvekptI2RmbWZxYm8vYGxtdWZtd2psbXB3YmhmcCNzb2JgZnB2YWdqdWpwamxtd2ZxcWp3bHFqYm9sc2ZxYndqbG1ib3NmcW5ibWZtd296dGJwI29icWRmb3psdndhcWZiaCNsZWptI3drZiNzYnB3ZWxvb2x0am1kI2Ije25vbXA5bGQ+IT0/YiNgb2JwcD4hYG9icHA+IXdme3dAbG11ZnFwamxtI25ieiNhZiN2cGZnbmJtdmViYHd2cWZiZXdmcSNhZmptZGBvZmJxZWp7IT1cdHJ2ZnB3amxtI2xldGJwI2ZvZmB3Zmd3bCNhZmBsbmYjYmFmYGJ2cGYjbGUjcGxuZiNzZmxzb2ZqbXBzanFmZyNhenB2YGBmcHBldm8jYiN3am5mI3RrZm1ubHFmI2Bsbm5sbWJubG1kcHcjd2tmYm0jbGVlamBqYm90amd3azkyMzMmOHdmYGttbG9sZHovdGJwI2JnbHN3Zmd3bCNoZmZzI3drZnBmd3dvZm5mbXdwb2p1ZiNhanF3a3BqbWdmey1rd25vIUBsbW1mYHdqYHZ3YnBwamRtZmcjd2wlYm5zOHdqbmZwOGJgYGx2bXcjZWxxYm9qZG0+cWpka3d3a2YjYGxuc2JtemJvdGJ6cCNhZmZtcWZ3dnFtZmcjd2xqbXVsb3VmbmZtd0FmYGJ2cGYjd2tmd2tqcCNzZnFqbGchI21ibmY+IXIhI2BsbWVqbWZnI3dsYiNxZnB2b3cjbGV1Ym92Zj4hISMsPWpwI2Jgd3Zib296Rm11anFsbW5mbXcOXHQ/LGtmYmc9Dlx0QGxtdWZxcGZvei89XHQ/Z2p1I2pnPiEzISN0amd3az4hMmpwI3NxbGFiYW96a2J1ZiNhZmBsbmZgbG13cWxvb2ptZHdrZiNzcWxhb2ZuYGp3anlmbXAjbGVzbG9qd2pgamJtcHFmYmBrZmcjd2tmYnAjZmJxb3ojYnA5bWxtZjgjbHVmcT93YmFvZiNgZm9vdWJvamdqd3ojbGVnanFmYHdveiN3bGxtbmx2cGZnbHRtdGtmcWYjancjanB0a2ZtI2p3I3RicG5mbmFmcXAjbGUjcWZvYndqbG0jd2xiYGBsbm5sZ2J3ZmJvbG1kI3Rqd2sjSm0jd2tmI29id2Z3a2YjRm1kb2pwa2dmb2pgamx2cCE9d2tqcCNqcCNtbHd3a2Yjc3FmcGZtd2plI3drZnojYnFmYm1nI2VqbWJvb3piI25id3dmcSNsZQ5cdFxuPyxnanU9Dlx0Dlx0PyxwYHFqc3c9ZWJwd2ZxI3drYm1uYmlscWp3eiNsZWJld2ZxI3RramBrYGxuc2JxYndqdWZ3bCNuYmptd2JqbWpuc3FsdWYjd2tmYnRicWdmZyN3a2ZmcSEjYG9icHA+IWVxYm5mYWxxZ2ZxcWZwd2xxYndqbG1qbSN3a2YjcGJuZmJtYm96cGpwI2xld2tmanEjZWpxcHdHdnFqbWQjd2tmI2BsbXdqbWZtd2JvcGZydmZtYGYjbGVldm1gd2psbSsqeGVsbXcucGp5ZjkjdGxxaCNsbSN3a2Y/LHBgcWpzdz1cdD9hZmRqbXAjdGp3a2lidWJwYHFqc3c5YGxtcHdqd3ZmbXd0YnAjZWx2bWdmZ2ZydmpvamFxanZuYnBwdm5mI3drYndqcCNkanVmbSNhem1mZmdwI3dsI2FmYGxscWdqbWJ3ZnB3a2YjdWJxamx2cGJxZiNzYnF3I2xlbG1veiNqbSN3a2ZwZmB3amxtcCNsZWpwI2IjYGxubmxtd2tmbHFqZnAjbGVnanBgbHVmcWpmcGJwcGxgamJ3amxtZmdkZiNsZSN3a2Zwd3FmbWR3ayNsZXNscGp3amxtI2ptc3FmcGZtdy5nYnp2bWp1ZnFwYm9vendsI2VscW4jd2tmYXZ3I2ptcHdmYmdgbHFzbHFid2psbWJ3d2Jga2ZnI3dsanAjYGxubmxtb3pxZmJwbG1wI2VscSMlcnZsdzh3a2YjYGJtI2FmI25iZ2Z0YnAjYmFvZiN3bHRramBrI25mYm1wYXZ3I2dqZyNtbHdsbU5sdnBmTHVmcWJwI3NscHBqYW9mbHNmcWJ3ZmcjYXpgbG5qbWQjZXFsbndrZiNzcWpuYnF6YmdnandqbG0jbGVlbHEjcGZ1ZnFib3dxYm1wZWZxcWZnYiNzZnFqbGcjbGVicWYjYmFvZiN3bGtsdGZ1ZnEvI2p3cGtsdm9nI2tidWZudmBrI29icWRmcVx0XG4/LHBgcWpzdz1iZ2xzd2ZnI3drZnNxbHNmcXd6I2xlZ2pxZmB3ZmcjYXpmZWVmYHdqdWZvenRicCNhcWx2ZGt3YGtqb2dxZm0jbGVTcWxkcWJubmptZG9sbWRmcSN3a2JtbmJtdnBgcWpzd3B0YnEjYmRiam1wd2F6I25mYm1wI2xlYm1nI25scHcjbGVwam5qb2JxI3dsI3NxbHNxamZ3YnF6bHFqZGptYndqbWRzcWZwd2pkamx2cGRxYm5uYndqYGJvZntzZnFqZm1gZi13bCNuYmhmI3drZkp3I3RicCNib3BsanAjZWx2bWcjam1gbG5zZndqd2xxcGptI3drZiNWLVAtcWZzb2JgZiN3a2ZhcWx2ZGt3I3drZmBib2B2b2J3amxtZWJvbyNsZSN3a2Z3a2YjZGZtZnFib3NxYmB3amBib296am0ja2xtbHEjbGVxZm9mYnBmZyNqbXFmcGpnZm13amJvYm1nI3BsbmYjbGVoam1kI2xlI3drZnFmYmB3amxtI3dsMnB3I0ZicW8jbGVgdm93dnFmI2JtZ3Nxam1ganNib296Pyx3andvZj1cdCMjd2tmeiNgYm0jYWZhYmBoI3dsI3drZnBsbmYjbGUja2pwZntzbHB2cWYjd2xicWYjcGpuam9icWVscW4jbGUjd2tmYmdnRWJ1bHFqd2ZgandqeWZtcGtqc3NicXcjam0jd2tmc2Zsc29mI3Rqd2tqbSNzcWJgd2pgZndsI2BsbXdqbXZmJWJuczhuam12cDhic3NxbHVmZyNheiN3a2YjZWpxcHcjYm9vbHRmZyN3a2ZibWcjZWxxI3drZmV2bWB3amxtam1kc29iemptZCN3a2ZwbG92d2psbSN3bGtmamRrdz4hMyEjam0ja2pwI2FsbGhubHFmI3drYm0jYmVsb29sdHAjd2tmYHFmYndmZyN3a2ZzcWZwZm1gZiNqbSVtYXBzOD8sd2c9bWJ3amxtYm9qcHd3a2YjamdmYiNsZWIjYGticWJgd2ZxdGZxZiNlbHFgZmcjYG9icHA+IWF3bWdienAjbGUjd2tmZWZid3ZxZmcjam1wa2x0am1kI3drZmptd2ZxZnB3I2ptam0jc29iYGYjbGV3dnFtI2xlI3drZndrZiNrZmJnI2xlT2xxZyNsZSN3a2ZzbG9qd2pgYm9vemticCNqd3AjbHRtRmd2YGJ3amxtYm9ic3NxbHVibyNsZXBsbmYjbGUjd2tmZmJgayNsd2tmcS9hZmtidWpscSNsZWJtZyNhZmBidnBmYm1nI2JtbHdrZnFic3NmYnFmZyNsbXFmYGxxZ2ZnI2ptYW9iYGglcnZsdzhuYnojam1gb3ZnZndrZiN0bHFvZyRwYGJtI29mYmcjd2xxZmVmcXAjd2wjYmFscWdmcT4hMyEjZGx1ZnFtbmZtdyN0am1tam1kI3drZnFmcHZvd2ZnI2ptI3Rram9mI3drZiNUYnBram1kd2xtL3drZiNwdmFpZmB3YGp3eiNqbSN3a2Y9PyxnanU9Dlx0XG5cbnFmZW9mYHcjd2tmd2wjYGxuc29md2ZhZmBibmYjbmxxZnFiZ2psYmB3anVmcWZpZmB3ZmcjYXp0andrbHZ3I2JtemtqcCNlYndrZnEvdGtqYGsjYGx2b2dgbHN6I2xlI3drZndsI2ptZ2pgYndmYiNzbG9qd2pgYm9iYGBsdm13cCNsZWBsbXB3and2d2ZwdGxxaGZnI3Rqd2tmcT8sYj0/LG9qPWxlI2tqcCNvamVmYmBgbG5zYm1qZmdgb2pmbXdUamd3a3NxZnVmbXcjd2tmT2ZkanBvYndqdWZnamVlZnFmbXdvendsZGZ3a2ZxI2pta2JwI3BmdWZxYm9lbHEjYm1sd2tmcXdme3cjbGUjd2tmZWx2bWdmZyN3a2ZmI3Rqd2sjd2tmI2pwI3ZwZmcjZWxxYGtibWRmZyN3a2Z2cHZib296I3drZnNvYmBmI3RrZnFmdGtmcWZicCN3a2Y9Iz9iI2txZmU+ISE9P2Ija3FmZT4hd2tmbnBmb3VmcC9ib3drbHZkayNrZndrYncjYGJtI2Fmd3FiZ2p3amxtYm9xbG9mI2xlI3drZmJwI2IjcWZwdm93cWZubHVmQGtqb2dnZnBqZG1mZyNhenRmcHcjbGUjd2tmUGxuZiNzZmxzb2ZzcWxndmB3amxtL3BqZ2YjbGUjd2tmbWZ0cG9md3dmcXB2cGZnI2F6I3drZmdsdG0jd2wjd2tmYmBgZnN3ZmcjYXpvanVmI2ptI3drZmJ3d2Zuc3dwI3dsbHZ3cGpnZiN3a2ZlcWZydmZtYGpmcEtsdGZ1ZnEvI2ptc3FsZHFibm5mcXBidyNvZmJwdyNqbWJzc3Fse2puYndmYm93a2x2ZGsjand0YnAjc2JxdyNsZWJtZyN1YnFqbHZwRGx1ZnFtbHEjbGV3a2YjYnF3amBvZnd2cW1mZyNqbXdsPT9iI2txZmU+ISx3a2YjZmBsbWxuempwI3drZiNubHB3bmxwdyN0amdmb3p0bHZvZyNvYndmcWJtZyNzZnFrYnNwcWpwZiN3bCN3a2ZsYGB2cXAjdGtmbXZtZ2ZxI3RramBrYGxtZ2p3amxtcC13a2YjdGZwd2ZxbXdrZmxxeiN3a2J3anAjc3FsZ3ZgZmd3a2YjYGp3eiNsZWptI3RramBrI2tmcGZmbSNqbSN3a2Z3a2YjYGZtd3Fib2F2am9nam1kI2xlbmJteiNsZSNranBicWZiI2xlI3drZmpwI3drZiNsbW96bmxwdyNsZSN3a2ZuYm16I2xlI3drZndrZiNUZnB3ZnFtV2tmcWYjanAjbWxme3dmbWdmZyN3bFB3YndqcHdqYGJvYGxvcHNibT4xI39wa2xxdyNwd2xxenNscHBqYW9mI3dsd2xzbG9sZGpgYm9gcWp3amBibyNsZXFmc2xxd2ZnI3dsYiNAa3FqcHdqYm1nZmBqcGpsbSN3bGpwI2ZydmJvI3dsc3FsYW9mbnAjbGVXa2pwI2BibSNhZm5mcWBrYm1nanBmZWxxI25scHcjbGVtbCNmdWpnZm1gZmZnandqbG1wI2xlZm9mbmZtd3Ajam0lcnZsdzgtI1drZmBsbixqbmJkZnAsdGtqYGsjbmJoZnB3a2Yjc3FsYGZwcHFmbmJqbXAjd2tmb2p3ZnFid3ZxZi9qcCNiI25mbmFmcXdrZiNzbHN2b2Jxd2tmI2JtYGpmbXdzcWxhb2ZucCNqbXdqbmYjbGUjd2tmZ2ZlZmJ3ZmcjYXphbGd6I2xlI3drZmIjZWZ0I3pmYnFwbnZgayNsZSN3a2Z3a2YjdGxxaCNsZUBib2plbHFtamIvcGZxdWZnI2JwI2JkbHVmcW1uZm13LWBsbWBmc3dwI2xlbmx1Zm5mbXcjam1cblxuP2dqdSNqZz4hanchI3Vib3ZmPiFvYm1kdmJkZiNsZWJwI3drZnojYnFmc3FsZ3ZgZmcjam1qcCN3a2J3I3drZmZ7c29iam0jd2tmZ2p1PT8sZ2p1PVx0S2x0ZnVmcSN3a2ZvZmJnI3dsI3drZlxuP2Ija3FmZT4hLHRicCNkcWJtd2Znc2Zsc29mI2tidWZgbG13am12Ym9venRicCNwZmZtI2JwYm1nI3Fmb2J3Zmd3a2YjcWxvZiNsZXNxbHNscGZnI2F6bGUjd2tmI2FmcHdmYmBrI2x3a2ZxLUBsbXB3Ym13am1mc2Zsc29mI2VxbG5namJvZmB3cCNsZXdsI3FmdWpwamxtdGJwI3FmbWJuZmdiI3BsdnFgZiNsZXdrZiNqbWp3amJvb2J2bWBrZmcjam1zcWx1amdmI3drZndsI3drZiN0ZnB3dGtmcWYjd2tmcWZibWcjcGpuam9icWFmd3RmZm0jd3RsanAjYm9wbCN3a2ZGbWRvanBrI2JtZ2BsbWdqd2psbXAvd2tidyNqdyN0YnBmbXdqd29mZyN3bHdrZm5wZm91ZnAtcnZibXdqd3ojbGVxYm1wc2JxZm1gendrZiNwYm5mI2Jwd2wjaWxqbSN3a2ZgbHZtd3F6I2JtZ3dranAjanAjd2tmV2tqcCNvZmcjd2xiI3B3YndmbmZtd2BsbXdxYnB3I3dsb2Jwd0ptZ2Z7TGV3a3FsdmRrI2tqcGpwI2dmcGpkbWZnd2tmI3dmcW4janBqcCNzcWx1amdmZ3NxbHdmYHcjd2tmbWQ/LGI9Pyxvaj1Xa2YjYHZxcWZtd3drZiNwandmI2xlcHZhcHdibXdqYm9me3NmcWpmbWBmL2ptI3drZiNUZnB3d2tmeiNwa2x2b2dwb2x1Zm0oYWptYmBsbmZtd2Jxamxwdm1qdWZxcGpnYmdgbG1namBqbG1mcGJgd2p1amdiZ2ZwZntzZnFqZm1gamJ3ZmBtbG9sZC9BYnNxbGd2YGBqL19tc3Ztd3ZiYGovX21ic29qYGJgai9fbWBsbXdxYnBmL11iYGJ3ZmRscS9BYnBxZmRqcHdxYnFwZnNxbGVmcGpsbWJvd3Fid2JuamZtd2xxZmQvQXB3cWJ3ZnBmYHFmd2JxL0Fic3FqbWBqc2JvZnBzcWx3ZmBgai9fbWpuc2xxd2Jtd2Zwam5zbHF3Ym1gamJzbHBqYWpvamdiZ2ptd2ZxZnBibXdmYHFmYGpuamZtd2xtZmBmcGpnYmdmcHB2cGBxamFqcXBmYnBsYGpiYGovX21nanBzbG1qYW9mcGZ1Ym92YmBqL19tZnB3dmdqYm13ZnBxZnBzbG1wYmFvZnFmcGxvdmBqL19tZHZiZ2JvYmlicWJxZmRqcHdxYmdscGxzbHF3dm1qZ2JnYGxuZnFgamJvZnBlbHdsZHFiZS9BYmJ2d2xxamdiZ2Zwam1kZm1qZnEvQWJ3Zm9mdWpwai9fbWBsbnNmd2ZtYGpibHNmcWJgamxtZnBmcHdiYW9mYGpnbHBqbnNvZm5mbXdmYmB3dmJvbmZtd2ZtYnVmZGJgai9fbWBsbWVscW5qZ2Jnb2ptZi5rZmpka3c5ZWxtdy5lYm5qb3o5ISM5IyFrd3dzOSwsYnNzb2pgYndqbG1wb2ptaCEja3FmZT4hcHNmYGplamBib296LCw/IlhAR0JXQlhcdExxZGJtanlid2psbWdqcHdxamF2d2psbTNzezgja2ZqZGt3OXFmb2J3amxtcGtqc2dmdWpgZi50amd3az9nanUjYG9icHA+IT9vYmFmbyNlbHE+IXFmZGpwd3Fid2psbT8sbWxwYHFqc3c9XHQsam1nZnsta3dubyF0am1nbHQtbHNmbSsjImpuc2xxd2Jtdzhic3NvamBid2psbSxqbWdmc2ZtZ2ZtYGYsLHR0dC1kbGxkb2ZscWRibWp5YndqbG1idndsYGxuc29md2ZxZnJ2anFmbmZtd3BgbG1wZnF1YndqdWY/ZWxxbiNtYm5mPiFqbXdmb29mYHd2Ym9uYnFkam0ub2ZldzkyO3drI2BmbXd2cXpibSNqbnNscXdibXdqbXB3and2d2psbXBiYWFxZnVqYndqbG0/am5kI2BvYnBwPiFscWRibWpwYndqbG1ganVqb2p5YndqbG0yOndrI2BmbXd2cXpicWBrandmYHd2cWZqbWBscXNscWJ3ZmcxM3drI2BmbXd2cXouYGxtd2JqbWZxIT1ubHB3I21sd2Jhb3osPT8sYj0/LGdqdT1tbHdqZWpgYndqbG0kdm1nZmVqbWZnJCpFdnF3a2ZxbmxxZi9hZm9qZnVmI3drYndqbW1mcUtXTk8jPiNzcWpscSN3bCN3a2ZncWJuYndqYGJvb3pxZmVmcXFqbWQjd2xtZmRsd2pid2psbXBrZmJncnZicXdmcXBQbHZ3ayNCZXFqYGJ2bXB2YGBmcHBldm9TZm1tcHpvdWJtamJCcCNiI3FmcHZvdy8/a3dubyNvYm1kPiElb3c4LHB2cyVkdzhnZmJvam1kI3Rqd2tza2pvYmdmb3NramJranB3bHFqYGJvb3oqOD8scGBxanN3PVx0c2JnZ2ptZC53bHM5ZntzZnFqbmZtd2JvZGZ3Qnd3cWphdndmam1wd3F2YHdqbG1wd2Zga21sb2xkamZwc2JxdyNsZSN3a2YjPmV2bWB3amxtKyp4cHZhcGBxanN3amxtby1nd2chPQ5cdD9rd2RmbGRxYnNramBib0BsbXB3and2d2psbSQvI2V2bWB3amxtK3B2c3NscXdmZyNhemJkcWpgdm93dnFib2BsbXB3cXZgd2psbXN2YW9qYGJ3amxtcGVsbXcucGp5ZjkjMmIjdWJxamZ3eiNsZT9nanUjcHd6b2Y+IUZtYHpgb2xzZmdqYmplcWJuZiNwcWA+IWdmbmxtcHdxYndmZ2JgYGxuc29qcGtmZ3ZtanVmcXBqd2pmcEdmbmxkcWJza2pgcCo4PyxwYHFqc3c9P2dmZ2pgYndmZyN3bGhtbHRvZmdkZiNsZXBid2pwZWJgd2psbXNicXdqYHZvYnFvej8sZ2p1PT8sZ2p1PUZtZG9qcGsjK1ZQKmJzc2ZtZ0Bram9nK3dxYm1wbmpwcGpsbXAtI0tsdGZ1ZnEvI2ptd2Zvb2pkZm1gZiEjd2Jham1nZns+IWVvbGJ3OXFqZGt3OEBsbm5sbXRmYm93a3FibWRqbWQjZXFsbmptI3RramBrI3drZmJ3I29mYnB3I2xtZnFmc3FsZ3Zgd2psbWZtYHpgb2xzZmdqYjhlbG13LnBqeWY5Mml2cWpwZ2pgd2psbWJ3I3drYncjd2puZiE9P2IjYG9icHA+IUptI2JnZ2p3amxtL2dmcGBxanN3amxtKGBsbXVmcXBid2psbWBsbXdiYHcjdGp3a2pwI2RmbWZxYm9venEhI2BsbXdmbXc+IXFmc3FmcGZtd2ptZCVvdzhuYndrJWR3OHNxZnBmbXdid2psbWxgYGJwamxtYm9vej9qbmQjdGpnd2s+IW1idWpkYndqbG0hPWBsbnNmbXBid2psbWBrYm5zamxtcGtqc25mZ2piPiFib28hI3VqbG9id2psbSNsZXFmZWZxZm1gZiN3bHFmd3ZxbSN3cXZmOFB3cWpgdywsRk0hI3dxYm1wYmB3amxtcGptd2ZxdWZtd2psbXVmcWplamBid2psbUptZWxxbmJ3amxtI2dqZWVqYHZvd2pmcEBrYm5zamxtcGtqc2Bic2Jham9qd2pmcD8iWGZtZ2plXi4uPX5cdD8scGBxanN3PVx0QGtxanB3amJtand6ZWxxI2Z7Ym5zb2YvU3FsZWZwcGpsbWJvcWZwd3FqYHdqbG1wcHZkZGZwdyN3a2J3dGJwI3Fmb2ZicGZnK3B2YGsjYnAjd2tmcWZubHVmQG9icHArdm1mbnNvbHpuZm13d2tmI0JuZnFqYGJtcHdxdmB3dnFmI2xlLGptZ2Z7LWt3bm8jc3Zhb2pwa2ZnI2ptcHNibSNgb2JwcD4hIT0/YiNrcWZlPiEsam13cWxndmB3amxtYWZvbG1kam1kI3dsYG9iam5mZyN3a2J3YGxtcGZydmZtYGZwP25md2IjbWJuZj4hRHZqZ2Yjd2wjd2tmbHVmcXRrZm9uam1kYmRiam1wdyN3a2YjYGxtYGZtd3Fid2ZnL1x0LW1sbXdsdmBrI2xhcGZxdWJ3amxtcD8sYj1cdD8sZ2p1PVx0ZSMrZ2xgdm5mbXctYWxxZ2ZxOSMyc3sjeGVsbXcucGp5Zjkyd3FmYnduZm13I2xlMyEja2ZqZGt3PiEybmxnamVqYGJ3amxtSm1nZnNmbWdmbWBmZ2p1amdmZyNqbXdsZHFmYndmcSN3a2JtYmBramZ1Zm5mbXdwZnB3YmFvanBram1kSWJ1YlBgcWpzdyEjbWZ1ZnF3a2ZvZnBwcGpkbWplamBibWBmQXFsYmdgYnB3am1kPSVtYXBzOD8sd2c9YGxtd2JqbWZxIT1cdHB2YGsjYnAjd2tmI2ptZW92Zm1gZiNsZWIjc2Jxd2pgdm9icXBxYD4ka3d3czksLG1idWpkYndqbG0hI2tib2UjbGUjd2tmI3B2YXB3Ym13amJvIyVtYXBzOD8sZ2p1PWJndWJtd2JkZiNsZWdqcGBsdWZxeiNsZWV2bWdibmZtd2JvI25md3Fsc2xvandibXdrZiNsc3NscGp3ZiEje25vOW9ibWQ+IWdmb2phZnFid2ZvemJvamRtPmBmbXdmcWZ1bG92d2psbSNsZXNxZnBmcXVid2psbWpuc3FsdWZuZm13cGFmZGptbWptZCNqbUlmcHZwI0BrcWpwd1N2YW9qYGJ3amxtcGdqcGJkcWZmbmZtd3dme3cuYm9qZG05cS8jZXZtYHdqbG0rKnBqbmpvYnFqd2pmcGFsZ3o9Pyxrd25vPWpwI2B2cXFmbXdvemJvc2tiYWZ3amBib2pwI3BsbmZ3am5mcHd6c2Y+IWpuYmRmLG5ibXojbGUjd2tmI2VvbHQ5a2pnZ2ZtOGJ1YmpvYmFvZiNqbWdmcGBxamFmI3drZmZ7anB3Zm1gZiNsZWJvbyNsdWZxI3drZndrZiNKbXdmcW1md1xuP3ZvI2BvYnBwPiFqbXB3Ym9vYndqbG1tZmpka2FscWtsbGdicW5mZyNlbHFgZnBxZmd2YGptZCN3a2ZgbG13am12ZnAjd2xNbG1md2tmb2ZwcC93Zm5zZnFid3ZxZnBcdFxuXG4/YiNrcWZlPiFgb2xwZiN3bCN3a2Zme2Juc29mcCNsZSNqcCNiYWx2dyN3a2YrcGZmI2Fmb2x0Ki0hI2pnPiFwZmJxYGtzcWxlZnBwamxtYm9qcCNidWJqb2Jhb2Z3a2YjbGVlamBqYm9cblxuPyxwYHFqc3c9XHRcdFxuXG4/Z2p1I2pnPiFiYGBmb2ZxYndqbG13a3FsdmRrI3drZiNLYm9vI2xlI0VibmZnZnBgcWpzd2psbXB3cWJtcG9id2psbXBqbXdmcWVmcWZtYGYjd3pzZj4kd2Z7dyxxZmBmbXcjemZicXBqbSN3a2YjdGxxb2d1ZnF6I3Nsc3ZvYnF4YWJgaGRxbHZtZzl3cWJnandqbG1ibyNwbG5mI2xlI3drZiNgbG1tZmB3Zmcjd2xme3NvbGp3YndqbG1mbmZxZGZtYGYjbGVgbG1wd2p3dndqbG1CI0tqcHdscXojbGVwamRtamVqYGJtdyNuYm12ZWJgd3ZxZmdme3NmYHdid2psbXA9P21scGBxanN3PT9gYm0jYWYjZWx2bWdhZmBidnBmI3drZiNrYnAjbWx3I2FmZm1tZmpka2FsdnFqbWR0andrbHZ3I3drZiNiZ2dmZyN3bCN3a2Zcbj9vaiNgb2JwcD4ham1wd3F2bmZtd2JvUGx1amZ3I1ZtamxtYmBobWx0b2ZnZGZndGtqYGsjYGJtI2FmbWJuZiNlbHEjd2tmYnd3Zm13amxtI3dsYnd3Zm5zd3Ajd2wjZ2Z1Zm9sc25mbXdwSm0jZWJgdy8jd2tmP29qI2BvYnBwPiFiam5zb2pgYndqbG1wcHZqd2Jhb2YjZWxxbnZgayNsZSN3a2YjYGxvbG1qeWJ3amxtc3FmcGpnZm13amJvYGJtYGZvQXZhYW9mI0ptZWxxbmJ3amxtbmxwdyNsZSN3a2YjanAjZ2ZwYHFqYWZncWZwdyNsZSN3a2YjbmxxZiNscSNvZnBwam0jUGZzd2ZuYWZxSm13Zm9vamRmbWBmcHFgPiFrd3dzOSwsc3s4I2tmamRrdzkjYnViam9iYW9mI3dsbmJtdmViYHd2cWZxa3ZuYm0jcWpka3dwb2ptaCNrcWZlPiEsYnViam9iYWpvand6c3Fsc2xxd2psbWJvbHZ3cGpnZiN3a2YjYnB3cWxtbG5qYGJva3ZuYm0jYWZqbWRwbWJuZiNsZSN3a2YjYnFmI2Vsdm1nI2ptYnFmI2FicGZnI2xtcG5ib29mcSN3a2JtYiNzZnFwbG0jdGtsZntzYm1wamxtI2xlYnFkdmptZCN3a2J3bWx0I2htbHRtI2JwSm0jd2tmI2ZicW96am13ZnFuZmdqYndmZ2ZxanVmZyNlcWxuUGBibWdqbWJ1amJtPyxiPT8sZ2p1PQ5cdGBsbXBqZ2ZxI3drZmJtI2Zwd2puYndmZ3drZiNNYndqbG1ibz9nanUjamc+IXNiZHFmcHZvd2ptZCNqbWBsbm5qcHBqbG1mZ2JtYm9sZGx2cCN3bGJxZiNxZnJ2anFmZyx2bz1cdD8sZ2p1PVx0dGJwI2FicGZnI2xtYm1nI2FmYGJuZiNiJW1hcHM4JW1hcHM4dyEjdWJvdmY+ISEjdGJwI2Bic3d2cWZnbWwjbmxxZiN3a2JtcWZwc2Zgd2p1Zm96YGxtd2ptdmYjd2wjPQ5cdD9rZmJnPQ5cdD90ZnFmI2BxZmJ3ZmdubHFmI2RmbWZxYm9qbWVscW5id2psbSN2cGZnI2VscSN3a2ZqbWdmc2ZtZ2ZtdyN3a2YjSm5zZnFqYm9gbG5zbG1mbXcjbGV3bCN3a2YjbWxxd2tqbWBvdmdmI3drZiNAbG1wd3F2YHdqbG1wamdmI2xlI3drZiN0bHZvZyNtbHcjYWZlbHEjam1wd2JtYGZqbXVmbXdqbG0jbGVubHFmI2BsbnNvZntgbG9vZmB3anVmb3phYmBoZHFsdm1nOSN3Znt3LmJvamRtOSNqd3AjbHFqZGptYm9qbXdsI2JgYGx2bXd3a2pwI3NxbGBmcHBibSNme3dmbXBqdWZrbHRmdWZxLyN3a2Z3a2Z6I2JxZiNtbHdxZmlmYHdmZyN3a2ZgcWp3amBqcG4jbGVndnFqbWQjdGtqYGtzcWxhYmFveiN3a2Z3a2pwI2Jxd2pgb2YrZXZtYHdqbG0rKnhKdyNwa2x2b2cjYWZibSNiZHFmZm5mbXdiYGBqZ2Ztd2Jvb3pnamVlZnFwI2VxbG5CcWBrandmYHd2cWZhZnd3ZnEjaG1sdG1icXFibWRmbmZtd3BqbWVvdmZtYGYjbG1id3dmbWdmZyN3a2ZqZ2Ztd2pgYm8jd2xwbHZ3ayNsZSN3a2ZzYnBwI3drcWx2ZGt7bm8hI3dqd29mPiF0Zmpka3c5YWxvZzhgcWZid2ptZCN3a2ZnanBzb2J6OW1sbWZxZnNvYmBmZyN3a2Y/am5kI3BxYD4hLGprd3dzcDksLHR0dC1UbHFvZyNUYnEjSkp3ZnB3am5sbWpib3BlbHZtZyNqbSN3a2ZxZnJ2anFmZyN3bCNibWcjd2tidyN3a2ZhZnd0ZmZtI3drZiN0YnAjZ2ZwamRtZmdgbG1wanB3cCNsZSNgbG1wamdmcWJhb3pzdmFvanBrZmcjYXp3a2Yjb2JtZHZiZGZAbG1wZnF1YndqbG1gbG1wanB3ZmcjbGVxZmVmcSN3bCN3a2ZhYmBoI3dsI3drZiNgcHAhI25mZ2piPiFTZmxzb2YjZXFsbiNidWJqb2Jhb2YjbG1zcWx1Zmcjd2wjYWZwdmRkZnB3amxtcCF0YnAjaG1sdG0jYnB1YnFqZndqZnAjbGVvamhmb3ojd2wjYWZgbG5zcWpwZmcjbGVwdnNzbHF3I3drZiNrYm1ncCNsZSN3a2ZgbHZzb2ZnI3Rqd2tgbG1tZmB3I2JtZyNhbHFnZnE5bWxtZjhzZnFlbHFuYm1gZnBhZmVscWYjYWZqbWRvYndmcSNhZmBibmZgYm9gdm9id2psbXBsZXdmbSNgYm9vZmdxZnBqZ2Ztd3AjbGVuZmJtam1kI3drYnc9P29qI2BvYnBwPiFmdWpnZm1gZiNlbHFme3NvYm1id2psbXBmbXVqcWxtbmZtd3AhPT8sYj0/LGdqdT10a2pgayNib29sdHBKbXdxbGd2YHdqbG1nZnVmb2xzZmcjYXpiI3RqZ2YjcWJtZGZsbSNhZmtib2UjbGV1Ym9qZG0+IXdscyFzcWptYGpzb2YjbGVidyN3a2Yjd2puZi8/LG1scGBxanN3PQ5wYmpnI3dsI2tidWZqbSN3a2YjZWpxcHd0a2pvZiNsd2tmcXBrenNsd2tmd2pgYm9za2pvbHBsc2tmcXBzbHRmcSNsZSN3a2ZgbG13YmptZmcjam1zZnFlbHFuZmcjYXpqbWJham9qd3ojd2x0ZnFmI3Rxand3Zm1wc2JtI3B3em9mPiFqbXN2dyNtYm5mPiF3a2YjcnZmcHdqbG1qbXdmbWdmZyNlbHFxZmlmYHdqbG0jbGVqbnNvamZwI3drYndqbXVmbXdmZyN3a2Z3a2YjcHdibWdicWd0YnAjc3FsYWJhb3pvam1oI2Fmd3RmZm1zcWxlZnBwbHEjbGVqbXdmcWJgd2psbXBga2JtZGptZCN3a2ZKbWdqYm0jTGBmYm0jYG9icHA+IW9icHd0bHFoam1kI3Rqd2ska3d3czksLHR0dC16ZmJxcCNhZmVscWZXa2pwI3RicCN3a2ZxZmBxZmJ3amxtYm9mbXdmcWptZCN3a2ZuZmJwdnFmbmZtd3BibSNme3dxZm5mb3p1Ym92ZiNsZSN3a2Zwd2JxdyNsZSN3a2ZcdD8scGBxanN3PVx0XHRibSNmZWVscXcjd2xqbWBxZmJwZiN3a2Z3bCN3a2YjcGx2d2twc2Jgam1kPiEzIT1wdmVlamBqZm13b3p3a2YjRnZxbHNmYm1gbG11ZnF3Zmcjd2xgb2ZicVdqbmZsdndnamcjbWx3I2tidWZgbG1wZnJ2Zm13b3plbHEjd2tmI21me3dme3dmbXBqbG0jbGVmYGxtbG5qYCNibWdib3drbHZkayN3a2ZicWYjc3FsZ3ZgZmdibWcjdGp3ayN3a2ZqbXB2ZWVqYGpmbXdkanVmbSNheiN3a2Zwd2J3am1kI3drYndme3NmbWdqd3ZxZnA/LHBzYm09PyxiPVx0d2tsdmRrdyN3a2J3bG0jd2tmI2FicGpwYGZvb3NiZ2dqbWQ+am5iZGYjbGUjd2tmcWZ3dnFtam1kI3dsam1lbHFuYndqbG0vcGZzYnFid2ZnI2F6YnBwYnBwam1id2ZncCEjYGxtd2Ztdz4hYnZ3a2xxand6I2xlbWxxd2t0ZnB3ZnFtPyxnanU9XHQ/Z2p1IyE9PyxnanU9Dlx0IyNgbG1wdm93YndqbG1gbG5udm1qd3ojbGV3a2YjbWJ3amxtYm9qdyNwa2x2b2cjYWZzYnF3amBqc2Jtd3AjYm9qZG0+IW9mZXd3a2YjZHFmYndmcHdwZm9mYHdqbG0jbGVwdnNmcW1id3ZxYm9nZnNmbWdmbXcjbG1qcCNuZm13amxtZmdib29sdGptZCN3a2Z0YnAjam11Zm13ZmdiYGBsbnNibXpqbWRranAjc2ZxcGxtYm9idWJqb2Jhb2YjYndwd3ZneiNsZSN3a2ZsbSN3a2YjbHdrZnFme2ZgdndqbG0jbGVLdm5ibSNRamRrd3B3ZnFucCNsZSN3a2ZicHBsYGpid2psbXBxZnBmYnFgayNibWdwdmBgZmZnZmcjYXpnZmVmYndmZyN3a2ZibWcjZXFsbiN3a2Zhdncjd2tmeiNicWZgbG5uYm1nZnEjbGVwd2J3ZiNsZSN3a2Z6ZmJxcCNsZSNiZGZ3a2YjcHd2Z3ojbGU/dm8jYG9icHA+IXBzb2JgZiNqbSN3a2Z0a2ZxZiNrZiN0YnA/b2ojYG9icHA+IWV3a2ZxZiNicWYjbWx0a2pgayNhZmBibmZrZiNzdmFvanBrZmdme3NxZnBwZmcjam13bCN0a2pgayN3a2ZgbG5uanBwamxtZnFlbG13LnRmamRrdzl3ZnFxandscXojbGVme3dmbXBqbG1wIT1RbG5ibSNGbnNqcWZmcnZibyN3bCN3a2ZKbSNgbG13cWJwdy9rbHRmdWZxLyNibWdqcCN3enNqYGJvb3pibWcja2pwI3RqZWYrYm9wbCNgYm9vZmc9P3ZvI2BvYnBwPiFmZWVmYHdqdWZveiNmdWxvdWZnI2ptd2xwZmZuI3dsI2tidWZ0a2pgayNqcCN3a2Z3a2ZxZiN0YnAjbWxibSNme2Bmb29mbXdib28jbGUjd2tmcGZnZnBgcWphZmcjYXpKbSNzcWJgd2pgZi9hcWxiZ2BicHdqbWRga2JxZGZnI3Rqd2txZmVvZmB3Zmcjam1wdmFpZmB3Zmcjd2xuam9qd2JxeiNibWd3bCN3a2Yjc2xqbXdmYGxtbG5qYGJvb3pwZndXYnFkZndqbWRicWYjYmB3dmJvb3p1amB3bHF6I2x1ZnErKjg/LHBgcWpzdz1gbG13am12bHZwb3pxZnJ2anFmZyNlbHFmdWxvdndqbG1icXpibSNmZWVmYHdqdWZtbHF3ayNsZSN3a2YvI3RramBrI3RicCNlcWxtdyNsZSN3a2ZscSNsd2tmcXRqcGZwbG5mI2VscW4jbGVrYmcjbWx3I2FmZm1kZm1mcWJ3ZmcjYXpqbWVscW5id2psbS1zZnFuand3Zmcjd2xqbWBvdmdmcCN3a2ZnZnVmb2xzbmZtdy9mbXdmcWZnI2ptd2x3a2Yjc3FmdWpsdnBgbG1wanB3Zm13b3picWYjaG1sdG0jYnB3a2YjZWpmb2cjbGV3a2pwI3d6c2YjbGVkanVmbSN3bCN3a2Z3a2Yjd2p3b2YjbGVgbG13YmptcCN3a2ZqbXB3Ym1gZnAjbGVqbSN3a2YjbWxxd2tndmYjd2wjd2tmanFicWYjZ2ZwamRtZmdgbHFzbHFid2psbXB0YnAjd2tidyN3a2ZsbWYjbGUjd2tmcGZubHFmI3Nsc3ZvYnFwdmBgZmZnZmcjam1wdnNzbHF3I2VxbG5qbSNnamVlZnFmbXdnbG5qbWJ3ZmcjYXpnZnBqZG1mZyNlbHFsdG1mcXBranMjbGVibWcjc2xwcGphb3pwd2JtZ2JxZ2p5ZmdxZnBzbG1wZldme3d0YnAjam13Zm1nZmdxZmBmanVmZyN3a2ZicHB2bmZnI3drYndicWZicCNsZSN3a2ZzcWpuYnFqb3ojam13a2YjYWJwanAjbGVqbSN3a2YjcGZtcGZiYGBsdm13cCNlbHFnZnB3cWx6ZmcjYXpidyNvZmJwdyN3dGx0YnAjZ2Zgb2JxZmdgbHZvZyNtbHcjYWZQZmBxZndicXojbGVic3NmYnEjd2wjYWZuYnFkam0ud2xzOTIsXV9wKH9fcChcJyxkZip4d2txbHQjZn44d2tmI3B3YnF3I2xld3RsI3Bmc2JxYndmb2JtZHZiZGYjYm1ndGtsI2tiZyNhZmZtbHNmcWJ3amxtI2xlZ2Zid2sjbGUjd2tmcWZibyNtdm5hZnFwXG4/b2ptaCNxZm8+IXNxbHVqZ2ZnI3drZndrZiNwd2xxeiNsZWBsbnNmd2p3amxtcGZtZG9qcGsjK1ZIKmZtZG9qcGsjK1ZQKjxwPFI8UTxfPFI8VzxNPWw8Uz1tPFY8VD1tPWw8Uz1tPFY8VD1tPWw8Uz1tPFY8UjVoNFU0XTRENWY0RVxuQU8FR3hcYlRBXG56a1x2QmxcYlF/XGJUQVxuemtcdlVtXGJRf1xiVEFcbnprXG5wZQV1fFx0aUBcdGNUXGJWVlxuXFx9XG54U1x0VnAFdFMFa2BcdFtYXHRbWFx2SFJcYlB2XGJUV1xiVWVcbn9hXGJRcFx2X1dcdldzXG54U1x2QXpcbl95BEtoam1lbHFuYmBqL19ta2ZxcWJuamZtd2JwZm9mYHdxL19tamBsZ2ZwYHFqc2BqL19tYG9icGplamBiZ2xwYGxtbGBqbmpmbXdsc3Zhb2pgYmBqL19tcWZvYmBqbG1iZ2Jwam1lbHFuL013amBicWZvYmBqbG1iZ2xwZ2ZzYnF3Ym5mbXdsd3FiYWJpYmdscWZwZ2pxZmB3Ym5mbXdmYnp2bXdibmpmbXdsbmZxYGJnbE9qYXFmYGxtdy9NYHdmbWxwa2JhandiYGpsbWZwYHZuc29qbmpmbXdscWZwd2J2cWJtd2ZwZ2pwc2xwamBqL19tYGxtcGZgdmZtYGpiZm9mYHdxL19tamBiYnNvamBiYGpsbWZwZ2ZwYGxtZmB3Ymdsam1wd2JvYmBqL19tcWZib2p5YmBqL19tdndqb2p5YmBqL19tZm1gamBvbHNmZ2piZm1lZnFuZmdiZ2Zwam1wd3F2bmZtd2xwZntzZnFqZm1gamJwam1wd2p3dmBqL19tc2Jxd2pgdm9icWZwcHZhYGJ3ZmRscWpiPW48UjxXPWA8VjxSPEw8Uj1tPW08VDxUPWw8XFw8XTxSPW49ZzxdPFI8Vz1gPWQ8WTxTPWw8Uj1tPW48UjxQPFI8WjxZPW48WTxYPWw9bzxfPFQ9aT1tPFc9bz1rPFxcPFk9bTxZPFU9azxcXD1tPF49bTxZPF88WDxcXDxMPFI9bT1tPFQ9YzxwPFI9bTxWPF48WTxYPWw9bzxfPFQ8WTxfPFI9bDxSPFg8XFw8XjxSPFM9bDxSPW08WDxcXDxRPFE9Zz1pPFg8UjxXPFo8UT1nPFQ8UDxZPFE8UTxSPHA8Uj1tPFY8Xj1nPWw9bzxdPFc8WTxVPHA8Uj1tPFY8XjxcXD1tPW49bDxcXDxRPWc8UTxUPWs8WTxfPFI9bDxcXDxdPFI9bjxZPFg8UjxXPFo8WTxRPW89bTxXPW88XzxUPW48WTxTPFk9bD1gPHI8WDxRPFxcPFY8UjxTPFI9bjxSPFA9bz1sPFxcPF08Uj1uPW88XFw8Uz1sPFk8Vz1jPF48UjxSPF09ZTxZPFI8WDxRPFI8XzxSPW08XjxSPFk8XzxSPW09bjxcXD1uPWA8VDxYPWw9bzxfPFI8VT1oPFI9bD1vPFA8WT1pPFI9bDxSPWQ8UjxTPWw8Uj1uPFQ8Xj1tPW09ZzxXPFY8XFw8VjxcXDxaPFg9ZzxVPF48VzxcXD1tPW48VDxfPWw9bzxTPFM9ZzxePFA8WT1tPW48WT1sPFxcPF08Uj1uPFxcPW08VjxcXDxbPFxcPFc8UzxZPWw8Xj1nPFU8WDxZPFc8XFw9bj1gPFg8WTxRPWA8XzxUPFM8WT1sPFQ8UjxYPF08VDxbPFE8WT1tPFI9bTxRPFI8XjxZPFA8UjxQPFk8UT1uPFY9bzxTPFQ9bj1gPFg8UjxXPFo8UTxcXD1sPFxcPFA8VjxcXD1pPFE8XFw9azxcXDxXPFI8TDxcXDxdPFI9bjxcXDxOPFI8Vz1gPFY8Uj1tPFI8Xj1tPFk8UDxePW48Uj1sPFI8VTxRPFxcPWs8XFw8VzxcXD1tPFM8VD1tPFI8Vj1tPFc9bzxaPF09Zz1tPFQ9bT1uPFk8UDxTPFk9azxcXD1uPFQ8UTxSPF48UjxfPFI8UzxSPFA8Uj1lPFQ9bTxcXDxVPW48UjxePFM8Uj1rPFk8UD1vPFM8UjxQPFI9ZT1gPFg8UjxXPFo8UTxSPW09bT1nPFc8VjxUPF09Zz1tPW49bDxSPFg8XFw8UTxRPWc8WTxQPFE8UjxfPFQ8WTxTPWw8UjxZPFY9bjxNPFk8VT1rPFxcPW08UDxSPFg8WTxXPFQ9bjxcXDxWPFI8XzxSPFI8UTxXPFxcPFU8UTxfPFI9bDxSPFg8WTxePFk9bD1tPFQ9Yz1tPW49bDxcXDxRPFk9aDxUPFc9YDxQPWc9bz1sPFI8XjxRPWM9bDxcXDxbPFE9Zz1pPFQ9bTxWPFxcPW49YDxRPFk8WDxZPFc9Yj1jPFE8XjxcXD1sPWM8UDxZPFE9YD1kPFk8UDxRPFI8XzxUPWk8WDxcXDxRPFE8UjxVPFs8UTxcXD1rPFQ9bjxRPFk8Vz1gPFs9Yz1oPFI9bD1vPFA8XFw8TjxZPFM8WT1sPWA8UDxZPW09Yz1qPFxcPFs8XFw9ZTxUPW49Zzx3PW89az1kPFQ8WVxmSERcZkhVXGZJbFxmSG5cZkh5XGZIXFxcZkhEXGZJa1xmSGlcZkhGXGZIRFxmSWtcZkh5XGZIU1xmSENcZkhSXGZIeVxmSFxcXGZJa1xmSG5cZkhpXGZIRFxmSWFcZkhDXGZIeVxmSWFcZkhDXGZIUlxmSHtcZkhSXGZIa1xmSE1cZkhAXGZIUlxmSFxcXGZJa1xmSHlcZkhTXGZIVFxmSWxcZkhKXGZIU1xmSENcZkhSXGZIRlxmSFVcZkheXGZJa1xmSFRcZkhTXGZIblxmSFVcZkhBXGZIUlxmSFxcXGZISFxmSGlcZkhGXGZIRFxmSWxcZkhZXGZIUlxmSF5cZklrXGZIVFxmSWtcZkhZXGZIUlxmSHlcZkhcXFxmSEhcZklrXGZIQlxmSWtcZkhcXFxmSWtcZkhVXGZJZ1xmSERcZklrXGZIVFxmSHlcZkhIXGZJa1xmSEBcZkhVXGZJbVxmSEhcZkhUXGZIUlxmSGtcZkhzXGZIVVxmSWdcZkh7XGZIUlxmSHBcZkhSXGZIRFxmSWtcZkhCXGZIU1xmSERcZkhzXGZIeVxmSFxcXGZISFxmSFJcZkh5XGZIXFxcZkhEXGZIUlxmSGVcZkhEXGZIeVxmSWtcZkhDXGZIVVxmSFJcZkhtXGZIVFxmSEBcZkhUXGZJa1xmSEFcZkhSXGZIW1xmSFJcZkhqXGZIRlxmSHlcZklrXGZIXlxmSFNcZkhDXGZJa1xmSFpcZkltXGZIXFxcZkluXGZIa1xmSFRcZkh5XGZJa1xmSHRcZkhuXGZIc1xmSWtcZkhCXGZJa1xmSFxcXGZJbFxmSFRcZkh5XGZISFxmSFJcZkhCXGZJa1xmSFxcXGZIUlxmSF5cZklrXGZIeVxmSFxcXGZIaVxmSEtcZkhTXGZIeVxmSGlcZkhGXGZIRFxmSFJcZkhUXGZIQlxmSFJcZkhwXGZIQlxmSW1cZkhxXGZJa1xmSHlcZkhSXGZIXFxcZkhPXGZIVVxmSWdcZkhIXGZIUlxmSHlcZkhNXGZIUFxmSWxcZkhDXGZIVVxmSFJcZkhuXGZIVVxmSWdcZkhzXGZIXlxmSFpcZkhAXGZJYVxmSEpcZkheXGZIU1xmSENcZkhSXGZIcFxmSWxcZkhZXGZIRFxmSHBcZkhSXGZISFxmSFJcZkh5XGZJZFxmSFRcZklrXGZIalxmSEZcZkh5XGZIUlxmSFlcZkhSXGZIXlxmSWxcZkhKXGZJa1xmSERcZklrXGZIRlxmSW5cZkhcXFxmSWxcZkhGXGZIUlxmSERcZklsXGZIZVxmSFRcZkh5XGZJa1xmSFVcZklnXGZIe1xmSWxcZkhAXGZJZFxmSExcZkh5XGZIalxmSEZcZkh5XGZJbFxmSFlcZkhcXFxmSWFcZkhbXGZIe1xmSFJcZkhuXGZIWVxmSGpcZkhGXGZIeVxmSWdcZkhwXGZIU1xmSF5cZkhSXGZIcFxmSFJcZkhEXGZIUlxmSFRcZkhVXGZIQlxmSEhcZkhVXGZIQlxmSWtcZkhuXGZIZVxmSERcZkh5XGZJbFxmSENcZkhSXGZIVVxmSW5cZkhKXGZIXFxcZklhXGZIcFxmSFRcZkluXGZIdlxmSWxcZkhGXGZIVFxmSG5cZkhKXGZIVFxmSFlcZkhSXGZIXlxmSFVcZklnXGZIRFxmSFJcZkhVXGZJZ1xmSEhcZklsXGZIcFxmSWRcZkhUXGZJa1xmSFlcZkhSXGZIRlxmSFRcZkhwXGZIRFxmSEhcZkhSXGZIRFxmSWtcZkhIXGZIUlxmSHBcZkhSXGZIXFxcZklsXGZIdFxmSFJcZkhDXGZIXlxmSHBcZkhTXGZIXlxmSWtcZkhEXGZJbFxmSHZcZklrXGZIcFxmSFJcZkhuXGZIdlxmSEZcZkhIXGZJYVxmSFxcXGZIe1xmSW5cZkh7XGZIXlxmSHBcZkhSXGZISFxmSWtcZkhAXGZIUlxmSFVcZkhcXFxmSGpcZkhGXGZIRFxmSWtcZkhZXGZIUlxmSFVcZkhEXGZIa1xmSFRcZkh5XGZIUlxmSFRcZkltXGZIQFxmSFVcZkhcXFxmSFVcZkhEXGZJa1xmSGtcZkhUXGZIVFxmSWtcZkhUXGZIVVxmSFNcZkhIXGZIQFxmSE1cZkhQXGZJa1xmSHRcZkhzXGZIRFxmSFJcZkhIXGZIXlxmSFJcZkhaXGZIRlxmSFJcZkhuXGZIdlxmSFpcZklhXGZIXFxcZklsXGZIQFxmSE1cZkhQXGZJbFxmSFVcZklnXGZISFxmSWtcZkhUXGZIUlxmSGRcZkhzXGZIWlxmSFJcZkhDXGZISlxmSFRcZkh5XGZISFxmSWxcZkhwXGZIUlxmSEhcZklsXGZIWVxmSFJcZkheXGZIUlxmSFVcZkhwXGZIUlxmSFxcXGZIRlxmSHNcZkhEXGZIUlxmSFxcXGZIelxmSERcZklrXGZIVFxmSE1cZkhQXGZIeVxmSEJcZkhTXGZIXlxmSFJcZkhlXGZIVFxmSHlcZklsXGZIeVxmSWtcZkhZXGZIXlxmSF5cZkh7XGZISFxmSFJcZkh6XGZIUlxmSERcZkhSXGZIaVxmSFxcXGZJYVxmSElcZkhwXGZIVVxmSFJcZkhuXGZISlxmSWtcZkh6XGZIUlxmSEZcZkhVXGZIXlxmSWxcZkhEXGZIU1xmSENcZkhCXGZIQFxmSFNcZkhEXGZIUlxmSEBcZklkXGZIblxmSHlcZkh5XGZIVVxmSWxcZkhuXGZIeVxmSFVcZkhEXGZIUlxmSEpcZklrXGZISFxmSFJcZkhVXGZIQlxmSF5cZklrXGZIeVxmSFJcZkhHXGZJbFxmSHBcZkhAXGZIeVxmSFNcZkhIXGZJbVxmSFxcXGZISFxmSEJcZkhSXGZIblxmSHtcZkhZXGZIVVxmSWxcZkhuXGZIXFxcZklnXGZIcFxmSFBcZkhCXGZIU1xmSF5cZklsXGZIalxmSFxcXGZJZ1xmSEZcZkhUXGZJa1xmSERcZkhSXGZIQ1xmSFJcZkhKXGZIWVxmSF5cZklrXGZIRFxmSWtcZkh6XGZIUlxmSEhcZkhSXGZIeVxmSFxcXGZJbFxmSEBcZkhlXGZIRFxmSHlcZkhSXGZIcFxmSFlcZkhSXGZIQFxmSEZcZkluXGZIXFxcZkhSXGZIQFxmSE1cZkhQXGZIUlxmSFRcZklgXGZISlxmSFJcZkhaXGZJa1xmSENcZkhcXFxmSHlcZkhTXGZIQ1xmSWtcZkh5XGZIVVxmSFJcZkhuXGZIaVxmSHlcZkhUXGZIXFxcZkhAXGZIRFxmSFJcZkhjXGZIWVxmSFVcZkhSXGZIblxmSFRcZklhXGZISVxmSF5cZkhCXGZIU1xmSF5cZklrXGZIXlxmSWtcZkh6XGZIeVxmSFlcZkhTXGZIW1xmSENcZkh5XGZJYVxmSFxcXGZIblxmSFRcZkhCXGZJblxmSFVcZkhJXGZIUlxmSERcZkhSNEY0XzRGNFs1ZjRVNWk0WDRLNF01bzRFNEQ1ZDRLNF80WzRFNEs1aDRZNW00QTRFNWk1ZDRLNFo1ZjRVNEs1aDRCNEs0WTRFNEs1aDVpNF41ZjRDNEs1aDRVNEs1aTRFNEs1aDVvNEs0RjRENEs1aDRdNEM1ZDRDNEQ0XTVqNEs1aTRANEs1aDRDNWQ1aDRFNEs1aDRVNEs1aDVpNEs1aDVpNWQ1bjRVNEs1aDRVNF00RDVmNEs1aDRfNF01ZjRVNEs1aDRANWQ0SzVoNEs1aDRcXDVrNEs0RDRLNWg0QTVmNEs0RTRLNWg0QTVuNWQ1bjRLNWg1bzRdNWY1aTRLNWg0VTRdNEs1bjVpNEE1bTVkNFQ0RTRLNWg0RzRLNWo1ZjVpNFg0SzVrNEM0RTRLNWg1aTRdNE80RTRLNWg1bjRdNE41ajRLNWg0WDRENEs0RDRLNWg0QTVkNEs0XTRLNWg0QDRDNWY0QzRLNWg0TzRfNF00RTRLNWg0VTVoNWQ1aTVpNEA1aTVkNFU0RTRLNWg0XTRBNWk1ajRLNWg1ajVuNEs0WzVtNWg0XzRbNWY1ajRLNWg1bzVkNWY0RjRLNWg0QzVqNWY0SzRENF01bzRLNEY1azRLNWg0XTVmNEs0WjRGNEE1ZjRLNEY1ZjRENEY1ZDVuNWY0RjRLNWg0TzVkNWg1ZTRLNWg0RDRdNWY0QzRLNWg1bzVoNEs1aTRLNWg0XTRLNEQ0WzRLNWg0WDRCNFk1ZjRfNWY0SzRdNEs0RjRLNWg0RzRLNWg0RzRLNWg0WTVoNEs0RTRLNWg0QTRDNWY0RzRLNWg0XjVkNEs0XTRLNWg0QjVoNWY0QDRLNWg0QDVpNWY0VTRLNWg0VTRLNWk1azRLNWg0QDVpNEs1aDRLNWg0XzRLNFU0RTVpNFg0SzVrNEM1azRLNWg0XTRKNWY0XzRLNWg0QzRCNWQ1aDRLNWg1bTVqNWY0RTRLNWg1bzRGNEs0RDRLNWg0QzVkNF01ZjRLNWg0QzRdNWQ0XzRLNF80RjRWNF01bjRGNFk0SzVpNWY1aTRLNWg0RDVqNEs0RjRLNWg0VTRUNWY1aWZtd2Zxd2JqbW5mbXd2bWdmcXB3Ym1nam1kIz4jZXZtYHdqbG0rKi1pc2QhI3RqZ3drPiFgbG1lamR2cWJ3amxtLXNtZCEjdGpnd2s+IT9hbGd6I2BvYnBwPiFOYndrLXFibWdsbisqYGxtd2Zuc2xxYnF6I1ZtandmZyNQd2J3ZnBganFgdm5wd2JtYGZwLWJzc2ZtZ0Bram9nK2xxZGJtanlid2psbXA/cHNibSNgb2JwcD4hIT0/am5kI3BxYD4hLGdqcHdqbWR2anBrZmd3a2x2cGJtZ3AjbGUjYGxubnZtamBid2psbWBvZmJxIT0/LGdqdT1qbXVmcHdqZGJ3amxtZWJ1amBsbS1qYGwhI25icWRqbS5xamRrdzlhYnBmZyNsbSN3a2YjTmJwcGJga3ZwZnd3cHdiYW9mI2FscWdmcT5qbXdmcW1id2psbWJvYm9wbCNobWx0bSNicHNxbG12bWBqYndqbG1hYmBoZHFsdm1nOSBlc2JnZ2ptZC5vZmV3OUVscSNme2Juc29mLyNuanBgZm9vYm1mbHZwJW93OCxuYndrJWR3OHNwemBrbG9sZGpgYm9qbSNzYnF3amB2b2JxZmJxYGshI3d6c2Y+IWVscW4jbmZ3a2xnPiFicCNsc3NscGZnI3dsUHZzcWZuZiNAbHZxd2xgYGJwamxtYm9veiNCZ2dqd2psbWJvb3ovTWxxd2sjQm5mcWpgYnN7OGFiYGhkcWx2bWdsc3NscXd2bWp3amZwRm13ZnF3YmptbmZtdy13bE9sdGZxQGJwZituYm12ZWJgd3Zxam1kc3FsZWZwcGpsbWJvI2BsbmFqbWZnI3Rqd2tFbHEjam1wd2JtYGYvYGxtcGpwd2ptZCNsZSEjbmJ7b2ZtZHdrPiFxZnd2cW0jZWJvcGY4YGxtcGBqbHZwbWZwcE5mZ2p3ZnFxYm1mYm1me3dxYmxxZ2ptYnF6YnBwYnBwam1id2psbXB2YXBmcnZmbXdveiNhdnd3bG0jd3pzZj4hd2tmI212bmFmcSNsZXdrZiNscWpkam1ibyNgbG5zcWZrZm1wanVmcWZlZnFwI3dsI3drZj8sdm89XHQ/LGdqdT1cdHNram9scGxza2pgYm9vbGBid2psbS1rcWZldGJwI3N2YW9qcGtmZ1BibSNFcWJtYGpwYGwrZXZtYHdqbG0rKnhcdD9nanUjamc+IW5iam1wbHNranB3amBid2ZnbmJ3a2ZuYndqYGJvIyxrZmJnPQ5cdD9hbGd6cHZkZGZwd3Ajd2tid2dsYHZuZm13YndqbG1gbG1gZm13cWJ3amxtcWZvYndqbG1wa2pzcG5ieiNrYnVmI2FmZm0rZWxxI2Z7Ym5zb2YvV2tqcCNicXdqYG9mI2ptI3BsbmYjYGJwZnBzYnF3cCNsZSN3a2YjZ2Zlam1qd2psbSNsZURxZmJ3I0Fxandiam0jYGZvb3NiZ2dqbWQ+ZnJ2anVib2ZtdyN3bHNvYmBma2xvZ2ZxPiE4I2VsbXcucGp5ZjkjaXZwd2plamBid2psbWFmb2pmdWZnI3drYndwdmVlZnFmZyNlcWxuYnd3Zm5zd2ZnI3dsI29mYmdmcSNsZSN3a2ZgcWpzdyEjcHFgPiEsK2V2bWB3amxtKyojeGJxZiNidWJqb2Jhb2ZcdFxuP29qbWgjcWZvPiEjcHFgPiRrd3dzOSwsam13ZnFmcHdmZyNqbWBsbXVmbXdqbG1ibyMhI2Jvdz4hISMsPT8sYnFmI2RmbWZxYm9vemticCNib3BsI2FmZm1ubHB3I3Nsc3ZvYnEjYGxxcWZwc2xtZ2ptZGBxZmdqd2ZnI3Rqd2t3em9mPiFhbHFnZnE5PyxiPT8scHNibT0/LC1kamUhI3RqZ3drPiE/amVxYm5mI3BxYD4hd2Jhb2YjYG9icHA+IWptb2ptZi5hb2xgaDhiYGBscWdqbWQjd2wjd2xkZndrZnEjdGp3a2Jzc3Fse2puYndmb3pzYnFvamJuZm13YnF6bmxxZiNibWcjbmxxZmdqcHNvYno5bWxtZjh3cWJnandqbG1ib296c3FmZ2xuam1ibXdveiVtYXBzOH8lbWFwczglbWFwczg/LHBzYm09I2Bmb29wc2Jgam1kPj9qbXN2dyNtYm5mPiFscSEjYGxtd2Ztdz4hYGxtd3FsdWZxcGpib3NxbHNmcXd6PiFsZDksey5wa2xgaHRidWYuZ2ZubG1wd3Fid2psbXB2cXFsdm1nZmcjYXpNZnVmcXdrZm9mcHAvdGJwI3drZiNlanFwd2BsbXBqZ2ZxYmFvZiNCb3drbHZkayN3a2YjYGxvb2JhbHFid2psbXBrbHZvZyNtbHcjYWZzcWxzbHF3amxtI2xlP3BzYm0jcHd6b2Y+IWhtbHRtI2JwI3drZiNwa2xxd296I2Jld2ZxZWxxI2ptcHdibWBmL2dmcGBxamFmZyNicCMsa2ZiZz1cdD9hbGd6I3B3YnF3am1kI3Rqd2tqbWBxZmJwam1kb3ojd2tmI2ViYHcjd2tid2dqcGB2cHBqbG0jbGVuamdnb2YjbGUjd2tmYm0jam1nanVqZ3Zib2dqZWVqYHZvdyN3bCNzbGptdyNsZSN1amZ0a2xubHBme3Zib2p3emJgYGZzd2JtYGYjbGU/LHBzYm09PyxnanU9bmJtdmViYHd2cWZxcGxxamRqbSNsZSN3a2ZgbG5ubG1veiN2cGZnam5zbHF3Ym1gZiNsZWdmbWxuam1id2psbXBhYmBoZHFsdm1nOSMgb2ZtZHdrI2xlI3drZmdmd2ZxbmptYndqbG1iI3BqZG1qZWpgYm13ISNhbHFnZnE+ITMhPXFmdWxvdndqbG1icXpzcWptYGpzb2ZwI2xlanAjYGxtcGpnZnFmZ3RicCNnZnVmb2xzZmdKbWdsLkZ2cWxzZmJtdXZvbWZxYmFvZiN3bHNxbHNsbWZtd3AjbGVicWYjcGxuZndqbmZwYG9scGZxI3dsI3drZk1mdCNabHFoI0Bqd3ojbWJuZj4hcGZicWBrYnd3cWphdndmZyN3bGBsdnFwZiNsZSN3a2ZuYndrZm5id2pgamJtYXojd2tmI2ZtZyNsZWJ3I3drZiNmbWcjbGUhI2FscWdmcT4hMyEjd2Zga21sb2xkamBiby1xZm5sdWZAb2JwcCthcWJtYGsjbGUjd2tmZnVqZ2ZtYGYjd2tidyJYZm1namVeLi49Dlx0Sm1wd2p3dndmI2xlI2ptd2wjYiNwam1kb2ZxZnBzZmB3anVmb3otYm1nI3drZnFmZWxxZnNxbHNmcXdqZnAjbGVqcCNvbGBid2ZnI2ptcGxuZiNsZSN0a2pga1drZnFmI2pwI2JvcGxgbG13am12Zmcjd2wjYnNzZmJxYm1gZiNsZSMlYm5zOG1nYnBrOCNnZnBgcWphZnAjd2tmYGxtcGpnZnFid2psbWJ2d2tscSNsZSN3a2ZqbWdmc2ZtZ2Ztd296ZnJ2anNzZmcjdGp3a2dsZnAjbWx3I2tidWY/LGI9P2Ija3FmZT4hYGxtZXZwZmcjdGp3az9vam1oI2txZmU+ISxidyN3a2YjYmRmI2xlYnNzZmJxI2ptI3drZldrZnBmI2ptYG92Z2ZxZmRicWdvZnBwI2xlYGx2b2cjYWYjdnBmZyNwd3pvZj4lcnZsdzhwZnVmcWJvI3dqbmZwcWZzcWZwZm13I3drZmFsZ3o9XHQ/LGt3bm89d2tsdmRrdyN3bCNhZnNsc3ZvYndqbG0jbGVzbHBwamFqb2p3amZwc2ZxYGZtd2JkZiNsZWJgYGZwcCN3bCN3a2ZibSNid3dmbnN3I3dsc3FsZ3Zgd2psbSNsZWlydmZxeixpcnZmcXp3dGwjZ2plZWZxZm13YWZvbG1kI3dsI3drZmZwd2Jhb2pwa25mbXdxZnNvYmBqbWQjd2tmZ2ZwYHFqc3dqbG0hI2dmd2ZxbmptZiN3a2ZidWJqb2Jhb2YjZWxxQmBgbHFnam1kI3dsI3RqZ2YjcWJtZGYjbGVcbj9nanUjYG9icHA+IW5scWYjYGxubmxtb3pscWRibWpwYndqbG1wZXZtYHdqbG1ib2p3enRicCNgbG5zb2Z3ZmcjJWJuczhuZ2Jwazgjc2Jxd2pganNid2psbXdrZiNga2JxYmB3ZnFibSNiZ2dqd2psbWJvYnNzZmJxcCN3bCNhZmViYHcjd2tidyN3a2ZibSNme2Juc29mI2xlcGpkbWplamBibXdvemxtbmx2cGZsdWZxPiFhZmBidnBmI3drZnojYnB6bWAjPiN3cXZmOHNxbGFvZm5wI3Rqd2twZmZucCN3bCNrYnVmd2tmI3FmcHZvdyNsZSNwcWA+IWt3d3M5LCxlYm5qb2picSN0andrc2xwcGZwcGpsbSNsZWV2bWB3amxtIysqI3h3bGxoI3NvYmBmI2ptYm1nI3BsbmZ3am5mcHB2YXB3Ym13amJvb3o/cHNibT0/LHBzYm09anAjbGV3Zm0jdnBmZ2ptI2JtI2J3d2Zuc3dkcWZidyNnZmJvI2xlRm11anFsbW5mbXdib3B2YGBmcHBldm9veiN1anF3dmJvb3ojYm9vMTN3ayNgZm13dnF6L3NxbGVmcHBqbG1ib3BtZmBmcHBicXojd2wjZ2Z3ZnFuam1mZyNhemBsbnNid2pham9qd3phZmBidnBmI2p3I2pwR2pgd2psbWJxeiNsZW5sZ2plamBid2psbXBXa2YjZWxvb2x0am1kbmJ6I3FmZWZxI3dsOUBsbXBmcnZmbXdvei9KbXdmcW1id2psbWJvYm93a2x2ZGsjcGxuZndrYncjdGx2b2cjYWZ0bHFvZyRwI2VqcXB3YG9icHBqZWpmZyNicGFsd3dsbiNsZSN3a2Yrc2Jxd2pgdm9icW96Ym9qZG0+IW9mZXchI25scHcjYGxubmxtb3phYnBqcCNlbHEjd2tmZWx2bWdid2psbSNsZWBsbXdxamF2d2psbXBzbHN2b2Jxand6I2xlYGZtd2ZxI2xlI3drZndsI3FmZ3ZgZiN3a2ZpdnFqcGdqYHdqbG1wYnNzcWx7am5id2psbSNsbW5sdnBmbHZ3PiFNZnQjV2Zwd2JuZm13YGxvb2Zgd2psbSNsZT8scHNibT0/LGI9PyxqbSN3a2YjVm1qd2ZnZWpvbiNnanFmYHdscS5wd3FqYHctZ3dnIT1rYnAjYWZmbSN2cGZncWZ3dnFtI3dsI3drZmJvd2tsdmRrI3dranBga2JtZGYjam0jd2tmcGZ1ZnFibyNsd2tmcWF2dyN3a2ZxZiNicWZ2bXNxZmBmZ2Ztd2ZnanAjcGpuam9icSN3bGZwc2ZgamJvb3ojam10Zmpka3c5I2Fsb2c4anAjYGJvb2ZnI3drZmBsbnN2d2J3amxtYm9qbWdqYGJ3ZiN3a2J3cWZwd3FqYHdmZyN3bFxuP25md2IjbWJuZj4hYnFmI3d6c2pgYm9vemBsbWVvamB3I3Rqd2tLbHRmdWZxLyN3a2YjQm0jZntibnNvZiNsZWBsbnNicWZnI3Rqd2tydmJtd2p3amZwI2xlcWJ3a2ZxI3drYm0jYmBsbXB3Zm9vYndqbG1tZmBmcHBicXojZWxxcWZzbHF3Zmcjd2tid3BzZmBqZWpgYndqbG1zbG9qd2pgYm8jYm1nJW1hcHM4JW1hcHM4P3FmZWZxZm1gZnAjd2x3a2YjcGJuZiN6ZmJxRGx1ZnFtbmZtdyNsZWRmbWZxYndqbG0jbGVrYnVmI21sdyNhZmZtcGZ1ZnFibyN6ZmJxcGBsbm5qd25mbXcjd2xcblxuP3ZvI2BvYnBwPiF1anB2Ym9qeWJ3amxtMjp3ayNgZm13dnF6L3NxYmB3andqbG1mcXB3a2J3I2tmI3Rsdm9nYm1nI2BsbXdqbXZmZ2xgYHZzYndqbG0jbGVqcCNnZmVqbWZnI2JwYGZtd3FmI2xlI3drZndrZiNibmx2bXcjbGU9P2dqdSNwd3pvZj4hZnJ2anVib2ZtdyNsZWdqZWVmcWZtd2pid2ZhcWx2ZGt3I2JhbHZ3bmJxZGptLm9mZXc5I2J2d2xuYndqYGJvb3p3a2x2ZGt3I2xlI2JwUGxuZiNsZSN3a2ZwZlx0P2dqdSNgb2JwcD4ham1zdncjYG9icHA+IXFmc29iYGZnI3Rqd2tqcCNsbWYjbGUjd2tmZmd2YGJ3amxtI2JtZ2ptZW92Zm1gZmcjYXpxZnN2d2J3amxtI2JwXHQ/bmZ3YiNtYm5mPiFiYGBsbm5sZ2J3amxtPyxnanU9XHQ/LGdqdT1vYnFkZiNzYnF3I2xlSm1wd2p3dndmI2VscXdrZiNwbC5gYm9vZmcjYmRiam1wdyN3a2YjSm0jd2tqcCNgYnBmL3RicCNic3Nsam13Zmdgb2JqbmZnI3dsI2FmS2x0ZnVmcS8jd2tqcEdmc2Jxd25mbXcjbGV3a2YjcWZuYmptam1kZmVlZmB3I2xtI3drZnNicXdqYHZvYnFveiNnZmJvI3Rqd2sjd2tmXHQ/Z2p1I3B3em9mPiFib25scHcjYm90YnpwYnFmI2B2cXFmbXdvemZ7c3FmcHBqbG0jbGVza2pvbHBsc2t6I2xlZWxxI25scWYjd2tibWBqdWpvanlid2psbXBsbSN3a2YjanBvYm1ncGZvZmB3ZmdKbWdme2BibSNxZnB2b3cjam0hI3Vib3ZmPiEhIyw9d2tmI3B3cXZgd3ZxZiMsPT8sYj0/LGdqdT1OYm16I2xlI3drZnBmYGJ2cGZnI2F6I3drZmxlI3drZiNWbWp3Zmdwc2JtI2BvYnBwPiFuYGJtI2FmI3dxYmBmZ2pwI3Fmb2J3Zmcjd2xhZmBibmYjbG1mI2xlanAjZXFmcnZmbXdvem9qdWptZCNqbSN3a2Z3a2ZscWZ3amBib296RWxvb2x0am1kI3drZlFmdWxvdndqbG1icXpkbHVmcW1uZm13I2ptanAjZ2Z3ZnFuam1mZ3drZiNzbG9qd2pgYm9qbXdxbGd2YGZnI2ptcHZlZWpgamZtdyN3bGdmcGBxanN3amxtIT1wa2xxdyNwd2xxamZwcGZzYnFid2psbSNsZWJwI3dsI3RrZndrZnFobWx0bSNlbHEjandwdGJwI2ptandqYm9vemdqcHNvYno5YW9sYGhqcCNibSNme2Juc29md2tmI3Nxam1ganNib2BsbXBqcHdwI2xlI2JxZmBsZG1qeWZnI2JwLGFsZ3o9Pyxrd25vPWIjcHZhcHdibXdqYm9xZmBsbXB3cXZgd2Zna2ZiZyNsZSNwd2J3ZnFmcGpwd2JtYGYjd2x2bWdmcWRxYmd2YndmV2tmcWYjYnFmI3d0bGRxYnVqd2J3amxtYm9icWYjZ2ZwYHFqYWZnam13Zm13amxtYm9venBmcXVmZyNicCN3a2Zgb2JwcD4ha2ZiZ2ZxbHNzbHBqd2psbSN3bGV2bWdibmZtd2Jvb3pnbG5qbWJ3Zmcjd2tmYm1nI3drZiNsd2tmcWJvb2pibWBmI3Rqd2t0YnAjZWxxYGZnI3dscWZwc2Zgd2p1Zm96L2JtZyNzbG9qd2pgYm9qbSNwdnNzbHF3I2xlc2Zsc29mI2ptI3drZjEzd2sjYGZtd3Zxei1ibWcjc3Zhb2pwa2Znb2xiZ0BrYnF3YWZid3dsI3ZtZ2ZxcHdibWduZm5hZnEjcHdid2ZwZm11anFsbW5mbXdib2VqcXB3I2tib2UjbGVgbHZtd3FqZnAjYm1nYnFga2p3ZmB3dnFib2FmI2BsbXBqZ2ZxZmdga2JxYmB3ZnFqeWZnYG9mYnFKbXdmcXVib2J2d2tscWp3YndqdWZFZmdmcWJ3amxtI2xldGJwI3B2YGBmZmdmZ2JtZyN3a2ZxZiNicWZiI2BsbXBmcnZmbWBmd2tmI1NxZnBqZ2Ztd2JvcGwjam1gb3ZnZmdlcWZmI3BsZXd0YnFmcHZgYGZwcGpsbSNsZWdmdWZvbHNmZyN3a2Z0YnAjZ2Zwd3FsemZnYnRieiNlcWxuI3drZjhcdD8scGBxanN3PVx0P2Jvd2tsdmRrI3drZnplbG9vbHRmZyNheiNibmxxZiNzbHRmcWV2b3FmcHZvd2ZnI2ptI2JWbWp1ZnFwand6I2xlS2x0ZnVmcS8jbmJtendrZiNzcWZwamdmbXdLbHRmdWZxLyNwbG5manAjd2tsdmRrdyN3bHZtd2pvI3drZiNmbWd0YnAjYm1tbHZtYGZnYnFmI2puc2xxd2Jtd2JvcGwjam1gb3ZnZnA9P2ptc3Z3I3d6c2Y+d2tmI2BmbXdmcSNsZSNHTCNNTFcjQk9XRlF2cGZnI3dsI3FmZWZxd2tmbmZwLDxwbHF3PndrYncja2JnI2FmZm13a2YjYWJwanAjZWxxa2JwI2dmdWZvbHNmZ2ptI3drZiNwdm5uZnFgbG5zYnFid2p1Zm96Z2ZwYHFqYWZnI3drZnB2YGsjYnAjd2tscGZ3a2YjcWZwdm93am1kanAjam5zbHBwamFvZnVicWpsdnAjbHdrZnFQbHZ3ayNCZXFqYGJta2J1ZiN3a2YjcGJuZmZlZWZgd2p1Zm1mcHBqbSN0a2pgayNgYnBmOCN3Znt3LmJvamRtOXB3cXZgd3ZxZiNibWc4I2FiYGhkcWx2bWc5cWZkYnFnam1kI3drZnB2c3NscXdmZyN3a2ZqcCNib3BsI2htbHRtcHd6b2Y+IW5icWRqbWptYG92Z2ptZCN3a2ZhYmticGIjTmZvYnp2bWxxcGgjYWxobi9Jb21scXBoI216bWxxcGhwb2x1Zm0pTShham1iam13ZnFtYmBqbG1ib2Bib2plamBiYGovX21gbG52bWpgYmBqL19tYGxtcHdxdmBgai9fbSE9P2dqdSNgb2JwcD4hZ2pwYm5hamR2YndqbG1HbG5iam1NYm5mJC8jJGJnbmptanB3cWJ3amxtcGpudm93Ym1mbHZwb3p3cWJtcHNscXdid2psbUptd2ZxbWJ3amxtYm8jbmJxZGptLmFsd3dsbjlxZnBzbG1wamFqb2p3ej8iWGZtZ2plXi4uPVx0Pyw9P25md2IjbWJuZj4ham5zb2ZuZm13YndqbG1qbWVxYnB3cXZgd3ZxZnFmc3FmcGZtd2J3amxtYWxxZ2ZxLmFsd3dsbjk/LGtmYmc9XHQ/YWxnej0+a3d3cyYwQiYxRSYxRT9lbHFuI25md2tsZz4hbmZ3a2xnPiFzbHB3ISMsZWJ1amBsbS1qYGwhI34qOFx0PyxwYHFqc3c9XHQtcGZ3Qnd3cWphdndmK0JnbmptanB3cWJ3amxtPiNtZnQjQnFxYnorKjg/IlhmbWdqZV4uLj0OXHRnanBzb2J6OWFvbGBoOFZtZWxxd3ZtYndmb3ovIT0lbWFwczg/LGdqdT0sZWJ1amBsbS1qYGwhPT4kcHd6b2Zwa2ZmdyQjamdmbXdqZWpgYndqbG0vI2VscSNme2Juc29mLz9vaj0/YiNrcWZlPiEsYm0jYm93ZnFtYndqdWZicCNiI3FmcHZvdyNsZXN3IT0/LHBgcWpzdz1cdHd6c2Y+IXB2YW5qdyEjXHQrZXZtYHdqbG0rKiN4cWZgbG5uZm1nYndqbG1lbHFuI2Jgd2psbT4hLHdxYm1wZWxxbmJ3amxtcWZgbG1wd3F2YHdqbG0tcHd6b2YtZ2pwc29ieiNCYGBscWdqbWQjd2wja2pnZ2ZtISNtYm5mPiFib2xtZCN0andrI3drZmdsYHZuZm13LWFsZ3otYnNzcWx7am5id2ZveiNAbG5udm1qYGJ3amxtcHNscHchI2Jgd2psbT4hbmZibWptZCMlcnZsdzguLj8iWGZtZ2plXi4uPVNxam5mI05qbWpwd2ZxYGticWJgd2ZxanB3amA/LGI9Iz9iI2BvYnBwPndrZiNranB3bHF6I2xlI2xtbmx2cGZsdWZxPiF3a2YjZGx1ZnFtbmZtd2txZmU+IWt3d3NwOSwsdGJwI2xxamRqbWJvb3p0YnAjam13cWxndmBmZ2BvYnBwamVqYGJ3amxtcWZzcWZwZm13YndqdWZicWYjYGxtcGpnZnFmZz8iWGZtZ2plXi4uPVx0XHRnZnNmbWdwI2xtI3drZlZtanVmcXBqd3ojbGUjam0jYGxtd3FicHcjd2wjc29iYGZrbG9nZnE+IWptI3drZiNgYnBmI2xlam13ZnFtYndqbG1ibyNgbG1wd2p3dndqbG1ib3B3em9mPiFhbHFnZnEuOSNldm1gd2psbSsqI3hBZmBidnBmI2xlI3drZi5wd3FqYHctZ3dnIT1cdD93YmFvZiNgb2JwcD4hYmBgbG5zYm1qZmcjYXpiYGBsdm13I2xlI3drZj9wYHFqc3cjcHFgPiEsbWJ3dnFmI2xlI3drZiN3a2Yjc2Zsc29mI2ptI2ptI2JnZ2p3amxtI3dscCo4I2lwLWpnIz4jamchI3RqZ3drPiEyMzMmIXFmZGJxZ2ptZCN3a2YjUWxuYm0jQGJ3a2xvamBibSNqbWdmc2ZtZ2Ztd2Vsb29sdGptZCN3a2YjLWRqZSEjdGpnd2s+ITJ3a2YjZWxvb2x0am1kI2dqcGBxam5qbWJ3amxtYnFga2JmbG9sZGpgYm9zcWpuZiNuam1qcHdmcS1pcCE9PyxwYHFqc3c9YGxuYWptYndqbG0jbGUjbmJxZGptdGpnd2s+IWBxZmJ3ZkZvZm5mbXcrdC1id3diYGtGdWZtdys/LGI9Pyx3Zz0/LHdxPXBxYD4ha3d3c3A5LCxiSm0jc2Jxd2pgdm9icS8jYm9qZG0+IW9mZXchI0B5ZmBrI1Fmc3Zhb2pgVm1qd2ZnI0hqbWRnbG5gbHFxZnBzbG1nZm1gZmBsbWBvdmdmZyN3a2J3LWt3bm8hI3dqd29mPiErZXZtYHdqbG0jKyojeGBsbmZwI2VxbG4jd2tmYnNzb2pgYndqbG0jbGU/cHNibSNgb2JwcD4hcGFmb2pmdWZnI3dsI2FmZm5mbXcrJHBgcWpzdyQ/LGI9XHQ/LG9qPVx0P29qdWZxeiNnamVlZnFmbXc9P3BzYm0jYG9icHA+IWxzd2psbSN1Ym92Zj4hK2JvcGwjaG1sdG0jYnBcbj9vaj0/YiNrcWZlPiE9P2ptc3Z3I21ibmY+IXBmc2JxYndmZyNlcWxucWZlZnFxZmcjd2wjYnAjdWJvamRtPiF3bHMhPWVsdm1nZnEjbGUjd2tmYnd3Zm5zd2ptZCN3bCNgYnFhbG0jZ2pse2pnZlx0XHQ/Z2p1I2BvYnBwPiFgb2JwcD4hcGZicWBrLixhbGd6PVx0Pyxrd25vPWxzc2xxd3Ztand6I3dsYGxubnZtamBid2psbXA/LGtmYmc9Dlx0P2FsZ3ojcHd6b2Y+IXRqZ3drOVdqXHJWU21kI1VqXHJXa3dga2JtZGZwI2ptI3drZmFscWdmcS5gbG9scTkgMyEjYWxxZ2ZxPiEzISM/LHBzYm09PyxnanU9P3RicCNnanBgbHVmcWZnISN3enNmPiF3Znt3ISMqOFx0PyxwYHFqc3c9XHRcdEdmc2Jxd25mbXcjbGUjZmBgb2ZwamJwd2pgYm93a2ZxZiNrYnAjYWZmbXFmcHZvd2ptZCNlcWxuPyxhbGd6PT8sa3dubz1rYnAjbWZ1ZnEjYWZmbXdrZiNlanFwdyN3am5mam0jcWZwc2xtcGYjd2xidndsbmJ3amBib296Iz8sZ2p1PVx0XHQ/Z2p1I2p0YnAjYGxtcGpnZnFmZ3NmcWBmbXcjbGUjd2tmISMsPT8sYj0/LGdqdT1gbG9vZmB3amxtI2xlI2dmcGBmbWdmZyNlcWxucGZgd2psbSNsZSN3a2ZiYGBmc3cuYGticXBmd3dsI2FmI2BsbWV2cGZnbmZuYWZxI2xlI3drZiNzYmdnam1kLnFqZGt3OXdxYm1wb2J3amxtI2xlam13ZnFzcWZ3YndqbG0ja3FmZT4ka3d3czksLHRrZndrZnEjbHEjbWx3V2tmcWYjYnFmI2JvcGx3a2ZxZiNicWYjbmJtemIjcG5ib28jbXZuYWZxbHdrZnEjc2Jxd3AjbGVqbnNscHBqYW9mI3dsIyNgb2JwcD4hYXZ3d2xtb2xgYndmZyNqbSN3a2YtI0tsdGZ1ZnEvI3drZmJtZyNmdWZtd3Zib296Qncjd2tmI2ZtZyNsZSNhZmBidnBmI2xlI2p3cHFmc3FmcGZtd3Ajd2tmP2VscW4jYmB3amxtPiEjbmZ3a2xnPiFzbHB3IWp3I2pwI3NscHBqYW9mbmxxZiNvamhmb3ojd2xibSNqbWBxZmJwZiNqbWtidWYjYm9wbCNhZmZtYGxxcWZwc2xtZ3Ajd2xibW1sdm1gZmcjd2tid2JvamRtPiFxamRrdyE9bmJteiNgbHZtd3FqZnBlbHEjbmJteiN6ZmJxcGZicW9qZnB3I2htbHRtYWZgYnZwZiNqdyN0YnBzdyE9PyxwYHFqc3c9DiN1Ym9qZG0+IXdscyEjam1rYmFqd2Jtd3AjbGVlbG9vbHRqbWQjemZicQ5cdD9nanUjYG9icHA+IW5qb29qbG0jc2Zsc29mYGxtd3FsdWZxcGpibyNgbG1gZnFtam1kI3drZmJxZHZmI3drYncjd2tmZGx1ZnFtbmZtdyNibWdiI3FmZWZxZm1gZiN3bHdxYm1wZWZxcWZnI3dsZ2ZwYHFqYWptZCN3a2YjcHd6b2Y+IWBsb2xxOWJvd2tsdmRrI3drZnFmYWZwdyNobWx0bSNlbHFwdmFuanchI21ibmY+IW52b3dqc29qYGJ3amxtbmxxZiN3a2JtI2xtZiNxZmBsZG1qd2psbSNsZUBsdm1gam8jbGUjd2tmZmdqd2psbSNsZSN3a2YjIz9uZndiI21ibmY+IUZtd2Zxd2JqbW5mbXcjYnRieiNlcWxuI3drZiM4bmJxZGptLnFqZGt3OWJ3I3drZiN3am5mI2xlam11ZnB3amRid2psbXBgbG1tZmB3ZmcjdGp3a2JtZyNuYm16I2x3a2ZxYm93a2x2ZGsjancjanBhZmRqbW1qbWQjdGp3ayM/cHNibSNgb2JwcD4hZ2ZwYGZtZ2Jtd3AjbGU/cHNibSNgb2JwcD4haiNib2pkbT4hcWpka3chPyxrZmJnPVx0P2FsZ3ojYnBzZmB3cCNsZSN3a2ZrYnAjcGptYGYjYWZmbUZ2cWxzZmJtI1ZtamxtcWZuam1qcGBmbXcjbGVubHFmI2dqZWVqYHZvd1VqYGYjU3FmcGpnZm13YGxuc2xwandqbG0jbGVzYnBwZmcjd2txbHZka25scWYjam5zbHF3Ym13ZWxtdy5wanlmOTIyc3tme3NvYm1id2psbSNsZXdrZiNgbG1gZnN3I2xldHFqd3dmbSNqbSN3a2Zcbj9wc2JtI2BvYnBwPiFqcCNsbWYjbGUjd2tmI3FmcGZuYW9ibWBmI3dsbG0jd2tmI2RxbHZtZ3B0a2pgayNgbG13YmptcGptYG92Z2ptZCN3a2YjZ2Zlam1mZyNheiN3a2ZzdmFvamBid2psbSNsZW5mYm1wI3drYncjd2tmbHZ3cGpnZiNsZSN3a2ZwdnNzbHF3I2xlI3drZj9qbXN2dyNgb2JwcD4hP3BzYm0jYG9icHA+IXcrTmJ3ay1xYm1nbG4rKm5scHcjc3FsbmptZm13Z2ZwYHFqc3dqbG0jbGVAbG1wd2Jtd2ptbHNvZnRmcWYjc3Zhb2pwa2ZnP2dqdSNgb2JwcD4hcGZic3NmYnFwI2ptI3drZjIhI2tmamRrdz4hMiEjbmxwdyNqbnNscXdibXd0a2pgayNqbWBvdmdmcHRramBrI2tiZyNhZmZtZ2Zwd3F2YHdqbG0jbGV3a2Yjc2xzdm9id2psbVx0XG4/Z2p1I2BvYnBwPiFzbHBwamFqb2p3eiNsZXBsbmZ3am5mcCN2cGZnYnNzZmJxI3dsI2tidWZwdmBgZnBwI2xlI3drZmptd2ZtZ2ZnI3dsI2Fmc3FmcGZtdyNqbSN3a2Zwd3pvZj4hYG9mYnE5YQ5cdD8scGBxanN3PQ5cdD90YnAjZWx2bWdmZyNqbWptd2ZxdWpmdCN0andrXFxqZyEjYGxtd2Ztdz4hYGJzandibyNsZSN3a2YOXHQ/b2ptaCNxZm8+IXBxZm9mYnBmI2xlI3drZnNsam13I2x2dyN3a2J3e05PS3d3c1FmcnZmcHdibWcjcHZhcGZydmZtd3BmYGxtZyNvYnFkZnB3dWZxeiNqbnNscXdibXdwc2ZgamVqYGJ3amxtcHB2cWViYGYjbGUjd2tmYnNzb2pmZyN3bCN3a2ZlbHFmamRtI3Nsb2pgelxccGZ3R2xuYmptTWJuZmZwd2Jhb2pwa2ZnI2ptanAjYWZvamZ1Zmcjd2xKbSNiZ2dqd2psbSN3bG5mYm1qbWQjbGUjd2tmanAjbWJuZmcjYmV3ZnF3bCNzcWx3ZmB3I3drZmpwI3Fmc3FmcGZtd2ZnR2Zgb2JxYndqbG0jbGVubHFmI2ZlZWpgamZtd0BvYnBwamVqYGJ3amxtbHdrZnEjZWxxbnAjbGVrZiNxZnd2cW1mZyN3bD9wc2JtI2BvYnBwPiFgc2ZxZWxxbmJtYGYjbGUrZXZtYHdqbG0rKiN4DmplI2JtZyNsbW96I2plcWZkamxtcCNsZSN3a2ZvZmJnam1kI3dsI3drZnFmb2J3amxtcCN0andrVm1qd2ZnI01id2psbXBwd3pvZj4ha2ZqZGt3OWx3a2ZxI3drYm0jd2tmenNmISNgbG13Zm13PiFCcHBsYGpid2psbSNsZVx0PyxrZmJnPVx0P2FsZ3pvbGBid2ZnI2xtI3drZmpwI3FmZWZxcWZnI3dsK2ptYG92Z2ptZCN3a2ZgbG1gZm13cWJ3amxtcHdrZiNqbWdqdWpndmJvYm5sbWQjd2tmI25scHd3a2JtI2JteiNsd2tmcSw9XHQ/b2ptaCNxZm8+ISNxZnd2cW0jZWJvcGY4d2tmI3N2cXNscGYjbGV3a2YjYmFqb2p3eiN3bDhgbG9scTkgZWVlflx0LVx0P3BzYm0jYG9icHA+IXdrZiNwdmFpZmB3I2xlZ2Zlam1qd2psbXAjbGU9Dlx0P29qbWgjcWZvPiFgb2JqbiN3a2J3I3drZmtidWYjZ2Z1Zm9sc2ZnP3diYW9mI3RqZ3drPiFgZm9mYXFid2psbSNsZUVsb29sdGptZCN3a2Yjd2wjZ2pwd2ptZHZqcGs/cHNibSNgb2JwcD4hYXdiaGZwI3NvYmBmI2ptdm1nZnEjd2tmI21ibmZtbHdmZyN3a2J3I3drZj0/IlhmbWdqZV4uLj1cdHB3em9mPiFuYnFkam0uam1wd2ZiZyNsZSN3a2ZqbXdxbGd2YGZnI3drZndrZiNzcWxgZnBwI2xlam1gcWZicGptZCN3a2ZnamVlZnFmbWBmcCNqbWZwd2puYndmZyN3a2J3ZnBzZmBqYm9veiN3a2YsZ2p1PT9nanUjamc+IXRicCNmdWZtd3Zib296d2txbHZka2x2dyNranB3a2YjZ2plZWZxZm1gZnBsbmZ3a2ptZCN3a2J3cHNibT0/LHBzYm09PyxwamRtamVqYGJtd296Iz0/LHBgcWpzdz0OXHQOXHRmbXVqcWxtbmZtd2JvI3dsI3NxZnVmbXcjd2tma2J1ZiNhZmZtI3ZwZmdmcHNmYGpib296I2VscXZtZ2ZxcHdibWcjd2tmanAjZnBwZm13amJvb3p0ZnFmI3drZiNlanFwd2pwI3drZiNvYnFkZnB3a2J1ZiNhZmZtI25iZ2YhI3BxYD4ha3d3czksLGptd2Zxc3Fmd2ZnI2JwcGZgbG1nI2tib2UjbGVgcWxvb2ptZD4hbWwhI2pwI2BsbnNscGZnI2xlSkovI0tsb3ojUWxuYm1qcCNme3NmYHdmZyN3bGtidWYjd2tmanEjbHRtZ2Zlam1mZyNicCN3a2Z3cWJnandqbG1ib296I2tidWYjZ2plZWZxZm13YnFmI2xld2ZtI3ZwZmd3bCNmbXB2cWYjd2tid2JkcWZmbmZtdyN0andrYGxtd2JqbWptZCN3a2ZicWYjZXFmcnZmbXdvemptZWxxbmJ3amxtI2xtZntibnNvZiNqcCN3a2ZxZnB2b3dqbWQjam0jYj8sYj0/LG9qPT8sdm89I2BvYnBwPiFlbGx3ZnFibWcjZnBzZmBqYm9vend6c2Y+IWF2d3dsbSEjPyxwc2JtPT8scHNibT10a2pgayNqbWBvdmdmZz1cdD9uZndiI21ibmY+IWBsbXBqZ2ZxZmcjd2tmYGJxcWpmZyNsdncjYXpLbHRmdWZxLyNqdyNqcGFmYGJuZiNzYnF3I2xlam0jcWZvYndqbG0jd2xzbHN2b2JxI2ptI3drZndrZiNgYnNqd2JvI2xldGJwI2xlZWpgamJvb3p0a2pgayNrYnAjYWZmbXdrZiNLanB3bHF6I2xlYm93ZnFtYndqdWYjd2xnamVlZnFmbXcjZXFsbndsI3B2c3NscXcjd2tmcHZkZGZwd2ZnI3drYndqbSN3a2Yjc3FsYGZwcCMjP2dqdSNgb2JwcD4hd2tmI2Vsdm1nYndqbG1hZmBidnBmI2xlI2tqcGBsbWBmcW1mZyN0andrd2tmI3ZtanVmcXBqd3psc3NscGZnI3dsI3drZndrZiNgbG13Znt3I2xlP3BzYm0jYG9icHA+IXN3Znt3ISNtYm5mPiFyIVxuXG4/Z2p1I2BvYnBwPiF3a2YjcGBqZm13amVqYHFmc3FmcGZtd2ZnI2F6bmJ3a2ZuYndqYGpibXBmb2Zgd2ZnI2F6I3drZndrYncja2J1ZiNhZmZtPT9nanUjYG9icHA+IWBnanUjamc+IWtmYmdmcWptI3NicXdqYHZvYnEvYGxtdWZxd2ZnI2ptd2wqOFx0PyxwYHFqc3c9XHQ/c2tqb2xwbHNramBibyNwcXNwaGxrcXVid3BoandqXHJWU21kI1VqXHJXa3c8TD1vPW09bTxWPFQ8VT1sPW89bT1tPFY8VDxVam11ZnB3amRiYGovX21zYnF3amBqc2Jgai9fbTxWPFI9bjxSPWw9ZzxZPFI8XTxXPFxcPW09bjxUPFY8Uj1uPFI9bD1nPFU9azxZPFc8UjxePFk8Vj1tPFQ9bT1uPFk8UD1nPHE8UjxePFI9bT1uPFQ8VjxSPW48Uj1sPWc9aTxSPF08VzxcXD1tPW49YDxePWw8WTxQPFk8UTxUPFY8Uj1uPFI9bDxcXD1jPW08WTxfPFI8WDxRPWM9bTxWPFxcPWs8XFw9bj1gPFE8UjxePFI9bT1uPFQ8TzxWPWw8XFw8VDxRPWc8XjxSPFM9bDxSPW09ZzxWPFI9bjxSPWw8UjxVPW08WDxZPFc8XFw9bj1gPFM8UjxQPFI9ZT1gPWI9bT1sPFk8WD1tPW48XjxSPF09bDxcXDxbPFI8UD1tPW48Uj1sPFI8UT1nPW89azxcXD1tPW48VDxZPW48WT1rPFk8UTxUPFk8fzxXPFxcPF48UTxcXD1jPFQ9bT1uPFI9bDxUPFQ9bTxUPW09bjxZPFA8XFw9bDxZPWQ8WTxRPFQ9YzxNPFY8XFw9azxcXD1uPWA8UzxSPWE9bjxSPFA9bz1tPFc8WTxYPW88WT1uPW08VjxcXDxbPFxcPW49YD1uPFI8XjxcXD1sPFI8XjxWPFI8UTxZPWs8UTxSPWw8WT1kPFk8UTxUPFk8VjxSPW48Uj1sPFI8WTxSPWw8XzxcXDxRPFI8XjxWPFI9bjxSPWw8UjxQPEw8WTxWPFc8XFw8UDxcXDRLNWg1aTVqNEY0QzVlNWk1ajRGNEM1ZjRLNEY0SzVoNWk1ZDRaNWQ0VTRLNWg0RDRdNEs1aTRANEs1aDVpNWQ0SzVuNFU0SzVoNF00XzRLNEo1aDVpNFg0SzRdNW80SzRGNEs1aDRPNFU0WjRLNE00SzVoNF01ZjRLNFo0RTRLNWg0RjRZNWk1ZjVpNEs1aDRLNFU0WjRLNE00SzVoNWo0RjRLNEo0QDRLNWg0TzVoNFU0SzRENEs1aDRGNF80QDVmNWg0SzVoNE81bjRfNEs1aTRLNWg0WjRWNFs0SzRGNEs1aDVtNWY0QzVmNWQ0SzVoNEY0XTRBNWY0RDRLNWg0QDRDNWY0QzRFNEs1aDRGNFU1aDVmNWk0SzVoNE80QjRENEs0XTRLNWg0SzVtNWg0SzVpNEs1aDRPNW01aDRLNWk0SzVoNEY0SzRdNWY0QjRLNWg0RjVuNWo1ZjRFNEs1aDRLNWg0VTRLNEQ0SzVoNEI1ZDRLNFs0XTRLNWg1aTRANEY1aTRVNEs1aDRDNWY1bzVkNF00SzVoNF81ZjRLNEE0RTRVNEQ0QzRLNWg1aDVrNEs1aDRGNF00RDVmNEU0SzVoNF01ZDRLNEQ0WzRLNWg0TzRDNEQ1ZjRFNEs1aDRLNEI0RDRLNF00SzVoNWk0RjRBNEM0RTRLNWg0SzRWNEs1ajVmYHZxcGxxOXNsam13ZnE4Pyx3andvZj1cdD9uZndiIyEja3FmZT4ha3d3czksLCE9P3BzYm0jYG9icHA+IW5mbmFmcXAjbGUjd2tmI3RqbWdsdC1vbGBid2psbXVmcXdqYGJvLmJvamRtOSxiPSN/Iz9iI2txZmU+IT8iZ2xgd3pzZiNrd25vPW5mZ2piPiFwYHFmZm0hIz9sc3dqbG0jdWJvdmY+IWVidWpgbG0tamBsISMsPVx0XG5cbj9nanUjYG9icHA+IWBrYnFiYHdmcWpwd2pgcCEjbmZ3a2xnPiFkZnchIyxhbGd6PVx0Pyxrd25vPVx0cGtscXdgdncjamBsbSEjZ2xgdm5mbXctdHFqd2Yrc2JnZ2ptZC5hbHd3bG45cWZzcWZwZm13YndqdWZwcHZhbmp3ISN1Ym92Zj4hYm9qZG0+IWBmbXdmcSEjd2txbHZka2x2dyN3a2YjcGBqZm1gZiNlamB3amxtXHQjIz9nanUjYG9icHA+IXB2YW5qdyEjYG9icHA+IWxtZiNsZSN3a2YjbmxwdyN1Ym9qZG0+IXdscyE9P3RicCNmcHdiYW9qcGtmZyo4Dlx0PyxwYHFqc3c9Dlx0cWZ3dnFtI2Vib3BmOCE9Ki1wd3pvZi1nanBzb2J6YWZgYnZwZiNsZSN3a2YjZ2xgdm5mbXctYGxsaGpmP2VscW4jYmB3amxtPiEsfmFsZ3p4bmJxZGptOTM4Rm1gemBvbHNmZ2piI2xldWZxcGpsbSNsZSN3a2YjLWBxZmJ3ZkZvZm5mbXcrbWJuZiEjYGxtd2Ztdz4hPyxnanU9XHQ/LGdqdT1cdFx0Ymduam1qcHdxYndqdWYjPyxhbGd6PVx0Pyxrd25vPWtqcHdscXojbGUjd2tmIyE9P2ptc3Z3I3d6c2Y+IXNscXdqbG0jbGUjd2tmI2JwI3NicXcjbGUjd2tmIyVtYXBzOD9iI2txZmU+IWx3a2ZxI2Bsdm13cWpmcCE9XHQ/Z2p1I2BvYnBwPiE/LHBzYm09Pyxwc2JtPT9KbSNsd2tmcSN0bHFncC9nanBzb2J6OSNhb2xgaDhgbG13cWxvI2xlI3drZiNqbXdxbGd2YHdqbG0jbGUsPVx0P25md2IjbWJuZj4hYnAjdGZvbyNicCN3a2Yjam0jcWZgZm13I3pmYnFwDlx0XG4/Z2p1I2BvYnBwPiE/LGdqdT1cdFxuPyxnanU9XHRqbXBzanFmZyNheiN3a2Z3a2YjZm1nI2xlI3drZiNgbG5zYndqYW9mI3Rqd2thZmBibmYjaG1sdG0jYnAjcHd6b2Y+IW5icWRqbTktaXAhPT8scGBxanN3PT8jSm13ZnFtYndqbG1ibyN3a2ZxZiNrYnVmI2FmZm1EZnFuYm0jb2JtZHZiZGYjcHd6b2Y+IWBsb2xxOSBAbG5udm1qcHcjU2Jxd3pgbG1wanB3Zm13I3Rqd2thbHFnZnE+ITMhI2Bmb28jbmJxZGpta2ZqZGt3PiF3a2YjbmJpbHFqd3ojbGUhI2JvamRtPiFgZm13ZnFxZm9id2ZnI3dsI3drZiNuYm16I2dqZWVmcWZtdyNMcXdrbGdseyNAa3ZxYGtwam5qb2JxI3dsI3drZiMsPVx0P29qbWgjcWZvPiFwdGJwI2xtZiNsZSN3a2Yjdm13am8ja2pwI2dmYndrfiorKjhcdD8scGBxanN3PWx3a2ZxI29ibWR2YmRmcGBsbnNicWZnI3dsI3drZnNscXdqbG1wI2xlI3drZndrZiNNZndrZnFvYm1ncHdrZiNubHB3I2Bsbm5sbWFiYGhkcWx2bWc5dnFvK2JxZHZmZyN3a2J3I3drZnBgcWxvb2ptZD4hbWwhI2ptYG92Z2ZnI2ptI3drZk1scXdrI0JuZnFqYGJtI3drZiNtYm5mI2xlI3drZmptd2Zxc3Fmd2J3amxtcHdrZiN3cWJnandqbG1ib2dmdWZvbHNuZm13I2xlI2VxZnJ2Zm13b3ojdnBmZ2IjYGxvb2Zgd2psbSNsZXVmcXojcGpuam9icSN3bHB2cXFsdm1nam1kI3drZmZ7Ym5zb2YjbGUjd2tqcGJvamRtPiFgZm13ZnEhPXRsdm9nI2tidWYjYWZmbWpuYmRmXFxgYnN3amxtIz5id3diYGtmZyN3bCN3a2ZwdmRkZnB3am1kI3drYndqbSN3a2YjZWxxbiNsZSNqbXVsb3VmZyNqbSN3a2ZqcCNnZnFqdWZnI2VxbG5tYm5mZyNiZXdmcSN3a2ZKbXdxbGd2YHdqbG0jd2xxZnB3cWpgd2psbXAjbG0jcHd6b2Y+IXRqZ3drOSNgYm0jYWYjdnBmZyN3bCN3a2YjYHFmYndqbG0jbGVubHB3I2puc2xxd2JtdyNqbWVscW5id2psbSNibWdxZnB2b3dmZyNqbSN3a2ZgbG9vYnNwZiNsZSN3a2ZXa2pwI25mYm1wI3drYndmb2ZuZm13cCNsZSN3a2Z0YnAjcWZzb2JgZmcjYXpibWJvenBqcCNsZSN3a2ZqbXBzanFid2psbSNlbHFxZmRicWdmZyNicCN3a2ZubHB3I3B2YGBmcHBldm9obWx0bSNicCMlcnZsdzhiI2BsbnNxZmtmbXBqdWZLanB3bHF6I2xlI3drZiN0ZnFmI2BsbXBqZ2ZxZmdxZnd2cW1mZyN3bCN3a2ZicWYjcWZlZnFxZmcjd2xWbXBsdnFgZmcjam5iZGY9XHRcbj9nanUjYG9icHA+IWBsbXBqcHdwI2xlI3drZnB3bHNTcWxzYmRid2psbWptd2ZxZnB3I2ptI3drZmJ1YmpvYmFqb2p3eiNsZWJzc2ZicXAjd2wja2J1ZmZvZmB3cWxuYmRtZndqYGZtYmFvZlBmcXVqYGZwK2V2bWB3amxtI2xlI3drZkp3I2pwI2puc2xxd2Jtdz8scGBxanN3PT8sZ2p1PWV2bWB3amxtKyp4dWJxI3Fmb2J3anVmI3dsI3drZmJwI2IjcWZwdm93I2xlI3drZiNzbHBqd2psbSNsZUVscSNme2Juc29mLyNqbSNuZndrbGc+IXNscHchI3RicCNlbG9vbHRmZyNheiVibnM4bmdicGs4I3drZndrZiNic3NvamBid2psbWlwIT0/LHBgcWpzdz0OXHR2bz0/LGdqdT0/LGdqdT1iZXdmcSN3a2YjZ2Zid2t0andrI3FmcHNmYHcjd2xwd3pvZj4hc2JnZ2ptZDlqcCNzYnF3amB2b2Jxb3pnanBzb2J6OWptb2ptZjgjd3pzZj4hcHZhbmp3ISNqcCNnanVqZ2ZnI2ptd2xcYlRBXG56ayMrXHZCbFxiUX8qcWZwc2xtcGJham9qZ2JnYmduam1qcHdxYmBqL19tam13ZnFtYmBqbG1ib2ZwYGxxcWZwc2xtZ2pmbXdmXGZIZVxmSEZcZkhDXGZJZ1xmSHtcZkhGXGZJblxmSFxcXGZJYVxmSFlcZkhVXGZIQlxmSFJcZkhcXFxmSWtcZkheXGZJZ1xmSHtcZklnXGZIblxmSHZcZkltXGZIRFxmSFJcZkhZXGZIXlxmSWtcZkh5XGZIU1xmSERcZkhUXGZIXFxcZkh5XGZIUlxmSFxcXGZIRlxmSW1cZkheXGZIU1xmSFRcZkh6XGZJZ1xmSHBcZklrXGZIblxmSHZcZkhSXGZIVVxmSFNcZkhjXGZIQVxmSWtcZkhwXGZJa1xmSG5cZkhaXGZIUlxmSEJcZkhTXGZIXlxmSFVcZkhCXGZIUlxmSFxcXGZJbFxmSHBcZkhSXGZIe1xmSFxcXGZIT1xmSEBcZkhEXGZIUlxmSERcZklrXGZIeVxmSW1cZkhCXGZIUlxmSFxcXGZIQFxmSWFcZkheXGZJZVxmSHtcZkhCXGZIUlxmSF5cZkhTXGZIeVxmSEJcZkhVXGZIU1xmSF5cZkhSXGZIRlxmSW9cZkhbXGZJYVxmSExcZkhAXGZITlxmSFBcZkhIXGZJa1xmSEFcZkhSXGZIcFxmSEZcZkhSXGZIeVxmSWFcZkheXGZIU1xmSHlcZkhzXGZJYVxmSFxcXGZJa1xmSERcZkh6XGZIU1xmSF5cZkhSXGZIR1xmSEpcZklgXGZIXFxcZkhSXGZIRFxmSEJcZkhSXGZIQlxmSF5cZklrXGZIQlxmSEhcZkhKXGZIUlxmSERcZkhAXGZIUlxmSHBcZkhSXGZIXFxcZkhZXGZIU1xmSHlcZkhSXGZIVFxmSHlcZklhXGZIQ1xmSWdcZkhuXGZIdlxmSFJcZkhVXGZISFxmSWtcZkhGXGZIVVxmSW1cZkhtXGZIdlxmSEBcZkhIXGZIUlxmSENcZkhSXGZIVFxmSG5cZkhZXGZIUlxmSEpcZkhKXGZJa1xmSHpcZkhEXGZJa1xmSEZcZkhTXGZId1xmSF5cZklrXGZIWVxmSFNcZkhaXGZJa1xmSFtcZkhcXFxmSFJcZkhwXGZJYVxmSENcZkhlXGZISFxmSWFcZkhIXGZIXFxcZkhCXGZJbVxmSG5cZkhAXGZIZFxmSEpcZklnXGZIRFxmSWdcZkhuXGZIZVxmSEZcZkh5XGZIXFxcZkhPXGZIRlxmSE5cZkhQXGZJa1xmSG5cZkhUXGZJYVxmSElcZkhTXGZISFxmSEdcZkhTXGZIXlxmSWFcZkhCXGZIQlxmSW1cZkh6XGZJYVxmSENcZkhpXGZIdlxmSWFcZkh3XGZIUlxmSHdcZkluXGZIc1xmSEhcZklsXGZIVFxmSG5cZkh7XGZJbFxmSEhcZkhwXGZIUlxmSGNcZkh7XGZIUlxmSFlcZkhTXGZIQVxmSFJcZkh7XGZIdFxmSE9cZklhXGZIc1xmSWtcZkhKXGZJblxmSFRcZkhcXFxmSWtcZkhKXGZIU1xmSERcZklnXGZIblxmSFVcZkhIXGZJYVxmSENcZkhSXGZIVFxmSWtcZkh5XGZJYVxmSFRcZkh7XGZIUlxmSG5cZkhLXGZJbFxmSFlcZkhTXGZIWlxmSWFcZkhZXGZIXFxcZkhSXGZISFxmSWtcZkhuXGZISlxmSWRcZkhzXGZJYVxmSFRcZkhEXGZIeVxmSWFcZkhaXGZIUlxmSFRcZkhSXGZIQlxmSERcZklrXGZIaVxmSEpcZkhSXGZIXlxmSEhcZkhAXGZIU1xmSHBcZkheXGZJbFxmSEZcZkltXGZIXFxcZkluXGZIW1xmSFVcZkhTXGZIblxmSEpcZklsXGZIQlxmSFNcZkhIXGZJYVxmSFxcXGZIeVxmSFlcZkhTXGZISFxmSFJcZkhcXFxmSW1cZkhGXGZIQ1xmSWtcZkhUXGZJYVxmSElcZkhSXGZIRFxmSHlcZkhcXFxmSWdcZkhNXGZIUFxmSEJcZkltXGZIeVxmSWFcZkhIXGZIQ1xmSWdcZkhwXGZIRFxmSFJcZkh5XGZJb1xmSEZcZkhDXGZIUlxmSEZcZklnXGZIVFxmSWFcZkhzXGZIdFxmSFxcXGZJa1xmSF5cZkluXGZIeVxmSFJcZkhcXFxmSWFcZkhDXGZIWVxmSFNcZkh2XGZIUlxmSFxcXGZIVFxmSW5cZkh2XGZIRFxmSFJcZkhCXGZJblxmSF5cZklhXGZIQ1xmSEpcZklrXGZIelxmSWtcZkhuXGZIVVxmSEJcZklrXGZIWlxmSFJcZkhUXGZJYVxmSHlcZkluXGZIXlxmSEJcZklkXGZIblxmSERcZklrXGZISFxmSWRcZkhDXGZIUlxmSFxcXGZIcFxmSFNcZkhUXGZIeVxmSWtxcHAoe25vISN3andvZj4hLnd6c2YhI2BsbXdmbXc+IXdqd29mISNgbG13Zm13PiFidyN3a2YjcGJuZiN3am5mLWlwIT0/LHBgcWpzdz1cdD8hI25md2tsZz4hc2xwdyEjPyxwc2JtPT8sYj0/LG9qPXVmcXdqYGJvLmJvamRtOXcsaXJ2ZnF6LW5qbS1pcCE9LWBvamBoK2V2bWB3amxtKyNwd3pvZj4hc2JnZ2ptZC5+KisqOFx0PyxwYHFqc3c9XHQ/LHBzYm09P2Ija3FmZT4hP2Ija3FmZT4ha3d3czksLCo4I3Fmd3ZxbSNlYm9wZjh3Znt3LmdmYGxxYndqbG05I3BgcWxvb2ptZD4hbWwhI2FscWdmcS5gbG9vYnNwZjlicHBsYGpid2ZnI3Rqd2sjQWJrYnBiI0ptZ2xtZnBqYkZtZG9qcGsjb2JtZHZiZGY/d2Z7dyN7bm85cHNiYGY+LWRqZSEjYWxxZ2ZxPiEzIT8sYWxnej1cdD8sa3dubz1cdGx1ZnFlb2x0OWtqZ2dmbThqbmQjcHFgPiFrd3dzOSwsYmdnRnVmbXdPanB3Zm1mcXFmcHNsbXBqYW9mI2VscSNwLWlwIT0/LHBgcWpzdz1cdCxlYnVqYGxtLWpgbCEjLD1sc2ZxYndqbWQjcHpwd2ZuISNwd3pvZj4hdGpnd2s5MndicWRmdz4hXFxhb2JtaCE9UHdid2YjVm1qdWZxcGp3endme3cuYm9qZG05b2ZldzhcdGdsYHZuZm13LXRxandmKy8jam1gb3Znam1kI3drZiNicWx2bWcjd2tmI3RscW9nKjgOXHQ/LHBgcWpzdz0OXHQ/ISNwd3pvZj4ha2ZqZGt3OThsdWZxZW9sdDlramdnZm1ubHFmI2ptZWxxbmJ3amxtYm0jam13ZnFtYndqbG1ib2IjbmZuYWZxI2xlI3drZiNsbWYjbGUjd2tmI2VqcXB3YGJtI2FmI2Vsdm1nI2ptIz8sZ2p1PVx0XG5cbj8sZ2p1PVx0Z2pwc29iejkjbWxtZjghPSEjLD1cdD9vam1oI3Fmbz4hXHQjIytldm1gd2psbSsqI3h3a2YjMjZ3ayNgZm13dnF6LXNxZnVmbXdHZmVidm93K29icWRmI212bmFmcSNsZSNBenlibXdqbWYjRm5zanFmLWlzZH93a3ZuYX9vZmV3f3VicHcjbmJpbHFqd3ojbGVuYmlscWp3eiNsZSN3a2YjI2JvamRtPiFgZm13ZnEhPVZtanVmcXBqd3ojU3FmcHBnbG5qbWJ3ZmcjYXojd2tmUGZgbG1nI1RscW9nI1RicWdqcHdxamF2d2psbSNsZSNwd3pvZj4hc2xwandqbG05d2tmI3FmcHcjbGUjd2tmI2BrYnFiYHdmcWp5ZmcjYXojcWZvPiFtbGVsb29sdCE9Z2ZxanVmcCNlcWxuI3drZnFid2tmcSN3a2JtI3drZiNiI2BsbmFqbWJ3amxtI2xlcHd6b2Y+IXRqZ3drOTIzM0ZtZG9qcGsucHNmYmhqbWRgbG5zdndmcSNwYGpmbWBmYWxxZ2ZxPiEzISNib3c+IXdrZiNme2pwd2ZtYGYjbGVHZm5sYHFid2pgI1NicXd6ISNwd3pvZj4hbmJxZGptLkVscSN3a2pwI3FmYnBsbS8taXAhPT8scGBxanN3PVx0XG5wQXpXYmRNYm5mK3AqWDNeaXAhPT8scGBxanN3PQ5cdD8taXAhPT8scGBxanN3PQ5cdG9qbWgjcWZvPiFqYGxtISMkI2Jvdz4kJCNgb2JwcD4kZWxxbmJ3amxtI2xlI3drZnVmcXBqbG1wI2xlI3drZiM/LGI9PyxnanU9PyxnanU9LHNiZGY9XHQjIz9zYmRmPVx0P2dqdSNgb2JwcD4hYGxtd2FmYGJuZiN3a2YjZWpxcHdhYmticGIjSm1nbG1mcGpiZm1kb2pwayMrcGpuc29mKiJ5IlciVyJbIlEiVSJWIkA9aT1sPF48XFw9bj1tPFY8VDxWPFI8UDxTPFxcPFE8VDxUPWM8XjxXPWM8WT1uPW09Yzx4PFI8XTxcXDxePFQ9bj1gPWs8WTxXPFI8XjxZPFY8XFw9bDxcXDxbPF48VD1uPFQ9Yzx0PFE9bjxZPWw8UTxZPW48cj1uPF48WT1uPFQ9bj1gPFE8XFw8Uz1sPFQ8UDxZPWw8VDxRPW48WT1sPFE8WT1uPFY8Uj1uPFI9bDxSPF88Uj1tPW49bDxcXDxRPFQ9aj1nPFY8XFw9azxZPW09bjxePFk9bz1tPFc8UjxePFQ9Yz1pPFM9bDxSPF08VzxZPFA9ZzxTPFI8Vz1vPWs8VD1uPWA9YzxePFc9Yz1iPW49bT1jPFE8XFw8VDxdPFI8VzxZPFk8VjxSPFA8UzxcXDxRPFQ9YzxePFE8VDxQPFxcPFE8VDxZPW09bDxZPFg9bT1uPF48XFw0SzVoNWk1ZDRLNFo1ZjRVNEs1aDRdNEo1ZjRfNWY0RTRLNWg0SzVqNEY1bjRLNWg1aTRYNEs0XTVvNEs0RjVvNEs1aDRfNWY0SzRdNEs0RjRLNWg1aTVvNEY1ZDRENEU0SzVoNF80VTVkNEM1ZjRFNEs0QTRZNEs0SjVmNEs0RjRLNWg0VTRLNWg1aTVmNEU0SzVoNFk1ZDRGNWY0SzRGNEs1aDRLNWo0RjRdNWo0RjRLNWg0RjRZNEs1aTVmNWk0SzVoNEk0XzVoNEs1aTVmNEs1aDVpNFg0SzRdNW80RTRLNWg1aTRdNEo1ZjRLNEZxbGFsd3AhI2BsbXdmbXc+IT9nanUjamc+IWVsbHdmcSE9d2tmI1ZtandmZyNQd2J3ZnA/am5kI3BxYD4ha3d3czksLC1pc2R/cWpka3d/d2t2bmF/LWlwIT0/LHBgcWpzdz0OXHQ/b2xgYndqbG0tc3Fsd2xgbG9lcWJuZmFscWdmcT4hMyEjcCEjLD1cdD9uZndiI21ibmY+IT8sYj0/LGdqdT0/LGdqdT0/ZWxtdy50Zmpka3c5YWxvZzglcnZsdzgjYm1nIyVydmx3OGdmc2ZtZ2ptZCNsbSN3a2YjbmJxZGptOTM4c2JnZ2ptZDkhI3Fmbz4hbWxlbG9vbHQhI1NxZnBqZ2ZtdyNsZSN3a2Yjd3RmbXdqZndrI2BmbXd2cXpmdWpwamxtPVx0IyM/LHNiZGZKbXdmcW1mdyNGe3NvbHFmcWItYnB6bWAjPiN3cXZmOA5cdGptZWxxbmJ3amxtI2JhbHZ3P2dqdSNqZz4ha2ZiZ2ZxIT0hI2Jgd2psbT4ha3d3czksLD9iI2txZmU+IWt3d3NwOSwsP2dqdSNqZz4hYGxtd2ZtdyE/LGdqdT0OXHQ/LGdqdT0OXHQ/Z2ZxanVmZyNlcWxuI3drZiM/am5kI3BxYD4ka3d3czksLGJgYGxxZ2ptZCN3bCN3a2YjXHQ/LGFsZ3o9XHQ/LGt3bm89XHRwd3pvZj4hZWxtdy5wanlmOXBgcWpzdyNvYm1kdmJkZj4hQnFqYm8vI0tmb3Vmd2pgYi8/LGI9P3BzYm0jYG9icHA+IT8scGBxanN3PT9wYHFqc3cjc2xvandqYGJvI3NicXdqZnB3Zz0/LHdxPT8sd2Jhb2Y9P2txZmU+IWt3d3M5LCx0dHQtam13ZnFzcWZ3YndqbG0jbGVxZm8+IXB3em9mcGtmZnchI2dsYHZuZm13LXRxandmKyQ/YGticXBmdz4hdndlLjshPVx0YWZkam1tam1kI2xlI3drZiNxZnVmYm9mZyN3a2J3I3drZndmb2Z1anBqbG0jcGZxamZwISNxZm8+IW1sZWxvb2x0IT0jd2JxZGZ3PiFcXGFvYm1oIT1gb2JqbmptZCN3a2J3I3drZmt3d3MmMEImMUUmMUV0dHQtbmJtamVmcHdid2psbXAjbGVTcWpuZiNOam1qcHdmcSNsZWptZW92Zm1gZmcjYXojd2tmYG9icHA+IWBvZmJxZWp7IT0sZ2p1PQ5cdD8sZ2p1PQ5cdA5cdHdrcWZmLmdqbmZtcGpsbWJvQGt2cWBrI2xlI0ZtZG9ibWdsZSNNbHF3ayNAYnFsb2ptYnBydmJxZiNoam9sbmZ3cWZwLWJnZ0Z1Zm13T2pwd2ZtZnFnanB3am1gdyNlcWxuI3drZmBsbm5sbW96I2htbHRtI2JwU2tsbWZ3amAjQm9za2JhZndnZmBvYnFmZyN3a2J3I3drZmBsbXdxbG9vZmcjYXojd2tmQWZtaWJuam0jRXFibWhvam1xbG9mLnNvYnpqbWQjZGJuZndrZiNWbWp1ZnFwand6I2xlam0jVGZwd2ZxbSNGdnFsc2ZzZnFwbG1ibyNgbG5zdndmcVNxbGlmYHcjRHZ3Zm1hZnFkcWZkYnFnb2ZwcCNsZSN3a2ZrYnAjYWZmbSNzcWxzbHBmZ3dsZGZ3a2ZxI3Rqd2sjd2tmPT8sb2o9P29qI2BvYnBwPiFqbSNwbG5mI2Bsdm13cWpmcG5qbS1pcCE9PyxwYHFqc3c9bGUjd2tmI3Nsc3ZvYndqbG1sZWVqYGpibyNvYm1kdmJkZj9qbmQjcHFgPiFqbmJkZnAsamdmbXdqZWpmZyNheiN3a2ZtYnd2cWJvI3FmcGx2cWBmcGBvYnBwamVqYGJ3amxtI2xlYGJtI2FmI2BsbXBqZ2ZxZmdydmJtd3ZuI25mYGtibWpgcE1mdWZxd2tmb2ZwcC8jd2tmbmpvb2psbSN6ZmJxcCNiZGw/LGFsZ3o9Dlx0Pyxrd25vPQ4ieSJXIlciWyJRIlUiViJAXHR3YmhmI2JndWJtd2JkZiNsZWJtZy8jYmBgbHFnam1kI3dsYnd3cWphdndmZyN3bCN3a2ZOamBxbHBsZXcjVGptZ2x0cHdrZiNlanFwdyNgZm13dnF6dm1nZnEjd2tmI2BsbXdxbG9nanUjYG9icHA+IWtmYmdmcXBrbHF3b3ojYmV3ZnEjd2tmbWx3YmFvZiNme2Bmc3dqbG13Zm1wI2xlI3drbHZwYm1ncHBmdWZxYm8jZ2plZWZxZm13YnFsdm1nI3drZiN0bHFvZy1xZmJga2ptZCNuam9qd2JxempwbG9id2ZnI2VxbG4jd2tmbHNzbHBqd2psbSN3bCN3a2Z3a2YjTG9nI1dmcHdibmZtd0JlcWpgYm0jQm5mcWpgYm1wam1wZnF3Zmcjam13bCN3a2ZwZnNicWJ3ZiNlcWxuI3drZm5md3Fsc2xvandibSNicWZibmJoZnAjancjc2xwcGphb2ZiYGhtbHRvZmdkZmcjd2tid2JxZHZiYW96I3drZiNubHB3d3pzZj4hd2Z7dyxgcHAhPVx0d2tmI0ptd2ZxbWJ3amxtYm9CYGBscWdqbWQjd2wjd2tmI3NmPiF3Znt3LGBwcCEjLD1cdGBsam1gamdmI3Rqd2sjd2tmd3RsLndranFncCNsZSN3a2ZHdnFqbWQjd2tqcCN3am5mL2d2cWptZCN3a2Yjc2ZxamxnYm1tbHZtYGZnI3drYncja2Z3a2Yjam13ZnFtYndqbG1ib2JtZyNubHFmI3FmYGZtd296YWZvamZ1Zmcjd2tidyN3a2ZgbG1wYGpsdnBtZnBwI2JtZ2VscW5mcW96I2htbHRtI2JwcHZxcWx2bWdmZyNheiN3a2ZlanFwdyNic3NmYnFmZyNqbWxgYGJwamxtYm9veiN2cGZnc2xwandqbG05YmFwbG92d2Y4ISN3YnFkZnc+IVxcYW9ibWghI3NscGp3amxtOXFmb2J3anVmOHdme3cuYm9qZG05YGZtd2ZxOGlieyxvamFwLGlydmZxeiwyLWFiYGhkcWx2bWcuYGxvbHE5IHd6c2Y+IWJzc29qYGJ3amxtLGJtZHZiZGYhI2BsbXdmbXc+IT9uZndiI2t3d3MuZnJ2anU+IVNxanViYHojU2xvamB6PyxiPWYrISYwQHBgcWpzdyNwcWA+JCEjd2JxZGZ3PiFcXGFvYm1oIT1MbSN3a2YjbHdrZnEja2JtZy8taXNkf3drdm5hf3FqZGt3fzE/LGdqdT0/Z2p1I2BvYnBwPiE/Z2p1I3B3em9mPiFlb2xidzltam1md2ZmbXdrI2BmbXd2cXo/LGFsZ3o9Dlx0Pyxrd25vPQ5cdD9qbmQjcHFgPiFrd3dzOSwscDh3Znt3LmJvamRtOWBmbXdmcWVsbXcudGZqZGt3OSNhbG9nOCNCYGBscWdqbWQjd2wjd2tmI2dqZWVmcWZtYGYjYWZ3dGZmbSEjZXFibmZhbHFnZnE+ITMhIyEjcHd6b2Y+IXNscGp3amxtOW9qbWgja3FmZT4ha3d3czksLGt3bm83LG9sbHBmLWd3ZyE9XHRndnFqbWQjd2tqcCNzZnFqbGc/LHdnPT8sd3E9Pyx3YmFvZj1gb2xwZm96I3Fmb2J3Zmcjd2xlbHEjd2tmI2VqcXB3I3dqbmY4ZWxtdy50Zmpka3c5YWxvZzhqbXN2dyN3enNmPiF3Znt3ISM/cHNibSNwd3pvZj4hZWxtdy5sbXFmYmd6cHdid2Zga2JtZGZcbj9nanUjYG9icHA+IWBvZmJxZ2xgdm5mbXctb2xgYndqbG0tI0VscSNme2Juc29mLyN3a2YjYiN0amdmI3VicWpmd3ojbGUjPyJHTEBXWlNGI2t3bm89Dlx0PyVtYXBzOCVtYXBzOCVtYXBzOCE9P2Ija3FmZT4ha3d3czksLHB3em9mPiFlb2xidzlvZmV3OGBsbWBmcW1mZyN0andrI3drZj5rd3dzJjBCJjFFJjFFdHR0LWptI3Nsc3ZvYnEjYHZvd3ZxZnd6c2Y+IXdme3csYHBwISMsPWp3I2pwI3NscHBqYW9mI3dsI0ticXVicWcjVm1qdWZxcGp3end6b2Zwa2ZmdyEja3FmZT4hLHdrZiNuYmptI2BrYnFiYHdmcUx7ZWxxZyNWbWp1ZnFwand6IyNtYm5mPiFoZnp0bHFncCEjYHB3em9mPiF3Znt3LmJvamRtOXdrZiNWbWp3ZmcjSGptZGdsbmVmZ2ZxYm8jZGx1ZnFtbmZtdz9nanUjcHd6b2Y+IW5icWRqbSNnZnNmbWdqbWQjbG0jd2tmI2dmcGBxanN3amxtI2xlI3drZj9nanUjYG9icHA+IWtmYmdmcS1uam0taXAhPT8scGBxanN3PWdmcHdxdmB3amxtI2xlI3drZnBvamRrd296I2dqZWVmcWZtd2ptI2JgYGxxZ2JtYGYjdGp3a3dmb2ZgbG5udm1qYGJ3amxtcGptZ2pgYndmcCN3a2J3I3drZnBrbHF3b3ojd2tmcWZiZXdmcWZwc2ZgamJvb3ojam0jd2tmI0Z2cWxzZmJtI2Bsdm13cWpmcEtsdGZ1ZnEvI3drZnFmI2JxZnBxYD4ha3d3czksLHB3YndqYHB2ZGRmcHdmZyN3a2J3I3drZiEjcHFgPiFrd3dzOSwsdHR0LWIjb2JxZGYjbXZuYWZxI2xlI1dmb2ZgbG5udm1qYGJ3amxtcCEjcWZvPiFtbGVsb29sdCEjd0tsb3ojUWxuYm0jRm5zZnFscWJvbmxwdyNme2BvdnBqdWZveiEjYWxxZ2ZxPiEzISNib3c+IVBmYHFmd2JxeiNsZSNQd2J3ZmB2b25qbWJ3am1kI2ptI3drZkBKQiNUbHFvZyNFYmB3YWxsaHdrZiNubHB3I2puc2xxd2Jtd2JtbWp1ZnFwYnF6I2xlI3drZnB3em9mPiFhYmBoZHFsdm1nLj9vaj0/Zm49P2Ija3FmZT4hLHdrZiNCd29ibXdqYCNMYGZibXB3cWpgd296I3BzZmJoam1kL3BrbHF3b3ojYWZlbHFmI3drZmdqZWVmcWZtdyN3enNmcCNsZXdrZiNMd3dsbmJtI0Zuc2pxZj0/am5kI3BxYD4ha3d3czksLEJtI0ptd3FsZ3Zgd2psbSN3bGBsbXBmcnZmbWBmI2xlI3drZmdmc2Jxd3ZxZiNlcWxuI3drZkBsbWVmZ2ZxYndmI1B3YndmcGptZ2pkZm1sdnAjc2Zsc29mcFNxbGBmZmdqbWRwI2xlI3drZmptZWxxbmJ3amxtI2xtI3drZndrZmxxamZwI2tidWYjYWZmbWptdWxvdWZuZm13I2ptI3drZmdqdWpnZmcjam13bCN3a3FmZmJnaWJgZm13I2Bsdm13cWpmcGpwI3FmcHNsbXBqYW9mI2VscWdqcHBsb3Z3amxtI2xlI3drZmBsb29iYWxxYndqbG0jdGp3a3RqZ2ZveiNxZmRicWdmZyNicGtqcCNgbG13Zm5zbHFicWpmcGVsdm1nam1kI25mbmFmcSNsZUdsbmptamBibSNRZnN2YW9qYGRmbWZxYm9veiNiYGBmc3dmZ3drZiNzbHBwamFqb2p3eiNsZWJxZiNib3BsI2J1YmpvYmFvZnZtZ2ZxI2BsbXB3cXZgd2psbXFmcHdscWJ3amxtI2xlI3drZndrZiNkZm1mcWJvI3N2YW9qYGpwI2JvbmxwdyNmbXdqcWZvenNicHBmcCN3a3FsdmRrI3drZmticCNhZmZtI3B2ZGRmcHdmZ2BsbnN2d2ZxI2JtZyN1amdmbERmcW5ibWpgI29ibWR2YmRmcCNiYGBscWdqbWQjd2wjd2tmI2dqZWVmcWZtdyNlcWxuI3drZnBrbHF3b3ojYmV3ZnF0YnFncGtxZmU+IWt3d3NwOSwsdHR0LXFmYGZtdyNnZnVmb2xzbmZtd0FsYnFnI2xlI0dqcWZgd2xxcD9nanUjYG9icHA+IXBmYnFga38jP2Ija3FmZT4ha3d3czksLEptI3NicXdqYHZvYnEvI3drZk52b3dqc29mI2VsbHdtbHdmcGxxI2x3a2ZxI3B2YXB3Ym1gZndrbHZwYm1ncCNsZSN6ZmJxcHdxYm1wb2J3amxtI2xlI3drZj8sZ2p1PQ5cdD8sZ2p1PQ5cdA5cdD9iI2txZmU+IWptZ2Z7LXNrc3RicCNmcHdiYW9qcGtmZyNqbW5qbS1pcCE9PyxwYHFqc3c9XHRzYnF3amBqc2J3ZiNqbSN3a2ZiI3B3cWxtZCNqbWVvdmZtYGZwd3pvZj4hbmJxZGptLndsczlxZnNxZnBmbXdmZyNheiN3a2ZkcWJndmJ3ZmcjZXFsbiN3a2ZXcWJnandqbG1ib296LyN3a2ZGb2ZuZm13KyFwYHFqc3chKjhLbHRmdWZxLyNwam1gZiN3a2YsZ2p1PVx0PyxnanU9XHQ/Z2p1I29mZXc4I25icWRqbS5vZmV3OXNxbHdmYHdqbG0jYmRiam1wdzM4I3VmcXdqYGJvLmJvamRtOVZtZWxxd3ZtYndmb3ovI3drZnd6c2Y+IWpuYmRmLHsuamBsbSxnanU9XHQ/Z2p1I2BvYnBwPiEjYG9icHA+IWBvZmJxZWp7IT0/Z2p1I2BvYnBwPiFlbGx3ZnFcblxuPyxnanU9XHRcblxuPyxnanU9XHR3a2Yjbmx3amxtI3NqYHd2cWY8fT1mPFc8XzxcXD1sPW08VjxUPF09ZjxXPF88XFw9bD1tPFY8VDxIPFk8WDxZPWw8XFw9ajxUPFQ8UTxZPW08VjxSPFc9YDxWPFI9bTxSPFI8XT1lPFk8UTxUPFk9bTxSPFI8XT1lPFk8UTxUPWM8Uz1sPFI8Xz1sPFxcPFA8UD1nPHI9bjxTPWw8XFw8XjxUPW49YDxdPFk9bTxTPFc8XFw9bjxRPFI8UDxcXD1uPFk9bDxUPFxcPFc9ZzxTPFI8WzxePFI8Vz1jPFk9bjxTPFI9bTxXPFk8WDxRPFQ8WT1sPFxcPFs8VzxUPWs8UT1nPWk8Uz1sPFI8WD1vPFY9ajxUPFQ8Uz1sPFI8Xz1sPFxcPFA8UDxcXDxTPFI8VzxRPFI9bT1uPWA9YjxRPFxcPWk8UjxYPFQ9bj1tPWM8VDxbPF09bDxcXDxRPFE8UjxZPFE8XFw9bTxZPFc8WTxRPFQ9YzxUPFs8UDxZPFE8WTxRPFQ9YzxWPFxcPW48WTxfPFI9bDxUPFQ8fDxXPFk8Vj1tPFxcPFE8WD1sXGZISlxmSWFcZkhZXGZIUlxmSFxcXGZIUlxmSEJcZklkXGZIRFxmSW1cZkhpXGZIXlxmSEZcZklhXGZIXFxcZkhKXGZIUlxmSERcZkhBXGZIUlxmSFxcXGZISFxmSWxcZkhDXGZIaVxmSERcZkltXGZISlxmSWtcZkhaXGZIVVxmSFNcZkhEXGZJYVxmSEpcZklsXGZIa1xmSG5cZkhNXGZIU1xmSENcZkhSXGZISlxmSFNcZkheXGZJYVxmSF5cZklsXGZIaVxmSEtcZkhTXGZIeVxmSFJcZkhcXFxmSFlcZklsXGZITVxmSFNcZkhDXGZJZ1xmSHZcZkhTXGZIc1xmSWFcZkhMXGZJa1xmSFRcZkhCXGZIUlxmSHZcZkhSXGZIXFxcZkhwXGZIblxmSHlcZklhXGZIWlxmSERcZkhKXGZJbVxmSERcZkhTXGZIQ1xmSFJcZkhGXGZJYVxmSFxcXGZIQ1xmSWdcZkh7XGZIaVxmSERcZkltXGZIVFxmSFJcZkhcXFxmSH1cZkhEXGZIXlxmSFJcZkhrXGZIRFxmSEZcZkhSXGZIXFxcZklhXGZIc1xmSWxcZkhaXGZIXFxcZklhXGZISFxmSWdcZkhuXGZIXlxmSWdcZkh5XGZIVFxmSEFcZkhSXGZIR1xmSFBcZklhXGZIXlxmSWRcZkhaXGZIWlxmSFxcXGZJYVxmSEhcZklrXGZIblxmSEZcZklhXGZIXFxcZkhKXGZJa1xmSFpcZkhGXGZJYVxmSF5cZklrXGZIQ1xmSFxcXGZIeVxmSWtcZkhuXGZISlxmSWFcZkhcXFxmSFRcZklhXGZISVxmSFNcZkhIXGZIU1xmSGVcZkhIXGZJYVxmSEZcZkhSXGZISlxmSGVcZkhEXGZJYVxmSFVcZklrXGZIblxmSHZcZkhTXGZIc1xmSWFcZkhMXGZIUlxmSENcZkhSXGZISFxmSWFcZkhcXFxmSFJcZkhwXGZJYVxmSENcZkhSXGZISlxmSFJcZkhGXGZJbVxmSFxcXGZIUlxmSERcZklrXGZIcFxmSWdcZkhNXGZIUFxmSWtcZkhuXGZIaVxmSERcZkltXGZIWVxmSFJcZkhKXGZIWlxmSWFcZkhcXFxmSWtcZkhPXGZJbFxmSFpcZkhTXGZIeVxmSWFcZkhbXGZIUlxmSFRcZkhcXFxmSHlcZkhSXGZIXFxcZklsXGZIVFxmSG5cZkh7XGZJYVxmSFxcXGZIVVxmSEZcZkhcXFxmSFNcZkhPXGZIUlxmSEJcZkhAXGZJYVxmSFxcXGZIUlxmSG5cZkhNXGZIQFxmSHZcZklhXGZIdlxmSWdcZkhuXGZIZVxmSEZcZkheXGZIQFxmSWFcZkhLXGZIQlxmSG5cZkhIXGZJYVxmSFxcXGZJbFxmSFRcZkhuXGZIRlxmSFxcXGZJYVxmSHlcZkhlXGZIQlxmSWFcZkhCXGZJbFxmSEpcZkhCXGZIUlxmSEtcZklhXGZIQ1xmSEJcZkhUXGZIVVxmSFJcZkhDXGZISFxmSFJcZkhaXGZIQFxmSWFcZkhKXGZJZ1xmSG5cZkhCXGZJbFxmSE1cZkhTXGZIQ1xmSFJcZkhqXGZIZFxmSEZcZklsXGZIY1xmSF5cZkhCXGZJZ1xmSEBcZkhSXGZIa1xmSF5cZkhUXGZIblxmSHpcZklhXGZIQ1xmSFJcZkhqXGZIRlxmSFxcXGZJa1xmSFpcZkhEXGZIaVxmSERcZkltXGZIQFxmSG5cZkhLXGZIQFxmSFJcZkhwXGZIUFxmSFJcZkhcXFxmSERcZkhZXGZJbFxmSERcZkhIXGZIQlxmSEZcZklhXGZIXFxcZkhCXGZJbVxmSHpcZkhGXGZJYVxmSFxcXGZIWlxmSWFcZkhEXGZIRlxmSFxcXGZIU1xmSFlcZkhSXGZIXFxcZkhEXGZJbVxmSHlcZkhUXGZIUlxmSERcZkhUXGZIQlxmSFxcXGZJYVxmSElcZkhEXGZIalxmSENcZklnXGZIcFxmSFNcZkhIXGZIVFxmSWdcZkhCXGZIWVxmSFJcZkhcXDRLNWg1aTRYNEs0XTVvNEs0RjRLNWg1aTVqNEY0QzVmNEs0RjRLNWg1bzVpNEQ1ZjVkNEY0XTRLNWg1aTRYNEs1azRDNEs0RjRVNEM0QzRLNWg0XjVkNEs0XTRVNEM0QzRLNWg0XTRDNWQ0QzRLNWg0STRfNWg0SzVpNWY0RTRLNWg1bTVkNEY1ZDRYNWQ0RDRLNWg1aTRfNEs0RDVuNEs0RjRLNWg1aTRVNWg1ZDVpNEs0RjRLNWg1aTRfNWg0XzVoNEs0RjRLNWg0QDRdNEs1bTVmNW80XzRLNWg0SzRfNWg0SzVpNWY0RTRLNWg0SzRGNFk0SzVoNEs0RmhmenRscWdwISNgbG13Zm13PiF0MC1scWQsMjo6Oix7a3dubyE9P2Ijd2JxZGZ3PiFcXGFvYm1oISN3Znt3LGt3bm84I2BrYnFwZnc+ISN3YnFkZnc+IVxcYW9ibWghPT93YmFvZiNgZm9vc2JnZ2ptZD4hYnZ3bGBsbnNvZndmPiFsZWUhI3dme3cuYm9qZG05I2BmbXdmcTh3bCNvYnB3I3VmcXBqbG0jYXojYWJgaGRxbHZtZy5gbG9scTkjICEja3FmZT4ha3d3czksLHR0dC0sZ2p1PT8sZ2p1PT9nanUjamc+P2Ija3FmZT4hICEjYG9icHA+ISE9P2puZCNwcWA+IWt3d3M5LCxgcWpzdyEjcHFgPiFrd3dzOSwsXHQ/cGBxanN3I29ibWR2YmRmPiEsLEZNISMha3d3czksLHR0dC10Zm1gbGdmVlFKQGxuc2xtZm13KyEja3FmZT4haWJ1YnBgcWpzdzk/Z2p1I2BvYnBwPiFgbG13Zm13Z2xgdm5mbXctdHFqd2YrJD9wYHNscGp3amxtOSNiYXBsb3Z3ZjhwYHFqc3cjcHFgPiFrd3dzOSwsI3B3em9mPiFuYnFkam0ud2xzOS1uam0taXAhPT8scGBxanN3PVx0PyxnanU9XHQ/Z2p1I2BvYnBwPiF0MC1scWQsMjo6Oix7a3dubyEjXHQOXHQ/LGFsZ3o9Dlx0Pyxrd25vPWdqcHdqbWB3amxtI2Fmd3RmZm0sISN3YnFkZnc+IVxcYW9ibWghPT9vam1oI2txZmU+IWt3d3M5LCxmbWBsZ2ptZD4hdndlLjshPD1cdHQtYmdnRnVmbXdPanB3Zm1mcTxiYHdqbG0+IWt3d3M5LCx0dHQtamBsbSEja3FmZT4ha3d3czksLCNwd3pvZj4hYWJgaGRxbHZtZzl3enNmPiF3Znt3LGBwcCEjLD1cdG5md2Ijc3Fsc2Zxd3o+IWxkOXc/am1zdncjd3pzZj4hd2Z7dyEjI3B3em9mPiF3Znt3LmJvamRtOXdrZiNnZnVmb2xzbmZtdyNsZSN3em9mcGtmZnchI3d6c2Y+IXdma3dubzgjYGticXBmdz52d2UuO2pwI2BsbXBqZ2ZxZmcjd2wjYWZ3YmFvZiN0amd3az4hMjMzJiEjSm0jYmdnandqbG0jd2wjd2tmI2BsbXdxamF2d2ZnI3dsI3drZiNnamVlZnFmbWBmcCNhZnd0ZmZtZ2Z1Zm9sc25mbXcjbGUjd2tmI0p3I2pwI2puc2xxd2JtdyN3bCM/LHBgcWpzdz1cdFx0P3BgcWpzdyMjcHd6b2Y+IWVsbXcucGp5ZjkyPT8scHNibT0/cHNibSNqZz5kYU9qYXFicXojbGUjQGxtZHFmcHA/am5kI3BxYD4ha3d3czksLGpuRm1kb2pwayN3cWJtcG9id2psbUJgYmdmbnojbGUjUGBqZm1gZnBnanUjcHd6b2Y+IWdqcHNvYno5YGxtcHdxdmB3amxtI2xlI3drZi1kZndGb2ZuZm13QXpKZytqZypqbSNgbG1pdm1gd2psbSN0andrRm9mbmZtdyskcGBxanN3JCo4Iz9uZndiI3NxbHNmcXd6PiFsZDk8fT1mPFc8XzxcXD1sPW08VjxUXHQjd3pzZj4hd2Z7dyEjbWJuZj4hPVNxanViYHojU2xvamB6PyxiPWJnbmptanB3ZnFmZyNheiN3a2ZmbWJhb2ZQam1kb2ZRZnJ2ZnB3cHd6b2Y+JXJ2bHc4bmJxZGptOT8sZ2p1PT8sZ2p1PT8sZ2p1PT89P2puZCNwcWA+IWt3d3M5LCxqI3B3em9mPiVydmx3OGVvbGJ3OXFmZWZxcWZnI3dsI2JwI3drZiN3bHdibyNzbHN2b2J3amxtI2xlam0jVGJwa2ptZHdsbS8jRy1ALSNwd3pvZj4hYWJgaGRxbHZtZy5ibmxtZCNsd2tmcSN3a2ptZHAvbHFkYm1qeWJ3amxtI2xlI3drZnNicXdqYGpzYndmZyNqbSN3a2Z3a2Yjam13cWxndmB3amxtI2xlamdmbXdqZWpmZyN0andrI3drZmVqYHdqbG1ibyNga2JxYmB3ZnEjTHtlbHFnI1ZtanVmcXBqd3ojbmpwdm1nZnFwd2JtZ2ptZCNsZVdrZnFmI2JxZi8ja2x0ZnVmcS9wd3pvZnBrZmZ3ISNrcWZlPiEsQGxvdm5hamIjVm1qdWZxcGp3emZ7c2JtZ2ZnI3dsI2ptYG92Z2Z2cHZib296I3FmZWZxcWZnI3dsam1namBid2ptZCN3a2J3I3drZmtidWYjcHZkZGZwd2ZnI3drYndiZWVqb2pid2ZnI3Rqd2sjd2tmYGxxcWZvYndqbG0jYWZ3dGZmbW12bmFmcSNsZSNnamVlZnFmbXc9Pyx3Zz0/LHdxPT8sd2Jhb2Y9UWZzdmFvamAjbGUjSnFmb2JtZ1x0PyxwYHFqc3c9XHQ/cGBxanN3I3ZtZ2ZxI3drZiNqbWVvdmZtYGZgbG13cWphdndqbG0jd2wjd2tmTGVlamBqYm8jdGZhcGp3ZiNsZWtmYmdydmJxd2ZxcCNsZSN3a2ZgZm13ZnFmZyNicWx2bWcjd2tmam5zb2pgYndqbG1wI2xlI3drZmtidWYjYWZmbSNnZnVmb2xzZmdFZmdmcWJvI1Fmc3Zhb2pgI2xlYWZgYm5mI2ptYHFmYnBqbWRvemBsbXdqbXZid2psbSNsZSN3a2ZNbHdmLyNrbHRmdWZxLyN3a2J3cGpuam9icSN3bCN3a2J3I2xlI2Bic2Jham9qd2pmcCNsZSN3a2ZiYGBscWdibWBmI3Rqd2sjd2tmc2Jxd2pganNibXdwI2ptI3drZmV2cXdrZnEjZ2Z1Zm9sc25mbXd2bWdmcSN3a2YjZ2pxZmB3amxtanAjbGV3Zm0jYGxtcGpnZnFmZ2tqcCN6bHZtZGZxI2FxbHdrZnE/LHdnPT8sd3E9Pyx3YmFvZj0/YiNrd3dzLmZydmp1PiFbLlZCLnNrenBqYGJvI3NxbHNmcXdqZnBsZSNBcWp3anBrI0Bsb3ZuYWpia2JwI2FmZm0jYHFqd2pganlmZyt0andrI3drZiNme2Bmc3dqbG1ydmZwd2psbXAjYmFsdncjd2tmc2JwcGptZCN3a3FsdmRrI3drZjMhI2Bmb29zYmdnam1kPiEzISN3a2x2cGJtZ3AjbGUjc2Zsc29mcWZnanFmYHdwI2tmcWYtI0VscWtidWYjYGtqb2dxZm0jdm1nZnEmMEYmMEAscGBxanN3JjBGISoqOD9iI2txZmU+IWt3d3M5LCx0dHQtP29qPT9iI2txZmU+IWt3d3M5LCxwandmXFxtYm5mISNgbG13Zm13PiF3Znt3LmdmYGxxYndqbG05bWxtZnB3em9mPiFnanBzb2J6OSNtbG1mP25md2Ija3d3cy5mcnZqdT4hWy5tZnQjR2J3ZisqLWRmd1dqbmYrKiN3enNmPiFqbmJkZix7LmpgbG0hPyxwc2JtPT9wc2JtI2BvYnBwPiFvYm1kdmJkZj4haWJ1YnBgcWpzd3RqbWdsdC1vbGBid2psbS1rcWZlP2Ija3FmZT4haWJ1YnBgcWpzdzkuLj0OXHQ/cGBxanN3I3d6c2Y+IXc/YiNrcWZlPiRrd3dzOSwsdHR0LWtscXdgdncjamBsbSEja3FmZT4hPyxnanU9Dlx0P2dqdSNgb2JwcD4hP3BgcWpzdyNwcWA+IWt3d3M5LCwhI3Fmbz4hcHd6b2Zwa2ZmdyEjdz8sZ2p1PVx0P3BgcWpzdyN3enNmPixiPSM/YiNrcWZlPiFrd3dzOSwsI2Jvb2x0V3FibXBzYnFmbWB6PiFbLlZCLkBsbnNid2phb2YhI2BsbXFmb2J3amxtcGtqcyNhZnd0ZmZtXHQ/LHBgcWpzdz0OXHQ/cGBxanN3Iz8sYj0/LG9qPT8sdm89PyxnanU9YnBwbGBqYndmZyN0andrI3drZiNzcWxkcWJubmptZCNvYm1kdmJkZj8sYj0/YiNrcWZlPiFrd3dzOSwsPyxiPT8sb2o9P29qI2BvYnBwPiFlbHFuI2Jgd2psbT4ha3d3czksLD9nanUjcHd6b2Y+IWdqcHNvYno5d3pzZj4hd2Z7dyEjbWJuZj4hciE/d2Jhb2YjdGpnd2s+ITIzMyYhI2FiYGhkcWx2bWcuc2xwandqbG05ISNhbHFnZnE+ITMhI3RqZ3drPiFxZm8+IXBrbHF3YHZ3I2pgbG0hI2s1PT92bz0/b2o9P2Ija3FmZT4hIyM/bmZ3YiNrd3dzLmZydmp1PiFgcHAhI25mZ2piPiFwYHFmZm0hI3FmcHNsbXBqYW9mI2VscSN3a2YjISN3enNmPiFic3NvamBid2psbSwhI3B3em9mPiFhYmBoZHFsdm1nLmt3bm84I2BrYnFwZnc+dndlLjshI2Jvb2x0d3FibXBzYnFmbWB6PiFwd3pvZnBrZmZ3ISN3enNmPiF3Zg5cdD9uZndiI2t3d3MuZnJ2anU+IT0/LHBzYm09P3BzYm0jYG9icHA+ITMhI2Bmb29wc2Jgam1kPiEzIT04XHQ/LHBgcWpzdz1cdD9wYHFqc3cjcGxuZndqbmZwI2Bib29mZyN3a2ZnbGZwI21sdyNtZmBmcHBicWpvekVscSNubHFmI2ptZWxxbmJ3amxtYncjd2tmI2FmZGptbWptZCNsZSM/IkdMQFdaU0Yja3dubz0/a3dub3NicXdqYHZvYnFveiNqbSN3a2Yjd3pzZj4ha2pnZ2ZtISNtYm5mPiFpYnVicGBxanN3OXVsamcrMyo4IWZlZWZgd2p1Zm1mcHAjbGUjd2tmI2J2d2xgbG5zb2Z3Zj4hbGVlISNkZm1mcWJvb3ojYGxtcGpnZnFmZz0/am1zdncjd3pzZj4hd2Z7dyEjIT0/LHBgcWpzdz0OXHQ/cGBxanN3d2txbHZka2x2dyN3a2YjdGxxb2dgbG5ubG0jbmpwYGxtYGZzd2psbWJwcGxgamJ3amxtI3Rqd2sjd2tmPyxnanU9XHQ/LGdqdT1cdD9nanUjYGd2cWptZCNranAjb2plZndqbmYvYGxxcWZwc2xtZ2ptZCN3bCN3a2Z3enNmPiFqbmJkZix7LmpgbG0hI2JtI2ptYHFmYnBqbWQjbXZuYWZxZ2pzb2xuYndqYCNxZm9id2psbXBicWYjbGV3Zm0jYGxtcGpnZnFmZ25md2IjYGticXBmdz4hdndlLjshIz9qbXN2dyN3enNmPiF3Znt3ISNme2Juc29mcCNqbWBvdmdmI3drZiE9P2puZCNwcWA+IWt3d3M5LCxqc2Jxd2pganNid2psbSNqbSN3a2Z3a2YjZnB3YmFvanBrbmZtdyNsZVx0PyxnanU9XHQ/Z2p1I2BvYnBwPiElYm5zOG1hcHM4JWJuczhtYXBzOHdsI2dmd2ZxbmptZiN0a2Z3a2ZxcnZqd2YjZ2plZWZxZm13I2VxbG5uYnFoZmcjd2tmI2FmZGptbWptZGdqcHdibWBmI2Fmd3RmZm0jd2tmYGxtd3FqYXZ3amxtcCN3bCN3a2ZgbG1lb2pgdyNhZnd0ZmZtI3drZnRqZ2ZveiNgbG1wamdmcWZnI3dsdGJwI2xtZiNsZSN3a2YjZWpxcHd0andrI3VicXpqbWQjZ2ZkcWZmcGtidWYjcHNmYHZvYndmZyN3a2J3K2dsYHZuZm13LWRmd0ZvZm5mbXdzYnF3amBqc2J3am1kI2ptI3drZmxxamRqbWJvb3ojZ2Z1Zm9sc2ZnZndiI2BrYnFwZnc+IXZ3ZS47IT0jd3pzZj4hd2Z7dyxgcHAhIyw9XHRqbXdmcWBrYm1kZmJhb3ojdGp3a25scWYjYG9scGZveiNxZm9id2ZncGxgamJvI2JtZyNzbG9qd2pgYm93a2J3I3Rsdm9nI2x3a2ZxdGpwZnNmcXNmbWdqYHZvYnEjd2wjd2tmcHd6b2Yjd3pzZj4hd2Z7dyxgcHB3enNmPiFwdmFuanchI21ibmY+IWVibmpvamZwI3FmcGpnam1kI2ptZ2Z1Zm9sc2ptZCNgbHZtd3FqZnBgbG5zdndmcSNzcWxkcWJubmptZGZgbG1sbmpgI2dmdWZvbHNuZm13Z2Z3ZnFuam1id2psbSNsZSN3a2ZlbHEjbmxxZiNqbWVscW5id2psbWxtI3BmdWZxYm8jbGBgYnBqbG1wc2xxd3Zkdi9GcCMrRnZxbHNmdio8TzxWPWw8XFw9ezxRPW09YDxWPFxcPW88Vj1sPFxcPXs8UT1tPWA8VjxcXDxMPFI9bT1tPFQ8VT1tPFY8UjxVPFA8XFw9bjxZPWw8VDxcXDxXPFI8XjxUPFE9aDxSPWw8UDxcXD1qPFQ8VD1vPFM9bDxcXDxePFc8WTxRPFQ9YzxRPFk8UjxdPWk8UjxYPFQ8UDxSPFQ8UT1oPFI9bDxQPFxcPWo8VD1jPHQ8UT1oPFI9bDxQPFxcPWo8VD1jPEw8WT1tPFM9bzxdPFc8VDxWPFQ8VjxSPFc8VD1rPFk9bT1uPF48UjxUPFE9aDxSPWw8UDxcXD1qPFQ9Yj1uPFk9bD1sPFQ9bjxSPWw8VDxUPFg8Uj1tPW48XFw9bjxSPWs8UTxSNEs1aDVpNEY1ZDRLNEA0QzVkNWo0SzVoNEs0WDRGNF00SzVvNEs0RjRLNWg0SzVuNEY0XTRLNEE0SzRGa3dubzgjYGticXBmdz5WV0UuOyEjcGZ3V2puZmx2dytldm1gd2psbSsqZ2pwc29iejlqbW9qbWYuYW9sYGg4P2ptc3Z3I3d6c2Y+IXB2YW5qdyEjd3pzZiM+IyR3Znt3LGlidWJwYHFqP2puZCNwcWA+IWt3d3M5LCx0dHQtISMha3d3czksLHR0dC10MC1scWQscGtscXdgdncjamBsbSEja3FmZT4hISNidndsYGxuc29md2Y+IWxlZSEjPyxiPT8sZ2p1PT9nanUjYG9icHA+PyxiPT8sb2o9XHQ/b2ojYG9icHA+IWBwcCEjd3pzZj4hd2Z7dyxgcHAhIz9lbHFuI2Jgd2psbT4ha3d3czksLHt3LGBwcCEja3FmZT4ha3d3czksLG9qbWgjcWZvPiFib3dmcW1id2YhIw5cdD9wYHFqc3cjd3pzZj4hd2Z7dywjbG1gb2pgaD4haWJ1YnBgcWpzdzkrbWZ0I0did2YqLWRmd1dqbmYrKn5rZmpka3c+ITIhI3RqZ3drPiEyISNTZmxzb2YkcCNRZnN2YW9qYCNsZSMjP2Ija3FmZT4ha3d3czksLHR0dC13Znt3LmdmYGxxYndqbG05dm1nZnF3a2YjYWZkam1tam1kI2xlI3drZiM/LGdqdT1cdD8sZ2p1PVx0PyxnanU9XHRmcHdiYW9qcGtuZm13I2xlI3drZiM/LGdqdT0/LGdqdT0/LGdqdT0/LGcgdWpmdHNscXd4bmptLmtmamRrdzlcdD9wYHFqc3cjcHFgPiFrd3dzOSwsbHN3amxtPT9sc3dqbG0jdWJvdmY+bGV3Zm0jcWZlZnFxZmcjd2wjYnAjLGxzd2psbT1cdD9sc3dqbG0jdWJvdj8iR0xAV1pTRiNrd25vPVx0PyIuLlhKbXdmcW1id2psbWJvI0JqcXNscXc9XHQ/YiNrcWZlPiFrd3dzOSwsdHR0PyxiPT9iI2txZmU+IWt3d3M5LCx0XGZUTFxmVF5cZlRFXGZUXlxmVWhcZlR7XGZUTlxyb0lccm98XHJvTFxyb3tccm9PXHJvdlxyb3RcbkFPBUd4XGJUQVxuemsjK1x2VW0FR3gqXGZIRFxmSFNcZkhcXFxmSWFcZkhKXGZJa1xmSFpcZkhNXGZIUlxmSGVcZkhEXGZIXlxmSWdcZkhNXGZIeVxmSWFcZkhbXGZJa1xmSEhcZklhXGZIXFxcZkhwXGZIUlxmSERcZkh5XGZIUlxmSFxcXGZJbFxmSFRcZkhuXGZIQFxmSG5cZkhLXGZIU1xmSEhcZkhUXGZJYVxmSElcZkhSXGZIRlxmSERcZkhSXGZIVFxmSWFcZkhZXGZJbFxmSHlcZkhSXGZIXFxcZkhUXGZIblxmSFRcZklhXGZIeVxmSFxcXGZIT1xmSFRcZkhSXGZIQlxmSHtcZklhXGZIXFxcZklsXGZIdlxmSFNcZkhzXGZJYVxmSExcZklnXGZIblxmSFlcZkhTXGZIcFxmSWFcZkhyXGZIUlxmSERcZkhpXGZIQlxmSWtcZkhcXFxmSFNcZkh5XGZIUlxmSFlcZkhTXGZIQVxmSFNcZkhEXGZJYVxmSERcZkh7XGZIUlxmSE1cZkhTXGZIQ1xmSFJcZkhtXGZIeVxmSWFcZkhDXGZJZ1xmSG5cZkh5XGZIU1xmSFRcZkltXGZIXFxcZkh5XGZJYVxmSFtcZkhSXGZIRlxmSFVcZkltXGZIbVxmSHZcZkhIXGZJbFxmSEZcZklhXGZIXFxcZkhAXGZIblxmSEtcZkhEXGZIc1xmSFNcZkhGXGZJYVxmSEZcZkhPXGZJbFxmSHlcZklhXGZIXFxcZkhTXGZIeVxmSWtcZkhzXGZIRlxmSWFcZkhcXFxmSFJcZkhcXFxmSG5cZkhBXGZIRlxmSWFcZkhcXFxmSFJcZkhGXGZJYVxmSEhcZkhCXGZIUlxmSF5cZkhTXGZIeVxmSWdcZkhuXGZIXFxcZkhHXGZIUFxmSWFcZkhIXGZIUlxmSFxcXGZIRFxmSFNcZkhcXFxmSWFcZkhCXGZIUlxmSE9cZkheXGZIU1xmSEJcZkhTXGZIc1xmSWtcZkhNZ2ZwYHFqc3dqbG0hI2BsbXdmbXc+IWdsYHZuZm13LW9sYGJ3amxtLXNxbHctZGZ3Rm9mbmZtd3BBeldiZE1ibmYrPyJHTEBXWlNGI2t3bm89XHQ/a3dubyM/bmZ3YiNga2JxcGZ3PiF2d2UuOyE9OXZxbyEjYGxtd2Ztdz4ha3d3czksLC1gcHAhI3Fmbz4hcHd6b2Zwa2ZmdyFwd3pvZiN3enNmPiF3Znt3LGBwcCE9d3pzZj4hd2Z7dyxgcHAhI2txZmU+IXQwLWxxZCwyOjo6LHtrd25vISN7bm93enNmPiF3Znt3LGlidWJwYHFqc3chI25md2tsZz4hZGZ3ISNiYHdqbG0+IW9qbWgjcWZvPiFwd3pvZnBrZmZ3ISMjPiNnbGB2bmZtdy1kZndGb2ZuZm13d3pzZj4ham5iZGYsey5qYGxtISMsPWBmb29zYmdnam1kPiEzISNgZm9vcHMtYHBwISN3enNmPiF3Znt3LGBwcCEjPyxiPT8sb2o9P29qPT9iI2txZmU+ISEjdGpnd2s+ITIhI2tmamRrdz4hMiEhPT9iI2txZmU+IWt3d3M5LCx0dHQtcHd6b2Y+IWdqcHNvYno5bWxtZjghPWJvd2ZxbWJ3ZiEjd3pzZj4hYnNzb2ouLCxUMEAsLEdXRyNbS1dOTyMyLTMjZm9vcHNiYGptZD4hMyEjYGZvb3NiZyN3enNmPiFramdnZm0hI3Vib3ZmPiEsYj0lbWFwczg/cHNibSNxbG9mPiFwXHQ/am1zdncjd3pzZj4ha2pnZ2ZtISNvYm1kdmJkZj4hSWJ1YlBgcWpzdyEjI2dsYHZuZm13LWRmd0ZvZm5mbXdwQWQ+ITMhI2Bmb29wc2Jgam1kPiEzISN6c2Y+IXdme3csYHBwISNuZmdqYj4hd3pzZj4kd2Z7dyxpYnVicGBxanN3JHRqd2sjd2tmI2Z7YGZzd2psbSNsZSN6c2Y+IXdme3csYHBwISNxZm8+IXB3I2tmamRrdz4hMiEjdGpnd2s+ITIhIz4kKGZtYGxnZlZRSkBsbnNsbWZtdys/b2ptaCNxZm8+IWJvd2ZxbWJ3ZiEjXHRhbGd6LyN3cS8jam1zdncvI3dme3duZndiI21ibmY+IXFsYWx3cCEjYGxtbmZ3a2xnPiFzbHB3ISNiYHdqbG0+IT1cdD9iI2txZmU+IWt3d3M5LCx0dHQtYHBwISNxZm8+IXB3em9mcGtmZnchIz8sZ2p1PT8sZ2p1PT9nanUjYG9icHBvYm1kdmJkZj4haWJ1YnBgcWpzdyE9YnFqYi5ramdnZm0+IXdxdmYhPS5bP3Fqc3chI3d6c2Y+IXdme3csaWJ1YnBvPjM4fiorKjhcdCtldm1gd2psbSsqeGFiYGhkcWx2bWcuam5iZGY5I3ZxbyssYj0/LG9qPT9vaj0/YiNrcWZlPiFrXG5cbj9vaj0/YiNrcWZlPiFrd3dzOSwsYndscSEjYnFqYi5ramdnZm0+IXdxdj0jP2Ija3FmZT4ha3d3czksLHR0dC1vYm1kdmJkZj4haWJ1YnBgcWpzdyEjLGxzd2psbT1cdD9sc3dqbG0jdWJvdmYsZ2p1PT8sZ2p1PT9nanUjYG9icHA+cWJ3bHEhI2JxamIua2pnZ2ZtPiF3cWY+K21mdCNHYndmKi1kZndXam5mKypzbHF3dmR2L0ZwIytnbCNBcWJwam8qPFI9bDxfPFxcPFE8VDxbPFxcPWo8VDxUPF48UjxbPFA8UjxaPFE8Uj1tPW49YDxSPF09bDxcXDxbPFI8XjxcXDxRPFQ9Yz1sPFk8XzxUPW09bj1sPFxcPWo8VDxUPF48UjxbPFA8UjxaPFE8Uj1tPW48VDxSPF09YzxbPFxcPW48WTxXPWA8UTxcXD8iR0xAV1pTRiNrd25vI1NWQU9KQCMhbXcuV3pzZiEjYGxtd2Ztdz4hd2Z7dyw/bmZ3YiNrd3dzLmZydmp1PiFAbG13ZnFibXBqd2psbWJvLCxGTSEjIWt3d3M5P2t3bm8je25vbXA+IWt3d3M5LCx0dHQuLCxUMEAsLEdXRyNbS1dOTyMyLTMjV0dXRyx7a3dubzIud3FibXBqd2psbWJvLCx0dHQtdDAtbHFkLFdRLHtrd25vMixzZiM+IyR3Znt3LGlidWJwYHFqc3ckOD9uZndiI21ibmY+IWdmcGBxanN3amxtc2JxZm13TWxnZi1qbXBmcXdBZmVscWY/am1zdncjd3pzZj4ha2pnZ2ZtISNtYmlwISN3enNmPiF3Znt3LGlidWJwYHFqK2dsYHZuZm13Ki1xZmJneitldm1gd2pwYHFqc3cjd3pzZj4hd2Z7dyxpYnVicGpuYmRmISNgbG13Zm13PiFrd3dzOSwsVkIuQGxuc2J3amFvZiEjYGxtd2Ztdz53bm84I2BrYnFwZnc+dndlLjshIyw9XHRvam1oI3Fmbz4hcGtscXdgdncjamBsbT9vam1oI3Fmbz4hcHd6b2Zwa2ZmdyEjPyxwYHFqc3c9XHQ/cGBxanN3I3d6c2Y+PiNnbGB2bmZtdy1gcWZid2ZGb2ZuZm0/YiN3YnFkZnc+IVxcYW9ibWghI2txZmU+I2dsYHZuZm13LWRmd0ZvZm5mbXdwQWptc3Z3I3d6c2Y+IXdme3chI21ibmY+Yi13enNmIz4jJHdme3csaWJ1YnBgcWptc3Z3I3d6c2Y+IWtqZ2dmbSEjbWJuZmt3bm84I2BrYnFwZnc+dndlLjshIyw9Z3dnIT1cdD9rd25vI3tub21wPiFrd3dzLiwsVDBALCxHV0cjS1dOTyM3LTMyI1dmbXdwQXpXYmRNYm5mKyRwYHFqc3ckKmptc3Z3I3d6c2Y+IWtqZ2dmbSEjbWJuP3BgcWpzdyN3enNmPiF3Znt3LGlidWJwISNwd3pvZj4hZ2pwc29iejltbG1mOCE9Z2xgdm5mbXctZGZ3Rm9mbmZtd0F6SmcrPmdsYHZuZm13LWBxZmJ3ZkZvZm5mbXcrJCN3enNmPiR3Znt3LGlidWJwYHFqc3ckam1zdncjd3pzZj4hd2Z7dyEjbWJuZj4hZy1kZndGb2ZuZm13cEF6V2JkTWJuZitwbWpgYm8hI2txZmU+IWt3d3M5LCx0dHQtQCwsR1dHI0tXTk8jNy0zMiNXcWJtcGp3P3B3em9mI3d6c2Y+IXdme3csYHBwIT1cdFx0P3B3em9mI3d6c2Y+IXdme3csYHBwIT1qbG1iby1nd2chPVx0P2t3bm8je25vbXA+a3d3cy5mcnZqdT4hQGxtd2Ztdy5XenNmZ2ptZD4hMyEjYGZvb3BzYmBqbWQ+ITMha3dubzgjYGticXBmdz52d2UuOyEjLD1cdCNwd3pvZj4hZ2pwc29iejltbG1mOCE9Pz9vaj0/YiNrcWZlPiFrd3dzOSwsdHR0LSN3enNmPiR3Znt3LGlidWJwYHFqc3ckPTxYPFk9Yz1uPFk8Vz1gPFE8Uj1tPW48VD1tPFI8Uj1uPF48WT1uPW09bjxePFQ8VDxTPWw8UjxUPFs8XjxSPFg9bT1uPF48XFw8XTxZPFs8UjxTPFxcPW08UTxSPW09bjxUXGZIRlxmSW1cZkhUXGZJYVxmSEhcZkhTXGZIeVxmSFJcZkh5XGZIUlxmSG5cZkh7XGZJYVxmSFxcXGZJa1xmSFRcZkhlXGZIRFxmSWFcZkhVXGZJZ1xmSG5cZkhEXGZJa1xmSFlcZkhTXGZIS1xmSFJcZkhEXGZIVFxmSEFcZkhSXGZIR1xmSFNcZkh5XGZJYVxmSFRcZkhTXGZIblxmSHtcZkhUXGZJbVxmSFxcXGZIeVxmSWFcZkhbXGZIU1xmSEhcZkh5XGZJZVxmSEZcZklsXGZIXFxcZkhSXGZIa1xmSHNcZkhZXGZIU1xmSHBcZklhXGZIclxmSFJcZkhGXGZIRFxmSHlcZkhSXGZIXFxcZklhXGZIXFxcZkhZXGZIUlxmSGRcZkhUXGZIeVxmSWFcZkhcXFxmSFNcZkhDXGZISFxmSFInLCLbtyXGjCdUJcKFJ1clw5clTyVnJcKmJsaTJcelJj4mKiYnJl4mwojFuOCwvibGrSbGkiYpJl4mJSYnJsKCJlAmMSbCsSYzJl0mbSZ1JkUmdCZDJsOPJlYmViYvJj4mNibgvbbhnbxvJnAmQCZFJk0mUCZ4JkAmRiZlJsOMJjcmOiYoJkQmMCZDJikmLiZGJi0mMSYoJkwmRiYxyZ4qz6rih7Mm4Y2yJksmOyYpJkUmSCZQJjAmPyY5JlYmwoEmLSZ2JmEmLCZFJikmPyY9JicmJyZCJuC0ribUgybMliomKjgmJSYlJiYmJSwpJsKaJj4mwoYmNyZdJkYmMiY+JkomNiZuJjImJSY/JsKOJjImNiZKJmcmLSYwJiwmKiZKJiomTyYpJjYmKCY8JkImTiYuJlAmQCYyJi4mVyZNJiXUvMKEKCwoPCYsJs+aJuGjhyYtJiwoJSYoJiUmKMS7MCZYJkQmwoEmaiYnJkomKCYuJkImMyZaJlImaCYzJkUmRSY8w4YtzaDhu7MmJTg/JkAmLCZaJkAmMCZKJiwmXiZ4Jl8mNiZDJjYmQ9ys4qilJmYmLSYtJi0mLSYsJkomMiY4JnomOCZDJlkmOCYtJmQm4bm4w4wtJjcmMSZGJjcmdCZXJjcmSSYuJi4mXiY94L6c4aeTJjgoPiYvJi8m3bsnKSfhgaUnKSclQC8mMCYl0L7gp4AqJipAJkPUvdeUybTXqzTgt5fcmtORNuC2hCYvxbjMg1omKiXJhs+/JsS0JjHCqNK0xbQiLGcsIkFBQUFLS0xMS0tLS0tKSklISElISEdHRkYiKTshZnVuY3Rpb24gc2V0RGF0YShlLHQpe2NvbnN0IGE9bSxuPXA7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDsrK2UpbltlXT10W2VdO2xldCBzPTA7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDsrK2Upe2FbZV09cztjb25zdCB0PW5bZV07MCE9PXQmJihzKz1lPDwoMzEmdCkpfWZvcihsZXQgZT10Lmxlbmd0aDtlPDMyOysrZSlhW2VdPXM7dT1lfShkLGcpO2Z1bmN0aW9uIElucHV0U3RyZWFtKGUpe3RoaXMuZGF0YT1uZXcgSW50OEFycmF5KDApO3RoaXMub2Zmc2V0PTA7dGhpcy5kYXRhPWV9ZnVuY3Rpb24gcmVhZElucHV0KGUsdCxhLG4pe2lmKG51bGw9PT1lLmlucHV0KXJldHVybi0xO2NvbnN0IHM9ZS5pbnB1dCxyPU1hdGgubWluKHMub2Zmc2V0K24scy5kYXRhLmxlbmd0aCksaT1yLXMub2Zmc2V0O3Quc2V0KHMuZGF0YS5zdWJhcnJheShzLm9mZnNldCxyKSxhKTtzLm9mZnNldCs9aTtyZXR1cm4gaX1mdW5jdGlvbiB0b1V0ZjhSdW5lcyhlKXtjb25zdCB0PWUubGVuZ3RoLGE9bmV3IEludDMyQXJyYXkodCk7Zm9yKGxldCBuPTA7bjx0OysrbilhW25dPWUuY2hhckNvZGVBdChuKTtyZXR1cm4gYX1mdW5jdGlvbiBtYWtlRXJyb3IoZSx0KXtpZih0Pj0wKXJldHVybiB0O2UucnVubmluZ1N0YXRlPj0wJiYoZS5ydW5uaW5nU3RhdGU9dCk7dGhyb3cgbmV3IEVycm9yKCJCcm90bGkgZXJyb3IgY29kZTogIit0KX1yZXR1cm4gZnVuY3Rpb24gZGVjb2RlKGUsdCl7bGV0IGE9bmV3IFN0YXRlO2EuaW5wdXQ9bmV3IElucHV0U3RyZWFtKGUpO2luaXRTdGF0ZShhKTtpZih0KXtsZXQgZT10LmN1c3RvbURpY3Rpb25hcnk7ZSYmZnVuY3Rpb24gYXR0YWNoRGljdGlvbmFyeUNodW5rKGUsdCl7aWYoMSE9PWUucnVubmluZ1N0YXRlKXJldHVybiBtYWtlRXJyb3IoZSwtMjQpO2lmKDA9PT1lLmNkTnVtQ2h1bmtzKXtlLmNkQ2h1bmtzPW5ldyBBcnJheSgxNik7ZS5jZENodW5rT2Zmc2V0cz1uZXcgSW50MzJBcnJheSgxNik7ZS5jZEJsb2NrQml0cz0tMX1pZigxNT09PWUuY2ROdW1DaHVua3MpcmV0dXJuIG1ha2VFcnJvcihlLC0yNyk7ZS5jZENodW5rc1tlLmNkTnVtQ2h1bmtzXT10O2UuY2ROdW1DaHVua3MrKztlLmNkVG90YWxTaXplKz10Lmxlbmd0aDtlLmNkQ2h1bmtPZmZzZXRzW2UuY2ROdW1DaHVua3NdPWUuY2RUb3RhbFNpemU7cmV0dXJuIDB9KGEsZSl9bGV0IG49MCxzPVtdO2Zvcig7Oyl7bGV0IGU9bmV3IEludDhBcnJheSgxNjM4NCk7cy5wdXNoKGUpO2Eub3V0cHV0PWU7YS5vdXRwdXRPZmZzZXQ9MDthLm91dHB1dExlbmd0aD0xNjM4NDthLm91dHB1dFVzZWQ9MDtkZWNvbXByZXNzKGEpO24rPWEub3V0cHV0VXNlZDtpZihhLm91dHB1dFVzZWQ8MTYzODQpYnJlYWt9IWZ1bmN0aW9uIGNsb3NlKGUpe2lmKDA9PT1lLnJ1bm5pbmdTdGF0ZSlyZXR1cm4gbWFrZUVycm9yKGUsLTI1KTtlLnJ1bm5pbmdTdGF0ZT4wJiYoZS5ydW5uaW5nU3RhdGU9MTEpO3JldHVybiAwfShhKTshZnVuY3Rpb24gY2xvc2VJbnB1dChlKXtlLmlucHV0PW5ldyBJbnB1dFN0cmVhbShuZXcgSW50OEFycmF5KDApKX0oYSk7bGV0IHI9bmV3IEludDhBcnJheShuKSxpPTA7Zm9yKGxldCBlPTA7ZTxzLmxlbmd0aDsrK2Upe2xldCB0PXNbZV0sYT1NYXRoLm1pbihuLGkrMTYzODQpLWk7YTwxNjM4ND9yLnNldCh0LnN1YmFycmF5KDAsYSksaSk6ci5zZXQodCxpKTtpKz1hfXJldHVybiByfX0pKCk7Y2xhc3MgQnJvdGxpU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFteyNHPSEwO2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0fXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoKSx0PVphKG5ldyBJbnQ4QXJyYXkoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUubGVuZ3RoKSk7dGhpcy5idWZmZXI9bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsdC5ieXRlT2Zmc2V0LHQubGVuZ3RoKTt0aGlzLmJ1ZmZlckxlbmd0aD10aGlzLmJ1ZmZlci5sZW5ndGg7dGhpcy5lb2Y9ITB9YXN5bmMgZ2V0SW1hZ2VEYXRhKGUsdCl7Y29uc3QgYT1hd2FpdCB0aGlzLmFzeW5jR2V0Qnl0ZXMoKTtyZXR1cm4gYT9hLmxlbmd0aDw9ZT9hOmEuc3ViYXJyYXkoMCxlKTp0aGlzLmdldEJ5dGVzKGUpfWFzeW5jIGFzeW5jR2V0Qnl0ZXMoKXtjb25zdHtkZWNvbXByZXNzZWQ6ZSxjb21wcmVzc2VkOnR9PWF3YWl0IHRoaXMuYXN5bmNHZXRCeXRlc0Zyb21EZWNvbXByZXNzaW9uU3RyZWFtKCJicm90bGkiKTtpZihlKXJldHVybiBlO3RoaXMuI0c9ITE7dGhpcy5zdHJlYW09bmV3IFN0cmVhbSh0LDAsdC5sZW5ndGgsdGhpcy5zdHJlYW0uZGljdCk7dGhpcy5yZXNldCgpO3JldHVybiBudWxsfWdldCBpc0FzeW5jKCl7cmV0dXJuIHRoaXMuI0d9fWNvbnN0IGVuPWFzeW5jIGZ1bmN0aW9uIEpCaWcyKGU9e30pe3ZhciB0PWUscXVpdF89KGUsdCk9Pnt0aHJvdyB0fSxhPWltcG9ydC5tZXRhLnVybDt0cnl7bmV3IFVSTCgiLiIsYSkuaHJlZn1jYXRjaHt9MDtjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpO3ZhciBuLHMscj1jb25zb2xlLmVycm9yLmJpbmQoY29uc29sZSksaT0hMTtmdW5jdGlvbiB1cGRhdGVNZW1vcnlWaWV3cygpe2lmKCFzPy5idWZmZXI/LnJlc2l6YWJsZSl7dmFyIGU9ZnVuY3Rpb24gZ2V0TWVtb3J5QnVmZmVyKCl7cmV0dXJuIHAuYnVmZmVyfSgpO3M9bmV3IEludDhBcnJheShlKTtvPW5ldyBVaW50OEFycmF5KGUpfX1jbGFzcyBFeGl0U3RhdHVze25hbWU9IkV4aXRTdGF0dXMiO2NvbnN0cnVjdG9yKGUpe3RoaXMubWVzc2FnZT1gUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggZXhpdCgke2V9KWA7dGhpcy5zdGF0dXM9ZX19dmFyIG8sY2FsbFJ1bnRpbWVDYWxsYmFja3M9ZT0+e2Zvcig7ZS5sZW5ndGg+MDspZS5zaGlmdCgpKHQpfSxsPVtdLGY9W10sYz0hMCxoPTAsdT17fSxoYW5kbGVFeGNlcHRpb249ZT0+e2lmKGUgaW5zdGFuY2VvZiBFeGl0U3RhdHVzfHwidW53aW5kIj09ZSlyZXR1cm4gbjtxdWl0XygwLGUpfSxrZWVwUnVudGltZUFsaXZlPSgpPT5jfHxoPjAsX3Byb2NfZXhpdD1lPT57bj1lO2lmKCFrZWVwUnVudGltZUFsaXZlKCkpe3Qub25FeGl0Py4oZSk7aT0hMH1xdWl0XygwLG5ldyBFeGl0U3RhdHVzKGUpKX0sX2V4aXQ9KGUsdCk9PntuPWU7X3Byb2NfZXhpdChlKX0sY2FsbFVzZXJDYWxsYmFjaz1lPT57aWYoIWkpdHJ5e3JldHVybiBlKCl9Y2F0Y2goZSl7aGFuZGxlRXhjZXB0aW9uKGUpfWZpbmFsbHl7KCgpPT57aWYoIWtlZXBSdW50aW1lQWxpdmUoKSl0cnl7X2V4aXQobil9Y2F0Y2goZSl7aGFuZGxlRXhjZXB0aW9uKGUpfX0pKCl9fSxhbGlnbk1lbW9yeT0oZSx0KT0+TWF0aC5jZWlsKGUvdCkqdCxncm93TWVtb3J5PWU9Pnt2YXIgdD0oZS1wLmJ1ZmZlci5ieXRlTGVuZ3RoKzY1NTM1KS82NTUzNnwwO3RyeXtwLmdyb3codCk7dXBkYXRlTWVtb3J5Vmlld3MoKTtyZXR1cm4gMX1jYXRjaChlKXt9fTt0Lm5vRXhpdFJ1bnRpbWUmJihjPXQubm9FeGl0UnVudGltZSk7dC5wcmludCYmdC5wcmludDt0LnByaW50RXJyJiYocj10LnByaW50RXJyKTt0LmFyZ3VtZW50cyYmdC5hcmd1bWVudHM7dC50aGlzUHJvZ3JhbSYmdC50aGlzUHJvZ3JhbTt2YXIgbSxwLGQ9dC5wcmVJbml0O2lmKGQpeyJmdW5jdGlvbiI9PXR5cGVvZiBkJiYodC5wcmVJbml0PWQ9W2RdKTtmb3IoO2QubGVuZ3RoPjA7KWQuc2hpZnQoKSgpfXQud3JpdGVBcnJheVRvTWVtb3J5PShlLHQpPT57cy5zZXQoZSx0KX07dmFyIGcsYj17ZTooKT0+ZnVuY3Rpb24gYWJvcnQoZSl7dC5vbkFib3J0Py4oZSk7cihlPWBBYm9ydGVkKCR7ZX0pYCk7aT0hMDtlKz0iLiBCdWlsZCB3aXRoIC1zQVNTRVJUSU9OUyBmb3IgbW9yZSBpbmZvLiI7dGhyb3cgbmV3IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvcihlKX0oIiIpLGQ6KCk9PntjPSExO2g9MH0sYTooZSx0KT0+e2lmKHVbZV0pe2NsZWFyVGltZW91dCh1W2VdLmlkKTtkZWxldGUgdVtlXX1pZighdClyZXR1cm4gMDt2YXIgYT1zZXRUaW1lb3V0KCgpPT57ZGVsZXRlIHVbZV07Y2FsbFVzZXJDYWxsYmFjaygoKT0+bShlLHBlcmZvcm1hbmNlLm5vdygpKSl9LHQpO3VbZV09e2lkOmEsdGltZW91dF9tczp0fTtyZXR1cm4gMH0sZzpmdW5jdGlvbiBfY3JlYXRlSW1hZ2VEYXRhKGUpe3QuaW1hZ2VEYXRhPW5ldyBVaW50OEFycmF5KGUpfSxiOmU9Pnt2YXIgdD1vLmxlbmd0aCxhPTIxNDc0ODM2NDg7aWYoKGU+Pj49MCk+YSlyZXR1cm4hMTtmb3IodmFyIG49MTtuPD00O24qPTIpe3ZhciBzPXQqKDErLjIvbik7cz1NYXRoLm1pbihzLGUrMTAwNjYzMjk2KTt2YXIgcj1NYXRoLm1pbihhLGFsaWduTWVtb3J5KE1hdGgubWF4KGUscyksNjU1MzYpKTtpZihncm93TWVtb3J5KHIpKXJldHVybiEwfXJldHVybiExfSxjOl9wcm9jX2V4aXQsaDpmdW5jdGlvbiBfc2V0SW1hZ2VEYXRhKGUsYSxuLHMpe2lmKG49PT1hKXt0LmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkoby5zdWJhcnJheShlLGUrbipzKSk7cmV0dXJufWNvbnN0IHI9YSpzLGk9dC5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHIpO2ZvcihsZXQgdD1lLHM9MDtzPHI7dCs9bixzKz1hKWkuc2V0KG8uc3ViYXJyYXkodCx0K2EpLHMpfSxmOmZ1bmN0aW9uIF9zZXRMaW5lRGF0YShlLGEsbil7dC5pbWFnZURhdGEuc2V0KG8uc3ViYXJyYXkoZSxlK2EpLG4pfX07Zz1hd2FpdCBhc3luYyBmdW5jdGlvbiBjcmVhdGVXYXNtKCl7ZnVuY3Rpb24gcmVjZWl2ZUluc3RhbmNlKGUpeyFmdW5jdGlvbiBhc3NpZ25XYXNtRXhwb3J0cyhlKXt0Ll9tYWxsb2M9ZS5rO3QuX2ZyZWU9ZS5sO3QuX2piaWcyX2RlY29kZT1lLm07dC5fY2NpdHRfZGVjb2RlPWUubjttPWUubztwPWUuaTtlLl9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGV9KGc9ZS5leHBvcnRzKTt1cGRhdGVNZW1vcnlWaWV3cygpO3JldHVybiBnfXZhciBlPWZ1bmN0aW9uIGdldFdhc21JbXBvcnRzKCl7cmV0dXJue2E6Yn19KCksYT10Lmluc3RhbnRpYXRlV2FzbTtyZXR1cm4gbmV3IFByb21pc2UodD0+e2EoZSxlPT50KHJlY2VpdmVJbnN0YW5jZShlKSkpfSl9KCk7YXdhaXQgYXN5bmMgZnVuY3Rpb24gcnVuKCl7IWZ1bmN0aW9uIHByZVJ1bigpe3ZhciBlPXQucHJlUnVuO2lmKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZT1bZV0pO2YucHVzaCguLi5lKX1jYWxsUnVudGltZUNhbGxiYWNrcyhmKX0oKTt2YXIgZT10LnNldFN0YXR1cztpZihlKXtlKCJSdW5uaW5nLi4uIik7YXdhaXQgbmV3IFByb21pc2UoZT0+c2V0VGltZW91dChlLDEpKTtzZXRUaW1lb3V0KGUsMSwiIil9aWYoIWkpeyFmdW5jdGlvbiBpbml0UnVudGltZSgpezA7Zy5qKCl9KCk7dC5vblJ1bnRpbWVJbml0aWFsaXplZD8uKCk7IWZ1bmN0aW9uIHBvc3RSdW4oKXt2YXIgZT10LnBvc3RSdW47aWYoZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGUmJihlPVtlXSk7bC5wdXNoKC4uLmUpfWNhbGxSdW50aW1lQ2FsbGJhY2tzKGwpfSgpfX0oKTtyZXR1cm4gdH07Y2xhc3MgV2FzbUltYWdle3N0YXRpYyNWPW51bGw7c3RhdGljIyQ9bmV3IFNldDtzdGF0aWMjVD0hMDtzdGF0aWMjWT0hMDtzdGF0aWMjUj1udWxsOyNKPW51bGw7I1E9bnVsbDtfZmlsZW5hbWU9bnVsbDtfbm9XYXNtRmlsZW5hbWU9bnVsbDtzdGF0aWMgc2V0T3B0aW9ucyh7aGFuZGxlcjplLHVzZVdhc206dCx1c2VXb3JrZXJGZXRjaDphLHdhc21Vcmw6bn0pe1dhc21JbWFnZS4jVD10O1dhc21JbWFnZS4jWT1hO1dhc21JbWFnZS4jUj1uO2F8fChXYXNtSW1hZ2UuI1Y9ZSl9c3RhdGljIGdldCBpbnN0YW5jZSgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBnZXR0ZXIgYGluc3RhbmNlYCBhY2Nlc3NlZCIpfXN0YXRpYyBjbGVhbnVwKCl7Zm9yKGNvbnN0IGUgb2YgV2FzbUltYWdlLiMkKWUuI1E9bnVsbH1jb25zdHJ1Y3RvcihlPSExKXtlJiZXYXNtSW1hZ2UuIyQuYWRkKHRoaXMpfWFzeW5jI1ooZSl7bGV0IHQ9bnVsbDt0cnl7dD0oYXdhaXQoaW1wb3J0KAovKndlYnBhY2tJZ25vcmU6IHRydWUqLwovKkB2aXRlLWlnbm9yZSovCmAke1dhc21JbWFnZS4jUn0ke3RoaXMuX25vV2FzbUZpbGVuYW1lfWApKSkuZGVmYXVsdCgpfWNhdGNoKGUpe3dhcm4oYCNnZXRKc01vZHVsZTogJHtlfWApfWUodCl9YXN5bmMjZWUoZSx0LGEpe3RyeXt0aGlzLiNKfHwoV2FzbUltYWdlLiNZP3RoaXMuI0o9YXdhaXQgZmV0Y2hCaW5hcnlEYXRhKGAke1dhc21JbWFnZS4jUn0ke3RoaXMuX2ZpbGVuYW1lfWApOnRoaXMuI0o9YXdhaXQgV2FzbUltYWdlLiNWLnNlbmRXaXRoUHJvbWlzZSgiRmV0Y2hCaW5hcnlEYXRhIix7a2luZDoid2FzbVVybCIsZmlsZW5hbWU6dGhpcy5fZmlsZW5hbWV9KSk7cmV0dXJuIGEoKGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKHRoaXMuI0osdCkpLmluc3RhbmNlKX1jYXRjaCh0KXt3YXJuKGAjaW5zdGFudGlhdGVXYXNtOiAke3R9YCk7dGhpcy4jWihlKTtyZXR1cm4gbnVsbH19X2dldE1vZHVsZShlKXtpZighdGhpcy4jUSl7Y29uc3R7cHJvbWlzZTp0LHJlc29sdmU6YX09UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCksbj1bdF07V2FzbUltYWdlLiNUP24ucHVzaChlKHt3YXJuLGluc3RhbnRpYXRlV2FzbTp0aGlzLiNlZS5iaW5kKHRoaXMsYSl9KSk6dGhpcy4jWihhKTt0aGlzLiNRPVByb21pc2UucmFjZShuKX1yZXR1cm4gdGhpcy4jUX1hc3luYyBkZWNvZGUoZSx0KXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBkZWNvZGVgIGNhbGxlZCIpfX1jbGFzcyBKYmlnMkVycm9yIGV4dGVuZHMgbmF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiSmJpZzJFcnJvciIpfX1jbGFzcyBKQmlnMkNDSVRURmF4SW1hZ2UgZXh0ZW5kcyBXYXNtSW1hZ2V7X2ZpbGVuYW1lPSJqYmlnMi53YXNtIjtfbm9XYXNtRmlsZW5hbWU9ImpiaWcyX25vd2FzbV9mYWxsYmFjay5qcyI7c3RhdGljIGdldCBpbnN0YW5jZSgpe3JldHVybiBzaGFkb3codGhpcywiaW5zdGFuY2UiLG5ldyBKQmlnMkNDSVRURmF4SW1hZ2UoITApKX1hc3luYyBkZWNvZGUoZSx0LGEsbixzKXtjb25zdCByPWF3YWl0IHRoaXMuX2dldE1vZHVsZShlbik7aWYoIXIpdGhyb3cgbmV3IEpiaWcyRXJyb3IoIkpCaWcyIGZhaWxlZCB0byBpbml0aWFsaXplIik7bGV0IGksbzt0cnl7Y29uc3QgbD1lLmxlbmd0aDtpPXIuX21hbGxvYyhsKTtyLndyaXRlQXJyYXlUb01lbW9yeShlLGkpO2lmKHMpci5fY2NpdHRfZGVjb2RlKGksbCx0LGEscy5LLHMuRW5kT2ZMaW5lPzE6MCxzLkVuY29kZWRCeXRlQWxpZ24/MTowLHMuQmxhY2tJczE/MTowLHMuQ29sdW1ucyxzLlJvd3MpO2Vsc2V7Y29uc3QgZT1uP24ubGVuZ3RoOjA7aWYoZT4wKXtvPXIuX21hbGxvYyhlKTtyLndyaXRlQXJyYXlUb01lbW9yeShuLG8pfXIuX2piaWcyX2RlY29kZShpLGwsdCxhLG8sZSl9aWYoIXIuaW1hZ2VEYXRhKXRocm93IG5ldyBKYmlnMkVycm9yKCJVbmtub3duIGVycm9yIik7Y29uc3R7aW1hZ2VEYXRhOmZ9PXI7ci5pbWFnZURhdGE9bnVsbDtyZXR1cm4gZn1maW5hbGx5e2kmJnIuX2ZyZWUoaSk7byYmci5fZnJlZShvKX19fWNsYXNzIENDSVRURmF4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMubWF5YmVMZW5ndGg9dDt0aGlzLmRpY3Q9ZS5kaWN0O2EgaW5zdGFuY2VvZiBEaWN0fHwoYT1EaWN0LmVtcHR5KTt0aGlzLnBhcmFtcz17SzphLmdldCgiSyIpfHwwLEVuZE9mTGluZTohIWEuZ2V0KCJFbmRPZkxpbmUiKSxFbmNvZGVkQnl0ZUFsaWduOiEhYS5nZXQoIkVuY29kZWRCeXRlQWxpZ24iKSxDb2x1bW5zOmEuZ2V0KCJDb2x1bW5zIil8fDE3MjgsUm93czphLmdldCgiUm93cyIpfHwwLEVuZE9mQmxvY2s6ISEoYS5nZXQoIkVuZE9mQmxvY2siKT8/ITApLEJsYWNrSXMxOiEhYS5nZXQoIkJsYWNrSXMxIil9fWdldCBieXRlcygpe3JldHVybiBzaGFkb3codGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1nZXQgaXNJbWFnZVN0cmVhbSgpe3JldHVybiEwfWdldCBpc0FzeW5jRGVjb2Rlcigpe3JldHVybiEwfWFzeW5jIGRlY29kZUltYWdlKGUsdCxhKXtpZih0aGlzLmVvZilyZXR1cm4gdGhpcy5idWZmZXI7ZT8/PXRoaXMuc3RyZWFtLmlzQXN5bmMmJmF3YWl0IHRoaXMuc3RyZWFtLmFzeW5jR2V0Qnl0ZXMoKXx8dGhpcy5ieXRlczt0aGlzLmJ1ZmZlcj1hd2FpdCBKQmlnMkNDSVRURmF4SW1hZ2UuaW5zdGFuY2UuZGVjb2RlKGUsdGhpcy5kaWN0LmdldCgiVyIsIldpZHRoIiksdGhpcy5kaWN0LmdldCgiSCIsIkhlaWdodCIpLG51bGwsdGhpcy5wYXJhbXMpO3RoaXMuYnVmZmVyTGVuZ3RoPXRoaXMuYnVmZmVyLmxlbmd0aDt0aGlzLmVvZj0hMDtyZXR1cm4gdGhpcy5idWZmZXJ9fWNvbnN0IHRuPW5ldyBJbnQzMkFycmF5KFsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XSksYW49bmV3IEludDMyQXJyYXkoWzMsNCw1LDYsNyw4LDksMTAsNjU1NDcsNjU1NDksNjU1NTEsNjU1NTMsMTMxMDkxLDEzMTA5NSwxMzEwOTksMTMxMTAzLDE5NjY0MywxOTY2NTEsMTk2NjU5LDE5NjY2NywyNjIyMTEsMjYyMjI3LDI2MjI0MywyNjIyNTksMzI3ODExLDMyNzg0MywzMjc4NzUsMzI3OTA3LDI1OCwyNTgsMjU4XSksbm49bmV3IEludDMyQXJyYXkoWzEsMiwzLDQsNjU1NDEsNjU1NDMsMTMxMDgxLDEzMTA4NSwxOTY2MjUsMTk2NjMzLDI2MjE3NywyNjIxOTMsMzI3NzQ1LDMyNzc3NywzOTMzNDUsMzkzNDA5LDQ1OTAwOSw0NTkxMzcsNTI0ODAxLDUyNTA1Nyw1OTA4NDksNTkxMzYxLDY1NzQwOSw2NTg0MzMsNzI0OTkzLDcyNzA0MSw3OTQ2MjUsNzk4NzIxLDg2ODM1Myw4NzY1NDVdKSxzbj1bbmV3IEludDMyQXJyYXkoWzQ1OTAwOCw1MjQzNjgsNTI0MzA0LDUyNDU2OCw0NTkwMjQsNTI0NDAwLDUyNDMzNiw1OTAwMTYsNDU5MDE2LDUyNDM4NCw1MjQzMjAsNTg5OTg0LDUyNDI4OCw1MjQ0MTYsNTI0MzUyLDU5MDA0OCw0NTkwMTIsNTI0Mzc2LDUyNDMxMiw1ODk5NjgsNDU5MDI4LDUyNDQwOCw1MjQzNDQsNTkwMDMyLDQ1OTAyMCw1MjQzOTIsNTI0MzI4LDU5ZTQsNTI0Mjk2LDUyNDQyNCw1MjQzNjAsNTkwMDY0LDQ1OTAxMCw1MjQzNzIsNTI0MzA4LDUyNDU3Miw0NTkwMjYsNTI0NDA0LDUyNDM0MCw1OTAwMjQsNDU5MDE4LDUyNDM4OCw1MjQzMjQsNTg5OTkyLDUyNDI5Miw1MjQ0MjAsNTI0MzU2LDU5MDA1Niw0NTkwMTQsNTI0MzgwLDUyNDMxNiw1ODk5NzYsNDU5MDMwLDUyNDQxMiw1MjQzNDgsNTkwMDQwLDQ1OTAyMiw1MjQzOTYsNTI0MzMyLDU5MDAwOCw1MjQzMDAsNTI0NDI4LDUyNDM2NCw1OTAwNzIsNDU5MDA5LDUyNDM3MCw1MjQzMDYsNTI0NTcwLDQ1OTAyNSw1MjQ0MDIsNTI0MzM4LDU5MDAyMCw0NTkwMTcsNTI0Mzg2LDUyNDMyMiw1ODk5ODgsNTI0MjkwLDUyNDQxOCw1MjQzNTQsNTkwMDUyLDQ1OTAxMyw1MjQzNzgsNTI0MzE0LDU4OTk3Miw0NTkwMjksNTI0NDEwLDUyNDM0Niw1OTAwMzYsNDU5MDIxLDUyNDM5NCw1MjQzMzAsNTkwMDA0LDUyNDI5OCw1MjQ0MjYsNTI0MzYyLDU5MDA2OCw0NTkwMTEsNTI0Mzc0LDUyNDMxMCw1MjQ1NzQsNDU5MDI3LDUyNDQwNiw1MjQzNDIsNTkwMDI4LDQ1OTAxOSw1MjQzOTAsNTI0MzI2LDU4OTk5Niw1MjQyOTQsNTI0NDIyLDUyNDM1OCw1OTAwNjAsNDU5MDE1LDUyNDM4Miw1MjQzMTgsNTg5OTgwLDQ1OTAzMSw1MjQ0MTQsNTI0MzUwLDU5MDA0NCw0NTkwMjMsNTI0Mzk4LDUyNDMzNCw1OTAwMTIsNTI0MzAyLDUyNDQzMCw1MjQzNjYsNTkwMDc2LDQ1OTAwOCw1MjQzNjksNTI0MzA1LDUyNDU2OSw0NTkwMjQsNTI0NDAxLDUyNDMzNyw1OTAwMTgsNDU5MDE2LDUyNDM4NSw1MjQzMjEsNTg5OTg2LDUyNDI4OSw1MjQ0MTcsNTI0MzUzLDU5MDA1MCw0NTkwMTIsNTI0Mzc3LDUyNDMxMyw1ODk5NzAsNDU5MDI4LDUyNDQwOSw1MjQzNDUsNTkwMDM0LDQ1OTAyMCw1MjQzOTMsNTI0MzI5LDU5MDAwMiw1MjQyOTcsNTI0NDI1LDUyNDM2MSw1OTAwNjYsNDU5MDEwLDUyNDM3Myw1MjQzMDksNTI0NTczLDQ1OTAyNiw1MjQ0MDUsNTI0MzQxLDU5MDAyNiw0NTkwMTgsNTI0Mzg5LDUyNDMyNSw1ODk5OTQsNTI0MjkzLDUyNDQyMSw1MjQzNTcsNTkwMDU4LDQ1OTAxNCw1MjQzODEsNTI0MzE3LDU4OTk3OCw0NTkwMzAsNTI0NDEzLDUyNDM0OSw1OTAwNDIsNDU5MDIyLDUyNDM5Nyw1MjQzMzMsNTkwMDEwLDUyNDMwMSw1MjQ0MjksNTI0MzY1LDU5MDA3NCw0NTkwMDksNTI0MzcxLDUyNDMwNyw1MjQ1NzEsNDU5MDI1LDUyNDQwMyw1MjQzMzksNTkwMDIyLDQ1OTAxNyw1MjQzODcsNTI0MzIzLDU4OTk5MCw1MjQyOTEsNTI0NDE5LDUyNDM1NSw1OTAwNTQsNDU5MDEzLDUyNDM3OSw1MjQzMTUsNTg5OTc0LDQ1OTAyOSw1MjQ0MTEsNTI0MzQ3LDU5MDAzOCw0NTkwMjEsNTI0Mzk1LDUyNDMzMSw1OTAwMDYsNTI0Mjk5LDUyNDQyNyw1MjQzNjMsNTkwMDcwLDQ1OTAxMSw1MjQzNzUsNTI0MzExLDUyNDU3NSw0NTkwMjcsNTI0NDA3LDUyNDM0Myw1OTAwMzAsNDU5MDE5LDUyNDM5MSw1MjQzMjcsNTg5OTk4LDUyNDI5NSw1MjQ0MjMsNTI0MzU5LDU5MDA2Miw0NTkwMTUsNTI0MzgzLDUyNDMxOSw1ODk5ODIsNDU5MDMxLDUyNDQxNSw1MjQzNTEsNTkwMDQ2LDQ1OTAyMyw1MjQzOTksNTI0MzM1LDU5MDAxNCw1MjQzMDMsNTI0NDMxLDUyNDM2Nyw1OTAwNzgsNDU5MDA4LDUyNDM2OCw1MjQzMDQsNTI0NTY4LDQ1OTAyNCw1MjQ0MDAsNTI0MzM2LDU5MDAxNyw0NTkwMTYsNTI0Mzg0LDUyNDMyMCw1ODk5ODUsNTI0Mjg4LDUyNDQxNiw1MjQzNTIsNTkwMDQ5LDQ1OTAxMiw1MjQzNzYsNTI0MzEyLDU4OTk2OSw0NTkwMjgsNTI0NDA4LDUyNDM0NCw1OTAwMzMsNDU5MDIwLDUyNDM5Miw1MjQzMjgsNTkwMDAxLDUyNDI5Niw1MjQ0MjQsNTI0MzYwLDU5MDA2NSw0NTkwMTAsNTI0MzcyLDUyNDMwOCw1MjQ1NzIsNDU5MDI2LDUyNDQwNCw1MjQzNDAsNTkwMDI1LDQ1OTAxOCw1MjQzODgsNTI0MzI0LDU4OTk5Myw1MjQyOTIsNTI0NDIwLDUyNDM1Niw1OTAwNTcsNDU5MDE0LDUyNDM4MCw1MjQzMTYsNTg5OTc3LDQ1OTAzMCw1MjQ0MTIsNTI0MzQ4LDU5MDA0MSw0NTkwMjIsNTI0Mzk2LDUyNDMzMiw1OTAwMDksNTI0MzAwLDUyNDQyOCw1MjQzNjQsNTkwMDczLDQ1OTAwOSw1MjQzNzAsNTI0MzA2LDUyNDU3MCw0NTkwMjUsNTI0NDAyLDUyNDMzOCw1OTAwMjEsNDU5MDE3LDUyNDM4Niw1MjQzMjIsNTg5OTg5LDUyNDI5MCw1MjQ0MTgsNTI0MzU0LDU5MDA1Myw0NTkwMTMsNTI0Mzc4LDUyNDMxNCw1ODk5NzMsNDU5MDI5LDUyNDQxMCw1MjQzNDYsNTkwMDM3LDQ1OTAyMSw1MjQzOTQsNTI0MzMwLDU5MDAwNSw1MjQyOTgsNTI0NDI2LDUyNDM2Miw1OTAwNjksNDU5MDExLDUyNDM3NCw1MjQzMTAsNTI0NTc0LDQ1OTAyNyw1MjQ0MDYsNTI0MzQyLDU5MDAyOSw0NTkwMTksNTI0MzkwLDUyNDMyNiw1ODk5OTcsNTI0Mjk0LDUyNDQyMiw1MjQzNTgsNTkwMDYxLDQ1OTAxNSw1MjQzODIsNTI0MzE4LDU4OTk4MSw0NTkwMzEsNTI0NDE0LDUyNDM1MCw1OTAwNDUsNDU5MDIzLDUyNDM5OCw1MjQzMzQsNTkwMDEzLDUyNDMwMiw1MjQ0MzAsNTI0MzY2LDU5MDA3Nyw0NTkwMDgsNTI0MzY5LDUyNDMwNSw1MjQ1NjksNDU5MDI0LDUyNDQwMSw1MjQzMzcsNTkwMDE5LDQ1OTAxNiw1MjQzODUsNTI0MzIxLDU4OTk4Nyw1MjQyODksNTI0NDE3LDUyNDM1Myw1OTAwNTEsNDU5MDEyLDUyNDM3Nyw1MjQzMTMsNTg5OTcxLDQ1OTAyOCw1MjQ0MDksNTI0MzQ1LDU5MDAzNSw0NTkwMjAsNTI0MzkzLDUyNDMyOSw1OTAwMDMsNTI0Mjk3LDUyNDQyNSw1MjQzNjEsNTkwMDY3LDQ1OTAxMCw1MjQzNzMsNTI0MzA5LDUyNDU3Myw0NTkwMjYsNTI0NDA1LDUyNDM0MSw1OTAwMjcsNDU5MDE4LDUyNDM4OSw1MjQzMjUsNTg5OTk1LDUyNDI5Myw1MjQ0MjEsNTI0MzU3LDU5MDA1OSw0NTkwMTQsNTI0MzgxLDUyNDMxNyw1ODk5NzksNDU5MDMwLDUyNDQxMyw1MjQzNDksNTkwMDQzLDQ1OTAyMiw1MjQzOTcsNTI0MzMzLDU5MDAxMSw1MjQzMDEsNTI0NDI5LDUyNDM2NSw1OTAwNzUsNDU5MDA5LDUyNDM3MSw1MjQzMDcsNTI0NTcxLDQ1OTAyNSw1MjQ0MDMsNTI0MzM5LDU5MDAyMyw0NTkwMTcsNTI0Mzg3LDUyNDMyMyw1ODk5OTEsNTI0MjkxLDUyNDQxOSw1MjQzNTUsNTkwMDU1LDQ1OTAxMyw1MjQzNzksNTI0MzE1LDU4OTk3NSw0NTkwMjksNTI0NDExLDUyNDM0Nyw1OTAwMzksNDU5MDIxLDUyNDM5NSw1MjQzMzEsNTkwMDA3LDUyNDI5OSw1MjQ0MjcsNTI0MzYzLDU5MDA3MSw0NTkwMTEsNTI0Mzc1LDUyNDMxMSw1MjQ1NzUsNDU5MDI3LDUyNDQwNyw1MjQzNDMsNTkwMDMxLDQ1OTAxOSw1MjQzOTEsNTI0MzI3LDU4OTk5OSw1MjQyOTUsNTI0NDIzLDUyNDM1OSw1OTAwNjMsNDU5MDE1LDUyNDM4Myw1MjQzMTksNTg5OTgzLDQ1OTAzMSw1MjQ0MTUsNTI0MzUxLDU5MDA0Nyw0NTkwMjMsNTI0Mzk5LDUyNDMzNSw1OTAwMTUsNTI0MzAzLDUyNDQzMSw1MjQzNjcsNTkwMDc5XSksOV0scm49W25ldyBJbnQzMkFycmF5KFszMjc2ODAsMzI3Njk2LDMyNzY4OCwzMjc3MDQsMzI3Njg0LDMyNzcwMCwzMjc2OTIsMzI3NzA4LDMyNzY4MiwzMjc2OTgsMzI3NjkwLDMyNzcwNiwzMjc2ODYsMzI3NzAyLDMyNzY5NCwwLDMyNzY4MSwzMjc2OTcsMzI3Njg5LDMyNzcwNSwzMjc2ODUsMzI3NzAxLDMyNzY5MywzMjc3MDksMzI3NjgzLDMyNzY5OSwzMjc2OTEsMzI3NzA3LDMyNzY4NywzMjc3MDMsMzI3Njk1LDBdKSw1XTtjbGFzcyBGbGF0ZVN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXsjRz0hMDtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDtjb25zdCBhPWUuZ2V0Qnl0ZSgpLG49ZS5nZXRCeXRlKCk7aWYoLTE9PT1hfHwtMT09PW4pdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW06ICR7YX0sICR7bn1gKTtpZig4IT0oMTUmYSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCBpbiBmbGF0ZSBzdHJlYW06ICR7YX0sICR7bn1gKTtpZigoKGE8PDgpK24pJTMxIT0wKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQmFkIEZDSEVDSyBpbiBmbGF0ZSBzdHJlYW06ICR7YX0sICR7bn1gKTtpZigzMiZuKXRocm93IG5ldyBGb3JtYXRFcnJvcihgRkRJQ1QgYml0IHNldCBpbiBmbGF0ZSBzdHJlYW06ICR7YX0sICR7bn1gKTt0aGlzLmNvZGVTaXplPTA7dGhpcy5jb2RlQnVmPTB9YXN5bmMgZ2V0SW1hZ2VEYXRhKGUsdCl7Y29uc3QgYT1hd2FpdCB0aGlzLmFzeW5jR2V0Qnl0ZXMoKTtyZXR1cm4gYT9hLmxlbmd0aDw9ZT9hOmEuc3ViYXJyYXkoMCxlKTp0aGlzLmdldEJ5dGVzKGUpfWFzeW5jIGFzeW5jR2V0Qnl0ZXMoKXtjb25zdHtkZWNvbXByZXNzZWQ6ZSxjb21wcmVzc2VkOnR9PWF3YWl0IHRoaXMuYXN5bmNHZXRCeXRlc0Zyb21EZWNvbXByZXNzaW9uU3RyZWFtKCJkZWZsYXRlIik7aWYoZSlyZXR1cm4gZTt0aGlzLiNHPSExO3RoaXMuc3RyZWFtPW5ldyBTdHJlYW0odCwyLHQubGVuZ3RoLHRoaXMuc3RyZWFtLmRpY3QpO3RoaXMucmVzZXQoKTtyZXR1cm4gbnVsbH1nZXQgaXNBc3luYygpe3JldHVybiB0aGlzLiNHfWdldEJpdHMoZSl7Y29uc3QgdD10aGlzLnN0cmVhbTtsZXQgYSxuPXRoaXMuY29kZVNpemUscz10aGlzLmNvZGVCdWY7Zm9yKDtuPGU7KXtpZigtMT09PShhPXQuZ2V0Qnl0ZSgpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCBlbmNvZGluZyBpbiBmbGF0ZSBzdHJlYW0iKTtzfD1hPDxuO24rPTh9YT1zJigxPDxlKS0xO3RoaXMuY29kZUJ1Zj1zPj5lO3RoaXMuY29kZVNpemU9bi09ZTtyZXR1cm4gYX1nZXRDb2RlKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW0sYT1lWzBdLG49ZVsxXTtsZXQgcyxyPXRoaXMuY29kZVNpemUsaT10aGlzLmNvZGVCdWY7Zm9yKDtyPG4mJi0xIT09KHM9dC5nZXRCeXRlKCkpOyl7aXw9czw8cjtyKz04fWNvbnN0IG89YVtpJigxPDxuKS0xXSxsPW8+PjE2LGY9NjU1MzUmbztpZihsPDF8fHI8bCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCBlbmNvZGluZyBpbiBmbGF0ZSBzdHJlYW0iKTt0aGlzLmNvZGVCdWY9aT4+bDt0aGlzLmNvZGVTaXplPXItbDtyZXR1cm4gZn1nZW5lcmF0ZUh1ZmZtYW5UYWJsZShlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBhLG49MDtmb3IoYT0wO2E8dDsrK2EpZVthXT5uJiYobj1lW2FdKTtjb25zdCBzPTE8PG4scj1uZXcgSW50MzJBcnJheShzKTtmb3IobGV0IGk9MSxvPTAsbD0yO2k8PW47KytpLG88PD0xLGw8PD0xKWZvcihsZXQgbj0wO248dDsrK24paWYoZVtuXT09PWkpe2xldCBlPTAsdD1vO2ZvcihhPTA7YTxpOysrYSl7ZT1lPDwxfDEmdDt0Pj49MX1mb3IoYT1lO2E8czthKz1sKXJbYV09aTw8MTZ8bjsrK299cmV0dXJuW3Isbl19I3RlKGUpe2luZm8oZSk7dGhpcy5lb2Y9ITB9cmVhZEJsb2NrKCl7bGV0IGUsdCxhO2NvbnN0IG49dGhpcy5zdHJlYW07dHJ5e3Q9dGhpcy5nZXRCaXRzKDMpfWNhdGNoKGUpe3RoaXMuI3RlKGUubWVzc2FnZSk7cmV0dXJufTEmdCYmKHRoaXMuZW9mPSEwKTt0Pj49MTtpZigwPT09dCl7bGV0IHQ7aWYoLTE9PT0odD1uLmdldEJ5dGUoKSkpe3RoaXMuI3RlKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1sZXQgYT10O2lmKC0xPT09KHQ9bi5nZXRCeXRlKCkpKXt0aGlzLiN0ZSgiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59YXw9dDw8ODtpZigtMT09PSh0PW4uZ2V0Qnl0ZSgpKSl7dGhpcy4jdGUoIkJhZCBibG9jayBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtIik7cmV0dXJufWxldCBzPXQ7aWYoLTE9PT0odD1uLmdldEJ5dGUoKSkpe3RoaXMuI3RlKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1zfD10PDw4O2lmKHMhPT0oNjU1MzUmfmEpJiYoMCE9PWF8fDAhPT1zKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCB1bmNvbXByZXNzZWQgYmxvY2sgbGVuZ3RoIGluIGZsYXRlIHN0cmVhbSIpO3RoaXMuY29kZUJ1Zj0wO3RoaXMuY29kZVNpemU9MDtjb25zdCByPXRoaXMuYnVmZmVyTGVuZ3RoLGk9cithO2U9dGhpcy5lbnN1cmVCdWZmZXIoaSk7dGhpcy5idWZmZXJMZW5ndGg9aTtpZigwPT09YSktMT09PW4ucGVla0J5dGUoKSYmKHRoaXMuZW9mPSEwKTtlbHNle2NvbnN0IHQ9bi5nZXRCeXRlcyhhKTtlLnNldCh0LHIpO3QubGVuZ3RoPGEmJih0aGlzLmVvZj0hMCl9cmV0dXJufWxldCBzLHI7aWYoMT09PXQpe3M9c247cj1ybn1lbHNle2lmKDIhPT10KXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biBibG9jayB0eXBlIGluIGZsYXRlIHN0cmVhbSIpO3tjb25zdCBlPXRoaXMuZ2V0Qml0cyg1KSsyNTcsdD10aGlzLmdldEJpdHMoNSkrMSxuPXRoaXMuZ2V0Qml0cyg0KSs0LGk9bmV3IFVpbnQ4QXJyYXkodG4ubGVuZ3RoKTtsZXQgbztmb3Iobz0wO288bjsrK28paVt0bltvXV09dGhpcy5nZXRCaXRzKDMpO2NvbnN0IGw9dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZShpKTthPTA7bz0wO2NvbnN0IGY9ZSt0LGM9bmV3IFVpbnQ4QXJyYXkoZik7bGV0IGgsdSxtO2Zvcig7bzxmOyl7Y29uc3QgZT10aGlzLmdldENvZGUobCk7aWYoMTY9PT1lKXtoPTI7dT0zO209YX1lbHNlIGlmKDE3PT09ZSl7aD0zO3U9MzttPWE9MH1lbHNle2lmKDE4IT09ZSl7Y1tvKytdPWE9ZTtjb250aW51ZX1oPTc7dT0xMTttPWE9MH1sZXQgdD10aGlzLmdldEJpdHMoaCkrdTtmb3IoO3QtLSA+MDspY1tvKytdPW19cz10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKGMuc3ViYXJyYXkoMCxlKSk7cj10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKGMuc3ViYXJyYXkoZSxmKSl9fWU9dGhpcy5idWZmZXI7bGV0IGk9ZT9lLmxlbmd0aDowLG89dGhpcy5idWZmZXJMZW5ndGg7Zm9yKDs7KXtsZXQgdD10aGlzLmdldENvZGUocyk7aWYodDwyNTYpe2lmKG8rMT49aSl7ZT10aGlzLmVuc3VyZUJ1ZmZlcihvKzEpO2k9ZS5sZW5ndGh9ZVtvKytdPXQ7Y29udGludWV9aWYoMjU2PT09dCl7dGhpcy5idWZmZXJMZW5ndGg9bztyZXR1cm59dC09MjU3O3Q9YW5bdF07bGV0IG49dD4+MTY7bj4wJiYobj10aGlzLmdldEJpdHMobikpO2E9KDY1NTM1JnQpK247dD10aGlzLmdldENvZGUocik7dD1ublt0XTtuPXQ+PjE2O24+MCYmKG49dGhpcy5nZXRCaXRzKG4pKTtjb25zdCBsPSg2NTUzNSZ0KStuO2lmKG8rYT49aSl7ZT10aGlzLmVuc3VyZUJ1ZmZlcihvK2EpO2k9ZS5sZW5ndGh9Zm9yKGxldCB0PTA7dDxhOysrdCwrK28pZVtvXT1lW28tbF19fX1jbGFzcyBKYmlnMlN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMubWF5YmVMZW5ndGg9dDt0aGlzLnBhcmFtcz1hfWdldCBieXRlcygpe3JldHVybiBzaGFkb3codGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fWdldCBpc0FzeW5jRGVjb2Rlcigpe3JldHVybiEwfWdldCBpc0ltYWdlU3RyZWFtKCl7cmV0dXJuITB9c3RhdGljIHN0cmlwRmlsZUhlYWRlcihlKXtpZihlLmxlbmd0aD49OSYmMTUxPT09ZVswXSYmNzQ9PT1lWzFdJiY2Nj09PWVbMl0mJjUwPT09ZVszXSYmMTM9PT1lWzRdJiYxMD09PWVbNV0mJjI2PT09ZVs2XSYmMTA9PT1lWzddKXtjb25zdCB0PTImZVs4XT85OjEzO3JldHVybiBlLnN1YmFycmF5KHQpfXJldHVybiBlfWFzeW5jIGRlY29kZUltYWdlKGUsdCxhKXtpZih0aGlzLmVvZilyZXR1cm4gdGhpcy5idWZmZXI7ZT1KYmlnMlN0cmVhbS5zdHJpcEZpbGVIZWFkZXIoZXx8dGhpcy5ieXRlcyk7bGV0IG49bnVsbDtpZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9dGhpcy5wYXJhbXMuZ2V0KCJKQklHMkdsb2JhbHMiKTtlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKG49SmJpZzJTdHJlYW0uc3RyaXBGaWxlSGVhZGVyKGUuZ2V0Qnl0ZXMoKSkpfXRoaXMuYnVmZmVyPWF3YWl0IEpCaWcyQ0NJVFRGYXhJbWFnZS5pbnN0YW5jZS5kZWNvZGUoZSx0aGlzLmRpY3QuZ2V0KCJXaWR0aCIpLHRoaXMuZGljdC5nZXQoIkhlaWdodCIpLG4pO3RoaXMuYnVmZmVyTGVuZ3RoPXRoaXMuYnVmZmVyLmxlbmd0aDt0aGlzLmVvZj0hMDtyZXR1cm4gdGhpcy5idWZmZXJ9Z2V0IGNhbkFzeW5jRGVjb2RlSW1hZ2VGcm9tQnVmZmVyKCl7cmV0dXJuIHRoaXMuc3RyZWFtLmlzQXN5bmN9fWNvbnN0IG9uPWFzeW5jIGZ1bmN0aW9uIE9wZW5KUEVHKGU9e30pe3ZhciB0PWUsYT0iLi90aGlzLnByb2dyYW0iLHF1aXRfPShlLHQpPT57dGhyb3cgdH0sbj1pbXBvcnQubWV0YS51cmw7dHJ5e25ldyBVUkwoIi4iLG4pLmhyZWZ9Y2F0Y2h7fTA7dmFyIHMscixpPWNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksbz1jb25zb2xlLmVycm9yLmJpbmQoY29uc29sZSksbD0hMTtmdW5jdGlvbiB1cGRhdGVNZW1vcnlWaWV3cygpe2lmKCFyPy5idWZmZXI/LnJlc2l6YWJsZSl7dmFyIGU9ZnVuY3Rpb24gZ2V0TWVtb3J5QnVmZmVyKCl7cmV0dXJuIHkuYnVmZmVyfSgpO3I9bmV3IEludDhBcnJheShlKTtjPW5ldyBVaW50OEFycmF5KGUpO2Y9bmV3IEludDMyQXJyYXkoZSk7aD1uZXcgVWludDMyQXJyYXkoZSl9fWNsYXNzIEV4aXRTdGF0dXN7bmFtZT0iRXhpdFN0YXR1cyI7Y29uc3RydWN0b3IoZSl7dGhpcy5tZXNzYWdlPWBQcm9ncmFtIHRlcm1pbmF0ZWQgd2l0aCBleGl0KCR7ZX0pYDt0aGlzLnN0YXR1cz1lfX12YXIgZixjLGgsY2FsbFJ1bnRpbWVDYWxsYmFja3M9ZT0+e2Zvcig7ZS5sZW5ndGg+MDspZS5zaGlmdCgpKHQpfSx1PVtdLG09W10scD0hMCxkPTAsZz17fSxoYW5kbGVFeGNlcHRpb249ZT0+e2lmKGUgaW5zdGFuY2VvZiBFeGl0U3RhdHVzfHwidW53aW5kIj09ZSlyZXR1cm4gcztxdWl0XygwLGUpfSxrZWVwUnVudGltZUFsaXZlPSgpPT5wfHxkPjAsX3Byb2NfZXhpdD1lPT57cz1lO2lmKCFrZWVwUnVudGltZUFsaXZlKCkpe3Qub25FeGl0Py4oZSk7bD0hMH1xdWl0XygwLG5ldyBFeGl0U3RhdHVzKGUpKX0sX2V4aXQ9KGUsdCk9PntzPWU7X3Byb2NfZXhpdChlKX0sY2FsbFVzZXJDYWxsYmFjaz1lPT57aWYoIWwpdHJ5e3JldHVybiBlKCl9Y2F0Y2goZSl7aGFuZGxlRXhjZXB0aW9uKGUpfWZpbmFsbHl7KCgpPT57aWYoIWtlZXBSdW50aW1lQWxpdmUoKSl0cnl7X2V4aXQocyl9Y2F0Y2goZSl7aGFuZGxlRXhjZXB0aW9uKGUpfX0pKCl9fSxhbGlnbk1lbW9yeT0oZSx0KT0+TWF0aC5jZWlsKGUvdCkqdCxncm93TWVtb3J5PWU9Pnt2YXIgdD0oZS15LmJ1ZmZlci5ieXRlTGVuZ3RoKzY1NTM1KS82NTUzNnwwO3RyeXt5Lmdyb3codCk7dXBkYXRlTWVtb3J5Vmlld3MoKTtyZXR1cm4gMX1jYXRjaChlKXt9fSxiPXt9LGdldEVudlN0cmluZ3M9KCk9PntpZighZ2V0RW52U3RyaW5ncy5zdHJpbmdzKXt2YXIgZT17VVNFUjoid2ViX3VzZXIiLExPR05BTUU6IndlYl91c2VyIixQQVRIOiIvIixQV0Q6Ii8iLEhPTUU6Ii9ob21lL3dlYl91c2VyIixMQU5HOihnbG9iYWxUaGlzLm5hdmlnYXRvcj8ubGFuZ3VhZ2U/PyJDIikucmVwbGFjZSgiLSIsIl8iKSsiLlVURi04IixfOmF9O2Zvcih2YXIgdCBpbiBiKXZvaWQgMD09PWJbdF0/ZGVsZXRlIGVbdF06ZVt0XT1iW3RdO3ZhciBuPVtdO2Zvcih2YXIgdCBpbiBlKW4ucHVzaChgJHt0fT0ke2VbdF19YCk7Z2V0RW52U3RyaW5ncy5zdHJpbmdzPW59cmV0dXJuIGdldEVudlN0cmluZ3Muc3RyaW5nc30sc3RyaW5nVG9VVEY4PShlLHQsYSk9PigoZSx0LGEsbik9PntpZighKG4+MCkpcmV0dXJuIDA7Zm9yKHZhciBzPWEscj1hK24tMSxpPTA7aTxlLmxlbmd0aDsrK2kpe3ZhciBvPWUuY29kZVBvaW50QXQoaSk7aWYobzw9MTI3KXtpZihhPj1yKWJyZWFrO3RbYSsrXT1vfWVsc2UgaWYobzw9MjA0Nyl7aWYoYSsxPj1yKWJyZWFrO3RbYSsrXT0xOTJ8bz4+Njt0W2ErK109MTI4fDYzJm99ZWxzZSBpZihvPD02NTUzNSl7aWYoYSsyPj1yKWJyZWFrO3RbYSsrXT0yMjR8bz4+MTI7dFthKytdPTEyOHxvPj42JjYzO3RbYSsrXT0xMjh8NjMmb31lbHNle2lmKGErMz49cilicmVhazt0W2ErK109MjQwfG8+PjE4O3RbYSsrXT0xMjh8bz4+MTImNjM7dFthKytdPTEyOHxvPj42JjYzO3RbYSsrXT0xMjh8NjMmbztpKyt9fXRbYV09MDtyZXR1cm4gYS1zfSkoZSxjLHQsYSksbGVuZ3RoQnl0ZXNVVEY4PWU9Pntmb3IodmFyIHQ9MCxhPTA7YTxlLmxlbmd0aDsrK2Epe3ZhciBuPWUuY2hhckNvZGVBdChhKTtpZihuPD0xMjcpdCsrO2Vsc2UgaWYobjw9MjA0Nyl0Kz0yO2Vsc2UgaWYobj49NTUyOTYmJm48PTU3MzQzKXt0Kz00OysrYX1lbHNlIHQrPTN9cmV0dXJuIHR9LHc9W251bGwsW10sW11dLGo9Z2xvYmFsVGhpcy5UZXh0RGVjb2RlciYmbmV3IFRleHREZWNvZGVyLFVURjhBcnJheVRvU3RyaW5nPShlLHQ9MCxhLG4pPT57dmFyIHM9KChlLHQsYSxuKT0+e3ZhciBzPXQrYTtpZihuKXJldHVybiBzO2Zvcig7ZVt0XSYmISh0Pj1zKTspKyt0O3JldHVybiB0fSkoZSx0LGEsbik7aWYocy10PjE2JiZlLmJ1ZmZlciYmailyZXR1cm4gai5kZWNvZGUoZS5zdWJhcnJheSh0LHMpKTtmb3IodmFyIHI9IiI7dDxzOyl7dmFyIGk9ZVt0KytdO2lmKDEyOCZpKXt2YXIgbz02MyZlW3QrK107aWYoMTkyIT0oMjI0JmkpKXt2YXIgbD02MyZlW3QrK107aWYoKGk9MjI0PT0oMjQwJmkpPygxNSZpKTw8MTJ8bzw8NnxsOig3JmkpPDwxOHxvPDwxMnxsPDw2fDYzJmVbdCsrXSk8NjU1MzYpcis9U3RyaW5nLmZyb21DaGFyQ29kZShpKTtlbHNle3ZhciBmPWktNjU1MzY7cis9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxmPj4xMCw1NjMyMHwxMDIzJmYpfX1lbHNlIHIrPVN0cmluZy5mcm9tQ2hhckNvZGUoKDMxJmkpPDw2fG8pfWVsc2Ugcis9U3RyaW5nLmZyb21DaGFyQ29kZShpKX1yZXR1cm4gcn0scHJpbnRDaGFyPShlLHQpPT57dmFyIGE9d1tlXTtpZih0JiYxMCE9PXQpYS5wdXNoKHQpO2Vsc2V7KDE9PT1lP2k6bykoVVRGOEFycmF5VG9TdHJpbmcoYSkpO2EubGVuZ3RoPTB9fSxVVEY4VG9TdHJpbmc9KGUsdCxhKT0+ZT9VVEY4QXJyYXlUb1N0cmluZyhjLGUsdCxhKToiIjt0Lm5vRXhpdFJ1bnRpbWUmJihwPXQubm9FeGl0UnVudGltZSk7dC5wcmludCYmKGk9dC5wcmludCk7dC5wcmludEVyciYmKG89dC5wcmludEVycik7dC5hcmd1bWVudHMmJnQuYXJndW1lbnRzO3QudGhpc1Byb2dyYW0mJihhPXQudGhpc1Byb2dyYW0pO3ZhciBrLHkscT10LnByZUluaXQ7aWYocSl7ImZ1bmN0aW9uIj09dHlwZW9mIHEmJih0LnByZUluaXQ9cT1bcV0pO2Zvcig7cS5sZW5ndGg+MDspcS5zaGlmdCgpKCl9dC53cml0ZUFycmF5VG9NZW1vcnk9KGUsdCk9PntyLnNldChlLHQpfTt2YXIgdixTPXttOigpPT5mdW5jdGlvbiBhYm9ydChlKXt0Lm9uQWJvcnQ/LihlKTtvKGU9YEFib3J0ZWQoJHtlfSlgKTtsPSEwO2UrPSIuIEJ1aWxkIHdpdGggLXNBU1NFUlRJT05TIGZvciBtb3JlIGluZm8uIjt0aHJvdyBuZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKGUpfSgiIiksbDooKT0+e3A9ITE7ZD0wfSxpOihlLHQpPT57aWYoZ1tlXSl7Y2xlYXJUaW1lb3V0KGdbZV0uaWQpO2RlbGV0ZSBnW2VdfWlmKCF0KXJldHVybiAwO3ZhciBhPXNldFRpbWVvdXQoKCk9PntkZWxldGUgZ1tlXTtjYWxsVXNlckNhbGxiYWNrKCgpPT5rKGUscGVyZm9ybWFuY2Uubm93KCkpKX0sdCk7Z1tlXT17aWQ6YSx0aW1lb3V0X21zOnR9O3JldHVybiAwfSxmOmZ1bmN0aW9uIF9jb3B5X3BpeGVsc18xKGUsYSl7ZT4+PTI7Y29uc3Qgbj10LmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkoYSkscz1mLnN1YmFycmF5KGUsZSthKTtuLnNldChzKX0sZTpmdW5jdGlvbiBfY29weV9waXhlbHNfMyhlLGEsbixzKXtlPj49MjthPj49MjtuPj49Mjtjb25zdCByPXQuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKnMpLGk9Zi5zdWJhcnJheShlLGUrcyksbz1mLnN1YmFycmF5KGEsYStzKSxsPWYuc3ViYXJyYXkobixuK3MpO2ZvcihsZXQgZT0wO2U8cztlKyspe3JbMyplXT1pW2VdO3JbMyplKzFdPW9bZV07clszKmUrMl09bFtlXX19LGQ6ZnVuY3Rpb24gX2NvcHlfcGl4ZWxzXzQoZSxhLG4scyxyKXtlPj49MjthPj49MjtuPj49MjtzPj49Mjtjb25zdCBpPXQuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0KnIpLG89Zi5zdWJhcnJheShlLGUrciksbD1mLnN1YmFycmF5KGEsYStyKSxjPWYuc3ViYXJyYXkobixuK3IpLGg9Zi5zdWJhcnJheShzLHMrcik7Zm9yKGxldCBlPTA7ZTxyO2UrKyl7aVs0KmVdPW9bZV07aVs0KmUrMV09bFtlXTtpWzQqZSsyXT1jW2VdO2lbNCplKzNdPWhbZV19fSxqOmU9Pnt2YXIgdD1jLmxlbmd0aCxhPTIxNDc0ODM2NDg7aWYoKGU+Pj49MCk+YSlyZXR1cm4hMTtmb3IodmFyIG49MTtuPD00O24qPTIpe3ZhciBzPXQqKDErLjIvbik7cz1NYXRoLm1pbihzLGUrMTAwNjYzMjk2KTt2YXIgcj1NYXRoLm1pbihhLGFsaWduTWVtb3J5KE1hdGgubWF4KGUscyksNjU1MzYpKTtpZihncm93TWVtb3J5KHIpKXJldHVybiEwfXJldHVybiExfSxvOihlLHQpPT57dmFyIGE9MCxuPTA7Zm9yKHZhciBzIG9mIGdldEVudlN0cmluZ3MoKSl7dmFyIHI9dCthO2hbZStuPj4yXT1yO2ErPXN0cmluZ1RvVVRGOChzLHIsMS8wKSsxO24rPTR9cmV0dXJuIDB9LHA6KGUsdCk9Pnt2YXIgYT1nZXRFbnZTdHJpbmdzKCk7aFtlPj4yXT1hLmxlbmd0aDt2YXIgbj0wO2Zvcih2YXIgcyBvZiBhKW4rPWxlbmd0aEJ5dGVzVVRGOChzKSsxO2hbdD4+Ml09bjtyZXR1cm4gMH0sbjpmdW5jdGlvbiBfZmRfc2VlayhlLHQsYSxuKXt0PShzPXQpPC05MDA3MTk5MjU0NzQwOTkyfHxzPjkwMDcxOTkyNTQ3NDA5OTI/TmFOOk51bWJlcihzKTt2YXIgcztyZXR1cm4gNzB9LGI6KGUsdCxhLG4pPT57Zm9yKHZhciBzPTAscj0wO3I8YTtyKyspe3ZhciBpPWhbdD4+Ml0sbz1oW3QrND4+Ml07dCs9ODtmb3IodmFyIGw9MDtsPG87bCsrKXByaW50Q2hhcihlLGNbaStsXSk7cys9b31oW24+PjJdPXM7cmV0dXJuIDB9LHE6ZnVuY3Rpb24gX2dyYXlfdG9fcmdiYShlLGEpe2U+Pj0yO2NvbnN0IG49dC5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQqYSkscz1mLnN1YmFycmF5KGUsZSthKTtmb3IobGV0IGU9MDtlPGE7ZSsrKXtuWzQqZV09bls0KmUrMV09bls0KmUrMl09c1tlXTtuWzQqZSszXT0yNTV9fSxoOmZ1bmN0aW9uIF9ncmF5YV90b19yZ2JhKGUsYSxuKXtlPj49MjthPj49Mjtjb25zdCBzPXQuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0Km4pLHI9Zi5zdWJhcnJheShlLGUrbiksaT1mLnN1YmFycmF5KGEsYStuKTtmb3IobGV0IGU9MDtlPG47ZSsrKXtzWzQqZV09c1s0KmUrMV09c1s0KmUrMl09cltlXTtzWzQqZSszXT1pW2VdfX0sYzpmdW5jdGlvbiBfanNQcmludFdhcm5pbmcoZSl7Y29uc3QgYT1VVEY4VG9TdHJpbmcoZSk7KHQud2Fybnx8Y29uc29sZS53YXJuKShgT3BlbkpQRUc6ICR7YX1gKX0sazpfcHJvY19leGl0LGc6ZnVuY3Rpb24gX3JnYl90b19yZ2JhKGUsYSxuLHMpe2U+Pj0yO2E+Pj0yO24+Pj0yO2NvbnN0IHI9dC5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQqcyksaT1mLnN1YmFycmF5KGUsZStzKSxvPWYuc3ViYXJyYXkoYSxhK3MpLGw9Zi5zdWJhcnJheShuLG4rcyk7Zm9yKGxldCBlPTA7ZTxzO2UrKyl7cls0KmVdPWlbZV07cls0KmUrMV09b1tlXTtyWzQqZSsyXT1sW2VdO3JbNCplKzNdPTI1NX19LGE6ZnVuY3Rpb24gX3N0b3JlRXJyb3JNZXNzYWdlKGUpe2NvbnN0IGE9VVRGOFRvU3RyaW5nKGUpO3QuZXJyb3JNZXNzYWdlcz90LmVycm9yTWVzc2FnZXMrPSJcbiIrYTp0LmVycm9yTWVzc2FnZXM9YX19O3Y9YXdhaXQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlV2FzbSgpe2Z1bmN0aW9uIHJlY2VpdmVJbnN0YW5jZShlKXshZnVuY3Rpb24gYXNzaWduV2FzbUV4cG9ydHMoZSl7dC5fbWFsbG9jPWUudDt0Ll9mcmVlPWUudTt0Ll9qcDJfZGVjb2RlPWUudjtrPWUudzt5PWUucjtlLl9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGV9KHY9ZS5leHBvcnRzKTt1cGRhdGVNZW1vcnlWaWV3cygpO3JldHVybiB2fXZhciBlPWZ1bmN0aW9uIGdldFdhc21JbXBvcnRzKCl7cmV0dXJue2E6U319KCksYT10Lmluc3RhbnRpYXRlV2FzbTtyZXR1cm4gbmV3IFByb21pc2UodD0+e2EoZSxlPT50KHJlY2VpdmVJbnN0YW5jZShlKSkpfSl9KCk7YXdhaXQgYXN5bmMgZnVuY3Rpb24gcnVuKCl7IWZ1bmN0aW9uIHByZVJ1bigpe3ZhciBlPXQucHJlUnVuO2lmKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZT1bZV0pO20ucHVzaCguLi5lKX1jYWxsUnVudGltZUNhbGxiYWNrcyhtKX0oKTt2YXIgZT10LnNldFN0YXR1cztpZihlKXtlKCJSdW5uaW5nLi4uIik7YXdhaXQgbmV3IFByb21pc2UoZT0+c2V0VGltZW91dChlLDEpKTtzZXRUaW1lb3V0KGUsMSwiIil9aWYoIWwpeyFmdW5jdGlvbiBpbml0UnVudGltZSgpezA7di5zKCl9KCk7dC5vblJ1bnRpbWVJbml0aWFsaXplZD8uKCk7IWZ1bmN0aW9uIHBvc3RSdW4oKXt2YXIgZT10LnBvc3RSdW47aWYoZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGUmJihlPVtlXSk7dS5wdXNoKC4uLmUpfWNhbGxSdW50aW1lQ2FsbGJhY2tzKHUpfSgpfX0oKTtyZXR1cm4gdH07Y2xhc3MgSnB4RXJyb3IgZXh0ZW5kcyBuYXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJKcHhFcnJvciIpfX1jbGFzcyBKcHhJbWFnZSBleHRlbmRzIFdhc21JbWFnZXtfZmlsZW5hbWU9Im9wZW5qcGVnLndhc20iO19ub1dhc21GaWxlbmFtZT0ib3BlbmpwZWdfbm93YXNtX2ZhbGxiYWNrLmpzIjtzdGF0aWMgZ2V0IGluc3RhbmNlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpbnN0YW5jZSIsbmV3IEpweEltYWdlKCEwKSl9YXN5bmMgZGVjb2RlKGUse251bUNvbXBvbmVudHM6dD00LGlzSW5kZXhlZENvbG9ybWFwOmE9ITEsc21hc2tJbkRhdGE6bj0hMSxyZWR1Y2VQb3dlcjpzPTB9PXt9KXtjb25zdCByPWF3YWl0IHRoaXMuX2dldE1vZHVsZShvbik7aWYoIXIpdGhyb3cgbmV3IEpweEVycm9yKCJPcGVuSlBFRyBmYWlsZWQgdG8gaW5pdGlhbGl6ZSIpO2xldCBpO3RyeXtjb25zdCBvPWUubGVuZ3RoO2k9ci5fbWFsbG9jKG8pO3Iud3JpdGVBcnJheVRvTWVtb3J5KGUsaSk7aWYoci5fanAyX2RlY29kZShpLG8sdD4wP3Q6MCwhIWEsISFuLHMpKXtjb25zdHtlcnJvck1lc3NhZ2VzOmV9PXI7aWYoZSl7ZGVsZXRlIHIuZXJyb3JNZXNzYWdlczt0aHJvdyBuZXcgSnB4RXJyb3IoZSl9dGhyb3cgbmV3IEpweEVycm9yKCJVbmtub3duIGVycm9yIil9Y29uc3R7aW1hZ2VEYXRhOmx9PXI7ci5pbWFnZURhdGE9bnVsbDtyZXR1cm4gbH1maW5hbGx5e2kmJnIuX2ZyZWUoaSl9fXN0YXRpYyBwYXJzZUltYWdlUHJvcGVydGllcyhlKXtsZXQgdD1lLmdldEJ5dGUoKTtmb3IoO3Q+PTA7KXtjb25zdCBhPXQ7dD1lLmdldEJ5dGUoKTtpZig2NTM2MT09PShhPDw4fHQpKXtlLnNraXAoNCk7Y29uc3QgdD1lLmdldEludDMyKCk+Pj4wLGE9ZS5nZXRJbnQzMigpPj4+MCxuPWUuZ2V0SW50MzIoKT4+PjAscz1lLmdldEludDMyKCk+Pj4wO2Uuc2tpcCgxNik7cmV0dXJue3dpZHRoOnQtbixoZWlnaHQ6YS1zLGJpdHNQZXJDb21wb25lbnQ6OCxjb21wb25lbnRzQ291bnQ6ZS5nZXRVaW50MTYoKX19fXRocm93IG5ldyBKcHhFcnJvcigiTm8gc2l6ZSBtYXJrZXIgZm91bmQgaW4gSlBYIHN0cmVhbSIpfX1jbGFzcyBKcHhTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0KXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10fWdldCBieXRlcygpe3JldHVybiBzaGFkb3codGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fWdldCBpc0FzeW5jRGVjb2Rlcigpe3JldHVybiEwfWFzeW5jIGRlY29kZUltYWdlKGUsdCxhKXtpZih0aGlzLmVvZilyZXR1cm4gdGhpcy5idWZmZXI7ZXx8PXRoaXMuYnl0ZXM7dGhpcy5idWZmZXI9YXdhaXQgSnB4SW1hZ2UuaW5zdGFuY2UuZGVjb2RlKGUsYSk7dGhpcy5idWZmZXJMZW5ndGg9dGhpcy5idWZmZXIubGVuZ3RoO3RoaXMuZW9mPSEwO3JldHVybiB0aGlzLmJ1ZmZlcn1nZXQgY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0uaXNBc3luY31nZXQgaXNJbWFnZVN0cmVhbSgpe3JldHVybiEwfX1jbGFzcyBMWldTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmNhY2hlZERhdGE9MDt0aGlzLmJpdHNDYWNoZWQ9MDtjb25zdCBuPTQwOTYscz17ZWFybHlDaGFuZ2U6YSxjb2RlTGVuZ3RoOjksbmV4dENvZGU6MjU4LGRpY3Rpb25hcnlWYWx1ZXM6bmV3IFVpbnQ4QXJyYXkobiksZGljdGlvbmFyeUxlbmd0aHM6bmV3IFVpbnQxNkFycmF5KG4pLmZpbGwoMSwwLDI1NiksZGljdGlvbmFyeVByZXZDb2RlczpuZXcgVWludDE2QXJyYXkobiksY3VycmVudFNlcXVlbmNlOm5ldyBVaW50OEFycmF5KG4pLGN1cnJlbnRTZXF1ZW5jZUxlbmd0aDowfTtmb3IobGV0IGU9MDtlPDI1NjsrK2Upcy5kaWN0aW9uYXJ5VmFsdWVzW2VdPWU7dGhpcy5sendTdGF0ZT1zfXJlYWRCaXRzKGUpe2xldCB0PXRoaXMuYml0c0NhY2hlZCxhPXRoaXMuY2FjaGVkRGF0YTtmb3IoO3Q8ZTspe2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2lmKC0xPT09ZSl7dGhpcy5lb2Y9ITA7cmV0dXJuIG51bGx9YT1hPDw4fGU7dCs9OH10aGlzLmJpdHNDYWNoZWQ9dC09ZTt0aGlzLmNhY2hlZERhdGE9YTtyZXR1cm4gYT4+PnQmKDE8PGUpLTF9cmVhZEJsb2NrKCl7bGV0IGUsdCxhLG49MTAyNDtjb25zdHtsendTdGF0ZTpzfT10aGlzLHI9cy5lYXJseUNoYW5nZTtsZXQgaT1zLm5leHRDb2RlO2NvbnN0IG89cy5kaWN0aW9uYXJ5VmFsdWVzLGw9cy5kaWN0aW9uYXJ5TGVuZ3RocyxmPXMuZGljdGlvbmFyeVByZXZDb2RlcztsZXQgYz1zLmNvZGVMZW5ndGgsaD1zLnByZXZDb2RlO2NvbnN0IHU9cy5jdXJyZW50U2VxdWVuY2U7bGV0IG09cy5jdXJyZW50U2VxdWVuY2VMZW5ndGgscD0wLGQ9dGhpcy5idWZmZXJMZW5ndGgsZz10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCtuKTtmb3IoZT0wO2U8NTEyO2UrKyl7Y29uc3QgZT10aGlzLnJlYWRCaXRzKGMpLHM9bT4wO2lmKGU8MjU2KXt1WzBdPWU7bT0xfWVsc2V7aWYoIShlPj0yNTgpKXtpZigyNTY9PT1lKXtjPTk7aT0yNTg7bT0wO2NvbnRpbnVlfXRoaXMuZW9mPSEwO2RlbGV0ZSB0aGlzLmx6d1N0YXRlO2JyZWFrfWlmKGU8aSl7bT1sW2VdO2Zvcih0PW0tMSxhPWU7dD49MDt0LS0pe3VbdF09b1thXTthPWZbYV19fWVsc2UgdVttKytdPXVbMF19aWYocyl7ZltpXT1oO2xbaV09bFtoXSsxO29baV09dVswXTtpKys7Yz1pK3ImaStyLTE/YzowfE1hdGgubWluKE1hdGgubG9nKGkrcikvLjY5MzE0NzE4MDU1OTk0NTMrMSwxMil9aD1lO3ArPW07aWYobjxwKXtkb3tuKz01MTJ9d2hpbGUobjxwKTtnPXRoaXMuZW5zdXJlQnVmZmVyKHRoaXMuYnVmZmVyTGVuZ3RoK24pfWZvcih0PTA7dDxtO3QrKylnW2QrK109dVt0XX1zLm5leHRDb2RlPWk7cy5jb2RlTGVuZ3RoPWM7cy5wcmV2Q29kZT1oO3MuY3VycmVudFNlcXVlbmNlTGVuZ3RoPW07dGhpcy5idWZmZXJMZW5ndGg9ZH19Y2xhc3MgUHJlZGljdG9yU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcih0KTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gZTtjb25zdCBuPXRoaXMucHJlZGljdG9yPWEuZ2V0KCJQcmVkaWN0b3IiKXx8MTtpZihuPD0xKXJldHVybiBlO2lmKDIhPT1uJiYobjwxMHx8bj4xNSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwcmVkaWN0b3I6ICR7bn1gKTt0aGlzLnJlYWRCbG9jaz0yPT09bj90aGlzLnJlYWRCbG9ja1RpZmY6dGhpcy5yZWFkQmxvY2tQbmc7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O2NvbnN0IHM9dGhpcy5jb2xvcnM9YS5nZXQoIkNvbG9ycyIpfHwxLHI9dGhpcy5iaXRzPWEuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iil8fDgsaT10aGlzLmNvbHVtbnM9YS5nZXQoIkNvbHVtbnMiKXx8MTt0aGlzLnBpeEJ5dGVzPXMqcis3Pj4zO3RoaXMucm93Qnl0ZXM9aSpzKnIrNz4+MztyZXR1cm4gdGhpc31yZWFkQmxvY2tUaWZmKCl7Y29uc3QgZT10aGlzLnJvd0J5dGVzLHQ9dGhpcy5idWZmZXJMZW5ndGgsYT10aGlzLmVuc3VyZUJ1ZmZlcih0K2UpLG49dGhpcy5iaXRzLHM9dGhpcy5jb2xvcnMscj10aGlzLnN0cmVhbS5nZXRCeXRlcyhlKTt0aGlzLmVvZj0hci5sZW5ndGg7aWYodGhpcy5lb2YpcmV0dXJuO2xldCBpLG89MCxsPTAsZj0wLGM9MCxoPXQ7aWYoMT09PW4mJjE9PT1zKWZvcihpPTA7aTxlOysraSl7bGV0IGU9cltpXV5vO2VePWU+PjE7ZV49ZT4+MjtlXj1lPj40O289KDEmZSk8PDc7YVtoKytdPWV9ZWxzZSBpZig4PT09bil7Zm9yKGk9MDtpPHM7KytpKWFbaCsrXT1yW2ldO2Zvcig7aTxlOysraSl7YVtoXT1hW2gtc10rcltpXTtoKyt9fWVsc2UgaWYoMTY9PT1uKXtjb25zdCB0PTIqcztmb3IoaT0wO2k8dDsrK2kpYVtoKytdPXJbaV07Zm9yKDtpPGU7aSs9Mil7Y29uc3QgZT0oKDI1NSZyW2ldKTw8OCkrKDI1NSZyW2krMV0pKygoMjU1JmFbaC10XSk8PDgpKygyNTUmYVtoLXQrMV0pO2FbaCsrXT1lPj44JjI1NTthW2grK109MjU1JmV9fWVsc2V7Y29uc3QgZT1uZXcgVWludDhBcnJheShzKzEpLGg9KDE8PG4pLTE7bGV0IHU9MCxtPXQ7Y29uc3QgcD10aGlzLmNvbHVtbnM7Zm9yKGk9MDtpPHA7KytpKWZvcihsZXQgdD0wO3Q8czsrK3Qpe2lmKGY8bil7bz1vPDw4fDI1NSZyW3UrK107Zis9OH1lW3RdPWVbdF0rKG8+PmYtbikmaDtmLT1uO2w9bDw8bnxlW3RdO2MrPW47aWYoYz49OCl7YVttKytdPWw+PmMtOCYyNTU7Yy09OH19Yz4wJiYoYVttKytdPShsPDw4LWMpKyhvJigxPDw4LWMpLTEpKX10aGlzLmJ1ZmZlckxlbmd0aCs9ZX1yZWFkQmxvY2tQbmcoKXtjb25zdCBlPXRoaXMucm93Qnl0ZXMsdD10aGlzLnBpeEJ5dGVzLGE9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpLG49dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoZSk7dGhpcy5lb2Y9IW4ubGVuZ3RoO2lmKHRoaXMuZW9mKXJldHVybjtjb25zdCBzPXRoaXMuYnVmZmVyTGVuZ3RoLHI9dGhpcy5lbnN1cmVCdWZmZXIocytlKTtsZXQgaT1yLnN1YmFycmF5KHMtZSxzKTswPT09aS5sZW5ndGgmJihpPW5ldyBVaW50OEFycmF5KGUpKTtsZXQgbyxsLGYsYz1zO3N3aXRjaChhKXtjYXNlIDA6Zm9yKG89MDtvPGU7KytvKXJbYysrXT1uW29dO2JyZWFrO2Nhc2UgMTpmb3Iobz0wO288dDsrK28pcltjKytdPW5bb107Zm9yKDtvPGU7KytvKXtyW2NdPXJbYy10XStuW29dJjI1NTtjKyt9YnJlYWs7Y2FzZSAyOmZvcihvPTA7bzxlOysrbylyW2MrK109aVtvXStuW29dJjI1NTticmVhaztjYXNlIDM6Zm9yKG89MDtvPHQ7KytvKXJbYysrXT0oaVtvXT4+MSkrbltvXTtmb3IoO288ZTsrK28pe3JbY109KGlbb10rcltjLXRdPj4xKStuW29dJjI1NTtjKyt9YnJlYWs7Y2FzZSA0OmZvcihvPTA7bzx0Oysrbyl7bD1pW29dO2Y9bltvXTtyW2MrK109bCtmfWZvcig7bzxlOysrbyl7bD1pW29dO2NvbnN0IGU9aVtvLXRdLGE9cltjLXRdLHM9YStsLWU7bGV0IGg9cy1hO2g8MCYmKGg9LWgpO2xldCB1PXMtbDt1PDAmJih1PS11KTtsZXQgbT1zLWU7bTwwJiYobT0tbSk7Zj1uW29dO3JbYysrXT1oPD11JiZoPD1tP2ErZjp1PD1tP2wrZjplK2Z9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVuc3VwcG9ydGVkIHByZWRpY3RvcjogJHthfWApfXRoaXMuYnVmZmVyTGVuZ3RoKz1lfX1jbGFzcyBSdW5MZW5ndGhTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0KXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3R9cmVhZEJsb2NrKCl7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRCeXRlcygyKTtpZihlLmxlbmd0aDwyfHwxMjg9PT1lWzBdKXt0aGlzLmVvZj0hMDtyZXR1cm59bGV0IHQsYT10aGlzLmJ1ZmZlckxlbmd0aCxuPWVbMF07aWYobjwxMjgpe3Q9dGhpcy5lbnN1cmVCdWZmZXIoYStuKzEpO3RbYSsrXT1lWzFdO2lmKG4+MCl7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRCeXRlcyhuKTt0LnNldChlLGEpO2ErPW59fWVsc2V7bj0yNTctbjt0PXRoaXMuZW5zdXJlQnVmZmVyKGErbisxKTt0LmZpbGwoZVsxXSxhLGErbik7YSs9bn10aGlzLmJ1ZmZlckxlbmd0aD1hfX1jbGFzcyBQYXJzZXJ7I2FlPW51bGw7I25lPTA7Y29uc3RydWN0b3Ioe2xleGVyOmUseHJlZjp0LGFsbG93U3RyZWFtczphPSExLHJlY292ZXJ5TW9kZTpuPSExfSl7dGhpcy5sZXhlcj1lO3RoaXMueHJlZj10O3RoaXMuYWxsb3dTdHJlYW1zPWE7dGhpcy5yZWNvdmVyeU1vZGU9bjt0aGlzLnJlZmlsbCgpfXJlZmlsbCgpe3RoaXMuYnVmMT10aGlzLmxleGVyLmdldE9iaigpO3RoaXMuYnVmMj10aGlzLmxleGVyLmdldE9iaigpfXNoaWZ0KCl7aWYodGhpcy5idWYyIGluc3RhbmNlb2YgQ21kJiYiSUQiPT09dGhpcy5idWYyLmNtZCl7dGhpcy5idWYxPXRoaXMuYnVmMjt0aGlzLmJ1ZjI9bnVsbH1lbHNle3RoaXMuYnVmMT10aGlzLmJ1ZjI7dGhpcy5idWYyPXRoaXMubGV4ZXIuZ2V0T2JqKCl9fXRyeVNoaWZ0KCl7dHJ5e3RoaXMuc2hpZnQoKTtyZXR1cm4hMH1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtyZXR1cm4hMX19Z2V0T2JqKGU9bnVsbCl7Y29uc3QgdD10aGlzLmJ1ZjE7dGhpcy5zaGlmdCgpO2lmKHQgaW5zdGFuY2VvZiBDbWQpc3dpdGNoKHQuY21kKXtjYXNlIkJJIjpyZXR1cm4gdGhpcy5tYWtlSW5saW5lSW1hZ2UoZSk7Y2FzZSJbIjpjb25zdCBhPVtdO2Zvcig7IWlzQ21kKHRoaXMuYnVmMSwiXSIpJiZ0aGlzLmJ1ZjEhPT1vYTspYS5wdXNoKHRoaXMuZ2V0T2JqKGUpKTtpZih0aGlzLmJ1ZjE9PT1vYSl7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIGE7dGhyb3cgbmV3IFBhcnNlckVPRkV4Y2VwdGlvbigiRW5kIG9mIGZpbGUgaW5zaWRlIGFycmF5LiIpfXRoaXMuc2hpZnQoKTtyZXR1cm4gYTtjYXNlIjw8Ijpjb25zdCBuPW5ldyBEaWN0KHRoaXMueHJlZik7Zm9yKDshaXNDbWQodGhpcy5idWYxLCI+PiIpJiZ0aGlzLmJ1ZjEhPT1vYTspe2lmKCEodGhpcy5idWYxIGluc3RhbmNlb2YgTmFtZSkpe2luZm8oIk1hbGZvcm1lZCBkaWN0aW9uYXJ5OiBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7dGhpcy5zaGlmdCgpO2NvbnRpbnVlfWNvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PW9hKWJyZWFrO24uc2V0KHQsdGhpcy5nZXRPYmooZSkpfWlmKHRoaXMuYnVmMT09PW9hKXtpZih0aGlzLnJlY292ZXJ5TW9kZSlyZXR1cm4gbjt0aHJvdyBuZXcgUGFyc2VyRU9GRXhjZXB0aW9uKCJFbmQgb2YgZmlsZSBpbnNpZGUgZGljdGlvbmFyeS4iKX1pZihpc0NtZCh0aGlzLmJ1ZjIsInN0cmVhbSIpKXJldHVybiB0aGlzLmFsbG93U3RyZWFtcz90aGlzLm1ha2VTdHJlYW0obixlKTpuO3RoaXMuc2hpZnQoKTtyZXR1cm4gbjtkZWZhdWx0OnJldHVybiB0fWlmKE51bWJlci5pc0ludGVnZXIodCkpe2lmKE51bWJlci5pc0ludGVnZXIodGhpcy5idWYxKSYmaXNDbWQodGhpcy5idWYyLCJSIikpe2NvbnN0IGU9UmVmLmdldCh0LHRoaXMuYnVmMSk7dGhpcy5zaGlmdCgpO3RoaXMuc2hpZnQoKTtyZXR1cm4gZX1yZXR1cm4gdH1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJmU/ZS5kZWNyeXB0U3RyaW5nKHQpOnR9ZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3R7a25vd25Db21tYW5kczp0fT10aGlzLmxleGVyLGE9ZS5wb3M7bGV0IG4scyxyPTA7Zm9yKDstMSE9PShuPWUuZ2V0Qnl0ZSgpKTspaWYoMD09PXIpcj02OT09PW4/MTowO2Vsc2UgaWYoMT09PXIpcj03Mz09PW4/MjowO2Vsc2UgaWYoMzI9PT1ufHwxMD09PW58fDEzPT09bil7cz1lLnBvcztjb25zdCBhPWUucGVla0J5dGVzKDE1KSxpPWEubGVuZ3RoO2lmKDA9PT1pKWJyZWFrO2ZvcihsZXQgZT0wO2U8aTtlKyspe249YVtlXTtpZigoMCE9PW58fDA9PT1hW2UrMV0pJiYoMTAhPT1uJiYxMyE9PW4mJihuPDMyfHxuPjEyNykpKXtyPTA7YnJlYWt9fWlmKDIhPT1yKWNvbnRpbnVlO2lmKCF0KXt3YXJuKCJmaW5kRGVmYXVsdElubGluZVN0cmVhbUVuZCAtIGBsZXhlci5rbm93bkNvbW1hbmRzYCBpcyB1bmRlZmluZWQuIik7Y29udGludWV9Y29uc3Qgbz1uZXcgTGV4ZXIobmV3IFN0cmVhbShlLnBlZWtCeXRlcyg3NSkpLHQpO28uX2hleFN0cmluZ1dhcm49KCk9Pnt9O2xldCBsPTA7Zm9yKDs7KXtjb25zdCBlPW8uZ2V0T2JqKCk7aWYoZT09PW9hKXtyPTA7YnJlYWt9aWYoZSBpbnN0YW5jZW9mIENtZCl7Y29uc3QgYT10W2UuY21kXTtpZighYSl7cj0wO2JyZWFrfWlmKGEudmFyaWFibGVBcmdzP2w8PWEubnVtQXJnczpsPT09YS5udW1BcmdzKWJyZWFrO2w9MDtjb250aW51ZX1sKyt9aWYoMj09PXIpYnJlYWt9ZWxzZSByPTA7aWYoLTE9PT1uKXt3YXJuKCJmaW5kRGVmYXVsdElubGluZVN0cmVhbUVuZDogUmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aG91dCBmaW5kaW5nIGEgdmFsaWQgRUkgbWFya2VyIik7aWYocyl7d2FybignLi4uIHRyeWluZyB0byByZWNvdmVyIGJ5IHVzaW5nIHRoZSBsYXN0ICJFSSIgb2NjdXJyZW5jZS4nKTtlLnNraXAoLShlLnBvcy1zKSl9fWxldCBpPTQ7ZS5za2lwKC1pKTtuPWUucGVla0J5dGUoKTtlLnNraXAoaSk7aXNXaGl0ZVNwYWNlKG4pfHxpLS07cmV0dXJuIGUucG9zLWktYX1maW5kRENURGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IGEsbixzPSExO2Zvcig7LTEhPT0oYT1lLmdldEJ5dGUoKSk7KWlmKDI1NT09PWEpe3N3aXRjaChlLmdldEJ5dGUoKSl7Y2FzZSAwOmJyZWFrO2Nhc2UgMjU1OmUuc2tpcCgtMSk7YnJlYWs7Y2FzZSAyMTc6cz0hMDticmVhaztjYXNlIDE5MjpjYXNlIDE5MzpjYXNlIDE5NDpjYXNlIDE5NTpjYXNlIDE5NzpjYXNlIDE5ODpjYXNlIDE5OTpjYXNlIDIwMTpjYXNlIDIwMjpjYXNlIDIwMzpjYXNlIDIwNTpjYXNlIDIwNjpjYXNlIDIwNzpjYXNlIDE5NjpjYXNlIDIwNDpjYXNlIDIxODpjYXNlIDIxOTpjYXNlIDIyMDpjYXNlIDIyMTpjYXNlIDIyMjpjYXNlIDIyMzpjYXNlIDIyNDpjYXNlIDIyNTpjYXNlIDIyNjpjYXNlIDIyNzpjYXNlIDIyODpjYXNlIDIyOTpjYXNlIDIzMDpjYXNlIDIzMTpjYXNlIDIzMjpjYXNlIDIzMzpjYXNlIDIzNDpjYXNlIDIzNTpjYXNlIDIzNjpjYXNlIDIzNzpjYXNlIDIzODpjYXNlIDIzOTpjYXNlIDI1NDpuPWUuZ2V0VWludDE2KCk7bj4yP2Uuc2tpcChuLTIpOmUuc2tpcCgtMil9aWYocylicmVha31jb25zdCByPWUucG9zLXQ7aWYoLTE9PT1hKXt3YXJuKCJJbmxpbmUgRENURGVjb2RlIGltYWdlIHN0cmVhbTogRU9JIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtcik7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIHJ9ZmluZEFTQ0lJODVEZWNvZGVJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3QgdD1lLnBvcztsZXQgYTtmb3IoOy0xIT09KGE9ZS5nZXRCeXRlKCkpOylpZigxMjY9PT1hKXtjb25zdCB0PWUucG9zO2E9ZS5wZWVrQnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKGEpOyl7ZS5za2lwKCk7YT1lLnBlZWtCeXRlKCl9aWYoNjI9PT1hKXtlLnNraXAoKTticmVha31pZihlLnBvcz50KXtjb25zdCB0PWUucGVla0J5dGVzKDIpO2lmKDY5PT09dFswXSYmNzM9PT10WzFdKWJyZWFrfX1jb25zdCBuPWUucG9zLXQ7aWYoLTE9PT1hKXt3YXJuKCJJbmxpbmUgQVNDSUk4NURlY29kZSBpbWFnZSBzdHJlYW06IEVPRCBtYXJrZXIgbm90IGZvdW5kLCBzZWFyY2hpbmcgZm9yIC9FSS8gaW5zdGVhZC4iKTtlLnNraXAoLW4pO3JldHVybiB0aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpfXRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKGUpO3JldHVybiBufWZpbmRBU0NJSUhleERlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCBhO2Zvcig7LTEhPT0oYT1lLmdldEJ5dGUoKSkmJjYyIT09YTspO2NvbnN0IG49ZS5wb3MtdDtpZigtMT09PWEpe3dhcm4oIklubGluZSBBU0NJSUhleERlY29kZSBpbWFnZSBzdHJlYW06IEVPRCBtYXJrZXIgbm90IGZvdW5kLCBzZWFyY2hpbmcgZm9yIC9FSS8gaW5zdGVhZC4iKTtlLnNraXAoLW4pO3JldHVybiB0aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpfXRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKGUpO3JldHVybiBufWlubGluZVN0cmVhbVNraXBFSShlKXtsZXQgdCxhPTA7Zm9yKDstMSE9PSh0PWUuZ2V0Qnl0ZSgpKTspaWYoMD09PWEpYT02OT09PXQ/MTowO2Vsc2UgaWYoMT09PWEpYT03Mz09PXQ/MjowO2Vsc2UgaWYoMj09PWEpYnJlYWt9bWFrZUlubGluZUltYWdlKGUpe2NvbnN0IHQ9dGhpcy5sZXhlcixhPXQuc3RyZWFtLG49bmV3IERpY3QodGhpcy54cmVmKTtsZXQgcztmb3IoOyFpc0NtZCh0aGlzLmJ1ZjEsIklEIikmJnRoaXMuYnVmMSE9PW9hOyl7aWYoISh0aGlzLmJ1ZjEgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkRpY3Rpb25hcnkga2V5IG11c3QgYmUgYSBuYW1lIG9iamVjdCIpO2NvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PW9hKWJyZWFrO24uc2V0KHQsdGhpcy5nZXRPYmooZSkpfS0xIT09dC5iZWdpbklubGluZUltYWdlUG9zJiYocz1hLnBvcy10LmJlZ2luSW5saW5lSW1hZ2VQb3MpO2NvbnN0IHI9bi5nZXQoIkYiLCJGaWx0ZXIiKTtsZXQgaTtpZihyIGluc3RhbmNlb2YgTmFtZSlpPXIubmFtZTtlbHNlIGlmKEFycmF5LmlzQXJyYXkocikpe2NvbnN0IGU9dGhpcy4jc2UoclswXSk7ZSBpbnN0YW5jZW9mIE5hbWUmJihpPWUubmFtZSl9Y29uc3Qgbz1hLnBvcztsZXQgbCxmO3N3aXRjaChpKXtjYXNlIkRDVCI6Y2FzZSJEQ1REZWNvZGUiOmw9dGhpcy5maW5kRENURGVjb2RlSW5saW5lU3RyZWFtRW5kKGEpO2JyZWFrO2Nhc2UiQTg1IjpjYXNlIkFTQ0lJODVEZWNvZGUiOmw9dGhpcy5maW5kQVNDSUk4NURlY29kZUlubGluZVN0cmVhbUVuZChhKTticmVhaztjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6bD10aGlzLmZpbmRBU0NJSUhleERlY29kZUlubGluZVN0cmVhbUVuZChhKTticmVhaztkZWZhdWx0Omw9dGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChhKX1pZihsPDFlMyYmcz4wKXtjb25zdCBlPWEucG9zO2EucG9zPXQuYmVnaW5JbmxpbmVJbWFnZVBvcztmPWZ1bmN0aW9uIGdldElubGluZUltYWdlQ2FjaGVLZXkoZSl7Y29uc3QgdD1bXSxhPWUubGVuZ3RoO2xldCBuPTA7Zm9yKDtuPGEtMTspdC5wdXNoKGVbbisrXTw8OHxlW24rK10pO248YSYmdC5wdXNoKGVbbl0pO3JldHVybiBhKyJfIitTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsdCl9KGEuZ2V0Qnl0ZXMocytsKSk7YS5wb3M9ZTtjb25zdCBuPXRoaXMuI2FlPy5nZXQoZik7aWYobil7dGhpcy5idWYyPUNtZC5nZXQoIkVJIik7dGhpcy5zaGlmdCgpO24ucmVzZXQoKTtyZXR1cm4gbn19bGV0IGM9YS5tYWtlU3ViU3RyZWFtKG8sbCxuKTtlJiYhdGhpcy4jcmUocikmJihjPWUuY3JlYXRlU3RyZWFtKGMsbCkpO2M9dGhpcy5maWx0ZXIoYyxuLGwsZSk7Yy5kaWN0PW47aWYoZil7Yy5jYWNoZUtleT0iaW5saW5lX2ltZ18iKyArK3RoaXMuI25lOyh0aGlzLiNhZT8/PW5ldyBNYXApLnNldChmLGMpfXRoaXMuYnVmMj1DbWQuZ2V0KCJFSSIpO3RoaXMuc2hpZnQoKTtyZXR1cm4gY30jc2UoZSl7cmV0dXJuIHRoaXMueHJlZj90aGlzLnhyZWYuZmV0Y2hJZlJlZihlKTplfSNyZShlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLnNvbWUoZT0+aXNOYW1lKHRoaXMuI3NlKGUpLCJDcnlwdCIpKTppc05hbWUoZSwiQ3J5cHQiKX0jaWUoZSl7Y29uc3R7c3RyZWFtOnR9PXRoaXMubGV4ZXI7dC5wb3M9ZTtjb25zdCBhPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMF0pLG49YS5sZW5ndGgscz1bbmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsMTE0LDEwMSw5NywxMDldKSxuZXcgVWludDhBcnJheShbMTE1LDExNiwxMDEsOTcsMTA5XSksbmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsMTE0LDEwMSw5N10pXSxyPTktbjtmb3IoO3QucG9zPHQuZW5kOyl7Y29uc3QgaT10LnBlZWtCeXRlcygyMDQ4KSxvPWkubGVuZ3RoLTk7aWYobzw9MClicmVhaztsZXQgbD0wO2Zvcig7bDxvOyl7bGV0IG89MDtmb3IoO288biYmaVtsK29dPT09YVtvXTspbysrO2lmKG8+PW4pe2xldCBuPSExO2Zvcihjb25zdCBlIG9mIHMpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IHM9MDtmb3IoO3M8dCYmaVtsK28rc109PT1lW3NdOylzKys7aWYocz49cil7bj0hMDticmVha31pZihzPj10KXtpZihpc1doaXRlU3BhY2UoaVtsK28rc10pKXtpbmZvKGBGb3VuZCAiJHtieXRlc1RvU3RyaW5nKFsuLi5hLC4uLmVdKX0iIHdoZW4gc2VhcmNoaW5nIGZvciBlbmRzdHJlYW0gY29tbWFuZC5gKTtuPSEwfWJyZWFrfX1pZihuKXt0LnBvcys9bDtyZXR1cm4gdC5wb3MtZX19bCsrfXQucG9zKz1vfXJldHVybi0xfW1ha2VTdHJlYW0oZSx0KXtjb25zdCBhPXRoaXMubGV4ZXI7bGV0IG49YS5zdHJlYW07YS5za2lwVG9OZXh0TGluZSgpO2NvbnN0IHM9bi5wb3MtMTtsZXQgcj1lLmdldCgiTGVuZ3RoIik7aWYoIU51bWJlci5pc0ludGVnZXIocikpe2luZm8oYEJhZCBsZW5ndGggIiR7ciYmci50b1N0cmluZygpfSIgaW4gc3RyZWFtLmApO3I9MH1uLnBvcz1zK3I7YS5uZXh0Q2hhcigpO2lmKHRoaXMudHJ5U2hpZnQoKSYmaXNDbWQodGhpcy5idWYyLCJlbmRzdHJlYW0iKSl0aGlzLnNoaWZ0KCk7ZWxzZXtyPXRoaXMuI2llKHMpO2lmKHI8MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1pc3NpbmcgZW5kc3RyZWFtIGNvbW1hbmQuIik7YS5uZXh0Q2hhcigpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCl9dGhpcy5zaGlmdCgpO249bi5tYWtlU3ViU3RyZWFtKHMscixlKTtjb25zdCBpPWUuZ2V0KCJGIiwiRmlsdGVyIik7dCYmIXRoaXMuI3JlKGkpJiYobj10LmNyZWF0ZVN0cmVhbShuLHIpKTtuPXRoaXMuZmlsdGVyKG4sZSxyLHQpO24uZGljdD1lO3JldHVybiBufWZpbHRlcihlLHQsYSxuPW51bGwpe2xldCBzPXQuZ2V0KCJGIiwiRmlsdGVyIikscj10LmdldCgiRFAiLCJEZWNvZGVQYXJtcyIpO2lmKHMgaW5zdGFuY2VvZiBOYW1lKXtBcnJheS5pc0FycmF5KHIpJiZ3YXJuKCIvRGVjb2RlUGFybXMgc2hvdWxkIG5vdCBiZSBhbiBBcnJheSwgd2hlbiAvRmlsdGVyIGlzIGEgTmFtZS4iKTtyZXR1cm4gdGhpcy5tYWtlRmlsdGVyKGUscy5uYW1lLGEscixuKX1sZXQgaT1hO2lmKEFycmF5LmlzQXJyYXkocykpe2NvbnN0IHQ9cyxhPXI7Zm9yKGxldCBvPTAsbD10Lmxlbmd0aDtvPGw7KytvKXtzPXRoaXMuI3NlKHRbb10pO2lmKCEocyBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQmFkIGZpbHRlciBuYW1lICIke3N9ImApO3I9bnVsbDtBcnJheS5pc0FycmF5KGEpJiZvIGluIGEmJihyPXRoaXMuI3NlKGFbb10pKTtlPXRoaXMubWFrZUZpbHRlcihlLHMubmFtZSxpLHIsbik7aT1udWxsfX1yZXR1cm4gZX1tYWtlRmlsdGVyKGUsdCxhLG4scz1udWxsKXtpZigwPT09YSl7d2FybihgRW1wdHkgIiR7dH0iIHN0cmVhbS5gKTtyZXR1cm4gbmV3IE51bGxTdHJlYW19dHJ5e3N3aXRjaCh0KXtjYXNlIkZsIjpjYXNlIkZsYXRlRGVjb2RlIjpyZXR1cm4gbj9uZXcgUHJlZGljdG9yU3RyZWFtKG5ldyBGbGF0ZVN0cmVhbShlLGEpLGEsbik6bmV3IEZsYXRlU3RyZWFtKGUsYSk7Y2FzZSJMWlciOmNhc2UiTFpXRGVjb2RlIjpsZXQgdD0xO2lmKG4pe24uaGFzKCJFYXJseUNoYW5nZSIpJiYodD1uLmdldCgiRWFybHlDaGFuZ2UiKSk7cmV0dXJuIG5ldyBQcmVkaWN0b3JTdHJlYW0obmV3IExaV1N0cmVhbShlLGEsdCksYSxuKX1yZXR1cm4gbmV3IExaV1N0cmVhbShlLGEsdCk7Y2FzZSJEQ1QiOmNhc2UiRENURGVjb2RlIjpyZXR1cm4gbmV3IEpwZWdTdHJlYW0oZSxhLG4pO2Nhc2UiSlBYIjpjYXNlIkpQWERlY29kZSI6cmV0dXJuIG5ldyBKcHhTdHJlYW0oZSxhKTtjYXNlIkE4NSI6Y2FzZSJBU0NJSTg1RGVjb2RlIjpyZXR1cm4gbmV3IEFzY2lpODVTdHJlYW0oZSxhKTtjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6cmV0dXJuIG5ldyBBc2NpaUhleFN0cmVhbShlLGEpO2Nhc2UiQ0NGIjpjYXNlIkNDSVRURmF4RGVjb2RlIjpyZXR1cm4gbmV3IENDSVRURmF4U3RyZWFtKGUsYSxuKTtjYXNlIlJMIjpjYXNlIlJ1bkxlbmd0aERlY29kZSI6cmV0dXJuIG5ldyBSdW5MZW5ndGhTdHJlYW0oZSxhKTtjYXNlIkpCSUcyRGVjb2RlIjpyZXR1cm4gbmV3IEpiaWcyU3RyZWFtKGUsYSxuKTtjYXNlIkJyb3RsaURlY29kZSI6cmV0dXJuIG5ldyBCcm90bGlTdHJlYW0oZSxhKTtjYXNlIkNyeXB0Ijp7aWYoIXMpe3dhcm4oJ0ZpbHRlciAiQ3J5cHQiIGlzIG1pc3NpbmcgYSBjaXBoZXIgdHJhbnNmb3JtLicpO3JldHVybiBlfWNvbnN0IHQ9biBpbnN0YW5jZW9mIERpY3Q/bi5nZXQoIk5hbWUiKTpudWxsLHI9dCBpbnN0YW5jZW9mIE5hbWU/dDpOYW1lLmdldCgiSWRlbnRpdHkiKTtyZXR1cm4gcy5jcmVhdGVTdHJlYW0oZSxhLHIpfX13YXJuKGBGaWx0ZXIgIiR7dH0iIGlzIG5vdCBzdXBwb3J0ZWQuYCk7cmV0dXJuIGV9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgSW52YWxpZCBzdHJlYW06ICIke2V9ImApO3JldHVybiBuZXcgTnVsbFN0cmVhbX19fWNvbnN0IGxuPVsxLDAsMCwwLDAsMCwwLDAsMCwxLDEsMCwxLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDIsMCwwLDIsMiwwLDAsMCwwLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXTtmdW5jdGlvbiB0b0hleERpZ2l0KGUpe3JldHVybiBlPj00OCYmZTw9NTc/MTUmZTplPj02NSYmZTw9NzB8fGU+PTk3JiZlPD0xMDI/OSsoMTUmZSk6LTF9Y2xhc3MgTGV4ZXJ7Y29uc3RydWN0b3IoZSx0PW51bGwpe3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpO3RoaXMuc3RyQnVmPVtdO3RoaXMua25vd25Db21tYW5kcz10O3RoaXMuX2hleFN0cmluZ051bVdhcm49MDt0aGlzLmJlZ2luSW5saW5lSW1hZ2VQb3M9LTF9bmV4dENoYXIoKXtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9cGVla0NoYXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0ucGVla0J5dGUoKX1nZXROdW1iZXIoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyLHQ9MCxhPTE7aWYoNDU9PT1lKXthPS0xO2U9dGhpcy5uZXh0Q2hhcigpOzQ1PT09ZSYmKGU9dGhpcy5uZXh0Q2hhcigpKX1lbHNlIDQzPT09ZSYmKGU9dGhpcy5uZXh0Q2hhcigpKTtpZigxMD09PWV8fDEzPT09ZSlkb3tlPXRoaXMubmV4dENoYXIoKX13aGlsZSgxMD09PWV8fDEzPT09ZSk7aWYoNDY9PT1lKXt0PTEwO2U9dGhpcy5uZXh0Q2hhcigpfWlmKGU8NDh8fGU+NTcpe2NvbnN0IHQ9YEludmFsaWQgbnVtYmVyOiAke1N0cmluZy5mcm9tQ2hhckNvZGUoZSl9IChjaGFyQ29kZSAke2V9KWA7aWYoaXNXaGl0ZVNwYWNlKGUpfHw0MD09PWV8fDYwPT09ZXx8LTE9PT1lKXtpbmZvKGBMZXhlci5nZXROdW1iZXIgLSAiJHt0fSIuYCk7cmV0dXJuIDB9dGhyb3cgbmV3IEZvcm1hdEVycm9yKHQpfWxldCBuPWUtNDg7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wOylpZihlPj00OCYmZTw9NTcpezAhPT10JiYodCo9MTApO249MTAqbisoZS00OCl9ZWxzZSBpZig0Nj09PWUpe2lmKDAhPT10KWJyZWFrO3Q9MX1lbHNle2lmKDQ1IT09ZSlicmVhazt3YXJuKCJCYWRseSBmb3JtYXR0ZWQgbnVtYmVyOiBtaW51cyBzaWduIGluIHRoZSBtaWRkbGUiKX0wIT09dCYmKG4vPXQpO3JldHVybiBhKm59Z2V0U3RyaW5nKCl7bGV0IGU9MSx0PSExO2NvbnN0IGE9dGhpcy5zdHJCdWY7YS5sZW5ndGg9MDtsZXQgbj10aGlzLm5leHRDaGFyKCk7Zm9yKDs7KXtsZXQgcz0hMTtzd2l0Y2goMHxuKXtjYXNlLTE6d2FybigiVW50ZXJtaW5hdGVkIHN0cmluZyIpO3Q9ITA7YnJlYWs7Y2FzZSA0MDorK2U7YS5wdXNoKCIoIik7YnJlYWs7Y2FzZSA0MTppZigwPT09LS1lKXt0aGlzLm5leHRDaGFyKCk7dD0hMH1lbHNlIGEucHVzaCgiKSIpO2JyZWFrO2Nhc2UgOTI6bj10aGlzLm5leHRDaGFyKCk7c3dpdGNoKG4pe2Nhc2UtMTp3YXJuKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIik7dD0hMDticmVhaztjYXNlIDExMDphLnB1c2goIlxuIik7YnJlYWs7Y2FzZSAxMTQ6YS5wdXNoKCJcciIpO2JyZWFrO2Nhc2UgMTE2OmEucHVzaCgiXHQiKTticmVhaztjYXNlIDk4OmEucHVzaCgiXGIiKTticmVhaztjYXNlIDEwMjphLnB1c2goIlxmIik7YnJlYWs7Y2FzZSA5MjpjYXNlIDQwOmNhc2UgNDE6YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobikpO2JyZWFrO2Nhc2UgNDg6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpsZXQgZT0xNSZuO249dGhpcy5uZXh0Q2hhcigpO3M9ITA7aWYobj49NDgmJm48PTU1KXtlPShlPDwzKSsoMTUmbik7bj10aGlzLm5leHRDaGFyKCk7aWYobj49NDgmJm48PTU1KXtzPSExO2U9KGU8PDMpKygxNSZuKX19YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO2JyZWFrO2Nhc2UgMTM6MTA9PT10aGlzLnBlZWtDaGFyKCkmJnRoaXMubmV4dENoYXIoKTticmVhaztjYXNlIDEwOmJyZWFrO2RlZmF1bHQ6YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobikpfWJyZWFrO2RlZmF1bHQ6YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobikpfWlmKHQpYnJlYWs7c3x8KG49dGhpcy5uZXh0Q2hhcigpKX1yZXR1cm4gYS5qb2luKCIiKX1nZXROYW1lKCl7bGV0IGUsdDtjb25zdCBhPXRoaXMuc3RyQnVmO2EubGVuZ3RoPTA7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYhbG5bZV07KWlmKDM1PT09ZSl7ZT10aGlzLm5leHRDaGFyKCk7aWYobG5bZV0pe3dhcm4oIkxleGVyX2dldE5hbWU6IE5VTUJFUiBTSUdOICgjKSBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSBoZXhhZGVjaW1hbCBudW1iZXIuIik7YS5wdXNoKCIjIik7YnJlYWt9Y29uc3Qgbj10b0hleERpZ2l0KGUpO2lmKC0xIT09bil7dD1lO2U9dGhpcy5uZXh0Q2hhcigpO2NvbnN0IHM9dG9IZXhEaWdpdChlKTtpZigtMT09PXMpe3dhcm4oYExleGVyX2dldE5hbWU6IElsbGVnYWwgZGlnaXQgKCR7U3RyaW5nLmZyb21DaGFyQ29kZShlKX0pIGluIGhleGFkZWNpbWFsIG51bWJlci5gKTthLnB1c2goIiMiLFN0cmluZy5mcm9tQ2hhckNvZGUodCkpO2lmKGxuW2VdKWJyZWFrO2EucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb250aW51ZX1hLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuPDw0fHMpKX1lbHNlIGEucHVzaCgiIyIsU3RyaW5nLmZyb21DaGFyQ29kZShlKSl9ZWxzZSBhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7YS5sZW5ndGg+MTI3JiZ3YXJuKGBOYW1lIHRva2VuIGlzIGxvbmdlciB0aGFuIGFsbG93ZWQgYnkgdGhlIHNwZWM6ICR7YS5sZW5ndGh9YCk7cmV0dXJuIE5hbWUuZ2V0KGEuam9pbigiIikpfV9oZXhTdHJpbmdXYXJuKGUpezUhPT10aGlzLl9oZXhTdHJpbmdOdW1XYXJuKys/dGhpcy5faGV4U3RyaW5nTnVtV2Fybj41fHx3YXJuKGBnZXRIZXhTdHJpbmcgLSBpZ25vcmluZyBpbnZhbGlkIGNoYXJhY3RlcjogJHtlfWApOndhcm4oImdldEhleFN0cmluZyAtIGlnbm9yaW5nIGFkZGl0aW9uYWwgaW52YWxpZCBjaGFyYWN0ZXJzLiIpfWdldEhleFN0cmluZygpe2NvbnN0IGU9dGhpcy5zdHJCdWY7ZS5sZW5ndGg9MDtsZXQgdD10aGlzLmN1cnJlbnRDaGFyLGE9LTEsbj0tMTt0aGlzLl9oZXhTdHJpbmdOdW1XYXJuPTA7Zm9yKDs7KXtpZih0PDApe3dhcm4oIlVudGVybWluYXRlZCBoZXggc3RyaW5nIik7YnJlYWt9aWYoNjI9PT10KXt0aGlzLm5leHRDaGFyKCk7YnJlYWt9aWYoMSE9PWxuW3RdKXtuPXRvSGV4RGlnaXQodCk7aWYoLTE9PT1uKXRoaXMuX2hleFN0cmluZ1dhcm4odCk7ZWxzZSBpZigtMT09PWEpYT1uO2Vsc2V7ZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYTw8NHxuKSk7YT0tMX10PXRoaXMubmV4dENoYXIoKX1lbHNlIHQ9dGhpcy5uZXh0Q2hhcigpfS0xIT09YSYmZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYTw8NCkpO3JldHVybiBlLmpvaW4oIiIpfWdldE9iaigpe2xldCBlPSExLHQ9dGhpcy5jdXJyZW50Q2hhcjtmb3IoOzspe2lmKHQ8MClyZXR1cm4gb2E7aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZigxIT09bG5bdF0pYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9c3dpdGNoKDB8dCl7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gdGhpcy5nZXROdW1iZXIoKTtjYXNlIDQwOnJldHVybiB0aGlzLmdldFN0cmluZygpO2Nhc2UgNDc6cmV0dXJuIHRoaXMuZ2V0TmFtZSgpO2Nhc2UgOTE6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCJbIik7Y2FzZSA5Mzp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIl0iKTtjYXNlIDYwOnQ9dGhpcy5uZXh0Q2hhcigpO2lmKDYwPT09dCl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCI8PCIpfXJldHVybiB0aGlzLmdldEhleFN0cmluZygpO2Nhc2UgNjI6dD10aGlzLm5leHRDaGFyKCk7aWYoNjI9PT10KXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIj4+Iil9cmV0dXJuIENtZC5nZXQoIj4iKTtjYXNlIDEyMzp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoInsiKTtjYXNlIDEyNTp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIn0iKTtjYXNlIDQxOnRoaXMubmV4dENoYXIoKTt0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYElsbGVnYWwgY2hhcmFjdGVyOiAke3R9YCl9bGV0IGE9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTtpZih0PDMyfHx0PjEyNyl7Y29uc3QgZT10aGlzLnBlZWtDaGFyKCk7aWYoZT49MzImJmU8PTEyNyl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KGEpfX1jb25zdCBuPXRoaXMua25vd25Db21tYW5kcztsZXQgcz12b2lkIDAhPT1uPy5bYV07Zm9yKDsodD10aGlzLm5leHRDaGFyKCkpPj0wJiYhbG5bdF07KXtjb25zdCBlPWErU3RyaW5nLmZyb21DaGFyQ29kZSh0KTtpZihzJiZ2b2lkIDA9PT1uW2VdKWJyZWFrO2lmKDEyOD09PWEubGVuZ3RoKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQ29tbWFuZCB0b2tlbiB0b28gbG9uZzogJHthLmxlbmd0aH1gKTthPWU7cz12b2lkIDAhPT1uPy5bYV19aWYoInRydWUiPT09YSlyZXR1cm4hMDtpZigiZmFsc2UiPT09YSlyZXR1cm4hMTtpZigibnVsbCI9PT1hKXJldHVybiBudWxsOyJCSSI9PT1hJiYodGhpcy5iZWdpbklubGluZUltYWdlUG9zPXRoaXMuc3RyZWFtLnBvcyk7cmV0dXJuIENtZC5nZXQoYSl9c2tpcFRvTmV4dExpbmUoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyO2Zvcig7ZT49MDspe2lmKDEzPT09ZSl7ZT10aGlzLm5leHRDaGFyKCk7MTA9PT1lJiZ0aGlzLm5leHRDaGFyKCk7YnJlYWt9aWYoMTA9PT1lKXt0aGlzLm5leHRDaGFyKCk7YnJlYWt9ZT10aGlzLm5leHRDaGFyKCl9fX1jbGFzcyBMaW5lYXJpemF0aW9ue3N0YXRpYyBjcmVhdGUoZSl7ZnVuY3Rpb24gZ2V0SW50KGUsdCxhPSExKXtjb25zdCBuPWUuZ2V0KHQpO2lmKE51bWJlci5pc0ludGVnZXIobikmJihhP24+PTA6bj4wKSlyZXR1cm4gbjt0aHJvdyBuZXcgRXJyb3IoYFRoZSAiJHt0fSIgcGFyYW1ldGVyIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC5gKX1jb25zdCB0PW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihlKSx4cmVmOm51bGx9KSxhPXQuZ2V0T2JqKCksbj10LmdldE9iaigpLHM9dC5nZXRPYmooKSxyPXQuZ2V0T2JqKCk7bGV0IGksbztpZighKE51bWJlci5pc0ludGVnZXIoYSkmJk51bWJlci5pc0ludGVnZXIobikmJmlzQ21kKHMsIm9iaiIpJiZyIGluc3RhbmNlb2YgRGljdCYmIm51bWJlciI9PXR5cGVvZihpPXIuZ2V0KCJMaW5lYXJpemVkIikpJiZpPjApKXJldHVybiBudWxsO2lmKChvPWdldEludChyLCJMIikpIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCdUaGUgIkwiIHBhcmFtZXRlciBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGRvZXMgbm90IGVxdWFsIHRoZSBzdHJlYW0gbGVuZ3RoLicpO3JldHVybntsZW5ndGg6byxoaW50czpmdW5jdGlvbiBnZXRIaW50cyhlKXtjb25zdCB0PWUuZ2V0KCJIIik7bGV0IGE7aWYoQXJyYXkuaXNBcnJheSh0KSYmKDI9PT0oYT10Lmxlbmd0aCl8fDQ9PT1hKSl7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7Y29uc3QgYT10W2VdO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihhKSYmYT4wKSl0aHJvdyBuZXcgRXJyb3IoYEhpbnQgKCR7ZX0pIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC5gKX1yZXR1cm4gdH10aHJvdyBuZXcgRXJyb3IoIkhpbnQgYXJyYXkgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLiIpfShyKSxvYmplY3ROdW1iZXJGaXJzdDpnZXRJbnQociwiTyIpLGVuZEZpcnN0OmdldEludChyLCJFIiksbnVtUGFnZXM6Z2V0SW50KHIsIk4iKSxtYWluWFJlZkVudHJpZXNPZmZzZXQ6Z2V0SW50KHIsIlQiKSxwYWdlRmlyc3Q6ci5oYXMoIlAiKT9nZXRJbnQociwiUCIsITApOjB9fX1jb25zdCBmbj1uZXcgU2V0KFsiQWRvYmUtR0IxLVVDUzIiLCJBZG9iZS1DTlMxLVVDUzIiLCJBZG9iZS1KYXBhbjEtVUNTMiIsIkFkb2JlLUtvcmVhMS1VQ1MyIiwiNzgtRVVDLUgiLCI3OC1FVUMtViIsIjc4LUgiLCI3OC1SS1NKLUgiLCI3OC1SS1NKLVYiLCI3OC1WIiwiNzhtcy1SS1NKLUgiLCI3OG1zLVJLU0otViIsIjgzcHYtUktTSi1IIiwiOTBtcy1SS1NKLUgiLCI5MG1zLVJLU0otViIsIjkwbXNwLVJLU0otSCIsIjkwbXNwLVJLU0otViIsIjkwcHYtUktTSi1IIiwiOTBwdi1SS1NKLVYiLCJBZGQtSCIsIkFkZC1SS1NKLUgiLCJBZGQtUktTSi1WIiwiQWRkLVYiLCJBZG9iZS1DTlMxLTAiLCJBZG9iZS1DTlMxLTEiLCJBZG9iZS1DTlMxLTIiLCJBZG9iZS1DTlMxLTMiLCJBZG9iZS1DTlMxLTQiLCJBZG9iZS1DTlMxLTUiLCJBZG9iZS1DTlMxLTYiLCJBZG9iZS1HQjEtMCIsIkFkb2JlLUdCMS0xIiwiQWRvYmUtR0IxLTIiLCJBZG9iZS1HQjEtMyIsIkFkb2JlLUdCMS00IiwiQWRvYmUtR0IxLTUiLCJBZG9iZS1KYXBhbjEtMCIsIkFkb2JlLUphcGFuMS0xIiwiQWRvYmUtSmFwYW4xLTIiLCJBZG9iZS1KYXBhbjEtMyIsIkFkb2JlLUphcGFuMS00IiwiQWRvYmUtSmFwYW4xLTUiLCJBZG9iZS1KYXBhbjEtNiIsIkFkb2JlLUtvcmVhMS0wIiwiQWRvYmUtS29yZWExLTEiLCJBZG9iZS1Lb3JlYTEtMiIsIkI1LUgiLCJCNS1WIiwiQjVwYy1IIiwiQjVwYy1WIiwiQ05TLUVVQy1IIiwiQ05TLUVVQy1WIiwiQ05TMS1IIiwiQ05TMS1WIiwiQ05TMi1IIiwiQ05TMi1WIiwiRVRISy1CNS1IIiwiRVRISy1CNS1WIiwiRVRlbi1CNS1IIiwiRVRlbi1CNS1WIiwiRVRlbm1zLUI1LUgiLCJFVGVubXMtQjUtViIsIkVVQy1IIiwiRVVDLVYiLCJFeHQtSCIsIkV4dC1SS1NKLUgiLCJFeHQtUktTSi1WIiwiRXh0LVYiLCJHQi1FVUMtSCIsIkdCLUVVQy1WIiwiR0ItSCIsIkdCLVYiLCJHQkstRVVDLUgiLCJHQkstRVVDLVYiLCJHQksySy1IIiwiR0JLMkstViIsIkdCS3AtRVVDLUgiLCJHQktwLUVVQy1WIiwiR0JULUVVQy1IIiwiR0JULUVVQy1WIiwiR0JULUgiLCJHQlQtViIsIkdCVHBjLUVVQy1IIiwiR0JUcGMtRVVDLVYiLCJHQnBjLUVVQy1IIiwiR0JwYy1FVUMtViIsIkgiLCJIS2RsYS1CNS1IIiwiSEtkbGEtQjUtViIsIkhLZGxiLUI1LUgiLCJIS2RsYi1CNS1WIiwiSEtnY2NzLUI1LUgiLCJIS2djY3MtQjUtViIsIkhLbTMxNC1CNS1IIiwiSEttMzE0LUI1LVYiLCJIS200NzEtQjUtSCIsIkhLbTQ3MS1CNS1WIiwiSEtzY3MtQjUtSCIsIkhLc2NzLUI1LVYiLCJIYW5rYWt1IiwiSGlyYWdhbmEiLCJLU0MtRVVDLUgiLCJLU0MtRVVDLVYiLCJLU0MtSCIsIktTQy1Kb2hhYi1IIiwiS1NDLUpvaGFiLVYiLCJLU0MtViIsIktTQ21zLVVIQy1IIiwiS1NDbXMtVUhDLUhXLUgiLCJLU0Ntcy1VSEMtSFctViIsIktTQ21zLVVIQy1WIiwiS1NDcGMtRVVDLUgiLCJLU0NwYy1FVUMtViIsIkthdGFrYW5hIiwiTldQLUgiLCJOV1AtViIsIlJLU0otSCIsIlJLU0otViIsIlJvbWFuIiwiVW5pQ05TLVVDUzItSCIsIlVuaUNOUy1VQ1MyLVYiLCJVbmlDTlMtVVRGMTYtSCIsIlVuaUNOUy1VVEYxNi1WIiwiVW5pQ05TLVVURjMyLUgiLCJVbmlDTlMtVVRGMzItViIsIlVuaUNOUy1VVEY4LUgiLCJVbmlDTlMtVVRGOC1WIiwiVW5pR0ItVUNTMi1IIiwiVW5pR0ItVUNTMi1WIiwiVW5pR0ItVVRGMTYtSCIsIlVuaUdCLVVURjE2LVYiLCJVbmlHQi1VVEYzMi1IIiwiVW5pR0ItVVRGMzItViIsIlVuaUdCLVVURjgtSCIsIlVuaUdCLVVURjgtViIsIlVuaUpJUy1VQ1MyLUgiLCJVbmlKSVMtVUNTMi1IVy1IIiwiVW5pSklTLVVDUzItSFctViIsIlVuaUpJUy1VQ1MyLVYiLCJVbmlKSVMtVVRGMTYtSCIsIlVuaUpJUy1VVEYxNi1WIiwiVW5pSklTLVVURjMyLUgiLCJVbmlKSVMtVVRGMzItViIsIlVuaUpJUy1VVEY4LUgiLCJVbmlKSVMtVVRGOC1WIiwiVW5pSklTMjAwNC1VVEYxNi1IIiwiVW5pSklTMjAwNC1VVEYxNi1WIiwiVW5pSklTMjAwNC1VVEYzMi1IIiwiVW5pSklTMjAwNC1VVEYzMi1WIiwiVW5pSklTMjAwNC1VVEY4LUgiLCJVbmlKSVMyMDA0LVVURjgtViIsIlVuaUpJU1Byby1VQ1MyLUhXLVYiLCJVbmlKSVNQcm8tVUNTMi1WIiwiVW5pSklTUHJvLVVURjgtViIsIlVuaUpJU1gwMjEzLVVURjMyLUgiLCJVbmlKSVNYMDIxMy1VVEYzMi1WIiwiVW5pSklTWDAyMTMyMDA0LVVURjMyLUgiLCJVbmlKSVNYMDIxMzIwMDQtVVRGMzItViIsIlVuaUtTLVVDUzItSCIsIlVuaUtTLVVDUzItViIsIlVuaUtTLVVURjE2LUgiLCJVbmlLUy1VVEYxNi1WIiwiVW5pS1MtVVRGMzItSCIsIlVuaUtTLVVURjMyLVYiLCJVbmlLUy1VVEY4LUgiLCJVbmlLUy1VVEY4LVYiLCJWIiwiV1AtU3ltYm9sIl0pO2NsYXNzIENNYXB7I2E9bmV3IE1hcDsjb2U9MDtjb25zdHJ1Y3RvcihlPSExKXt0aGlzLmNvZGVzcGFjZVJhbmdlcz1bW10sW10sW10sW11dO3RoaXMubnVtQ29kZXNwYWNlUmFuZ2VzPTA7dGhpcy5uYW1lPSIiO3RoaXMudmVydGljYWw9ITE7dGhpcy51c2VDTWFwPW51bGw7dGhpcy5idWlsdEluQ01hcD1lfWFkZENvZGVzcGFjZVJhbmdlKGUsdCxhKXt0aGlzLmNvZGVzcGFjZVJhbmdlc1tlLTFdLnB1c2godCxhKTt0aGlzLm51bUNvZGVzcGFjZVJhbmdlcysrfSNsZShlLHQpe2lmKCEoZTw9MCkpe2lmKHRoaXMuI29lK2U+MTY3NzcyMTUpdGhyb3cgbmV3IEVycm9yKGAke3R9IC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLmApO3RoaXMuI29lKz1lfX1tYXBDaWRSYW5nZShlLHQsYSl7dGhpcy4jbGUodC1lKzEsIm1hcENpZFJhbmdlIik7Zm9yKDtlPD10Oyl0aGlzLiNhLnNldChlKyssYSsrKX1tYXBCZlJhbmdlKGUsdCxhKXt0aGlzLiNsZSh0LWUrMSwibWFwQmZSYW5nZSIpO2NvbnN0IG49YS5sZW5ndGgtMTtmb3IoO2U8PXQ7KXt0aGlzLiNhLnNldChlKyssYSk7Y29uc3QgdD1hLmNoYXJDb2RlQXQobikrMTt0PjI1NT9hPWEuc3Vic3RyaW5nKDAsbi0xKStTdHJpbmcuZnJvbUNoYXJDb2RlKGEuY2hhckNvZGVBdChuLTEpKzEpKyJcMCI6YT1hLnN1YnN0cmluZygwLG4pK1N0cmluZy5mcm9tQ2hhckNvZGUodCl9fW1hcEJmUmFuZ2VUb0FycmF5KGUsdCxhKXtjb25zdCBuPWEubGVuZ3RoO3RoaXMuI2xlKE1hdGgubWluKHQtZSsxLG4pLCJtYXBCZlJhbmdlVG9BcnJheSIpO2xldCBzPTA7Zm9yKDtlPD10JiZzPG47KXRoaXMuI2Euc2V0KGUrKyxhW3MrK10pfW1hcE9uZShlLHQpe3RoaXMuI2Euc2V0KGUsdCl9bG9va3VwKGUpe3JldHVybiB0aGlzLiNhLmdldChlKX1jb250YWlucyhlKXtyZXR1cm4gdGhpcy4jYS5oYXMoZSl9Zm9yRWFjaChlKXtmb3IoY29uc3RbdCxhXW9mIHRoaXMuI2EpZSh0LGEpfWNoYXJDb2RlT2YoZSl7Zm9yKGNvbnN0W3QsYV1vZiB0aGlzLiNhKWlmKGE9PT1lKXJldHVybiB0O3JldHVybi0xfWdldE1hcCgpe3JldHVybiBuZXcgTWFwKHRoaXMuI2EpfXJlYWRDaGFyQ29kZShlLHQsYSl7bGV0IG49MDtjb25zdCBzPXRoaXMuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgcj0wLGk9cy5sZW5ndGg7cjxpO3IrKyl7bj0objw8OHxlLmNoYXJDb2RlQXQodCtyKSk+Pj4wO2NvbnN0IGk9c1tyXTtmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDspe2NvbnN0IHQ9aVtlKytdLHM9aVtlKytdO2lmKG4+PXQmJm48PXMpe2EuY2hhcmNvZGU9bjthLmxlbmd0aD1yKzE7cmV0dXJufX19YS5jaGFyY29kZT0wO2EubGVuZ3RoPTF9Z2V0Q2hhckNvZGVMZW5ndGgoZSl7Y29uc3QgdD10aGlzLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IGE9MCxuPXQubGVuZ3RoO2E8bjthKyspe2NvbnN0IG49dFthXTtmb3IobGV0IHQ9MCxzPW4ubGVuZ3RoO3Q8czspe2NvbnN0IHM9blt0KytdLHI9blt0KytdO2lmKGU+PXMmJmU8PXIpcmV0dXJuIGErMX19cmV0dXJuIDF9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy4jYS5zaXplfWdldCBpc0lkZW50aXR5Q01hcCgpe2lmKCJJZGVudGl0eS1IIiE9PXRoaXMubmFtZSYmIklkZW50aXR5LVYiIT09dGhpcy5uYW1lKXJldHVybiExO2lmKDY1NTM2IT09dGhpcy4jYS5zaXplKXJldHVybiExO2ZvcihsZXQgZT0wO2U8NjU1MzY7ZSsrKWlmKHRoaXMuI2EuZ2V0KGUpIT09ZSlyZXR1cm4hMTtyZXR1cm4hMH19Y2xhc3MgSWRlbnRpdHlDTWFwIGV4dGVuZHMgQ01hcHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCk7dGhpcy52ZXJ0aWNhbD1lO3RoaXMuYWRkQ29kZXNwYWNlUmFuZ2UodCwwLDY1NTM1KX1tYXBDaWRSYW5nZShlLHQsYSl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgY2FsbCBtYXBDaWRSYW5nZSIpfW1hcEJmUmFuZ2UoZSx0LGEpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGNhbGwgbWFwQmZSYW5nZSIpfW1hcEJmUmFuZ2VUb0FycmF5KGUsdCxhKXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBjYWxsIG1hcEJmUmFuZ2VUb0FycmF5Iil9bWFwT25lKGUsdCl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgY2FsbCBtYXBDaWRPbmUiKX1sb29rdXAoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1P2U6dm9pZCAwfWNvbnRhaW5zKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNX1mb3JFYWNoKGUpe2ZvcihsZXQgdD0wO3Q8PTY1NTM1O3QrKyllKHQsdCl9Y2hhckNvZGVPZihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzU/ZTotMX1nZXRNYXAoKXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBjYWxsIGdldE1hcCIpfWdldCBzaXplKCl7cmV0dXJuIDY1NTM2fWdldCBpc0lkZW50aXR5Q01hcCgpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGFjY2VzcyAuaXNJZGVudGl0eUNNYXAiKX19ZnVuY3Rpb24gc3RyVG9JbnQoZSl7bGV0IHQ9MDtmb3IobGV0IGE9MDthPGUubGVuZ3RoO2ErKyl0PXQ8PDh8ZS5jaGFyQ29kZUF0KGEpO3JldHVybiB0Pj4+MH1mdW5jdGlvbiBleHBlY3RTdHJpbmcoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWFsZm9ybWVkIENNYXA6IGV4cGVjdGVkIHN0cmluZy4iKX1mdW5jdGlvbiBleHBlY3RJbnQoZSl7aWYoIU51bWJlci5pc0ludGVnZXIoZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNYWxmb3JtZWQgQ01hcDogZXhwZWN0ZWQgaW50LiIpfWZ1bmN0aW9uIHBhcnNlQmZDaGFyKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1vYSlicmVhaztpZihpc0NtZChhLCJlbmRiZmNoYXIiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IG49c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhhKTtjb25zdCBzPWE7ZS5tYXBPbmUobixzKX19ZnVuY3Rpb24gcGFyc2VCZlJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1vYSlicmVhaztpZihpc0NtZChhLCJlbmRiZnJhbmdlIikpcmV0dXJuO2V4cGVjdFN0cmluZyhhKTtjb25zdCBuPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoYSk7Y29uc3Qgcz1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7aWYoTnVtYmVyLmlzSW50ZWdlcihhKXx8InN0cmluZyI9PXR5cGVvZiBhKXtjb25zdCB0PU51bWJlci5pc0ludGVnZXIoYSk/U3RyaW5nLmZyb21DaGFyQ29kZShhKTphO2UubWFwQmZSYW5nZShuLHMsdCl9ZWxzZXtpZighaXNDbWQoYSwiWyIpKWJyZWFrO3thPXQuZ2V0T2JqKCk7Y29uc3Qgcj1bXTtmb3IoOyFpc0NtZChhLCJdIikmJmEhPT1vYTspe3IucHVzaChhKTthPXQuZ2V0T2JqKCl9ZS5tYXBCZlJhbmdlVG9BcnJheShuLHMscil9fX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgYmYgcmFuZ2UuIil9ZnVuY3Rpb24gcGFyc2VDaWRDaGFyKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1vYSlicmVhaztpZihpc0NtZChhLCJlbmRjaWRjaGFyIikpcmV0dXJuO2V4cGVjdFN0cmluZyhhKTtjb25zdCBuPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtleHBlY3RJbnQoYSk7Y29uc3Qgcz1hO2UubWFwT25lKG4scyl9fWZ1bmN0aW9uIHBhcnNlQ2lkUmFuZ2UoZSx0KXtmb3IoOzspe2xldCBhPXQuZ2V0T2JqKCk7aWYoYT09PW9hKWJyZWFrO2lmKGlzQ21kKGEsImVuZGNpZHJhbmdlIikpcmV0dXJuO2V4cGVjdFN0cmluZyhhKTtjb25zdCBuPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoYSk7Y29uc3Qgcz1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7ZXhwZWN0SW50KGEpO2NvbnN0IHI9YTtlLm1hcENpZFJhbmdlKG4scyxyKX19ZnVuY3Rpb24gcGFyc2VDb2Rlc3BhY2VSYW5nZShlLHQpe2Zvcig7Oyl7bGV0IGE9dC5nZXRPYmooKTtpZihhPT09b2EpYnJlYWs7aWYoaXNDbWQoYSwiZW5kY29kZXNwYWNlcmFuZ2UiKSlyZXR1cm47aWYoInN0cmluZyIhPXR5cGVvZiBhKWJyZWFrO2NvbnN0IG49c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2lmKCJzdHJpbmciIT10eXBlb2YgYSlicmVhaztjb25zdCBzPXN0clRvSW50KGEpO2UuYWRkQ29kZXNwYWNlUmFuZ2UoYS5sZW5ndGgsbixzKX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgY29kZXNwYWNlIHJhbmdlLiIpfWZ1bmN0aW9uIHBhcnNlV01vZGUoZSx0KXtjb25zdCBhPXQuZ2V0T2JqKCk7TnVtYmVyLmlzSW50ZWdlcihhKSYmKGUudmVydGljYWw9ISFhKX1mdW5jdGlvbiBwYXJzZUNNYXBOYW1lKGUsdCl7Y29uc3QgYT10LmdldE9iaigpO2EgaW5zdGFuY2VvZiBOYW1lJiYoZS5uYW1lPWEubmFtZSl9YXN5bmMgZnVuY3Rpb24gcGFyc2VDTWFwKGUsdCxhLG4pe2xldCBzLHI7ZTpmb3IoOzspdHJ5e2NvbnN0IGE9dC5nZXRPYmooKTtpZihhPT09b2EpYnJlYWs7aWYoYSBpbnN0YW5jZW9mIE5hbWUpeyJXTW9kZSI9PT1hLm5hbWU/cGFyc2VXTW9kZShlLHQpOiJDTWFwTmFtZSI9PT1hLm5hbWUmJnBhcnNlQ01hcE5hbWUoZSx0KTtzPWF9ZWxzZSBpZihhIGluc3RhbmNlb2YgQ21kKXN3aXRjaChhLmNtZCl7Y2FzZSJlbmRjbWFwIjpicmVhayBlO2Nhc2UidXNlY21hcCI6cyBpbnN0YW5jZW9mIE5hbWUmJihyPXMubmFtZSk7YnJlYWs7Y2FzZSJiZWdpbmNvZGVzcGFjZXJhbmdlIjpwYXJzZUNvZGVzcGFjZVJhbmdlKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmY2hhciI6cGFyc2VCZkNoYXIoZSx0KTticmVhaztjYXNlImJlZ2luY2lkY2hhciI6cGFyc2VDaWRDaGFyKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmcmFuZ2UiOnBhcnNlQmZSYW5nZShlLHQpO2JyZWFrO2Nhc2UiYmVnaW5jaWRyYW5nZSI6cGFyc2VDaWRSYW5nZShlLHQpfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJJbnZhbGlkIGNNYXAgZGF0YTogIitlKTtjb250aW51ZX0hbiYmciYmKG49cik7cmV0dXJuIG4/ZXh0ZW5kQ01hcChlLGEsbik6ZX1hc3luYyBmdW5jdGlvbiBleHRlbmRDTWFwKGUsdCxhKXtlLnVzZUNNYXA9YXdhaXQgY3JlYXRlQnVpbHRJbkNNYXAoYSx0KTtpZigwPT09ZS5udW1Db2Rlc3BhY2VSYW5nZXMpe2NvbnN0IHQ9ZS51c2VDTWFwLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IGE9MDthPHQubGVuZ3RoO2ErKyllLmNvZGVzcGFjZVJhbmdlc1thXT10W2FdLnNsaWNlKCk7ZS5udW1Db2Rlc3BhY2VSYW5nZXM9ZS51c2VDTWFwLm51bUNvZGVzcGFjZVJhbmdlc31lLnVzZUNNYXAuZm9yRWFjaCgodCxhKT0+e2UuY29udGFpbnModCl8fGUubWFwT25lKHQsYSl9KTtyZXR1cm4gZX1hc3luYyBmdW5jdGlvbiBjcmVhdGVCdWlsdEluQ01hcChlLHQpe2lmKCJJZGVudGl0eS1IIj09PWUpcmV0dXJuIG5ldyBJZGVudGl0eUNNYXAoITEsMik7aWYoIklkZW50aXR5LVYiPT09ZSlyZXR1cm4gbmV3IElkZW50aXR5Q01hcCghMCwyKTtpZighZm4uaGFzKGUpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBDTWFwIG5hbWU6ICIrZSk7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJCdWlsdC1pbiBDTWFwIHBhcmFtZXRlcnMgYXJlIG5vdCBwcm92aWRlZC4iKTtjb25zdHtjTWFwRGF0YTphLGlzQ29tcHJlc3NlZDpufT1hd2FpdCB0KGUpLHM9bmV3IENNYXAoITApO2lmKG4pcmV0dXJuKG5ldyBCaW5hcnlDTWFwUmVhZGVyKS5wcm9jZXNzKGEscyxlPT5leHRlbmRDTWFwKHMsdCxlKSk7Y29uc3Qgcj1uZXcgTGV4ZXIobmV3IFN0cmVhbShhKSk7cmV0dXJuIHBhcnNlQ01hcChzLHIsdCxudWxsKX1jbGFzcyBDTWFwRmFjdG9yeXtzdGF0aWMgYXN5bmMgY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dCx1c2VDTWFwOmF9KXtpZihlIGluc3RhbmNlb2YgTmFtZSlyZXR1cm4gY3JlYXRlQnVpbHRJbkNNYXAoZS5uYW1lLHQpO2lmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtpZihlLmlzQXN5bmMpe2NvbnN0IHQ9YXdhaXQgZS5hc3luY0dldEJ5dGVzKCk7dCYmKGU9bmV3IFN0cmVhbSh0LDAsdC5sZW5ndGgsZS5kaWN0KSl9Y29uc3Qgbj1hd2FpdCBwYXJzZUNNYXAobmV3IENNYXAsbmV3IExleGVyKGUpLHQsYSk7cmV0dXJuIG4uaXNJZGVudGl0eUNNYXA/Y3JlYXRlQnVpbHRJbkNNYXAobi5uYW1lLHQpOm59dGhyb3cgbmV3IEVycm9yKCJFbmNvZGluZyByZXF1aXJlZC4iKX19Y29uc3QgY249WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCIiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCIiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCIiLCIiLCIiLCJpc3VwZXJpb3IiLCIiLCIiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCIiLCIiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCIiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsIiIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCIiLCIiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiIiwiRG90YWNjZW50c21hbGwiLCIiLCIiLCJNYWNyb25zbWFsbCIsIiIsIiIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIiIsIiIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwiIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiIiwiIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXSxobj1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImNlbnRvbGRzdHlsZSIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCIiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwiIiwicXVlc3Rpb25zbWFsbCIsIiIsIiIsIiIsIiIsIkV0aHNtYWxsIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsIiIsIiIsIiIsIiIsIiIsIiIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwiIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuaW5mZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCIiLCIiLCJhc3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJBYWN1dGVzbWFsbCIsIkFncmF2ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXRpbGRlc21hbGwiLCJBcmluZ3NtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJYWN1dGVzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiTnRpbGRlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT3RpbGRlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiIiwiZWlnaHRzdXBlcmlvciIsImZvdXJpbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiU2Nhcm9uc21hbGwiLCIiLCJjZW50aW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsIiIsIkRpZXJlc2lzc21hbGwiLCIiLCJDYXJvbnNtYWxsIiwib3N1cGVyaW9yIiwiZml2ZWluZmVyaW9yIiwiIiwiY29tbWFpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiWWFjdXRlc21hbGwiLCIiLCJkb2xsYXJpbmZlcmlvciIsIiIsIiIsIlRob3Juc21hbGwiLCIiLCJuaW5laW5mZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJaY2Fyb25zbWFsbCIsIkFFc21hbGwiLCJPc2xhc2hzbWFsbCIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25laW5mZXJpb3IiLCJMc2xhc2hzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIiIsIkNlZGlsbGFzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIk9Fc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuc3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duc21hbGwiLCIiLCJZZGllcmVzaXNzbWFsbCIsIiIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb3N1cGVyaW9yIiwiIiwiZXN1cGVyaW9yIiwicnN1cGVyaW9yIiwidHN1cGVyaW9yIiwiIiwiIiwiaXN1cGVyaW9yIiwic3N1cGVyaW9yIiwiZHN1cGVyaW9yIiwiIiwiIiwiIiwiIiwiIiwibHN1cGVyaW9yIiwiT2dvbmVrc21hbGwiLCJCcmV2ZXNtYWxsIiwiTWFjcm9uc21hbGwiLCJic3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJjb21tYXN1cGVyaW9yIiwicGVyaW9kc3VwZXJpb3IiLCJEb3RhY2NlbnRzbWFsbCIsIlJpbmdzbWFsbCIsIiIsIiIsIiIsIiJdLHVuPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIiIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJOdGlsZGUiLCJPZGllcmVzaXMiLCJVZGllcmVzaXMiLCJhYWN1dGUiLCJhZ3JhdmUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImF0aWxkZSIsImFyaW5nIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlZ3JhdmUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImlhY3V0ZSIsImlncmF2ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwibnRpbGRlIiwib2FjdXRlIiwib2dyYXZlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvdGlsZGUiLCJ1YWN1dGUiLCJ1Z3JhdmUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsImRhZ2dlciIsImRlZ3JlZSIsImNlbnQiLCJzdGVybGluZyIsInNlY3Rpb24iLCJidWxsZXQiLCJwYXJhZ3JhcGgiLCJnZXJtYW5kYmxzIiwicmVnaXN0ZXJlZCIsImNvcHlyaWdodCIsInRyYWRlbWFyayIsImFjdXRlIiwiZGllcmVzaXMiLCJub3RlcXVhbCIsIkFFIiwiT3NsYXNoIiwiaW5maW5pdHkiLCJwbHVzbWludXMiLCJsZXNzZXF1YWwiLCJncmVhdGVyZXF1YWwiLCJ5ZW4iLCJtdSIsInBhcnRpYWxkaWZmIiwic3VtbWF0aW9uIiwicHJvZHVjdCIsInBpIiwiaW50ZWdyYWwiLCJvcmRmZW1pbmluZSIsIm9yZG1hc2N1bGluZSIsIk9tZWdhIiwiYWUiLCJvc2xhc2giLCJxdWVzdGlvbmRvd24iLCJleGNsYW1kb3duIiwibG9naWNhbG5vdCIsInJhZGljYWwiLCJmbG9yaW4iLCJhcHByb3hlcXVhbCIsIkRlbHRhIiwiZ3VpbGxlbW90bGVmdCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJzcGFjZSIsIkFncmF2ZSIsIkF0aWxkZSIsIk90aWxkZSIsIk9FIiwib2UiLCJlbmRhc2giLCJlbWRhc2giLCJxdW90ZWRibGxlZnQiLCJxdW90ZWRibHJpZ2h0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsImRpdmlkZSIsImxvemVuZ2UiLCJ5ZGllcmVzaXMiLCJZZGllcmVzaXMiLCJmcmFjdGlvbiIsImN1cnJlbmN5IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJwZXJ0aG91c2FuZCIsIkFjaXJjdW1mbGV4IiwiRWNpcmN1bWZsZXgiLCJBYWN1dGUiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiYXBwbGUiLCJPZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVncmF2ZSIsImRvdGxlc3NpIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIl0sbW49WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsIiIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwiIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwiIiwicXVlc3Rpb25kb3duIiwiIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCIiLCJyaW5nIiwiY2VkaWxsYSIsIiIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiQUUiLCIiLCJvcmRmZW1pbmluZSIsIiIsIiIsIiIsIiIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiIiwiIiwiIiwiIiwiIiwiYWUiLCIiLCIiLCIiLCJkb3RsZXNzaSIsIiIsIiIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIiIsIiIsIiIsIiJdLHBuPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImJ1bGxldCIsIkV1cm8iLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsImZsb3JpbiIsInF1b3RlZGJsYmFzZSIsImVsbGlwc2lzIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwiY2lyY3VtZmxleCIsInBlcnRob3VzYW5kIiwiU2Nhcm9uIiwiZ3VpbHNpbmdsbGVmdCIsIk9FIiwiYnVsbGV0IiwiWmNhcm9uIiwiYnVsbGV0IiwiYnVsbGV0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJidWxsZXQiLCJlbmRhc2giLCJlbWRhc2giLCJ0aWxkZSIsInRyYWRlbWFyayIsInNjYXJvbiIsImd1aWxzaW5nbHJpZ2h0Iiwib2UiLCJidWxsZXQiLCJ6Y2Fyb24iLCJZZGllcmVzaXMiLCJzcGFjZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJjdXJyZW5jeSIsInllbiIsImJyb2tlbmJhciIsInNlY3Rpb24iLCJkaWVyZXNpcyIsImNvcHlyaWdodCIsIm9yZGZlbWluaW5lIiwiZ3VpbGxlbW90bGVmdCIsImxvZ2ljYWxub3QiLCJoeXBoZW4iLCJyZWdpc3RlcmVkIiwibWFjcm9uIiwiZGVncmVlIiwicGx1c21pbnVzIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiYWN1dGUiLCJtdSIsInBhcmFncmFwaCIsInBlcmlvZGNlbnRlcmVkIiwiY2VkaWxsYSIsIm9uZXN1cGVyaW9yIiwib3JkbWFzY3VsaW5lIiwiZ3VpbGxlbW90cmlnaHQiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd24iLCJBZ3JhdmUiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkF0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQUUiLCJDY2VkaWxsYSIsIkVncmF2ZSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiSWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJFdGgiLCJOdGlsZGUiLCJPZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk90aWxkZSIsIk9kaWVyZXNpcyIsIm11bHRpcGx5IiwiT3NsYXNoIiwiVWdyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJZYWN1dGUiLCJUaG9ybiIsImdlcm1hbmRibHMiLCJhZ3JhdmUiLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImF0aWxkZSIsImFkaWVyZXNpcyIsImFyaW5nIiwiYWUiLCJjY2VkaWxsYSIsImVncmF2ZSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJldGgiLCJudGlsZGUiLCJvZ3JhdmUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm90aWxkZSIsIm9kaWVyZXNpcyIsImRpdmlkZSIsIm9zbGFzaCIsInVncmF2ZSIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwieWFjdXRlIiwidGhvcm4iLCJ5ZGllcmVzaXMiXSxkbj1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtIiwidW5pdmVyc2FsIiwibnVtYmVyc2lnbiIsImV4aXN0ZW50aWFsIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInN1Y2h0aGF0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrbWF0aCIsInBsdXMiLCJjb21tYSIsIm1pbnVzIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJjb25ncnVlbnQiLCJBbHBoYSIsIkJldGEiLCJDaGkiLCJEZWx0YSIsIkVwc2lsb24iLCJQaGkiLCJHYW1tYSIsIkV0YSIsIklvdGEiLCJ0aGV0YTEiLCJLYXBwYSIsIkxhbWJkYSIsIk11IiwiTnUiLCJPbWljcm9uIiwiUGkiLCJUaGV0YSIsIlJobyIsIlNpZ21hIiwiVGF1IiwiVXBzaWxvbiIsInNpZ21hMSIsIk9tZWdhIiwiWGkiLCJQc2kiLCJaZXRhIiwiYnJhY2tldGxlZnQiLCJ0aGVyZWZvcmUiLCJicmFja2V0cmlnaHQiLCJwZXJwZW5kaWN1bGFyIiwidW5kZXJzY29yZSIsInJhZGljYWxleCIsImFscGhhIiwiYmV0YSIsImNoaSIsImRlbHRhIiwiZXBzaWxvbiIsInBoaSIsImdhbW1hIiwiZXRhIiwiaW90YSIsInBoaTEiLCJrYXBwYSIsImxhbWJkYSIsIm11IiwibnUiLCJvbWljcm9uIiwicGkiLCJ0aGV0YSIsInJobyIsInNpZ21hIiwidGF1IiwidXBzaWxvbiIsIm9tZWdhMSIsIm9tZWdhIiwieGkiLCJwc2kiLCJ6ZXRhIiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsInNpbWlsYXIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJFdXJvIiwiVXBzaWxvbjEiLCJtaW51dGUiLCJsZXNzZXF1YWwiLCJmcmFjdGlvbiIsImluZmluaXR5IiwiZmxvcmluIiwiY2x1YiIsImRpYW1vbmQiLCJoZWFydCIsInNwYWRlIiwiYXJyb3dib3RoIiwiYXJyb3dsZWZ0IiwiYXJyb3d1cCIsImFycm93cmlnaHQiLCJhcnJvd2Rvd24iLCJkZWdyZWUiLCJwbHVzbWludXMiLCJzZWNvbmQiLCJncmVhdGVyZXF1YWwiLCJtdWx0aXBseSIsInByb3BvcnRpb25hbCIsInBhcnRpYWxkaWZmIiwiYnVsbGV0IiwiZGl2aWRlIiwibm90ZXF1YWwiLCJlcXVpdmFsZW5jZSIsImFwcHJveGVxdWFsIiwiZWxsaXBzaXMiLCJhcnJvd3ZlcnRleCIsImFycm93aG9yaXpleCIsImNhcnJpYWdlcmV0dXJuIiwiYWxlcGgiLCJJZnJha3R1ciIsIlJmcmFrdHVyIiwid2VpZXJzdHJhc3MiLCJjaXJjbGVtdWx0aXBseSIsImNpcmNsZXBsdXMiLCJlbXB0eXNldCIsImludGVyc2VjdGlvbiIsInVuaW9uIiwicHJvcGVyc3VwZXJzZXQiLCJyZWZsZXhzdXBlcnNldCIsIm5vdHN1YnNldCIsInByb3BlcnN1YnNldCIsInJlZmxleHN1YnNldCIsImVsZW1lbnQiLCJub3RlbGVtZW50IiwiYW5nbGUiLCJncmFkaWVudCIsInJlZ2lzdGVyc2VyaWYiLCJjb3B5cmlnaHRzZXJpZiIsInRyYWRlbWFya3NlcmlmIiwicHJvZHVjdCIsInJhZGljYWwiLCJkb3RtYXRoIiwibG9naWNhbG5vdCIsImxvZ2ljYWxhbmQiLCJsb2dpY2Fsb3IiLCJhcnJvd2RibGJvdGgiLCJhcnJvd2RibGxlZnQiLCJhcnJvd2RibHVwIiwiYXJyb3dkYmxyaWdodCIsImFycm93ZGJsZG93biIsImxvemVuZ2UiLCJhbmdsZWxlZnQiLCJyZWdpc3RlcnNhbnMiLCJjb3B5cmlnaHRzYW5zIiwidHJhZGVtYXJrc2FucyIsInN1bW1hdGlvbiIsInBhcmVubGVmdHRwIiwicGFyZW5sZWZ0ZXgiLCJwYXJlbmxlZnRidCIsImJyYWNrZXRsZWZ0dHAiLCJicmFja2V0bGVmdGV4IiwiYnJhY2tldGxlZnRidCIsImJyYWNlbGVmdHRwIiwiYnJhY2VsZWZ0bWlkIiwiYnJhY2VsZWZ0YnQiLCJicmFjZWV4IiwiIiwiYW5nbGVyaWdodCIsImludGVncmFsIiwiaW50ZWdyYWx0cCIsImludGVncmFsZXgiLCJpbnRlZ3JhbGJ0IiwicGFyZW5yaWdodHRwIiwicGFyZW5yaWdodGV4IiwicGFyZW5yaWdodGJ0IiwiYnJhY2tldHJpZ2h0dHAiLCJicmFja2V0cmlnaHRleCIsImJyYWNrZXRyaWdodGJ0IiwiYnJhY2VyaWdodHRwIiwiYnJhY2VyaWdodG1pZCIsImJyYWNlcmlnaHRidCIsIiJdLGduPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJhMSIsImEyIiwiYTIwMiIsImEzIiwiYTQiLCJhNSIsImExMTkiLCJhMTE4IiwiYTExNyIsImExMSIsImExMiIsImExMyIsImExNCIsImExNSIsImExNiIsImExMDUiLCJhMTciLCJhMTgiLCJhMTkiLCJhMjAiLCJhMjEiLCJhMjIiLCJhMjMiLCJhMjQiLCJhMjUiLCJhMjYiLCJhMjciLCJhMjgiLCJhNiIsImE3IiwiYTgiLCJhOSIsImExMCIsImEyOSIsImEzMCIsImEzMSIsImEzMiIsImEzMyIsImEzNCIsImEzNSIsImEzNiIsImEzNyIsImEzOCIsImEzOSIsImE0MCIsImE0MSIsImE0MiIsImE0MyIsImE0NCIsImE0NSIsImE0NiIsImE0NyIsImE0OCIsImE0OSIsImE1MCIsImE1MSIsImE1MiIsImE1MyIsImE1NCIsImE1NSIsImE1NiIsImE1NyIsImE1OCIsImE1OSIsImE2MCIsImE2MSIsImE2MiIsImE2MyIsImE2NCIsImE2NSIsImE2NiIsImE2NyIsImE2OCIsImE2OSIsImE3MCIsImE3MSIsImE3MiIsImE3MyIsImE3NCIsImEyMDMiLCJhNzUiLCJhMjA0IiwiYTc2IiwiYTc3IiwiYTc4IiwiYTc5IiwiYTgxIiwiYTgyIiwiYTgzIiwiYTg0IiwiYTk3IiwiYTk4IiwiYTk5IiwiYTEwMCIsIiIsImE4OSIsImE5MCIsImE5MyIsImE5NCIsImE5MSIsImE5MiIsImEyMDUiLCJhODUiLCJhMjA2IiwiYTg2IiwiYTg3IiwiYTg4IiwiYTk1IiwiYTk2IiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiYTEwMSIsImExMDIiLCJhMTAzIiwiYTEwNCIsImExMDYiLCJhMTA3IiwiYTEwOCIsImExMTIiLCJhMTExIiwiYTExMCIsImExMDkiLCJhMTIwIiwiYTEyMSIsImExMjIiLCJhMTIzIiwiYTEyNCIsImExMjUiLCJhMTI2IiwiYTEyNyIsImExMjgiLCJhMTI5IiwiYTEzMCIsImExMzEiLCJhMTMyIiwiYTEzMyIsImExMzQiLCJhMTM1IiwiYTEzNiIsImExMzciLCJhMTM4IiwiYTEzOSIsImExNDAiLCJhMTQxIiwiYTE0MiIsImExNDMiLCJhMTQ0IiwiYTE0NSIsImExNDYiLCJhMTQ3IiwiYTE0OCIsImExNDkiLCJhMTUwIiwiYTE1MSIsImExNTIiLCJhMTUzIiwiYTE1NCIsImExNTUiLCJhMTU2IiwiYTE1NyIsImExNTgiLCJhMTU5IiwiYTE2MCIsImExNjEiLCJhMTYzIiwiYTE2NCIsImExOTYiLCJhMTY1IiwiYTE5MiIsImExNjYiLCJhMTY3IiwiYTE2OCIsImExNjkiLCJhMTcwIiwiYTE3MSIsImExNzIiLCJhMTczIiwiYTE2MiIsImExNzQiLCJhMTc1IiwiYTE3NiIsImExNzciLCJhMTc4IiwiYTE3OSIsImExOTMiLCJhMTgwIiwiYTE5OSIsImExODEiLCJhMjAwIiwiYTE4MiIsIiIsImEyMDEiLCJhMTgzIiwiYTE4NCIsImExOTciLCJhMTg1IiwiYTE5NCIsImExOTgiLCJhMTg2IiwiYTE5NSIsImExODciLCJhMTg4IiwiYTE4OSIsImExOTAiLCJhMTkxIiwiIl07ZnVuY3Rpb24gZ2V0RW5jb2RpbmcoZSl7c3dpdGNoKGUpe2Nhc2UiV2luQW5zaUVuY29kaW5nIjpyZXR1cm4gcG47Y2FzZSJTdGFuZGFyZEVuY29kaW5nIjpyZXR1cm4gbW47Y2FzZSJNYWNSb21hbkVuY29kaW5nIjpyZXR1cm4gdW47Y2FzZSJTeW1ib2xTZXRFbmNvZGluZyI6cmV0dXJuIGRuO2Nhc2UiWmFwZkRpbmdiYXRzRW5jb2RpbmciOnJldHVybiBnbjtjYXNlIkV4cGVydEVuY29kaW5nIjpyZXR1cm4gY247Y2FzZSJNYWNFeHBlcnRFbmNvZGluZyI6cmV0dXJuIGhuO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWNvbnN0IGJuPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLkE9NjU7ZS5BRT0xOTg7ZS5BRWFjdXRlPTUwODtlLkFFbWFjcm9uPTQ4MjtlLkFFc21hbGw9NjM0NjI7ZS5BYWN1dGU9MTkzO2UuQWFjdXRlc21hbGw9NjM0NTc7ZS5BYnJldmU9MjU4O2UuQWJyZXZlYWN1dGU9Nzg1NDtlLkFicmV2ZWN5cmlsbGljPTEyMzI7ZS5BYnJldmVkb3RiZWxvdz03ODYyO2UuQWJyZXZlZ3JhdmU9Nzg1NjtlLkFicmV2ZWhvb2thYm92ZT03ODU4O2UuQWJyZXZldGlsZGU9Nzg2MDtlLkFjYXJvbj00NjE7ZS5BY2lyY2xlPTkzOTg7ZS5BY2lyY3VtZmxleD0xOTQ7ZS5BY2lyY3VtZmxleGFjdXRlPTc4NDQ7ZS5BY2lyY3VtZmxleGRvdGJlbG93PTc4NTI7ZS5BY2lyY3VtZmxleGdyYXZlPTc4NDY7ZS5BY2lyY3VtZmxleGhvb2thYm92ZT03ODQ4O2UuQWNpcmN1bWZsZXhzbWFsbD02MzQ1ODtlLkFjaXJjdW1mbGV4dGlsZGU9Nzg1MDtlLkFjdXRlPTYzMTc3O2UuQWN1dGVzbWFsbD02MzQxMjtlLkFjeXJpbGxpYz0xMDQwO2UuQWRibGdyYXZlPTUxMjtlLkFkaWVyZXNpcz0xOTY7ZS5BZGllcmVzaXNjeXJpbGxpYz0xMjM0O2UuQWRpZXJlc2lzbWFjcm9uPTQ3ODtlLkFkaWVyZXNpc3NtYWxsPTYzNDYwO2UuQWRvdGJlbG93PTc4NDA7ZS5BZG90bWFjcm9uPTQ4MDtlLkFncmF2ZT0xOTI7ZS5BZ3JhdmVzbWFsbD02MzQ1NjtlLkFob29rYWJvdmU9Nzg0MjtlLkFpZWN5cmlsbGljPTEyMzY7ZS5BaW52ZXJ0ZWRicmV2ZT01MTQ7ZS5BbHBoYT05MTM7ZS5BbHBoYXRvbm9zPTkwMjtlLkFtYWNyb249MjU2O2UuQW1vbm9zcGFjZT02NTMxMztlLkFvZ29uZWs9MjYwO2UuQXJpbmc9MTk3O2UuQXJpbmdhY3V0ZT01MDY7ZS5BcmluZ2JlbG93PTc2ODA7ZS5BcmluZ3NtYWxsPTYzNDYxO2UuQXNtYWxsPTYzMzI5O2UuQXRpbGRlPTE5NTtlLkF0aWxkZXNtYWxsPTYzNDU5O2UuQXliYXJtZW5pYW49MTMyOTtlLkI9NjY7ZS5CY2lyY2xlPTkzOTk7ZS5CZG90YWNjZW50PTc2ODI7ZS5CZG90YmVsb3c9NzY4NDtlLkJlY3lyaWxsaWM9MTA0MTtlLkJlbmFybWVuaWFuPTEzMzA7ZS5CZXRhPTkxNDtlLkJob29rPTM4NTtlLkJsaW5lYmVsb3c9NzY4NjtlLkJtb25vc3BhY2U9NjUzMTQ7ZS5CcmV2ZXNtYWxsPTYzMjIwO2UuQnNtYWxsPTYzMzMwO2UuQnRvcGJhcj0zODY7ZS5DPTY3O2UuQ2Fhcm1lbmlhbj0xMzQyO2UuQ2FjdXRlPTI2MjtlLkNhcm9uPTYzMTc4O2UuQ2Fyb25zbWFsbD02MzIyMTtlLkNjYXJvbj0yNjg7ZS5DY2VkaWxsYT0xOTk7ZS5DY2VkaWxsYWFjdXRlPTc2ODg7ZS5DY2VkaWxsYXNtYWxsPTYzNDYzO2UuQ2NpcmNsZT05NDAwO2UuQ2NpcmN1bWZsZXg9MjY0O2UuQ2RvdD0yNjY7ZS5DZG90YWNjZW50PTI2NjtlLkNlZGlsbGFzbWFsbD02MzQxNjtlLkNoYWFybWVuaWFuPTEzNTM7ZS5DaGVhYmtoYXNpYW5jeXJpbGxpYz0xMjEyO2UuQ2hlY3lyaWxsaWM9MTA2MztlLkNoZWRlc2NlbmRlcmFia2hhc2lhbmN5cmlsbGljPTEyMTQ7ZS5DaGVkZXNjZW5kZXJjeXJpbGxpYz0xMjA2O2UuQ2hlZGllcmVzaXNjeXJpbGxpYz0xMjY4O2UuQ2hlaGFybWVuaWFuPTEzNDc7ZS5DaGVraGFrYXNzaWFuY3lyaWxsaWM9MTIyNztlLkNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTIwODtlLkNoaT05MzU7ZS5DaG9vaz0zOTE7ZS5DaXJjdW1mbGV4c21hbGw9NjMyMjI7ZS5DbW9ub3NwYWNlPTY1MzE1O2UuQ29hcm1lbmlhbj0xMzYxO2UuQ3NtYWxsPTYzMzMxO2UuRD02ODtlLkRaPTQ5NztlLkRaY2Fyb249NDUyO2UuRGFhcm1lbmlhbj0xMzMyO2UuRGFmcmljYW49MzkzO2UuRGNhcm9uPTI3MDtlLkRjZWRpbGxhPTc2OTY7ZS5EY2lyY2xlPTk0MDE7ZS5EY2lyY3VtZmxleGJlbG93PTc2OTg7ZS5EY3JvYXQ9MjcyO2UuRGRvdGFjY2VudD03NjkwO2UuRGRvdGJlbG93PTc2OTI7ZS5EZWN5cmlsbGljPTEwNDQ7ZS5EZWljb3B0aWM9MTAwNjtlLkRlbHRhPTg3MTA7ZS5EZWx0YWdyZWVrPTkxNjtlLkRob29rPTM5NDtlLkRpZXJlc2lzPTYzMTc5O2UuRGllcmVzaXNBY3V0ZT02MzE4MDtlLkRpZXJlc2lzR3JhdmU9NjMxODE7ZS5EaWVyZXNpc3NtYWxsPTYzNDAwO2UuRGlnYW1tYWdyZWVrPTk4ODtlLkRqZWN5cmlsbGljPTEwMjY7ZS5EbGluZWJlbG93PTc2OTQ7ZS5EbW9ub3NwYWNlPTY1MzE2O2UuRG90YWNjZW50c21hbGw9NjMyMjM7ZS5Ec2xhc2g9MjcyO2UuRHNtYWxsPTYzMzMyO2UuRHRvcGJhcj0zOTU7ZS5Eej00OTg7ZS5EemNhcm9uPTQ1MztlLkR6ZWFia2hhc2lhbmN5cmlsbGljPTEyNDg7ZS5EemVjeXJpbGxpYz0xMDI5O2UuRHpoZWN5cmlsbGljPTEwMzk7ZS5FPTY5O2UuRWFjdXRlPTIwMTtlLkVhY3V0ZXNtYWxsPTYzNDY1O2UuRWJyZXZlPTI3NjtlLkVjYXJvbj0yODI7ZS5FY2VkaWxsYWJyZXZlPTc3MDg7ZS5FY2hhcm1lbmlhbj0xMzMzO2UuRWNpcmNsZT05NDAyO2UuRWNpcmN1bWZsZXg9MjAyO2UuRWNpcmN1bWZsZXhhY3V0ZT03ODcwO2UuRWNpcmN1bWZsZXhiZWxvdz03NzA0O2UuRWNpcmN1bWZsZXhkb3RiZWxvdz03ODc4O2UuRWNpcmN1bWZsZXhncmF2ZT03ODcyO2UuRWNpcmN1bWZsZXhob29rYWJvdmU9Nzg3NDtlLkVjaXJjdW1mbGV4c21hbGw9NjM0NjY7ZS5FY2lyY3VtZmxleHRpbGRlPTc4NzY7ZS5FY3lyaWxsaWM9MTAyODtlLkVkYmxncmF2ZT01MTY7ZS5FZGllcmVzaXM9MjAzO2UuRWRpZXJlc2lzc21hbGw9NjM0Njc7ZS5FZG90PTI3ODtlLkVkb3RhY2NlbnQ9Mjc4O2UuRWRvdGJlbG93PTc4NjQ7ZS5FZmN5cmlsbGljPTEwNjA7ZS5FZ3JhdmU9MjAwO2UuRWdyYXZlc21hbGw9NjM0NjQ7ZS5FaGFybWVuaWFuPTEzMzU7ZS5FaG9va2Fib3ZlPTc4NjY7ZS5FaWdodHJvbWFuPTg1NTE7ZS5FaW52ZXJ0ZWRicmV2ZT01MTg7ZS5FaW90aWZpZWRjeXJpbGxpYz0xMTI0O2UuRWxjeXJpbGxpYz0xMDUxO2UuRWxldmVucm9tYW49ODU1NDtlLkVtYWNyb249Mjc0O2UuRW1hY3JvbmFjdXRlPTc3MDI7ZS5FbWFjcm9uZ3JhdmU9NzcwMDtlLkVtY3lyaWxsaWM9MTA1MjtlLkVtb25vc3BhY2U9NjUzMTc7ZS5FbmN5cmlsbGljPTEwNTM7ZS5FbmRlc2NlbmRlcmN5cmlsbGljPTExODY7ZS5Fbmc9MzMwO2UuRW5naGVjeXJpbGxpYz0xMTg4O2UuRW5ob29rY3lyaWxsaWM9MTIyMztlLkVvZ29uZWs9MjgwO2UuRW9wZW49NDAwO2UuRXBzaWxvbj05MTc7ZS5FcHNpbG9udG9ub3M9OTA0O2UuRXJjeXJpbGxpYz0xMDU2O2UuRXJldmVyc2VkPTM5ODtlLkVyZXZlcnNlZGN5cmlsbGljPTEwNjk7ZS5Fc2N5cmlsbGljPTEwNTc7ZS5Fc2Rlc2NlbmRlcmN5cmlsbGljPTExOTQ7ZS5Fc2g9NDI1O2UuRXNtYWxsPTYzMzMzO2UuRXRhPTkxOTtlLkV0YXJtZW5pYW49MTMzNjtlLkV0YXRvbm9zPTkwNTtlLkV0aD0yMDg7ZS5FdGhzbWFsbD02MzQ3MjtlLkV0aWxkZT03ODY4O2UuRXRpbGRlYmVsb3c9NzcwNjtlLkV1cm89ODM2NDtlLkV6aD00Mzk7ZS5FemhjYXJvbj00OTQ7ZS5FemhyZXZlcnNlZD00NDA7ZS5GPTcwO2UuRmNpcmNsZT05NDAzO2UuRmRvdGFjY2VudD03NzEwO2UuRmVoYXJtZW5pYW49MTM2NjtlLkZlaWNvcHRpYz05OTY7ZS5GaG9vaz00MDE7ZS5GaXRhY3lyaWxsaWM9MTEzODtlLkZpdmVyb21hbj04NTQ4O2UuRm1vbm9zcGFjZT02NTMxODtlLkZvdXJyb21hbj04NTQ3O2UuRnNtYWxsPTYzMzM0O2UuRz03MTtlLkdCc3F1YXJlPTEzMTkxO2UuR2FjdXRlPTUwMDtlLkdhbW1hPTkxNTtlLkdhbW1hYWZyaWNhbj00MDQ7ZS5HYW5naWFjb3B0aWM9MTAwMjtlLkdicmV2ZT0yODY7ZS5HY2Fyb249NDg2O2UuR2NlZGlsbGE9MjkwO2UuR2NpcmNsZT05NDA0O2UuR2NpcmN1bWZsZXg9Mjg0O2UuR2NvbW1hYWNjZW50PTI5MDtlLkdkb3Q9Mjg4O2UuR2RvdGFjY2VudD0yODg7ZS5HZWN5cmlsbGljPTEwNDM7ZS5HaGFkYXJtZW5pYW49MTM0NjtlLkdoZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTcyO2UuR2hlc3Ryb2tlY3lyaWxsaWM9MTE3MDtlLkdoZXVwdHVybmN5cmlsbGljPTExNjg7ZS5HaG9vaz00MDM7ZS5HaW1hcm1lbmlhbj0xMzMxO2UuR2plY3lyaWxsaWM9MTAyNztlLkdtYWNyb249NzcxMjtlLkdtb25vc3BhY2U9NjUzMTk7ZS5HcmF2ZT02MzE4MjtlLkdyYXZlc21hbGw9NjMzMjg7ZS5Hc21hbGw9NjMzMzU7ZS5Hc21hbGxob29rPTY2NztlLkdzdHJva2U9NDg0O2UuSD03MjtlLkgxODUzMz05Njc5O2UuSDE4NTQzPTk2NDI7ZS5IMTg1NTE9OTY0MztlLkgyMjA3Mz05NjMzO2UuSFBzcXVhcmU9MTMyNTk7ZS5IYWFia2hhc2lhbmN5cmlsbGljPTExOTI7ZS5IYWRlc2NlbmRlcmN5cmlsbGljPTEyMDI7ZS5IYXJkc2lnbmN5cmlsbGljPTEwNjY7ZS5IYmFyPTI5NDtlLkhicmV2ZWJlbG93PTc3MjI7ZS5IY2VkaWxsYT03NzIwO2UuSGNpcmNsZT05NDA1O2UuSGNpcmN1bWZsZXg9MjkyO2UuSGRpZXJlc2lzPTc3MTg7ZS5IZG90YWNjZW50PTc3MTQ7ZS5IZG90YmVsb3c9NzcxNjtlLkhtb25vc3BhY2U9NjUzMjA7ZS5Ib2FybWVuaWFuPTEzNDQ7ZS5Ib3JpY29wdGljPTFlMztlLkhzbWFsbD02MzMzNjtlLkh1bmdhcnVtbGF1dD02MzE4MztlLkh1bmdhcnVtbGF1dHNtYWxsPTYzMjI0O2UuSHpzcXVhcmU9MTMyMDA7ZS5JPTczO2UuSUFjeXJpbGxpYz0xMDcxO2UuSUo9MzA2O2UuSVVjeXJpbGxpYz0xMDcwO2UuSWFjdXRlPTIwNTtlLklhY3V0ZXNtYWxsPTYzNDY5O2UuSWJyZXZlPTMwMDtlLkljYXJvbj00NjM7ZS5JY2lyY2xlPTk0MDY7ZS5JY2lyY3VtZmxleD0yMDY7ZS5JY2lyY3VtZmxleHNtYWxsPTYzNDcwO2UuSWN5cmlsbGljPTEwMzA7ZS5JZGJsZ3JhdmU9NTIwO2UuSWRpZXJlc2lzPTIwNztlLklkaWVyZXNpc2FjdXRlPTc3MjY7ZS5JZGllcmVzaXNjeXJpbGxpYz0xMjUyO2UuSWRpZXJlc2lzc21hbGw9NjM0NzE7ZS5JZG90PTMwNDtlLklkb3RhY2NlbnQ9MzA0O2UuSWRvdGJlbG93PTc4ODI7ZS5JZWJyZXZlY3lyaWxsaWM9MTIzODtlLkllY3lyaWxsaWM9MTA0NTtlLklmcmFrdHVyPTg0NjU7ZS5JZ3JhdmU9MjA0O2UuSWdyYXZlc21hbGw9NjM0Njg7ZS5JaG9va2Fib3ZlPTc4ODA7ZS5JaWN5cmlsbGljPTEwNDg7ZS5JaW52ZXJ0ZWRicmV2ZT01MjI7ZS5JaXNob3J0Y3lyaWxsaWM9MTA0OTtlLkltYWNyb249Mjk4O2UuSW1hY3JvbmN5cmlsbGljPTEyNTA7ZS5JbW9ub3NwYWNlPTY1MzIxO2UuSW5pYXJtZW5pYW49MTMzOTtlLklvY3lyaWxsaWM9MTAyNTtlLklvZ29uZWs9MzAyO2UuSW90YT05MjE7ZS5Jb3RhYWZyaWNhbj00MDY7ZS5Jb3RhZGllcmVzaXM9OTM4O2UuSW90YXRvbm9zPTkwNjtlLklzbWFsbD02MzMzNztlLklzdHJva2U9NDA3O2UuSXRpbGRlPTI5NjtlLkl0aWxkZWJlbG93PTc3MjQ7ZS5JemhpdHNhY3lyaWxsaWM9MTE0MDtlLkl6aGl0c2FkYmxncmF2ZWN5cmlsbGljPTExNDI7ZS5KPTc0O2UuSmFhcm1lbmlhbj0xMzQ1O2UuSmNpcmNsZT05NDA3O2UuSmNpcmN1bWZsZXg9MzA4O2UuSmVjeXJpbGxpYz0xMDMyO2UuSmhlaGFybWVuaWFuPTEzNTU7ZS5KbW9ub3NwYWNlPTY1MzIyO2UuSnNtYWxsPTYzMzM4O2UuSz03NTtlLktCc3F1YXJlPTEzMTg5O2UuS0tzcXVhcmU9MTMyNjE7ZS5LYWJhc2hraXJjeXJpbGxpYz0xMTg0O2UuS2FjdXRlPTc3Mjg7ZS5LYWN5cmlsbGljPTEwNTA7ZS5LYWRlc2NlbmRlcmN5cmlsbGljPTExNzg7ZS5LYWhvb2tjeXJpbGxpYz0xMjE5O2UuS2FwcGE9OTIyO2UuS2FzdHJva2VjeXJpbGxpYz0xMTgyO2UuS2F2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTExODA7ZS5LY2Fyb249NDg4O2UuS2NlZGlsbGE9MzEwO2UuS2NpcmNsZT05NDA4O2UuS2NvbW1hYWNjZW50PTMxMDtlLktkb3RiZWxvdz03NzMwO2UuS2VoYXJtZW5pYW49MTM2NDtlLktlbmFybWVuaWFuPTEzNDM7ZS5LaGFjeXJpbGxpYz0xMDYxO2UuS2hlaWNvcHRpYz05OTg7ZS5LaG9vaz00MDg7ZS5LamVjeXJpbGxpYz0xMDM2O2UuS2xpbmViZWxvdz03NzMyO2UuS21vbm9zcGFjZT02NTMyMztlLktvcHBhY3lyaWxsaWM9MTE1MjtlLktvcHBhZ3JlZWs9OTkwO2UuS3NpY3lyaWxsaWM9MTEzNDtlLktzbWFsbD02MzMzOTtlLkw9NzY7ZS5MSj00NTU7ZS5MTD02MzE2NztlLkxhY3V0ZT0zMTM7ZS5MYW1iZGE9OTIzO2UuTGNhcm9uPTMxNztlLkxjZWRpbGxhPTMxNTtlLkxjaXJjbGU9OTQwOTtlLkxjaXJjdW1mbGV4YmVsb3c9Nzc0MDtlLkxjb21tYWFjY2VudD0zMTU7ZS5MZG90PTMxOTtlLkxkb3RhY2NlbnQ9MzE5O2UuTGRvdGJlbG93PTc3MzQ7ZS5MZG90YmVsb3dtYWNyb249NzczNjtlLkxpd25hcm1lbmlhbj0xMzQwO2UuTGo9NDU2O2UuTGplY3lyaWxsaWM9MTAzMztlLkxsaW5lYmVsb3c9NzczODtlLkxtb25vc3BhY2U9NjUzMjQ7ZS5Mc2xhc2g9MzIxO2UuTHNsYXNoc21hbGw9NjMyMjU7ZS5Mc21hbGw9NjMzNDA7ZS5NPTc3O2UuTUJzcXVhcmU9MTMxOTA7ZS5NYWNyb249NjMxODQ7ZS5NYWNyb25zbWFsbD02MzQwNztlLk1hY3V0ZT03NzQyO2UuTWNpcmNsZT05NDEwO2UuTWRvdGFjY2VudD03NzQ0O2UuTWRvdGJlbG93PTc3NDY7ZS5NZW5hcm1lbmlhbj0xMzQ4O2UuTW1vbm9zcGFjZT02NTMyNTtlLk1zbWFsbD02MzM0MTtlLk10dXJuZWQ9NDEyO2UuTXU9OTI0O2UuTj03ODtlLk5KPTQ1ODtlLk5hY3V0ZT0zMjM7ZS5OY2Fyb249MzI3O2UuTmNlZGlsbGE9MzI1O2UuTmNpcmNsZT05NDExO2UuTmNpcmN1bWZsZXhiZWxvdz03NzU0O2UuTmNvbW1hYWNjZW50PTMyNTtlLk5kb3RhY2NlbnQ9Nzc0ODtlLk5kb3RiZWxvdz03NzUwO2UuTmhvb2tsZWZ0PTQxMztlLk5pbmVyb21hbj04NTUyO2UuTmo9NDU5O2UuTmplY3lyaWxsaWM9MTAzNDtlLk5saW5lYmVsb3c9Nzc1MjtlLk5tb25vc3BhY2U9NjUzMjY7ZS5Ob3dhcm1lbmlhbj0xMzUwO2UuTnNtYWxsPTYzMzQyO2UuTnRpbGRlPTIwOTtlLk50aWxkZXNtYWxsPTYzNDczO2UuTnU9OTI1O2UuTz03OTtlLk9FPTMzODtlLk9Fc21hbGw9NjMyMjY7ZS5PYWN1dGU9MjExO2UuT2FjdXRlc21hbGw9NjM0NzU7ZS5PYmFycmVkY3lyaWxsaWM9MTI1NjtlLk9iYXJyZWRkaWVyZXNpc2N5cmlsbGljPTEyNTg7ZS5PYnJldmU9MzM0O2UuT2Nhcm9uPTQ2NTtlLk9jZW50ZXJlZHRpbGRlPTQxNTtlLk9jaXJjbGU9OTQxMjtlLk9jaXJjdW1mbGV4PTIxMjtlLk9jaXJjdW1mbGV4YWN1dGU9Nzg4ODtlLk9jaXJjdW1mbGV4ZG90YmVsb3c9Nzg5NjtlLk9jaXJjdW1mbGV4Z3JhdmU9Nzg5MDtlLk9jaXJjdW1mbGV4aG9va2Fib3ZlPTc4OTI7ZS5PY2lyY3VtZmxleHNtYWxsPTYzNDc2O2UuT2NpcmN1bWZsZXh0aWxkZT03ODk0O2UuT2N5cmlsbGljPTEwNTQ7ZS5PZGJsYWN1dGU9MzM2O2UuT2RibGdyYXZlPTUyNDtlLk9kaWVyZXNpcz0yMTQ7ZS5PZGllcmVzaXNjeXJpbGxpYz0xMjU0O2UuT2RpZXJlc2lzc21hbGw9NjM0Nzg7ZS5PZG90YmVsb3c9Nzg4NDtlLk9nb25la3NtYWxsPTYzMjI3O2UuT2dyYXZlPTIxMDtlLk9ncmF2ZXNtYWxsPTYzNDc0O2UuT2hhcm1lbmlhbj0xMzY1O2UuT2htPTg0ODY7ZS5PaG9va2Fib3ZlPTc4ODY7ZS5PaG9ybj00MTY7ZS5PaG9ybmFjdXRlPTc4OTg7ZS5PaG9ybmRvdGJlbG93PTc5MDY7ZS5PaG9ybmdyYXZlPTc5MDA7ZS5PaG9ybmhvb2thYm92ZT03OTAyO2UuT2hvcm50aWxkZT03OTA0O2UuT2h1bmdhcnVtbGF1dD0zMzY7ZS5PaT00MTg7ZS5PaW52ZXJ0ZWRicmV2ZT01MjY7ZS5PbWFjcm9uPTMzMjtlLk9tYWNyb25hY3V0ZT03NzYyO2UuT21hY3JvbmdyYXZlPTc3NjA7ZS5PbWVnYT04NDg2O2UuT21lZ2FjeXJpbGxpYz0xMTIwO2UuT21lZ2FncmVlaz05Mzc7ZS5PbWVnYXJvdW5kY3lyaWxsaWM9MTE0NjtlLk9tZWdhdGl0bG9jeXJpbGxpYz0xMTQ4O2UuT21lZ2F0b25vcz05MTE7ZS5PbWljcm9uPTkyNztlLk9taWNyb250b25vcz05MDg7ZS5PbW9ub3NwYWNlPTY1MzI3O2UuT25lcm9tYW49ODU0NDtlLk9vZ29uZWs9NDkwO2UuT29nb25la21hY3Jvbj00OTI7ZS5Pb3Blbj0zOTA7ZS5Pc2xhc2g9MjE2O2UuT3NsYXNoYWN1dGU9NTEwO2UuT3NsYXNoc21hbGw9NjM0ODA7ZS5Pc21hbGw9NjMzNDM7ZS5Pc3Ryb2tlYWN1dGU9NTEwO2UuT3RjeXJpbGxpYz0xMTUwO2UuT3RpbGRlPTIxMztlLk90aWxkZWFjdXRlPTc3NTY7ZS5PdGlsZGVkaWVyZXNpcz03NzU4O2UuT3RpbGRlc21hbGw9NjM0Nzc7ZS5QPTgwO2UuUGFjdXRlPTc3NjQ7ZS5QY2lyY2xlPTk0MTM7ZS5QZG90YWNjZW50PTc3NjY7ZS5QZWN5cmlsbGljPTEwNTU7ZS5QZWhhcm1lbmlhbj0xMzU0O2UuUGVtaWRkbGVob29rY3lyaWxsaWM9MTE5MDtlLlBoaT05MzQ7ZS5QaG9vaz00MjA7ZS5QaT05Mjg7ZS5QaXdyYXJtZW5pYW49MTM2MztlLlBtb25vc3BhY2U9NjUzMjg7ZS5Qc2k9OTM2O2UuUHNpY3lyaWxsaWM9MTEzNjtlLlBzbWFsbD02MzM0NDtlLlE9ODE7ZS5RY2lyY2xlPTk0MTQ7ZS5RbW9ub3NwYWNlPTY1MzI5O2UuUXNtYWxsPTYzMzQ1O2UuUj04MjtlLlJhYXJtZW5pYW49MTM1NjtlLlJhY3V0ZT0zNDA7ZS5SY2Fyb249MzQ0O2UuUmNlZGlsbGE9MzQyO2UuUmNpcmNsZT05NDE1O2UuUmNvbW1hYWNjZW50PTM0MjtlLlJkYmxncmF2ZT01Mjg7ZS5SZG90YWNjZW50PTc3Njg7ZS5SZG90YmVsb3c9Nzc3MDtlLlJkb3RiZWxvd21hY3Jvbj03NzcyO2UuUmVoYXJtZW5pYW49MTM2MDtlLlJmcmFrdHVyPTg0NzY7ZS5SaG89OTI5O2UuUmluZ3NtYWxsPTYzMjI4O2UuUmludmVydGVkYnJldmU9NTMwO2UuUmxpbmViZWxvdz03Nzc0O2UuUm1vbm9zcGFjZT02NTMzMDtlLlJzbWFsbD02MzM0NjtlLlJzbWFsbGludmVydGVkPTY0MTtlLlJzbWFsbGludmVydGVkc3VwZXJpb3I9Njk0O2UuUz04MztlLlNGMDEwMDAwPTk0ODQ7ZS5TRjAyMDAwMD05NDkyO2UuU0YwMzAwMDA9OTQ4ODtlLlNGMDQwMDAwPTk0OTY7ZS5TRjA1MDAwMD05NTMyO2UuU0YwNjAwMDA9OTUxNjtlLlNGMDcwMDAwPTk1MjQ7ZS5TRjA4MDAwMD05NTAwO2UuU0YwOTAwMDA9OTUwODtlLlNGMTAwMDAwPTk0NzI7ZS5TRjExMDAwMD05NDc0O2UuU0YxOTAwMDA9OTU2OTtlLlNGMjAwMDAwPTk1NzA7ZS5TRjIxMDAwMD05NTU4O2UuU0YyMjAwMDA9OTU1NztlLlNGMjMwMDAwPTk1NzE7ZS5TRjI0MDAwMD05NTUzO2UuU0YyNTAwMDA9OTU1OTtlLlNGMjYwMDAwPTk1NjU7ZS5TRjI3MDAwMD05NTY0O2UuU0YyODAwMDA9OTU2MztlLlNGMzYwMDAwPTk1NjY7ZS5TRjM3MDAwMD05NTY3O2UuU0YzODAwMDA9OTU2MjtlLlNGMzkwMDAwPTk1NTY7ZS5TRjQwMDAwMD05NTc3O2UuU0Y0MTAwMDA9OTU3NDtlLlNGNDIwMDAwPTk1Njg7ZS5TRjQzMDAwMD05NTUyO2UuU0Y0NDAwMDA9OTU4MDtlLlNGNDUwMDAwPTk1NzU7ZS5TRjQ2MDAwMD05NTc2O2UuU0Y0NzAwMDA9OTU3MjtlLlNGNDgwMDAwPTk1NzM7ZS5TRjQ5MDAwMD05NTYxO2UuU0Y1MDAwMDA9OTU2MDtlLlNGNTEwMDAwPTk1NTQ7ZS5TRjUyMDAwMD05NTU1O2UuU0Y1MzAwMDA9OTU3OTtlLlNGNTQwMDAwPTk1Nzg7ZS5TYWN1dGU9MzQ2O2UuU2FjdXRlZG90YWNjZW50PTc3ODA7ZS5TYW1waWdyZWVrPTk5MjtlLlNjYXJvbj0zNTI7ZS5TY2Fyb25kb3RhY2NlbnQ9Nzc4MjtlLlNjYXJvbnNtYWxsPTYzMjI5O2UuU2NlZGlsbGE9MzUwO2UuU2Nod2E9Mzk5O2UuU2Nod2FjeXJpbGxpYz0xMjQwO2UuU2Nod2FkaWVyZXNpc2N5cmlsbGljPTEyNDI7ZS5TY2lyY2xlPTk0MTY7ZS5TY2lyY3VtZmxleD0zNDg7ZS5TY29tbWFhY2NlbnQ9NTM2O2UuU2RvdGFjY2VudD03Nzc2O2UuU2RvdGJlbG93PTc3Nzg7ZS5TZG90YmVsb3dkb3RhY2NlbnQ9Nzc4NDtlLlNlaGFybWVuaWFuPTEzNTc7ZS5TZXZlbnJvbWFuPTg1NTA7ZS5TaGFhcm1lbmlhbj0xMzUxO2UuU2hhY3lyaWxsaWM9MTA2NDtlLlNoY2hhY3lyaWxsaWM9MTA2NTtlLlNoZWljb3B0aWM9OTk0O2UuU2hoYWN5cmlsbGljPTEyMTA7ZS5TaGltYWNvcHRpYz0xMDA0O2UuU2lnbWE9OTMxO2UuU2l4cm9tYW49ODU0OTtlLlNtb25vc3BhY2U9NjUzMzE7ZS5Tb2Z0c2lnbmN5cmlsbGljPTEwNjg7ZS5Tc21hbGw9NjMzNDc7ZS5TdGlnbWFncmVlaz05ODY7ZS5UPTg0O2UuVGF1PTkzMjtlLlRiYXI9MzU4O2UuVGNhcm9uPTM1NjtlLlRjZWRpbGxhPTM1NDtlLlRjaXJjbGU9OTQxNztlLlRjaXJjdW1mbGV4YmVsb3c9Nzc5MjtlLlRjb21tYWFjY2VudD0zNTQ7ZS5UZG90YWNjZW50PTc3ODY7ZS5UZG90YmVsb3c9Nzc4ODtlLlRlY3lyaWxsaWM9MTA1ODtlLlRlZGVzY2VuZGVyY3lyaWxsaWM9MTE5NjtlLlRlbnJvbWFuPTg1NTM7ZS5UZXRzZWN5cmlsbGljPTEyMDQ7ZS5UaGV0YT05MjA7ZS5UaG9vaz00Mjg7ZS5UaG9ybj0yMjI7ZS5UaG9ybnNtYWxsPTYzNDg2O2UuVGhyZWVyb21hbj04NTQ2O2UuVGlsZGVzbWFsbD02MzIzMDtlLlRpd25hcm1lbmlhbj0xMzU5O2UuVGxpbmViZWxvdz03NzkwO2UuVG1vbm9zcGFjZT02NTMzMjtlLlRvYXJtZW5pYW49MTMzNztlLlRvbmVmaXZlPTQ0NDtlLlRvbmVzaXg9Mzg4O2UuVG9uZXR3bz00MjM7ZS5UcmV0cm9mbGV4aG9vaz00MzA7ZS5Uc2VjeXJpbGxpYz0xMDYyO2UuVHNoZWN5cmlsbGljPTEwMzU7ZS5Uc21hbGw9NjMzNDg7ZS5Ud2VsdmVyb21hbj04NTU1O2UuVHdvcm9tYW49ODU0NTtlLlU9ODU7ZS5VYWN1dGU9MjE4O2UuVWFjdXRlc21hbGw9NjM0ODI7ZS5VYnJldmU9MzY0O2UuVWNhcm9uPTQ2NztlLlVjaXJjbGU9OTQxODtlLlVjaXJjdW1mbGV4PTIxOTtlLlVjaXJjdW1mbGV4YmVsb3c9Nzc5ODtlLlVjaXJjdW1mbGV4c21hbGw9NjM0ODM7ZS5VY3lyaWxsaWM9MTA1OTtlLlVkYmxhY3V0ZT0zNjg7ZS5VZGJsZ3JhdmU9NTMyO2UuVWRpZXJlc2lzPTIyMDtlLlVkaWVyZXNpc2FjdXRlPTQ3MTtlLlVkaWVyZXNpc2JlbG93PTc3OTQ7ZS5VZGllcmVzaXNjYXJvbj00NzM7ZS5VZGllcmVzaXNjeXJpbGxpYz0xMjY0O2UuVWRpZXJlc2lzZ3JhdmU9NDc1O2UuVWRpZXJlc2lzbWFjcm9uPTQ2OTtlLlVkaWVyZXNpc3NtYWxsPTYzNDg0O2UuVWRvdGJlbG93PTc5MDg7ZS5VZ3JhdmU9MjE3O2UuVWdyYXZlc21hbGw9NjM0ODE7ZS5VaG9va2Fib3ZlPTc5MTA7ZS5VaG9ybj00MzE7ZS5VaG9ybmFjdXRlPTc5MTI7ZS5VaG9ybmRvdGJlbG93PTc5MjA7ZS5VaG9ybmdyYXZlPTc5MTQ7ZS5VaG9ybmhvb2thYm92ZT03OTE2O2UuVWhvcm50aWxkZT03OTE4O2UuVWh1bmdhcnVtbGF1dD0zNjg7ZS5VaHVuZ2FydW1sYXV0Y3lyaWxsaWM9MTI2NjtlLlVpbnZlcnRlZGJyZXZlPTUzNDtlLlVrY3lyaWxsaWM9MTE0NDtlLlVtYWNyb249MzYyO2UuVW1hY3JvbmN5cmlsbGljPTEyNjI7ZS5VbWFjcm9uZGllcmVzaXM9NzgwMjtlLlVtb25vc3BhY2U9NjUzMzM7ZS5Vb2dvbmVrPTM3MDtlLlVwc2lsb249OTMzO2UuVXBzaWxvbjE9OTc4O2UuVXBzaWxvbmFjdXRlaG9va3N5bWJvbGdyZWVrPTk3OTtlLlVwc2lsb25hZnJpY2FuPTQzMztlLlVwc2lsb25kaWVyZXNpcz05Mzk7ZS5VcHNpbG9uZGllcmVzaXNob29rc3ltYm9sZ3JlZWs9OTgwO2UuVXBzaWxvbmhvb2tzeW1ib2w9OTc4O2UuVXBzaWxvbnRvbm9zPTkxMDtlLlVyaW5nPTM2NjtlLlVzaG9ydGN5cmlsbGljPTEwMzg7ZS5Vc21hbGw9NjMzNDk7ZS5Vc3RyYWlnaHRjeXJpbGxpYz0xMTk4O2UuVXN0cmFpZ2h0c3Ryb2tlY3lyaWxsaWM9MTIwMDtlLlV0aWxkZT0zNjA7ZS5VdGlsZGVhY3V0ZT03ODAwO2UuVXRpbGRlYmVsb3c9Nzc5NjtlLlY9ODY7ZS5WY2lyY2xlPTk0MTk7ZS5WZG90YmVsb3c9NzgwNjtlLlZlY3lyaWxsaWM9MTA0MjtlLlZld2FybWVuaWFuPTEzNTg7ZS5WaG9vaz00MzQ7ZS5WbW9ub3NwYWNlPTY1MzM0O2UuVm9hcm1lbmlhbj0xMzUyO2UuVnNtYWxsPTYzMzUwO2UuVnRpbGRlPTc4MDQ7ZS5XPTg3O2UuV2FjdXRlPTc4MTA7ZS5XY2lyY2xlPTk0MjA7ZS5XY2lyY3VtZmxleD0zNzI7ZS5XZGllcmVzaXM9NzgxMjtlLldkb3RhY2NlbnQ9NzgxNDtlLldkb3RiZWxvdz03ODE2O2UuV2dyYXZlPTc4MDg7ZS5XbW9ub3NwYWNlPTY1MzM1O2UuV3NtYWxsPTYzMzUxO2UuWD04ODtlLlhjaXJjbGU9OTQyMTtlLlhkaWVyZXNpcz03ODIwO2UuWGRvdGFjY2VudD03ODE4O2UuWGVoYXJtZW5pYW49MTM0MTtlLlhpPTkyNjtlLlhtb25vc3BhY2U9NjUzMzY7ZS5Yc21hbGw9NjMzNTI7ZS5ZPTg5O2UuWWFjdXRlPTIyMTtlLllhY3V0ZXNtYWxsPTYzNDg1O2UuWWF0Y3lyaWxsaWM9MTEyMjtlLlljaXJjbGU9OTQyMjtlLlljaXJjdW1mbGV4PTM3NDtlLllkaWVyZXNpcz0zNzY7ZS5ZZGllcmVzaXNzbWFsbD02MzQ4NztlLllkb3RhY2NlbnQ9NzgyMjtlLllkb3RiZWxvdz03OTI0O2UuWWVyaWN5cmlsbGljPTEwNjc7ZS5ZZXJ1ZGllcmVzaXNjeXJpbGxpYz0xMjcyO2UuWWdyYXZlPTc5MjI7ZS5ZaG9vaz00MzU7ZS5ZaG9va2Fib3ZlPTc5MjY7ZS5ZaWFybWVuaWFuPTEzNDk7ZS5ZaWN5cmlsbGljPTEwMzE7ZS5ZaXduYXJtZW5pYW49MTM2MjtlLlltb25vc3BhY2U9NjUzMzc7ZS5Zc21hbGw9NjMzNTM7ZS5ZdGlsZGU9NzkyODtlLll1c2JpZ2N5cmlsbGljPTExMzA7ZS5ZdXNiaWdpb3RpZmllZGN5cmlsbGljPTExMzI7ZS5ZdXNsaXR0bGVjeXJpbGxpYz0xMTI2O2UuWXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYz0xMTI4O2UuWj05MDtlLlphYXJtZW5pYW49MTMzNDtlLlphY3V0ZT0zNzc7ZS5aY2Fyb249MzgxO2UuWmNhcm9uc21hbGw9NjMyMzE7ZS5aY2lyY2xlPTk0MjM7ZS5aY2lyY3VtZmxleD03ODI0O2UuWmRvdD0zNzk7ZS5aZG90YWNjZW50PTM3OTtlLlpkb3RiZWxvdz03ODI2O2UuWmVjeXJpbGxpYz0xMDQ3O2UuWmVkZXNjZW5kZXJjeXJpbGxpYz0xMTc2O2UuWmVkaWVyZXNpc2N5cmlsbGljPTEyNDY7ZS5aZXRhPTkxODtlLlpoZWFybWVuaWFuPTEzMzg7ZS5aaGVicmV2ZWN5cmlsbGljPTEyMTc7ZS5aaGVjeXJpbGxpYz0xMDQ2O2UuWmhlZGVzY2VuZGVyY3lyaWxsaWM9MTE3NDtlLlpoZWRpZXJlc2lzY3lyaWxsaWM9MTI0NDtlLlpsaW5lYmVsb3c9NzgyODtlLlptb25vc3BhY2U9NjUzMzg7ZS5ac21hbGw9NjMzNTQ7ZS5ac3Ryb2tlPTQzNztlLmE9OTc7ZS5hYWJlbmdhbGk9MjQzODtlLmFhY3V0ZT0yMjU7ZS5hYWRldmE9MjMxMDtlLmFhZ3VqYXJhdGk9MjY5NDtlLmFhZ3VybXVraGk9MjU2NjtlLmFhbWF0cmFndXJtdWtoaT0yNjIyO2UuYWFydXNxdWFyZT0xMzA1OTtlLmFhdm93ZWxzaWduYmVuZ2FsaT0yNDk0O2UuYWF2b3dlbHNpZ25kZXZhPTIzNjY7ZS5hYXZvd2Vsc2lnbmd1amFyYXRpPTI3NTA7ZS5hYmJyZXZpYXRpb25tYXJrYXJtZW5pYW49MTM3NTtlLmFiYnJldmlhdGlvbnNpZ25kZXZhPTI0MTY7ZS5hYmVuZ2FsaT0yNDM3O2UuYWJvcG9tb2ZvPTEyNTcwO2UuYWJyZXZlPTI1OTtlLmFicmV2ZWFjdXRlPTc4NTU7ZS5hYnJldmVjeXJpbGxpYz0xMjMzO2UuYWJyZXZlZG90YmVsb3c9Nzg2MztlLmFicmV2ZWdyYXZlPTc4NTc7ZS5hYnJldmVob29rYWJvdmU9Nzg1OTtlLmFicmV2ZXRpbGRlPTc4NjE7ZS5hY2Fyb249NDYyO2UuYWNpcmNsZT05NDI0O2UuYWNpcmN1bWZsZXg9MjI2O2UuYWNpcmN1bWZsZXhhY3V0ZT03ODQ1O2UuYWNpcmN1bWZsZXhkb3RiZWxvdz03ODUzO2UuYWNpcmN1bWZsZXhncmF2ZT03ODQ3O2UuYWNpcmN1bWZsZXhob29rYWJvdmU9Nzg0OTtlLmFjaXJjdW1mbGV4dGlsZGU9Nzg1MTtlLmFjdXRlPTE4MDtlLmFjdXRlYmVsb3djbWI9NzkxO2UuYWN1dGVjbWI9NzY5O2UuYWN1dGVjb21iPTc2OTtlLmFjdXRlZGV2YT0yMzg4O2UuYWN1dGVsb3dtb2Q9NzE5O2UuYWN1dGV0b25lY21iPTgzMztlLmFjeXJpbGxpYz0xMDcyO2UuYWRibGdyYXZlPTUxMztlLmFkZGFrZ3VybXVraGk9MjY3MztlLmFkZXZhPTIzMDk7ZS5hZGllcmVzaXM9MjI4O2UuYWRpZXJlc2lzY3lyaWxsaWM9MTIzNTtlLmFkaWVyZXNpc21hY3Jvbj00Nzk7ZS5hZG90YmVsb3c9Nzg0MTtlLmFkb3RtYWNyb249NDgxO2UuYWU9MjMwO2UuYWVhY3V0ZT01MDk7ZS5hZWtvcmVhbj0xMjYyNDtlLmFlbWFjcm9uPTQ4MztlLmFmaWkwMDIwOD04MjEzO2UuYWZpaTA4OTQxPTgzNTY7ZS5hZmlpMTAwMTc9MTA0MDtlLmFmaWkxMDAxOD0xMDQxO2UuYWZpaTEwMDE5PTEwNDI7ZS5hZmlpMTAwMjA9MTA0MztlLmFmaWkxMDAyMT0xMDQ0O2UuYWZpaTEwMDIyPTEwNDU7ZS5hZmlpMTAwMjM9MTAyNTtlLmFmaWkxMDAyND0xMDQ2O2UuYWZpaTEwMDI1PTEwNDc7ZS5hZmlpMTAwMjY9MTA0ODtlLmFmaWkxMDAyNz0xMDQ5O2UuYWZpaTEwMDI4PTEwNTA7ZS5hZmlpMTAwMjk9MTA1MTtlLmFmaWkxMDAzMD0xMDUyO2UuYWZpaTEwMDMxPTEwNTM7ZS5hZmlpMTAwMzI9MTA1NDtlLmFmaWkxMDAzMz0xMDU1O2UuYWZpaTEwMDM0PTEwNTY7ZS5hZmlpMTAwMzU9MTA1NztlLmFmaWkxMDAzNj0xMDU4O2UuYWZpaTEwMDM3PTEwNTk7ZS5hZmlpMTAwMzg9MTA2MDtlLmFmaWkxMDAzOT0xMDYxO2UuYWZpaTEwMDQwPTEwNjI7ZS5hZmlpMTAwNDE9MTA2MztlLmFmaWkxMDA0Mj0xMDY0O2UuYWZpaTEwMDQzPTEwNjU7ZS5hZmlpMTAwNDQ9MTA2NjtlLmFmaWkxMDA0NT0xMDY3O2UuYWZpaTEwMDQ2PTEwNjg7ZS5hZmlpMTAwNDc9MTA2OTtlLmFmaWkxMDA0OD0xMDcwO2UuYWZpaTEwMDQ5PTEwNzE7ZS5hZmlpMTAwNTA9MTE2ODtlLmFmaWkxMDA1MT0xMDI2O2UuYWZpaTEwMDUyPTEwMjc7ZS5hZmlpMTAwNTM9MTAyODtlLmFmaWkxMDA1ND0xMDI5O2UuYWZpaTEwMDU1PTEwMzA7ZS5hZmlpMTAwNTY9MTAzMTtlLmFmaWkxMDA1Nz0xMDMyO2UuYWZpaTEwMDU4PTEwMzM7ZS5hZmlpMTAwNTk9MTAzNDtlLmFmaWkxMDA2MD0xMDM1O2UuYWZpaTEwMDYxPTEwMzY7ZS5hZmlpMTAwNjI9MTAzODtlLmFmaWkxMDA2Mz02MzE3MjtlLmFmaWkxMDA2ND02MzE3MztlLmFmaWkxMDA2NT0xMDcyO2UuYWZpaTEwMDY2PTEwNzM7ZS5hZmlpMTAwNjc9MTA3NDtlLmFmaWkxMDA2OD0xMDc1O2UuYWZpaTEwMDY5PTEwNzY7ZS5hZmlpMTAwNzA9MTA3NztlLmFmaWkxMDA3MT0xMTA1O2UuYWZpaTEwMDcyPTEwNzg7ZS5hZmlpMTAwNzM9MTA3OTtlLmFmaWkxMDA3ND0xMDgwO2UuYWZpaTEwMDc1PTEwODE7ZS5hZmlpMTAwNzY9MTA4MjtlLmFmaWkxMDA3Nz0xMDgzO2UuYWZpaTEwMDc4PTEwODQ7ZS5hZmlpMTAwNzk9MTA4NTtlLmFmaWkxMDA4MD0xMDg2O2UuYWZpaTEwMDgxPTEwODc7ZS5hZmlpMTAwODI9MTA4ODtlLmFmaWkxMDA4Mz0xMDg5O2UuYWZpaTEwMDg0PTEwOTA7ZS5hZmlpMTAwODU9MTA5MTtlLmFmaWkxMDA4Nj0xMDkyO2UuYWZpaTEwMDg3PTEwOTM7ZS5hZmlpMTAwODg9MTA5NDtlLmFmaWkxMDA4OT0xMDk1O2UuYWZpaTEwMDkwPTEwOTY7ZS5hZmlpMTAwOTE9MTA5NztlLmFmaWkxMDA5Mj0xMDk4O2UuYWZpaTEwMDkzPTEwOTk7ZS5hZmlpMTAwOTQ9MTEwMDtlLmFmaWkxMDA5NT0xMTAxO2UuYWZpaTEwMDk2PTExMDI7ZS5hZmlpMTAwOTc9MTEwMztlLmFmaWkxMDA5OD0xMTY5O2UuYWZpaTEwMDk5PTExMDY7ZS5hZmlpMTAxMDA9MTEwNztlLmFmaWkxMDEwMT0xMTA4O2UuYWZpaTEwMTAyPTExMDk7ZS5hZmlpMTAxMDM9MTExMDtlLmFmaWkxMDEwND0xMTExO2UuYWZpaTEwMTA1PTExMTI7ZS5hZmlpMTAxMDY9MTExMztlLmFmaWkxMDEwNz0xMTE0O2UuYWZpaTEwMTA4PTExMTU7ZS5hZmlpMTAxMDk9MTExNjtlLmFmaWkxMDExMD0xMTE4O2UuYWZpaTEwMTQ1PTEwMzk7ZS5hZmlpMTAxNDY9MTEyMjtlLmFmaWkxMDE0Nz0xMTM4O2UuYWZpaTEwMTQ4PTExNDA7ZS5hZmlpMTAxOTI9NjMxNzQ7ZS5hZmlpMTAxOTM9MTExOTtlLmFmaWkxMDE5ND0xMTIzO2UuYWZpaTEwMTk1PTExMzk7ZS5hZmlpMTAxOTY9MTE0MTtlLmFmaWkxMDgzMT02MzE3NTtlLmFmaWkxMDgzMj02MzE3NjtlLmFmaWkxMDg0Nj0xMjQxO2UuYWZpaTI5OT04MjA2O2UuYWZpaTMwMD04MjA3O2UuYWZpaTMwMT04MjA1O2UuYWZpaTU3MzgxPTE2NDI7ZS5hZmlpNTczODg9MTU0ODtlLmFmaWk1NzM5Mj0xNjMyO2UuYWZpaTU3MzkzPTE2MzM7ZS5hZmlpNTczOTQ9MTYzNDtlLmFmaWk1NzM5NT0xNjM1O2UuYWZpaTU3Mzk2PTE2MzY7ZS5hZmlpNTczOTc9MTYzNztlLmFmaWk1NzM5OD0xNjM4O2UuYWZpaTU3Mzk5PTE2Mzk7ZS5hZmlpNTc0MDA9MTY0MDtlLmFmaWk1NzQwMT0xNjQxO2UuYWZpaTU3NDAzPTE1NjM7ZS5hZmlpNTc0MDc9MTU2NztlLmFmaWk1NzQwOT0xNTY5O2UuYWZpaTU3NDEwPTE1NzA7ZS5hZmlpNTc0MTE9MTU3MTtlLmFmaWk1NzQxMj0xNTcyO2UuYWZpaTU3NDEzPTE1NzM7ZS5hZmlpNTc0MTQ9MTU3NDtlLmFmaWk1NzQxNT0xNTc1O2UuYWZpaTU3NDE2PTE1NzY7ZS5hZmlpNTc0MTc9MTU3NztlLmFmaWk1NzQxOD0xNTc4O2UuYWZpaTU3NDE5PTE1Nzk7ZS5hZmlpNTc0MjA9MTU4MDtlLmFmaWk1NzQyMT0xNTgxO2UuYWZpaTU3NDIyPTE1ODI7ZS5hZmlpNTc0MjM9MTU4MztlLmFmaWk1NzQyND0xNTg0O2UuYWZpaTU3NDI1PTE1ODU7ZS5hZmlpNTc0MjY9MTU4NjtlLmFmaWk1NzQyNz0xNTg3O2UuYWZpaTU3NDI4PTE1ODg7ZS5hZmlpNTc0Mjk9MTU4OTtlLmFmaWk1NzQzMD0xNTkwO2UuYWZpaTU3NDMxPTE1OTE7ZS5hZmlpNTc0MzI9MTU5MjtlLmFmaWk1NzQzMz0xNTkzO2UuYWZpaTU3NDM0PTE1OTQ7ZS5hZmlpNTc0NDA9MTYwMDtlLmFmaWk1NzQ0MT0xNjAxO2UuYWZpaTU3NDQyPTE2MDI7ZS5hZmlpNTc0NDM9MTYwMztlLmFmaWk1NzQ0ND0xNjA0O2UuYWZpaTU3NDQ1PTE2MDU7ZS5hZmlpNTc0NDY9MTYwNjtlLmFmaWk1NzQ0OD0xNjA4O2UuYWZpaTU3NDQ5PTE2MDk7ZS5hZmlpNTc0NTA9MTYxMDtlLmFmaWk1NzQ1MT0xNjExO2UuYWZpaTU3NDUyPTE2MTI7ZS5hZmlpNTc0NTM9MTYxMztlLmFmaWk1NzQ1ND0xNjE0O2UuYWZpaTU3NDU1PTE2MTU7ZS5hZmlpNTc0NTY9MTYxNjtlLmFmaWk1NzQ1Nz0xNjE3O2UuYWZpaTU3NDU4PTE2MTg7ZS5hZmlpNTc0NzA9MTYwNztlLmFmaWk1NzUwNT0xNzAwO2UuYWZpaTU3NTA2PTE2NjI7ZS5hZmlpNTc1MDc9MTY3MDtlLmFmaWk1NzUwOD0xNjg4O2UuYWZpaTU3NTA5PTE3MTE7ZS5hZmlpNTc1MTE9MTY1NztlLmFmaWk1NzUxMj0xNjcyO2UuYWZpaTU3NTEzPTE2ODE7ZS5hZmlpNTc1MTQ9MTcyMjtlLmFmaWk1NzUxOT0xNzQ2O2UuYWZpaTU3NTM0PTE3NDk7ZS5hZmlpNTc2MzY9ODM2MjtlLmFmaWk1NzY0NT0xNDcwO2UuYWZpaTU3NjU4PTE0NzU7ZS5hZmlpNTc2NjQ9MTQ4ODtlLmFmaWk1NzY2NT0xNDg5O2UuYWZpaTU3NjY2PTE0OTA7ZS5hZmlpNTc2Njc9MTQ5MTtlLmFmaWk1NzY2OD0xNDkyO2UuYWZpaTU3NjY5PTE0OTM7ZS5hZmlpNTc2NzA9MTQ5NDtlLmFmaWk1NzY3MT0xNDk1O2UuYWZpaTU3NjcyPTE0OTY7ZS5hZmlpNTc2NzM9MTQ5NztlLmFmaWk1NzY3ND0xNDk4O2UuYWZpaTU3Njc1PTE0OTk7ZS5hZmlpNTc2NzY9MTUwMDtlLmFmaWk1NzY3Nz0xNTAxO2UuYWZpaTU3Njc4PTE1MDI7ZS5hZmlpNTc2Nzk9MTUwMztlLmFmaWk1NzY4MD0xNTA0O2UuYWZpaTU3NjgxPTE1MDU7ZS5hZmlpNTc2ODI9MTUwNjtlLmFmaWk1NzY4Mz0xNTA3O2UuYWZpaTU3Njg0PTE1MDg7ZS5hZmlpNTc2ODU9MTUwOTtlLmFmaWk1NzY4Nj0xNTEwO2UuYWZpaTU3Njg3PTE1MTE7ZS5hZmlpNTc2ODg9MTUxMjtlLmFmaWk1NzY4OT0xNTEzO2UuYWZpaTU3NjkwPTE1MTQ7ZS5hZmlpNTc2OTQ9NjQyOTg7ZS5hZmlpNTc2OTU9NjQyOTk7ZS5hZmlpNTc3MDA9NjQzMzE7ZS5hZmlpNTc3MDU9NjQyODc7ZS5hZmlpNTc3MTY9MTUyMDtlLmFmaWk1NzcxNz0xNTIxO2UuYWZpaTU3NzE4PTE1MjI7ZS5hZmlpNTc3MjM9NjQzMDk7ZS5hZmlpNTc3OTM9MTQ2MDtlLmFmaWk1Nzc5ND0xNDYxO2UuYWZpaTU3Nzk1PTE0NjI7ZS5hZmlpNTc3OTY9MTQ2NztlLmFmaWk1Nzc5Nz0xNDY0O2UuYWZpaTU3Nzk4PTE0NjM7ZS5hZmlpNTc3OTk9MTQ1NjtlLmFmaWk1NzgwMD0xNDU4O2UuYWZpaTU3ODAxPTE0NTc7ZS5hZmlpNTc4MDI9MTQ1OTtlLmFmaWk1NzgwMz0xNDc0O2UuYWZpaTU3ODA0PTE0NzM7ZS5hZmlpNTc4MDY9MTQ2NTtlLmFmaWk1NzgwNz0xNDY4O2UuYWZpaTU3ODM5PTE0Njk7ZS5hZmlpNTc4NDE9MTQ3MTtlLmFmaWk1Nzg0Mj0xNDcyO2UuYWZpaTU3OTI5PTcwMDtlLmFmaWk2MTI0OD04NDUzO2UuYWZpaTYxMjg5PTg0Njc7ZS5hZmlpNjEzNTI9ODQ3MDtlLmFmaWk2MTU3Mz04MjM2O2UuYWZpaTYxNTc0PTgyMzc7ZS5hZmlpNjE1NzU9ODIzODtlLmFmaWk2MTY2ND04MjA0O2UuYWZpaTYzMTY3PTE2NDU7ZS5hZmlpNjQ5Mzc9NzAxO2UuYWdyYXZlPTIyNDtlLmFndWphcmF0aT0yNjkzO2UuYWd1cm11a2hpPTI1NjU7ZS5haGlyYWdhbmE9MTIzNTQ7ZS5haG9va2Fib3ZlPTc4NDM7ZS5haWJlbmdhbGk9MjQ0ODtlLmFpYm9wb21vZm89MTI1NzQ7ZS5haWRldmE9MjMyMDtlLmFpZWN5cmlsbGljPTEyMzc7ZS5haWd1amFyYXRpPTI3MDQ7ZS5haWd1cm11a2hpPTI1NzY7ZS5haW1hdHJhZ3VybXVraGk9MjYzMjtlLmFpbmFyYWJpYz0xNTkzO2UuYWluZmluYWxhcmFiaWM9NjUyMjY7ZS5haW5pbml0aWFsYXJhYmljPTY1MjI3O2UuYWlubWVkaWFsYXJhYmljPTY1MjI4O2UuYWludmVydGVkYnJldmU9NTE1O2UuYWl2b3dlbHNpZ25iZW5nYWxpPTI1MDQ7ZS5haXZvd2Vsc2lnbmRldmE9MjM3NjtlLmFpdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MDtlLmFrYXRha2FuYT0xMjQ1MDtlLmFrYXRha2FuYWhhbGZ3aWR0aD02NTM5MztlLmFrb3JlYW49MTI2MjM7ZS5hbGVmPTE0ODg7ZS5hbGVmYXJhYmljPTE1NzU7ZS5hbGVmZGFnZXNoaGVicmV3PTY0MzA0O2UuYWxlZmZpbmFsYXJhYmljPTY1MTY2O2UuYWxlZmhhbXphYWJvdmVhcmFiaWM9MTU3MTtlLmFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNTY7ZS5hbGVmaGFtemFiZWxvd2FyYWJpYz0xNTczO2UuYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYz02NTE2MDtlLmFsZWZoZWJyZXc9MTQ4ODtlLmFsZWZsYW1lZGhlYnJldz02NDMzNTtlLmFsZWZtYWRkYWFib3ZlYXJhYmljPTE1NzA7ZS5hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljPTY1MTU0O2UuYWxlZm1ha3N1cmFhcmFiaWM9MTYwOTtlLmFsZWZtYWtzdXJhZmluYWxhcmFiaWM9NjUyNjQ7ZS5hbGVmbWFrc3VyYWluaXRpYWxhcmFiaWM9NjUyNjc7ZS5hbGVmbWFrc3VyYW1lZGlhbGFyYWJpYz02NTI2ODtlLmFsZWZwYXRhaGhlYnJldz02NDMwMjtlLmFsZWZxYW1hdHNoZWJyZXc9NjQzMDM7ZS5hbGVwaD04NTAxO2UuYWxsZXF1YWw9ODc4MDtlLmFscGhhPTk0NTtlLmFscGhhdG9ub3M9OTQwO2UuYW1hY3Jvbj0yNTc7ZS5hbW9ub3NwYWNlPTY1MzQ1O2UuYW1wZXJzYW5kPTM4O2UuYW1wZXJzYW5kbW9ub3NwYWNlPTY1Mjg2O2UuYW1wZXJzYW5kc21hbGw9NjMyNzA7ZS5hbXNxdWFyZT0xMzI1MDtlLmFuYm9wb21vZm89MTI1Nzg7ZS5hbmdib3BvbW9mbz0xMjU4MDtlLmFuZ2JyYWNrZXRsZWZ0PTEyMjk2O2UuYW5nYnJhY2tldHJpZ2h0PTEyMjk3O2UuYW5na2hhbmtodXRoYWk9MzY3NDtlLmFuZ2xlPTg3MzY7ZS5hbmdsZWJyYWNrZXRsZWZ0PTEyMjk2O2UuYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg3O2UuYW5nbGVicmFja2V0cmlnaHQ9MTIyOTc7ZS5hbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDg4O2UuYW5nbGVsZWZ0PTkwMDE7ZS5hbmdsZXJpZ2h0PTkwMDI7ZS5hbmdzdHJvbT04NDkxO2UuYW5vdGVsZWlhPTkwMztlLmFudWRhdHRhZGV2YT0yMzg2O2UuYW51c3ZhcmFiZW5nYWxpPTI0MzQ7ZS5hbnVzdmFyYWRldmE9MjMwNjtlLmFudXN2YXJhZ3VqYXJhdGk9MjY5MDtlLmFvZ29uZWs9MjYxO2UuYXBhYXRvc3F1YXJlPTEzMDU2O2UuYXBhcmVuPTkzNzI7ZS5hcG9zdHJvcGhlYXJtZW5pYW49MTM3MDtlLmFwb3N0cm9waGVtb2Q9NzAwO2UuYXBwbGU9NjM3NDM7ZS5hcHByb2FjaGVzPTg3ODQ7ZS5hcHByb3hlcXVhbD04Nzc2O2UuYXBwcm94ZXF1YWxvcmltYWdlPTg3ODY7ZS5hcHByb3hpbWF0ZWx5ZXF1YWw9ODc3MztlLmFyYWVhZWtvcmVhbj0xMjY4NjtlLmFyYWVha29yZWFuPTEyNjg1O2UuYXJjPTg5Nzg7ZS5hcmlnaHRoYWxmcmluZz03ODM0O2UuYXJpbmc9MjI5O2UuYXJpbmdhY3V0ZT01MDc7ZS5hcmluZ2JlbG93PTc2ODE7ZS5hcnJvd2JvdGg9ODU5NjtlLmFycm93ZGFzaGRvd249ODY3NTtlLmFycm93ZGFzaGxlZnQ9ODY3MjtlLmFycm93ZGFzaHJpZ2h0PTg2NzQ7ZS5hcnJvd2Rhc2h1cD04NjczO2UuYXJyb3dkYmxib3RoPTg2NjA7ZS5hcnJvd2RibGRvd249ODY1OTtlLmFycm93ZGJsbGVmdD04NjU2O2UuYXJyb3dkYmxyaWdodD04NjU4O2UuYXJyb3dkYmx1cD04NjU3O2UuYXJyb3dkb3duPTg1OTU7ZS5hcnJvd2Rvd25sZWZ0PTg2MDE7ZS5hcnJvd2Rvd25yaWdodD04NjAwO2UuYXJyb3dkb3dud2hpdGU9ODY4MTtlLmFycm93aGVhZGRvd25tb2Q9NzA5O2UuYXJyb3doZWFkbGVmdG1vZD03MDY7ZS5hcnJvd2hlYWRyaWdodG1vZD03MDc7ZS5hcnJvd2hlYWR1cG1vZD03MDg7ZS5hcnJvd2hvcml6ZXg9NjM3MTk7ZS5hcnJvd2xlZnQ9ODU5MjtlLmFycm93bGVmdGRibD04NjU2O2UuYXJyb3dsZWZ0ZGJsc3Ryb2tlPTg2NTM7ZS5hcnJvd2xlZnRvdmVycmlnaHQ9ODY0NjtlLmFycm93bGVmdHdoaXRlPTg2Nzg7ZS5hcnJvd3JpZ2h0PTg1OTQ7ZS5hcnJvd3JpZ2h0ZGJsc3Ryb2tlPTg2NTU7ZS5hcnJvd3JpZ2h0aGVhdnk9MTAxNDI7ZS5hcnJvd3JpZ2h0b3ZlcmxlZnQ9ODY0NDtlLmFycm93cmlnaHR3aGl0ZT04NjgwO2UuYXJyb3d0YWJsZWZ0PTg2NzY7ZS5hcnJvd3RhYnJpZ2h0PTg2Nzc7ZS5hcnJvd3VwPTg1OTM7ZS5hcnJvd3VwZG49ODU5NztlLmFycm93dXBkbmJzZT04NjE2O2UuYXJyb3d1cGRvd25iYXNlPTg2MTY7ZS5hcnJvd3VwbGVmdD04NTk4O2UuYXJyb3d1cGxlZnRvZmRvd249ODY0NTtlLmFycm93dXByaWdodD04NTk5O2UuYXJyb3d1cHdoaXRlPTg2Nzk7ZS5hcnJvd3ZlcnRleD02MzcxODtlLmFzY2lpY2lyY3VtPTk0O2UuYXNjaWljaXJjdW1tb25vc3BhY2U9NjUzNDI7ZS5hc2NpaXRpbGRlPTEyNjtlLmFzY2lpdGlsZGVtb25vc3BhY2U9NjUzNzQ7ZS5hc2NyaXB0PTU5MztlLmFzY3JpcHR0dXJuZWQ9NTk0O2UuYXNtYWxsaGlyYWdhbmE9MTIzNTM7ZS5hc21hbGxrYXRha2FuYT0xMjQ0OTtlLmFzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzgzO2UuYXN0ZXJpc2s9NDI7ZS5hc3Rlcmlza2FsdG9uZWFyYWJpYz0xNjQ1O2UuYXN0ZXJpc2thcmFiaWM9MTY0NTtlLmFzdGVyaXNrbWF0aD04NzI3O2UuYXN0ZXJpc2ttb25vc3BhY2U9NjUyOTA7ZS5hc3Rlcmlza3NtYWxsPTY1MTIxO2UuYXN0ZXJpc209ODI1ODtlLmFzdXBlcmlvcj02MzIwOTtlLmFzeW1wdG90aWNhbGx5ZXF1YWw9ODc3MTtlLmF0PTY0O2UuYXRpbGRlPTIyNztlLmF0bW9ub3NwYWNlPTY1MzEyO2UuYXRzbWFsbD02NTEzMTtlLmF0dXJuZWQ9NTkyO2UuYXViZW5nYWxpPTI0NTI7ZS5hdWJvcG9tb2ZvPTEyNTc2O2UuYXVkZXZhPTIzMjQ7ZS5hdWd1amFyYXRpPTI3MDg7ZS5hdWd1cm11a2hpPTI1ODA7ZS5hdWxlbmd0aG1hcmtiZW5nYWxpPTI1MTk7ZS5hdW1hdHJhZ3VybXVraGk9MjYzNjtlLmF1dm93ZWxzaWduYmVuZ2FsaT0yNTA4O2UuYXV2b3dlbHNpZ25kZXZhPTIzODA7ZS5hdXZvd2Vsc2lnbmd1amFyYXRpPTI3NjQ7ZS5hdmFncmFoYWRldmE9MjM2NTtlLmF5YmFybWVuaWFuPTEzNzc7ZS5heWluPTE1MDY7ZS5heWluYWx0b25laGVicmV3PTY0Mjg4O2UuYXlpbmhlYnJldz0xNTA2O2UuYj05ODtlLmJhYmVuZ2FsaT0yNDc2O2UuYmFja3NsYXNoPTkyO2UuYmFja3NsYXNobW9ub3NwYWNlPTY1MzQwO2UuYmFkZXZhPTIzNDg7ZS5iYWd1amFyYXRpPTI3MzI7ZS5iYWd1cm11a2hpPTI2MDQ7ZS5iYWhpcmFnYW5hPTEyNDAwO2UuYmFodHRoYWk9MzY0NztlLmJha2F0YWthbmE9MTI0OTY7ZS5iYXI9MTI0O2UuYmFybW9ub3NwYWNlPTY1MzcyO2UuYmJvcG9tb2ZvPTEyNTQ5O2UuYmNpcmNsZT05NDI1O2UuYmRvdGFjY2VudD03NjgzO2UuYmRvdGJlbG93PTc2ODU7ZS5iZWFtZWRzaXh0ZWVudGhub3Rlcz05ODM2O2UuYmVjYXVzZT04NzU3O2UuYmVjeXJpbGxpYz0xMDczO2UuYmVoYXJhYmljPTE1NzY7ZS5iZWhmaW5hbGFyYWJpYz02NTE2ODtlLmJlaGluaXRpYWxhcmFiaWM9NjUxNjk7ZS5iZWhpcmFnYW5hPTEyNDA5O2UuYmVobWVkaWFsYXJhYmljPTY1MTcwO2UuYmVobWVlbWluaXRpYWxhcmFiaWM9NjQ2NzE7ZS5iZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjA7ZS5iZWhub29uZmluYWxhcmFiaWM9NjQ2MjE7ZS5iZWthdGFrYW5hPTEyNTA1O2UuYmVuYXJtZW5pYW49MTM3ODtlLmJldD0xNDg5O2UuYmV0YT05NDY7ZS5iZXRhc3ltYm9sZ3JlZWs9OTc2O2UuYmV0ZGFnZXNoPTY0MzA1O2UuYmV0ZGFnZXNoaGVicmV3PTY0MzA1O2UuYmV0aGVicmV3PTE0ODk7ZS5iZXRyYWZlaGVicmV3PTY0MzMyO2UuYmhhYmVuZ2FsaT0yNDc3O2UuYmhhZGV2YT0yMzQ5O2UuYmhhZ3VqYXJhdGk9MjczMztlLmJoYWd1cm11a2hpPTI2MDU7ZS5iaG9vaz01OTU7ZS5iaWhpcmFnYW5hPTEyNDAzO2UuYmlrYXRha2FuYT0xMjQ5OTtlLmJpbGFiaWFsY2xpY2s9NjY0O2UuYmluZGlndXJtdWtoaT0yNTYyO2UuYmlydXNxdWFyZT0xMzEwNTtlLmJsYWNrY2lyY2xlPTk2Nzk7ZS5ibGFja2RpYW1vbmQ9OTY3MDtlLmJsYWNrZG93bnBvaW50aW5ndHJpYW5nbGU9OTY2MDtlLmJsYWNrbGVmdHBvaW50aW5ncG9pbnRlcj05NjY4O2UuYmxhY2tsZWZ0cG9pbnRpbmd0cmlhbmdsZT05NjY0O2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldGxlZnQ9MTIzMDQ7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDgzO2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0PTEyMzA1O2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODQ7ZS5ibGFja2xvd2VybGVmdHRyaWFuZ2xlPTk2OTk7ZS5ibGFja2xvd2VycmlnaHR0cmlhbmdsZT05Njk4O2UuYmxhY2tyZWN0YW5nbGU9OTY0NDtlLmJsYWNrcmlnaHRwb2ludGluZ3BvaW50ZXI9OTY1ODtlLmJsYWNrcmlnaHRwb2ludGluZ3RyaWFuZ2xlPTk2NTQ7ZS5ibGFja3NtYWxsc3F1YXJlPTk2NDI7ZS5ibGFja3NtaWxpbmdmYWNlPTk3ODc7ZS5ibGFja3NxdWFyZT05NjMyO2UuYmxhY2tzdGFyPTk3MzM7ZS5ibGFja3VwcGVybGVmdHRyaWFuZ2xlPTk3MDA7ZS5ibGFja3VwcGVycmlnaHR0cmlhbmdsZT05NzAxO2UuYmxhY2t1cHBvaW50aW5nc21hbGx0cmlhbmdsZT05NjUyO2UuYmxhY2t1cHBvaW50aW5ndHJpYW5nbGU9OTY1MDtlLmJsYW5rPTkyNTE7ZS5ibGluZWJlbG93PTc2ODc7ZS5ibG9jaz05NjA4O2UuYm1vbm9zcGFjZT02NTM0NjtlLmJvYmFpbWFpdGhhaT0zNjEwO2UuYm9oaXJhZ2FuYT0xMjQxMjtlLmJva2F0YWthbmE9MTI1MDg7ZS5icGFyZW49OTM3MztlLmJxc3F1YXJlPTEzMjUxO2UuYnJhY2VleD02MzczMjtlLmJyYWNlbGVmdD0xMjM7ZS5icmFjZWxlZnRidD02MzczMTtlLmJyYWNlbGVmdG1pZD02MzczMDtlLmJyYWNlbGVmdG1vbm9zcGFjZT02NTM3MTtlLmJyYWNlbGVmdHNtYWxsPTY1MTE1O2UuYnJhY2VsZWZ0dHA9NjM3Mjk7ZS5icmFjZWxlZnR2ZXJ0aWNhbD02NTA3OTtlLmJyYWNlcmlnaHQ9MTI1O2UuYnJhY2VyaWdodGJ0PTYzNzQyO2UuYnJhY2VyaWdodG1pZD02Mzc0MTtlLmJyYWNlcmlnaHRtb25vc3BhY2U9NjUzNzM7ZS5icmFjZXJpZ2h0c21hbGw9NjUxMTY7ZS5icmFjZXJpZ2h0dHA9NjM3NDA7ZS5icmFjZXJpZ2h0dmVydGljYWw9NjUwODA7ZS5icmFja2V0bGVmdD05MTtlLmJyYWNrZXRsZWZ0YnQ9NjM3Mjg7ZS5icmFja2V0bGVmdGV4PTYzNzI3O2UuYnJhY2tldGxlZnRtb25vc3BhY2U9NjUzMzk7ZS5icmFja2V0bGVmdHRwPTYzNzI2O2UuYnJhY2tldHJpZ2h0PTkzO2UuYnJhY2tldHJpZ2h0YnQ9NjM3Mzk7ZS5icmFja2V0cmlnaHRleD02MzczODtlLmJyYWNrZXRyaWdodG1vbm9zcGFjZT02NTM0MTtlLmJyYWNrZXRyaWdodHRwPTYzNzM3O2UuYnJldmU9NzI4O2UuYnJldmViZWxvd2NtYj04MTQ7ZS5icmV2ZWNtYj03NzQ7ZS5icmV2ZWludmVydGVkYmVsb3djbWI9ODE1O2UuYnJldmVpbnZlcnRlZGNtYj03ODU7ZS5icmV2ZWludmVydGVkZG91YmxlY21iPTg2NTtlLmJyaWRnZWJlbG93Y21iPTgxMDtlLmJyaWRnZWludmVydGVkYmVsb3djbWI9ODI2O2UuYnJva2VuYmFyPTE2NjtlLmJzdHJva2U9Mzg0O2UuYnN1cGVyaW9yPTYzMjEwO2UuYnRvcGJhcj0zODc7ZS5idWhpcmFnYW5hPTEyNDA2O2UuYnVrYXRha2FuYT0xMjUwMjtlLmJ1bGxldD04MjI2O2UuYnVsbGV0aW52ZXJzZT05Njg4O2UuYnVsbGV0b3BlcmF0b3I9ODcyOTtlLmJ1bGxzZXllPTk2Nzg7ZS5jPTk5O2UuY2Fhcm1lbmlhbj0xMzkwO2UuY2FiZW5nYWxpPTI0NTg7ZS5jYWN1dGU9MjYzO2UuY2FkZXZhPTIzMzA7ZS5jYWd1amFyYXRpPTI3MTQ7ZS5jYWd1cm11a2hpPTI1ODY7ZS5jYWxzcXVhcmU9MTMxOTI7ZS5jYW5kcmFiaW5kdWJlbmdhbGk9MjQzMztlLmNhbmRyYWJpbmR1Y21iPTc4NDtlLmNhbmRyYWJpbmR1ZGV2YT0yMzA1O2UuY2FuZHJhYmluZHVndWphcmF0aT0yNjg5O2UuY2Fwc2xvY2s9ODY4MjtlLmNhcmVvZj04NDUzO2UuY2Fyb249NzExO2UuY2Fyb25iZWxvd2NtYj04MTI7ZS5jYXJvbmNtYj03ODA7ZS5jYXJyaWFnZXJldHVybj04NjI5O2UuY2JvcG9tb2ZvPTEyNTY4O2UuY2Nhcm9uPTI2OTtlLmNjZWRpbGxhPTIzMTtlLmNjZWRpbGxhYWN1dGU9NzY4OTtlLmNjaXJjbGU9OTQyNjtlLmNjaXJjdW1mbGV4PTI2NTtlLmNjdXJsPTU5NztlLmNkb3Q9MjY3O2UuY2RvdGFjY2VudD0yNjc7ZS5jZHNxdWFyZT0xMzI1MztlLmNlZGlsbGE9MTg0O2UuY2VkaWxsYWNtYj04MDc7ZS5jZW50PTE2MjtlLmNlbnRpZ3JhZGU9ODQ1MTtlLmNlbnRpbmZlcmlvcj02MzE5OTtlLmNlbnRtb25vc3BhY2U9NjU1MDQ7ZS5jZW50b2xkc3R5bGU9NjMzOTQ7ZS5jZW50c3VwZXJpb3I9NjMyMDA7ZS5jaGFhcm1lbmlhbj0xNDAxO2UuY2hhYmVuZ2FsaT0yNDU5O2UuY2hhZGV2YT0yMzMxO2UuY2hhZ3VqYXJhdGk9MjcxNTtlLmNoYWd1cm11a2hpPTI1ODc7ZS5jaGJvcG9tb2ZvPTEyNTY0O2UuY2hlYWJraGFzaWFuY3lyaWxsaWM9MTIxMztlLmNoZWNrbWFyaz0xMDAwMztlLmNoZWN5cmlsbGljPTEwOTU7ZS5jaGVkZXNjZW5kZXJhYmtoYXNpYW5jeXJpbGxpYz0xMjE1O2UuY2hlZGVzY2VuZGVyY3lyaWxsaWM9MTIwNztlLmNoZWRpZXJlc2lzY3lyaWxsaWM9MTI2OTtlLmNoZWhhcm1lbmlhbj0xMzk1O2UuY2hla2hha2Fzc2lhbmN5cmlsbGljPTEyMjg7ZS5jaGV2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTEyMDk7ZS5jaGk9OTY3O2UuY2hpZXVjaGFjaXJjbGVrb3JlYW49MTI5MTk7ZS5jaGlldWNoYXBhcmVua29yZWFuPTEyODIzO2UuY2hpZXVjaGNpcmNsZWtvcmVhbj0xMjkwNTtlLmNoaWV1Y2hrb3JlYW49MTI2MTg7ZS5jaGlldWNocGFyZW5rb3JlYW49MTI4MDk7ZS5jaG9jaGFuZ3RoYWk9MzU5NDtlLmNob2NoYW50aGFpPTM1OTI7ZS5jaG9jaGluZ3RoYWk9MzU5MztlLmNob2Nob2V0aGFpPTM1OTY7ZS5jaG9vaz0zOTI7ZS5jaWV1Y2FjaXJjbGVrb3JlYW49MTI5MTg7ZS5jaWV1Y2FwYXJlbmtvcmVhbj0xMjgyMjtlLmNpZXVjY2lyY2xla29yZWFuPTEyOTA0O2UuY2lldWNrb3JlYW49MTI2MTY7ZS5jaWV1Y3BhcmVua29yZWFuPTEyODA4O2UuY2lldWN1cGFyZW5rb3JlYW49MTI4Mjg7ZS5jaXJjbGU9OTY3NTtlLmNpcmNsZWNvcHlydD0xNjk7ZS5jaXJjbGVtdWx0aXBseT04ODU1O2UuY2lyY2xlb3Q9ODg1NztlLmNpcmNsZXBsdXM9ODg1MztlLmNpcmNsZXBvc3RhbG1hcms9MTIzNDI7ZS5jaXJjbGV3aXRobGVmdGhhbGZibGFjaz05NjgwO2UuY2lyY2xld2l0aHJpZ2h0aGFsZmJsYWNrPTk2ODE7ZS5jaXJjdW1mbGV4PTcxMDtlLmNpcmN1bWZsZXhiZWxvd2NtYj04MTM7ZS5jaXJjdW1mbGV4Y21iPTc3MDtlLmNsZWFyPTg5OTk7ZS5jbGlja2FsdmVvbGFyPTQ1MDtlLmNsaWNrZGVudGFsPTQ0ODtlLmNsaWNrbGF0ZXJhbD00NDk7ZS5jbGlja3JldHJvZmxleD00NTE7ZS5jbHViPTk4Mjc7ZS5jbHVic3VpdGJsYWNrPTk4Mjc7ZS5jbHVic3VpdHdoaXRlPTk4MzE7ZS5jbWN1YmVkc3F1YXJlPTEzMjIwO2UuY21vbm9zcGFjZT02NTM0NztlLmNtc3F1YXJlZHNxdWFyZT0xMzIxNjtlLmNvYXJtZW5pYW49MTQwOTtlLmNvbG9uPTU4O2UuY29sb25tb25ldGFyeT04MzUzO2UuY29sb25tb25vc3BhY2U9NjUzMDY7ZS5jb2xvbnNpZ249ODM1MztlLmNvbG9uc21hbGw9NjUxMDk7ZS5jb2xvbnRyaWFuZ3VsYXJoYWxmbW9kPTcyMTtlLmNvbG9udHJpYW5ndWxhcm1vZD03MjA7ZS5jb21tYT00NDtlLmNvbW1hYWJvdmVjbWI9Nzg3O2UuY29tbWFhYm92ZXJpZ2h0Y21iPTc4OTtlLmNvbW1hYWNjZW50PTYzMTcxO2UuY29tbWFhcmFiaWM9MTU0ODtlLmNvbW1hYXJtZW5pYW49MTM3MztlLmNvbW1haW5mZXJpb3I9NjMyMDE7ZS5jb21tYW1vbm9zcGFjZT02NTI5MjtlLmNvbW1hcmV2ZXJzZWRhYm92ZWNtYj03ODg7ZS5jb21tYXJldmVyc2VkbW9kPTcwMTtlLmNvbW1hc21hbGw9NjUxMDQ7ZS5jb21tYXN1cGVyaW9yPTYzMjAyO2UuY29tbWF0dXJuZWRhYm92ZWNtYj03ODY7ZS5jb21tYXR1cm5lZG1vZD02OTk7ZS5jb21wYXNzPTk3ODg7ZS5jb25ncnVlbnQ9ODc3MztlLmNvbnRvdXJpbnRlZ3JhbD04NzUwO2UuY29udHJvbD04OTYzO2UuY29udHJvbEFDSz02O2UuY29udHJvbEJFTD03O2UuY29udHJvbEJTPTg7ZS5jb250cm9sQ0FOPTI0O2UuY29udHJvbENSPTEzO2UuY29udHJvbERDMT0xNztlLmNvbnRyb2xEQzI9MTg7ZS5jb250cm9sREMzPTE5O2UuY29udHJvbERDND0yMDtlLmNvbnRyb2xERUw9MTI3O2UuY29udHJvbERMRT0xNjtlLmNvbnRyb2xFTT0yNTtlLmNvbnRyb2xFTlE9NTtlLmNvbnRyb2xFT1Q9NDtlLmNvbnRyb2xFU0M9Mjc7ZS5jb250cm9sRVRCPTIzO2UuY29udHJvbEVUWD0zO2UuY29udHJvbEZGPTEyO2UuY29udHJvbEZTPTI4O2UuY29udHJvbEdTPTI5O2UuY29udHJvbEhUPTk7ZS5jb250cm9sTEY9MTA7ZS5jb250cm9sTkFLPTIxO2UuY29udHJvbE5VTEw9MDtlLmNvbnRyb2xSUz0zMDtlLmNvbnRyb2xTST0xNTtlLmNvbnRyb2xTTz0xNDtlLmNvbnRyb2xTT1Q9MjtlLmNvbnRyb2xTVFg9MTtlLmNvbnRyb2xTVUI9MjY7ZS5jb250cm9sU1lOPTIyO2UuY29udHJvbFVTPTMxO2UuY29udHJvbFZUPTExO2UuY29weXJpZ2h0PTE2OTtlLmNvcHlyaWdodHNhbnM9NjM3MjE7ZS5jb3B5cmlnaHRzZXJpZj02MzE5MztlLmNvcm5lcmJyYWNrZXRsZWZ0PTEyMzAwO2UuY29ybmVyYnJhY2tldGxlZnRoYWxmd2lkdGg9NjUzNzg7ZS5jb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg5O2UuY29ybmVyYnJhY2tldHJpZ2h0PTEyMzAxO2UuY29ybmVyYnJhY2tldHJpZ2h0aGFsZndpZHRoPTY1Mzc5O2UuY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwOTA7ZS5jb3Jwb3JhdGlvbnNxdWFyZT0xMzE4MztlLmNvc3F1YXJlPTEzMjU1O2UuY292ZXJrZ3NxdWFyZT0xMzI1NDtlLmNwYXJlbj05Mzc0O2UuY3J1emVpcm89ODM1NDtlLmNzdHJldGNoZWQ9NjYzO2UuY3VybHlhbmQ9ODkxMTtlLmN1cmx5b3I9ODkxMDtlLmN1cnJlbmN5PTE2NDtlLmN5ckJyZXZlPTYzMTg1O2UuY3lyRmxleD02MzE4NjtlLmN5cmJyZXZlPTYzMTg4O2UuY3lyZmxleD02MzE4OTtlLmQ9MTAwO2UuZGFhcm1lbmlhbj0xMzgwO2UuZGFiZW5nYWxpPTI0NzA7ZS5kYWRhcmFiaWM9MTU5MDtlLmRhZGV2YT0yMzQyO2UuZGFkZmluYWxhcmFiaWM9NjUyMTQ7ZS5kYWRpbml0aWFsYXJhYmljPTY1MjE1O2UuZGFkbWVkaWFsYXJhYmljPTY1MjE2O2UuZGFnZXNoPTE0Njg7ZS5kYWdlc2hoZWJyZXc9MTQ2ODtlLmRhZ2dlcj04MjI0O2UuZGFnZ2VyZGJsPTgyMjU7ZS5kYWd1amFyYXRpPTI3MjY7ZS5kYWd1cm11a2hpPTI1OTg7ZS5kYWhpcmFnYW5hPTEyMzg0O2UuZGFrYXRha2FuYT0xMjQ4MDtlLmRhbGFyYWJpYz0xNTgzO2UuZGFsZXQ9MTQ5MTtlLmRhbGV0ZGFnZXNoPTY0MzA3O2UuZGFsZXRkYWdlc2hoZWJyZXc9NjQzMDc7ZS5kYWxldGhlYnJldz0xNDkxO2UuZGFsZmluYWxhcmFiaWM9NjUxOTQ7ZS5kYW1tYWFyYWJpYz0xNjE1O2UuZGFtbWFsb3dhcmFiaWM9MTYxNTtlLmRhbW1hdGFuYWx0b25lYXJhYmljPTE2MTI7ZS5kYW1tYXRhbmFyYWJpYz0xNjEyO2UuZGFuZGE9MjQwNDtlLmRhcmdhaGVicmV3PTE0NDc7ZS5kYXJnYWxlZnRoZWJyZXc9MTQ0NztlLmRhc2lhcG5ldW1hdGFjeXJpbGxpY2NtYj0xMTU3O2UuZGJsR3JhdmU9NjMxODc7ZS5kYmxhbmdsZWJyYWNrZXRsZWZ0PTEyMjk4O2UuZGJsYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg1O2UuZGJsYW5nbGVicmFja2V0cmlnaHQ9MTIyOTk7ZS5kYmxhbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDg2O2UuZGJsYXJjaGludmVydGVkYmVsb3djbWI9ODExO2UuZGJsYXJyb3dsZWZ0PTg2NjA7ZS5kYmxhcnJvd3JpZ2h0PTg2NTg7ZS5kYmxkYW5kYT0yNDA1O2UuZGJsZ3JhdmU9NjMxOTA7ZS5kYmxncmF2ZWNtYj03ODM7ZS5kYmxpbnRlZ3JhbD04NzQ4O2UuZGJsbG93bGluZT04MjE1O2UuZGJsbG93bGluZWNtYj04MTk7ZS5kYmxvdmVybGluZWNtYj04MzE7ZS5kYmxwcmltZW1vZD02OTg7ZS5kYmx2ZXJ0aWNhbGJhcj04MjE0O2UuZGJsdmVydGljYWxsaW5lYWJvdmVjbWI9NzgyO2UuZGJvcG9tb2ZvPTEyNTUzO2UuZGJzcXVhcmU9MTMyNTY7ZS5kY2Fyb249MjcxO2UuZGNlZGlsbGE9NzY5NztlLmRjaXJjbGU9OTQyNztlLmRjaXJjdW1mbGV4YmVsb3c9NzY5OTtlLmRjcm9hdD0yNzM7ZS5kZGFiZW5nYWxpPTI0NjU7ZS5kZGFkZXZhPTIzMzc7ZS5kZGFndWphcmF0aT0yNzIxO2UuZGRhZ3VybXVraGk9MjU5MztlLmRkYWxhcmFiaWM9MTY3MjtlLmRkYWxmaW5hbGFyYWJpYz02NDM5MztlLmRkZGhhZGV2YT0yMzk2O2UuZGRoYWJlbmdhbGk9MjQ2NjtlLmRkaGFkZXZhPTIzMzg7ZS5kZGhhZ3VqYXJhdGk9MjcyMjtlLmRkaGFndXJtdWtoaT0yNTk0O2UuZGRvdGFjY2VudD03NjkxO2UuZGRvdGJlbG93PTc2OTM7ZS5kZWNpbWFsc2VwYXJhdG9yYXJhYmljPTE2NDM7ZS5kZWNpbWFsc2VwYXJhdG9ycGVyc2lhbj0xNjQzO2UuZGVjeXJpbGxpYz0xMDc2O2UuZGVncmVlPTE3NjtlLmRlaGloZWJyZXc9MTQ1MztlLmRlaGlyYWdhbmE9MTIzOTE7ZS5kZWljb3B0aWM9MTAwNztlLmRla2F0YWthbmE9MTI0ODc7ZS5kZWxldGVsZWZ0PTkwMDM7ZS5kZWxldGVyaWdodD04OTk4O2UuZGVsdGE9OTQ4O2UuZGVsdGF0dXJuZWQ9Mzk3O2UuZGVub21pbmF0b3JtaW51c29uZW51bWVyYXRvcmJlbmdhbGk9MjU1MjtlLmRlemg9Njc2O2UuZGhhYmVuZ2FsaT0yNDcxO2UuZGhhZGV2YT0yMzQzO2UuZGhhZ3VqYXJhdGk9MjcyNztlLmRoYWd1cm11a2hpPTI1OTk7ZS5kaG9vaz01OTk7ZS5kaWFseXRpa2F0b25vcz05MDE7ZS5kaWFseXRpa2F0b25vc2NtYj04MzY7ZS5kaWFtb25kPTk4MzA7ZS5kaWFtb25kc3VpdHdoaXRlPTk4MjY7ZS5kaWVyZXNpcz0xNjg7ZS5kaWVyZXNpc2FjdXRlPTYzMTkxO2UuZGllcmVzaXNiZWxvd2NtYj04MDQ7ZS5kaWVyZXNpc2NtYj03NzY7ZS5kaWVyZXNpc2dyYXZlPTYzMTkyO2UuZGllcmVzaXN0b25vcz05MDE7ZS5kaWhpcmFnYW5hPTEyMzg2O2UuZGlrYXRha2FuYT0xMjQ4MjtlLmRpdHRvbWFyaz0xMjI5MTtlLmRpdmlkZT0yNDc7ZS5kaXZpZGVzPTg3Mzk7ZS5kaXZpc2lvbnNsYXNoPTg3MjU7ZS5kamVjeXJpbGxpYz0xMTA2O2UuZGtzaGFkZT05NjE5O2UuZGxpbmViZWxvdz03Njk1O2UuZGxzcXVhcmU9MTMyMDc7ZS5kbWFjcm9uPTI3MztlLmRtb25vc3BhY2U9NjUzNDg7ZS5kbmJsb2NrPTk2MDQ7ZS5kb2NoYWRhdGhhaT0zNTk4O2UuZG9kZWt0aGFpPTM2MDQ7ZS5kb2hpcmFnYW5hPTEyMzkzO2UuZG9rYXRha2FuYT0xMjQ4OTtlLmRvbGxhcj0zNjtlLmRvbGxhcmluZmVyaW9yPTYzMjAzO2UuZG9sbGFybW9ub3NwYWNlPTY1Mjg0O2UuZG9sbGFyb2xkc3R5bGU9NjMyNjg7ZS5kb2xsYXJzbWFsbD02NTEyOTtlLmRvbGxhcnN1cGVyaW9yPTYzMjA0O2UuZG9uZz04MzYzO2UuZG9ydXNxdWFyZT0xMzA5NDtlLmRvdGFjY2VudD03Mjk7ZS5kb3RhY2NlbnRjbWI9Nzc1O2UuZG90YmVsb3djbWI9ODAzO2UuZG90YmVsb3djb21iPTgwMztlLmRvdGthdGFrYW5hPTEyNTM5O2UuZG90bGVzc2k9MzA1O2UuZG90bGVzc2o9NjMxNjY7ZS5kb3RsZXNzanN0cm9rZWhvb2s9NjQ0O2UuZG90bWF0aD04OTAxO2UuZG90dGVkY2lyY2xlPTk2NzY7ZS5kb3VibGV5b2RwYXRhaD02NDI4NztlLmRvdWJsZXlvZHBhdGFoaGVicmV3PTY0Mjg3O2UuZG93bnRhY2tiZWxvd2NtYj03OTg7ZS5kb3dudGFja21vZD03MjU7ZS5kcGFyZW49OTM3NTtlLmRzdXBlcmlvcj02MzIxMTtlLmR0YWlsPTU5ODtlLmR0b3BiYXI9Mzk2O2UuZHVoaXJhZ2FuYT0xMjM4OTtlLmR1a2F0YWthbmE9MTI0ODU7ZS5kej00OTk7ZS5kemFsdG9uZT02NzU7ZS5kemNhcm9uPTQ1NDtlLmR6Y3VybD02Nzc7ZS5kemVhYmtoYXNpYW5jeXJpbGxpYz0xMjQ5O2UuZHplY3lyaWxsaWM9MTEwOTtlLmR6aGVjeXJpbGxpYz0xMTE5O2UuZT0xMDE7ZS5lYWN1dGU9MjMzO2UuZWFydGg9OTc5MztlLmViZW5nYWxpPTI0NDc7ZS5lYm9wb21vZm89MTI1NzI7ZS5lYnJldmU9Mjc3O2UuZWNhbmRyYWRldmE9MjMxNztlLmVjYW5kcmFndWphcmF0aT0yNzAxO2UuZWNhbmRyYXZvd2Vsc2lnbmRldmE9MjM3MztlLmVjYW5kcmF2b3dlbHNpZ25ndWphcmF0aT0yNzU3O2UuZWNhcm9uPTI4MztlLmVjZWRpbGxhYnJldmU9NzcwOTtlLmVjaGFybWVuaWFuPTEzODE7ZS5lY2h5aXduYXJtZW5pYW49MTQxNTtlLmVjaXJjbGU9OTQyODtlLmVjaXJjdW1mbGV4PTIzNDtlLmVjaXJjdW1mbGV4YWN1dGU9Nzg3MTtlLmVjaXJjdW1mbGV4YmVsb3c9NzcwNTtlLmVjaXJjdW1mbGV4ZG90YmVsb3c9Nzg3OTtlLmVjaXJjdW1mbGV4Z3JhdmU9Nzg3MztlLmVjaXJjdW1mbGV4aG9va2Fib3ZlPTc4NzU7ZS5lY2lyY3VtZmxleHRpbGRlPTc4Nzc7ZS5lY3lyaWxsaWM9MTEwODtlLmVkYmxncmF2ZT01MTc7ZS5lZGV2YT0yMzE5O2UuZWRpZXJlc2lzPTIzNTtlLmVkb3Q9Mjc5O2UuZWRvdGFjY2VudD0yNzk7ZS5lZG90YmVsb3c9Nzg2NTtlLmVlZ3VybXVraGk9MjU3NTtlLmVlbWF0cmFndXJtdWtoaT0yNjMxO2UuZWZjeXJpbGxpYz0xMDkyO2UuZWdyYXZlPTIzMjtlLmVndWphcmF0aT0yNzAzO2UuZWhhcm1lbmlhbj0xMzgzO2UuZWhib3BvbW9mbz0xMjU3MztlLmVoaXJhZ2FuYT0xMjM2MDtlLmVob29rYWJvdmU9Nzg2NztlLmVpYm9wb21vZm89MTI1NzU7ZS5laWdodD01NjtlLmVpZ2h0YXJhYmljPTE2NDA7ZS5laWdodGJlbmdhbGk9MjU0MjtlLmVpZ2h0Y2lyY2xlPTkzMTk7ZS5laWdodGNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjk7ZS5laWdodGRldmE9MjQxNDtlLmVpZ2h0ZWVuY2lyY2xlPTkzMjk7ZS5laWdodGVlbnBhcmVuPTkzNDk7ZS5laWdodGVlbnBlcmlvZD05MzY5O2UuZWlnaHRndWphcmF0aT0yNzk4O2UuZWlnaHRndXJtdWtoaT0yNjcwO2UuZWlnaHRoYWNrYXJhYmljPTE2NDA7ZS5laWdodGhhbmd6aG91PTEyMzI4O2UuZWlnaHRobm90ZWJlYW1lZD05ODM1O2UuZWlnaHRpZGVvZ3JhcGhpY3BhcmVuPTEyODM5O2UuZWlnaHRpbmZlcmlvcj04MzI4O2UuZWlnaHRtb25vc3BhY2U9NjUzMDQ7ZS5laWdodG9sZHN0eWxlPTYzMjg4O2UuZWlnaHRwYXJlbj05MzM5O2UuZWlnaHRwZXJpb2Q9OTM1OTtlLmVpZ2h0cGVyc2lhbj0xNzg0O2UuZWlnaHRyb21hbj04NTY3O2UuZWlnaHRzdXBlcmlvcj04MzEyO2UuZWlnaHR0aGFpPTM2NzI7ZS5laW52ZXJ0ZWRicmV2ZT01MTk7ZS5laW90aWZpZWRjeXJpbGxpYz0xMTI1O2UuZWthdGFrYW5hPTEyNDU2O2UuZWthdGFrYW5haGFsZndpZHRoPTY1Mzk2O2UuZWtvbmthcmd1cm11a2hpPTI2NzY7ZS5la29yZWFuPTEyNjI4O2UuZWxjeXJpbGxpYz0xMDgzO2UuZWxlbWVudD04NzEyO2UuZWxldmVuY2lyY2xlPTkzMjI7ZS5lbGV2ZW5wYXJlbj05MzQyO2UuZWxldmVucGVyaW9kPTkzNjI7ZS5lbGV2ZW5yb21hbj04NTcwO2UuZWxsaXBzaXM9ODIzMDtlLmVsbGlwc2lzdmVydGljYWw9ODk0MjtlLmVtYWNyb249Mjc1O2UuZW1hY3JvbmFjdXRlPTc3MDM7ZS5lbWFjcm9uZ3JhdmU9NzcwMTtlLmVtY3lyaWxsaWM9MTA4NDtlLmVtZGFzaD04MjEyO2UuZW1kYXNodmVydGljYWw9NjUwNzM7ZS5lbW9ub3NwYWNlPTY1MzQ5O2UuZW1waGFzaXNtYXJrYXJtZW5pYW49MTM3MTtlLmVtcHR5c2V0PTg3MDk7ZS5lbmJvcG9tb2ZvPTEyNTc5O2UuZW5jeXJpbGxpYz0xMDg1O2UuZW5kYXNoPTgyMTE7ZS5lbmRhc2h2ZXJ0aWNhbD02NTA3NDtlLmVuZGVzY2VuZGVyY3lyaWxsaWM9MTE4NztlLmVuZz0zMzE7ZS5lbmdib3BvbW9mbz0xMjU4MTtlLmVuZ2hlY3lyaWxsaWM9MTE4OTtlLmVuaG9va2N5cmlsbGljPTEyMjQ7ZS5lbnNwYWNlPTgxOTQ7ZS5lb2dvbmVrPTI4MTtlLmVva29yZWFuPTEyNjI3O2UuZW9wZW49NjAzO2UuZW9wZW5jbG9zZWQ9NjY2O2UuZW9wZW5yZXZlcnNlZD02MDQ7ZS5lb3BlbnJldmVyc2VkY2xvc2VkPTYwNjtlLmVvcGVucmV2ZXJzZWRob29rPTYwNTtlLmVwYXJlbj05Mzc2O2UuZXBzaWxvbj05NDk7ZS5lcHNpbG9udG9ub3M9OTQxO2UuZXF1YWw9NjE7ZS5lcXVhbG1vbm9zcGFjZT02NTMwOTtlLmVxdWFsc21hbGw9NjUxMjY7ZS5lcXVhbHN1cGVyaW9yPTgzMTY7ZS5lcXVpdmFsZW5jZT04ODAxO2UuZXJib3BvbW9mbz0xMjU4MjtlLmVyY3lyaWxsaWM9MTA4ODtlLmVyZXZlcnNlZD02MDA7ZS5lcmV2ZXJzZWRjeXJpbGxpYz0xMTAxO2UuZXNjeXJpbGxpYz0xMDg5O2UuZXNkZXNjZW5kZXJjeXJpbGxpYz0xMTk1O2UuZXNoPTY0MztlLmVzaGN1cmw9NjQ2O2UuZXNob3J0ZGV2YT0yMzE4O2UuZXNob3J0dm93ZWxzaWduZGV2YT0yMzc0O2UuZXNocmV2ZXJzZWRsb29wPTQyNjtlLmVzaHNxdWF0cmV2ZXJzZWQ9NjQ1O2UuZXNtYWxsaGlyYWdhbmE9MTIzNTk7ZS5lc21hbGxrYXRha2FuYT0xMjQ1NTtlLmVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg2O2UuZXN0aW1hdGVkPTg0OTQ7ZS5lc3VwZXJpb3I9NjMyMTI7ZS5ldGE9OTUxO2UuZXRhcm1lbmlhbj0xMzg0O2UuZXRhdG9ub3M9OTQyO2UuZXRoPTI0MDtlLmV0aWxkZT03ODY5O2UuZXRpbGRlYmVsb3c9NzcwNztlLmV0bmFodGFmb3VraGhlYnJldz0xNDI1O2UuZXRuYWh0YWZvdWtobGVmdGhlYnJldz0xNDI1O2UuZXRuYWh0YWhlYnJldz0xNDI1O2UuZXRuYWh0YWxlZnRoZWJyZXc9MTQyNTtlLmV0dXJuZWQ9NDc3O2UuZXVrb3JlYW49MTI2NDE7ZS5ldXJvPTgzNjQ7ZS5ldm93ZWxzaWduYmVuZ2FsaT0yNTAzO2UuZXZvd2Vsc2lnbmRldmE9MjM3NTtlLmV2b3dlbHNpZ25ndWphcmF0aT0yNzU5O2UuZXhjbGFtPTMzO2UuZXhjbGFtYXJtZW5pYW49MTM3MjtlLmV4Y2xhbWRibD04MjUyO2UuZXhjbGFtZG93bj0xNjE7ZS5leGNsYW1kb3duc21hbGw9NjMzOTM7ZS5leGNsYW1tb25vc3BhY2U9NjUyODE7ZS5leGNsYW1zbWFsbD02MzI2NTtlLmV4aXN0ZW50aWFsPTg3MDc7ZS5lemg9NjU4O2UuZXpoY2Fyb249NDk1O2UuZXpoY3VybD02NTk7ZS5lemhyZXZlcnNlZD00NDE7ZS5lemh0YWlsPTQ0MjtlLmY9MTAyO2UuZmFkZXZhPTIzOTg7ZS5mYWd1cm11a2hpPTI2NTQ7ZS5mYWhyZW5oZWl0PTg0NTc7ZS5mYXRoYWFyYWJpYz0xNjE0O2UuZmF0aGFsb3dhcmFiaWM9MTYxNDtlLmZhdGhhdGFuYXJhYmljPTE2MTE7ZS5mYm9wb21vZm89MTI1NTI7ZS5mY2lyY2xlPTk0Mjk7ZS5mZG90YWNjZW50PTc3MTE7ZS5mZWhhcmFiaWM9MTYwMTtlLmZlaGFybWVuaWFuPTE0MTQ7ZS5mZWhmaW5hbGFyYWJpYz02NTIzNDtlLmZlaGluaXRpYWxhcmFiaWM9NjUyMzU7ZS5mZWhtZWRpYWxhcmFiaWM9NjUyMzY7ZS5mZWljb3B0aWM9OTk3O2UuZmVtYWxlPTk3OTI7ZS5mZj02NDI1NjtlLmZfZj02NDI1NjtlLmZmaT02NDI1OTtlLmZfZl9pPTY0MjU5O2UuZmZsPTY0MjYwO2UuZl9mX2w9NjQyNjA7ZS5maT02NDI1NztlLmZfaT02NDI1NztlLmZpZnRlZW5jaXJjbGU9OTMyNjtlLmZpZnRlZW5wYXJlbj05MzQ2O2UuZmlmdGVlbnBlcmlvZD05MzY2O2UuZmlndXJlZGFzaD04MjEwO2UuZmlsbGVkYm94PTk2MzI7ZS5maWxsZWRyZWN0PTk2NDQ7ZS5maW5hbGthZj0xNDk4O2UuZmluYWxrYWZkYWdlc2g9NjQzMTQ7ZS5maW5hbGthZmRhZ2VzaGhlYnJldz02NDMxNDtlLmZpbmFsa2FmaGVicmV3PTE0OTg7ZS5maW5hbG1lbT0xNTAxO2UuZmluYWxtZW1oZWJyZXc9MTUwMTtlLmZpbmFsbnVuPTE1MDM7ZS5maW5hbG51bmhlYnJldz0xNTAzO2UuZmluYWxwZT0xNTA3O2UuZmluYWxwZWhlYnJldz0xNTA3O2UuZmluYWx0c2FkaT0xNTA5O2UuZmluYWx0c2FkaWhlYnJldz0xNTA5O2UuZmlyc3R0b25lY2hpbmVzZT03MTM7ZS5maXNoZXllPTk2NzM7ZS5maXRhY3lyaWxsaWM9MTEzOTtlLmZpdmU9NTM7ZS5maXZlYXJhYmljPTE2Mzc7ZS5maXZlYmVuZ2FsaT0yNTM5O2UuZml2ZWNpcmNsZT05MzE2O2UuZml2ZWNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjY7ZS5maXZlZGV2YT0yNDExO2UuZml2ZWVpZ2h0aHM9ODU0MTtlLmZpdmVndWphcmF0aT0yNzk1O2UuZml2ZWd1cm11a2hpPTI2Njc7ZS5maXZlaGFja2FyYWJpYz0xNjM3O2UuZml2ZWhhbmd6aG91PTEyMzI1O2UuZml2ZWlkZW9ncmFwaGljcGFyZW49MTI4MzY7ZS5maXZlaW5mZXJpb3I9ODMyNTtlLmZpdmVtb25vc3BhY2U9NjUzMDE7ZS5maXZlb2xkc3R5bGU9NjMyODU7ZS5maXZlcGFyZW49OTMzNjtlLmZpdmVwZXJpb2Q9OTM1NjtlLmZpdmVwZXJzaWFuPTE3ODE7ZS5maXZlcm9tYW49ODU2NDtlLmZpdmVzdXBlcmlvcj04MzA5O2UuZml2ZXRoYWk9MzY2OTtlLmZsPTY0MjU4O2UuZl9sPTY0MjU4O2UuZmxvcmluPTQwMjtlLmZtb25vc3BhY2U9NjUzNTA7ZS5mbXNxdWFyZT0xMzIwOTtlLmZvZmFudGhhaT0zNjE1O2UuZm9mYXRoYWk9MzYxMztlLmZvbmdtYW50aGFpPTM2NjM7ZS5mb3JhbGw9ODcwNDtlLmZvdXI9NTI7ZS5mb3VyYXJhYmljPTE2MzY7ZS5mb3VyYmVuZ2FsaT0yNTM4O2UuZm91cmNpcmNsZT05MzE1O2UuZm91cmNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjU7ZS5mb3VyZGV2YT0yNDEwO2UuZm91cmd1amFyYXRpPTI3OTQ7ZS5mb3VyZ3VybXVraGk9MjY2NjtlLmZvdXJoYWNrYXJhYmljPTE2MzY7ZS5mb3VyaGFuZ3pob3U9MTIzMjQ7ZS5mb3VyaWRlb2dyYXBoaWNwYXJlbj0xMjgzNTtlLmZvdXJpbmZlcmlvcj04MzI0O2UuZm91cm1vbm9zcGFjZT02NTMwMDtlLmZvdXJudW1lcmF0b3JiZW5nYWxpPTI1NTE7ZS5mb3Vyb2xkc3R5bGU9NjMyODQ7ZS5mb3VycGFyZW49OTMzNTtlLmZvdXJwZXJpb2Q9OTM1NTtlLmZvdXJwZXJzaWFuPTE3ODA7ZS5mb3Vycm9tYW49ODU2MztlLmZvdXJzdXBlcmlvcj04MzA4O2UuZm91cnRlZW5jaXJjbGU9OTMyNTtlLmZvdXJ0ZWVucGFyZW49OTM0NTtlLmZvdXJ0ZWVucGVyaW9kPTkzNjU7ZS5mb3VydGhhaT0zNjY4O2UuZm91cnRodG9uZWNoaW5lc2U9NzE1O2UuZnBhcmVuPTkzNzc7ZS5mcmFjdGlvbj04MjYwO2UuZnJhbmM9ODM1NTtlLmc9MTAzO2UuZ2FiZW5nYWxpPTI0NTU7ZS5nYWN1dGU9NTAxO2UuZ2FkZXZhPTIzMjc7ZS5nYWZhcmFiaWM9MTcxMTtlLmdhZmZpbmFsYXJhYmljPTY0NDAzO2UuZ2FmaW5pdGlhbGFyYWJpYz02NDQwNDtlLmdhZm1lZGlhbGFyYWJpYz02NDQwNTtlLmdhZ3VqYXJhdGk9MjcxMTtlLmdhZ3VybXVraGk9MjU4MztlLmdhaGlyYWdhbmE9MTIzNjQ7ZS5nYWthdGFrYW5hPTEyNDYwO2UuZ2FtbWE9OTQ3O2UuZ2FtbWFsYXRpbnNtYWxsPTYxMTtlLmdhbW1hc3VwZXJpb3I9NzM2O2UuZ2FuZ2lhY29wdGljPTEwMDM7ZS5nYm9wb21vZm89MTI1NTc7ZS5nYnJldmU9Mjg3O2UuZ2Nhcm9uPTQ4NztlLmdjZWRpbGxhPTI5MTtlLmdjaXJjbGU9OTQzMDtlLmdjaXJjdW1mbGV4PTI4NTtlLmdjb21tYWFjY2VudD0yOTE7ZS5nZG90PTI4OTtlLmdkb3RhY2NlbnQ9Mjg5O2UuZ2VjeXJpbGxpYz0xMDc1O2UuZ2VoaXJhZ2FuYT0xMjM3MDtlLmdla2F0YWthbmE9MTI0NjY7ZS5nZW9tZXRyaWNhbGx5ZXF1YWw9ODc4NTtlLmdlcmVzaGFjY2VudGhlYnJldz0xNDM2O2UuZ2VyZXNoaGVicmV3PTE1MjM7ZS5nZXJlc2htdXFkYW1oZWJyZXc9MTQzNztlLmdlcm1hbmRibHM9MjIzO2UuZ2Vyc2hheWltYWNjZW50aGVicmV3PTE0Mzg7ZS5nZXJzaGF5aW1oZWJyZXc9MTUyNDtlLmdldGFtYXJrPTEyMzA3O2UuZ2hhYmVuZ2FsaT0yNDU2O2UuZ2hhZGFybWVuaWFuPTEzOTQ7ZS5naGFkZXZhPTIzMjg7ZS5naGFndWphcmF0aT0yNzEyO2UuZ2hhZ3VybXVraGk9MjU4NDtlLmdoYWluYXJhYmljPTE1OTQ7ZS5naGFpbmZpbmFsYXJhYmljPTY1MjMwO2UuZ2hhaW5pbml0aWFsYXJhYmljPTY1MjMxO2UuZ2hhaW5tZWRpYWxhcmFiaWM9NjUyMzI7ZS5naGVtaWRkbGVob29rY3lyaWxsaWM9MTE3MztlLmdoZXN0cm9rZWN5cmlsbGljPTExNzE7ZS5naGV1cHR1cm5jeXJpbGxpYz0xMTY5O2UuZ2hoYWRldmE9MjM5NDtlLmdoaGFndXJtdWtoaT0yNjUwO2UuZ2hvb2s9NjA4O2UuZ2h6c3F1YXJlPTEzMjAzO2UuZ2loaXJhZ2FuYT0xMjM2NjtlLmdpa2F0YWthbmE9MTI0NjI7ZS5naW1hcm1lbmlhbj0xMzc5O2UuZ2ltZWw9MTQ5MDtlLmdpbWVsZGFnZXNoPTY0MzA2O2UuZ2ltZWxkYWdlc2hoZWJyZXc9NjQzMDY7ZS5naW1lbGhlYnJldz0xNDkwO2UuZ2plY3lyaWxsaWM9MTEwNztlLmdsb3R0YWxpbnZlcnRlZHN0cm9rZT00NDY7ZS5nbG90dGFsc3RvcD02NjA7ZS5nbG90dGFsc3RvcGludmVydGVkPTY2MjtlLmdsb3R0YWxzdG9wbW9kPTcwNDtlLmdsb3R0YWxzdG9wcmV2ZXJzZWQ9NjYxO2UuZ2xvdHRhbHN0b3ByZXZlcnNlZG1vZD03MDU7ZS5nbG90dGFsc3RvcHJldmVyc2Vkc3VwZXJpb3I9NzQwO2UuZ2xvdHRhbHN0b3BzdHJva2U9NjczO2UuZ2xvdHRhbHN0b3BzdHJva2VyZXZlcnNlZD02NzQ7ZS5nbWFjcm9uPTc3MTM7ZS5nbW9ub3NwYWNlPTY1MzUxO2UuZ29oaXJhZ2FuYT0xMjM3MjtlLmdva2F0YWthbmE9MTI0Njg7ZS5ncGFyZW49OTM3ODtlLmdwYXNxdWFyZT0xMzIyODtlLmdyYWRpZW50PTg3MTE7ZS5ncmF2ZT05NjtlLmdyYXZlYmVsb3djbWI9NzkwO2UuZ3JhdmVjbWI9NzY4O2UuZ3JhdmVjb21iPTc2ODtlLmdyYXZlZGV2YT0yMzg3O2UuZ3JhdmVsb3dtb2Q9NzE4O2UuZ3JhdmVtb25vc3BhY2U9NjUzNDQ7ZS5ncmF2ZXRvbmVjbWI9ODMyO2UuZ3JlYXRlcj02MjtlLmdyZWF0ZXJlcXVhbD04ODA1O2UuZ3JlYXRlcmVxdWFsb3JsZXNzPTg5MjM7ZS5ncmVhdGVybW9ub3NwYWNlPTY1MzEwO2UuZ3JlYXRlcm9yZXF1aXZhbGVudD04ODE5O2UuZ3JlYXRlcm9ybGVzcz04ODIzO2UuZ3JlYXRlcm92ZXJlcXVhbD04ODA3O2UuZ3JlYXRlcnNtYWxsPTY1MTI1O2UuZ3NjcmlwdD02MDk7ZS5nc3Ryb2tlPTQ4NTtlLmd1aGlyYWdhbmE9MTIzNjg7ZS5ndWlsbGVtb3RsZWZ0PTE3MTtlLmd1aWxsZW1vdHJpZ2h0PTE4NztlLmd1aWxzaW5nbGxlZnQ9ODI0OTtlLmd1aWxzaW5nbHJpZ2h0PTgyNTA7ZS5ndWthdGFrYW5hPTEyNDY0O2UuZ3VyYW11c3F1YXJlPTEzMDgwO2UuZ3lzcXVhcmU9MTMyNTc7ZS5oPTEwNDtlLmhhYWJraGFzaWFuY3lyaWxsaWM9MTE5MztlLmhhYWx0b25lYXJhYmljPTE3Mjk7ZS5oYWJlbmdhbGk9MjQ4OTtlLmhhZGVzY2VuZGVyY3lyaWxsaWM9MTIwMztlLmhhZGV2YT0yMzYxO2UuaGFndWphcmF0aT0yNzQ1O2UuaGFndXJtdWtoaT0yNjE3O2UuaGFoYXJhYmljPTE1ODE7ZS5oYWhmaW5hbGFyYWJpYz02NTE4NjtlLmhhaGluaXRpYWxhcmFiaWM9NjUxODc7ZS5oYWhpcmFnYW5hPTEyMzk5O2UuaGFobWVkaWFsYXJhYmljPTY1MTg4O2UuaGFpdHVzcXVhcmU9MTMwOTg7ZS5oYWthdGFrYW5hPTEyNDk1O2UuaGFrYXRha2FuYWhhbGZ3aWR0aD02NTQxODtlLmhhbGFudGd1cm11a2hpPTI2Mzc7ZS5oYW16YWFyYWJpYz0xNTY5O2UuaGFtemFsb3dhcmFiaWM9MTU2OTtlLmhhbmd1bGZpbGxlcj0xMjY0NDtlLmhhcmRzaWduY3lyaWxsaWM9MTA5ODtlLmhhcnBvb25sZWZ0YmFyYnVwPTg2MzY7ZS5oYXJwb29ucmlnaHRiYXJidXA9ODY0MDtlLmhhc3F1YXJlPTEzMjU4O2UuaGF0YWZwYXRhaD0xNDU4O2UuaGF0YWZwYXRhaDE2PTE0NTg7ZS5oYXRhZnBhdGFoMjM9MTQ1ODtlLmhhdGFmcGF0YWgyZj0xNDU4O2UuaGF0YWZwYXRhaGhlYnJldz0xNDU4O2UuaGF0YWZwYXRhaG5hcnJvd2hlYnJldz0xNDU4O2UuaGF0YWZwYXRhaHF1YXJ0ZXJoZWJyZXc9MTQ1ODtlLmhhdGFmcGF0YWh3aWRlaGVicmV3PTE0NTg7ZS5oYXRhZnFhbWF0cz0xNDU5O2UuaGF0YWZxYW1hdHMxYj0xNDU5O2UuaGF0YWZxYW1hdHMyOD0xNDU5O2UuaGF0YWZxYW1hdHMzND0xNDU5O2UuaGF0YWZxYW1hdHNoZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzbmFycm93aGVicmV3PTE0NTk7ZS5oYXRhZnFhbWF0c3F1YXJ0ZXJoZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzd2lkZWhlYnJldz0xNDU5O2UuaGF0YWZzZWdvbD0xNDU3O2UuaGF0YWZzZWdvbDE3PTE0NTc7ZS5oYXRhZnNlZ29sMjQ9MTQ1NztlLmhhdGFmc2Vnb2wzMD0xNDU3O2UuaGF0YWZzZWdvbGhlYnJldz0xNDU3O2UuaGF0YWZzZWdvbG5hcnJvd2hlYnJldz0xNDU3O2UuaGF0YWZzZWdvbHF1YXJ0ZXJoZWJyZXc9MTQ1NztlLmhhdGFmc2Vnb2x3aWRlaGVicmV3PTE0NTc7ZS5oYmFyPTI5NTtlLmhib3BvbW9mbz0xMjU1OTtlLmhicmV2ZWJlbG93PTc3MjM7ZS5oY2VkaWxsYT03NzIxO2UuaGNpcmNsZT05NDMxO2UuaGNpcmN1bWZsZXg9MjkzO2UuaGRpZXJlc2lzPTc3MTk7ZS5oZG90YWNjZW50PTc3MTU7ZS5oZG90YmVsb3c9NzcxNztlLmhlPTE0OTI7ZS5oZWFydD05ODI5O2UuaGVhcnRzdWl0YmxhY2s9OTgyOTtlLmhlYXJ0c3VpdHdoaXRlPTk4MjU7ZS5oZWRhZ2VzaD02NDMwODtlLmhlZGFnZXNoaGVicmV3PTY0MzA4O2UuaGVoYWx0b25lYXJhYmljPTE3Mjk7ZS5oZWhhcmFiaWM9MTYwNztlLmhlaGVicmV3PTE0OTI7ZS5oZWhmaW5hbGFsdG9uZWFyYWJpYz02NDQyMztlLmhlaGZpbmFsYWx0dHdvYXJhYmljPTY1MjU4O2UuaGVoZmluYWxhcmFiaWM9NjUyNTg7ZS5oZWhoYW16YWFib3ZlZmluYWxhcmFiaWM9NjQ0MjE7ZS5oZWhoYW16YWFib3ZlaXNvbGF0ZWRhcmFiaWM9NjQ0MjA7ZS5oZWhpbml0aWFsYWx0b25lYXJhYmljPTY0NDI0O2UuaGVoaW5pdGlhbGFyYWJpYz02NTI1OTtlLmhlaGlyYWdhbmE9MTI0MDg7ZS5oZWhtZWRpYWxhbHRvbmVhcmFiaWM9NjQ0MjU7ZS5oZWhtZWRpYWxhcmFiaWM9NjUyNjA7ZS5oZWlzZWllcmFzcXVhcmU9MTMxNzk7ZS5oZWthdGFrYW5hPTEyNTA0O2UuaGVrYXRha2FuYWhhbGZ3aWR0aD02NTQyMTtlLmhla3V0YWFydXNxdWFyZT0xMzExMDtlLmhlbmdob29rPTYxNTtlLmhlcnV0dXNxdWFyZT0xMzExMztlLmhldD0xNDk1O2UuaGV0aGVicmV3PTE0OTU7ZS5oaG9vaz02MTQ7ZS5oaG9va3N1cGVyaW9yPTY4OTtlLmhpZXVoYWNpcmNsZWtvcmVhbj0xMjkyMztlLmhpZXVoYXBhcmVua29yZWFuPTEyODI3O2UuaGlldWhjaXJjbGVrb3JlYW49MTI5MDk7ZS5oaWV1aGtvcmVhbj0xMjYyMjtlLmhpZXVocGFyZW5rb3JlYW49MTI4MTM7ZS5oaWhpcmFnYW5hPTEyNDAyO2UuaGlrYXRha2FuYT0xMjQ5ODtlLmhpa2F0YWthbmFoYWxmd2lkdGg9NjU0MTk7ZS5oaXJpcT0xNDYwO2UuaGlyaXExND0xNDYwO2UuaGlyaXEyMT0xNDYwO2UuaGlyaXEyZD0xNDYwO2UuaGlyaXFoZWJyZXc9MTQ2MDtlLmhpcmlxbmFycm93aGVicmV3PTE0NjA7ZS5oaXJpcXF1YXJ0ZXJoZWJyZXc9MTQ2MDtlLmhpcmlxd2lkZWhlYnJldz0xNDYwO2UuaGxpbmViZWxvdz03ODMwO2UuaG1vbm9zcGFjZT02NTM1MjtlLmhvYXJtZW5pYW49MTM5MjtlLmhvaGlwdGhhaT0zNjI3O2UuaG9oaXJhZ2FuYT0xMjQxMTtlLmhva2F0YWthbmE9MTI1MDc7ZS5ob2thdGFrYW5haGFsZndpZHRoPTY1NDIyO2UuaG9sYW09MTQ2NTtlLmhvbGFtMTk9MTQ2NTtlLmhvbGFtMjY9MTQ2NTtlLmhvbGFtMzI9MTQ2NTtlLmhvbGFtaGVicmV3PTE0NjU7ZS5ob2xhbW5hcnJvd2hlYnJldz0xNDY1O2UuaG9sYW1xdWFydGVyaGVicmV3PTE0NjU7ZS5ob2xhbXdpZGVoZWJyZXc9MTQ2NTtlLmhvbm9raHVrdGhhaT0zNjMwO2UuaG9va2Fib3ZlY29tYj03Nzc7ZS5ob29rY21iPTc3NztlLmhvb2twYWxhdGFsaXplZGJlbG93Y21iPTgwMTtlLmhvb2tyZXRyb2ZsZXhiZWxvd2NtYj04MDI7ZS5ob29uc3F1YXJlPTEzMTIyO2UuaG9yaWNvcHRpYz0xMDAxO2UuaG9yaXpvbnRhbGJhcj04MjEzO2UuaG9ybmNtYj03OTU7ZS5ob3RzcHJpbmdzPTk4MzI7ZS5ob3VzZT04OTYyO2UuaHBhcmVuPTkzNzk7ZS5oc3VwZXJpb3I9Njg4O2UuaHR1cm5lZD02MTM7ZS5odWhpcmFnYW5hPTEyNDA1O2UuaHVpaXRvc3F1YXJlPTEzMTA3O2UuaHVrYXRha2FuYT0xMjUwMTtlLmh1a2F0YWthbmFoYWxmd2lkdGg9NjU0MjA7ZS5odW5nYXJ1bWxhdXQ9NzMzO2UuaHVuZ2FydW1sYXV0Y21iPTc3OTtlLmh2PTQwNTtlLmh5cGhlbj00NTtlLmh5cGhlbmluZmVyaW9yPTYzMjA1O2UuaHlwaGVubW9ub3NwYWNlPTY1MjkzO2UuaHlwaGVuc21hbGw9NjUxMjM7ZS5oeXBoZW5zdXBlcmlvcj02MzIwNjtlLmh5cGhlbnR3bz04MjA4O2UuaT0xMDU7ZS5pYWN1dGU9MjM3O2UuaWFjeXJpbGxpYz0xMTAzO2UuaWJlbmdhbGk9MjQzOTtlLmlib3BvbW9mbz0xMjU4MztlLmlicmV2ZT0zMDE7ZS5pY2Fyb249NDY0O2UuaWNpcmNsZT05NDMyO2UuaWNpcmN1bWZsZXg9MjM4O2UuaWN5cmlsbGljPTExMTA7ZS5pZGJsZ3JhdmU9NTIxO2UuaWRlb2dyYXBoZWFydGhjaXJjbGU9MTI5NDM7ZS5pZGVvZ3JhcGhmaXJlY2lyY2xlPTEyOTM5O2UuaWRlb2dyYXBoaWNhbGxpYW5jZXBhcmVuPTEyODYzO2UuaWRlb2dyYXBoaWNjYWxscGFyZW49MTI4NTg7ZS5pZGVvZ3JhcGhpY2NlbnRyZWNpcmNsZT0xMjk2NTtlLmlkZW9ncmFwaGljY2xvc2U9MTIyOTQ7ZS5pZGVvZ3JhcGhpY2NvbW1hPTEyMjg5O2UuaWRlb2dyYXBoaWNjb21tYWxlZnQ9NjUzODA7ZS5pZGVvZ3JhcGhpY2NvbmdyYXR1bGF0aW9ucGFyZW49MTI4NTU7ZS5pZGVvZ3JhcGhpY2NvcnJlY3RjaXJjbGU9MTI5NjM7ZS5pZGVvZ3JhcGhpY2VhcnRocGFyZW49MTI4NDc7ZS5pZGVvZ3JhcGhpY2VudGVycHJpc2VwYXJlbj0xMjg2MTtlLmlkZW9ncmFwaGljZXhjZWxsZW50Y2lyY2xlPTEyOTU3O2UuaWRlb2dyYXBoaWNmZXN0aXZhbHBhcmVuPTEyODY0O2UuaWRlb2dyYXBoaWNmaW5hbmNpYWxjaXJjbGU9MTI5NTA7ZS5pZGVvZ3JhcGhpY2ZpbmFuY2lhbHBhcmVuPTEyODU0O2UuaWRlb2dyYXBoaWNmaXJlcGFyZW49MTI4NDM7ZS5pZGVvZ3JhcGhpY2hhdmVwYXJlbj0xMjg1MDtlLmlkZW9ncmFwaGljaGlnaGNpcmNsZT0xMjk2NDtlLmlkZW9ncmFwaGljaXRlcmF0aW9ubWFyaz0xMjI5MztlLmlkZW9ncmFwaGljbGFib3JjaXJjbGU9MTI5NTI7ZS5pZGVvZ3JhcGhpY2xhYm9ycGFyZW49MTI4NTY7ZS5pZGVvZ3JhcGhpY2xlZnRjaXJjbGU9MTI5Njc7ZS5pZGVvZ3JhcGhpY2xvd2NpcmNsZT0xMjk2NjtlLmlkZW9ncmFwaGljbWVkaWNpbmVjaXJjbGU9MTI5Njk7ZS5pZGVvZ3JhcGhpY21ldGFscGFyZW49MTI4NDY7ZS5pZGVvZ3JhcGhpY21vb25wYXJlbj0xMjg0MjtlLmlkZW9ncmFwaGljbmFtZXBhcmVuPTEyODUyO2UuaWRlb2dyYXBoaWNwZXJpb2Q9MTIyOTA7ZS5pZGVvZ3JhcGhpY3ByaW50Y2lyY2xlPTEyOTU4O2UuaWRlb2dyYXBoaWNyZWFjaHBhcmVuPTEyODY3O2UuaWRlb2dyYXBoaWNyZXByZXNlbnRwYXJlbj0xMjg1NztlLmlkZW9ncmFwaGljcmVzb3VyY2VwYXJlbj0xMjg2MjtlLmlkZW9ncmFwaGljcmlnaHRjaXJjbGU9MTI5Njg7ZS5pZGVvZ3JhcGhpY3NlY3JldGNpcmNsZT0xMjk1MztlLmlkZW9ncmFwaGljc2VsZnBhcmVuPTEyODY2O2UuaWRlb2dyYXBoaWNzb2NpZXR5cGFyZW49MTI4NTE7ZS5pZGVvZ3JhcGhpY3NwYWNlPTEyMjg4O2UuaWRlb2dyYXBoaWNzcGVjaWFscGFyZW49MTI4NTM7ZS5pZGVvZ3JhcGhpY3N0b2NrcGFyZW49MTI4NDk7ZS5pZGVvZ3JhcGhpY3N0dWR5cGFyZW49MTI4NTk7ZS5pZGVvZ3JhcGhpY3N1bnBhcmVuPTEyODQ4O2UuaWRlb2dyYXBoaWNzdXBlcnZpc2VwYXJlbj0xMjg2MDtlLmlkZW9ncmFwaGljd2F0ZXJwYXJlbj0xMjg0NDtlLmlkZW9ncmFwaGljd29vZHBhcmVuPTEyODQ1O2UuaWRlb2dyYXBoaWN6ZXJvPTEyMjk1O2UuaWRlb2dyYXBobWV0YWxjaXJjbGU9MTI5NDI7ZS5pZGVvZ3JhcGhtb29uY2lyY2xlPTEyOTM4O2UuaWRlb2dyYXBobmFtZWNpcmNsZT0xMjk0ODtlLmlkZW9ncmFwaHN1bmNpcmNsZT0xMjk0NDtlLmlkZW9ncmFwaHdhdGVyY2lyY2xlPTEyOTQwO2UuaWRlb2dyYXBod29vZGNpcmNsZT0xMjk0MTtlLmlkZXZhPTIzMTE7ZS5pZGllcmVzaXM9MjM5O2UuaWRpZXJlc2lzYWN1dGU9NzcyNztlLmlkaWVyZXNpc2N5cmlsbGljPTEyNTM7ZS5pZG90YmVsb3c9Nzg4MztlLmllYnJldmVjeXJpbGxpYz0xMjM5O2UuaWVjeXJpbGxpYz0xMDc3O2UuaWV1bmdhY2lyY2xla29yZWFuPTEyOTE3O2UuaWV1bmdhcGFyZW5rb3JlYW49MTI4MjE7ZS5pZXVuZ2NpcmNsZWtvcmVhbj0xMjkwMztlLmlldW5na29yZWFuPTEyNjE1O2UuaWV1bmdwYXJlbmtvcmVhbj0xMjgwNztlLmlncmF2ZT0yMzY7ZS5pZ3VqYXJhdGk9MjY5NTtlLmlndXJtdWtoaT0yNTY3O2UuaWhpcmFnYW5hPTEyMzU2O2UuaWhvb2thYm92ZT03ODgxO2UuaWliZW5nYWxpPTI0NDA7ZS5paWN5cmlsbGljPTEwODA7ZS5paWRldmE9MjMxMjtlLmlpZ3VqYXJhdGk9MjY5NjtlLmlpZ3VybXVraGk9MjU2ODtlLmlpbWF0cmFndXJtdWtoaT0yNjI0O2UuaWludmVydGVkYnJldmU9NTIzO2UuaWlzaG9ydGN5cmlsbGljPTEwODE7ZS5paXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NjtlLmlpdm93ZWxzaWduZGV2YT0yMzY4O2UuaWl2b3dlbHNpZ25ndWphcmF0aT0yNzUyO2UuaWo9MzA3O2UuaWthdGFrYW5hPTEyNDUyO2UuaWthdGFrYW5haGFsZndpZHRoPTY1Mzk0O2UuaWtvcmVhbj0xMjY0MztlLmlsZGU9NzMyO2UuaWx1eWhlYnJldz0xNDUyO2UuaW1hY3Jvbj0yOTk7ZS5pbWFjcm9uY3lyaWxsaWM9MTI1MTtlLmltYWdlb3JhcHByb3hpbWF0ZWx5ZXF1YWw9ODc4NztlLmltYXRyYWd1cm11a2hpPTI2MjM7ZS5pbW9ub3NwYWNlPTY1MzUzO2UuaW5jcmVtZW50PTg3MTA7ZS5pbmZpbml0eT04NzM0O2UuaW5pYXJtZW5pYW49MTM4NztlLmludGVncmFsPTg3NDc7ZS5pbnRlZ3JhbGJvdHRvbT04OTkzO2UuaW50ZWdyYWxidD04OTkzO2UuaW50ZWdyYWxleD02MzczMztlLmludGVncmFsdG9wPTg5OTI7ZS5pbnRlZ3JhbHRwPTg5OTI7ZS5pbnRlcnNlY3Rpb249ODc0NTtlLmludGlzcXVhcmU9MTMwNjE7ZS5pbnZidWxsZXQ9OTY4ODtlLmludmNpcmNsZT05Njg5O2UuaW52c21pbGVmYWNlPTk3ODc7ZS5pb2N5cmlsbGljPTExMDU7ZS5pb2dvbmVrPTMwMztlLmlvdGE9OTUzO2UuaW90YWRpZXJlc2lzPTk3MDtlLmlvdGFkaWVyZXNpc3Rvbm9zPTkxMjtlLmlvdGFsYXRpbj02MTc7ZS5pb3RhdG9ub3M9OTQzO2UuaXBhcmVuPTkzODA7ZS5pcmlndXJtdWtoaT0yNjc0O2UuaXNtYWxsaGlyYWdhbmE9MTIzNTU7ZS5pc21hbGxrYXRha2FuYT0xMjQ1MTtlLmlzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg0O2UuaXNzaGFyYmVuZ2FsaT0yNTU0O2UuaXN0cm9rZT02MTY7ZS5pc3VwZXJpb3I9NjMyMTM7ZS5pdGVyYXRpb25oaXJhZ2FuYT0xMjQ0NTtlLml0ZXJhdGlvbmthdGFrYW5hPTEyNTQxO2UuaXRpbGRlPTI5NztlLml0aWxkZWJlbG93PTc3MjU7ZS5pdWJvcG9tb2ZvPTEyNTg1O2UuaXVjeXJpbGxpYz0xMTAyO2UuaXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NTtlLml2b3dlbHNpZ25kZXZhPTIzNjc7ZS5pdm93ZWxzaWduZ3VqYXJhdGk9Mjc1MTtlLml6aGl0c2FjeXJpbGxpYz0xMTQxO2UuaXpoaXRzYWRibGdyYXZlY3lyaWxsaWM9MTE0MztlLmo9MTA2O2UuamFhcm1lbmlhbj0xMzkzO2UuamFiZW5nYWxpPTI0NjA7ZS5qYWRldmE9MjMzMjtlLmphZ3VqYXJhdGk9MjcxNjtlLmphZ3VybXVraGk9MjU4ODtlLmpib3BvbW9mbz0xMjU2MDtlLmpjYXJvbj00OTY7ZS5qY2lyY2xlPTk0MzM7ZS5qY2lyY3VtZmxleD0zMDk7ZS5qY3Jvc3NlZHRhaWw9NjY5O2UuamRvdGxlc3NzdHJva2U9NjA3O2UuamVjeXJpbGxpYz0xMTEyO2UuamVlbWFyYWJpYz0xNTgwO2UuamVlbWZpbmFsYXJhYmljPTY1MTgyO2UuamVlbWluaXRpYWxhcmFiaWM9NjUxODM7ZS5qZWVtbWVkaWFsYXJhYmljPTY1MTg0O2UuamVoYXJhYmljPTE2ODg7ZS5qZWhmaW5hbGFyYWJpYz02NDM5NTtlLmpoYWJlbmdhbGk9MjQ2MTtlLmpoYWRldmE9MjMzMztlLmpoYWd1amFyYXRpPTI3MTc7ZS5qaGFndXJtdWtoaT0yNTg5O2UuamhlaGFybWVuaWFuPTE0MDM7ZS5qaXM9MTIyOTI7ZS5qbW9ub3NwYWNlPTY1MzU0O2UuanBhcmVuPTkzODE7ZS5qc3VwZXJpb3I9NjkwO2Uuaz0xMDc7ZS5rYWJhc2hraXJjeXJpbGxpYz0xMTg1O2Uua2FiZW5nYWxpPTI0NTM7ZS5rYWN1dGU9NzcyOTtlLmthY3lyaWxsaWM9MTA4MjtlLmthZGVzY2VuZGVyY3lyaWxsaWM9MTE3OTtlLmthZGV2YT0yMzI1O2Uua2FmPTE0OTk7ZS5rYWZhcmFiaWM9MTYwMztlLmthZmRhZ2VzaD02NDMxNTtlLmthZmRhZ2VzaGhlYnJldz02NDMxNTtlLmthZmZpbmFsYXJhYmljPTY1MjQyO2Uua2FmaGVicmV3PTE0OTk7ZS5rYWZpbml0aWFsYXJhYmljPTY1MjQzO2Uua2FmbWVkaWFsYXJhYmljPTY1MjQ0O2Uua2FmcmFmZWhlYnJldz02NDMzMztlLmthZ3VqYXJhdGk9MjcwOTtlLmthZ3VybXVraGk9MjU4MTtlLmthaGlyYWdhbmE9MTIzNjM7ZS5rYWhvb2tjeXJpbGxpYz0xMjIwO2Uua2FrYXRha2FuYT0xMjQ1OTtlLmtha2F0YWthbmFoYWxmd2lkdGg9NjUzOTg7ZS5rYXBwYT05NTQ7ZS5rYXBwYXN5bWJvbGdyZWVrPTEwMDg7ZS5rYXB5ZW91bm1pZXVta29yZWFuPTEyNjU3O2Uua2FweWVvdW5waGlldXBoa29yZWFuPTEyNjc2O2Uua2FweWVvdW5waWV1cGtvcmVhbj0xMjY2NDtlLmthcHllb3Vuc3NhbmdwaWV1cGtvcmVhbj0xMjY2NTtlLmthcm9yaWlzcXVhcmU9MTMwNjk7ZS5rYXNoaWRhYXV0b2FyYWJpYz0xNjAwO2Uua2FzaGlkYWF1dG9ub3NpZGViZWFyaW5nYXJhYmljPTE2MDA7ZS5rYXNtYWxsa2F0YWthbmE9MTI1MzM7ZS5rYXNxdWFyZT0xMzE4ODtlLmthc3JhYXJhYmljPTE2MTY7ZS5rYXNyYXRhbmFyYWJpYz0xNjEzO2Uua2FzdHJva2VjeXJpbGxpYz0xMTgzO2Uua2F0YWhpcmFwcm9sb25nbWFya2hhbGZ3aWR0aD02NTM5MjtlLmthdmVydGljYWxzdHJva2VjeXJpbGxpYz0xMTgxO2Uua2JvcG9tb2ZvPTEyNTU4O2Uua2NhbHNxdWFyZT0xMzE5MztlLmtjYXJvbj00ODk7ZS5rY2VkaWxsYT0zMTE7ZS5rY2lyY2xlPTk0MzQ7ZS5rY29tbWFhY2NlbnQ9MzExO2Uua2RvdGJlbG93PTc3MzE7ZS5rZWhhcm1lbmlhbj0xNDEyO2Uua2VoaXJhZ2FuYT0xMjM2OTtlLmtla2F0YWthbmE9MTI0NjU7ZS5rZWthdGFrYW5haGFsZndpZHRoPTY1NDAxO2Uua2VuYXJtZW5pYW49MTM5MTtlLmtlc21hbGxrYXRha2FuYT0xMjUzNDtlLmtncmVlbmxhbmRpYz0zMTI7ZS5raGFiZW5nYWxpPTI0NTQ7ZS5raGFjeXJpbGxpYz0xMDkzO2Uua2hhZGV2YT0yMzI2O2Uua2hhZ3VqYXJhdGk9MjcxMDtlLmtoYWd1cm11a2hpPTI1ODI7ZS5raGFoYXJhYmljPTE1ODI7ZS5raGFoZmluYWxhcmFiaWM9NjUxOTA7ZS5raGFoaW5pdGlhbGFyYWJpYz02NTE5MTtlLmtoYWhtZWRpYWxhcmFiaWM9NjUxOTI7ZS5raGVpY29wdGljPTk5OTtlLmtoaGFkZXZhPTIzOTM7ZS5raGhhZ3VybXVraGk9MjY0OTtlLmtoaWV1a2hhY2lyY2xla29yZWFuPTEyOTIwO2Uua2hpZXVraGFwYXJlbmtvcmVhbj0xMjgyNDtlLmtoaWV1a2hjaXJjbGVrb3JlYW49MTI5MDY7ZS5raGlldWtoa29yZWFuPTEyNjE5O2Uua2hpZXVraHBhcmVua29yZWFuPTEyODEwO2Uua2hva2hhaXRoYWk9MzU4NjtlLmtob2tob250aGFpPTM1ODk7ZS5raG9raHVhdHRoYWk9MzU4NztlLmtob2tod2FpdGhhaT0zNTg4O2Uua2hvbXV0dGhhaT0zNjc1O2Uua2hvb2s9NDA5O2Uua2hvcmFraGFuZ3RoYWk9MzU5MDtlLmtoenNxdWFyZT0xMzIwMTtlLmtpaGlyYWdhbmE9MTIzNjU7ZS5raWthdGFrYW5hPTEyNDYxO2Uua2lrYXRha2FuYWhhbGZ3aWR0aD02NTM5OTtlLmtpcm9ndXJhbXVzcXVhcmU9MTMwNzc7ZS5raXJvbWVldG9ydXNxdWFyZT0xMzA3ODtlLmtpcm9zcXVhcmU9MTMwNzY7ZS5raXllb2thY2lyY2xla29yZWFuPTEyOTEwO2Uua2l5ZW9rYXBhcmVua29yZWFuPTEyODE0O2Uua2l5ZW9rY2lyY2xla29yZWFuPTEyODk2O2Uua2l5ZW9ra29yZWFuPTEyNTkzO2Uua2l5ZW9rcGFyZW5rb3JlYW49MTI4MDA7ZS5raXllb2tzaW9za29yZWFuPTEyNTk1O2Uua2plY3lyaWxsaWM9MTExNjtlLmtsaW5lYmVsb3c9NzczMztlLmtsc3F1YXJlPTEzMjA4O2Uua21jdWJlZHNxdWFyZT0xMzIyMjtlLmttb25vc3BhY2U9NjUzNTU7ZS5rbXNxdWFyZWRzcXVhcmU9MTMyMTg7ZS5rb2hpcmFnYW5hPTEyMzcxO2Uua29obXNxdWFyZT0xMzI0ODtlLmtva2FpdGhhaT0zNTg1O2Uua29rYXRha2FuYT0xMjQ2NztlLmtva2F0YWthbmFoYWxmd2lkdGg9NjU0MDI7ZS5rb29wb3NxdWFyZT0xMzA4NjtlLmtvcHBhY3lyaWxsaWM9MTE1MztlLmtvcmVhbnN0YW5kYXJkc3ltYm9sPTEyOTI3O2Uua29yb25pc2NtYj04MzU7ZS5rcGFyZW49OTM4MjtlLmtwYXNxdWFyZT0xMzIyNjtlLmtzaWN5cmlsbGljPTExMzU7ZS5rdHNxdWFyZT0xMzI2MztlLmt0dXJuZWQ9NjcwO2Uua3VoaXJhZ2FuYT0xMjM2NztlLmt1a2F0YWthbmE9MTI0NjM7ZS5rdWthdGFrYW5haGFsZndpZHRoPTY1NDAwO2Uua3ZzcXVhcmU9MTMyNDA7ZS5rd3NxdWFyZT0xMzI0NjtlLmw9MTA4O2UubGFiZW5nYWxpPTI0ODI7ZS5sYWN1dGU9MzE0O2UubGFkZXZhPTIzNTQ7ZS5sYWd1amFyYXRpPTI3Mzg7ZS5sYWd1cm11a2hpPTI2MTA7ZS5sYWtraGFuZ3lhb3RoYWk9MzY1MztlLmxhbWFsZWZmaW5hbGFyYWJpYz02NTI3NjtlLmxhbWFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUyNzI7ZS5sYW1hbGVmaGFtemFhYm92ZWlzb2xhdGVkYXJhYmljPTY1MjcxO2UubGFtYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYz02NTI3NDtlLmxhbWFsZWZoYW16YWJlbG93aXNvbGF0ZWRhcmFiaWM9NjUyNzM7ZS5sYW1hbGVmaXNvbGF0ZWRhcmFiaWM9NjUyNzU7ZS5sYW1hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljPTY1MjcwO2UubGFtYWxlZm1hZGRhYWJvdmVpc29sYXRlZGFyYWJpYz02NTI2OTtlLmxhbWFyYWJpYz0xNjA0O2UubGFtYmRhPTk1NTtlLmxhbWJkYXN0cm9rZT00MTE7ZS5sYW1lZD0xNTAwO2UubGFtZWRkYWdlc2g9NjQzMTY7ZS5sYW1lZGRhZ2VzaGhlYnJldz02NDMxNjtlLmxhbWVkaGVicmV3PTE1MDA7ZS5sYW1maW5hbGFyYWJpYz02NTI0NjtlLmxhbWhhaGluaXRpYWxhcmFiaWM9NjQ3MTQ7ZS5sYW1pbml0aWFsYXJhYmljPTY1MjQ3O2UubGFtamVlbWluaXRpYWxhcmFiaWM9NjQ3MTM7ZS5sYW1raGFoaW5pdGlhbGFyYWJpYz02NDcxNTtlLmxhbWxhbWhlaGlzb2xhdGVkYXJhYmljPTY1MDEwO2UubGFtbWVkaWFsYXJhYmljPTY1MjQ4O2UubGFtbWVlbWhhaGluaXRpYWxhcmFiaWM9NjQ5MDQ7ZS5sYW1tZWVtaW5pdGlhbGFyYWJpYz02NDcxNjtlLmxhcmdlY2lyY2xlPTk3MTE7ZS5sYmFyPTQxMDtlLmxiZWx0PTYyMDtlLmxib3BvbW9mbz0xMjU1NjtlLmxjYXJvbj0zMTg7ZS5sY2VkaWxsYT0zMTY7ZS5sY2lyY2xlPTk0MzU7ZS5sY2lyY3VtZmxleGJlbG93PTc3NDE7ZS5sY29tbWFhY2NlbnQ9MzE2O2UubGRvdD0zMjA7ZS5sZG90YWNjZW50PTMyMDtlLmxkb3RiZWxvdz03NzM1O2UubGRvdGJlbG93bWFjcm9uPTc3Mzc7ZS5sZWZ0YW5nbGVhYm92ZWNtYj03OTQ7ZS5sZWZ0dGFja2JlbG93Y21iPTc5MjtlLmxlc3M9NjA7ZS5sZXNzZXF1YWw9ODgwNDtlLmxlc3NlcXVhbG9yZ3JlYXRlcj04OTIyO2UubGVzc21vbm9zcGFjZT02NTMwODtlLmxlc3NvcmVxdWl2YWxlbnQ9ODgxODtlLmxlc3NvcmdyZWF0ZXI9ODgyMjtlLmxlc3NvdmVyZXF1YWw9ODgwNjtlLmxlc3NzbWFsbD02NTEyNDtlLmxlemg9NjIyO2UubGZibG9jaz05NjEyO2UubGhvb2tyZXRyb2ZsZXg9NjIxO2UubGlyYT04MzU2O2UubGl3bmFybWVuaWFuPTEzODg7ZS5saj00NTc7ZS5samVjeXJpbGxpYz0xMTEzO2UubGw9NjMxNjg7ZS5sbGFkZXZhPTIzNTU7ZS5sbGFndWphcmF0aT0yNzM5O2UubGxpbmViZWxvdz03NzM5O2UubGxsYWRldmE9MjM1NjtlLmxsdm9jYWxpY2JlbmdhbGk9MjUyOTtlLmxsdm9jYWxpY2RldmE9MjQwMTtlLmxsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk9MjUzMTtlLmxsdm9jYWxpY3Zvd2Vsc2lnbmRldmE9MjQwMztlLmxtaWRkbGV0aWxkZT02MTk7ZS5sbW9ub3NwYWNlPTY1MzU2O2UubG1zcXVhcmU9MTMyNjQ7ZS5sb2NodWxhdGhhaT0zNjI4O2UubG9naWNhbGFuZD04NzQzO2UubG9naWNhbG5vdD0xNzI7ZS5sb2dpY2Fsbm90cmV2ZXJzZWQ9ODk3NjtlLmxvZ2ljYWxvcj04NzQ0O2UubG9saW5ndGhhaT0zNjIxO2UubG9uZ3M9MzgzO2UubG93bGluZWNlbnRlcmxpbmU9NjUxMDI7ZS5sb3dsaW5lY21iPTgxODtlLmxvd2xpbmVkYXNoZWQ9NjUxMDE7ZS5sb3plbmdlPTk2NzQ7ZS5scGFyZW49OTM4MztlLmxzbGFzaD0zMjI7ZS5sc3F1YXJlPTg0Njc7ZS5sc3VwZXJpb3I9NjMyMTQ7ZS5sdHNoYWRlPTk2MTc7ZS5sdXRoYWk9MzYyMjtlLmx2b2NhbGljYmVuZ2FsaT0yNDQ0O2UubHZvY2FsaWNkZXZhPTIzMTY7ZS5sdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk9MjUzMDtlLmx2b2NhbGljdm93ZWxzaWduZGV2YT0yNDAyO2UubHhzcXVhcmU9MTMyNjc7ZS5tPTEwOTtlLm1hYmVuZ2FsaT0yNDc4O2UubWFjcm9uPTE3NTtlLm1hY3JvbmJlbG93Y21iPTgxNztlLm1hY3JvbmNtYj03NzI7ZS5tYWNyb25sb3dtb2Q9NzE3O2UubWFjcm9ubW9ub3NwYWNlPTY1NTA3O2UubWFjdXRlPTc3NDM7ZS5tYWRldmE9MjM1MDtlLm1hZ3VqYXJhdGk9MjczNDtlLm1hZ3VybXVraGk9MjYwNjtlLm1haGFwYWtoaGVicmV3PTE0NDQ7ZS5tYWhhcGFraGxlZnRoZWJyZXc9MTQ0NDtlLm1haGlyYWdhbmE9MTI0MTQ7ZS5tYWljaGF0dGF3YWxvd2xlZnR0aGFpPTYzNjM3O2UubWFpY2hhdHRhd2Fsb3dyaWdodHRoYWk9NjM2MzY7ZS5tYWljaGF0dGF3YXRoYWk9MzY1OTtlLm1haWNoYXR0YXdhdXBwZXJsZWZ0dGhhaT02MzYzNTtlLm1haWVrbG93bGVmdHRoYWk9NjM2Mjg7ZS5tYWlla2xvd3JpZ2h0dGhhaT02MzYyNztlLm1haWVrdGhhaT0zNjU2O2UubWFpZWt1cHBlcmxlZnR0aGFpPTYzNjI2O2UubWFpaGFuYWthdGxlZnR0aGFpPTYzNjIwO2UubWFpaGFuYWthdHRoYWk9MzYzMztlLm1haXRhaWtodWxlZnR0aGFpPTYzNjI1O2UubWFpdGFpa2h1dGhhaT0zNjU1O2UubWFpdGhvbG93bGVmdHRoYWk9NjM2MzE7ZS5tYWl0aG9sb3dyaWdodHRoYWk9NjM2MzA7ZS5tYWl0aG90aGFpPTM2NTc7ZS5tYWl0aG91cHBlcmxlZnR0aGFpPTYzNjI5O2UubWFpdHJpbG93bGVmdHRoYWk9NjM2MzQ7ZS5tYWl0cmlsb3dyaWdodHRoYWk9NjM2MzM7ZS5tYWl0cml0aGFpPTM2NTg7ZS5tYWl0cml1cHBlcmxlZnR0aGFpPTYzNjMyO2UubWFpeWFtb2t0aGFpPTM2NTQ7ZS5tYWthdGFrYW5hPTEyNTEwO2UubWFrYXRha2FuYWhhbGZ3aWR0aD02NTQyMztlLm1hbGU9OTc5NDtlLm1hbnN5b25zcXVhcmU9MTMxMjc7ZS5tYXFhZmhlYnJldz0xNDcwO2UubWFycz05Nzk0O2UubWFzb3JhY2lyY2xlaGVicmV3PTE0NTU7ZS5tYXNxdWFyZT0xMzE4NztlLm1ib3BvbW9mbz0xMjU1MTtlLm1ic3F1YXJlPTEzMjY4O2UubWNpcmNsZT05NDM2O2UubWN1YmVkc3F1YXJlPTEzMjIxO2UubWRvdGFjY2VudD03NzQ1O2UubWRvdGJlbG93PTc3NDc7ZS5tZWVtYXJhYmljPTE2MDU7ZS5tZWVtZmluYWxhcmFiaWM9NjUyNTA7ZS5tZWVtaW5pdGlhbGFyYWJpYz02NTI1MTtlLm1lZW1tZWRpYWxhcmFiaWM9NjUyNTI7ZS5tZWVtbWVlbWluaXRpYWxhcmFiaWM9NjQ3MjE7ZS5tZWVtbWVlbWlzb2xhdGVkYXJhYmljPTY0NTg0O2UubWVldG9ydXNxdWFyZT0xMzEzMztlLm1laGlyYWdhbmE9MTI0MTc7ZS5tZWl6aWVyYXNxdWFyZT0xMzE4MjtlLm1la2F0YWthbmE9MTI1MTM7ZS5tZWthdGFrYW5haGFsZndpZHRoPTY1NDI2O2UubWVtPTE1MDI7ZS5tZW1kYWdlc2g9NjQzMTg7ZS5tZW1kYWdlc2hoZWJyZXc9NjQzMTg7ZS5tZW1oZWJyZXc9MTUwMjtlLm1lbmFybWVuaWFuPTEzOTY7ZS5tZXJraGFoZWJyZXc9MTQ0NTtlLm1lcmtoYWtlZnVsYWhlYnJldz0xNDQ2O2UubWVya2hha2VmdWxhbGVmdGhlYnJldz0xNDQ2O2UubWVya2hhbGVmdGhlYnJldz0xNDQ1O2UubWhvb2s9NjI1O2UubWh6c3F1YXJlPTEzMjAyO2UubWlkZGxlZG90a2F0YWthbmFoYWxmd2lkdGg9NjUzODE7ZS5taWRkb3Q9MTgzO2UubWlldW1hY2lyY2xla29yZWFuPTEyOTE0O2UubWlldW1hcGFyZW5rb3JlYW49MTI4MTg7ZS5taWV1bWNpcmNsZWtvcmVhbj0xMjkwMDtlLm1pZXVta29yZWFuPTEyNjA5O2UubWlldW1wYW5zaW9za29yZWFuPTEyNjU2O2UubWlldW1wYXJlbmtvcmVhbj0xMjgwNDtlLm1pZXVtcGlldXBrb3JlYW49MTI2NTQ7ZS5taWV1bXNpb3Nrb3JlYW49MTI2NTU7ZS5taWhpcmFnYW5hPTEyNDE1O2UubWlrYXRha2FuYT0xMjUxMTtlLm1pa2F0YWthbmFoYWxmd2lkdGg9NjU0MjQ7ZS5taW51cz04NzIyO2UubWludXNiZWxvd2NtYj04MDA7ZS5taW51c2NpcmNsZT04ODU0O2UubWludXNtb2Q9NzI3O2UubWludXNwbHVzPTg3MjM7ZS5taW51dGU9ODI0MjtlLm1pcmliYWFydXNxdWFyZT0xMzEzMDtlLm1pcmlzcXVhcmU9MTMxMjk7ZS5tbG9uZ2xlZ3R1cm5lZD02MjQ7ZS5tbHNxdWFyZT0xMzIwNjtlLm1tY3ViZWRzcXVhcmU9MTMyMTk7ZS5tbW9ub3NwYWNlPTY1MzU3O2UubW1zcXVhcmVkc3F1YXJlPTEzMjE1O2UubW9oaXJhZ2FuYT0xMjQxODtlLm1vaG1zcXVhcmU9MTMyNDk7ZS5tb2thdGFrYW5hPTEyNTE0O2UubW9rYXRha2FuYWhhbGZ3aWR0aD02NTQyNztlLm1vbHNxdWFyZT0xMzI3MDtlLm1vbWF0aGFpPTM2MTc7ZS5tb3ZlcnNzcXVhcmU9MTMyMjM7ZS5tb3ZlcnNzcXVhcmVkc3F1YXJlPTEzMjI0O2UubXBhcmVuPTkzODQ7ZS5tcGFzcXVhcmU9MTMyMjc7ZS5tc3NxdWFyZT0xMzIzNTtlLm1zdXBlcmlvcj02MzIxNTtlLm10dXJuZWQ9NjIzO2UubXU9MTgxO2UubXUxPTE4MTtlLm11YXNxdWFyZT0xMzE4NjtlLm11Y2hncmVhdGVyPTg4MTE7ZS5tdWNobGVzcz04ODEwO2UubXVmc3F1YXJlPTEzMTk2O2UubXVncmVlaz05NTY7ZS5tdWdzcXVhcmU9MTMxOTc7ZS5tdWhpcmFnYW5hPTEyNDE2O2UubXVrYXRha2FuYT0xMjUxMjtlLm11a2F0YWthbmFoYWxmd2lkdGg9NjU0MjU7ZS5tdWxzcXVhcmU9MTMyMDU7ZS5tdWx0aXBseT0yMTU7ZS5tdW1zcXVhcmU9MTMyMTE7ZS5tdW5haGhlYnJldz0xNDQzO2UubXVuYWhsZWZ0aGVicmV3PTE0NDM7ZS5tdXNpY2Fsbm90ZT05ODM0O2UubXVzaWNhbG5vdGVkYmw9OTgzNTtlLm11c2ljZmxhdHNpZ249OTgzNztlLm11c2ljc2hhcnBzaWduPTk4Mzk7ZS5tdXNzcXVhcmU9MTMyMzQ7ZS5tdXZzcXVhcmU9MTMyMzg7ZS5tdXdzcXVhcmU9MTMyNDQ7ZS5tdm1lZ2FzcXVhcmU9MTMyNDE7ZS5tdnNxdWFyZT0xMzIzOTtlLm13bWVnYXNxdWFyZT0xMzI0NztlLm13c3F1YXJlPTEzMjQ1O2Uubj0xMTA7ZS5uYWJlbmdhbGk9MjQ3MjtlLm5hYmxhPTg3MTE7ZS5uYWN1dGU9MzI0O2UubmFkZXZhPTIzNDQ7ZS5uYWd1amFyYXRpPTI3Mjg7ZS5uYWd1cm11a2hpPTI2MDA7ZS5uYWhpcmFnYW5hPTEyMzk0O2UubmFrYXRha2FuYT0xMjQ5MDtlLm5ha2F0YWthbmFoYWxmd2lkdGg9NjU0MTM7ZS5uYXBvc3Ryb3BoZT0zMjk7ZS5uYXNxdWFyZT0xMzE4NTtlLm5ib3BvbW9mbz0xMjU1NTtlLm5ic3BhY2U9MTYwO2UubmNhcm9uPTMyODtlLm5jZWRpbGxhPTMyNjtlLm5jaXJjbGU9OTQzNztlLm5jaXJjdW1mbGV4YmVsb3c9Nzc1NTtlLm5jb21tYWFjY2VudD0zMjY7ZS5uZG90YWNjZW50PTc3NDk7ZS5uZG90YmVsb3c9Nzc1MTtlLm5laGlyYWdhbmE9MTIzOTc7ZS5uZWthdGFrYW5hPTEyNDkzO2UubmVrYXRha2FuYWhhbGZ3aWR0aD02NTQxNjtlLm5ld3NoZXFlbHNpZ249ODM2MjtlLm5mc3F1YXJlPTEzMTk1O2UubmdhYmVuZ2FsaT0yNDU3O2UubmdhZGV2YT0yMzI5O2UubmdhZ3VqYXJhdGk9MjcxMztlLm5nYWd1cm11a2hpPTI1ODU7ZS5uZ29uZ3V0aGFpPTM1OTE7ZS5uaGlyYWdhbmE9MTI0MzU7ZS5uaG9va2xlZnQ9NjI2O2Uubmhvb2tyZXRyb2ZsZXg9NjI3O2UubmlldW5hY2lyY2xla29yZWFuPTEyOTExO2UubmlldW5hcGFyZW5rb3JlYW49MTI4MTU7ZS5uaWV1bmNpZXVja29yZWFuPTEyNTk3O2UubmlldW5jaXJjbGVrb3JlYW49MTI4OTc7ZS5uaWV1bmhpZXVoa29yZWFuPTEyNTk4O2UubmlldW5rb3JlYW49MTI1OTY7ZS5uaWV1bnBhbnNpb3Nrb3JlYW49MTI2NDg7ZS5uaWV1bnBhcmVua29yZWFuPTEyODAxO2UubmlldW5zaW9za29yZWFuPTEyNjQ3O2UubmlldW50aWtldXRrb3JlYW49MTI2NDY7ZS5uaWhpcmFnYW5hPTEyMzk1O2UubmlrYXRha2FuYT0xMjQ5MTtlLm5pa2F0YWthbmFoYWxmd2lkdGg9NjU0MTQ7ZS5uaWtoYWhpdGxlZnR0aGFpPTYzNjQxO2UubmlraGFoaXR0aGFpPTM2NjE7ZS5uaW5lPTU3O2UubmluZWFyYWJpYz0xNjQxO2UubmluZWJlbmdhbGk9MjU0MztlLm5pbmVjaXJjbGU9OTMyMDtlLm5pbmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTMwO2UubmluZWRldmE9MjQxNTtlLm5pbmVndWphcmF0aT0yNzk5O2UubmluZWd1cm11a2hpPTI2NzE7ZS5uaW5laGFja2FyYWJpYz0xNjQxO2UubmluZWhhbmd6aG91PTEyMzI5O2UubmluZWlkZW9ncmFwaGljcGFyZW49MTI4NDA7ZS5uaW5laW5mZXJpb3I9ODMyOTtlLm5pbmVtb25vc3BhY2U9NjUzMDU7ZS5uaW5lb2xkc3R5bGU9NjMyODk7ZS5uaW5lcGFyZW49OTM0MDtlLm5pbmVwZXJpb2Q9OTM2MDtlLm5pbmVwZXJzaWFuPTE3ODU7ZS5uaW5lcm9tYW49ODU2ODtlLm5pbmVzdXBlcmlvcj04MzEzO2UubmluZXRlZW5jaXJjbGU9OTMzMDtlLm5pbmV0ZWVucGFyZW49OTM1MDtlLm5pbmV0ZWVucGVyaW9kPTkzNzA7ZS5uaW5ldGhhaT0zNjczO2Uubmo9NDYwO2UubmplY3lyaWxsaWM9MTExNDtlLm5rYXRha2FuYT0xMjUzMTtlLm5rYXRha2FuYWhhbGZ3aWR0aD02NTQzNztlLm5sZWdyaWdodGxvbmc9NDE0O2UubmxpbmViZWxvdz03NzUzO2Uubm1vbm9zcGFjZT02NTM1ODtlLm5tc3F1YXJlPTEzMjEwO2Uubm5hYmVuZ2FsaT0yNDY3O2Uubm5hZGV2YT0yMzM5O2Uubm5hZ3VqYXJhdGk9MjcyMztlLm5uYWd1cm11a2hpPTI1OTU7ZS5ubm5hZGV2YT0yMzQ1O2Uubm9oaXJhZ2FuYT0xMjM5ODtlLm5va2F0YWthbmE9MTI0OTQ7ZS5ub2thdGFrYW5haGFsZndpZHRoPTY1NDE3O2Uubm9uYnJlYWtpbmdzcGFjZT0xNjA7ZS5ub25lbnRoYWk9MzYwMztlLm5vbnV0aGFpPTM2MDk7ZS5ub29uYXJhYmljPTE2MDY7ZS5ub29uZmluYWxhcmFiaWM9NjUyNTQ7ZS5ub29uZ2h1bm5hYXJhYmljPTE3MjI7ZS5ub29uZ2h1bm5hZmluYWxhcmFiaWM9NjQ0MTU7ZS5ub29uaW5pdGlhbGFyYWJpYz02NTI1NTtlLm5vb25qZWVtaW5pdGlhbGFyYWJpYz02NDcyMjtlLm5vb25qZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1ODc7ZS5ub29ubWVkaWFsYXJhYmljPTY1MjU2O2Uubm9vbm1lZW1pbml0aWFsYXJhYmljPTY0NzI1O2Uubm9vbm1lZW1pc29sYXRlZGFyYWJpYz02NDU5MDtlLm5vb25ub29uZmluYWxhcmFiaWM9NjQ2NTM7ZS5ub3Rjb250YWlucz04NzE2O2Uubm90ZWxlbWVudD04NzEzO2Uubm90ZWxlbWVudG9mPTg3MTM7ZS5ub3RlcXVhbD04ODAwO2Uubm90Z3JlYXRlcj04ODE1O2Uubm90Z3JlYXRlcm5vcmVxdWFsPTg4MTc7ZS5ub3RncmVhdGVybm9ybGVzcz04ODI1O2Uubm90aWRlbnRpY2FsPTg4MDI7ZS5ub3RsZXNzPTg4MTQ7ZS5ub3RsZXNzbm9yZXF1YWw9ODgxNjtlLm5vdHBhcmFsbGVsPTg3NDI7ZS5ub3RwcmVjZWRlcz04ODMyO2Uubm90c3Vic2V0PTg4MzY7ZS5ub3RzdWNjZWVkcz04ODMzO2Uubm90c3VwZXJzZXQ9ODgzNztlLm5vd2FybWVuaWFuPTEzOTg7ZS5ucGFyZW49OTM4NTtlLm5zc3F1YXJlPTEzMjMzO2UubnN1cGVyaW9yPTgzMTk7ZS5udGlsZGU9MjQxO2UubnU9OTU3O2UubnVoaXJhZ2FuYT0xMjM5NjtlLm51a2F0YWthbmE9MTI0OTI7ZS5udWthdGFrYW5haGFsZndpZHRoPTY1NDE1O2UubnVrdGFiZW5nYWxpPTI0OTI7ZS5udWt0YWRldmE9MjM2NDtlLm51a3RhZ3VqYXJhdGk9Mjc0ODtlLm51a3RhZ3VybXVraGk9MjYyMDtlLm51bWJlcnNpZ249MzU7ZS5udW1iZXJzaWdubW9ub3NwYWNlPTY1MjgzO2UubnVtYmVyc2lnbnNtYWxsPTY1MTE5O2UubnVtZXJhbHNpZ25ncmVlaz04ODQ7ZS5udW1lcmFsc2lnbmxvd2VyZ3JlZWs9ODg1O2UubnVtZXJvPTg0NzA7ZS5udW49MTUwNDtlLm51bmRhZ2VzaD02NDMyMDtlLm51bmRhZ2VzaGhlYnJldz02NDMyMDtlLm51bmhlYnJldz0xNTA0O2UubnZzcXVhcmU9MTMyMzc7ZS5ud3NxdWFyZT0xMzI0MztlLm55YWJlbmdhbGk9MjQ2MjtlLm55YWRldmE9MjMzNDtlLm55YWd1amFyYXRpPTI3MTg7ZS5ueWFndXJtdWtoaT0yNTkwO2Uubz0xMTE7ZS5vYWN1dGU9MjQzO2Uub2FuZ3RoYWk9MzYyOTtlLm9iYXJyZWQ9NjI5O2Uub2JhcnJlZGN5cmlsbGljPTEyNTc7ZS5vYmFycmVkZGllcmVzaXNjeXJpbGxpYz0xMjU5O2Uub2JlbmdhbGk9MjQ1MTtlLm9ib3BvbW9mbz0xMjU3MTtlLm9icmV2ZT0zMzU7ZS5vY2FuZHJhZGV2YT0yMzIxO2Uub2NhbmRyYWd1amFyYXRpPTI3MDU7ZS5vY2FuZHJhdm93ZWxzaWduZGV2YT0yMzc3O2Uub2NhbmRyYXZvd2Vsc2lnbmd1amFyYXRpPTI3NjE7ZS5vY2Fyb249NDY2O2Uub2NpcmNsZT05NDM4O2Uub2NpcmN1bWZsZXg9MjQ0O2Uub2NpcmN1bWZsZXhhY3V0ZT03ODg5O2Uub2NpcmN1bWZsZXhkb3RiZWxvdz03ODk3O2Uub2NpcmN1bWZsZXhncmF2ZT03ODkxO2Uub2NpcmN1bWZsZXhob29rYWJvdmU9Nzg5MztlLm9jaXJjdW1mbGV4dGlsZGU9Nzg5NTtlLm9jeXJpbGxpYz0xMDg2O2Uub2RibGFjdXRlPTMzNztlLm9kYmxncmF2ZT01MjU7ZS5vZGV2YT0yMzIzO2Uub2RpZXJlc2lzPTI0NjtlLm9kaWVyZXNpc2N5cmlsbGljPTEyNTU7ZS5vZG90YmVsb3c9Nzg4NTtlLm9lPTMzOTtlLm9la29yZWFuPTEyNjM0O2Uub2dvbmVrPTczMTtlLm9nb25la2NtYj04MDg7ZS5vZ3JhdmU9MjQyO2Uub2d1amFyYXRpPTI3MDc7ZS5vaGFybWVuaWFuPTE0MTM7ZS5vaGlyYWdhbmE9MTIzNjI7ZS5vaG9va2Fib3ZlPTc4ODc7ZS5vaG9ybj00MTc7ZS5vaG9ybmFjdXRlPTc4OTk7ZS5vaG9ybmRvdGJlbG93PTc5MDc7ZS5vaG9ybmdyYXZlPTc5MDE7ZS5vaG9ybmhvb2thYm92ZT03OTAzO2Uub2hvcm50aWxkZT03OTA1O2Uub2h1bmdhcnVtbGF1dD0zMzc7ZS5vaT00MTk7ZS5vaW52ZXJ0ZWRicmV2ZT01Mjc7ZS5va2F0YWthbmE9MTI0NTg7ZS5va2F0YWthbmFoYWxmd2lkdGg9NjUzOTc7ZS5va29yZWFuPTEyNjMxO2Uub2xlaGVicmV3PTE0NTE7ZS5vbWFjcm9uPTMzMztlLm9tYWNyb25hY3V0ZT03NzYzO2Uub21hY3JvbmdyYXZlPTc3NjE7ZS5vbWRldmE9MjM4NDtlLm9tZWdhPTk2OTtlLm9tZWdhMT05ODI7ZS5vbWVnYWN5cmlsbGljPTExMjE7ZS5vbWVnYWxhdGluY2xvc2VkPTYzMTtlLm9tZWdhcm91bmRjeXJpbGxpYz0xMTQ3O2Uub21lZ2F0aXRsb2N5cmlsbGljPTExNDk7ZS5vbWVnYXRvbm9zPTk3NDtlLm9tZ3VqYXJhdGk9Mjc2ODtlLm9taWNyb249OTU5O2Uub21pY3JvbnRvbm9zPTk3MjtlLm9tb25vc3BhY2U9NjUzNTk7ZS5vbmU9NDk7ZS5vbmVhcmFiaWM9MTYzMztlLm9uZWJlbmdhbGk9MjUzNTtlLm9uZWNpcmNsZT05MzEyO2Uub25lY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyMjtlLm9uZWRldmE9MjQwNztlLm9uZWRvdGVubGVhZGVyPTgyMjg7ZS5vbmVlaWdodGg9ODUzOTtlLm9uZWZpdHRlZD02MzE5NjtlLm9uZWd1amFyYXRpPTI3OTE7ZS5vbmVndXJtdWtoaT0yNjYzO2Uub25laGFja2FyYWJpYz0xNjMzO2Uub25laGFsZj0xODk7ZS5vbmVoYW5nemhvdT0xMjMyMTtlLm9uZWlkZW9ncmFwaGljcGFyZW49MTI4MzI7ZS5vbmVpbmZlcmlvcj04MzIxO2Uub25lbW9ub3NwYWNlPTY1Mjk3O2Uub25lbnVtZXJhdG9yYmVuZ2FsaT0yNTQ4O2Uub25lb2xkc3R5bGU9NjMyODE7ZS5vbmVwYXJlbj05MzMyO2Uub25lcGVyaW9kPTkzNTI7ZS5vbmVwZXJzaWFuPTE3Nzc7ZS5vbmVxdWFydGVyPTE4ODtlLm9uZXJvbWFuPTg1NjA7ZS5vbmVzdXBlcmlvcj0xODU7ZS5vbmV0aGFpPTM2NjU7ZS5vbmV0aGlyZD04NTMxO2Uub29nb25laz00OTE7ZS5vb2dvbmVrbWFjcm9uPTQ5MztlLm9vZ3VybXVraGk9MjU3OTtlLm9vbWF0cmFndXJtdWtoaT0yNjM1O2Uub29wZW49NTk2O2Uub3BhcmVuPTkzODY7ZS5vcGVuYnVsbGV0PTk3MDI7ZS5vcHRpb249ODk5NztlLm9yZGZlbWluaW5lPTE3MDtlLm9yZG1hc2N1bGluZT0xODY7ZS5vcnRob2dvbmFsPTg3MzU7ZS5vc2hvcnRkZXZhPTIzMjI7ZS5vc2hvcnR2b3dlbHNpZ25kZXZhPTIzNzg7ZS5vc2xhc2g9MjQ4O2Uub3NsYXNoYWN1dGU9NTExO2Uub3NtYWxsaGlyYWdhbmE9MTIzNjE7ZS5vc21hbGxrYXRha2FuYT0xMjQ1NztlLm9zbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg3O2Uub3N0cm9rZWFjdXRlPTUxMTtlLm9zdXBlcmlvcj02MzIxNjtlLm90Y3lyaWxsaWM9MTE1MTtlLm90aWxkZT0yNDU7ZS5vdGlsZGVhY3V0ZT03NzU3O2Uub3RpbGRlZGllcmVzaXM9Nzc1OTtlLm91Ym9wb21vZm89MTI1Nzc7ZS5vdmVybGluZT04MjU0O2Uub3ZlcmxpbmVjZW50ZXJsaW5lPTY1MDk4O2Uub3ZlcmxpbmVjbWI9NzczO2Uub3ZlcmxpbmVkYXNoZWQ9NjUwOTc7ZS5vdmVybGluZWRibHdhdnk9NjUxMDA7ZS5vdmVybGluZXdhdnk9NjUwOTk7ZS5vdmVyc2NvcmU9MTc1O2Uub3Zvd2Vsc2lnbmJlbmdhbGk9MjUwNztlLm92b3dlbHNpZ25kZXZhPTIzNzk7ZS5vdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MztlLnA9MTEyO2UucGFhbXBzc3F1YXJlPTEzMTg0O2UucGFhc2VudG9zcXVhcmU9MTMwOTk7ZS5wYWJlbmdhbGk9MjQ3NDtlLnBhY3V0ZT03NzY1O2UucGFkZXZhPTIzNDY7ZS5wYWdlZG93bj04NjcxO2UucGFnZXVwPTg2NzA7ZS5wYWd1amFyYXRpPTI3MzA7ZS5wYWd1cm11a2hpPTI2MDI7ZS5wYWhpcmFnYW5hPTEyNDAxO2UucGFpeWFubm9pdGhhaT0zNjMxO2UucGFrYXRha2FuYT0xMjQ5NztlLnBhbGF0YWxpemF0aW9uY3lyaWxsaWNjbWI9MTE1NjtlLnBhbG9jaGthY3lyaWxsaWM9MTIxNjtlLnBhbnNpb3Nrb3JlYW49MTI2NzE7ZS5wYXJhZ3JhcGg9MTgyO2UucGFyYWxsZWw9ODc0MTtlLnBhcmVubGVmdD00MDtlLnBhcmVubGVmdGFsdG9uZWFyYWJpYz02NDgzMDtlLnBhcmVubGVmdGJ0PTYzNzI1O2UucGFyZW5sZWZ0ZXg9NjM3MjQ7ZS5wYXJlbmxlZnRpbmZlcmlvcj04MzMzO2UucGFyZW5sZWZ0bW9ub3NwYWNlPTY1Mjg4O2UucGFyZW5sZWZ0c21hbGw9NjUxMTM7ZS5wYXJlbmxlZnRzdXBlcmlvcj04MzE3O2UucGFyZW5sZWZ0dHA9NjM3MjM7ZS5wYXJlbmxlZnR2ZXJ0aWNhbD02NTA3NztlLnBhcmVucmlnaHQ9NDE7ZS5wYXJlbnJpZ2h0YWx0b25lYXJhYmljPTY0ODMxO2UucGFyZW5yaWdodGJ0PTYzNzM2O2UucGFyZW5yaWdodGV4PTYzNzM1O2UucGFyZW5yaWdodGluZmVyaW9yPTgzMzQ7ZS5wYXJlbnJpZ2h0bW9ub3NwYWNlPTY1Mjg5O2UucGFyZW5yaWdodHNtYWxsPTY1MTE0O2UucGFyZW5yaWdodHN1cGVyaW9yPTgzMTg7ZS5wYXJlbnJpZ2h0dHA9NjM3MzQ7ZS5wYXJlbnJpZ2h0dmVydGljYWw9NjUwNzg7ZS5wYXJ0aWFsZGlmZj04NzA2O2UucGFzZXFoZWJyZXc9MTQ3MjtlLnBhc2h0YWhlYnJldz0xNDMzO2UucGFzcXVhcmU9MTMyMjU7ZS5wYXRhaD0xNDYzO2UucGF0YWgxMT0xNDYzO2UucGF0YWgxZD0xNDYzO2UucGF0YWgyYT0xNDYzO2UucGF0YWhoZWJyZXc9MTQ2MztlLnBhdGFobmFycm93aGVicmV3PTE0NjM7ZS5wYXRhaHF1YXJ0ZXJoZWJyZXc9MTQ2MztlLnBhdGFod2lkZWhlYnJldz0xNDYzO2UucGF6ZXJoZWJyZXc9MTQ0MTtlLnBib3BvbW9mbz0xMjU1MDtlLnBjaXJjbGU9OTQzOTtlLnBkb3RhY2NlbnQ9Nzc2NztlLnBlPTE1MDg7ZS5wZWN5cmlsbGljPTEwODc7ZS5wZWRhZ2VzaD02NDMyNDtlLnBlZGFnZXNoaGVicmV3PTY0MzI0O2UucGVlemlzcXVhcmU9MTMxMTU7ZS5wZWZpbmFsZGFnZXNoaGVicmV3PTY0MzIzO2UucGVoYXJhYmljPTE2NjI7ZS5wZWhhcm1lbmlhbj0xNDAyO2UucGVoZWJyZXc9MTUwODtlLnBlaGZpbmFsYXJhYmljPTY0MzQzO2UucGVoaW5pdGlhbGFyYWJpYz02NDM0NDtlLnBlaGlyYWdhbmE9MTI0MTA7ZS5wZWhtZWRpYWxhcmFiaWM9NjQzNDU7ZS5wZWthdGFrYW5hPTEyNTA2O2UucGVtaWRkbGVob29rY3lyaWxsaWM9MTE5MTtlLnBlcmFmZWhlYnJldz02NDMzNDtlLnBlcmNlbnQ9Mzc7ZS5wZXJjZW50YXJhYmljPTE2NDI7ZS5wZXJjZW50bW9ub3NwYWNlPTY1Mjg1O2UucGVyY2VudHNtYWxsPTY1MTMwO2UucGVyaW9kPTQ2O2UucGVyaW9kYXJtZW5pYW49MTQxNztlLnBlcmlvZGNlbnRlcmVkPTE4MztlLnBlcmlvZGhhbGZ3aWR0aD02NTM3NztlLnBlcmlvZGluZmVyaW9yPTYzMjA3O2UucGVyaW9kbW9ub3NwYWNlPTY1Mjk0O2UucGVyaW9kc21hbGw9NjUxMDY7ZS5wZXJpb2RzdXBlcmlvcj02MzIwODtlLnBlcmlzcG9tZW5pZ3JlZWtjbWI9ODM0O2UucGVycGVuZGljdWxhcj04ODY5O2UucGVydGhvdXNhbmQ9ODI0MDtlLnBlc2V0YT04MzU5O2UucGZzcXVhcmU9MTMxOTQ7ZS5waGFiZW5nYWxpPTI0NzU7ZS5waGFkZXZhPTIzNDc7ZS5waGFndWphcmF0aT0yNzMxO2UucGhhZ3VybXVraGk9MjYwMztlLnBoaT05NjY7ZS5waGkxPTk4MTtlLnBoaWV1cGhhY2lyY2xla29yZWFuPTEyOTIyO2UucGhpZXVwaGFwYXJlbmtvcmVhbj0xMjgyNjtlLnBoaWV1cGhjaXJjbGVrb3JlYW49MTI5MDg7ZS5waGlldXBoa29yZWFuPTEyNjIxO2UucGhpZXVwaHBhcmVua29yZWFuPTEyODEyO2UucGhpbGF0aW49NjMyO2UucGhpbnRodXRoYWk9MzY0MjtlLnBoaXN5bWJvbGdyZWVrPTk4MTtlLnBob29rPTQyMTtlLnBob3BoYW50aGFpPTM2MTQ7ZS5waG9waHVuZ3RoYWk9MzYxMjtlLnBob3NhbXBoYW90aGFpPTM2MTY7ZS5waT05NjA7ZS5waWV1cGFjaXJjbGVrb3JlYW49MTI5MTU7ZS5waWV1cGFwYXJlbmtvcmVhbj0xMjgxOTtlLnBpZXVwY2lldWNrb3JlYW49MTI2NjI7ZS5waWV1cGNpcmNsZWtvcmVhbj0xMjkwMTtlLnBpZXVwa2l5ZW9ra29yZWFuPTEyNjU4O2UucGlldXBrb3JlYW49MTI2MTA7ZS5waWV1cHBhcmVua29yZWFuPTEyODA1O2UucGlldXBzaW9za2l5ZW9ra29yZWFuPTEyNjYwO2UucGlldXBzaW9za29yZWFuPTEyNjEyO2UucGlldXBzaW9zdGlrZXV0a29yZWFuPTEyNjYxO2UucGlldXB0aGlldXRoa29yZWFuPTEyNjYzO2UucGlldXB0aWtldXRrb3JlYW49MTI2NTk7ZS5waWhpcmFnYW5hPTEyNDA0O2UucGlrYXRha2FuYT0xMjUwMDtlLnBpc3ltYm9sZ3JlZWs9OTgyO2UucGl3cmFybWVuaWFuPTE0MTE7ZS5wbGFuY2tvdmVyMnBpPTg0NjM7ZS5wbGFuY2tvdmVyMnBpMT04NDYzO2UucGx1cz00MztlLnBsdXNiZWxvd2NtYj03OTk7ZS5wbHVzY2lyY2xlPTg4NTM7ZS5wbHVzbWludXM9MTc3O2UucGx1c21vZD03MjY7ZS5wbHVzbW9ub3NwYWNlPTY1MjkxO2UucGx1c3NtYWxsPTY1MTIyO2UucGx1c3N1cGVyaW9yPTgzMTQ7ZS5wbW9ub3NwYWNlPTY1MzYwO2UucG1zcXVhcmU9MTMyNzI7ZS5wb2hpcmFnYW5hPTEyNDEzO2UucG9pbnRpbmdpbmRleGRvd253aGl0ZT05NzU5O2UucG9pbnRpbmdpbmRleGxlZnR3aGl0ZT05NzU2O2UucG9pbnRpbmdpbmRleHJpZ2h0d2hpdGU9OTc1ODtlLnBvaW50aW5naW5kZXh1cHdoaXRlPTk3NTc7ZS5wb2thdGFrYW5hPTEyNTA5O2UucG9wbGF0aGFpPTM2MTE7ZS5wb3N0YWxtYXJrPTEyMzA2O2UucG9zdGFsbWFya2ZhY2U9MTIzMjA7ZS5wcGFyZW49OTM4NztlLnByZWNlZGVzPTg4MjY7ZS5wcmVzY3JpcHRpb249ODQ3ODtlLnByaW1lbW9kPTY5NztlLnByaW1lcmV2ZXJzZWQ9ODI0NTtlLnByb2R1Y3Q9ODcxOTtlLnByb2plY3RpdmU9ODk2NTtlLnByb2xvbmdlZGthbmE9MTI1NDA7ZS5wcm9wZWxsb3I9ODk4NDtlLnByb3BlcnN1YnNldD04ODM0O2UucHJvcGVyc3VwZXJzZXQ9ODgzNTtlLnByb3BvcnRpb249ODc1OTtlLnByb3BvcnRpb25hbD04NzMzO2UucHNpPTk2ODtlLnBzaWN5cmlsbGljPTExMzc7ZS5wc2lsaXBuZXVtYXRhY3lyaWxsaWNjbWI9MTE1ODtlLnBzc3F1YXJlPTEzMjMyO2UucHVoaXJhZ2FuYT0xMjQwNztlLnB1a2F0YWthbmE9MTI1MDM7ZS5wdnNxdWFyZT0xMzIzNjtlLnB3c3F1YXJlPTEzMjQyO2UucT0xMTM7ZS5xYWRldmE9MjM5MjtlLnFhZG1haGVicmV3PTE0NDg7ZS5xYWZhcmFiaWM9MTYwMjtlLnFhZmZpbmFsYXJhYmljPTY1MjM4O2UucWFmaW5pdGlhbGFyYWJpYz02NTIzOTtlLnFhZm1lZGlhbGFyYWJpYz02NTI0MDtlLnFhbWF0cz0xNDY0O2UucWFtYXRzMTA9MTQ2NDtlLnFhbWF0czFhPTE0NjQ7ZS5xYW1hdHMxYz0xNDY0O2UucWFtYXRzMjc9MTQ2NDtlLnFhbWF0czI5PTE0NjQ7ZS5xYW1hdHMzMz0xNDY0O2UucWFtYXRzZGU9MTQ2NDtlLnFhbWF0c2hlYnJldz0xNDY0O2UucWFtYXRzbmFycm93aGVicmV3PTE0NjQ7ZS5xYW1hdHNxYXRhbmhlYnJldz0xNDY0O2UucWFtYXRzcWF0YW5uYXJyb3doZWJyZXc9MTQ2NDtlLnFhbWF0c3FhdGFucXVhcnRlcmhlYnJldz0xNDY0O2UucWFtYXRzcWF0YW53aWRlaGVicmV3PTE0NjQ7ZS5xYW1hdHNxdWFydGVyaGVicmV3PTE0NjQ7ZS5xYW1hdHN3aWRlaGVicmV3PTE0NjQ7ZS5xYXJuZXlwYXJhaGVicmV3PTE0Mzk7ZS5xYm9wb21vZm89MTI1NjE7ZS5xY2lyY2xlPTk0NDA7ZS5xaG9vaz02NzI7ZS5xbW9ub3NwYWNlPTY1MzYxO2UucW9mPTE1MTE7ZS5xb2ZkYWdlc2g9NjQzMjc7ZS5xb2ZkYWdlc2hoZWJyZXc9NjQzMjc7ZS5xb2ZoZWJyZXc9MTUxMTtlLnFwYXJlbj05Mzg4O2UucXVhcnRlcm5vdGU9OTgzMztlLnF1YnV0cz0xNDY3O2UucXVidXRzMTg9MTQ2NztlLnF1YnV0czI1PTE0Njc7ZS5xdWJ1dHMzMT0xNDY3O2UucXVidXRzaGVicmV3PTE0Njc7ZS5xdWJ1dHNuYXJyb3doZWJyZXc9MTQ2NztlLnF1YnV0c3F1YXJ0ZXJoZWJyZXc9MTQ2NztlLnF1YnV0c3dpZGVoZWJyZXc9MTQ2NztlLnF1ZXN0aW9uPTYzO2UucXVlc3Rpb25hcmFiaWM9MTU2NztlLnF1ZXN0aW9uYXJtZW5pYW49MTM3NDtlLnF1ZXN0aW9uZG93bj0xOTE7ZS5xdWVzdGlvbmRvd25zbWFsbD02MzQyMztlLnF1ZXN0aW9uZ3JlZWs9ODk0O2UucXVlc3Rpb25tb25vc3BhY2U9NjUzMTE7ZS5xdWVzdGlvbnNtYWxsPTYzMjk1O2UucXVvdGVkYmw9MzQ7ZS5xdW90ZWRibGJhc2U9ODIyMjtlLnF1b3RlZGJsbGVmdD04MjIwO2UucXVvdGVkYmxtb25vc3BhY2U9NjUyODI7ZS5xdW90ZWRibHByaW1lPTEyMzE4O2UucXVvdGVkYmxwcmltZXJldmVyc2VkPTEyMzE3O2UucXVvdGVkYmxyaWdodD04MjIxO2UucXVvdGVsZWZ0PTgyMTY7ZS5xdW90ZWxlZnRyZXZlcnNlZD04MjE5O2UucXVvdGVyZXZlcnNlZD04MjE5O2UucXVvdGVyaWdodD04MjE3O2UucXVvdGVyaWdodG49MzI5O2UucXVvdGVzaW5nbGJhc2U9ODIxODtlLnF1b3Rlc2luZ2xlPTM5O2UucXVvdGVzaW5nbGVtb25vc3BhY2U9NjUyODc7ZS5yPTExNDtlLnJhYXJtZW5pYW49MTQwNDtlLnJhYmVuZ2FsaT0yNDgwO2UucmFjdXRlPTM0MTtlLnJhZGV2YT0yMzUyO2UucmFkaWNhbD04NzMwO2UucmFkaWNhbGV4PTYzNzE3O2UucmFkb3ZlcnNzcXVhcmU9MTMyMzA7ZS5yYWRvdmVyc3NxdWFyZWRzcXVhcmU9MTMyMzE7ZS5yYWRzcXVhcmU9MTMyMjk7ZS5yYWZlPTE0NzE7ZS5yYWZlaGVicmV3PTE0NzE7ZS5yYWd1amFyYXRpPTI3MzY7ZS5yYWd1cm11a2hpPTI2MDg7ZS5yYWhpcmFnYW5hPTEyNDI1O2UucmFrYXRha2FuYT0xMjUyMTtlLnJha2F0YWthbmFoYWxmd2lkdGg9NjU0MzE7ZS5yYWxvd2VyZGlhZ29uYWxiZW5nYWxpPTI1NDU7ZS5yYW1pZGRsZWRpYWdvbmFsYmVuZ2FsaT0yNTQ0O2UucmFtc2hvcm49NjEyO2UucmF0aW89ODc1ODtlLnJib3BvbW9mbz0xMjU2NjtlLnJjYXJvbj0zNDU7ZS5yY2VkaWxsYT0zNDM7ZS5yY2lyY2xlPTk0NDE7ZS5yY29tbWFhY2NlbnQ9MzQzO2UucmRibGdyYXZlPTUyOTtlLnJkb3RhY2NlbnQ9Nzc2OTtlLnJkb3RiZWxvdz03NzcxO2UucmRvdGJlbG93bWFjcm9uPTc3NzM7ZS5yZWZlcmVuY2VtYXJrPTgyNTE7ZS5yZWZsZXhzdWJzZXQ9ODgzODtlLnJlZmxleHN1cGVyc2V0PTg4Mzk7ZS5yZWdpc3RlcmVkPTE3NDtlLnJlZ2lzdGVyc2Fucz02MzcyMDtlLnJlZ2lzdGVyc2VyaWY9NjMxOTQ7ZS5yZWhhcmFiaWM9MTU4NTtlLnJlaGFybWVuaWFuPTE0MDg7ZS5yZWhmaW5hbGFyYWJpYz02NTE5ODtlLnJlaGlyYWdhbmE9MTI0Mjg7ZS5yZWthdGFrYW5hPTEyNTI0O2UucmVrYXRha2FuYWhhbGZ3aWR0aD02NTQzNDtlLnJlc2g9MTUxMjtlLnJlc2hkYWdlc2hoZWJyZXc9NjQzMjg7ZS5yZXNoaGVicmV3PTE1MTI7ZS5yZXZlcnNlZHRpbGRlPTg3NjU7ZS5yZXZpYWhlYnJldz0xNDMxO2UucmV2aWFtdWdyYXNoaGVicmV3PTE0MzE7ZS5yZXZsb2dpY2Fsbm90PTg5NzY7ZS5yZmlzaGhvb2s9NjM4O2UucmZpc2hob29rcmV2ZXJzZWQ9NjM5O2UucmhhYmVuZ2FsaT0yNTI1O2UucmhhZGV2YT0yMzk3O2UucmhvPTk2MTtlLnJob29rPTYzNztlLnJob29rdHVybmVkPTYzNTtlLnJob29rdHVybmVkc3VwZXJpb3I9NjkzO2Uucmhvc3ltYm9sZ3JlZWs9MTAwOTtlLnJob3RpY2hvb2ttb2Q9NzM0O2UucmlldWxhY2lyY2xla29yZWFuPTEyOTEzO2UucmlldWxhcGFyZW5rb3JlYW49MTI4MTc7ZS5yaWV1bGNpcmNsZWtvcmVhbj0xMjg5OTtlLnJpZXVsaGlldWhrb3JlYW49MTI2MDg7ZS5yaWV1bGtpeWVva2tvcmVhbj0xMjYwMjtlLnJpZXVsa2l5ZW9rc2lvc2tvcmVhbj0xMjY0OTtlLnJpZXVsa29yZWFuPTEyNjAxO2UucmlldWxtaWV1bWtvcmVhbj0xMjYwMztlLnJpZXVscGFuc2lvc2tvcmVhbj0xMjY1MjtlLnJpZXVscGFyZW5rb3JlYW49MTI4MDM7ZS5yaWV1bHBoaWV1cGhrb3JlYW49MTI2MDc7ZS5yaWV1bHBpZXVwa29yZWFuPTEyNjA0O2UucmlldWxwaWV1cHNpb3Nrb3JlYW49MTI2NTE7ZS5yaWV1bHNpb3Nrb3JlYW49MTI2MDU7ZS5yaWV1bHRoaWV1dGhrb3JlYW49MTI2MDY7ZS5yaWV1bHRpa2V1dGtvcmVhbj0xMjY1MDtlLnJpZXVseWVvcmluaGlldWhrb3JlYW49MTI2NTM7ZS5yaWdodGFuZ2xlPTg3MzU7ZS5yaWdodHRhY2tiZWxvd2NtYj03OTM7ZS5yaWdodHRyaWFuZ2xlPTg4OTU7ZS5yaWhpcmFnYW5hPTEyNDI2O2UucmlrYXRha2FuYT0xMjUyMjtlLnJpa2F0YWthbmFoYWxmd2lkdGg9NjU0MzI7ZS5yaW5nPTczMDtlLnJpbmdiZWxvd2NtYj04MDU7ZS5yaW5nY21iPTc3ODtlLnJpbmdoYWxmbGVmdD03MDM7ZS5yaW5naGFsZmxlZnRhcm1lbmlhbj0xMzY5O2UucmluZ2hhbGZsZWZ0YmVsb3djbWI9Nzk2O2UucmluZ2hhbGZsZWZ0Y2VudGVyZWQ9NzIzO2UucmluZ2hhbGZyaWdodD03MDI7ZS5yaW5naGFsZnJpZ2h0YmVsb3djbWI9ODI1O2UucmluZ2hhbGZyaWdodGNlbnRlcmVkPTcyMjtlLnJpbnZlcnRlZGJyZXZlPTUzMTtlLnJpdHRvcnVzcXVhcmU9MTMxMzc7ZS5ybGluZWJlbG93PTc3NzU7ZS5ybG9uZ2xlZz02MzY7ZS5ybG9uZ2xlZ3R1cm5lZD02MzQ7ZS5ybW9ub3NwYWNlPTY1MzYyO2Uucm9oaXJhZ2FuYT0xMjQyOTtlLnJva2F0YWthbmE9MTI1MjU7ZS5yb2thdGFrYW5haGFsZndpZHRoPTY1NDM1O2Uucm9ydWF0aGFpPTM2MTk7ZS5ycGFyZW49OTM4OTtlLnJyYWJlbmdhbGk9MjUyNDtlLnJyYWRldmE9MjM1MztlLnJyYWd1cm11a2hpPTI2NTI7ZS5ycmVoYXJhYmljPTE2ODE7ZS5ycmVoZmluYWxhcmFiaWM9NjQzOTc7ZS5ycnZvY2FsaWNiZW5nYWxpPTI1Mjg7ZS5ycnZvY2FsaWNkZXZhPTI0MDA7ZS5ycnZvY2FsaWNndWphcmF0aT0yNzg0O2UucnJ2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNTAwO2UucnJ2b2NhbGljdm93ZWxzaWduZGV2YT0yMzcyO2UucnJ2b2NhbGljdm93ZWxzaWduZ3VqYXJhdGk9Mjc1NjtlLnJzdXBlcmlvcj02MzIxNztlLnJ0YmxvY2s9OTYxNjtlLnJ0dXJuZWQ9NjMzO2UucnR1cm5lZHN1cGVyaW9yPTY5MjtlLnJ1aGlyYWdhbmE9MTI0Mjc7ZS5ydWthdGFrYW5hPTEyNTIzO2UucnVrYXRha2FuYWhhbGZ3aWR0aD02NTQzMztlLnJ1cGVlbWFya2JlbmdhbGk9MjU0NjtlLnJ1cGVlc2lnbmJlbmdhbGk9MjU0NztlLnJ1cGlhaD02MzE5NztlLnJ1dGhhaT0zNjIwO2UucnZvY2FsaWNiZW5nYWxpPTI0NDM7ZS5ydm9jYWxpY2RldmE9MjMxNTtlLnJ2b2NhbGljZ3VqYXJhdGk9MjY5OTtlLnJ2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNDk5O2UucnZvY2FsaWN2b3dlbHNpZ25kZXZhPTIzNzE7ZS5ydm9jYWxpY3Zvd2Vsc2lnbmd1amFyYXRpPTI3NTU7ZS5zPTExNTtlLnNhYmVuZ2FsaT0yNDg4O2Uuc2FjdXRlPTM0NztlLnNhY3V0ZWRvdGFjY2VudD03NzgxO2Uuc2FkYXJhYmljPTE1ODk7ZS5zYWRldmE9MjM2MDtlLnNhZGZpbmFsYXJhYmljPTY1MjEwO2Uuc2FkaW5pdGlhbGFyYWJpYz02NTIxMTtlLnNhZG1lZGlhbGFyYWJpYz02NTIxMjtlLnNhZ3VqYXJhdGk9Mjc0NDtlLnNhZ3VybXVraGk9MjYxNjtlLnNhaGlyYWdhbmE9MTIzNzM7ZS5zYWthdGFrYW5hPTEyNDY5O2Uuc2FrYXRha2FuYWhhbGZ3aWR0aD02NTQwMztlLnNhbGxhbGxhaG91YWxheWhld2FzYWxsYW1hcmFiaWM9NjUwMTg7ZS5zYW1la2g9MTUwNTtlLnNhbWVraGRhZ2VzaD02NDMyMTtlLnNhbWVraGRhZ2VzaGhlYnJldz02NDMyMTtlLnNhbWVraGhlYnJldz0xNTA1O2Uuc2FyYWFhdGhhaT0zNjM0O2Uuc2FyYWFldGhhaT0zNjQ5O2Uuc2FyYWFpbWFpbWFsYWl0aGFpPTM2NTI7ZS5zYXJhYWltYWltdWFudGhhaT0zNjUxO2Uuc2FyYWFtdGhhaT0zNjM1O2Uuc2FyYWF0aGFpPTM2MzI7ZS5zYXJhZXRoYWk9MzY0ODtlLnNhcmFpaWxlZnR0aGFpPTYzNjIyO2Uuc2FyYWlpdGhhaT0zNjM3O2Uuc2FyYWlsZWZ0dGhhaT02MzYyMTtlLnNhcmFpdGhhaT0zNjM2O2Uuc2FyYW90aGFpPTM2NTA7ZS5zYXJhdWVlbGVmdHRoYWk9NjM2MjQ7ZS5zYXJhdWVldGhhaT0zNjM5O2Uuc2FyYXVlbGVmdHRoYWk9NjM2MjM7ZS5zYXJhdWV0aGFpPTM2Mzg7ZS5zYXJhdXRoYWk9MzY0MDtlLnNhcmF1dXRoYWk9MzY0MTtlLnNib3BvbW9mbz0xMjU2OTtlLnNjYXJvbj0zNTM7ZS5zY2Fyb25kb3RhY2NlbnQ9Nzc4MztlLnNjZWRpbGxhPTM1MTtlLnNjaHdhPTYwMTtlLnNjaHdhY3lyaWxsaWM9MTI0MTtlLnNjaHdhZGllcmVzaXNjeXJpbGxpYz0xMjQzO2Uuc2Nod2Fob29rPTYwMjtlLnNjaXJjbGU9OTQ0MjtlLnNjaXJjdW1mbGV4PTM0OTtlLnNjb21tYWFjY2VudD01Mzc7ZS5zZG90YWNjZW50PTc3Nzc7ZS5zZG90YmVsb3c9Nzc3OTtlLnNkb3RiZWxvd2RvdGFjY2VudD03Nzg1O2Uuc2VhZ3VsbGJlbG93Y21iPTgyODtlLnNlY29uZD04MjQzO2Uuc2Vjb25kdG9uZWNoaW5lc2U9NzE0O2Uuc2VjdGlvbj0xNjc7ZS5zZWVuYXJhYmljPTE1ODc7ZS5zZWVuZmluYWxhcmFiaWM9NjUyMDI7ZS5zZWVuaW5pdGlhbGFyYWJpYz02NTIwMztlLnNlZW5tZWRpYWxhcmFiaWM9NjUyMDQ7ZS5zZWdvbD0xNDYyO2Uuc2Vnb2wxMz0xNDYyO2Uuc2Vnb2wxZj0xNDYyO2Uuc2Vnb2wyYz0xNDYyO2Uuc2Vnb2xoZWJyZXc9MTQ2MjtlLnNlZ29sbmFycm93aGVicmV3PTE0NjI7ZS5zZWdvbHF1YXJ0ZXJoZWJyZXc9MTQ2MjtlLnNlZ29sdGFoZWJyZXc9MTQyNjtlLnNlZ29sd2lkZWhlYnJldz0xNDYyO2Uuc2VoYXJtZW5pYW49MTQwNTtlLnNlaGlyYWdhbmE9MTIzNzk7ZS5zZWthdGFrYW5hPTEyNDc1O2Uuc2VrYXRha2FuYWhhbGZ3aWR0aD02NTQwNjtlLnNlbWljb2xvbj01OTtlLnNlbWljb2xvbmFyYWJpYz0xNTYzO2Uuc2VtaWNvbG9ubW9ub3NwYWNlPTY1MzA3O2Uuc2VtaWNvbG9uc21hbGw9NjUxMDg7ZS5zZW1pdm9pY2VkbWFya2thbmE9MTI0NDQ7ZS5zZW1pdm9pY2VkbWFya2thbmFoYWxmd2lkdGg9NjU0Mzk7ZS5zZW50aXNxdWFyZT0xMzA5MDtlLnNlbnRvc3F1YXJlPTEzMDkxO2Uuc2V2ZW49NTU7ZS5zZXZlbmFyYWJpYz0xNjM5O2Uuc2V2ZW5iZW5nYWxpPTI1NDE7ZS5zZXZlbmNpcmNsZT05MzE4O2Uuc2V2ZW5jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI4O2Uuc2V2ZW5kZXZhPTI0MTM7ZS5zZXZlbmVpZ2h0aHM9ODU0MjtlLnNldmVuZ3VqYXJhdGk9Mjc5NztlLnNldmVuZ3VybXVraGk9MjY2OTtlLnNldmVuaGFja2FyYWJpYz0xNjM5O2Uuc2V2ZW5oYW5nemhvdT0xMjMyNztlLnNldmVuaWRlb2dyYXBoaWNwYXJlbj0xMjgzODtlLnNldmVuaW5mZXJpb3I9ODMyNztlLnNldmVubW9ub3NwYWNlPTY1MzAzO2Uuc2V2ZW5vbGRzdHlsZT02MzI4NztlLnNldmVucGFyZW49OTMzODtlLnNldmVucGVyaW9kPTkzNTg7ZS5zZXZlbnBlcnNpYW49MTc4MztlLnNldmVucm9tYW49ODU2NjtlLnNldmVuc3VwZXJpb3I9ODMxMTtlLnNldmVudGVlbmNpcmNsZT05MzI4O2Uuc2V2ZW50ZWVucGFyZW49OTM0ODtlLnNldmVudGVlbnBlcmlvZD05MzY4O2Uuc2V2ZW50aGFpPTM2NzE7ZS5zZnRoeXBoZW49MTczO2Uuc2hhYXJtZW5pYW49MTM5OTtlLnNoYWJlbmdhbGk9MjQ4NjtlLnNoYWN5cmlsbGljPTEwOTY7ZS5zaGFkZGFhcmFiaWM9MTYxNztlLnNoYWRkYWRhbW1hYXJhYmljPTY0NjA5O2Uuc2hhZGRhZGFtbWF0YW5hcmFiaWM9NjQ2MDY7ZS5zaGFkZGFmYXRoYWFyYWJpYz02NDYwODtlLnNoYWRkYWthc3JhYXJhYmljPTY0NjEwO2Uuc2hhZGRha2FzcmF0YW5hcmFiaWM9NjQ2MDc7ZS5zaGFkZT05NjE4O2Uuc2hhZGVkYXJrPTk2MTk7ZS5zaGFkZWxpZ2h0PTk2MTc7ZS5zaGFkZW1lZGl1bT05NjE4O2Uuc2hhZGV2YT0yMzU4O2Uuc2hhZ3VqYXJhdGk9Mjc0MjtlLnNoYWd1cm11a2hpPTI2MTQ7ZS5zaGFsc2hlbGV0aGVicmV3PTE0Mjc7ZS5zaGJvcG9tb2ZvPTEyNTY1O2Uuc2hjaGFjeXJpbGxpYz0xMDk3O2Uuc2hlZW5hcmFiaWM9MTU4ODtlLnNoZWVuZmluYWxhcmFiaWM9NjUyMDY7ZS5zaGVlbmluaXRpYWxhcmFiaWM9NjUyMDc7ZS5zaGVlbm1lZGlhbGFyYWJpYz02NTIwODtlLnNoZWljb3B0aWM9OTk1O2Uuc2hlcWVsPTgzNjI7ZS5zaGVxZWxoZWJyZXc9ODM2MjtlLnNoZXZhPTE0NTY7ZS5zaGV2YTExNT0xNDU2O2Uuc2hldmExNT0xNDU2O2Uuc2hldmEyMj0xNDU2O2Uuc2hldmEyZT0xNDU2O2Uuc2hldmFoZWJyZXc9MTQ1NjtlLnNoZXZhbmFycm93aGVicmV3PTE0NTY7ZS5zaGV2YXF1YXJ0ZXJoZWJyZXc9MTQ1NjtlLnNoZXZhd2lkZWhlYnJldz0xNDU2O2Uuc2hoYWN5cmlsbGljPTEyMTE7ZS5zaGltYWNvcHRpYz0xMDA1O2Uuc2hpbj0xNTEzO2Uuc2hpbmRhZ2VzaD02NDMyOTtlLnNoaW5kYWdlc2hoZWJyZXc9NjQzMjk7ZS5zaGluZGFnZXNoc2hpbmRvdD02NDMwMDtlLnNoaW5kYWdlc2hzaGluZG90aGVicmV3PTY0MzAwO2Uuc2hpbmRhZ2VzaHNpbmRvdD02NDMwMTtlLnNoaW5kYWdlc2hzaW5kb3RoZWJyZXc9NjQzMDE7ZS5zaGluZG90aGVicmV3PTE0NzM7ZS5zaGluaGVicmV3PTE1MTM7ZS5zaGluc2hpbmRvdD02NDI5ODtlLnNoaW5zaGluZG90aGVicmV3PTY0Mjk4O2Uuc2hpbnNpbmRvdD02NDI5OTtlLnNoaW5zaW5kb3RoZWJyZXc9NjQyOTk7ZS5zaG9vaz02NDI7ZS5zaWdtYT05NjM7ZS5zaWdtYTE9OTYyO2Uuc2lnbWFmaW5hbD05NjI7ZS5zaWdtYWx1bmF0ZXN5bWJvbGdyZWVrPTEwMTA7ZS5zaWhpcmFnYW5hPTEyMzc1O2Uuc2lrYXRha2FuYT0xMjQ3MTtlLnNpa2F0YWthbmFoYWxmd2lkdGg9NjU0MDQ7ZS5zaWx1cWhlYnJldz0xNDY5O2Uuc2lsdXFsZWZ0aGVicmV3PTE0Njk7ZS5zaW1pbGFyPTg3NjQ7ZS5zaW5kb3RoZWJyZXc9MTQ3NDtlLnNpb3NhY2lyY2xla29yZWFuPTEyOTE2O2Uuc2lvc2FwYXJlbmtvcmVhbj0xMjgyMDtlLnNpb3NjaWV1Y2tvcmVhbj0xMjY3MDtlLnNpb3NjaXJjbGVrb3JlYW49MTI5MDI7ZS5zaW9za2l5ZW9ra29yZWFuPTEyNjY2O2Uuc2lvc2tvcmVhbj0xMjYxMztlLnNpb3NuaWV1bmtvcmVhbj0xMjY2NztlLnNpb3NwYXJlbmtvcmVhbj0xMjgwNjtlLnNpb3NwaWV1cGtvcmVhbj0xMjY2OTtlLnNpb3N0aWtldXRrb3JlYW49MTI2Njg7ZS5zaXg9NTQ7ZS5zaXhhcmFiaWM9MTYzODtlLnNpeGJlbmdhbGk9MjU0MDtlLnNpeGNpcmNsZT05MzE3O2Uuc2l4Y2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNztlLnNpeGRldmE9MjQxMjtlLnNpeGd1amFyYXRpPTI3OTY7ZS5zaXhndXJtdWtoaT0yNjY4O2Uuc2l4aGFja2FyYWJpYz0xNjM4O2Uuc2l4aGFuZ3pob3U9MTIzMjY7ZS5zaXhpZGVvZ3JhcGhpY3BhcmVuPTEyODM3O2Uuc2l4aW5mZXJpb3I9ODMyNjtlLnNpeG1vbm9zcGFjZT02NTMwMjtlLnNpeG9sZHN0eWxlPTYzMjg2O2Uuc2l4cGFyZW49OTMzNztlLnNpeHBlcmlvZD05MzU3O2Uuc2l4cGVyc2lhbj0xNzgyO2Uuc2l4cm9tYW49ODU2NTtlLnNpeHN1cGVyaW9yPTgzMTA7ZS5zaXh0ZWVuY2lyY2xlPTkzMjc7ZS5zaXh0ZWVuY3VycmVuY3lkZW5vbWluYXRvcmJlbmdhbGk9MjU1MztlLnNpeHRlZW5wYXJlbj05MzQ3O2Uuc2l4dGVlbnBlcmlvZD05MzY3O2Uuc2l4dGhhaT0zNjcwO2Uuc2xhc2g9NDc7ZS5zbGFzaG1vbm9zcGFjZT02NTI5NTtlLnNsb25nPTM4MztlLnNsb25nZG90YWNjZW50PTc4MzU7ZS5zbWlsZWZhY2U9OTc4NjtlLnNtb25vc3BhY2U9NjUzNjM7ZS5zb2ZwYXN1cWhlYnJldz0xNDc1O2Uuc29mdGh5cGhlbj0xNzM7ZS5zb2Z0c2lnbmN5cmlsbGljPTExMDA7ZS5zb2hpcmFnYW5hPTEyMzgxO2Uuc29rYXRha2FuYT0xMjQ3NztlLnNva2F0YWthbmFoYWxmd2lkdGg9NjU0MDc7ZS5zb2xpZHVzbG9uZ292ZXJsYXljbWI9ODI0O2Uuc29saWR1c3Nob3J0b3ZlcmxheWNtYj04MjM7ZS5zb3J1c2l0aGFpPTM2MjU7ZS5zb3NhbGF0aGFpPTM2MjQ7ZS5zb3NvdGhhaT0zNTk1O2Uuc29zdWF0aGFpPTM2MjY7ZS5zcGFjZT0zMjtlLnNwYWNlaGFja2FyYWJpYz0zMjtlLnNwYWRlPTk4MjQ7ZS5zcGFkZXN1aXRibGFjaz05ODI0O2Uuc3BhZGVzdWl0d2hpdGU9OTgyODtlLnNwYXJlbj05MzkwO2Uuc3F1YXJlYmVsb3djbWI9ODI3O2Uuc3F1YXJlY2M9MTMyNTI7ZS5zcXVhcmVjbT0xMzIxMztlLnNxdWFyZWRpYWdvbmFsY3Jvc3NoYXRjaGZpbGw9OTY0MTtlLnNxdWFyZWhvcml6b250YWxmaWxsPTk2MzY7ZS5zcXVhcmVrZz0xMzE5OTtlLnNxdWFyZWttPTEzMjE0O2Uuc3F1YXJla21jYXBpdGFsPTEzMjYyO2Uuc3F1YXJlbG49MTMyNjU7ZS5zcXVhcmVsb2c9MTMyNjY7ZS5zcXVhcmVtZz0xMzE5ODtlLnNxdWFyZW1pbD0xMzI2OTtlLnNxdWFyZW1tPTEzMjEyO2Uuc3F1YXJlbXNxdWFyZWQ9MTMyMTc7ZS5zcXVhcmVvcnRob2dvbmFsY3Jvc3NoYXRjaGZpbGw9OTYzODtlLnNxdWFyZXVwcGVybGVmdHRvbG93ZXJyaWdodGZpbGw9OTYzOTtlLnNxdWFyZXVwcGVycmlnaHR0b2xvd2VybGVmdGZpbGw9OTY0MDtlLnNxdWFyZXZlcnRpY2FsZmlsbD05NjM3O2Uuc3F1YXJld2hpdGV3aXRoc21hbGxibGFjaz05NjM1O2Uuc3JzcXVhcmU9MTMyNzU7ZS5zc2FiZW5nYWxpPTI0ODc7ZS5zc2FkZXZhPTIzNTk7ZS5zc2FndWphcmF0aT0yNzQzO2Uuc3NhbmdjaWV1Y2tvcmVhbj0xMjYxNztlLnNzYW5naGlldWhrb3JlYW49MTI2Nzc7ZS5zc2FuZ2lldW5na29yZWFuPTEyNjcyO2Uuc3NhbmdraXllb2trb3JlYW49MTI1OTQ7ZS5zc2FuZ25pZXVua29yZWFuPTEyNjQ1O2Uuc3NhbmdwaWV1cGtvcmVhbj0xMjYxMTtlLnNzYW5nc2lvc2tvcmVhbj0xMjYxNDtlLnNzYW5ndGlrZXV0a29yZWFuPTEyNjAwO2Uuc3N1cGVyaW9yPTYzMjE4O2Uuc3Rlcmxpbmc9MTYzO2Uuc3Rlcmxpbmdtb25vc3BhY2U9NjU1MDU7ZS5zdHJva2Vsb25nb3ZlcmxheWNtYj04MjI7ZS5zdHJva2VzaG9ydG92ZXJsYXljbWI9ODIxO2Uuc3Vic2V0PTg4MzQ7ZS5zdWJzZXRub3RlcXVhbD04ODQyO2Uuc3Vic2V0b3JlcXVhbD04ODM4O2Uuc3VjY2VlZHM9ODgyNztlLnN1Y2h0aGF0PTg3MTU7ZS5zdWhpcmFnYW5hPTEyMzc3O2Uuc3VrYXRha2FuYT0xMjQ3MztlLnN1a2F0YWthbmFoYWxmd2lkdGg9NjU0MDU7ZS5zdWt1bmFyYWJpYz0xNjE4O2Uuc3VtbWF0aW9uPTg3MjE7ZS5zdW49OTc4ODtlLnN1cGVyc2V0PTg4MzU7ZS5zdXBlcnNldG5vdGVxdWFsPTg4NDM7ZS5zdXBlcnNldG9yZXF1YWw9ODgzOTtlLnN2c3F1YXJlPTEzMjc2O2Uuc3lvdXdhZXJhc3F1YXJlPTEzMTgwO2UudD0xMTY7ZS50YWJlbmdhbGk9MjQ2ODtlLnRhY2tkb3duPTg4Njg7ZS50YWNrbGVmdD04ODY3O2UudGFkZXZhPTIzNDA7ZS50YWd1amFyYXRpPTI3MjQ7ZS50YWd1cm11a2hpPTI1OTY7ZS50YWhhcmFiaWM9MTU5MTtlLnRhaGZpbmFsYXJhYmljPTY1MjE4O2UudGFoaW5pdGlhbGFyYWJpYz02NTIxOTtlLnRhaGlyYWdhbmE9MTIzODM7ZS50YWhtZWRpYWxhcmFiaWM9NjUyMjA7ZS50YWlzeW91ZXJhc3F1YXJlPTEzMTgxO2UudGFrYXRha2FuYT0xMjQ3OTtlLnRha2F0YWthbmFoYWxmd2lkdGg9NjU0MDg7ZS50YXR3ZWVsYXJhYmljPTE2MDA7ZS50YXU9OTY0O2UudGF2PTE1MTQ7ZS50YXZkYWdlcz02NDMzMDtlLnRhdmRhZ2VzaD02NDMzMDtlLnRhdmRhZ2VzaGhlYnJldz02NDMzMDtlLnRhdmhlYnJldz0xNTE0O2UudGJhcj0zNTk7ZS50Ym9wb21vZm89MTI1NTQ7ZS50Y2Fyb249MzU3O2UudGNjdXJsPTY4MDtlLnRjZWRpbGxhPTM1NTtlLnRjaGVoYXJhYmljPTE2NzA7ZS50Y2hlaGZpbmFsYXJhYmljPTY0Mzc5O2UudGNoZWhpbml0aWFsYXJhYmljPTY0MzgwO2UudGNoZWhtZWRpYWxhcmFiaWM9NjQzODE7ZS50Y2lyY2xlPTk0NDM7ZS50Y2lyY3VtZmxleGJlbG93PTc3OTM7ZS50Y29tbWFhY2NlbnQ9MzU1O2UudGRpZXJlc2lzPTc4MzE7ZS50ZG90YWNjZW50PTc3ODc7ZS50ZG90YmVsb3c9Nzc4OTtlLnRlY3lyaWxsaWM9MTA5MDtlLnRlZGVzY2VuZGVyY3lyaWxsaWM9MTE5NztlLnRlaGFyYWJpYz0xNTc4O2UudGVoZmluYWxhcmFiaWM9NjUxNzQ7ZS50ZWhoYWhpbml0aWFsYXJhYmljPTY0Njc0O2UudGVoaGFoaXNvbGF0ZWRhcmFiaWM9NjQ1MjQ7ZS50ZWhpbml0aWFsYXJhYmljPTY1MTc1O2UudGVoaXJhZ2FuYT0xMjM5MDtlLnRlaGplZW1pbml0aWFsYXJhYmljPTY0NjczO2UudGVoamVlbWlzb2xhdGVkYXJhYmljPTY0NTIzO2UudGVobWFyYnV0YWFyYWJpYz0xNTc3O2UudGVobWFyYnV0YWZpbmFsYXJhYmljPTY1MTcyO2UudGVobWVkaWFsYXJhYmljPTY1MTc2O2UudGVobWVlbWluaXRpYWxhcmFiaWM9NjQ2NzY7ZS50ZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjY7ZS50ZWhub29uZmluYWxhcmFiaWM9NjQ2Mjc7ZS50ZWthdGFrYW5hPTEyNDg2O2UudGVrYXRha2FuYWhhbGZ3aWR0aD02NTQxMTtlLnRlbGVwaG9uZT04NDgxO2UudGVsZXBob25lYmxhY2s9OTc0MjtlLnRlbGlzaGFnZWRvbGFoZWJyZXc9MTQ0MDtlLnRlbGlzaGFxZXRhbmFoZWJyZXc9MTQ0OTtlLnRlbmNpcmNsZT05MzIxO2UudGVuaWRlb2dyYXBoaWNwYXJlbj0xMjg0MTtlLnRlbnBhcmVuPTkzNDE7ZS50ZW5wZXJpb2Q9OTM2MTtlLnRlbnJvbWFuPTg1Njk7ZS50ZXNoPTY3OTtlLnRldD0xNDk2O2UudGV0ZGFnZXNoPTY0MzEyO2UudGV0ZGFnZXNoaGVicmV3PTY0MzEyO2UudGV0aGVicmV3PTE0OTY7ZS50ZXRzZWN5cmlsbGljPTEyMDU7ZS50ZXZpcmhlYnJldz0xNDM1O2UudGV2aXJsZWZ0aGVicmV3PTE0MzU7ZS50aGFiZW5nYWxpPTI0Njk7ZS50aGFkZXZhPTIzNDE7ZS50aGFndWphcmF0aT0yNzI1O2UudGhhZ3VybXVraGk9MjU5NztlLnRoYWxhcmFiaWM9MTU4NDtlLnRoYWxmaW5hbGFyYWJpYz02NTE5NjtlLnRoYW50aGFraGF0bG93bGVmdHRoYWk9NjM2NDA7ZS50aGFudGhha2hhdGxvd3JpZ2h0dGhhaT02MzYzOTtlLnRoYW50aGFraGF0dGhhaT0zNjYwO2UudGhhbnRoYWtoYXR1cHBlcmxlZnR0aGFpPTYzNjM4O2UudGhlaGFyYWJpYz0xNTc5O2UudGhlaGZpbmFsYXJhYmljPTY1MTc4O2UudGhlaGluaXRpYWxhcmFiaWM9NjUxNzk7ZS50aGVobWVkaWFsYXJhYmljPTY1MTgwO2UudGhlcmVleGlzdHM9ODcwNztlLnRoZXJlZm9yZT04NzU2O2UudGhldGE9OTUyO2UudGhldGExPTk3NztlLnRoZXRhc3ltYm9sZ3JlZWs9OTc3O2UudGhpZXV0aGFjaXJjbGVrb3JlYW49MTI5MjE7ZS50aGlldXRoYXBhcmVua29yZWFuPTEyODI1O2UudGhpZXV0aGNpcmNsZWtvcmVhbj0xMjkwNztlLnRoaWV1dGhrb3JlYW49MTI2MjA7ZS50aGlldXRocGFyZW5rb3JlYW49MTI4MTE7ZS50aGlydGVlbmNpcmNsZT05MzI0O2UudGhpcnRlZW5wYXJlbj05MzQ0O2UudGhpcnRlZW5wZXJpb2Q9OTM2NDtlLnRob25hbmdtb250aG90aGFpPTM2MDE7ZS50aG9vaz00Mjk7ZS50aG9waHV0aGFvdGhhaT0zNjAyO2UudGhvcm49MjU0O2UudGhvdGhhaGFudGhhaT0zNjA3O2UudGhvdGhhbnRoYWk9MzYwMDtlLnRob3Rob25ndGhhaT0zNjA4O2UudGhvdGh1bmd0aGFpPTM2MDY7ZS50aG91c2FuZGN5cmlsbGljPTExNTQ7ZS50aG91c2FuZHNzZXBhcmF0b3JhcmFiaWM9MTY0NDtlLnRob3VzYW5kc3NlcGFyYXRvcnBlcnNpYW49MTY0NDtlLnRocmVlPTUxO2UudGhyZWVhcmFiaWM9MTYzNTtlLnRocmVlYmVuZ2FsaT0yNTM3O2UudGhyZWVjaXJjbGU9OTMxNDtlLnRocmVlY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNDtlLnRocmVlZGV2YT0yNDA5O2UudGhyZWVlaWdodGhzPTg1NDA7ZS50aHJlZWd1amFyYXRpPTI3OTM7ZS50aHJlZWd1cm11a2hpPTI2NjU7ZS50aHJlZWhhY2thcmFiaWM9MTYzNTtlLnRocmVlaGFuZ3pob3U9MTIzMjM7ZS50aHJlZWlkZW9ncmFwaGljcGFyZW49MTI4MzQ7ZS50aHJlZWluZmVyaW9yPTgzMjM7ZS50aHJlZW1vbm9zcGFjZT02NTI5OTtlLnRocmVlbnVtZXJhdG9yYmVuZ2FsaT0yNTUwO2UudGhyZWVvbGRzdHlsZT02MzI4MztlLnRocmVlcGFyZW49OTMzNDtlLnRocmVlcGVyaW9kPTkzNTQ7ZS50aHJlZXBlcnNpYW49MTc3OTtlLnRocmVlcXVhcnRlcnM9MTkwO2UudGhyZWVxdWFydGVyc2VtZGFzaD02MzE5ODtlLnRocmVlcm9tYW49ODU2MjtlLnRocmVlc3VwZXJpb3I9MTc5O2UudGhyZWV0aGFpPTM2Njc7ZS50aHpzcXVhcmU9MTMyMDQ7ZS50aWhpcmFnYW5hPTEyMzg1O2UudGlrYXRha2FuYT0xMjQ4MTtlLnRpa2F0YWthbmFoYWxmd2lkdGg9NjU0MDk7ZS50aWtldXRhY2lyY2xla29yZWFuPTEyOTEyO2UudGlrZXV0YXBhcmVua29yZWFuPTEyODE2O2UudGlrZXV0Y2lyY2xla29yZWFuPTEyODk4O2UudGlrZXV0a29yZWFuPTEyNTk5O2UudGlrZXV0cGFyZW5rb3JlYW49MTI4MDI7ZS50aWxkZT03MzI7ZS50aWxkZWJlbG93Y21iPTgxNjtlLnRpbGRlY21iPTc3MTtlLnRpbGRlY29tYj03NzE7ZS50aWxkZWRvdWJsZWNtYj04NjQ7ZS50aWxkZW9wZXJhdG9yPTg3NjQ7ZS50aWxkZW92ZXJsYXljbWI9ODIwO2UudGlsZGV2ZXJ0aWNhbGNtYj04MzA7ZS50aW1lc2NpcmNsZT04ODU1O2UudGlwZWhhaGVicmV3PTE0MzA7ZS50aXBlaGFsZWZ0aGVicmV3PTE0MzA7ZS50aXBwaWd1cm11a2hpPTI2NzI7ZS50aXRsb2N5cmlsbGljY21iPTExNTU7ZS50aXduYXJtZW5pYW49MTQwNztlLnRsaW5lYmVsb3c9Nzc5MTtlLnRtb25vc3BhY2U9NjUzNjQ7ZS50b2FybWVuaWFuPTEzODU7ZS50b2hpcmFnYW5hPTEyMzkyO2UudG9rYXRha2FuYT0xMjQ4ODtlLnRva2F0YWthbmFoYWxmd2lkdGg9NjU0MTI7ZS50b25lYmFyZXh0cmFoaWdobW9kPTc0MTtlLnRvbmViYXJleHRyYWxvd21vZD03NDU7ZS50b25lYmFyaGlnaG1vZD03NDI7ZS50b25lYmFybG93bW9kPTc0NDtlLnRvbmViYXJtaWRtb2Q9NzQzO2UudG9uZWZpdmU9NDQ1O2UudG9uZXNpeD0zODk7ZS50b25ldHdvPTQyNDtlLnRvbm9zPTkwMDtlLnRvbnNxdWFyZT0xMzA5NTtlLnRvcGF0YWt0aGFpPTM1OTk7ZS50b3J0b2lzZXNoZWxsYnJhY2tldGxlZnQ9MTIzMDg7ZS50b3J0b2lzZXNoZWxsYnJhY2tldGxlZnRzbWFsbD02NTExNztlLnRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHZlcnRpY2FsPTY1MDgxO2UudG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodD0xMjMwOTtlLnRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHRzbWFsbD02NTExODtlLnRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA4MjtlLnRvdGFvdGhhaT0zNjA1O2UudHBhbGF0YWxob29rPTQyNztlLnRwYXJlbj05MzkxO2UudHJhZGVtYXJrPTg0ODI7ZS50cmFkZW1hcmtzYW5zPTYzNzIyO2UudHJhZGVtYXJrc2VyaWY9NjMxOTU7ZS50cmV0cm9mbGV4aG9vaz02NDg7ZS50cmlhZ2RuPTk2NjA7ZS50cmlhZ2xmPTk2Njg7ZS50cmlhZ3J0PTk2NTg7ZS50cmlhZ3VwPTk2NTA7ZS50cz02Nzg7ZS50c2FkaT0xNTEwO2UudHNhZGlkYWdlc2g9NjQzMjY7ZS50c2FkaWRhZ2VzaGhlYnJldz02NDMyNjtlLnRzYWRpaGVicmV3PTE1MTA7ZS50c2VjeXJpbGxpYz0xMDk0O2UudHNlcmU9MTQ2MTtlLnRzZXJlMTI9MTQ2MTtlLnRzZXJlMWU9MTQ2MTtlLnRzZXJlMmI9MTQ2MTtlLnRzZXJlaGVicmV3PTE0NjE7ZS50c2VyZW5hcnJvd2hlYnJldz0xNDYxO2UudHNlcmVxdWFydGVyaGVicmV3PTE0NjE7ZS50c2VyZXdpZGVoZWJyZXc9MTQ2MTtlLnRzaGVjeXJpbGxpYz0xMTE1O2UudHN1cGVyaW9yPTYzMjE5O2UudHRhYmVuZ2FsaT0yNDYzO2UudHRhZGV2YT0yMzM1O2UudHRhZ3VqYXJhdGk9MjcxOTtlLnR0YWd1cm11a2hpPTI1OTE7ZS50dGVoYXJhYmljPTE2NTc7ZS50dGVoZmluYWxhcmFiaWM9NjQzNTk7ZS50dGVoaW5pdGlhbGFyYWJpYz02NDM2MDtlLnR0ZWhtZWRpYWxhcmFiaWM9NjQzNjE7ZS50dGhhYmVuZ2FsaT0yNDY0O2UudHRoYWRldmE9MjMzNjtlLnR0aGFndWphcmF0aT0yNzIwO2UudHRoYWd1cm11a2hpPTI1OTI7ZS50dHVybmVkPTY0NztlLnR1aGlyYWdhbmE9MTIzODg7ZS50dWthdGFrYW5hPTEyNDg0O2UudHVrYXRha2FuYWhhbGZ3aWR0aD02NTQxMDtlLnR1c21hbGxoaXJhZ2FuYT0xMjM4NztlLnR1c21hbGxrYXRha2FuYT0xMjQ4MztlLnR1c21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM5MTtlLnR3ZWx2ZWNpcmNsZT05MzIzO2UudHdlbHZlcGFyZW49OTM0MztlLnR3ZWx2ZXBlcmlvZD05MzYzO2UudHdlbHZlcm9tYW49ODU3MTtlLnR3ZW50eWNpcmNsZT05MzMxO2UudHdlbnR5aGFuZ3pob3U9MjEzMTY7ZS50d2VudHlwYXJlbj05MzUxO2UudHdlbnR5cGVyaW9kPTkzNzE7ZS50d289NTA7ZS50d29hcmFiaWM9MTYzNDtlLnR3b2JlbmdhbGk9MjUzNjtlLnR3b2NpcmNsZT05MzEzO2UudHdvY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyMztlLnR3b2RldmE9MjQwODtlLnR3b2RvdGVubGVhZGVyPTgyMjk7ZS50d29kb3RsZWFkZXI9ODIyOTtlLnR3b2RvdGxlYWRlcnZlcnRpY2FsPTY1MDcyO2UudHdvZ3VqYXJhdGk9Mjc5MjtlLnR3b2d1cm11a2hpPTI2NjQ7ZS50d29oYWNrYXJhYmljPTE2MzQ7ZS50d29oYW5nemhvdT0xMjMyMjtlLnR3b2lkZW9ncmFwaGljcGFyZW49MTI4MzM7ZS50d29pbmZlcmlvcj04MzIyO2UudHdvbW9ub3NwYWNlPTY1Mjk4O2UudHdvbnVtZXJhdG9yYmVuZ2FsaT0yNTQ5O2UudHdvb2xkc3R5bGU9NjMyODI7ZS50d29wYXJlbj05MzMzO2UudHdvcGVyaW9kPTkzNTM7ZS50d29wZXJzaWFuPTE3Nzg7ZS50d29yb21hbj04NTYxO2UudHdvc3Ryb2tlPTQ0MztlLnR3b3N1cGVyaW9yPTE3ODtlLnR3b3RoYWk9MzY2NjtlLnR3b3RoaXJkcz04NTMyO2UudT0xMTc7ZS51YWN1dGU9MjUwO2UudWJhcj02NDk7ZS51YmVuZ2FsaT0yNDQxO2UudWJvcG9tb2ZvPTEyNTg0O2UudWJyZXZlPTM2NTtlLnVjYXJvbj00Njg7ZS51Y2lyY2xlPTk0NDQ7ZS51Y2lyY3VtZmxleD0yNTE7ZS51Y2lyY3VtZmxleGJlbG93PTc3OTk7ZS51Y3lyaWxsaWM9MTA5MTtlLnVkYXR0YWRldmE9MjM4NTtlLnVkYmxhY3V0ZT0zNjk7ZS51ZGJsZ3JhdmU9NTMzO2UudWRldmE9MjMxMztlLnVkaWVyZXNpcz0yNTI7ZS51ZGllcmVzaXNhY3V0ZT00NzI7ZS51ZGllcmVzaXNiZWxvdz03Nzk1O2UudWRpZXJlc2lzY2Fyb249NDc0O2UudWRpZXJlc2lzY3lyaWxsaWM9MTI2NTtlLnVkaWVyZXNpc2dyYXZlPTQ3NjtlLnVkaWVyZXNpc21hY3Jvbj00NzA7ZS51ZG90YmVsb3c9NzkwOTtlLnVncmF2ZT0yNDk7ZS51Z3VqYXJhdGk9MjY5NztlLnVndXJtdWtoaT0yNTY5O2UudWhpcmFnYW5hPTEyMzU4O2UudWhvb2thYm92ZT03OTExO2UudWhvcm49NDMyO2UudWhvcm5hY3V0ZT03OTEzO2UudWhvcm5kb3RiZWxvdz03OTIxO2UudWhvcm5ncmF2ZT03OTE1O2UudWhvcm5ob29rYWJvdmU9NzkxNztlLnVob3JudGlsZGU9NzkxOTtlLnVodW5nYXJ1bWxhdXQ9MzY5O2UudWh1bmdhcnVtbGF1dGN5cmlsbGljPTEyNjc7ZS51aW52ZXJ0ZWRicmV2ZT01MzU7ZS51a2F0YWthbmE9MTI0NTQ7ZS51a2F0YWthbmFoYWxmd2lkdGg9NjUzOTU7ZS51a2N5cmlsbGljPTExNDU7ZS51a29yZWFuPTEyNjM2O2UudW1hY3Jvbj0zNjM7ZS51bWFjcm9uY3lyaWxsaWM9MTI2MztlLnVtYWNyb25kaWVyZXNpcz03ODAzO2UudW1hdHJhZ3VybXVraGk9MjYyNTtlLnVtb25vc3BhY2U9NjUzNjU7ZS51bmRlcnNjb3JlPTk1O2UudW5kZXJzY29yZWRibD04MjE1O2UudW5kZXJzY29yZW1vbm9zcGFjZT02NTM0MztlLnVuZGVyc2NvcmV2ZXJ0aWNhbD02NTA3NTtlLnVuZGVyc2NvcmV3YXZ5PTY1MTAzO2UudW5pb249ODc0NjtlLnVuaXZlcnNhbD04NzA0O2UudW9nb25laz0zNzE7ZS51cGFyZW49OTM5MjtlLnVwYmxvY2s9OTYwMDtlLnVwcGVyZG90aGVicmV3PTE0NzY7ZS51cHNpbG9uPTk2NTtlLnVwc2lsb25kaWVyZXNpcz05NzE7ZS51cHNpbG9uZGllcmVzaXN0b25vcz05NDQ7ZS51cHNpbG9ubGF0aW49NjUwO2UudXBzaWxvbnRvbm9zPTk3MztlLnVwdGFja2JlbG93Y21iPTc5NztlLnVwdGFja21vZD03MjQ7ZS51cmFndXJtdWtoaT0yNjc1O2UudXJpbmc9MzY3O2UudXNob3J0Y3lyaWxsaWM9MTExODtlLnVzbWFsbGhpcmFnYW5hPTEyMzU3O2UudXNtYWxsa2F0YWthbmE9MTI0NTM7ZS51c21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4NTtlLnVzdHJhaWdodGN5cmlsbGljPTExOTk7ZS51c3RyYWlnaHRzdHJva2VjeXJpbGxpYz0xMjAxO2UudXRpbGRlPTM2MTtlLnV0aWxkZWFjdXRlPTc4MDE7ZS51dGlsZGViZWxvdz03Nzk3O2UudXViZW5nYWxpPTI0NDI7ZS51dWRldmE9MjMxNDtlLnV1Z3VqYXJhdGk9MjY5ODtlLnV1Z3VybXVraGk9MjU3MDtlLnV1bWF0cmFndXJtdWtoaT0yNjI2O2UudXV2b3dlbHNpZ25iZW5nYWxpPTI0OTg7ZS51dXZvd2Vsc2lnbmRldmE9MjM3MDtlLnV1dm93ZWxzaWduZ3VqYXJhdGk9Mjc1NDtlLnV2b3dlbHNpZ25iZW5nYWxpPTI0OTc7ZS51dm93ZWxzaWduZGV2YT0yMzY5O2UudXZvd2Vsc2lnbmd1amFyYXRpPTI3NTM7ZS52PTExODtlLnZhZGV2YT0yMzU3O2UudmFndWphcmF0aT0yNzQxO2UudmFndXJtdWtoaT0yNjEzO2UudmFrYXRha2FuYT0xMjUzNTtlLnZhdj0xNDkzO2UudmF2ZGFnZXNoPTY0MzA5O2UudmF2ZGFnZXNoNjU9NjQzMDk7ZS52YXZkYWdlc2hoZWJyZXc9NjQzMDk7ZS52YXZoZWJyZXc9MTQ5MztlLnZhdmhvbGFtPTY0MzMxO2UudmF2aG9sYW1oZWJyZXc9NjQzMzE7ZS52YXZ2YXZoZWJyZXc9MTUyMDtlLnZhdnlvZGhlYnJldz0xNTIxO2UudmNpcmNsZT05NDQ1O2UudmRvdGJlbG93PTc4MDc7ZS52ZWN5cmlsbGljPTEwNzQ7ZS52ZWhhcmFiaWM9MTcwMDtlLnZlaGZpbmFsYXJhYmljPTY0MzYzO2UudmVoaW5pdGlhbGFyYWJpYz02NDM2NDtlLnZlaG1lZGlhbGFyYWJpYz02NDM2NTtlLnZla2F0YWthbmE9MTI1Mzc7ZS52ZW51cz05NzkyO2UudmVydGljYWxiYXI9MTI0O2UudmVydGljYWxsaW5lYWJvdmVjbWI9NzgxO2UudmVydGljYWxsaW5lYmVsb3djbWI9ODA5O2UudmVydGljYWxsaW5lbG93bW9kPTcxNjtlLnZlcnRpY2FsbGluZW1vZD03MTI7ZS52ZXdhcm1lbmlhbj0xNDA2O2Uudmhvb2s9NjUxO2UudmlrYXRha2FuYT0xMjUzNjtlLnZpcmFtYWJlbmdhbGk9MjUwOTtlLnZpcmFtYWRldmE9MjM4MTtlLnZpcmFtYWd1amFyYXRpPTI3NjU7ZS52aXNhcmdhYmVuZ2FsaT0yNDM1O2UudmlzYXJnYWRldmE9MjMwNztlLnZpc2FyZ2FndWphcmF0aT0yNjkxO2Uudm1vbm9zcGFjZT02NTM2NjtlLnZvYXJtZW5pYW49MTQwMDtlLnZvaWNlZGl0ZXJhdGlvbmhpcmFnYW5hPTEyNDQ2O2Uudm9pY2VkaXRlcmF0aW9ua2F0YWthbmE9MTI1NDI7ZS52b2ljZWRtYXJra2FuYT0xMjQ0MztlLnZvaWNlZG1hcmtrYW5haGFsZndpZHRoPTY1NDM4O2Uudm9rYXRha2FuYT0xMjUzODtlLnZwYXJlbj05MzkzO2UudnRpbGRlPTc4MDU7ZS52dHVybmVkPTY1MjtlLnZ1aGlyYWdhbmE9MTI0MzY7ZS52dWthdGFrYW5hPTEyNTMyO2Uudz0xMTk7ZS53YWN1dGU9NzgxMTtlLndhZWtvcmVhbj0xMjYzMztlLndhaGlyYWdhbmE9MTI0MzE7ZS53YWthdGFrYW5hPTEyNTI3O2Uud2FrYXRha2FuYWhhbGZ3aWR0aD02NTQzNjtlLndha29yZWFuPTEyNjMyO2Uud2FzbWFsbGhpcmFnYW5hPTEyNDMwO2Uud2FzbWFsbGthdGFrYW5hPTEyNTI2O2Uud2F0dG9zcXVhcmU9MTMxNDM7ZS53YXZlZGFzaD0xMjMxNjtlLndhdnl1bmRlcnNjb3JldmVydGljYWw9NjUwNzY7ZS53YXdhcmFiaWM9MTYwODtlLndhd2ZpbmFsYXJhYmljPTY1MjYyO2Uud2F3aGFtemFhYm92ZWFyYWJpYz0xNTcyO2Uud2F3aGFtemFhYm92ZWZpbmFsYXJhYmljPTY1MTU4O2Uud2JzcXVhcmU9MTMyNzc7ZS53Y2lyY2xlPTk0NDY7ZS53Y2lyY3VtZmxleD0zNzM7ZS53ZGllcmVzaXM9NzgxMztlLndkb3RhY2NlbnQ9NzgxNTtlLndkb3RiZWxvdz03ODE3O2Uud2VoaXJhZ2FuYT0xMjQzMztlLndlaWVyc3RyYXNzPTg0NzI7ZS53ZWthdGFrYW5hPTEyNTI5O2Uud2Vrb3JlYW49MTI2Mzg7ZS53ZW9rb3JlYW49MTI2Mzc7ZS53Z3JhdmU9NzgwOTtlLndoaXRlYnVsbGV0PTk3MDI7ZS53aGl0ZWNpcmNsZT05Njc1O2Uud2hpdGVjaXJjbGVpbnZlcnNlPTk2ODk7ZS53aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0PTEyMzAyO2Uud2hpdGVjb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDkxO2Uud2hpdGVjb3JuZXJicmFja2V0cmlnaHQ9MTIzMDM7ZS53aGl0ZWNvcm5lcmJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDkyO2Uud2hpdGVkaWFtb25kPTk2NzE7ZS53aGl0ZWRpYW1vbmRjb250YWluaW5nYmxhY2tzbWFsbGRpYW1vbmQ9OTY3MjtlLndoaXRlZG93bnBvaW50aW5nc21hbGx0cmlhbmdsZT05NjYzO2Uud2hpdGVkb3ducG9pbnRpbmd0cmlhbmdsZT05NjYxO2Uud2hpdGVsZWZ0cG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2Njc7ZS53aGl0ZWxlZnRwb2ludGluZ3RyaWFuZ2xlPTk2NjU7ZS53aGl0ZWxlbnRpY3VsYXJicmFja2V0bGVmdD0xMjMxMDtlLndoaXRlbGVudGljdWxhcmJyYWNrZXRyaWdodD0xMjMxMTtlLndoaXRlcmlnaHRwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY1NztlLndoaXRlcmlnaHRwb2ludGluZ3RyaWFuZ2xlPTk2NTU7ZS53aGl0ZXNtYWxsc3F1YXJlPTk2NDM7ZS53aGl0ZXNtaWxpbmdmYWNlPTk3ODY7ZS53aGl0ZXNxdWFyZT05NjMzO2Uud2hpdGVzdGFyPTk3MzQ7ZS53aGl0ZXRlbGVwaG9uZT05NzQzO2Uud2hpdGV0b3J0b2lzZXNoZWxsYnJhY2tldGxlZnQ9MTIzMTI7ZS53aGl0ZXRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHQ9MTIzMTM7ZS53aGl0ZXVwcG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NTM7ZS53aGl0ZXVwcG9pbnRpbmd0cmlhbmdsZT05NjUxO2Uud2loaXJhZ2FuYT0xMjQzMjtlLndpa2F0YWthbmE9MTI1Mjg7ZS53aWtvcmVhbj0xMjYzOTtlLndtb25vc3BhY2U9NjUzNjc7ZS53b2hpcmFnYW5hPTEyNDM0O2Uud29rYXRha2FuYT0xMjUzMDtlLndva2F0YWthbmFoYWxmd2lkdGg9NjUzODI7ZS53b249ODM2MTtlLndvbm1vbm9zcGFjZT02NTUxMDtlLndvd2FlbnRoYWk9MzYyMztlLndwYXJlbj05Mzk0O2Uud3Jpbmc9NzgzMjtlLndzdXBlcmlvcj02OTU7ZS53dHVybmVkPTY1MztlLnd5bm49NDQ3O2UueD0xMjA7ZS54YWJvdmVjbWI9ODI5O2UueGJvcG9tb2ZvPTEyNTYyO2UueGNpcmNsZT05NDQ3O2UueGRpZXJlc2lzPTc4MjE7ZS54ZG90YWNjZW50PTc4MTk7ZS54ZWhhcm1lbmlhbj0xMzg5O2UueGk9OTU4O2UueG1vbm9zcGFjZT02NTM2ODtlLnhwYXJlbj05Mzk1O2UueHN1cGVyaW9yPTczOTtlLnk9MTIxO2UueWFhZG9zcXVhcmU9MTMxMzQ7ZS55YWJlbmdhbGk9MjQ3OTtlLnlhY3V0ZT0yNTM7ZS55YWRldmE9MjM1MTtlLnlhZWtvcmVhbj0xMjYyNjtlLnlhZ3VqYXJhdGk9MjczNTtlLnlhZ3VybXVraGk9MjYwNztlLnlhaGlyYWdhbmE9MTI0MjA7ZS55YWthdGFrYW5hPTEyNTE2O2UueWFrYXRha2FuYWhhbGZ3aWR0aD02NTQyODtlLnlha29yZWFuPTEyNjI1O2UueWFtYWtrYW50aGFpPTM2NjI7ZS55YXNtYWxsaGlyYWdhbmE9MTI0MTk7ZS55YXNtYWxsa2F0YWthbmE9MTI1MTU7ZS55YXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODg7ZS55YXRjeXJpbGxpYz0xMTIzO2UueWNpcmNsZT05NDQ4O2UueWNpcmN1bWZsZXg9Mzc1O2UueWRpZXJlc2lzPTI1NTtlLnlkb3RhY2NlbnQ9NzgyMztlLnlkb3RiZWxvdz03OTI1O2UueWVoYXJhYmljPTE2MTA7ZS55ZWhiYXJyZWVhcmFiaWM9MTc0NjtlLnllaGJhcnJlZWZpbmFsYXJhYmljPTY0NDMxO2UueWVoZmluYWxhcmFiaWM9NjUyNjY7ZS55ZWhoYW16YWFib3ZlYXJhYmljPTE1NzQ7ZS55ZWhoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNjI7ZS55ZWhoYW16YWFib3ZlaW5pdGlhbGFyYWJpYz02NTE2MztlLnllaGhhbXphYWJvdmVtZWRpYWxhcmFiaWM9NjUxNjQ7ZS55ZWhpbml0aWFsYXJhYmljPTY1MjY3O2UueWVobWVkaWFsYXJhYmljPTY1MjY4O2UueWVobWVlbWluaXRpYWxhcmFiaWM9NjQ3MzM7ZS55ZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ2MDA7ZS55ZWhub29uZmluYWxhcmFiaWM9NjQ2NjA7ZS55ZWh0aHJlZWRvdHNiZWxvd2FyYWJpYz0xNzQ1O2UueWVrb3JlYW49MTI2MzA7ZS55ZW49MTY1O2UueWVubW9ub3NwYWNlPTY1NTA5O2UueWVva29yZWFuPTEyNjI5O2UueWVvcmluaGlldWhrb3JlYW49MTI2Nzg7ZS55ZXJhaGJlbnlvbW9oZWJyZXc9MTQ1MDtlLnllcmFoYmVueW9tb2xlZnRoZWJyZXc9MTQ1MDtlLnllcmljeXJpbGxpYz0xMDk5O2UueWVydWRpZXJlc2lzY3lyaWxsaWM9MTI3MztlLnllc2lldW5na29yZWFuPTEyNjczO2UueWVzaWV1bmdwYW5zaW9za29yZWFuPTEyNjc1O2UueWVzaWV1bmdzaW9za29yZWFuPTEyNjc0O2UueWV0aXZoZWJyZXc9MTQzNDtlLnlncmF2ZT03OTIzO2UueWhvb2s9NDM2O2UueWhvb2thYm92ZT03OTI3O2UueWlhcm1lbmlhbj0xMzk3O2UueWljeXJpbGxpYz0xMTExO2UueWlrb3JlYW49MTI2NDI7ZS55aW55YW5nPTk3NzU7ZS55aXduYXJtZW5pYW49MTQxMDtlLnltb25vc3BhY2U9NjUzNjk7ZS55b2Q9MTQ5NztlLnlvZGRhZ2VzaD02NDMxMztlLnlvZGRhZ2VzaGhlYnJldz02NDMxMztlLnlvZGhlYnJldz0xNDk3O2UueW9keW9kaGVicmV3PTE1MjI7ZS55b2R5b2RwYXRhaGhlYnJldz02NDI4NztlLnlvaGlyYWdhbmE9MTI0MjQ7ZS55b2lrb3JlYW49MTI2ODE7ZS55b2thdGFrYW5hPTEyNTIwO2UueW9rYXRha2FuYWhhbGZ3aWR0aD02NTQzMDtlLnlva29yZWFuPTEyNjM1O2UueW9zbWFsbGhpcmFnYW5hPTEyNDIzO2UueW9zbWFsbGthdGFrYW5hPTEyNTE5O2UueW9zbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzkwO2UueW90Z3JlZWs9MTAxMTtlLnlveWFla29yZWFuPTEyNjgwO2UueW95YWtvcmVhbj0xMjY3OTtlLnlveWFrdGhhaT0zNjE4O2UueW95aW5ndGhhaT0zNTk3O2UueXBhcmVuPTkzOTY7ZS55cG9nZWdyYW1tZW5pPTg5MDtlLnlwb2dlZ3JhbW1lbmlncmVla2NtYj04Mzc7ZS55cj00MjI7ZS55cmluZz03ODMzO2UueXN1cGVyaW9yPTY5NjtlLnl0aWxkZT03OTI5O2UueXR1cm5lZD02NTQ7ZS55dWhpcmFnYW5hPTEyNDIyO2UueXVpa29yZWFuPTEyNjg0O2UueXVrYXRha2FuYT0xMjUxODtlLnl1a2F0YWthbmFoYWxmd2lkdGg9NjU0Mjk7ZS55dWtvcmVhbj0xMjY0MDtlLnl1c2JpZ2N5cmlsbGljPTExMzE7ZS55dXNiaWdpb3RpZmllZGN5cmlsbGljPTExMzM7ZS55dXNsaXR0bGVjeXJpbGxpYz0xMTI3O2UueXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYz0xMTI5O2UueXVzbWFsbGhpcmFnYW5hPTEyNDIxO2UueXVzbWFsbGthdGFrYW5hPTEyNTE3O2UueXVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg5O2UueXV5ZWtvcmVhbj0xMjY4MztlLnl1eWVva29yZWFuPTEyNjgyO2UueXlhYmVuZ2FsaT0yNTI3O2UueXlhZGV2YT0yMzk5O2Uuej0xMjI7ZS56YWFybWVuaWFuPTEzODI7ZS56YWN1dGU9Mzc4O2UuemFkZXZhPTIzOTU7ZS56YWd1cm11a2hpPTI2NTE7ZS56YWhhcmFiaWM9MTU5MjtlLnphaGZpbmFsYXJhYmljPTY1MjIyO2UuemFoaW5pdGlhbGFyYWJpYz02NTIyMztlLnphaGlyYWdhbmE9MTIzNzQ7ZS56YWhtZWRpYWxhcmFiaWM9NjUyMjQ7ZS56YWluYXJhYmljPTE1ODY7ZS56YWluZmluYWxhcmFiaWM9NjUyMDA7ZS56YWthdGFrYW5hPTEyNDcwO2UuemFxZWZnYWRvbGhlYnJldz0xNDI5O2UuemFxZWZxYXRhbmhlYnJldz0xNDI4O2UuemFycWFoZWJyZXc9MTQzMjtlLnpheWluPTE0OTQ7ZS56YXlpbmRhZ2VzaD02NDMxMDtlLnpheWluZGFnZXNoaGVicmV3PTY0MzEwO2UuemF5aW5oZWJyZXc9MTQ5NDtlLnpib3BvbW9mbz0xMjU2NztlLnpjYXJvbj0zODI7ZS56Y2lyY2xlPTk0NDk7ZS56Y2lyY3VtZmxleD03ODI1O2UuemN1cmw9NjU3O2UuemRvdD0zODA7ZS56ZG90YWNjZW50PTM4MDtlLnpkb3RiZWxvdz03ODI3O2UuemVjeXJpbGxpYz0xMDc5O2UuemVkZXNjZW5kZXJjeXJpbGxpYz0xMTc3O2UuemVkaWVyZXNpc2N5cmlsbGljPTEyNDc7ZS56ZWhpcmFnYW5hPTEyMzgwO2UuemVrYXRha2FuYT0xMjQ3NjtlLnplcm89NDg7ZS56ZXJvYXJhYmljPTE2MzI7ZS56ZXJvYmVuZ2FsaT0yNTM0O2UuemVyb2RldmE9MjQwNjtlLnplcm9ndWphcmF0aT0yNzkwO2UuemVyb2d1cm11a2hpPTI2NjI7ZS56ZXJvaGFja2FyYWJpYz0xNjMyO2UuemVyb2luZmVyaW9yPTgzMjA7ZS56ZXJvbW9ub3NwYWNlPTY1Mjk2O2UuemVyb29sZHN0eWxlPTYzMjgwO2UuemVyb3BlcnNpYW49MTc3NjtlLnplcm9zdXBlcmlvcj04MzA0O2UuemVyb3RoYWk9MzY2NDtlLnplcm93aWR0aGpvaW5lcj02NTI3OTtlLnplcm93aWR0aG5vbmpvaW5lcj04MjA0O2UuemVyb3dpZHRoc3BhY2U9ODIwMztlLnpldGE9OTUwO2Uuemhib3BvbW9mbz0xMjU2MztlLnpoZWFybWVuaWFuPTEzODY7ZS56aGVicmV2ZWN5cmlsbGljPTEyMTg7ZS56aGVjeXJpbGxpYz0xMDc4O2UuemhlZGVzY2VuZGVyY3lyaWxsaWM9MTE3NTtlLnpoZWRpZXJlc2lzY3lyaWxsaWM9MTI0NTtlLnppaGlyYWdhbmE9MTIzNzY7ZS56aWthdGFrYW5hPTEyNDcyO2Uuemlub3JoZWJyZXc9MTQ1NDtlLnpsaW5lYmVsb3c9NzgyOTtlLnptb25vc3BhY2U9NjUzNzA7ZS56b2hpcmFnYW5hPTEyMzgyO2Uuem9rYXRha2FuYT0xMjQ3ODtlLnpwYXJlbj05Mzk3O2UuenJldHJvZmxleGhvb2s9NjU2O2UuenN0cm9rZT00Mzg7ZS56dWhpcmFnYW5hPTEyMzc4O2UuenVrYXRha2FuYT0xMjQ3NDtlWyIubm90ZGVmIl09MDtlLmFuZ2JyYWNrZXRsZWZ0YmlnPTkwMDE7ZS5hbmdicmFja2V0bGVmdEJpZz05MDAxO2UuYW5nYnJhY2tldGxlZnRiaWdnPTkwMDE7ZS5hbmdicmFja2V0bGVmdEJpZ2c9OTAwMTtlLmFuZ2JyYWNrZXRyaWdodEJpZz05MDAyO2UuYW5nYnJhY2tldHJpZ2h0YmlnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRCaWdnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRiaWdnPTkwMDI7ZS5hcnJvd2hvb2tsZWZ0PTg2MTg7ZS5hcnJvd2hvb2tyaWdodD04NjE3O2UuYXJyb3dsZWZ0dG9waGFsZj04NjM2O2UuYXJyb3dsZWZ0Ym90aGFsZj04NjM3O2UuYXJyb3dub3J0aGVhc3Q9ODU5OTtlLmFycm93bm9ydGh3ZXN0PTg1OTg7ZS5hcnJvd3JpZ2h0dG9waGFsZj04NjQwO2UuYXJyb3dyaWdodGJvdGhhbGY9ODY0MTtlLmFycm93c291dGhlYXN0PTg2MDA7ZS5hcnJvd3NvdXRod2VzdD04NjAxO2UuYmFja3NsYXNoYmlnPTg3MjY7ZS5iYWNrc2xhc2hCaWc9ODcyNjtlLmJhY2tzbGFzaEJpZ2c9ODcyNjtlLmJhY2tzbGFzaGJpZ2c9ODcyNjtlLmJhcmRibD04MjE0O2UuYnJhY2VodGlwZG93bmxlZnQ9NjUwNzk7ZS5icmFjZWh0aXBkb3ducmlnaHQ9NjUwNzk7ZS5icmFjZWh0aXB1cGxlZnQ9NjUwODA7ZS5icmFjZWh0aXB1cHJpZ2h0PTY1MDgwO2UuYnJhY2VsZWZ0QmlnPTEyMztlLmJyYWNlbGVmdGJpZz0xMjM7ZS5icmFjZWxlZnRiaWdnPTEyMztlLmJyYWNlbGVmdEJpZ2c9MTIzO2UuYnJhY2VyaWdodEJpZz0xMjU7ZS5icmFjZXJpZ2h0YmlnPTEyNTtlLmJyYWNlcmlnaHRiaWdnPTEyNTtlLmJyYWNlcmlnaHRCaWdnPTEyNTtlLmJyYWNrZXRsZWZ0YmlnPTkxO2UuYnJhY2tldGxlZnRCaWc9OTE7ZS5icmFja2V0bGVmdGJpZ2c9OTE7ZS5icmFja2V0bGVmdEJpZ2c9OTE7ZS5icmFja2V0cmlnaHRCaWc9OTM7ZS5icmFja2V0cmlnaHRiaWc9OTM7ZS5icmFja2V0cmlnaHRiaWdnPTkzO2UuYnJhY2tldHJpZ2h0QmlnZz05MztlLmNlaWxpbmdsZWZ0YmlnPTg5Njg7ZS5jZWlsaW5nbGVmdEJpZz04OTY4O2UuY2VpbGluZ2xlZnRCaWdnPTg5Njg7ZS5jZWlsaW5nbGVmdGJpZ2c9ODk2ODtlLmNlaWxpbmdyaWdodGJpZz04OTY5O2UuY2VpbGluZ3JpZ2h0QmlnPTg5Njk7ZS5jZWlsaW5ncmlnaHRiaWdnPTg5Njk7ZS5jZWlsaW5ncmlnaHRCaWdnPTg5Njk7ZS5jaXJjbGVkb3RkaXNwbGF5PTg4NTc7ZS5jaXJjbGVkb3R0ZXh0PTg4NTc7ZS5jaXJjbGVtdWx0aXBseWRpc3BsYXk9ODg1NTtlLmNpcmNsZW11bHRpcGx5dGV4dD04ODU1O2UuY2lyY2xlcGx1c2Rpc3BsYXk9ODg1MztlLmNpcmNsZXBsdXN0ZXh0PTg4NTM7ZS5jb250aW50ZWdyYWxkaXNwbGF5PTg3NTA7ZS5jb250aW50ZWdyYWx0ZXh0PTg3NTA7ZS5jb3Byb2R1Y3RkaXNwbGF5PTg3MjA7ZS5jb3Byb2R1Y3R0ZXh0PTg3MjA7ZS5mbG9vcmxlZnRCaWc9ODk3MDtlLmZsb29ybGVmdGJpZz04OTcwO2UuZmxvb3JsZWZ0YmlnZz04OTcwO2UuZmxvb3JsZWZ0QmlnZz04OTcwO2UuZmxvb3JyaWdodGJpZz04OTcxO2UuZmxvb3JyaWdodEJpZz04OTcxO2UuZmxvb3JyaWdodEJpZ2c9ODk3MTtlLmZsb29ycmlnaHRiaWdnPTg5NzE7ZS5oYXR3aWRlPTc3MDtlLmhhdHdpZGVyPTc3MDtlLmhhdHdpZGVzdD03NzA7ZS5pbnRlcmNhbD03NDg4O2UuaW50ZWdyYWxkaXNwbGF5PTg3NDc7ZS5pbnRlZ3JhbHRleHQ9ODc0NztlLmludGVyc2VjdGlvbmRpc3BsYXk9ODg5ODtlLmludGVyc2VjdGlvbnRleHQ9ODg5ODtlLmxvZ2ljYWxhbmRkaXNwbGF5PTg3NDM7ZS5sb2dpY2FsYW5kdGV4dD04NzQzO2UubG9naWNhbG9yZGlzcGxheT04NzQ0O2UubG9naWNhbG9ydGV4dD04NzQ0O2UucGFyZW5sZWZ0QmlnPTQwO2UucGFyZW5sZWZ0YmlnPTQwO2UucGFyZW5sZWZ0QmlnZz00MDtlLnBhcmVubGVmdGJpZ2c9NDA7ZS5wYXJlbnJpZ2h0QmlnPTQxO2UucGFyZW5yaWdodGJpZz00MTtlLnBhcmVucmlnaHRCaWdnPTQxO2UucGFyZW5yaWdodGJpZ2c9NDE7ZS5wcmltZT04MjQyO2UucHJvZHVjdGRpc3BsYXk9ODcxOTtlLnByb2R1Y3R0ZXh0PTg3MTk7ZS5yYWRpY2FsYmlnPTg3MzA7ZS5yYWRpY2FsQmlnPTg3MzA7ZS5yYWRpY2FsQmlnZz04NzMwO2UucmFkaWNhbGJpZ2c9ODczMDtlLnJhZGljYWxidD04NzMwO2UucmFkaWNhbHRwPTg3MzA7ZS5yYWRpY2FsdmVydGV4PTg3MzA7ZS5zbGFzaGJpZz00NztlLnNsYXNoQmlnPTQ3O2Uuc2xhc2hCaWdnPTQ3O2Uuc2xhc2hiaWdnPTQ3O2Uuc3VtbWF0aW9uZGlzcGxheT04NzIxO2Uuc3VtbWF0aW9udGV4dD04NzIxO2UudGlsZGV3aWRlPTczMjtlLnRpbGRld2lkZXI9NzMyO2UudGlsZGV3aWRlc3Q9NzMyO2UudW5pb25kaXNwbGF5PTg4OTk7ZS51bmlvbm11bHRpZGlzcGxheT04ODQ2O2UudW5pb25tdWx0aXRleHQ9ODg0NjtlLnVuaW9uc3FkaXNwbGF5PTg4NTI7ZS51bmlvbnNxdGV4dD04ODUyO2UudW5pb250ZXh0PTg4OTk7ZS52ZXh0ZW5kZG91YmxlPTg3NDE7ZS52ZXh0ZW5kc2luZ2xlPTg3Mzl9KSx3bj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0zMjtlLmExPTk5ODU7ZS5hMj05OTg2O2UuYTIwMj05OTg3O2UuYTM9OTk4ODtlLmE0PTk3NDI7ZS5hNT05OTkwO2UuYTExOT05OTkxO2UuYTExOD05OTkyO2UuYTExNz05OTkzO2UuYTExPTk3NTU7ZS5hMTI9OTc1ODtlLmExMz05OTk2O2UuYTE0PTk5OTc7ZS5hMTU9OTk5ODtlLmExNj05OTk5O2UuYTEwNT0xZTQ7ZS5hMTc9MTAwMDE7ZS5hMTg9MTAwMDI7ZS5hMTk9MTAwMDM7ZS5hMjA9MTAwMDQ7ZS5hMjE9MTAwMDU7ZS5hMjI9MTAwMDY7ZS5hMjM9MTAwMDc7ZS5hMjQ9MTAwMDg7ZS5hMjU9MTAwMDk7ZS5hMjY9MTAwMTA7ZS5hMjc9MTAwMTE7ZS5hMjg9MTAwMTI7ZS5hNj0xMDAxMztlLmE3PTEwMDE0O2UuYTg9MTAwMTU7ZS5hOT0xMDAxNjtlLmExMD0xMDAxNztlLmEyOT0xMDAxODtlLmEzMD0xMDAxOTtlLmEzMT0xMDAyMDtlLmEzMj0xMDAyMTtlLmEzMz0xMDAyMjtlLmEzND0xMDAyMztlLmEzNT05NzMzO2UuYTM2PTEwMDI1O2UuYTM3PTEwMDI2O2UuYTM4PTEwMDI3O2UuYTM5PTEwMDI4O2UuYTQwPTEwMDI5O2UuYTQxPTEwMDMwO2UuYTQyPTEwMDMxO2UuYTQzPTEwMDMyO2UuYTQ0PTEwMDMzO2UuYTQ1PTEwMDM0O2UuYTQ2PTEwMDM1O2UuYTQ3PTEwMDM2O2UuYTQ4PTEwMDM3O2UuYTQ5PTEwMDM4O2UuYTUwPTEwMDM5O2UuYTUxPTEwMDQwO2UuYTUyPTEwMDQxO2UuYTUzPTEwMDQyO2UuYTU0PTEwMDQzO2UuYTU1PTEwMDQ0O2UuYTU2PTEwMDQ1O2UuYTU3PTEwMDQ2O2UuYTU4PTEwMDQ3O2UuYTU5PTEwMDQ4O2UuYTYwPTEwMDQ5O2UuYTYxPTEwMDUwO2UuYTYyPTEwMDUxO2UuYTYzPTEwMDUyO2UuYTY0PTEwMDUzO2UuYTY1PTEwMDU0O2UuYTY2PTEwMDU1O2UuYTY3PTEwMDU2O2UuYTY4PTEwMDU3O2UuYTY5PTEwMDU4O2UuYTcwPTEwMDU5O2UuYTcxPTk2Nzk7ZS5hNzI9MTAwNjE7ZS5hNzM9OTYzMjtlLmE3ND0xMDA2MztlLmEyMDM9MTAwNjQ7ZS5hNzU9MTAwNjU7ZS5hMjA0PTEwMDY2O2UuYTc2PTk2NTA7ZS5hNzc9OTY2MDtlLmE3OD05NjcwO2UuYTc5PTEwMDcwO2UuYTgxPTk2ODc7ZS5hODI9MTAwNzI7ZS5hODM9MTAwNzM7ZS5hODQ9MTAwNzQ7ZS5hOTc9MTAwNzU7ZS5hOTg9MTAwNzY7ZS5hOTk9MTAwNzc7ZS5hMTAwPTEwMDc4O2UuYTEwMT0xMDA4MTtlLmExMDI9MTAwODI7ZS5hMTAzPTEwMDgzO2UuYTEwND0xMDA4NDtlLmExMDY9MTAwODU7ZS5hMTA3PTEwMDg2O2UuYTEwOD0xMDA4NztlLmExMTI9OTgyNztlLmExMTE9OTgzMDtlLmExMTA9OTgyOTtlLmExMDk9OTgyNDtlLmExMjA9OTMxMjtlLmExMjE9OTMxMztlLmExMjI9OTMxNDtlLmExMjM9OTMxNTtlLmExMjQ9OTMxNjtlLmExMjU9OTMxNztlLmExMjY9OTMxODtlLmExMjc9OTMxOTtlLmExMjg9OTMyMDtlLmExMjk9OTMyMTtlLmExMzA9MTAxMDI7ZS5hMTMxPTEwMTAzO2UuYTEzMj0xMDEwNDtlLmExMzM9MTAxMDU7ZS5hMTM0PTEwMTA2O2UuYTEzNT0xMDEwNztlLmExMzY9MTAxMDg7ZS5hMTM3PTEwMTA5O2UuYTEzOD0xMDExMDtlLmExMzk9MTAxMTE7ZS5hMTQwPTEwMTEyO2UuYTE0MT0xMDExMztlLmExNDI9MTAxMTQ7ZS5hMTQzPTEwMTE1O2UuYTE0ND0xMDExNjtlLmExNDU9MTAxMTc7ZS5hMTQ2PTEwMTE4O2UuYTE0Nz0xMDExOTtlLmExNDg9MTAxMjA7ZS5hMTQ5PTEwMTIxO2UuYTE1MD0xMDEyMjtlLmExNTE9MTAxMjM7ZS5hMTUyPTEwMTI0O2UuYTE1Mz0xMDEyNTtlLmExNTQ9MTAxMjY7ZS5hMTU1PTEwMTI3O2UuYTE1Nj0xMDEyODtlLmExNTc9MTAxMjk7ZS5hMTU4PTEwMTMwO2UuYTE1OT0xMDEzMTtlLmExNjA9MTAxMzI7ZS5hMTYxPTg1OTQ7ZS5hMTYzPTg1OTY7ZS5hMTY0PTg1OTc7ZS5hMTk2PTEwMTM2O2UuYTE2NT0xMDEzNztlLmExOTI9MTAxMzg7ZS5hMTY2PTEwMTM5O2UuYTE2Nz0xMDE0MDtlLmExNjg9MTAxNDE7ZS5hMTY5PTEwMTQyO2UuYTE3MD0xMDE0MztlLmExNzE9MTAxNDQ7ZS5hMTcyPTEwMTQ1O2UuYTE3Mz0xMDE0NjtlLmExNjI9MTAxNDc7ZS5hMTc0PTEwMTQ4O2UuYTE3NT0xMDE0OTtlLmExNzY9MTAxNTA7ZS5hMTc3PTEwMTUxO2UuYTE3OD0xMDE1MjtlLmExNzk9MTAxNTM7ZS5hMTkzPTEwMTU0O2UuYTE4MD0xMDE1NTtlLmExOTk9MTAxNTY7ZS5hMTgxPTEwMTU3O2UuYTIwMD0xMDE1ODtlLmExODI9MTAxNTk7ZS5hMjAxPTEwMTYxO2UuYTE4Mz0xMDE2MjtlLmExODQ9MTAxNjM7ZS5hMTk3PTEwMTY0O2UuYTE4NT0xMDE2NTtlLmExOTQ9MTAxNjY7ZS5hMTk4PTEwMTY3O2UuYTE4Nj0xMDE2ODtlLmExOTU9MTAxNjk7ZS5hMTg3PTEwMTcwO2UuYTE4OD0xMDE3MTtlLmExODk9MTAxNzI7ZS5hMTkwPTEwMTczO2UuYTE5MT0xMDE3NDtlLmE4OT0xMDA4ODtlLmE5MD0xMDA4OTtlLmE5Mz0xMDA5MDtlLmE5ND0xMDA5MTtlLmE5MT0xMDA5MjtlLmE5Mj0xMDA5MztlLmEyMDU9MTAwOTQ7ZS5hODU9MTAwOTU7ZS5hMjA2PTEwMDk2O2UuYTg2PTEwMDk3O2UuYTg3PTEwMDk4O2UuYTg4PTEwMDk5O2UuYTk1PTEwMTAwO2UuYTk2PTEwMTAxO2VbIi5ub3RkZWYiXT0wfSksam49Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2VbNjM3MjFdPTE2OTtlWzYzMTkzXT0xNjk7ZVs2MzcyMF09MTc0O2VbNjMxOTRdPTE3NDtlWzYzNzIyXT04NDgyO2VbNjMxOTVdPTg0ODI7ZVs2MzcxOF09OTE2ODtlWzYzNzE5XT05MTM1O2VbNjM3MzNdPTkxMzQ7ZVs2MzcyOV09OTEyNztlWzYzNzMwXT05MTI4O2VbNjM3MzFdPTkxMjk7ZVs2Mzc0MF09OTEzMTtlWzYzNzQxXT05MTMyO2VbNjM3NDJdPTkxMzM7ZVs2MzcyNl09OTEyMTtlWzYzNzI3XT05MTIyO2VbNjM3MjhdPTkxMjM7ZVs2MzczN109OTEyNDtlWzYzNzM4XT05MTI1O2VbNjM3MzldPTkxMjY7ZVs2MzcyM109OTExNTtlWzYzNzI0XT05MTE2O2VbNjM3MjVdPTkxMTc7ZVs2MzczNF09OTExODtlWzYzNzM1XT05MTE5O2VbNjM3MzZdPTkxMjB9KTtmdW5jdGlvbiBnZXRVbmljb2RlRm9yR2x5cGgoZSx0KXtsZXQgYT10W2VdO2lmKHZvaWQgMCE9PWEpcmV0dXJuIGE7aWYoIWUpcmV0dXJuLTE7aWYoInUiPT09ZVswXSl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgbjtpZig3PT09dCYmIm4iPT09ZVsxXSYmImkiPT09ZVsyXSluPWUuc3Vic3RyaW5nKDMpO2Vsc2V7aWYoISh0Pj01JiZ0PD03KSlyZXR1cm4tMTtuPWUuc3Vic3RyaW5nKDEpfWlmKG49PT1uLnRvVXBwZXJDYXNlKCkpe2E9cGFyc2VJbnQobiwxNik7aWYoYT49MClyZXR1cm4gYX19cmV0dXJuLTF9Y29uc3Qga249W1swLDEyN10sWzEyOCwyNTVdLFsyNTYsMzgzXSxbMzg0LDU5MV0sWzU5Miw2ODcsNzQyNCw3NTUxLDc1NTIsNzYxNV0sWzY4OCw3NjcsNDI3NTIsNDI3ODNdLFs3NjgsODc5LDc2MTYsNzY3OV0sWzg4MCwxMDIzXSxbMTEzOTIsMTE1MTldLFsxMDI0LDEyNzksMTI4MCwxMzI3LDExNzQ0LDExNzc1LDQyNTYwLDQyNjU1XSxbMTMyOCwxNDIzXSxbMTQyNCwxNTM1XSxbNDIyNDAsNDI1NTldLFsxNTM2LDE3OTEsMTg3MiwxOTE5XSxbMTk4NCwyMDQ3XSxbMjMwNCwyNDMxXSxbMjQzMiwyNTU5XSxbMjU2MCwyNjg3XSxbMjY4OCwyODE1XSxbMjgxNiwyOTQzXSxbMjk0NCwzMDcxXSxbMzA3MiwzMTk5XSxbMzIwMCwzMzI3XSxbMzMyOCwzNDU1XSxbMzU4NCwzNzExXSxbMzcxMiwzODM5XSxbNDI1Niw0MzUxLDExNTIwLDExNTY3XSxbNjkxMiw3MDM5XSxbNDM1Miw0NjA3XSxbNzY4MCw3OTM1LDExMzYwLDExMzkxLDQyNzg0LDQzMDA3XSxbNzkzNiw4MTkxXSxbODE5Miw4MzAzLDExNzc2LDExOTAzXSxbODMwNCw4MzUxXSxbODM1Miw4Mzk5XSxbODQwMCw4NDQ3XSxbODQ0OCw4NTI3XSxbODUyOCw4NTkxXSxbODU5Miw4NzAzLDEwMjI0LDEwMjM5LDEwNDk2LDEwNjIzLDExMDA4LDExMjYzXSxbODcwNCw4OTU5LDEwNzUyLDExMDA3LDEwMTc2LDEwMjIzLDEwNjI0LDEwNzUxXSxbODk2MCw5MjE1XSxbOTIxNiw5Mjc5XSxbOTI4MCw5MzExXSxbOTMxMiw5NDcxXSxbOTQ3Miw5NTk5XSxbOTYwMCw5NjMxXSxbOTYzMiw5NzI3XSxbOTcyOCw5OTgzXSxbOTk4NCwxMDE3NV0sWzEyMjg4LDEyMzUxXSxbMTIzNTIsMTI0NDddLFsxMjQ0OCwxMjU0MywxMjc4NCwxMjc5OV0sWzEyNTQ0LDEyNTkxLDEyNzA0LDEyNzM1XSxbMTI1OTIsMTI2ODddLFs0MzA3Miw0MzEzNV0sWzEyODAwLDEzMDU1XSxbMTMwNTYsMTMzMTFdLFs0NDAzMiw1NTIxNV0sWzU1Mjk2LDU3MzQzXSxbNjc4NDAsNjc4NzFdLFsxOTk2OCw0MDk1OSwxMTkwNCwxMjAzMSwxMjAzMiwxMjI1NSwxMjI3MiwxMjI4NywxMzMxMiwxOTkwMywxMzEwNzIsMTczNzkxLDEyNjg4LDEyNzAzXSxbNTczNDQsNjM3NDNdLFsxMjczNiwxMjc4Myw2Mzc0NCw2NDI1NSwxOTQ1NjAsMTk1MTAzXSxbNjQyNTYsNjQzMzVdLFs2NDMzNiw2NTAyM10sWzY1MDU2LDY1MDcxXSxbNjUwNDAsNjUwNTVdLFs2NTEwNCw2NTEzNV0sWzY1MTM2LDY1Mjc5XSxbNjUyODAsNjU1MTldLFs2NTUyMCw2NTUzNV0sWzM4NDAsNDA5NV0sWzE3OTIsMTg3MV0sWzE5MjAsMTk4M10sWzM0NTYsMzU4M10sWzQwOTYsNDI1NV0sWzQ2MDgsNDk5MSw0OTkyLDUwMjMsMTE2NDgsMTE3NDNdLFs1MDI0LDUxMTldLFs1MTIwLDU3NTldLFs1NzYwLDU3OTFdLFs1NzkyLDU4ODddLFs2MDE2LDYxNDNdLFs2MTQ0LDYzMTldLFsxMDI0MCwxMDQ5NV0sWzQwOTYwLDQyMTI3XSxbNTg4OCw1OTE5LDU5MjAsNTk1MSw1OTUyLDU5ODMsNTk4NCw2MDE1XSxbNjYzMDQsNjYzNTFdLFs2NjM1Miw2NjM4M10sWzY2NTYwLDY2NjM5XSxbMTE4Nzg0LDExOTAzOSwxMTkwNDAsMTE5Mjk1LDExOTI5NiwxMTkzNzVdLFsxMTk4MDgsMTIwODMxXSxbMTA0NDQ4MCwxMDQ4NTczXSxbNjUwMjQsNjUwMzksOTE3NzYwLDkxNzk5OV0sWzkxNzUwNCw5MTc2MzFdLFs2NDAwLDY0NzldLFs2NDgwLDY1MjddLFs2NTI4LDY2MjNdLFs2NjU2LDY2ODddLFsxMTI2NCwxMTM1OV0sWzExNTY4LDExNjQ3XSxbMTk5MDQsMTk5NjddLFs0MzAwOCw0MzA1NV0sWzY1NTM2LDY1NjYzLDY1NjY0LDY1NzkxLDY1NzkyLDY1ODU1XSxbNjU4NTYsNjU5MzVdLFs2NjQzMiw2NjQ2M10sWzY2NDY0LDY2NTI3XSxbNjY2NDAsNjY2ODddLFs2NjY4OCw2NjczNV0sWzY3NTg0LDY3NjQ3XSxbNjgwOTYsNjgxOTFdLFsxMTk1NTIsMTE5NjQ3XSxbNzM3MjgsNzQ3NTEsNzQ3NTIsNzQ4NzldLFsxMTk2NDgsMTE5Njc5XSxbNzA0MCw3MTAzXSxbNzE2OCw3MjQ3XSxbNzI0OCw3Mjk1XSxbNDMxMzYsNDMyMzFdLFs0MzI2NCw0MzMxMV0sWzQzMzEyLDQzMzU5XSxbNDM1MjAsNDM2MTVdLFs2NTkzNiw2NTk5OV0sWzY2ZTMsNjYwNDddLFs2NjIwOCw2NjI3MSw2NjE3Niw2NjIwNyw2Nzg3Miw2NzkwM10sWzEyNzAyNCwxMjcxMzUsMTI2OTc2LDEyNzAyM11dO2Z1bmN0aW9uIGdldFVuaWNvZGVSYW5nZUZvcihlLHQ9LTEpe2lmKC0xIT09dCl7Y29uc3QgYT1rblt0XTtmb3IobGV0IG49MCxzPWEubGVuZ3RoO248cztuKz0yKWlmKGU+PWFbbl0mJmU8PWFbbisxXSlyZXR1cm4gdH1mb3IobGV0IHQ9MCxhPWtuLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPWtuW3RdO2ZvcihsZXQgbj0wLHM9YS5sZW5ndGg7bjxzO24rPTIpaWYoZT49YVtuXSYmZTw9YVtuKzFdKXJldHVybiB0fXJldHVybi0xfWNvbnN0IHluPS9eKFxzKXwoXHB7TW59KXwoXHB7Q2Z9KSQvdSxxbj1uZXcgTWFwO2NvbnN0IHZuPTEsU249MixBbj00LHhuPTMyLENuPVsiLm5vdGRlZiIsIi5udWxsIiwibm9ubWFya2luZ3JldHVybiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3Rlc2luZ2xlIiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJncmF2ZSIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJBZGllcmVzaXMiLCJBcmluZyIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiTnRpbGRlIiwiT2RpZXJlc2lzIiwiVWRpZXJlc2lzIiwiYWFjdXRlIiwiYWdyYXZlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhdGlsZGUiLCJhcmluZyIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWdyYXZlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJpYWN1dGUiLCJpZ3JhdmUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsIm50aWxkZSIsIm9hY3V0ZSIsIm9ncmF2ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib3RpbGRlIiwidWFjdXRlIiwidWdyYXZlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJkYWdnZXIiLCJkZWdyZWUiLCJjZW50Iiwic3RlcmxpbmciLCJzZWN0aW9uIiwiYnVsbGV0IiwicGFyYWdyYXBoIiwiZ2VybWFuZGJscyIsInJlZ2lzdGVyZWQiLCJjb3B5cmlnaHQiLCJ0cmFkZW1hcmsiLCJhY3V0ZSIsImRpZXJlc2lzIiwibm90ZXF1YWwiLCJBRSIsIk9zbGFzaCIsImluZmluaXR5IiwicGx1c21pbnVzIiwibGVzc2VxdWFsIiwiZ3JlYXRlcmVxdWFsIiwieWVuIiwibXUiLCJwYXJ0aWFsZGlmZiIsInN1bW1hdGlvbiIsInByb2R1Y3QiLCJwaSIsImludGVncmFsIiwib3JkZmVtaW5pbmUiLCJvcmRtYXNjdWxpbmUiLCJPbWVnYSIsImFlIiwib3NsYXNoIiwicXVlc3Rpb25kb3duIiwiZXhjbGFtZG93biIsImxvZ2ljYWxub3QiLCJyYWRpY2FsIiwiZmxvcmluIiwiYXBwcm94ZXF1YWwiLCJEZWx0YSIsImd1aWxsZW1vdGxlZnQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwibm9uYnJlYWtpbmdzcGFjZSIsIkFncmF2ZSIsIkF0aWxkZSIsIk90aWxkZSIsIk9FIiwib2UiLCJlbmRhc2giLCJlbWRhc2giLCJxdW90ZWRibGxlZnQiLCJxdW90ZWRibHJpZ2h0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsImRpdmlkZSIsImxvemVuZ2UiLCJ5ZGllcmVzaXMiLCJZZGllcmVzaXMiLCJmcmFjdGlvbiIsImN1cnJlbmN5IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJwZXJ0aG91c2FuZCIsIkFjaXJjdW1mbGV4IiwiRWNpcmN1bWZsZXgiLCJBYWN1dGUiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiYXBwbGUiLCJPZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVncmF2ZSIsImRvdGxlc3NpIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiTHNsYXNoIiwibHNsYXNoIiwiU2Nhcm9uIiwic2Nhcm9uIiwiWmNhcm9uIiwiemNhcm9uIiwiYnJva2VuYmFyIiwiRXRoIiwiZXRoIiwiWWFjdXRlIiwieWFjdXRlIiwiVGhvcm4iLCJ0aG9ybiIsIm1pbnVzIiwibXVsdGlwbHkiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsIm9uZWhhbGYiLCJvbmVxdWFydGVyIiwidGhyZWVxdWFydGVycyIsImZyYW5jIiwiR2JyZXZlIiwiZ2JyZXZlIiwiSWRvdGFjY2VudCIsIlNjZWRpbGxhIiwic2NlZGlsbGEiLCJDYWN1dGUiLCJjYWN1dGUiLCJDY2Fyb24iLCJjY2Fyb24iLCJkY3JvYXQiXTtmdW5jdGlvbiByZWNvdmVyR2x5cGhOYW1lKGUsdCl7aWYodm9pZCAwIT09dFtlXSlyZXR1cm4gZTtjb25zdCBhPWdldFVuaWNvZGVGb3JHbHlwaChlLHQpO2lmKC0xIT09YSlmb3IoY29uc3QgZSBpbiB0KWlmKHRbZV09PT1hKXJldHVybiBlO2luZm8oIlVuYWJsZSB0byByZWNvdmVyIGEgc3RhbmRhcmQgZ2x5cGggbmFtZSBmb3I6ICIrZSk7cmV0dXJuIGV9ZnVuY3Rpb24gdHlwZTFGb250R2x5cGhNYXBwaW5nKGUsdCxhKXtjb25zdCBuPW5ldyBNYXA7bGV0IHMscjtjb25zdCBpPSEhKGUuZmxhZ3MmQW4pO2lmKGUuaXNJbnRlcm5hbEZvbnQpe3I9dDtmb3IobGV0IGU9MDtlPHIubGVuZ3RoO2UrKyl7cz1hLmluZGV4T2YocltlXSk7bi5zZXQoZSxzPj0wP3M6MCl9fWVsc2UgaWYoZS5iYXNlRW5jb2RpbmdOYW1lKXtyPWdldEVuY29kaW5nKGUuYmFzZUVuY29kaW5nTmFtZSk7Zm9yKGxldCBlPTA7ZTxyLmxlbmd0aDtlKyspe3M9YS5pbmRleE9mKHJbZV0pO24uc2V0KGUscz49MD9zOjApfX1lbHNlIGlmKGkpZm9yKGNvbnN0IGUgaW4gdCluLnNldCgrZSx0W2VdKTtlbHNle3I9bW47Zm9yKGxldCBlPTA7ZTxyLmxlbmd0aDtlKyspe3M9YS5pbmRleE9mKHJbZV0pO24uc2V0KGUscz49MD9zOjApfX1sZXQgbztpZihlLmRpZmZlcmVuY2VzKWZvcihjb25zdFt0LHJdb2YgZS5kaWZmZXJlbmNlcyl7cz1hLmluZGV4T2Yocik7aWYoLTE9PT1zKXtvPz89Ym4oKTtjb25zdCBlPXJlY292ZXJHbHlwaE5hbWUocixvKTtlIT09ciYmKHM9YS5pbmRleE9mKGUpKX1uLnNldCh0LHM+PTA/czowKX1yZXR1cm4gbn1mdW5jdGlvbiBub3JtYWxpemVGb250TmFtZShlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC9bLF9dL2csIi0iKS5yZXBsYWNlQWxsKC9ccy9nLCIiKX1jb25zdCBJbj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZT0+e2VbODIxMV09NjUwNzQ7ZVs4MjEyXT02NTA3MztlWzgyMjldPTY1MDcyO2VbODIzMF09NjUwNDk7ZVsxMjI4OV09NjUwNDE7ZVsxMjI5MF09NjUwNDI7ZVsxMjI5Nl09NjUwODc7ZVsxMjI5N109NjUwODg7ZVsxMjI5OF09NjUwODU7ZVsxMjI5OV09NjUwODY7ZVsxMjMwMF09NjUwODk7ZVsxMjMwMV09NjUwOTA7ZVsxMjMwMl09NjUwOTE7ZVsxMjMwM109NjUwOTI7ZVsxMjMwNF09NjUwODM7ZVsxMjMwNV09NjUwODQ7ZVsxMjMwOF09NjUwODE7ZVsxMjMwOV09NjUwODI7ZVsxMjMxMF09NjUwNDc7ZVsxMjMxMV09NjUwNDg7ZVs2NTEwM109NjUwNzY7ZVs2NTI4MV09NjUwNDU7ZVs2NTI4OF09NjUwNzc7ZVs2NTI4OV09NjUwNzg7ZVs2NTI5Ml09NjUwNDA7ZVs2NTMwNl09NjUwNDM7ZVs2NTMwN109NjUwNDQ7ZVs2NTMxMV09NjUwNDY7ZVs2NTMzOV09NjUwOTU7ZVs2NTM0MV09NjUwOTY7ZVs2NTM0M109NjUwNzU7ZVs2NTM3MV09NjUwNzk7ZVs2NTM3M109NjUwODB9KTtjb25zdCBGbj1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwicXVlc3Rpb25kb3duIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiQUUiLCJvcmRmZW1pbmluZSIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiYWUiLCJkb3RsZXNzaSIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIm9uZXN1cGVyaW9yIiwibG9naWNhbG5vdCIsIm11IiwidHJhZGVtYXJrIiwiRXRoIiwib25laGFsZiIsInBsdXNtaW51cyIsIlRob3JuIiwib25lcXVhcnRlciIsImRpdmlkZSIsImJyb2tlbmJhciIsImRlZ3JlZSIsInRob3JuIiwidGhyZWVxdWFydGVycyIsInR3b3N1cGVyaW9yIiwicmVnaXN0ZXJlZCIsIm1pbnVzIiwiZXRoIiwibXVsdGlwbHkiLCJ0aHJlZXN1cGVyaW9yIiwiY29weXJpZ2h0IiwiQWFjdXRlIiwiQWNpcmN1bWZsZXgiLCJBZGllcmVzaXMiLCJBZ3JhdmUiLCJBcmluZyIsIkF0aWxkZSIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiRWNpcmN1bWZsZXgiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk50aWxkZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiT2RpZXJlc2lzIiwiT2dyYXZlIiwiT3RpbGRlIiwiU2Nhcm9uIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJVZ3JhdmUiLCJZYWN1dGUiLCJZZGllcmVzaXMiLCJaY2Fyb24iLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImFncmF2ZSIsImFyaW5nIiwiYXRpbGRlIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImVncmF2ZSIsImlhY3V0ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwiaWdyYXZlIiwibnRpbGRlIiwib2FjdXRlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvZ3JhdmUiLCJvdGlsZGUiLCJzY2Fyb24iLCJ1YWN1dGUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsInVncmF2ZSIsInlhY3V0ZSIsInlkaWVyZXNpcyIsInpjYXJvbiJdLFRuPVsiLm5vdGRlZiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCJjb21tYXN1cGVyaW9yIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsInBlcmlvZHN1cGVyaW9yIiwicXVlc3Rpb25zbWFsbCIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuc3VwZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCJleGNsYW1kb3duc21hbGwiLCJjZW50b2xkc3R5bGUiLCJMc2xhc2hzbWFsbCIsIlNjYXJvbnNtYWxsIiwiWmNhcm9uc21hbGwiLCJEaWVyZXNpc3NtYWxsIiwiQnJldmVzbWFsbCIsIkNhcm9uc21hbGwiLCJEb3RhY2NlbnRzbWFsbCIsIk1hY3JvbnNtYWxsIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwiT2dvbmVrc21hbGwiLCJSaW5nc21hbGwiLCJDZWRpbGxhc21hbGwiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd25zbWFsbCIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d290aGlyZHMiLCJ6ZXJvc3VwZXJpb3IiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsImZvdXJzdXBlcmlvciIsImZpdmVzdXBlcmlvciIsInNpeHN1cGVyaW9yIiwic2V2ZW5zdXBlcmlvciIsImVpZ2h0c3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJvbmVpbmZlcmlvciIsInR3b2luZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsImZvdXJpbmZlcmlvciIsImZpdmVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwic2V2ZW5pbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJuaW5laW5mZXJpb3IiLCJjZW50aW5mZXJpb3IiLCJkb2xsYXJpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiY29tbWFpbmZlcmlvciIsIkFncmF2ZXNtYWxsIiwiQWFjdXRlc21hbGwiLCJBY2lyY3VtZmxleHNtYWxsIiwiQXRpbGRlc21hbGwiLCJBZGllcmVzaXNzbWFsbCIsIkFyaW5nc21hbGwiLCJBRXNtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVncmF2ZXNtYWxsIiwiRWFjdXRlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJZ3JhdmVzbWFsbCIsIklhY3V0ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiRXRoc21hbGwiLCJOdGlsZGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2FjdXRlc21hbGwiLCJPY2lyY3VtZmxleHNtYWxsIiwiT3RpbGRlc21hbGwiLCJPZGllcmVzaXNzbWFsbCIsIk9Fc21hbGwiLCJPc2xhc2hzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWFjdXRlc21hbGwiLCJVY2lyY3VtZmxleHNtYWxsIiwiVWRpZXJlc2lzc21hbGwiLCJZYWN1dGVzbWFsbCIsIlRob3Juc21hbGwiLCJZZGllcmVzaXNzbWFsbCJdLFJuPVsiLm5vdGRlZiIsInNwYWNlIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwiZnJhY3Rpb24iLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb2xvbiIsInNlbWljb2xvbiIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCJpc3VwZXJpb3IiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsImh5cGhlbnN1cGVyaW9yIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsImNlbnRvbGRzdHlsZSIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d290aGlyZHMiLCJ6ZXJvc3VwZXJpb3IiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsImZvdXJzdXBlcmlvciIsImZpdmVzdXBlcmlvciIsInNpeHN1cGVyaW9yIiwic2V2ZW5zdXBlcmlvciIsImVpZ2h0c3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJvbmVpbmZlcmlvciIsInR3b2luZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsImZvdXJpbmZlcmlvciIsImZpdmVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwic2V2ZW5pbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJuaW5laW5mZXJpb3IiLCJjZW50aW5mZXJpb3IiLCJkb2xsYXJpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiY29tbWFpbmZlcmlvciJdO2NsYXNzIERhdGFCdWlsZGVyeyNmZTsjY2U9MTAyNDsjaGU9ITE7I3VlPTA7I21lO2NvbnN0cnVjdG9yKHtleGFjdExlbmd0aDplPTAsbWluTGVuZ3RoOnQ9MH0pe3RoaXMuI2hlPSEhZTt0aGlzLiNwZShlfHx0KX0jcGUoZSl7aWYodGhpcy4jaGUpdGhpcy4jY2U9ZTtlbHNlIGZvcig7dGhpcy4jY2U8ZTspdGhpcy4jY2UqPTI7Y29uc3QgdD1uZXcgVWludDhBcnJheSh0aGlzLiNjZSk7dGhpcy4jZmUmJnQuc2V0KHRoaXMuI2ZlLDApO3RoaXMuI2ZlPXQ7dGhpcy4jbWU9bmV3IERhdGFWaWV3KHQuYnVmZmVyKX1nZXQgZGF0YSgpe3JldHVybiB0aGlzLiNmZS5zdWJhcnJheSgwLHRoaXMuI3VlKX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuI3VlfXNraXAoZSl7dGhpcy4jdWUrPWV9c2V0QXJyYXkoZSl7Y29uc3QgdD10aGlzLiN1ZStlLmxlbmd0aDshdGhpcy4jaGUmJnQ+dGhpcy4jY2UmJnRoaXMuI3BlKHQpO3RoaXMuI2ZlLnNldChlLHRoaXMuI3VlKTt0aGlzLiN1ZT10fXNldEludDE2KGUpe2NvbnN0IHQ9dGhpcy4jdWUrMjshdGhpcy4jaGUmJnQ+dGhpcy4jY2UmJnRoaXMuI3BlKHQpO3RoaXMuI21lLnNldEludDE2KHRoaXMuI3VlLGUpO3RoaXMuI3VlPXR9c2V0U2FmZUludDE2KGUpe2NvbnN0IHQ9dGhpcy4jdWUrMjshdGhpcy4jaGUmJnQ+dGhpcy4jY2UmJnRoaXMuI3BlKHQpO3RoaXMuI21lLnNldEludDE2KHRoaXMuI3VlLE1hdGhDbGFtcChlLC0zMjc2OCwzMjc2NykpO3RoaXMuI3VlPXR9c2V0SW50MzIoZSl7Y29uc3QgdD10aGlzLiN1ZSs0OyF0aGlzLiNoZSYmdD50aGlzLiNjZSYmdGhpcy4jcGUodCk7dGhpcy4jbWUuc2V0SW50MzIodGhpcy4jdWUsZSk7dGhpcy4jdWU9dH19ZnVuY3Rpb24gbG9va3NMaWtlVW5zaWduZWQxNkJpdE5lZ2F0aXZlKGUpe3JldHVybiBlPjMyNzY3JiZlPD02NTUzNX1mdW5jdGlvbiByZWNvdmVyU2lnbmVkMTZCaXRCQm94KGUsdD0hMSl7cmV0dXJuIFV0aWwubm9ybWFsaXplUmVjdChlLm1hcCgoZSxhKT0+KCF0fHxhPDIpJiZsb29rc0xpa2VVbnNpZ25lZDE2Qml0TmVnYXRpdmUoZSk/ZS02NTUzNjplKSl9Y29uc3QgT249WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsInF1ZXN0aW9uZG93biIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIkFFIiwib3JkZmVtaW5pbmUiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsImFlIiwiZG90bGVzc2kiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCJvbmVzdXBlcmlvciIsImxvZ2ljYWxub3QiLCJtdSIsInRyYWRlbWFyayIsIkV0aCIsIm9uZWhhbGYiLCJwbHVzbWludXMiLCJUaG9ybiIsIm9uZXF1YXJ0ZXIiLCJkaXZpZGUiLCJicm9rZW5iYXIiLCJkZWdyZWUiLCJ0aG9ybiIsInRocmVlcXVhcnRlcnMiLCJ0d29zdXBlcmlvciIsInJlZ2lzdGVyZWQiLCJtaW51cyIsImV0aCIsIm11bHRpcGx5IiwidGhyZWVzdXBlcmlvciIsImNvcHlyaWdodCIsIkFhY3V0ZSIsIkFjaXJjdW1mbGV4IiwiQWRpZXJlc2lzIiwiQWdyYXZlIiwiQXJpbmciLCJBdGlsZGUiLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJOdGlsZGUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk9kaWVyZXNpcyIsIk9ncmF2ZSIsIk90aWxkZSIsIlNjYXJvbiIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWRpZXJlc2lzIiwiVWdyYXZlIiwiWWFjdXRlIiwiWWRpZXJlc2lzIiwiWmNhcm9uIiwiYWFjdXRlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhZ3JhdmUiLCJhcmluZyIsImF0aWxkZSIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJlZ3JhdmUiLCJpYWN1dGUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsImlncmF2ZSIsIm50aWxkZSIsIm9hY3V0ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib2dyYXZlIiwib3RpbGRlIiwic2Nhcm9uIiwidWFjdXRlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJ1Z3JhdmUiLCJ5YWN1dGUiLCJ5ZGllcmVzaXMiLCJ6Y2Fyb24iLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiRG90YWNjZW50c21hbGwiLCJNYWNyb25zbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIiwiMDAxLjAwMCIsIjAwMS4wMDEiLCIwMDEuMDAyIiwiMDAxLjAwMyIsIkJsYWNrIiwiQm9sZCIsIkJvb2siLCJMaWdodCIsIk1lZGl1bSIsIlJlZ3VsYXIiLCJSb21hbiIsIlNlbWlib2xkIl0sQm49MzkxLERuPS4wMzk2MjUsSG49W251bGwse2lkOiJoc3RlbSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSxudWxsLHtpZDoidnN0ZW0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0se2lkOiJ2bW92ZXRvIixtaW46MSxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6InJsaW5ldG8iLG1pbjoyLHJlc2V0U3RhY2s6ITB9LHtpZDoiaGxpbmV0byIsbWluOjEscmVzZXRTdGFjazohMH0se2lkOiJ2bGluZXRvIixtaW46MSxyZXNldFN0YWNrOiEwfSx7aWQ6InJyY3VydmV0byIsbWluOjYscmVzZXRTdGFjazohMH0sbnVsbCx7aWQ6ImNhbGxzdWJyIixtaW46MX0se2lkOiJyZXR1cm4iLG1pbjowfSxudWxsLG51bGwse2lkOiJlbmRjaGFyIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSxudWxsLG51bGwsbnVsbCx7aWQ6ImhzdGVtaG0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0se2lkOiJoaW50bWFzayIsbWluOjAsc3RhY2tDbGVhcmluZzohMH0se2lkOiJjbnRybWFzayIsbWluOjAsc3RhY2tDbGVhcmluZzohMH0se2lkOiJybW92ZXRvIixtaW46MixzdGFja0NsZWFyaW5nOiEwfSx7aWQ6Imhtb3ZldG8iLG1pbjoxLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoidnN0ZW1obSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6InJjdXJ2ZWxpbmUiLG1pbjo4LHJlc2V0U3RhY2s6ITB9LHtpZDoicmxpbmVjdXJ2ZSIsbWluOjgscmVzZXRTdGFjazohMH0se2lkOiJ2dmN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LHtpZDoiaGhjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSxudWxsLHtpZDoiY2FsbGdzdWJyIixtaW46MX0se2lkOiJ2aGN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LHtpZDoiaHZjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfV0sTW49W251bGwsbnVsbCxudWxsLHtpZDoiYW5kIixtaW46MixzdGFja0RlbHRhOi0xfSx7aWQ6Im9yIixtaW46MixzdGFja0RlbHRhOi0xfSx7aWQ6Im5vdCIsbWluOjEsc3RhY2tEZWx0YTowfSxudWxsLG51bGwsbnVsbCx7aWQ6ImFicyIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImFkZCIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXStlW3QtMV19fSx7aWQ6InN1YiIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXS1lW3QtMV19fSx7aWQ6ImRpdiIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXS9lW3QtMV19fSxudWxsLHtpZDoibmVnIixtaW46MSxzdGFja0RlbHRhOjAsc3RhY2tGbihlLHQpe2VbdC0xXT0tZVt0LTFdfX0se2lkOiJlcSIsbWluOjIsc3RhY2tEZWx0YTotMX0sbnVsbCxudWxsLHtpZDoiZHJvcCIsbWluOjEsc3RhY2tEZWx0YTotMX0sbnVsbCx7aWQ6InB1dCIsbWluOjIsc3RhY2tEZWx0YTotMn0se2lkOiJnZXQiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJpZmVsc2UiLG1pbjo0LHN0YWNrRGVsdGE6LTN9LHtpZDoicmFuZG9tIixtaW46MCxzdGFja0RlbHRhOjF9LHtpZDoibXVsIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdKmVbdC0xXX19LG51bGwse2lkOiJzcXJ0IixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiZHVwIixtaW46MSxzdGFja0RlbHRhOjF9LHtpZDoiZXhjaCIsbWluOjIsc3RhY2tEZWx0YTowfSx7aWQ6ImluZGV4IixtaW46MixzdGFja0RlbHRhOjB9LHtpZDoicm9sbCIsbWluOjMsc3RhY2tEZWx0YTotMn0sbnVsbCxudWxsLG51bGwse2lkOiJoZmxleCIsbWluOjcscmVzZXRTdGFjazohMH0se2lkOiJmbGV4IixtaW46MTMscmVzZXRTdGFjazohMH0se2lkOiJoZmxleDEiLG1pbjo5LHJlc2V0U3RhY2s6ITB9LHtpZDoiZmxleDEiLG1pbjoxMSxyZXNldFN0YWNrOiEwfV07Y2xhc3MgQ0ZGUGFyc2Vye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmJ5dGVzPWUuZ2V0Qnl0ZXMoKTt0aGlzLnByb3BlcnRpZXM9dDt0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQ9ISFhfXBhcnNlKCl7Y29uc3QgZT10aGlzLnByb3BlcnRpZXMsdD1uZXcgQ0ZGKHRoaXMuYnl0ZXMubGVuZ3RoKTt0aGlzLmNmZj10O2NvbnN0IGE9dGhpcy5wYXJzZUhlYWRlcigpLG49dGhpcy5wYXJzZUluZGV4KGEuZW5kUG9zKSxzPXRoaXMucGFyc2VJbmRleChuLmVuZFBvcykscj10aGlzLnBhcnNlSW5kZXgocy5lbmRQb3MpLGk9dGhpcy5wYXJzZUluZGV4KHIuZW5kUG9zKSxvPXRoaXMucGFyc2VEaWN0KHMub2JqLmdldCgwKSksbD10aGlzLmNyZWF0ZURpY3QoQ0ZGVG9wRGljdCxvLHQuc3RyaW5ncyk7dC5oZWFkZXI9YS5vYmo7dC5uYW1lcz10aGlzLnBhcnNlTmFtZUluZGV4KG4ub2JqKTt0LnN0cmluZ3M9dGhpcy5wYXJzZVN0cmluZ0luZGV4KHIub2JqKTt0LnRvcERpY3Q9bDt0Lmdsb2JhbFN1YnJJbmRleD1pLm9iajt0aGlzLnBhcnNlUHJpdmF0ZURpY3QodC50b3BEaWN0KTt0LmlzQ0lERm9udD1sLmhhc05hbWUoIlJPUyIpO2NvbnN0IGY9bC5nZXRCeU5hbWUoIkNoYXJTdHJpbmdzIiksYz10aGlzLnBhcnNlSW5kZXgoZikub2JqO3QuY2hhclN0cmluZ0NvdW50PWMuY291bnQ7Y29uc3QgaD1sLmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpO2gmJihlLmZvbnRNYXRyaXg9aCk7bGV0IHU9bC5nZXRCeU5hbWUoIkZvbnRCQm94Iik7Y29uc3QgbT1lLmJib3g/LnNvbWUoZT0+MCE9PWUpP3JlY292ZXJTaWduZWQxNkJpdEJCb3goZS5iYm94KTpudWxsLHA9dT8uc2xpY2UoMCwyKS5zb21lKGxvb2tzTGlrZVVuc2lnbmVkMTZCaXROZWdhdGl2ZSksZD11Py5zb21lKGxvb2tzTGlrZVVuc2lnbmVkMTZCaXROZWdhdGl2ZSk7aWYodT8uZXZlcnkoZT0+MD09PWUpJiZtKXt1PW07bC5zZXRCeU5hbWUoIkZvbnRCQm94Iix1KX1lbHNlIGlmKGQpe2NvbnN0IHQ9cmVjb3ZlclNpZ25lZDE2Qml0QkJveCh1KSxhPW0mJmUuYmJveC5zb21lKGU9PmU8MCkmJiFlLmJib3guc29tZShsb29rc0xpa2VVbnNpZ25lZDE2Qml0TmVnYXRpdmUpJiZpc0FycmF5RXF1YWwodCxtKTtpZihhfHxwKXt1PWE/dDpyZWNvdmVyU2lnbmVkMTZCaXRCQm94KHUsITApO2wuc2V0QnlOYW1lKCJGb250QkJveCIsdSl9fWlmKHU/LnNvbWUoZT0+MCE9PWUpKXtlLmFzY2VudD1NYXRoLm1heCh1WzNdLHVbMV0pO2UuZGVzY2VudD1NYXRoLm1pbih1WzFdLHVbM10pO2UuYXNjZW50U2NhbGVkPSEwfWxldCBnLGI7aWYodC5pc0NJREZvbnQpe2NvbnN0IGU9dGhpcy5wYXJzZUluZGV4KGwuZ2V0QnlOYW1lKCJGREFycmF5IikpLm9iajtsZXQgYT1lLmNvdW50O2lmKGE+MjU2KXt3YXJuKGBDRkZQYXJzZXIucGFyc2U6IHRvbyBtYW55IEZEQXJyYXkgZW50cmllcyAoJHthfSkuYCk7YT0yNTZ9Zm9yKGxldCBuPTA7bjxhOysrbil7Y29uc3QgYT1lLmdldChuKSxzPXRoaXMuY3JlYXRlRGljdChDRkZUb3BEaWN0LHRoaXMucGFyc2VEaWN0KGEpLHQuc3RyaW5ncyk7dGhpcy5wYXJzZVByaXZhdGVEaWN0KHMpO3QuZmRBcnJheS5wdXNoKHMpfWI9bnVsbDtnPXRoaXMucGFyc2VDaGFyc2V0cyhsLmdldEJ5TmFtZSgiY2hhcnNldCIpLGMuY291bnQsdC5zdHJpbmdzLCEwKTt0LmZkU2VsZWN0PXRoaXMucGFyc2VGRFNlbGVjdChsLmdldEJ5TmFtZSgiRkRTZWxlY3QiKSxjLmNvdW50KX1lbHNle2c9dGhpcy5wYXJzZUNoYXJzZXRzKGwuZ2V0QnlOYW1lKCJjaGFyc2V0IiksYy5jb3VudCx0LnN0cmluZ3MsITEpO2I9dGhpcy5wYXJzZUVuY29kaW5nKGwuZ2V0QnlOYW1lKCJFbmNvZGluZyIpLGUsdC5zdHJpbmdzLGcuY2hhcnNldCl9dC5jaGFyc2V0PWc7dC5lbmNvZGluZz1iO2NvbnN0IHc9dGhpcy5wYXJzZUNoYXJTdHJpbmdzKHtjaGFyU3RyaW5nczpjLGxvY2FsU3VickluZGV4OmwucHJpdmF0ZURpY3Quc3VicnNJbmRleCxnbG9iYWxTdWJySW5kZXg6aS5vYmosZmRTZWxlY3Q6dC5mZFNlbGVjdCxmZEFycmF5OnQuZmRBcnJheSxwcml2YXRlRGljdDpsLnByaXZhdGVEaWN0fSk7dC5jaGFyU3RyaW5ncz13LmNoYXJTdHJpbmdzO3Quc2VhY3M9dy5zZWFjczt0LndpZHRocz13LndpZHRocztyZXR1cm4gdH1wYXJzZUhlYWRlcigpe2xldCBlPXRoaXMuYnl0ZXM7Y29uc3QgdD1lLmxlbmd0aDtsZXQgYT0wO2Zvcig7YTx0JiYxIT09ZVthXTspKythO2lmKGE+PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIENGRiBoZWFkZXIiKTtpZigwIT09YSl7aW5mbygiY2ZmIGRhdGEgaXMgc2hpZnRlZCIpO2U9ZS5zdWJhcnJheShhKTt0aGlzLmJ5dGVzPWV9Y29uc3Qgbj1lWzBdLHM9ZVsxXSxyPWVbMl0saT1lWzNdO3JldHVybntvYmo6bmV3IENGRkhlYWRlcihuLHMscixpKSxlbmRQb3M6cn19cGFyc2VEaWN0KGUpe2NvbnN0IHQ9bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVzTGVuZ3RoKTtsZXQgYT0wO2Z1bmN0aW9uIHBhcnNlT3BlcmFuZCgpe2xldCBuPWVbYSsrXTtpZigzMD09PW4pcmV0dXJuIGZ1bmN0aW9uIHBhcnNlRmxvYXRPcGVyYW5kKCl7bGV0IHQ9IiI7Y29uc3Qgbj0xNSxzPVsiMCIsIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIi4iLCJFIiwiRS0iLG51bGwsIi0iXSxyPWUubGVuZ3RoO2Zvcig7YTxyOyl7Y29uc3Qgcj1lW2ErK10saT1yPj40LG89MTUmcjtpZihpPT09bilicmVhazt0Kz1zW2ldO2lmKG89PT1uKWJyZWFrO3QrPXNbb119cmV0dXJuIHBhcnNlRmxvYXQodCl9KCk7aWYoMjg9PT1uKXtuPXQuZ2V0SW50MTYoYSk7YSs9MjtyZXR1cm4gbn1pZigyOT09PW4pe249dC5nZXRJbnQzMihhKTthKz00O3JldHVybiBufWlmKG4+PTMyJiZuPD0yNDYpcmV0dXJuIG4tMTM5O2lmKG4+PTI0NyYmbjw9MjUwKXJldHVybiAyNTYqKG4tMjQ3KStlW2ErK10rMTA4O2lmKG4+PTI1MSYmbjw9MjU0KXJldHVybi0yNTYqKG4tMjUxKS1lW2ErK10tMTA4O3dhcm4oYENGRlBhcnNlci5wYXJzZURpY3Q6ICIke259IiBpcyBhIHJlc2VydmVkIGNvbW1hbmQuYCk7cmV0dXJuIE5hTn1sZXQgbj1bXTtjb25zdCBzPVtdO2E9MDtjb25zdCByPWUubGVuZ3RoO2Zvcig7YTxyOyl7bGV0IHQ9ZVthXTtpZih0PD0yMSl7MTI9PT10JiYodD10PDw4fGVbKythXSk7cy5wdXNoKFt0LG5dKTtuPVtdOysrYX1lbHNlIG4ucHVzaChwYXJzZU9wZXJhbmQoKSl9cmV0dXJuIHN9cGFyc2VJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleCxhPXRoaXMuYnl0ZXMsbj1hW2UrK108PDh8YVtlKytdLHM9W107bGV0IHIsaSxvPWU7aWYoMCE9PW4pe2NvbnN0IHQ9YVtlKytdO2lmKHQ8MXx8dD40KXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBDRkYgSU5ERVggb2Zmc2V0IHNpemU6ICR7dH1gKTtjb25zdCBsPWUrKG4rMSkqdC0xLGY9YS5sZW5ndGg7bGV0IGM9bDtmb3Iocj0wLGk9bisxO3I8aTsrK3Ipe2xldCBuPTA7Zm9yKGxldCBzPTA7czx0OysrcyluPW48PDh8YVtlKytdO2M9TWF0aENsYW1wKGwrbixjLGYpO3MucHVzaChjKX1vPXNbbl19Zm9yKHI9MCxpPXMubGVuZ3RoLTE7cjxpOysrcil7Y29uc3QgZT1zW3JdLG49c1tyKzFdO3QuYWRkKGEuc3ViYXJyYXkoZSxuKSl9cmV0dXJue29iajp0LGVuZFBvczpvfX1wYXJzZU5hbWVJbmRleChlKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wLG49ZS5jb3VudDthPG47KythKXtjb25zdCBuPWUuZ2V0KGEpO3QucHVzaChieXRlc1RvU3RyaW5nKG4pKX1yZXR1cm4gdH1wYXJzZVN0cmluZ0luZGV4KGUpe2NvbnN0IHQ9bmV3IENGRlN0cmluZ3M7Zm9yKGxldCBhPTAsbj1lLmNvdW50O2E8bjsrK2Epe2NvbnN0IG49ZS5nZXQoYSk7dC5hZGQoYnl0ZXNUb1N0cmluZyhuKSl9cmV0dXJuIHR9Y3JlYXRlRGljdChlLHQsYSl7Y29uc3Qgbj1uZXcgZShhKTtmb3IoY29uc3RbZSxhXW9mIHQpbi5zZXRCeUtleShlLGEpO3JldHVybiBufXBhcnNlQ2hhclN0cmluZyhlLHQsYSxuKXtpZighdHx8ZS5jYWxsRGVwdGg+MTApcmV0dXJuITE7Y29uc3Qgcz1uZXcgRGF0YVZpZXcodC5idWZmZXIsdC5ieXRlT2Zmc2V0LHQuYnl0ZXNMZW5ndGgpO2xldCByPWUuc3RhY2tTaXplO2NvbnN0IGk9ZS5zdGFjaztsZXQgbz10Lmxlbmd0aDtmb3IobGV0IGw9MDtsPG87KXtjb25zdCBmPXRbbCsrXTtsZXQgYz1udWxsO2lmKDEyPT09Zil7Y29uc3QgZT10W2wrK107aWYoMD09PWUpe3RbbC0yXT0xMzk7dFtsLTFdPTIyO3I9MH1lbHNlIGM9TW5bZV19ZWxzZSBpZigyOD09PWYpe2lbcl09cy5nZXRJbnQxNihsKTtsKz0yO3IrK31lbHNlIGlmKDE0PT09Zil7aWYocj49NCl7ci09NDtpZih0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQpe2Uuc2VhYz1pLnNsaWNlKHIscis0KTtyZXR1cm4hMX19Yz1IbltmXX1lbHNlIGlmKGY+PTMyJiZmPD0yNDYpe2lbcl09Zi0xMzk7cisrfWVsc2UgaWYoZj49MjQ3JiZmPD0yNTQpe2lbcl09ZjwyNTE/KGYtMjQ3PDw4KSt0W2xdKzEwODotKGYtMjUxPDw4KS10W2xdLTEwODtsKys7cisrfWVsc2UgaWYoMjU1PT09Zil7aVtyXT1zLmdldEludDMyKGwpLzY1NTM2O2wrPTQ7cisrfWVsc2UgaWYoMTk9PT1mfHwyMD09PWYpe2UuaGludHMrPXI+PjE7aWYoMD09PWUuaGludHMpe3QuY29weVdpdGhpbihsLTEsbCwtMSk7bC09MTtvLT0xO2NvbnRpbnVlfWwrPWUuaGludHMrNz4+MztyJT0yO2M9SG5bZl19ZWxzZXtpZigxMD09PWZ8fDI5PT09Zil7Y29uc3QgdD0xMD09PWY/YTpuO2lmKCF0KXtjPUhuW2ZdO3dhcm4oIk1pc3Npbmcgc3VicnNJbmRleCBmb3IgIitjLmlkKTtyZXR1cm4hMX1sZXQgcz0zMjc2ODt0LmNvdW50PDEyNDA/cz0xMDc6dC5jb3VudDwzMzkwMCYmKHM9MTEzMSk7Y29uc3Qgbz1pWy0tcl0rcztpZihvPDB8fG8+PXQuY291bnR8fGlzTmFOKG8pKXtjPUhuW2ZdO3dhcm4oIk91dCBvZiBib3VuZHMgc3VickluZGV4IGZvciAiK2MuaWQpO3JldHVybiExfWUuc3RhY2tTaXplPXI7ZS5jYWxsRGVwdGgrKztpZighdGhpcy5wYXJzZUNoYXJTdHJpbmcoZSx0LmdldChvKSxhLG4pKXJldHVybiExO2UuY2FsbERlcHRoLS07cj1lLnN0YWNrU2l6ZTtjb250aW51ZX1pZigxMT09PWYpe2Uuc3RhY2tTaXplPXI7cmV0dXJuITB9aWYoMD09PWYmJmw9PT10Lmxlbmd0aCl7dFtsLTFdPTE0O2M9SG5bMTRdfWVsc2V7aWYoOT09PWYpe3QuY29weVdpdGhpbihsLTEsbCwtMSk7bC09MTtvLT0xO2NvbnRpbnVlfWM9SG5bZl19fWlmKGMpe2lmKGMuc3RlbSl7ZS5oaW50cys9cj4+MTtpZigzPT09Znx8MjM9PT1mKWUuaGFzVlN0ZW1zPSEwO2Vsc2UgaWYoZS5oYXNWU3RlbXMmJigxPT09Znx8MTg9PT1mKSl7d2FybigiQ0ZGIHN0ZW0gaGludHMgYXJlIGluIHdyb25nIG9yZGVyIik7dFtsLTFdPTE9PT1mPzM6MjN9fWlmKHI8Yy5taW4pe3dhcm4oIk5vdCBlbm91Z2ggcGFyYW1ldGVycyBmb3IgIitjLmlkKyI7IGFjdHVhbDogIityKyIsIGV4cGVjdGVkOiAiK2MubWluKTtpZigwPT09cil7dFtsLTFdPTE0O3JldHVybiEwfXJldHVybiExfWlmKGUuZmlyc3RTdGFja0NsZWFyaW5nJiZjLnN0YWNrQ2xlYXJpbmcpe2UuZmlyc3RTdGFja0NsZWFyaW5nPSExO3ItPWMubWluO3I+PTImJmMuc3RlbT9yJT0yOnI+MSYmd2FybigiRm91bmQgdG9vIG1hbnkgcGFyYW1ldGVycyBmb3Igc3RhY2stY2xlYXJpbmcgY29tbWFuZCIpO3I+MCYmKGUud2lkdGg9aVtyLTFdKX1pZigic3RhY2tEZWx0YSJpbiBjKXsic3RhY2tGbiJpbiBjJiZjLnN0YWNrRm4oaSxyKTtyKz1jLnN0YWNrRGVsdGF9ZWxzZShjLnN0YWNrQ2xlYXJpbmd8fGMucmVzZXRTdGFjaykmJihyPTApfX1vPHQubGVuZ3RoJiZ0LmZpbGwoMTQsbyk7ZS5zdGFja1NpemU9cjtyZXR1cm4hMH1wYXJzZUNoYXJTdHJpbmdzKHtjaGFyU3RyaW5nczplLGxvY2FsU3VickluZGV4OnQsZ2xvYmFsU3VickluZGV4OmEsZmRTZWxlY3Q6bixmZEFycmF5OnMscHJpdmF0ZURpY3Q6cn0pe2NvbnN0IGk9bmV3IE1hcCxvPVtdLGw9ZS5jb3VudDtmb3IobGV0IGY9MDtmPGw7ZisrKXtjb25zdCBsPWUuZ2V0KGYpLGM9e2NhbGxEZXB0aDowLHN0YWNrU2l6ZTowLHN0YWNrOltdLGhpbnRzOjAsZmlyc3RTdGFja0NsZWFyaW5nOiEwLHNlYWM6bnVsbCx3aWR0aDpudWxsLGhhc1ZTdGVtczohMX07bGV0IGg9ITAsdT1udWxsLG09cjtpZihuJiZzLmxlbmd0aCl7Y29uc3QgZT1uLmdldEZESW5kZXgoZik7aWYoLTE9PT1lKXt3YXJuKCJHbHlwaCBpbmRleCBpcyBub3QgaW4gZmQgc2VsZWN0LiIpO2g9ITF9aWYoZT49cy5sZW5ndGgpe3dhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpO2g9ITF9aWYoaCl7bT1zW2VdLnByaXZhdGVEaWN0O3U9bS5zdWJyc0luZGV4fX1lbHNlIHQmJih1PXQpO2gmJj10aGlzLnBhcnNlQ2hhclN0cmluZyhjLGwsdSxhKTtpZihudWxsIT09Yy53aWR0aCl7Y29uc3QgZT1tLmdldEJ5TmFtZSgibm9taW5hbFdpZHRoWCIpO29bZl09ZStjLndpZHRofWVsc2V7Y29uc3QgZT1tLmdldEJ5TmFtZSgiZGVmYXVsdFdpZHRoWCIpO29bZl09ZX1udWxsIT09Yy5zZWFjJiZpLnNldChmLGMuc2VhYyk7aHx8ZS5zZXQoZixuZXcgVWludDhBcnJheShbMTRdKSl9cmV0dXJue2NoYXJTdHJpbmdzOmUsc2VhY3M6aSx3aWR0aHM6b319ZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKXtjb25zdCB0PXRoaXMuY3JlYXRlRGljdChDRkZQcml2YXRlRGljdCxbXSxlLnN0cmluZ3MpO2Uuc2V0QnlLZXkoMTgsWzAsMF0pO2UucHJpdmF0ZURpY3Q9dH1wYXJzZVByaXZhdGVEaWN0KGUpe2lmKCFlLmhhc05hbWUoIlByaXZhdGUiKSl7dGhpcy5lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpO3JldHVybn1jb25zdCB0PWUuZ2V0QnlOYW1lKCJQcml2YXRlIik7aWYoIUFycmF5LmlzQXJyYXkodCl8fDIhPT10Lmxlbmd0aCl7ZS5yZW1vdmVCeU5hbWUoIlByaXZhdGUiKTtyZXR1cm59Y29uc3QgYT10WzBdLG49dFsxXTtpZigwPT09YXx8bj49dGhpcy5ieXRlcy5sZW5ndGgpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59aWYobithPnRoaXMuYnl0ZXMubGVuZ3RoKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQ0ZGIFByaXZhdGUgRElDVCBleHRlbmRzIHBhc3QgZW5kIG9mIGZvbnQiKTtjb25zdCBzPW4rYSxyPXRoaXMuYnl0ZXMuc3ViYXJyYXkobixzKSxpPXRoaXMucGFyc2VEaWN0KHIpLG89dGhpcy5jcmVhdGVEaWN0KENGRlByaXZhdGVEaWN0LGksZS5zdHJpbmdzKTtlLnByaXZhdGVEaWN0PW87Y29uc3QgbD1vLmdldEJ5TmFtZSgiQmx1ZVNjYWxlIiksZj1vLmdldEJ5TmFtZSgiQmx1ZVNoaWZ0IiksYz1vLmdldEJ5TmFtZSgiQmx1ZUZ1enoiKSxoPW8uZ2V0QnlOYW1lKCJFeHBhbnNpb25GYWN0b3IiKTtpZigwPT09bCYmMD09PWYmJjA9PT1jJiYwPT09aCl7by5zZXRCeU5hbWUoIkJsdWVTY2FsZSIsRG4pO28uc2V0QnlOYW1lKCJCbHVlU2hpZnQiLDcpO28uc2V0QnlOYW1lKCJCbHVlRnV6eiIsMSl9MD09PWgmJm8uc2V0QnlOYW1lKCJFeHBhbnNpb25GYWN0b3IiLC4wNik7aWYobD4wKXtsZXQgZT0wO2Zvcihjb25zdCB0IG9mW28uZ2V0QnlOYW1lKCJCbHVlVmFsdWVzIiksby5nZXRCeU5hbWUoIk90aGVyQmx1ZXMiKV0paWYodClmb3IobGV0IGE9MTthPHQubGVuZ3RoO2ErPTIpdFthXT5lJiYoZT10W2FdKTtpZihlPjApe2NvbnN0IHQ9MWU1LGE9LjUvZSxuPU1hdGhDbGFtcChsLGE8PURuP01hdGguY2VpbChhKnQpL3Q6LTEvMCxNYXRoLmZsb29yKHQvZSkvdCk7biE9PWwmJm8uc2V0QnlOYW1lKCJCbHVlU2NhbGUiLG4pfX1pZighby5nZXRCeU5hbWUoIlN1YnJzIikpcmV0dXJuO2NvbnN0IHU9by5nZXRCeU5hbWUoIlN1YnJzIiksbT1uK3U7aWYoMD09PXV8fG0+PXRoaXMuYnl0ZXMubGVuZ3RoKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IHA9dGhpcy5wYXJzZUluZGV4KG0pO28uc3VicnNJbmRleD1wLm9ian1wYXJzZUNoYXJzZXRzKGUsdCxhLG4pe2lmKDA9PT1lKXJldHVybiBuZXcgQ0ZGQ2hhcnNldCghMCxFbi5JU09fQURPQkUsRm4pO2lmKDE9PT1lKXJldHVybiBuZXcgQ0ZGQ2hhcnNldCghMCxFbi5FWFBFUlQsVG4pO2lmKDI9PT1lKXJldHVybiBuZXcgQ0ZGQ2hhcnNldCghMCxFbi5FWFBFUlRfU1VCU0VULFJuKTtjb25zdHtieXRlczpzfT10aGlzLHI9c1tlKytdLGk9W24/MDoiLm5vdGRlZiJdO2xldCBvLGwsZjt0LT0xO3N3aXRjaChyKXtjYXNlIDA6Zm9yKGY9MDtmPHQ7ZisrKXtvPXNbZSsrXTw8OHxzW2UrK107aS5wdXNoKG4/bzphLmdldChvKSl9YnJlYWs7Y2FzZSAxOmZvcig7aS5sZW5ndGg8PXQ7KXtvPXNbZSsrXTw8OHxzW2UrK107bD1zW2UrK107Zm9yKGY9MDtmPD1sO2YrKylpLnB1c2gobj9vKys6YS5nZXQobysrKSl9YnJlYWs7Y2FzZSAyOmZvcig7aS5sZW5ndGg8PXQ7KXtvPXNbZSsrXTw8OHxzW2UrK107bD1zW2UrK108PDh8c1tlKytdO2ZvcihmPTA7Zjw9bDtmKyspaS5wdXNoKG4/bysrOmEuZ2V0KG8rKykpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIGNoYXJzZXQgZm9ybWF0Iil9cmV0dXJuIG5ldyBDRkZDaGFyc2V0KCExLHIsaSl9cGFyc2VFbmNvZGluZyhlLHQsYSxuKXtjb25zdCBzPU9iamVjdC5jcmVhdGUobnVsbCkscj10aGlzLmJ5dGVzO2xldCBpLG8sbCxmPSExLGM9bnVsbDtpZigwPT09ZXx8MT09PWUpe2Y9ITA7aT1lO2NvbnN0IHQ9ZT9jbjptbjtmb3Iobz0wLGw9bi5sZW5ndGg7bzxsO28rKyl7Y29uc3QgZT10LmluZGV4T2YobltvXSk7LTEhPT1lJiYoc1tlXT1vKX19ZWxzZXtjb25zdCB0PWU7aT1yW2UrK107c3dpdGNoKDEyNyZpKXtjYXNlIDA6Y29uc3QgdD1yW2UrK107Zm9yKG89MTtvPD10O28rKylzW3JbZSsrXV09bzticmVhaztjYXNlIDE6Y29uc3QgYT1yW2UrK107bGV0IG49MTtmb3Iobz0wO288YTtvKyspe2NvbnN0IHQ9cltlKytdLGE9cltlKytdO2ZvcihsZXQgZT10O2U8PXQrYTtlKyspc1tlXT1uKyt9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gZW5jb2RpbmcgZm9ybWF0OiAke2l9IGluIENGRmApfWNvbnN0IGw9ZTtpZigxMjgmaSl7clt0XSY9MTI3OyFmdW5jdGlvbiByZWFkU3VwcGxlbWVudCgpe2NvbnN0IHQ9cltlKytdO2ZvcihvPTA7bzx0O28rKyl7Y29uc3QgdD1yW2UrK10saT0ocltlKytdPDw4KSsoMjU1JnJbZSsrXSk7c1t0XT1uLmluZGV4T2YoYS5nZXQoaSkpfX0oKX1jPXIuc3ViYXJyYXkodCxsKX1pJj0xMjc7cmV0dXJuIG5ldyBDRkZFbmNvZGluZyhmLGkscyxjKX1wYXJzZUZEU2VsZWN0KGUsdCl7Y29uc3QgYT10aGlzLmJ5dGVzLG49YVtlKytdLHM9W107bGV0IHI7c3dpdGNoKG4pe2Nhc2UgMDpmb3Iocj0wO3I8dDsrK3Ipe2NvbnN0IHQ9YVtlKytdO3MucHVzaCh0KX1icmVhaztjYXNlIDM6Y29uc3QgaT1hW2UrK108PDh8YVtlKytdO2ZvcihyPTA7cjxpOysrcil7bGV0IG49YVtlKytdPDw4fGFbZSsrXTtpZigwPT09ciYmMCE9PW4pe3dhcm4oInBhcnNlRkRTZWxlY3Q6IFRoZSBmaXJzdCByYW5nZSBtdXN0IGhhdmUgYSBmaXJzdCBHSUQgb2YgMCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4iKTtuPTB9Y29uc3QgaT1hW2UrK10sbz1hW2VdPDw4fGFbZSsxXTtpZihvLW4+dC1zLmxlbmd0aCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInBhcnNlRkRTZWxlY3Q6IEludmFsaWQgZm9udCBkYXRhLiIpO2ZvcihsZXQgZT1uO2U8bzsrK2Upcy5wdXNoKGkpfWUrPTI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYHBhcnNlRkRTZWxlY3Q6IFVua25vd24gZm9ybWF0ICIke259Ii5gKX1pZihzLmxlbmd0aCE9PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJwYXJzZUZEU2VsZWN0OiBJbnZhbGlkIGZvbnQgZGF0YS4iKTtyZXR1cm4gbmV3IENGRkZEU2VsZWN0KG4scyl9fWNsYXNzIENGRntoZWFkZXI9bnVsbDtuYW1lcz1bXTt0b3BEaWN0PW51bGw7c3RyaW5ncz1uZXcgQ0ZGU3RyaW5ncztnbG9iYWxTdWJySW5kZXg9bnVsbDtlbmNvZGluZz1udWxsO2NoYXJzZXQ9bnVsbDtjaGFyU3RyaW5ncz1udWxsO2ZkQXJyYXk9W107ZmRTZWxlY3Q9bnVsbDtpc0NJREZvbnQ9ITE7Y2hhclN0cmluZ0NvdW50PTA7Y29uc3RydWN0b3IoZT0wKXt0aGlzLnJhd0ZpbGVMZW5ndGg9ZX1kdXBsaWNhdGVGaXJzdEdseXBoKCl7aWYodGhpcy5jaGFyU3RyaW5ncy5jb3VudD49NjU1MzUpe3dhcm4oIk5vdCBlbm91Z2ggc3BhY2UgaW4gY2hhcnN0cmluZ3MgdG8gZHVwbGljYXRlIGZpcnN0IGdseXBoLiIpO3JldHVybn1jb25zdCBlPXRoaXMuY2hhclN0cmluZ3MuZ2V0KDApO3RoaXMuY2hhclN0cmluZ3MuYWRkKGUpO3RoaXMuaXNDSURGb250JiZ0aGlzLmZkU2VsZWN0LmZkU2VsZWN0LnB1c2godGhpcy5mZFNlbGVjdC5mZFNlbGVjdFswXSl9aGFzR2x5cGhJZChlKXtpZihlPDB8fGU+PXRoaXMuY2hhclN0cmluZ3MuY291bnQpcmV0dXJuITE7cmV0dXJuIHRoaXMuY2hhclN0cmluZ3MuZ2V0KGUpLmxlbmd0aD4wfX1jbGFzcyBDRkZIZWFkZXJ7Y29uc3RydWN0b3IoZSx0LGEsbil7dGhpcy5tYWpvcj1lO3RoaXMubWlub3I9dDt0aGlzLmhkclNpemU9YTt0aGlzLm9mZlNpemU9bn19Y2xhc3MgQ0ZGU3RyaW5nc3tzdHJpbmdzPVtdO2dldChlKXtyZXR1cm4gZT49MCYmZTw9MzkwP09uW2VdOmUtQm48PXRoaXMuc3RyaW5ncy5sZW5ndGg/dGhpcy5zdHJpbmdzW2UtQm5dOk9uWzBdfWdldFNJRChlKXtsZXQgdD1Pbi5pbmRleE9mKGUpO2lmKC0xIT09dClyZXR1cm4gdDt0PXRoaXMuc3RyaW5ncy5pbmRleE9mKGUpO3JldHVybi0xIT09dD90K0JuOi0xfWFkZChlKXt0aGlzLnN0cmluZ3MucHVzaChlKX1nZXQgY291bnQoKXtyZXR1cm4gdGhpcy5zdHJpbmdzLmxlbmd0aH19Y2xhc3MgQ0ZGSW5kZXh7b2JqZWN0cz1bXTtsZW5ndGg9MDthZGQoZSl7dGhpcy5sZW5ndGgrPWUubGVuZ3RoO3RoaXMub2JqZWN0cy5wdXNoKGUpfXNldChlLHQpe3RoaXMubGVuZ3RoKz10Lmxlbmd0aC10aGlzLm9iamVjdHNbZV0ubGVuZ3RoO3RoaXMub2JqZWN0c1tlXT10fWdldChlKXtyZXR1cm4gdGhpcy5vYmplY3RzW2VdfWdldCBjb3VudCgpe3JldHVybiB0aGlzLm9iamVjdHMubGVuZ3RofX1jbGFzcyBDRkZEaWN0e3ZhbHVlcz1uZXcgTWFwO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5rZXlUb05hbWVNYXA9ZS5rZXlUb05hbWVNYXA7dGhpcy5uYW1lVG9LZXlNYXA9ZS5uYW1lVG9LZXlNYXA7dGhpcy5kZWZhdWx0cz1lLmRlZmF1bHRzO3RoaXMudHlwZXM9ZS50eXBlczt0aGlzLm9wY29kZXM9ZS5vcGNvZGVzO3RoaXMub3JkZXI9ZS5vcmRlcjt0aGlzLnN0cmluZ3M9dH1zZXRCeUtleShlLHQpe2lmKCF0aGlzLmtleVRvTmFtZU1hcC5oYXMoZSkpcmV0dXJuITE7aWYoMD09PXQubGVuZ3RoKXJldHVybiEwO2Zvcihjb25zdCBhIG9mIHQpaWYoaXNOYU4oYSkpe3dhcm4oYEludmFsaWQgQ0ZGRGljdCB2YWx1ZTogIiR7dH0iIGZvciBrZXkgIiR7ZX0iLmApO3JldHVybiEwfWNvbnN0IGE9dGhpcy50eXBlcy5nZXQoZSk7Im51bSIhPT1hJiYic2lkIiE9PWEmJiJvZmZzZXQiIT09YXx8KHQ9dFswXSk7dGhpcy52YWx1ZXMuc2V0KGUsdCk7cmV0dXJuITB9c2V0QnlOYW1lKGUsdCl7aWYoIXRoaXMubmFtZVRvS2V5TWFwLmhhcyhlKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgZGljdGlvbmFyeSBuYW1lICIke2V9ImApO2NvbnN0IGE9dGhpcy5uYW1lVG9LZXlNYXAuZ2V0KGUpO3RoaXMudmFsdWVzLnNldChhLHQpfWhhc05hbWUoZSl7Y29uc3QgdD10aGlzLm5hbWVUb0tleU1hcC5nZXQoZSk7cmV0dXJuIHRoaXMudmFsdWVzLmhhcyh0KX1nZXRCeU5hbWUoZSl7aWYoIXRoaXMubmFtZVRvS2V5TWFwLmhhcyhlKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgZGljdGlvbmFyeSBuYW1lICR7ZX0iYCk7Y29uc3QgdD10aGlzLm5hbWVUb0tleU1hcC5nZXQoZSk7cmV0dXJuIHRoaXMudmFsdWVzLmhhcyh0KT90aGlzLnZhbHVlcy5nZXQodCk6dGhpcy5kZWZhdWx0cy5nZXQodCl9cmVtb3ZlQnlOYW1lKGUpe2NvbnN0IHQ9dGhpcy5uYW1lVG9LZXlNYXAuZ2V0KGUpO3RoaXMudmFsdWVzLmRlbGV0ZSh0KX1zdGF0aWMgY3JlYXRlVGFibGVzKGUpe2NvbnN0IHQ9e2tleVRvTmFtZU1hcDpuZXcgTWFwLG5hbWVUb0tleU1hcDpuZXcgTWFwLGRlZmF1bHRzOm5ldyBNYXAsdHlwZXM6bmV3IE1hcCxvcGNvZGVzOm5ldyBNYXAsb3JkZXI6W119O2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9QXJyYXkuaXNBcnJheShhWzBdKT8oYVswXVswXTw8OCkrYVswXVsxXTphWzBdO3Qua2V5VG9OYW1lTWFwLnNldChlLGFbMV0pO3QubmFtZVRvS2V5TWFwLnNldChhWzFdLGUpO3QudHlwZXMuc2V0KGUsYVsyXSk7dC5kZWZhdWx0cy5zZXQoZSxhWzNdKTt0Lm9wY29kZXMuc2V0KGUsQXJyYXkuaXNBcnJheShhWzBdKT9hWzBdOlthWzBdXSk7dC5vcmRlci5wdXNoKGUpfXJldHVybiB0fX1jb25zdCBObj1bW1sxMiwzMF0sIlJPUyIsWyJzaWQiLCJzaWQiLCJudW0iXSxudWxsXSxbWzEyLDIwXSwiU3ludGhldGljQmFzZSIsIm51bSIsbnVsbF0sWzAsInZlcnNpb24iLCJzaWQiLG51bGxdLFsxLCJOb3RpY2UiLCJzaWQiLG51bGxdLFtbMTIsMF0sIkNvcHlyaWdodCIsInNpZCIsbnVsbF0sWzIsIkZ1bGxOYW1lIiwic2lkIixudWxsXSxbMywiRmFtaWx5TmFtZSIsInNpZCIsbnVsbF0sWzQsIldlaWdodCIsInNpZCIsbnVsbF0sW1sxMiwxXSwiaXNGaXhlZFBpdGNoIiwibnVtIiwwXSxbWzEyLDJdLCJJdGFsaWNBbmdsZSIsIm51bSIsMF0sW1sxMiwzXSwiVW5kZXJsaW5lUG9zaXRpb24iLCJudW0iLC0xMDBdLFtbMTIsNF0sIlVuZGVybGluZVRoaWNrbmVzcyIsIm51bSIsNTBdLFtbMTIsNV0sIlBhaW50VHlwZSIsIm51bSIsMF0sW1sxMiw2XSwiQ2hhcnN0cmluZ1R5cGUiLCJudW0iLDJdLFtbMTIsN10sIkZvbnRNYXRyaXgiLFsibnVtIiwibnVtIiwibnVtIiwibnVtIiwibnVtIiwibnVtIl0sWy4wMDEsMCwwLC4wMDEsMCwwXV0sWzEzLCJVbmlxdWVJRCIsIm51bSIsbnVsbF0sWzUsIkZvbnRCQm94IixbIm51bSIsIm51bSIsIm51bSIsIm51bSJdLFswLDAsMCwwXV0sW1sxMiw4XSwiU3Ryb2tlV2lkdGgiLCJudW0iLDBdLFsxNCwiWFVJRCIsImFycmF5IixudWxsXSxbMTUsImNoYXJzZXQiLCJvZmZzZXQiLDBdLFsxNiwiRW5jb2RpbmciLCJvZmZzZXQiLDBdLFsxNywiQ2hhclN0cmluZ3MiLCJvZmZzZXQiLDBdLFsxOCwiUHJpdmF0ZSIsWyJvZmZzZXQiLCJvZmZzZXQiXSxudWxsXSxbWzEyLDIxXSwiUG9zdFNjcmlwdCIsInNpZCIsbnVsbF0sW1sxMiwyMl0sIkJhc2VGb250TmFtZSIsInNpZCIsbnVsbF0sW1sxMiwyM10sIkJhc2VGb250QmxlbmQiLCJkZWx0YSIsbnVsbF0sW1sxMiwzMV0sIkNJREZvbnRWZXJzaW9uIiwibnVtIiwwXSxbWzEyLDMyXSwiQ0lERm9udFJldmlzaW9uIiwibnVtIiwwXSxbWzEyLDMzXSwiQ0lERm9udFR5cGUiLCJudW0iLDBdLFtbMTIsMzRdLCJDSURDb3VudCIsIm51bSIsODcyMF0sW1sxMiwzNV0sIlVJREJhc2UiLCJudW0iLG51bGxdLFtbMTIsMzddLCJGRFNlbGVjdCIsIm9mZnNldCIsbnVsbF0sW1sxMiwzNl0sIkZEQXJyYXkiLCJvZmZzZXQiLG51bGxdLFtbMTIsMzhdLCJGb250TmFtZSIsInNpZCIsbnVsbF1dO2NsYXNzIENGRlRvcERpY3QgZXh0ZW5kcyBDRkZEaWN0e3N0YXRpYyBnZXQgdGFibGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ0YWJsZXMiLHRoaXMuY3JlYXRlVGFibGVzKE5uKSl9cHJpdmF0ZURpY3Q9bnVsbDtjb25zdHJ1Y3RvcihlKXtzdXBlcihDRkZUb3BEaWN0LnRhYmxlcyxlKX19Y29uc3QgUG49W1s2LCJCbHVlVmFsdWVzIiwiZGVsdGEiLG51bGxdLFs3LCJPdGhlckJsdWVzIiwiZGVsdGEiLG51bGxdLFs4LCJGYW1pbHlCbHVlcyIsImRlbHRhIixudWxsXSxbOSwiRmFtaWx5T3RoZXJCbHVlcyIsImRlbHRhIixudWxsXSxbWzEyLDldLCJCbHVlU2NhbGUiLCJudW0iLERuXSxbWzEyLDEwXSwiQmx1ZVNoaWZ0IiwibnVtIiw3XSxbWzEyLDExXSwiQmx1ZUZ1enoiLCJudW0iLDFdLFsxMCwiU3RkSFciLCJudW0iLG51bGxdLFsxMSwiU3RkVlciLCJudW0iLG51bGxdLFtbMTIsMTJdLCJTdGVtU25hcEgiLCJkZWx0YSIsbnVsbF0sW1sxMiwxM10sIlN0ZW1TbmFwViIsImRlbHRhIixudWxsXSxbWzEyLDE0XSwiRm9yY2VCb2xkIiwibnVtIiwwXSxbWzEyLDE3XSwiTGFuZ3VhZ2VHcm91cCIsIm51bSIsMF0sW1sxMiwxOF0sIkV4cGFuc2lvbkZhY3RvciIsIm51bSIsLjA2XSxbWzEyLDE5XSwiaW5pdGlhbFJhbmRvbVNlZWQiLCJudW0iLDBdLFsyMCwiZGVmYXVsdFdpZHRoWCIsIm51bSIsMF0sWzIxLCJub21pbmFsV2lkdGhYIiwibnVtIiwwXSxbMTksIlN1YnJzIiwib2Zmc2V0IixudWxsXV07Y2xhc3MgQ0ZGUHJpdmF0ZURpY3QgZXh0ZW5kcyBDRkZEaWN0e3N0YXRpYyBnZXQgdGFibGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ0YWJsZXMiLHRoaXMuY3JlYXRlVGFibGVzKFBuKSl9c3VicnNJbmRleD1udWxsO2NvbnN0cnVjdG9yKGUpe3N1cGVyKENGRlByaXZhdGVEaWN0LnRhYmxlcyxlKX19Y29uc3QgRW49e0lTT19BRE9CRTowLEVYUEVSVDoxLEVYUEVSVF9TVUJTRVQ6Mn07Y2xhc3MgQ0ZGQ2hhcnNldHtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmNoYXJzZXQ9YX19Y2xhc3MgQ0ZGRW5jb2Rpbmd7Y29uc3RydWN0b3IoZSx0LGEsbil7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmVuY29kaW5nPWE7dGhpcy5yYXc9bn19Y2xhc3MgQ0ZGRkRTZWxlY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZvcm1hdD1lO3RoaXMuZmRTZWxlY3Q9dH1nZXRGREluZGV4KGUpe3JldHVybiBlPDB8fGU+PXRoaXMuZmRTZWxlY3QubGVuZ3RoPy0xOnRoaXMuZmRTZWxlY3RbZV19fWNsYXNzIENGRk9mZnNldFRyYWNrZXJ7I2RlPW5ldyBNYXA7aXNUcmFja2luZyhlKXtyZXR1cm4gdGhpcy4jZGUuaGFzKGUpfXRyYWNrKGUsdCl7aWYodGhpcy4jZGUuaGFzKGUpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQWxyZWFkeSB0cmFja2luZyBsb2NhdGlvbiBvZiAke2V9YCk7dGhpcy4jZGUuc2V0KGUsdCl9b2Zmc2V0KGUpe2Zvcihjb25zdFt0LGFdb2YgdGhpcy4jZGUpdGhpcy4jZGUuc2V0KHQsYStlKX1zZXRFbnRyeUxvY2F0aW9uKGUsdCxhKXtpZighdGhpcy4jZGUuaGFzKGUpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgTm90IHRyYWNraW5nIGxvY2F0aW9uIG9mICR7ZX1gKTtjb25zdCBuPWEuZGF0YSxzPXRoaXMuI2RlLmdldChlKTtmb3IobGV0IGU9MCxhPXQubGVuZ3RoO2U8YTsrK2Upe2NvbnN0IGE9NSplK3Mscj1hKzEsaT1hKzIsbz1hKzMsbD1hKzQ7aWYoMjkhPT1uW2FdfHwwIT09bltyXXx8MCE9PW5baV18fDAhPT1uW29dfHwwIT09bltsXSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIndyaXRpbmcgdG8gYW4gb2Zmc2V0IHRoYXQgaXMgbm90IGVtcHR5Iik7Y29uc3QgZj10W2VdO25bYV09Mjk7bltyXT1mPj4yNCYyNTU7bltpXT1mPj4xNiYyNTU7bltvXT1mPj44JjI1NTtuW2xdPTI1NSZmfX19Y2xhc3MgQ0ZGQ29tcGlsZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5jZmY9ZX1jb21waWxlKCl7Y29uc3QgZT10aGlzLmNmZix0PW5ldyBEYXRhQnVpbGRlcih7bWluTGVuZ3RoOmUucmF3RmlsZUxlbmd0aH0pLGE9dGhpcy5jb21waWxlSGVhZGVyKGUuaGVhZGVyKTt0LnNldEFycmF5KGEpO2NvbnN0IG49dGhpcy5jb21waWxlTmFtZUluZGV4KGUubmFtZXMpO3Quc2V0QXJyYXkobik7aWYoZS5pc0NJREZvbnQmJmUudG9wRGljdC5oYXNOYW1lKCJGb250TWF0cml4Iikpe2NvbnN0IHQ9ZS50b3BEaWN0LmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpO2UudG9wRGljdC5yZW1vdmVCeU5hbWUoIkZvbnRNYXRyaXgiKTtmb3IoY29uc3QgYSBvZiBlLmZkQXJyYXkpe2xldCBlPXQuc2xpY2UoMCk7YS5oYXNOYW1lKCJGb250TWF0cml4IikmJihlPVV0aWwudHJhbnNmb3JtKGUsYS5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKSkpO2Euc2V0QnlOYW1lKCJGb250TWF0cml4IixlKX19Y29uc3Qgcz1lLnRvcERpY3QuZ2V0QnlOYW1lKCJYVUlEIik7cz8ubGVuZ3RoPjE2JiZlLnRvcERpY3QucmVtb3ZlQnlOYW1lKCJYVUlEIik7ZS50b3BEaWN0LnNldEJ5TmFtZSgiY2hhcnNldCIsMCk7bGV0IHI9dGhpcy5jb21waWxlVG9wRGljdHMoW2UudG9wRGljdF0sdC5sZW5ndGgsZS5pc0NJREZvbnQpO3Quc2V0QXJyYXkoci5vdXRwdXQpO2NvbnN0IGk9ci50cmFja2Vyc1swXSxvPXRoaXMuY29tcGlsZVN0cmluZ0luZGV4KGUuc3RyaW5ncy5zdHJpbmdzKTt0LnNldEFycmF5KG8pO2NvbnN0IGw9dGhpcy5jb21waWxlSW5kZXgoZS5nbG9iYWxTdWJySW5kZXgpO3Quc2V0QXJyYXkobCk7aWYoZS5lbmNvZGluZyYmZS50b3BEaWN0Lmhhc05hbWUoIkVuY29kaW5nIikpaWYoZS5lbmNvZGluZy5wcmVkZWZpbmVkKWkuc2V0RW50cnlMb2NhdGlvbigiRW5jb2RpbmciLFtlLmVuY29kaW5nLmZvcm1hdF0sdCk7ZWxzZXtjb25zdCBhPXRoaXMuY29tcGlsZUVuY29kaW5nKGUuZW5jb2RpbmcpO2kuc2V0RW50cnlMb2NhdGlvbigiRW5jb2RpbmciLFt0Lmxlbmd0aF0sdCk7dC5zZXRBcnJheShhKX1jb25zdCBmPXRoaXMuY29tcGlsZUNoYXJzZXQoZS5jaGFyc2V0LGUuY2hhclN0cmluZ3MuY291bnQsZS5zdHJpbmdzLGUuaXNDSURGb250KTtpLnNldEVudHJ5TG9jYXRpb24oImNoYXJzZXQiLFt0Lmxlbmd0aF0sdCk7dC5zZXRBcnJheShmKTtjb25zdCBjPXRoaXMuY29tcGlsZUNoYXJTdHJpbmdzKGUuY2hhclN0cmluZ3MpO2kuc2V0RW50cnlMb2NhdGlvbigiQ2hhclN0cmluZ3MiLFt0Lmxlbmd0aF0sdCk7dC5zZXRBcnJheShjKTtpZihlLmlzQ0lERm9udCl7aS5zZXRFbnRyeUxvY2F0aW9uKCJGRFNlbGVjdCIsW3QubGVuZ3RoXSx0KTtjb25zdCBhPXRoaXMuY29tcGlsZUZEU2VsZWN0KGUuZmRTZWxlY3QpO3Quc2V0QXJyYXkoYSk7cj10aGlzLmNvbXBpbGVUb3BEaWN0cyhlLmZkQXJyYXksdC5sZW5ndGgsITApO2kuc2V0RW50cnlMb2NhdGlvbigiRkRBcnJheSIsW3QubGVuZ3RoXSx0KTt0LnNldEFycmF5KHIub3V0cHV0KTtjb25zdCBuPXIudHJhY2tlcnM7dGhpcy5jb21waWxlUHJpdmF0ZURpY3RzKGUuZmRBcnJheSxuLHQpfXRoaXMuY29tcGlsZVByaXZhdGVEaWN0cyhbZS50b3BEaWN0XSxbaV0sdCk7dC5zZXRBcnJheShbMF0pO3JldHVybiB0LmRhdGF9ZW5jb2RlTnVtYmVyKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpP3RoaXMuZW5jb2RlSW50ZWdlcihlKTp0aGlzLmVuY29kZUZsb2F0KGUpfXN0YXRpYyBnZXQgRW5jb2RlRmxvYXRSZWdFeHAoKXtyZXR1cm4gc2hhZG93KHRoaXMsIkVuY29kZUZsb2F0UmVnRXhwIiwvXC4oXGQqPykoPzo5ezUsMjB9fDB7NSwyMH0pXGR7MCwyfSg/OmUoLispfCQpLyl9ZW5jb2RlRmxvYXQoZSl7bGV0IHQ9ZS50b1N0cmluZygpO2NvbnN0IGE9Q0ZGQ29tcGlsZXIuRW5jb2RlRmxvYXRSZWdFeHAuZXhlYyh0KTtpZihhKXtjb25zdCBuPXBhcnNlRmxvYXQoIjFlIisoKGFbMl0/K2FbMl06MCkrYVsxXS5sZW5ndGgpKTt0PShNYXRoLnJvdW5kKGUqbikvbikudG9TdHJpbmcoKX1sZXQgbixzLHI9IiI7Zm9yKG49MCxzPXQubGVuZ3RoO248czsrK24pe2NvbnN0IGU9dFtuXTtyKz0iZSI9PT1lPyItIj09PXRbKytuXT8iYyI6ImIiOiIuIj09PWU/ImEiOiItIj09PWU/ImUiOmV9cis9MSZyLmxlbmd0aD8iZiI6ImZmIjtjb25zdCBpPVszMF07Zm9yKG49MCxzPXIubGVuZ3RoO248cztuKz0yKWkucHVzaChwYXJzZUludChyLnN1YnN0cmluZyhuLG4rMiksMTYpKTtyZXR1cm4gaX1lbmNvZGVJbnRlZ2VyKGUpe2xldCB0O3Q9ZT49LTEwNyYmZTw9MTA3P1tlKzEzOV06ZT49MTA4JiZlPD0xMTMxP1syNDcrKChlLT0xMDgpPj44KSwyNTUmZV06ZT49LTExMzEmJmU8PS0xMDg/WzI1MSsoKGU9LWUtMTA4KT4+OCksMjU1JmVdOmU+PS0zMjc2OCYmZTw9MzI3Njc/WzI4LGU+PjgmMjU1LDI1NSZlXTpbMjksZT4+MjQmMjU1LGU+PjE2JjI1NSxlPj44JjI1NSwyNTUmZV07cmV0dXJuIHR9Y29tcGlsZUhlYWRlcihlKXtyZXR1cm5bZS5tYWpvcixlLm1pbm9yLDQsZS5vZmZTaXplXX1jb21waWxlTmFtZUluZGV4KGUpe2NvbnN0IHQ9bmV3IENGRkluZGV4O2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9TWF0aC5taW4oYS5sZW5ndGgsMTI3KTtsZXQgbj1uZXcgQXJyYXkoZSk7Zm9yKGxldCB0PTA7dDxlO3QrKyl7bGV0IGU9YVt0XTsoZTwiISJ8fGU+In4ifHwiWyI9PT1lfHwiXSI9PT1lfHwiKCI9PT1lfHwiKSI9PT1lfHwieyI9PT1lfHwifSI9PT1lfHwiPCI9PT1lfHwiPiI9PT1lfHwiLyI9PT1lfHwiJSI9PT1lKSYmKGU9Il8iKTtuW3RdPWV9bj1uLmpvaW4oIiIpOyIiPT09biYmKG49IkJhZF9Gb250X05hbWUiKTt0LmFkZChzdHJpbmdUb0J5dGVzKG4pKX1yZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZVRvcERpY3RzKGUsdCxhKXtjb25zdCBuPVtdO2xldCBzPW5ldyBDRkZJbmRleDtmb3IoY29uc3QgciBvZiBlKXtpZihhKXtyLnJlbW92ZUJ5TmFtZSgiQ0lERm9udFZlcnNpb24iKTtyLnJlbW92ZUJ5TmFtZSgiQ0lERm9udFJldmlzaW9uIik7ci5yZW1vdmVCeU5hbWUoIkNJREZvbnRUeXBlIik7ci5yZW1vdmVCeU5hbWUoIkNJRENvdW50Iik7ci5yZW1vdmVCeU5hbWUoIlVJREJhc2UiKX1jb25zdCBlPW5ldyBDRkZPZmZzZXRUcmFja2VyLGk9dGhpcy5jb21waWxlRGljdChyLGUpO24ucHVzaChlKTtzLmFkZChpKTtlLm9mZnNldCh0KX1zPXRoaXMuY29tcGlsZUluZGV4KHMsbik7cmV0dXJue3RyYWNrZXJzOm4sb3V0cHV0OnN9fWNvbXBpbGVQcml2YXRlRGljdHMoZSx0LGEpe2ZvcihsZXQgbj0wLHM9ZS5sZW5ndGg7bjxzOysrbil7Y29uc3Qgcz1lW25dLHI9cy5wcml2YXRlRGljdDtpZighcnx8IXMuaGFzTmFtZSgiUHJpdmF0ZSIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVGhlcmUgbXVzdCBiZSBhIHByaXZhdGUgZGljdGlvbmFyeS4iKTtjb25zdCBpPW5ldyBDRkZPZmZzZXRUcmFja2VyLG89dGhpcy5jb21waWxlRGljdChyLGkpO2xldCBsPWEubGVuZ3RoO2kub2Zmc2V0KGwpO28ubGVuZ3RofHwobD0wKTt0W25dLnNldEVudHJ5TG9jYXRpb24oIlByaXZhdGUiLFtvLmxlbmd0aCxsXSxhKTthLnNldEFycmF5KG8pO2lmKHIuc3VicnNJbmRleCYmci5oYXNOYW1lKCJTdWJycyIpKXtjb25zdCBlPXRoaXMuY29tcGlsZUluZGV4KHIuc3VicnNJbmRleCk7aS5zZXRFbnRyeUxvY2F0aW9uKCJTdWJycyIsW28ubGVuZ3RoXSxhKTthLnNldEFycmF5KGUpfX19Y29tcGlsZURpY3QoZSx0KXtjb25zdCBhPVtdO2Zvcihjb25zdCBuIG9mIGUub3JkZXIpe2lmKCFlLnZhbHVlcy5oYXMobikpY29udGludWU7bGV0IHM9ZS52YWx1ZXMuZ2V0KG4pLHI9ZS50eXBlcy5nZXQobik7QXJyYXkuaXNBcnJheShyKXx8KHI9W3JdKTtBcnJheS5pc0FycmF5KHMpfHwocz1bc10pO2lmKDAhPT1zLmxlbmd0aCl7Zm9yKGxldCBpPTAsbz1yLmxlbmd0aDtpPG87KytpKXtjb25zdCBvPXJbaV0sbD1zW2ldO3N3aXRjaChvKXtjYXNlIm51bSI6Y2FzZSJzaWQiOmEucHVzaCguLi50aGlzLmVuY29kZU51bWJlcihsKSk7YnJlYWs7Y2FzZSJvZmZzZXQiOmNvbnN0IHI9ZS5rZXlUb05hbWVNYXAuZ2V0KG4pO3QuaXNUcmFja2luZyhyKXx8dC50cmFjayhyLGEubGVuZ3RoKTthLnB1c2goMjksMCwwLDAsMCk7YnJlYWs7Y2FzZSJhcnJheSI6Y2FzZSJkZWx0YSI6YS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGwpKTtmb3IobGV0IGU9MSx0PXMubGVuZ3RoO2U8dDsrK2UpYS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKHNbZV0pKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBkYXRhIHR5cGUgb2YgJHtvfWApfX1hLnB1c2goLi4uZS5vcGNvZGVzLmdldChuKSl9fXJldHVybiBhfWNvbXBpbGVTdHJpbmdJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IoY29uc3QgYSBvZiBlKXQuYWRkKHN0cmluZ1RvQnl0ZXMoYSkpO3JldHVybiB0aGlzLmNvbXBpbGVJbmRleCh0KX1jb21waWxlQ2hhclN0cmluZ3MoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGxldCBhPTA7YTxlLmNvdW50O2ErKyl7Y29uc3Qgbj1lLmdldChhKTswIT09bi5sZW5ndGg/dC5hZGQobik6dC5hZGQobmV3IFVpbnQ4QXJyYXkoWzEzOSwxNF0pKX1yZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUNoYXJzZXQoZSx0LGEsbil7bGV0IHM7Y29uc3Qgcj10LTE7aWYobil7Y29uc3QgZT1yLTE7cz1uZXcgVWludDhBcnJheShbMiwwLDEsZT4+OCYyNTUsMjU1JmVdKX1lbHNle3M9bmV3IFVpbnQ4QXJyYXkoMSsyKnIpO2xldCB0PTA7Y29uc3Qgbj1lLmNoYXJzZXQubGVuZ3RoO2xldCBpPSExO2ZvcihsZXQgcj0xO3I8cy5sZW5ndGg7cis9Mil7bGV0IG89MDtpZih0PG4pe2NvbnN0IG49ZS5jaGFyc2V0W3QrK107bz1hLmdldFNJRChuKTtpZigtMT09PW8pe289MDtpZighaSl7aT0hMDt3YXJuKGBDb3VsZG4ndCBmaW5kICR7bn0gaW4gQ0ZGIHN0cmluZ3NgKX19fXNbcl09bz4+OCYyNTU7c1tyKzFdPTI1NSZvfX1yZXR1cm4gc31jb21waWxlRW5jb2RpbmcoZSl7cmV0dXJuIGUucmF3fWNvbXBpbGVGRFNlbGVjdChlKXtjb25zdCB0PWUuZm9ybWF0O2xldCBhLG47c3dpdGNoKHQpe2Nhc2UgMDphPW5ldyBVaW50OEFycmF5KDErZS5mZFNlbGVjdC5sZW5ndGgpO2FbMF09dDthLnNldChlLmZkU2VsZWN0LDEpO2JyZWFrO2Nhc2UgMzpjb25zdCBzPTA7bGV0IHI9ZS5mZFNlbGVjdFswXTtjb25zdCBpPVt0LDAsMCxzPj44JjI1NSwyNTUmcyxyXTtmb3Iobj0xO248ZS5mZFNlbGVjdC5sZW5ndGg7bisrKXtjb25zdCB0PWUuZmRTZWxlY3Rbbl07aWYodCE9PXIpe2kucHVzaChuPj44JjI1NSwyNTUmbix0KTtyPXR9fWNvbnN0IG89KGkubGVuZ3RoLTMpLzM7aVsxXT1vPj44JjI1NTtpWzJdPTI1NSZvO2kucHVzaChuPj44JjI1NSwyNTUmbik7YT1uZXcgVWludDhBcnJheShpKX1yZXR1cm4gYX1jb21waWxlSW5kZXgoZSx0PVtdKXtjb25zdCBhPWUub2JqZWN0cyxuPWEubGVuZ3RoO2lmKDA9PT1uKXJldHVybiBuZXcgVWludDhBcnJheSgyKTtsZXQgcyxyLGk9MTtmb3Iocz0wO3M8bjsrK3MpaSs9YVtzXS5sZW5ndGg7cj1pPDI1Nj8xOmk8NjU1MzY/MjppPDE2Nzc3MjE2PzM6NDtjb25zdCBvPW5ldyBVaW50OEFycmF5KDIrcioobisxKStpKTtsZXQgbD0wO29bbCsrXT1uPj44JjI1NTtvW2wrK109MjU1Jm47b1tsKytdPXI7bGV0IGY9MTtmb3Iocz0wO3M8bisxO3MrKyl7aWYoMT09PXIpb1tsKytdPTI1NSZmO2Vsc2UgaWYoMj09PXIpe29bbCsrXT1mPj44JjI1NTtvW2wrK109MjU1JmZ9ZWxzZSBpZigzPT09cil7b1tsKytdPWY+PjE2JjI1NTtvW2wrK109Zj4+OCYyNTU7b1tsKytdPTI1NSZmfWVsc2V7b1tsKytdPWY+Pj4yNCYyNTU7b1tsKytdPWY+PjE2JjI1NTtvW2wrK109Zj4+OCYyNTU7b1tsKytdPTI1NSZmfWFbc10mJihmKz1hW3NdLmxlbmd0aCl9Zm9yKHM9MDtzPG47cysrKXt0W3NdPy5vZmZzZXQobCk7by5zZXQoYVtzXSxsKTtsKz1hW3NdLmxlbmd0aH1yZXR1cm4gb319Y29uc3QgX249Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2VbIlRpbWVzLVJvbWFuIl09IlRpbWVzLVJvbWFuIjtlLkhlbHZldGljYT0iSGVsdmV0aWNhIjtlLkNvdXJpZXI9IkNvdXJpZXIiO2UuU3ltYm9sPSJTeW1ib2wiO2VbIlRpbWVzLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNvdXJpZXItQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2UuWmFwZkRpbmdiYXRzPSJaYXBmRGluZ2JhdHMiO2VbIlRpbWVzLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2VbIkhlbHZldGljYS1PYmxpcXVlIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJDb3VyaWVyLU9ibGlxdWUiXT0iQ291cmllci1PYmxpcXVlIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZS5BcmlhbE5hcnJvdz0iSGVsdmV0aWNhIjtlWyJBcmlhbE5hcnJvdy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbE5hcnJvdy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWxOYXJyb3ctSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsQmxhY2s9IkhlbHZldGljYSI7ZVsiQXJpYWxCbGFjay1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbEJsYWNrLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbEJsYWNrLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQXJpYWwtQmxhY2siXT0iSGVsdmV0aWNhIjtlWyJBcmlhbC1CbGFjay1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1CbGFjay1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWwtQmxhY2stSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxNVD0iSGVsdmV0aWNhIjtlWyJBcmlhbC1Cb2xkSXRhbGljTVQiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1Cb2xkTVQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUl0YWxpY01UIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJBcmlhbC1Cb2xkSXRhbGljTVQtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUJvbGRNVC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1JdGFsaWNNVC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxVbmljb2RlTVM9IkhlbHZldGljYSI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsVW5pY29kZU1TLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZS5Db3VyaWVyTmV3PSJDb3VyaWVyIjtlWyJDb3VyaWVyTmV3LUJvbGQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3LUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllck5ldy1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIjtlWyJDb3VyaWVyTmV3UFMtQm9sZEl0YWxpY01UIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXJOZXdQUy1Cb2xkTVQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3UFMtSXRhbGljTVQiXT0iQ291cmllci1PYmxpcXVlIjtlLkNvdXJpZXJOZXdQU01UPSJDb3VyaWVyIjtlWyJIZWx2ZXRpY2EtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkhlbHZldGljYS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkhlbHZldGljYUxUU3RkLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIlN5bWJvbC1Cb2xkIl09IlN5bWJvbCI7ZVsiU3ltYm9sLUJvbGRJdGFsaWMiXT0iU3ltYm9sIjtlWyJTeW1ib2wtSXRhbGljIl09IlN5bWJvbCI7ZS5UaW1lc05ld1JvbWFuPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hbi1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW4tQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2UuVGltZXNOZXdSb21hblBTPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWNNVCJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZE1UIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW5QUy1JdGFsaWMiXT0iVGltZXMtSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtSXRhbGljTVQiXT0iVGltZXMtSXRhbGljIjtlLlRpbWVzTmV3Um9tYW5QU01UPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTTVQtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuUFNNVC1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QU01ULUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMifSksem49Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2UuQ291cmllcj0iRm94aXRGaXhlZC5wZmIiO2VbIkNvdXJpZXItQm9sZCJdPSJGb3hpdEZpeGVkQm9sZC5wZmIiO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT0iRm94aXRGaXhlZEJvbGRJdGFsaWMucGZiIjtlWyJDb3VyaWVyLU9ibGlxdWUiXT0iRm94aXRGaXhlZEl0YWxpYy5wZmIiO2UuSGVsdmV0aWNhPSJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iTGliZXJhdGlvblNhbnMtQm9sZC50dGYiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljLnR0ZiI7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0iTGliZXJhdGlvblNhbnMtSXRhbGljLnR0ZiI7ZVsiVGltZXMtUm9tYW4iXT0iRm94aXRTZXJpZi5wZmIiO2VbIlRpbWVzLUJvbGQiXT0iRm94aXRTZXJpZkJvbGQucGZiIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IkZveGl0U2VyaWZCb2xkSXRhbGljLnBmYiI7ZVsiVGltZXMtSXRhbGljIl09IkZveGl0U2VyaWZJdGFsaWMucGZiIjtlLlN5bWJvbD0iRm94aXRTeW1ib2wucGZiIjtlLlphcGZEaW5nYmF0cz0iRm94aXREaW5nYmF0cy5wZmIiO2VbIkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiXT0iTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUJvbGQiXT0iTGliZXJhdGlvblNhbnMtQm9sZC50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUl0YWxpYyJdPSJMaWJlcmF0aW9uU2Fucy1JdGFsaWMudHRmIjtlWyJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIl09IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMudHRmIn0pLExuPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLkNhbGlicmk9IkhlbHZldGljYSI7ZVsiQ2FsaWJyaS1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJDYWxpYnJpLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJDYWxpYnJpLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5DZW50dXJ5R290aGljPSJIZWx2ZXRpY2EiO2VbIkNlbnR1cnlHb3RoaWMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQ2VudHVyeUdvdGhpYy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQ2VudHVyeUdvdGhpYy1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQ29taWNTYW5zTVM9IkNvbWljIFNhbnMgTVMiO2VbIkNvbWljU2Fuc01TLUJvbGQiXT0iQ29taWMgU2FucyBNUy1Cb2xkIjtlWyJDb21pY1NhbnNNUy1Cb2xkSXRhbGljIl09IkNvbWljIFNhbnMgTVMtQm9sZEl0YWxpYyI7ZVsiQ29taWNTYW5zTVMtSXRhbGljIl09IkNvbWljIFNhbnMgTVMtSXRhbGljIjtlLkdpbGxTYW5zTVQ9IkhlbHZldGljYSI7ZVsiR2lsbFNhbnNNVC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJHaWxsU2Fuc01ULUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJHaWxsU2Fuc01ULUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5JbXBhY3Q9IkhlbHZldGljYSI7ZVsiSXRjU3ltYm9sLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkl0Y1N5bWJvbC1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiSXRjU3ltYm9sLUJvb2siXT0iSGVsdmV0aWNhIjtlWyJJdGNTeW1ib2wtQm9va0l0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiSXRjU3ltYm9sLU1lZGl1bSJdPSJIZWx2ZXRpY2EiO2VbIkl0Y1N5bWJvbC1NZWRpdW1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuTHVjaWRhQ29uc29sZT0iQ291cmllciI7ZVsiTHVjaWRhQ29uc29sZS1Cb2xkIl09IkNvdXJpZXItQm9sZCI7ZVsiTHVjaWRhQ29uc29sZS1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkx1Y2lkYUNvbnNvbGUtSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZVsiTHVjaWRhU2Fucy1EZW1pIl09IkhlbHZldGljYS1Cb2xkIjtlWyJNUy1Hb3RoaWMiXT0iTVMgR290aGljIjtlWyJNUy1Hb3RoaWMtQm9sZCJdPSJNUyBHb3RoaWMtQm9sZCI7ZVsiTVMtR290aGljLUJvbGRJdGFsaWMiXT0iTVMgR290aGljLUJvbGRJdGFsaWMiO2VbIk1TLUdvdGhpYy1JdGFsaWMiXT0iTVMgR290aGljLUl0YWxpYyI7ZVsiTVMtTWluY2hvIl09Ik1TIE1pbmNobyI7ZVsiTVMtTWluY2hvLUJvbGQiXT0iTVMgTWluY2hvLUJvbGQiO2VbIk1TLU1pbmNoby1Cb2xkSXRhbGljIl09Ik1TIE1pbmNoby1Cb2xkSXRhbGljIjtlWyJNUy1NaW5jaG8tSXRhbGljIl09Ik1TIE1pbmNoby1JdGFsaWMiO2VbIk1TLVBHb3RoaWMiXT0iTVMgUEdvdGhpYyI7ZVsiTVMtUEdvdGhpYy1Cb2xkIl09Ik1TIFBHb3RoaWMtQm9sZCI7ZVsiTVMtUEdvdGhpYy1Cb2xkSXRhbGljIl09Ik1TIFBHb3RoaWMtQm9sZEl0YWxpYyI7ZVsiTVMtUEdvdGhpYy1JdGFsaWMiXT0iTVMgUEdvdGhpYy1JdGFsaWMiO2VbIk1TLVBNaW5jaG8iXT0iTVMgUE1pbmNobyI7ZVsiTVMtUE1pbmNoby1Cb2xkIl09Ik1TIFBNaW5jaG8tQm9sZCI7ZVsiTVMtUE1pbmNoby1Cb2xkSXRhbGljIl09Ik1TIFBNaW5jaG8tQm9sZEl0YWxpYyI7ZVsiTVMtUE1pbmNoby1JdGFsaWMiXT0iTVMgUE1pbmNoby1JdGFsaWMiO2UuTnVwdGlhbFNjcmlwdD0iVGltZXMtSXRhbGljIjtlLlNlZ29lVUlTeW1ib2w9IkhlbHZldGljYSI7ZS5UcmVidWNoZXRNUz0iSGVsdmV0aWNhIjtlWyJUcmVidWNoZXRNUy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJUcmVidWNoZXRNUy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiVHJlYnVjaGV0TVMtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIn0pLFVuPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlWyJBZG9iZSBKZW5zb24iXT0hMDtlWyJBZG9iZSBUZXh0Il09ITA7ZS5BbGJlcnR1cz0hMDtlLkFsZHVzPSEwO2UuQWxleGFuZHJpYT0hMDtlLkFsZ2VyaWFuPSEwO2VbIkFtZXJpY2FuIFR5cGV3cml0ZXIiXT0hMDtlLkFudGlxdWE9ITA7ZS5BcGV4PSEwO2UuQXJubz0hMDtlLkFzdGVyPSEwO2UuQXVyb3JhPSEwO2UuQmFza2VydmlsbGU9ITA7ZS5CZWxsPSEwO2UuQmVtYm89ITA7ZVsiQmVtYm8gU2Nob29sYm9vayJdPSEwO2UuQmVuZ3VpYXQ9ITA7ZVsiQmVya2VsZXkgT2xkIFN0eWxlIl09ITA7ZVsiQmVybmhhcmQgTW9kZXJuIl09ITA7ZVsiQmVydGhvbGQgQ2l0eSJdPSEwO2UuQm9kb25pPSEwO2VbIkJhdWVyIEJvZG9uaSJdPSEwO2VbIkJvb2sgQW50aXF1YSJdPSEwO2UuQm9va21hbj0hMDtlWyJCb3JkZWF1eCBSb21hbiJdPSEwO2VbIkNhbGlmb3JuaWFuIEZCIl09ITA7ZS5DYWxpc3RvPSEwO2UuQ2FsdmVydD0hMDtlLkNhcGl0YWxzPSEwO2UuQ2FtYnJpYT0hMDtlLkNhcnRpZXI9ITA7ZS5DYXNsb249ITA7ZS5DYXR1bGw9ITA7ZS5DZW50YXVyPSEwO2VbIkNlbnR1cnkgT2xkIFN0eWxlIl09ITA7ZVsiQ2VudHVyeSBTY2hvb2xib29rIl09ITA7ZS5DaGFwYXJyYWw9ITA7ZVsiQ2hhcmlzIFNJTCJdPSEwO2UuQ2hlbHRlbmhhbT0hMDtlWyJDaG9sbGEgU2xhYiJdPSEwO2UuQ2xhcmVuZG9uPSEwO2UuQ2xlYXJmYWNlPSEwO2UuQ29jaGluPSEwO2UuQ29sb25uYT0hMDtlWyJDb21wdXRlciBNb2Rlcm4iXT0hMDtlWyJDb25jcmV0ZSBSb21hbiJdPSEwO2UuQ29uc3RhbnRpYT0hMDtlWyJDb29wZXIgQmxhY2siXT0hMDtlLkNvcm9uYT0hMDtlLkVjb3R5cGU9ITA7ZS5FZ3lwdGllbm5lPSEwO2UuRWxlcGhhbnQ9ITA7ZS5FeGNlbHNpb3I9ITA7ZS5GYWlyZmllbGQ9ITA7ZVsiRkYgU2NhbGEiXT0hMDtlLkZvbGthcmQ9ITA7ZS5Gb290bGlnaHQ9ITA7ZS5GcmVlU2VyaWY9ITA7ZVsiRnJpeiBRdWFkcmF0YSJdPSEwO2UuR2FyYW1vbmQ9ITA7ZS5HZW50aXVtPSEwO2UuR2VvcmdpYT0hMDtlLkdsb3VjZXN0ZXI9ITA7ZVsiR291ZHkgT2xkIFN0eWxlIl09ITA7ZVsiR291ZHkgU2Nob29sYm9vayJdPSEwO2VbIkdvdWR5IFBybyBGb250Il09ITA7ZS5HcmFuam9uPSEwO2VbIkd1YXJkaWFuIEVneXB0aWFuIl09ITA7ZS5IZWF0aGVyPSEwO2UuSGVyY3VsZXM9ITA7ZVsiSGlnaCBUb3dlciBUZXh0Il09ITA7ZS5IaXJvc2hpZ2U9ITA7ZVsiSG9lZmxlciBUZXh0Il09ITA7ZVsiSHVtYW5hIFNlcmlmIl09ITA7ZS5JbXByaW50PSEwO2VbIklvbmljIE5vLiA1Il09ITA7ZS5KYW5zb249ITA7ZS5Kb2FubmE9ITA7ZS5Lb3Jpbm5hPSEwO2UuTGV4aWNvbj0hMDtlLkxpYmVyYXRpb25TZXJpZj0hMDtlWyJMaWJlcmF0aW9uIFNlcmlmIl09ITA7ZVsiTGludXggTGliZXJ0aW5lIl09ITA7ZS5MaXRlcmF0dXJuYXlhPSEwO2UuTHVjaWRhPSEwO2VbIkx1Y2lkYSBCcmlnaHQiXT0hMDtlLk1lbGlvcj0hMDtlLk1lbXBoaXM9ITA7ZS5NaWxsZXI9ITA7ZS5NaW5pb249ITA7ZS5Nb2Rlcm49ITA7ZVsiTW9uYSBMaXNhIl09ITA7ZVsiTXJzIEVhdmVzIl09ITA7ZVsiTVMgU2VyaWYiXT0hMDtlWyJNdXNlbyBTbGFiIl09ITA7ZVsiTmV3IFlvcmsiXT0hMDtlWyJOaW1idXMgUm9tYW4iXT0hMDtlWyJOUFMgUmF3bGluc29uIFJvYWR3YXkiXT0hMDtlLk51cHRpYWxTY3JpcHQ9ITA7ZS5QYWxhdGlubz0hMDtlLlBlcnBldHVhPSEwO2UuUGxhbnRpbj0hMDtlWyJQbGFudGluIFNjaG9vbGJvb2siXT0hMDtlLlBsYXliaWxsPSEwO2VbIlBvb3IgUmljaGFyZCJdPSEwO2VbIlJhd2xpbnNvbiBSb2Fkd2F5Il09ITA7ZS5SZW5hdWx0PSEwO2UuUmVxdWllbT0hMDtlLlJvY2t3ZWxsPSEwO2UuUm9tYW49ITA7ZVsiUm90aXMgU2VyaWYiXT0hMDtlLlNhYm9uPSEwO2UuU2NhbGE9ITA7ZS5TZWFndWxsPSEwO2UuU2lzdGluYT0hMDtlLlNvdXZlbmlyPSEwO2UuU1RJWD0hMDtlWyJTdG9uZSBJbmZvcm1hbCJdPSEwO2VbIlN0b25lIFNlcmlmIl09ITA7ZS5TeWxmYWVuPSEwO2UuVGltZXM9ITA7ZS5UcmFqYW49ITA7ZVsiVHJpbml0w6kiXT0hMDtlWyJUcnVtcCBNZWRpYWV2YWwiXT0hMDtlLlV0b3BpYT0hMDtlWyJWYWxlIFR5cGUiXT0hMDtlWyJCaXRzdHJlYW0gVmVyYSJdPSEwO2VbIlZlcmEgU2VyaWYiXT0hMDtlLlZlcnNhaWxsZXM9ITA7ZS5XYW50ZWQ9ITA7ZS5XZWlzcz0hMDtlWyJXaWRlIExhdGluIl09ITA7ZS5XaW5kc29yPSEwO2UuWElUUz0hMH0pLFduPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLkRpbmdiYXRzPSEwO2UuU3ltYm9sPSEwO2UuWmFwZkRpbmdiYXRzPSEwO2UuV2luZ2RpbmdzPSEwO2VbIldpbmdkaW5ncy1Cb2xkIl09ITA7ZVsiV2luZ2RpbmdzLVJlZ3VsYXIiXT0hMH0pLFhuPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtjb25zdCB0PWJuKCk7ZVsyXT0xMDtmb3IobGV0IGE9MzthPENuLmxlbmd0aDthKyspe2NvbnN0IG49dFtDblthXV07dm9pZCAwIT09biYmKGVbYV09bil9fSksS249Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2VbMl09MTA7ZVszXT0zMjtlWzRdPTMzO2VbNV09MzQ7ZVs2XT0zNTtlWzddPTM2O2VbOF09Mzc7ZVs5XT0zODtlWzEwXT0zOTtlWzExXT00MDtlWzEyXT00MTtlWzEzXT00MjtlWzE0XT00MztlWzE1XT00NDtlWzE2XT00NTtlWzE3XT00NjtlWzE4XT00NztlWzE5XT00ODtlWzIwXT00OTtlWzIxXT01MDtlWzIyXT01MTtlWzIzXT01MjtlWzI0XT01MztlWzI1XT01NDtlWzI2XT01NTtlWzI3XT01NjtlWzI4XT01NztlWzI5XT01ODtlWzMwXT04OTQ7ZVszMV09NjA7ZVszMl09NjE7ZVszM109NjI7ZVszNF09NjM7ZVszNV09NjQ7ZVszNl09NjU7ZVszN109NjY7ZVszOF09Njc7ZVszOV09Njg7ZVs0MF09Njk7ZVs0MV09NzA7ZVs0Ml09NzE7ZVs0M109NzI7ZVs0NF09NzM7ZVs0NV09NzQ7ZVs0Nl09NzU7ZVs0N109NzY7ZVs0OF09Nzc7ZVs0OV09Nzg7ZVs1MF09Nzk7ZVs1MV09ODA7ZVs1Ml09ODE7ZVs1M109ODI7ZVs1NF09ODM7ZVs1NV09ODQ7ZVs1Nl09ODU7ZVs1N109ODY7ZVs1OF09ODc7ZVs1OV09ODg7ZVs2MF09ODk7ZVs2MV09OTA7ZVs2Ml09OTE7ZVs2M109OTI7ZVs2NF09OTM7ZVs2NV09OTQ7ZVs2Nl09OTU7ZVs2N109OTY7ZVs2OF09OTc7ZVs2OV09OTg7ZVs3MF09OTk7ZVs3MV09MTAwO2VbNzJdPTEwMTtlWzczXT0xMDI7ZVs3NF09MTAzO2VbNzVdPTEwNDtlWzc2XT0xMDU7ZVs3N109MTA2O2VbNzhdPTEwNztlWzc5XT0xMDg7ZVs4MF09MTA5O2VbODFdPTExMDtlWzgyXT0xMTE7ZVs4M109MTEyO2VbODRdPTExMztlWzg1XT0xMTQ7ZVs4Nl09MTE1O2VbODddPTExNjtlWzg4XT0xMTc7ZVs4OV09MTE4O2VbOTBdPTExOTtlWzkxXT0xMjA7ZVs5Ml09MTIxO2VbOTNdPTEyMjtlWzk0XT0xMjM7ZVs5NV09MTI0O2VbOTZdPTEyNTtlWzk3XT0xMjY7ZVs5OF09MTk2O2VbOTldPTE5NztlWzEwMF09MTk5O2VbMTAxXT0yMDE7ZVsxMDJdPTIwOTtlWzEwM109MjE0O2VbMTA0XT0yMjA7ZVsxMDVdPTIyNTtlWzEwNl09MjI0O2VbMTA3XT0yMjY7ZVsxMDhdPTIyODtlWzEwOV09MjI3O2VbMTEwXT0yMjk7ZVsxMTFdPTIzMTtlWzExMl09MjMzO2VbMTEzXT0yMzI7ZVsxMTRdPTIzNDtlWzExNV09MjM1O2VbMTE2XT0yMzc7ZVsxMTddPTIzNjtlWzExOF09MjM4O2VbMTE5XT0yMzk7ZVsxMjBdPTI0MTtlWzEyMV09MjQzO2VbMTIyXT0yNDI7ZVsxMjNdPTI0NDtlWzEyNF09MjQ2O2VbMTI1XT0yNDU7ZVsxMjZdPTI1MDtlWzEyN109MjQ5O2VbMTI4XT0yNTE7ZVsxMjldPTI1MjtlWzEzMF09ODIyNDtlWzEzMV09MTc2O2VbMTMyXT0xNjI7ZVsxMzNdPTE2MztlWzEzNF09MTY3O2VbMTM1XT04MjI2O2VbMTM2XT0xODI7ZVsxMzddPTIyMztlWzEzOF09MTc0O2VbMTM5XT0xNjk7ZVsxNDBdPTg0ODI7ZVsxNDFdPTE4MDtlWzE0Ml09MTY4O2VbMTQzXT04ODAwO2VbMTQ0XT0xOTg7ZVsxNDVdPTIxNjtlWzE0Nl09ODczNDtlWzE0N109MTc3O2VbMTQ4XT04ODA0O2VbMTQ5XT04ODA1O2VbMTUwXT0xNjU7ZVsxNTFdPTE4MTtlWzE1Ml09ODcwNjtlWzE1M109ODcyMTtlWzE1NF09ODcxOTtlWzE1Nl09ODc0NztlWzE1N109MTcwO2VbMTU4XT0xODY7ZVsxNTldPTg0ODY7ZVsxNjBdPTIzMDtlWzE2MV09MjQ4O2VbMTYyXT0xOTE7ZVsxNjNdPTE2MTtlWzE2NF09MTcyO2VbMTY1XT04NzMwO2VbMTY2XT00MDI7ZVsxNjddPTg3NzY7ZVsxNjhdPTg3MTA7ZVsxNjldPTE3MTtlWzE3MF09MTg3O2VbMTcxXT04MjMwO2VbMTc5XT04MjIwO2VbMTgwXT04MjIxO2VbMTgxXT04MjE2O2VbMTgyXT04MjE3O2VbMjAwXT0xOTM7ZVsyMDNdPTIwNTtlWzIwN109MjExO2VbMjEwXT0yMTg7ZVsyMjNdPTcxMTtlWzIyNF09MzIxO2VbMjI1XT0zMjI7ZVsyMjZdPTM1MjtlWzIyN109MzUzO2VbMjI4XT0zODE7ZVsyMjldPTM4MjtlWzIzM109MjIxO2VbMjM0XT0yNTM7ZVsyNTJdPTI2MztlWzI1M109MjY4O2VbMjU0XT0yNjk7ZVsyNThdPTI1ODtlWzI2MF09MjYwO2VbMjYxXT0yNjE7ZVsyNjVdPTI4MDtlWzI2Nl09MjgxO2VbMjY3XT0yODI7ZVsyNjhdPTI4MztlWzI2OV09MzEzO2VbMjc1XT0zMjM7ZVsyNzZdPTMyNDtlWzI3OF09MzI4O2VbMjgzXT0zNDQ7ZVsyODRdPTM0NTtlWzI4NV09MzQ2O2VbMjg2XT0zNDc7ZVsyOTJdPTM2NztlWzI5NV09Mzc3O2VbMjk2XT0zNzg7ZVsyOThdPTM4MDtlWzMwNV09OTYzO2VbMzA2XT05NjQ7ZVszMDddPTk2NjtlWzMwOF09ODIxNTtlWzMwOV09ODI1MjtlWzMxMF09ODMxOTtlWzMxMV09ODM1OTtlWzMxMl09ODU5MjtlWzMxM109ODU5MztlWzMzN109OTU1MjtlWzQ5M109MTAzOTtlWzQ5NF09MTA0MDtlWzU3MF09MTA0MDtlWzU3MV09MTA0MTtlWzU3Ml09MTA0MjtlWzU3M109MTA0MztlWzU3NF09MTA0NDtlWzU3NV09MTA0NTtlWzU3Nl09MTA0NjtlWzU3N109MTA0NztlWzU3OF09MTA0ODtlWzU3OV09MTA0OTtlWzU4MF09MTA1MDtlWzU4MV09MTA1MTtlWzU4Ml09MTA1MjtlWzU4M109MTA1MztlWzU4NF09MTA1NDtlWzU4NV09MTA1NTtlWzU4Nl09MTA1NjtlWzU4N109MTA1NztlWzU4OF09MTA1ODtlWzU4OV09MTA1OTtlWzU5MF09MTA2MDtlWzU5MV09MTA2MTtlWzU5Ml09MTA2MjtlWzU5M109MTA2MztlWzU5NF09MTA2NDtlWzU5NV09MTA2NTtlWzU5Nl09MTA2NjtlWzU5N109MTA2NztlWzU5OF09MTA2ODtlWzU5OV09MTA2OTtlWzYwMF09MTA3MDtlWzYwMV09MTA3MTtlWzYwMl09MTA3MjtlWzYwM109MTA3MztlWzYwNF09MTA3NDtlWzYwNV09MTA3NTtlWzYwNl09MTA3NjtlWzYwN109MTA3NztlWzYwOF09MTA3ODtlWzYwOV09MTA3OTtlWzYxMF09MTA4MDtlWzYxMV09MTA4MTtlWzYxMl09MTA4MjtlWzYxM109MTA4MztlWzYxNF09MTA4NDtlWzYxNV09MTA4NTtlWzYxNl09MTA4NjtlWzYxN109MTA4NztlWzYxOF09MTA4ODtlWzYxOV09MTA4OTtlWzYyMF09MTA5MDtlWzYyMV09MTA5MTtlWzYyMl09MTA5MjtlWzYyM109MTA5MztlWzYyNF09MTA5NDtlWzYyNV09MTA5NTtlWzYyNl09MTA5NjtlWzYyN109MTA5NztlWzYyOF09MTA5ODtlWzYyOV09MTA5OTtlWzYzMF09MTEwMDtlWzYzMV09MTEwMTtlWzYzMl09MTEwMjtlWzYzM109MTEwMztlWzY3Ml09MTQ4ODtlWzY3M109MTQ4OTtlWzY3NF09MTQ5MDtlWzY3NV09MTQ5MTtlWzY3Nl09MTQ5MjtlWzY3N109MTQ5MztlWzY3OF09MTQ5NDtlWzY3OV09MTQ5NTtlWzY4MF09MTQ5NjtlWzY4MV09MTQ5NztlWzY4Ml09MTQ5ODtlWzY4M109MTQ5OTtlWzY4NF09MTUwMDtlWzY4NV09MTUwMTtlWzY4Nl09MTUwMjtlWzY4N109MTUwMztlWzY4OF09MTUwNDtlWzY4OV09MTUwNTtlWzY5MF09MTUwNjtlWzY5MV09MTUwNztlWzY5Ml09MTUwODtlWzY5M109MTUwOTtlWzY5NF09MTUxMDtlWzY5NV09MTUxMTtlWzY5Nl09MTUxMjtlWzY5N109MTUxMztlWzY5OF09MTUxNDtlWzcwNV09MTUyNDtlWzcwNl09ODM2MjtlWzcxMF09NjQyODg7ZVs3MTFdPTY0Mjk4O2VbNzU5XT0xNjE3O2VbNzYxXT0xNzc2O2VbNzYzXT0xNzc4O2VbNzc1XT0xNjUyO2VbNzc3XT0xNzY0O2VbNzc4XT0xNzgwO2VbNzc5XT0xNzgxO2VbNzgwXT0xNzgyO2VbNzgyXT03NzE7ZVs3ODNdPTY0NzI2O2VbNzg2XT04MzYzO2VbNzg4XT04NTMyO2VbNzkwXT03Njg7ZVs3OTFdPTc2OTtlWzc5Ml09NzY4O2VbNzk1XT04MDM7ZVs3OTddPTY0MzM2O2VbNzk4XT02NDMzNztlWzc5OV09NjQzNDI7ZVs4MDBdPTY0MzQzO2VbODAxXT02NDM0NDtlWzgwMl09NjQzNDU7ZVs4MDNdPTY0MzYyO2VbODA0XT02NDM2MztlWzgwNV09NjQzNjQ7ZVsyNDI0XT03ODIxO2VbMjQyNV09NzgyMjtlWzI0MjZdPTc4MjM7ZVsyNDI3XT03ODI0O2VbMjQyOF09NzgyNTtlWzI0MjldPTc4MjY7ZVsyNDMwXT03ODI3O2VbMjQzM109NzY4MjtlWzI2NzhdPTgwNDU7ZVsyNjc5XT04MDQ2O2VbMjgzMF09MTU1MjtlWzI4MzhdPTY4NjtlWzI4NDBdPTc1MTtlWzI4NDJdPTc1MztlWzI4NDNdPTc1NDtlWzI4NDRdPTc1NTtlWzI4NDZdPTc1NztlWzI4NTZdPTc2NztlWzI4NTddPTg0ODtlWzI4NThdPTg0OTtlWzI4NjJdPTg1MztlWzI4NjNdPTg1NDtlWzI4NjRdPTg1NTtlWzI4NjVdPTg2MTtlWzI4NjZdPTg2MjtlWzI5MDZdPTc0NjA7ZVsyOTA4XT03NDYyO2VbMjkwOV09NzQ2MztlWzI5MTBdPTc0NjQ7ZVsyOTEyXT03NDY2O2VbMjkxM109NzQ2NztlWzI5MTRdPTc0Njg7ZVsyOTE2XT03NDcwO2VbMjkxN109NzQ3MTtlWzI5MThdPTc0NzI7ZVsyOTIwXT03NDc0O2VbMjkyMV09NzQ3NTtlWzI5MjJdPTc0NzY7ZVsyOTI0XT03NDc4O2VbMjkyNV09NzQ3OTtlWzI5MjZdPTc0ODA7ZVsyOTI4XT03NDgyO2VbMjkyOV09NzQ4MztlWzI5MzBdPTc0ODQ7ZVsyOTMyXT03NDg2O2VbMjkzM109NzQ4NztlWzI5MzRdPTc0ODg7ZVsyOTM2XT03NDkwO2VbMjkzN109NzQ5MTtlWzI5MzhdPTc0OTI7ZVsyOTQwXT03NDk0O2VbMjk0MV09NzQ5NTtlWzI5NDJdPTc0OTY7ZVsyOTQ0XT03NDk4O2VbMjk0Nl09NzUwMDtlWzI5NDhdPTc1MDI7ZVsyOTUwXT03NTA0O2VbMjk1MV09NzUwNTtlWzI5NTJdPTc1MDY7ZVsyOTU0XT03NTA4O2VbMjk1NV09NzUwOTtlWzI5NTZdPTc1MTA7ZVsyOTU4XT03NTEyO2VbMjk1OV09NzUxMztlWzI5NjBdPTc1MTQ7ZVsyOTYyXT03NTE2O2VbMjk2M109NzUxNztlWzI5NjRdPTc1MTg7ZVsyOTY2XT03NTIwO2VbMjk2N109NzUyMTtlWzI5NjhdPTc1MjI7ZVsyOTcwXT03NTI0O2VbMjk3MV09NzUyNTtlWzI5NzJdPTc1MjY7ZVsyOTc0XT03NTI4O2VbMjk3NV09NzUyOTtlWzI5NzZdPTc1MzA7ZVsyOTc4XT0xNTM3O2VbMjk3OV09MTUzODtlWzI5ODBdPTE1Mzk7ZVsyOTgyXT0xNTQ5O2VbMjk4M109MTU1MTtlWzI5ODRdPTE1NTI7ZVsyOTg2XT0xNTU0O2VbMjk4N109MTU1NTtlWzI5ODhdPTE1NTY7ZVsyOTkwXT0xNjIzO2VbMjk5MV09MTYyNDtlWzI5OTVdPTE3NzU7ZVsyOTk5XT0xNzkxO2VbMzAwMl09NjQyOTA7ZVszMDAzXT02NDI5MTtlWzMwMDRdPTY0MjkyO2VbMzAwNl09NjQyOTQ7ZVszMDA3XT02NDI5NTtlWzMwMDhdPTY0Mjk2O2VbMzAxMV09MTkwMDtlWzMwMTRdPTgyMjM7ZVszMDE1XT04MjQ0O2VbMzAxN109NzUzMjtlWzMwMThdPTc1MzM7ZVszMDE5XT03NTM0O2VbMzA3NV09NzU5MDtlWzMwNzZdPTc1OTE7ZVszMDc5XT03NTk0O2VbMzA4MF09NzU5NTtlWzMwODNdPTc1OTg7ZVszMDg0XT03NTk5O2VbMzA4N109NzYwMjtlWzMwODhdPTc2MDM7ZVszMDkxXT03NjA2O2VbMzA5Ml09NzYwNztlWzMwOTVdPTc2MTA7ZVszMDk2XT03NjExO2VbMzA5OV09NzYxNDtlWzMxMDBdPTc2MTU7ZVszMTAzXT03NjE4O2VbMzEwNF09NzYxOTtlWzMxMDddPTgzMzc7ZVszMTA4XT04MzM4O2VbMzExNl09MTg4NDtlWzMxMTldPTE4ODU7ZVszMTIwXT0xODg1O2VbMzEyM109MTg4NjtlWzMxMjRdPTE4ODY7ZVszMTI3XT0xODg3O2VbMzEyOF09MTg4NztlWzMxMzFdPTE4ODg7ZVszMTMyXT0xODg4O2VbMzEzNV09MTg4OTtlWzMxMzZdPTE4ODk7ZVszMTM5XT0xODkwO2VbMzE0MF09MTg5MDtlWzMxNDNdPTE4OTE7ZVszMTQ0XT0xODkxO2VbMzE0N109MTg5MjtlWzMxNDhdPTE4OTI7ZVszMTUzXT01ODA7ZVszMTU0XT01ODE7ZVszMTU3XT01ODQ7ZVszMTU4XT01ODU7ZVszMTYxXT01ODg7ZVszMTYyXT01ODk7ZVszMTY1XT04OTE7ZVszMTY2XT04OTI7ZVszMTY5XT0xMjc0O2VbMzE3MF09MTI3NTtlWzMxNzNdPTEyNzg7ZVszMTc0XT0xMjc5O2VbMzE4MV09NzYyMjtlWzMxODJdPTc2MjM7ZVszMjgyXT0xMTc5OTtlWzMzMTZdPTU3ODtlWzMzNzldPTQyNzg1O2VbMzM5M109MTE1OTtlWzM0MTZdPTgzNzd9KSxHbj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZVsxNTFdPTk1NjtlWzE1OV09OTM3O2VbMTY4XT05MTY7ZVsxODldPTgzNjQ7ZVsxOTVdPTg3Mjk7ZVsyMThdPTcxMztlWzIzNl09MjIyO2VbMjM3XT0yNTQ7ZVsyMzhdPTg3MjI7ZVsyMzldPTE4NTtlWzI0MF09MTc4O2VbMjQxXT0xNzk7ZVsyNDJdPTE4OTtlWzI0M109MTg4O2VbMjQ0XT0xOTA7ZVsyNDVdPTE4MTtlWzI0Nl09ODQ4NjtlWzI0N109ODcxMDtlWzI0OF09MjUzO2VbMjQ5XT0yMTU7ZVsyNTBdPTE3MztlWzI1M109ODM1NTtlWzI1NF09Mjg2O2VbMjU1XT0yODc7ZVsyNTZdPTMwNDtlWzI1N109MzUwO2VbMjU4XT0zNTE7ZVsyNTldPTI2MjtlWzI2MF09MjYzO2VbMjYxXT0yNjg7ZVsyNjJdPTI2OTtlWzI2M109MjczO2VbMjY0XT0xNzU7ZVsyNjZdPTE4MztlWzI2N109MjU4O2VbMjY4XT0yNTk7ZVsyNjldPTI2MDtlWzI3MF09MjYxO2VbMjcxXT0yNzA7ZVsyNzJdPTI3MTtlWzI3M109MjcyO2VbMjc0XT0yODA7ZVsyNzVdPTI4MTtlWzI3Nl09MjgyO2VbMjc3XT0yODM7ZVsyNzhdPTMxMztlWzI3OV09MzE0O2VbMjgwXT0zMTc7ZVsyODFdPTMxODtlWzI4Ml09MzE5O2VbMjgzXT0zMjA7ZVsyODRdPTMyMztlWzI4NV09MzI0O2VbMjg2XT0zMjc7ZVsyODddPTMyODtlWzI4OF09MzM2O2VbMjg5XT0zMzc7ZVsyOTBdPTM0MDtlWzI5MV09MzQxO2VbMjkyXT0zNDQ7ZVsyOTNdPTM0NTtlWzI5NF09MzQ2O2VbMjk1XT0zNDc7ZVsyOTZdPTUzODtlWzI5N109NTM5O2VbMjk4XT0zNTY7ZVsyOTldPTM1NztlWzMwMF09MzY2O2VbMzAxXT0zNjc7ZVszMDJdPTM2ODtlWzMwM109MzY5O2VbMzA0XT0zNzc7ZVszMDVdPTM3ODtlWzMwNl09Mzc5O2VbMzA3XT0zODB9KSxWbj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZVsyMjddPTMyMjtlWzI2NF09MjYxO2VbMjkxXT0zNDZ9KSwkbj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZVsxXT0zMjtlWzRdPTY1O2VbNV09MTkyO2VbNl09MTkzO2VbOV09MTk2O2VbMTddPTY2O2VbMThdPTY3O2VbMjFdPTI2ODtlWzI0XT02ODtlWzI4XT02OTtlWzI5XT0yMDA7ZVszMF09MjAxO2VbMzJdPTI4MjtlWzM4XT03MDtlWzM5XT03MTtlWzQ0XT03MjtlWzQ3XT03MztlWzQ4XT0yMDQ7ZVs0OV09MjA1O2VbNThdPTc0O2VbNjBdPTc1O2VbNjJdPTc2O2VbNjhdPTc3O2VbNjldPTc4O2VbNzVdPTc5O2VbNzZdPTIxMDtlWzgwXT0yMTQ7ZVs4N109ODA7ZVs4OV09ODE7ZVs5MF09ODI7ZVs5Ml09MzQ0O2VbOTRdPTgzO2VbOTddPTM1MjtlWzEwMF09ODQ7ZVsxMDRdPTg1O2VbMTA5XT0yMjA7ZVsxMTVdPTg2O2VbMTE2XT04NztlWzEyMV09ODg7ZVsxMjJdPTg5O2VbMTI0XT0yMjE7ZVsxMjddPTkwO2VbMTI5XT0zODE7ZVsyNThdPTk3O2VbMjU5XT0yMjQ7ZVsyNjBdPTIyNTtlWzI2M109MjI4O2VbMjY4XT0yNjE7ZVsyNzFdPTk4O2VbMjcyXT05OTtlWzI3M109MjYzO2VbMjc1XT0yNjk7ZVsyODJdPTEwMDtlWzI4Nl09MTAxO2VbMjg3XT0yMzI7ZVsyODhdPTIzMztlWzI5MF09MjgzO2VbMjk1XT0yODE7ZVsyOTZdPTEwMjtlWzMzNl09MTAzO2VbMzQ2XT0xMDQ7ZVszNDldPTEwNTtlWzM1MF09MjM2O2VbMzUxXT0yMzc7ZVszNjFdPTEwNjtlWzM2NF09MTA3O2VbMzY3XT0xMDg7ZVszNzFdPTMyMjtlWzM3M109MTA5O2VbMzc0XT0xMTA7ZVszODFdPTExMTtlWzM4Ml09MjQyO2VbMzgzXT0yNDM7ZVszODZdPTI0NjtlWzM5M109MTEyO2VbMzk1XT0xMTM7ZVszOTZdPTExNDtlWzM5OF09MzQ1O2VbNDAwXT0xMTU7ZVs0MDFdPTM0NztlWzQwM109MzUzO2VbNDEwXT0xMTY7ZVs0MzddPTExNztlWzQ0Ml09MjUyO2VbNDQ4XT0xMTg7ZVs0NDldPTExOTtlWzQ1NF09MTIwO2VbNDU1XT0xMjE7ZVs0NTddPTI1MztlWzQ2MF09MTIyO2VbNDYyXT0zODI7ZVs0NjNdPTM4MDtlWzg1M109NDQ7ZVs4NTVdPTU4O2VbODU2XT00NjtlWzg3Nl09NDc7ZVs4NzhdPTQ1O2VbODgyXT00NTtlWzg5NF09NDA7ZVs4OTVdPTQxO2VbODk2XT05MTtlWzg5N109OTM7ZVs5MjNdPTY0O2VbOTQwXT0xNjM7ZVsxMDA0XT00ODtlWzEwMDVdPTQ5O2VbMTAwNl09NTA7ZVsxMDA3XT01MTtlWzEwMDhdPTUyO2VbMTAwOV09NTM7ZVsxMDEwXT01NDtlWzEwMTFdPTU1O2VbMTAxMl09NTY7ZVsxMDEzXT01NztlWzEwODFdPTM3O2VbMTA4NV09NDM7ZVsxMDg2XT00NX0pO2Z1bmN0aW9uIGdldFN0YW5kYXJkRm9udE5hbWUoZSl7Y29uc3QgdD1ub3JtYWxpemVGb250TmFtZShlKTtyZXR1cm4gX24oKVt0XX1mdW5jdGlvbiBpc0tub3duRm9udE5hbWUoZSl7Y29uc3QgdD1ub3JtYWxpemVGb250TmFtZShlKTtyZXR1cm4hIShfbigpW3RdfHxMbigpW3RdfHxVbigpW3RdfHxXbigpW3RdKX1jb25zdCBZbj0yNTYsSm49MTA7Y2xhc3MgR2x5ZlRhYmxle2NvbnN0cnVjdG9yKHtnbHlmVGFibGU6ZSxpc0dseXBoTG9jYXRpb25zTG9uZzp0LGxvY2FUYWJsZTphLG51bUdseXBoczpufSl7dGhpcy5nbHlwaHM9W107Y29uc3Qgcz1uZXcgRGF0YVZpZXcoYS5idWZmZXIsYS5ieXRlT2Zmc2V0LGEuYnl0ZUxlbmd0aCkscj1uZXcgRGF0YVZpZXcoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZUxlbmd0aCksaT10PzQ6MjtsZXQgbz10P3MuZ2V0VWludDMyKDApOjIqcy5nZXRVaW50MTYoMCksbD0wO2ZvcihsZXQgZT0wO2U8bjtlKyspe2wrPWk7Y29uc3QgZT10P3MuZ2V0VWludDMyKGwpOjIqcy5nZXRVaW50MTYobCk7aWYoZT09PW8pe3RoaXMuZ2x5cGhzLnB1c2gobmV3IEdseXBoKHt9KSk7Y29udGludWV9Y29uc3QgYT1HbHlwaC5wYXJzZShvLHIpO3RoaXMuZ2x5cGhzLnB1c2goYSk7bz1lfX1nZXRTaXplKCl7cmV0dXJuIE1hdGguc3VtUHJlY2lzZSh0aGlzLmdseXBocy5tYXAoZT0+ZS5nZXRTaXplKCkrMyYtNCkpfXdyaXRlKCl7Y29uc3QgZT10aGlzLmdldFNpemUoKSx0PW5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoZSkpLGE9ZT4xMzEwNzAsbj1hPzQ6MixzPW5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoKHRoaXMuZ2x5cGhzLmxlbmd0aCsxKSpuKSk7YT9zLnNldFVpbnQzMigwLDApOnMuc2V0VWludDE2KDAsMCk7bGV0IHI9MCxpPTA7Zm9yKGNvbnN0IGUgb2YgdGhpcy5nbHlwaHMpe3IrPWUud3JpdGUocix0KTtyPXIrMyYtNDtpKz1uO2E/cy5zZXRVaW50MzIoaSxyKTpzLnNldFVpbnQxNihpLHI+PjEpfXJldHVybntpc0xvY2F0aW9uTG9uZzphLGxvY2E6bmV3IFVpbnQ4QXJyYXkocy5idWZmZXIpLGdseWY6bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIpfX1zY2FsZShlKXtmb3IobGV0IHQ9MCxhPXRoaXMuZ2x5cGhzLmxlbmd0aDt0PGE7dCsrKXRoaXMuZ2x5cGhzW3RdLnNjYWxlKGVbdF0pfX1jbGFzcyBHbHlwaHtjb25zdHJ1Y3Rvcih7aGVhZGVyOmU9bnVsbCxzaW1wbGU6dD1udWxsLGNvbXBvc2l0ZXM6YT1udWxsfSl7dGhpcy5oZWFkZXI9ZTt0aGlzLnNpbXBsZT10O3RoaXMuY29tcG9zaXRlcz1hfXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0W2Esbl09R2x5cGhIZWFkZXIucGFyc2UoZSx0KTtlKz1hO2lmKG4ubnVtYmVyT2ZDb250b3VyczwwKXtjb25zdCBhPVtdO2Zvcig7Oyl7Y29uc3RbbixzXT1Db21wb3NpdGVHbHlwaC5wYXJzZShlLHQpO2UrPW47YS5wdXNoKHMpO2lmKCEoMzImcy5mbGFncykpYnJlYWt9cmV0dXJuIG5ldyBHbHlwaCh7aGVhZGVyOm4sY29tcG9zaXRlczphfSl9Y29uc3Qgcz1TaW1wbGVHbHlwaC5wYXJzZShlLHQsbi5udW1iZXJPZkNvbnRvdXJzKTtyZXR1cm4gbmV3IEdseXBoKHtoZWFkZXI6bixzaW1wbGU6c30pfWdldFNpemUoKXtpZighdGhpcy5oZWFkZXIpcmV0dXJuIDA7Y29uc3QgZT10aGlzLnNpbXBsZT90aGlzLnNpbXBsZS5nZXRTaXplKCk6TWF0aC5zdW1QcmVjaXNlKHRoaXMuY29tcG9zaXRlcy5tYXAoZT0+ZS5nZXRTaXplKCkpKTtyZXR1cm4gdGhpcy5oZWFkZXIuZ2V0U2l6ZSgpK2V9d3JpdGUoZSx0KXtpZighdGhpcy5oZWFkZXIpcmV0dXJuIDA7Y29uc3QgYT1lO2UrPXRoaXMuaGVhZGVyLndyaXRlKGUsdCk7aWYodGhpcy5zaW1wbGUpZSs9dGhpcy5zaW1wbGUud3JpdGUoZSx0KTtlbHNlIGZvcihjb25zdCBhIG9mIHRoaXMuY29tcG9zaXRlcyllKz1hLndyaXRlKGUsdCk7cmV0dXJuIGUtYX1zY2FsZShlKXtpZighdGhpcy5oZWFkZXIpcmV0dXJuO2NvbnN0IHQ9KHRoaXMuaGVhZGVyLnhNaW4rdGhpcy5oZWFkZXIueE1heCkvMjt0aGlzLmhlYWRlci5zY2FsZSh0LGUpO2lmKHRoaXMuc2ltcGxlKXRoaXMuc2ltcGxlLnNjYWxlKHQsZSk7ZWxzZSBmb3IoY29uc3QgYSBvZiB0aGlzLmNvbXBvc2l0ZXMpYS5zY2FsZSh0LGUpfX1jbGFzcyBHbHlwaEhlYWRlcntjb25zdHJ1Y3Rvcih7bnVtYmVyT2ZDb250b3VyczplLHhNaW46dCx5TWluOmEseE1heDpuLHlNYXg6c30pe3RoaXMubnVtYmVyT2ZDb250b3Vycz1lO3RoaXMueE1pbj10O3RoaXMueU1pbj1hO3RoaXMueE1heD1uO3RoaXMueU1heD1zfXN0YXRpYyBwYXJzZShlLHQpe3JldHVybltKbixuZXcgR2x5cGhIZWFkZXIoe251bWJlck9mQ29udG91cnM6dC5nZXRJbnQxNihlKSx4TWluOnQuZ2V0SW50MTYoZSsyKSx5TWluOnQuZ2V0SW50MTYoZSs0KSx4TWF4OnQuZ2V0SW50MTYoZSs2KSx5TWF4OnQuZ2V0SW50MTYoZSs4KX0pXX1nZXRTaXplKCl7cmV0dXJuIEpufXdyaXRlKGUsdCl7dC5zZXRJbnQxNihlLHRoaXMubnVtYmVyT2ZDb250b3Vycyk7dC5zZXRJbnQxNihlKzIsdGhpcy54TWluKTt0LnNldEludDE2KGUrNCx0aGlzLnlNaW4pO3Quc2V0SW50MTYoZSs2LHRoaXMueE1heCk7dC5zZXRJbnQxNihlKzgsdGhpcy55TWF4KTtyZXR1cm4gSm59c2NhbGUoZSx0KXt0aGlzLnhNaW49TWF0aC5yb3VuZChlKyh0aGlzLnhNaW4tZSkqdCk7dGhpcy54TWF4PU1hdGgucm91bmQoZSsodGhpcy54TWF4LWUpKnQpfX1jbGFzcyBDb250b3Vye2NvbnN0cnVjdG9yKHtmbGFnczplLHhDb29yZGluYXRlczp0LHlDb29yZGluYXRlczphfSl7dGhpcy54Q29vcmRpbmF0ZXM9dDt0aGlzLnlDb29yZGluYXRlcz1hO3RoaXMuZmxhZ3M9ZX19Y2xhc3MgU2ltcGxlR2x5cGh7Y29uc3RydWN0b3Ioe2NvbnRvdXJzOmUsaW5zdHJ1Y3Rpb25zOnR9KXt0aGlzLmNvbnRvdXJzPWU7dGhpcy5pbnN0cnVjdGlvbnM9dH1zdGF0aWMgcGFyc2UoZSx0LGEpe2NvbnN0IG49W107Zm9yKGxldCBzPTA7czxhO3MrKyl7Y29uc3QgYT10LmdldFVpbnQxNihlKTtlKz0yO24ucHVzaChhKX1jb25zdCBzPW5bYS0xXSsxLHI9dC5nZXRVaW50MTYoZSk7ZSs9Mjtjb25zdCBpPW5ldyBVaW50OEFycmF5KHQpLnNsaWNlKGUsZStyKTtlKz1yO2NvbnN0IG89W107Zm9yKGxldCBhPTA7YTxzO2UrKyxhKyspe2xldCBuPXQuZ2V0VWludDgoZSk7by5wdXNoKG4pO2lmKDgmbil7Y29uc3Qgcz10LmdldFVpbnQ4KCsrZSk7bl49ODtmb3IobGV0IGU9MDtlPHM7ZSsrKW8ucHVzaChuKTthKz1zfX1jb25zdCBsPVtdO2xldCBmPVtdLGM9W10saD1bXTtjb25zdCB1PVtdO2xldCBtPTAscD0wO2ZvcihsZXQgYT0wO2E8czthKyspe2NvbnN0IHM9b1thXTtpZigyJnMpe2NvbnN0IGE9dC5nZXRVaW50OChlKyspO3ArPTE2JnM/YTotYTtmLnB1c2gocCl9ZWxzZSBpZigxNiZzKWYucHVzaChwKTtlbHNle3ArPXQuZ2V0SW50MTYoZSk7ZSs9MjtmLnB1c2gocCl9aWYoblttXT09PWEpe20rKztsLnB1c2goZik7Zj1bXX19cD0wO209MDtmb3IobGV0IGE9MDthPHM7YSsrKXtjb25zdCBzPW9bYV07aWYoNCZzKXtjb25zdCBhPXQuZ2V0VWludDgoZSsrKTtwKz0zMiZzP2E6LWE7Yy5wdXNoKHApfWVsc2UgaWYoMzImcyljLnB1c2gocCk7ZWxzZXtwKz10LmdldEludDE2KGUpO2UrPTI7Yy5wdXNoKHApfWgucHVzaCgxJnN8NjQmcyk7aWYoblttXT09PWEpe2Y9bFttXTttKys7dS5wdXNoKG5ldyBDb250b3VyKHtmbGFnczpoLHhDb29yZGluYXRlczpmLHlDb29yZGluYXRlczpjfSkpO2M9W107aD1bXX19cmV0dXJuIG5ldyBTaW1wbGVHbHlwaCh7Y29udG91cnM6dSxpbnN0cnVjdGlvbnM6aX0pfWdldFNpemUoKXtsZXQgZT0yKnRoaXMuY29udG91cnMubGVuZ3RoKzIrdGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoLHQ9MCxhPTA7Zm9yKGNvbnN0IG4gb2YgdGhpcy5jb250b3Vycyl7ZSs9bi5mbGFncy5sZW5ndGg7Zm9yKGxldCBzPTAscj1uLnhDb29yZGluYXRlcy5sZW5ndGg7czxyO3MrKyl7Y29uc3Qgcj1uLnhDb29yZGluYXRlc1tzXSxpPW4ueUNvb3JkaW5hdGVzW3NdO2xldCBvPU1hdGguYWJzKHItdCk7bz4yNTU/ZSs9MjpvPjAmJihlKz0xKTt0PXI7bz1NYXRoLmFicyhpLWEpO28+MjU1P2UrPTI6bz4wJiYoZSs9MSk7YT1pfX1yZXR1cm4gZX13cml0ZShlLHQpe2NvbnN0IGE9ZSxuPVtdLHM9W10scj1bXTtsZXQgaT0wLG89MDtmb3IoY29uc3QgYSBvZiB0aGlzLmNvbnRvdXJzKXtmb3IobGV0IGU9MCx0PWEueENvb3JkaW5hdGVzLmxlbmd0aDtlPHQ7ZSsrKXtsZXQgdD1hLmZsYWdzW2VdO2NvbnN0IGw9YS54Q29vcmRpbmF0ZXNbZV07bGV0IGY9bC1pO2lmKDA9PT1mKXt0fD0xNjtuLnB1c2goMCl9ZWxzZXtjb25zdCBlPU1hdGguYWJzKGYpO2lmKGU8PTI1NSl7dHw9Zj49MD8xODoyO24ucHVzaChlKX1lbHNlIG4ucHVzaChmKX1pPWw7Y29uc3QgYz1hLnlDb29yZGluYXRlc1tlXTtmPWMtbztpZigwPT09Zil7dHw9MzI7cy5wdXNoKDApfWVsc2V7Y29uc3QgZT1NYXRoLmFicyhmKTtpZihlPD0yNTUpe3R8PWY+PTA/MzY6NDtzLnB1c2goZSl9ZWxzZSBzLnB1c2goZil9bz1jO3IucHVzaCh0KX10LnNldFVpbnQxNihlLG4ubGVuZ3RoLTEpO2UrPTJ9dC5zZXRVaW50MTYoZSx0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7aWYodGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKXtuZXcgVWludDhBcnJheSh0LmJ1ZmZlciwwLHQuYnVmZmVyLmJ5dGVMZW5ndGgpLnNldCh0aGlzLmluc3RydWN0aW9ucyxlKTtlKz10aGlzLmluc3RydWN0aW9ucy5sZW5ndGh9Zm9yKGNvbnN0IGEgb2Ygcil0LnNldFVpbnQ4KGUrKyxhKTtmb3IobGV0IGE9MCxzPW4ubGVuZ3RoO2E8czthKyspe2NvbnN0IHM9blthXSxpPXJbYV07aWYoMiZpKXQuc2V0VWludDgoZSsrLHMpO2Vsc2UgaWYoISgxNiZpKSl7dC5zZXRJbnQxNihlLHMpO2UrPTJ9fWZvcihsZXQgYT0wLG49cy5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgbj1zW2FdLGk9clthXTtpZig0JmkpdC5zZXRVaW50OChlKyssbik7ZWxzZSBpZighKDMyJmkpKXt0LnNldEludDE2KGUsbik7ZSs9Mn19cmV0dXJuIGUtYX1zY2FsZShlLHQpe2Zvcihjb25zdCBhIG9mIHRoaXMuY29udG91cnMpaWYoMCE9PWEueENvb3JkaW5hdGVzLmxlbmd0aClmb3IobGV0IG49MCxzPWEueENvb3JkaW5hdGVzLmxlbmd0aDtuPHM7bisrKWEueENvb3JkaW5hdGVzW25dPU1hdGgucm91bmQoZSsoYS54Q29vcmRpbmF0ZXNbbl0tZSkqdCl9fWNsYXNzIENvbXBvc2l0ZUdseXBoe2NvbnN0cnVjdG9yKHtmbGFnczplLGdseXBoSW5kZXg6dCxhcmd1bWVudDE6YSxhcmd1bWVudDI6bix0cmFuc2Y6cyxpbnN0cnVjdGlvbnM6cn0pe3RoaXMuZmxhZ3M9ZTt0aGlzLmdseXBoSW5kZXg9dDt0aGlzLmFyZ3VtZW50MT1hO3RoaXMuYXJndW1lbnQyPW47dGhpcy50cmFuc2Y9czt0aGlzLmluc3RydWN0aW9ucz1yfXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0IGE9ZSxuPVtdO2xldCBzPXQuZ2V0VWludDE2KGUpO2NvbnN0IHI9dC5nZXRVaW50MTYoZSsyKTtlKz00O2xldCBpLG87aWYoMSZzKXtpZigyJnMpe2k9dC5nZXRJbnQxNihlKTtvPXQuZ2V0SW50MTYoZSsyKX1lbHNle2k9dC5nZXRVaW50MTYoZSk7bz10LmdldFVpbnQxNihlKzIpfWUrPTQ7c149MX1lbHNle2lmKDImcyl7aT10LmdldEludDgoZSk7bz10LmdldEludDgoZSsxKX1lbHNle2k9dC5nZXRVaW50OChlKTtvPXQuZ2V0VWludDgoZSsxKX1lKz0yfWlmKDgmcyl7bi5wdXNoKHQuZ2V0VWludDE2KGUpKTtlKz0yfWVsc2UgaWYoNjQmcyl7bi5wdXNoKHQuZ2V0VWludDE2KGUpLHQuZ2V0VWludDE2KGUrMikpO2UrPTR9ZWxzZSBpZigxMjgmcyl7bi5wdXNoKHQuZ2V0VWludDE2KGUpLHQuZ2V0VWludDE2KGUrMiksdC5nZXRVaW50MTYoZSs0KSx0LmdldFVpbnQxNihlKzYpKTtlKz04fWxldCBsPW51bGw7aWYocyZZbil7Y29uc3QgYT10LmdldFVpbnQxNihlKTtlKz0yO2w9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK2EpO2UrPWF9cmV0dXJuW2UtYSxuZXcgQ29tcG9zaXRlR2x5cGgoe2ZsYWdzOnMsZ2x5cGhJbmRleDpyLGFyZ3VtZW50MTppLGFyZ3VtZW50MjpvLHRyYW5zZjpuLGluc3RydWN0aW9uczpsfSldfWdldFNpemUoKXtsZXQgZT00KzIqdGhpcy50cmFuc2YubGVuZ3RoO3RoaXMuZmxhZ3MmWW4mJihlKz0yK3RoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjsyJnRoaXMuZmxhZ3M/dGhpcy5hcmd1bWVudDE+PS0xMjgmJnRoaXMuYXJndW1lbnQxPD0xMjcmJnRoaXMuYXJndW1lbnQyPj0tMTI4JiZ0aGlzLmFyZ3VtZW50Mjw9MTI3fHwoZSs9Mik6dGhpcy5hcmd1bWVudDE+PTAmJnRoaXMuYXJndW1lbnQxPD0yNTUmJnRoaXMuYXJndW1lbnQyPj0wJiZ0aGlzLmFyZ3VtZW50Mjw9MjU1fHwoZSs9Mik7cmV0dXJuIGV9d3JpdGUoZSx0KXtjb25zdCBhPWU7MiZ0aGlzLmZsYWdzP3RoaXMuYXJndW1lbnQxPj0tMTI4JiZ0aGlzLmFyZ3VtZW50MTw9MTI3JiZ0aGlzLmFyZ3VtZW50Mj49LTEyOCYmdGhpcy5hcmd1bWVudDI8PTEyN3x8KHRoaXMuZmxhZ3N8PTEpOnRoaXMuYXJndW1lbnQxPj0wJiZ0aGlzLmFyZ3VtZW50MTw9MjU1JiZ0aGlzLmFyZ3VtZW50Mj49MCYmdGhpcy5hcmd1bWVudDI8PTI1NXx8KHRoaXMuZmxhZ3N8PTEpO3Quc2V0VWludDE2KGUsdGhpcy5mbGFncyk7dC5zZXRVaW50MTYoZSsyLHRoaXMuZ2x5cGhJbmRleCk7ZSs9NDtpZigxJnRoaXMuZmxhZ3Mpe2lmKDImdGhpcy5mbGFncyl7dC5zZXRJbnQxNihlLHRoaXMuYXJndW1lbnQxKTt0LnNldEludDE2KGUrMix0aGlzLmFyZ3VtZW50Mil9ZWxzZXt0LnNldFVpbnQxNihlLHRoaXMuYXJndW1lbnQxKTt0LnNldFVpbnQxNihlKzIsdGhpcy5hcmd1bWVudDIpfWUrPTR9ZWxzZXt0LnNldFVpbnQ4KGUsdGhpcy5hcmd1bWVudDEpO3Quc2V0VWludDgoZSsxLHRoaXMuYXJndW1lbnQyKTtlKz0yfWlmKHRoaXMuZmxhZ3MmWW4pe3Quc2V0VWludDE2KGUsdGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKTtlKz0yO2lmKHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCl7bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsMCx0LmJ1ZmZlci5ieXRlTGVuZ3RoKS5zZXQodGhpcy5pbnN0cnVjdGlvbnMsZSk7ZSs9dGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RofX1yZXR1cm4gZS1hfXNjYWxlKGUsdCl7fX1jbGFzcyBUb1VuaWNvZGVNYXB7I2E7Y29uc3RydWN0b3IoZSl7dGhpcy4jYT1lfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuI2Euc2l6ZX1mb3JFYWNoKGUpe2Zvcihjb25zdFt0LGFdb2YgdGhpcy4jYSllKHQsYS5jb2RlUG9pbnRBdCgwKSl9aGFzKGUpe3JldHVybiB0aGlzLiNhLmhhcyhlKX1nZXQoZSl7cmV0dXJuIHRoaXMuI2EuZ2V0KGUpfWNoYXJDb2RlT2YoZSl7Zm9yKGNvbnN0W3QsYV1vZiB0aGlzLiNhKWlmKGE9PT1lKXJldHVybiB0O3JldHVybi0xfWFtZW5kKGUpe2Zvcihjb25zdFt0LGFdb2YgZSl0aGlzLiNhLnNldCh0LGEpfX1jbGFzcyBJZGVudGl0eVRvVW5pY29kZU1hcHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZmlyc3RDaGFyPWU7dGhpcy5sYXN0Q2hhcj10fWdldCBzaXplKCl7cmV0dXJuIHRoaXMubGFzdENoYXIrMS10aGlzLmZpcnN0Q2hhcn1mb3JFYWNoKGUpe2ZvcihsZXQgdD10aGlzLmZpcnN0Q2hhcixhPXRoaXMubGFzdENoYXI7dDw9YTt0KyspZSh0LHQpfWhhcyhlKXtyZXR1cm4gdGhpcy5maXJzdENoYXI8PWUmJmU8PXRoaXMubGFzdENoYXJ9Z2V0KGUpe3JldHVybiB0aGlzLmZpcnN0Q2hhcjw9ZSYmZTw9dGhpcy5sYXN0Q2hhcj9TdHJpbmcuZnJvbUNoYXJDb2RlKGUpOnZvaWQgMH1jaGFyQ29kZU9mKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPj10aGlzLmZpcnN0Q2hhciYmZTw9dGhpcy5sYXN0Q2hhcj9lOi0xfWFtZW5kKGUpe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgYW1lbmQoKSIpfX1jbGFzcyBDRkZGb250e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wcm9wZXJ0aWVzPXQ7Y29uc3QgYT1uZXcgQ0ZGUGFyc2VyKGUsdCwhMCk7dGhpcy5jZmY9YS5wYXJzZSgpO3RoaXMuY2ZmLmR1cGxpY2F0ZUZpcnN0R2x5cGgoKTtjb25zdCBuPW5ldyBDRkZDb21waWxlcih0aGlzLmNmZik7dGhpcy5zZWFjcz10aGlzLmNmZi5zZWFjczt0cnl7dGhpcy5kYXRhPW4uY29tcGlsZSgpfWNhdGNoKGEpe3dhcm4oYEZhaWxlZCB0byBjb21waWxlIGZvbnQgIiR7dC5sb2FkZWROYW1lfSI6ICIke2F9Ii5gKTtlLnJlc2V0KCk7dGhpcy5kYXRhPWUuZ2V0Qnl0ZXMoKX10aGlzLl9jcmVhdGVCdWlsdEluRW5jb2RpbmcoKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2ZmLmNoYXJTdHJpbmdzLmNvdW50fWdldENoYXJzZXQoKXtyZXR1cm4gdGhpcy5jZmYuY2hhcnNldC5jaGFyc2V0fWdldEdseXBoTWFwcGluZygpe2NvbnN0IGU9dGhpcy5jZmYsdD10aGlzLnByb3BlcnRpZXMse2NpZFRvR2lkTWFwOmEsY01hcDpufT10LHM9ZS5jaGFyc2V0LmNoYXJzZXQ7aWYodC5jb21wb3NpdGUpe2xldCB0O2lmKGE/LnNpemUpe3Q9bmV3IE1hcDtmb3IoY29uc3RbZSxuXW9mIGEpdC5zZXQobixlKX1jb25zdCByPW5ldyBNYXA7bGV0IGksbztpZihlLmlzQ0lERm9udClmb3Iobz0wO288cy5sZW5ndGg7bysrKXtjb25zdCBlPXNbb107aT1uLmNoYXJDb2RlT2YoZSk7dD8uaGFzKGkpJiYoaT10LmdldChpKSk7ci5zZXQoaSxvKX1lbHNlIGZvcihvPTA7bzxlLmNoYXJTdHJpbmdzLmNvdW50O28rKyl7aT1uLmNoYXJDb2RlT2Yobyk7ci5zZXQoaSxvKX1yZXR1cm4gcn1sZXQgcj1lLmVuY29kaW5nP2UuZW5jb2RpbmcuZW5jb2Rpbmc6bnVsbDt0LmlzSW50ZXJuYWxGb250JiYocj10LmRlZmF1bHRFbmNvZGluZyk7cmV0dXJuIHR5cGUxRm9udEdseXBoTWFwcGluZyh0LHIscyl9aGFzR2x5cGhJZChlKXtyZXR1cm4gdGhpcy5jZmYuaGFzR2x5cGhJZChlKX1fY3JlYXRlQnVpbHRJbkVuY29kaW5nKCl7Y29uc3R7Y2hhcnNldDplLGVuY29kaW5nOnR9PXRoaXMuY2ZmO2lmKCFlfHwhdClyZXR1cm47Y29uc3QgYT1lLmNoYXJzZXQsbj10LmVuY29kaW5nLHM9W107Zm9yKGNvbnN0IGUgaW4gbil7Y29uc3QgdD1uW2VdO2lmKHQ+PTApe2NvbnN0IG49YVt0XTtuJiYoc1tlXT1uKX19cy5sZW5ndGg+MCYmKHRoaXMucHJvcGVydGllcy5idWlsdEluRW5jb2Rpbmc9cyl9fWNsYXNzIENTU19GT05UX0lORk97c3RhdGljIHN0cmluZ3M9WyJmb250RmFtaWx5IiwiZm9udFdlaWdodCIsIml0YWxpY0FuZ2xlIl19Y2xhc3MgU1lTVEVNX0ZPTlRfSU5GT3tzdGF0aWMgc3RyaW5ncz1bImNzcyIsImxvYWRlZE5hbWUiLCJiYXNlRm9udE5hbWUiLCJzcmMiXX1jbGFzcyBGT05UX0lORk97c3RhdGljIGJvb2xzPVsiYmxhY2siLCJib2xkIiwiZGlzYWJsZUZvbnRGYWNlIiwiZm9udEV4dHJhUHJvcGVydGllcyIsImlzSW52YWxpZFBERmpzRm9udCIsImlzVHlwZTNGb250IiwiaXRhbGljIiwibWlzc2luZ0ZpbGUiLCJyZW1lYXN1cmUiLCJ2ZXJ0aWNhbCJdO3N0YXRpYyBzdHJpbmdzPVsiZmFsbGJhY2tOYW1lIiwibG9hZGVkTmFtZSJdO3N0YXRpYyBPRkZTRVRfQkJPWD1NYXRoLmNlaWwoMip0aGlzLmJvb2xzLmxlbmd0aC84KTtzdGF0aWMgT0ZGU0VUX0ZPTlRfTUFUUklYPXRoaXMuT0ZGU0VUX0JCT1grMSs4O3N0YXRpYyBPRkZTRVRfU1RSSU5HUz10aGlzLk9GRlNFVF9GT05UX01BVFJJWCsxKzQ4fWNsYXNzIFBBVFRFUk5fSU5GT3tzdGF0aWMgS0lORD0wO3N0YXRpYyBIQVNfQkJPWD0xO3N0YXRpYyBIQVNfQkFDS0dST1VORD0yO3N0YXRpYyBTSEFESU5HX1RZUEU9MztzdGF0aWMgTl9DT09SRD00O3N0YXRpYyBOX0NPTE9SPTg7c3RhdGljIE5fU1RPUD0xMjtzdGF0aWMgTl9GSUdVUkVTPTE2fWNsYXNzIEluZm9VdGlsc3tzdGF0aWMgZ2V0IGRlY29kZXIoKXtyZXR1cm4gc2hhZG93KHRoaXMsImRlY29kZXIiLG5ldyBUZXh0RGVjb2Rlcil9c3RhdGljIGdldCBlbmNvZGVyKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJlbmNvZGVyIixuZXcgVGV4dEVuY29kZXIpfX1mdW5jdGlvbiBlbmNvZGVTdHJpbmdzKGUsdCl7Y29uc3R7ZW5jb2RlcjphfT1JbmZvVXRpbHMsbj1uZXcgTWFwO2xldCBzPTA7Zm9yKGNvbnN0IHIgb2YgZSl7Y29uc3QgZT1hLmVuY29kZSh0W3JdKSxpPWUubGVuZ3RoO24uc2V0KGUsaSk7cys9NCtpfXJldHVybntlbmNvZGVkU3RyaW5nczpuLHN0cmluZ3NMZW5ndGg6c319ZnVuY3Rpb24gd3JpdGVTdHJpbmdzKGUsdCxhLG49MCl7Zm9yKGNvbnN0W3Mscl1vZiBlKXthLnNldFVpbnQzMihuLHIpO3Quc2V0KHMsbis0KTtuKz00K3J9cmV0dXJuIG59ZnVuY3Rpb24gY29tcGlsZUZvbnRJbmZvKGUpe2Z1bmN0aW9uIHdyaXRlQXJyYXkoZSx0LGEsbil7aWYoZSl7bC5zZXRVaW50OChmKyssdCk7Zm9yKGNvbnN0IHQgb2YgZSl7bFthXShmLHQsITApO2YrPW59fWVsc2V7bC5zZXRVaW50OChmKyssMCk7Zis9bip0fX1mdW5jdGlvbiB3cml0ZUJ1ZmZlcihlLHQpe2lmKCFlKXtsLnNldFVpbnQzMihmLDApO2YrPTQ7cmV0dXJufWNvbnN0IGE9ZS5ieXRlTGVuZ3RoO2wuc2V0VWludDMyKGYsYSk7YXNzZXJ0KGYrNCthPD1pLmJ5dGVMZW5ndGgsYGNvbXBpbGVGb250SW5mbzogQnVmZmVyIG92ZXJmbG93IGF0ICR7dH1gKTtvLnNldChuZXcgVWludDhBcnJheShlKSxmKzQpO2YrPTQrYX1jb25zdCB0PWUuc3lzdGVtRm9udEluZm8/ZnVuY3Rpb24gY29tcGlsZVN5c3RlbUZvbnRJbmZvKGUpe2NvbnN0e2VuY29kZWRTdHJpbmdzOnQsc3RyaW5nc0xlbmd0aDphfT1lbmNvZGVTdHJpbmdzKFNZU1RFTV9GT05UX0lORk8uc3RyaW5ncyxlKTtsZXQgbixzPTA7ZS5zdHlsZSYmKHtlbmNvZGVkU3RyaW5nczpuLHN0cmluZ3NMZW5ndGg6c309ZW5jb2RlU3RyaW5ncyhbInN0eWxlIiwid2VpZ2h0Il0sZS5zdHlsZSkpO2NvbnN0IHI9bmV3IEFycmF5QnVmZmVyKDQrYStzKSxpPW5ldyBVaW50OEFycmF5KHIpLG89bmV3IERhdGFWaWV3KHIpO2xldCBsPTA7by5zZXRVaW50MzIobCxhKTtsPXdyaXRlU3RyaW5ncyh0LGksbyxsKzQpO24mJihsPXdyaXRlU3RyaW5ncyhuLGksbyxsKSk7YXNzZXJ0KGw8PXIuYnl0ZUxlbmd0aCwiY29tcGlsZVN5c3RlbUZvbnRJbmZvOiBCdWZmZXIgb3ZlcmZsb3ciKTtyZXR1cm4gci50cmFuc2ZlclRvRml4ZWRMZW5ndGgobCl9KGUuc3lzdGVtRm9udEluZm8pOm51bGwsYT1lLmNzc0ZvbnRJbmZvP2Z1bmN0aW9uIGNvbXBpbGVDc3NGb250SW5mbyhlKXtjb25zdHtlbmNvZGVkU3RyaW5nczp0LHN0cmluZ3NMZW5ndGg6YX09ZW5jb2RlU3RyaW5ncyhDU1NfRk9OVF9JTkZPLnN0cmluZ3MsZSksbj1uZXcgQXJyYXlCdWZmZXIoYSk7YXNzZXJ0KHdyaXRlU3RyaW5ncyh0LG5ldyBVaW50OEFycmF5KG4pLG5ldyBEYXRhVmlldyhuKSk9PT1uLmJ5dGVMZW5ndGgsImNvbXBpbGVDc3NGb250SW5mbzogQnVmZmVyIG92ZXJmbG93Iik7cmV0dXJuIG59KGUuY3NzRm9udEluZm8pOm51bGwse2VuY29kZWRTdHJpbmdzOm4sc3RyaW5nc0xlbmd0aDpzfT1lbmNvZGVTdHJpbmdzKEZPTlRfSU5GTy5zdHJpbmdzLGUpLHI9Rk9OVF9JTkZPLk9GRlNFVF9TVFJJTkdTKzQrcys0Kyh0Py5ieXRlTGVuZ3RoPz8wKSs0KyhhPy5ieXRlTGVuZ3RoPz8wKSs0KyhlLmRhdGE/Lmxlbmd0aD8/MCksaT1uZXcgQXJyYXlCdWZmZXIociksbz1uZXcgVWludDhBcnJheShpKSxsPW5ldyBEYXRhVmlldyhpKTtsZXQgZj0wO2NvbnN0IGM9Rk9OVF9JTkZPLmJvb2xzLmxlbmd0aDtsZXQgaD0wLHU9MDtmb3IobGV0IHQ9MDt0PGM7dCsrKXtjb25zdCBhPWVbRk9OVF9JTkZPLmJvb2xzW3RdXTtofD0odm9pZCAwPT09YT8wOmE/MjoxKTw8dTt1Kz0yO2lmKDg9PT11fHx0PT09Yy0xKXtsLnNldFVpbnQ4KGYrKyxoKTtoPTA7dT0wfX1hc3NlcnQoZj09PUZPTlRfSU5GTy5PRkZTRVRfQkJPWCwiY29tcGlsZUZvbnRJbmZvOiBCb29sZWFuIHByb3BlcnRpZXMgb2Zmc2V0IG1pc21hdGNoIik7d3JpdGVBcnJheShlLmJib3gsNCwic2V0SW50MTYiLDIpO2Fzc2VydChmPT09Rk9OVF9JTkZPLk9GRlNFVF9GT05UX01BVFJJWCwiY29tcGlsZUZvbnRJbmZvOiBCQm94IHByb3BlcnRpZXMgb2Zmc2V0IG1pc21hdGNoIik7d3JpdGVBcnJheShlLmZvbnRNYXRyaXgsNiwic2V0RmxvYXQ2NCIsOCk7YXNzZXJ0KGY9PT1GT05UX0lORk8uT0ZGU0VUX1NUUklOR1MsImNvbXBpbGVGb250SW5mbzogRm9udE1hdHJpeCBwcm9wZXJ0aWVzIG9mZnNldCBtaXNtYXRjaCIpO2wuc2V0VWludDMyKGYscyk7Zj13cml0ZVN0cmluZ3MobixvLGwsZis0KTt3cml0ZUJ1ZmZlcih0LCJzeXN0ZW1Gb250SW5mbyIpO3dyaXRlQnVmZmVyKGEsImNzc0ZvbnRJbmZvIik7aWYodm9pZCAwPT09ZS5kYXRhKXtsLnNldFVpbnQzMihmLDApO2YrPTR9ZWxzZXtsLnNldFVpbnQzMihmLGUuZGF0YS5sZW5ndGgpO28uc2V0KGUuZGF0YSxmKzQpO2YrPTQrZS5kYXRhLmxlbmd0aH1hc3NlcnQoZjw9aS5ieXRlTGVuZ3RoLCJjb21waWxlRm9udEluZm86IEJ1ZmZlciBvdmVyZmxvdyIpO3JldHVybiBpLnRyYW5zZmVyVG9GaXhlZExlbmd0aChmKX1mdW5jdGlvbiBnZXRGbG9hdDIxNChlLHQpe3JldHVybiBlLmdldEludDE2KHQpLzE2Mzg0fWZ1bmN0aW9uIGdldFN1YnJvdXRpbmVCaWFzKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7cmV0dXJuIHQ+PTMzOTAwPzMyNzY4OnQ8MTI0MD8xMDc6MTEzMX1mdW5jdGlvbiBwYXJzZUNtYXAoZSx0LGEpe2NvbnN0IG49bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpLHM9MT09PW4uZ2V0VWludDE2KHQrMik/bi5nZXRVaW50MzIodCs4KTpuLmdldFVpbnQzMih0KzE2KSxyPW4uZ2V0VWludDE2KHQrcyk7bGV0IGksbyxsO2lmKDQ9PT1yKXtjb25zdCBlPW4uZ2V0VWludDE2KHQrcys2KT4+MTtvPXQrcysxNDtpPVtdO2ZvcihsPTA7bDxlO2wrKyxvKz0yKWlbbF09e2VuZDpuLmdldFVpbnQxNihvKX07bys9Mjtmb3IobD0wO2w8ZTtsKyssbys9MilpW2xdLnN0YXJ0PW4uZ2V0VWludDE2KG8pO2ZvcihsPTA7bDxlO2wrKyxvKz0yKWlbbF0uaWREZWx0YT1uLmdldFVpbnQxNihvKTtmb3IobD0wO2w8ZTtsKyssbys9Mil7bGV0IGU9bi5nZXRVaW50MTYobyk7aWYoMCE9PWUpe2lbbF0uaWRzPVtdO2ZvcihsZXQgdD0wLGE9aVtsXS5lbmQtaVtsXS5zdGFydCsxO3Q8YTt0Kyspe2lbbF0uaWRzW3RdPW4uZ2V0VWludDE2KG8rZSk7ZSs9Mn19fXJldHVybiBpfWlmKDEyPT09cil7Y29uc3QgZT1uLmdldFVpbnQzMih0K3MrMTIpO289dCtzKzE2O2k9W107Zm9yKGw9MDtsPGU7bCsrKXt0PW4uZ2V0VWludDMyKG8pO2kucHVzaCh7c3RhcnQ6dCxlbmQ6bi5nZXRVaW50MzIobys0KSxpZERlbHRhOm4uZ2V0VWludDMyKG8rOCktdH0pO28rPTEyfXJldHVybiBpfXRocm93IG5ldyBGb3JtYXRFcnJvcihgdW5zdXBwb3J0ZWQgY21hcDogJHtyfWApfWZ1bmN0aW9uIHBhcnNlQ2ZmKGUsdCxhLG4pe2NvbnN0IHM9bmV3IENGRlBhcnNlcihuZXcgU3RyZWFtKGUsdCxhLXQpLHt9LG4pLnBhcnNlKCk7cmV0dXJue2dseXBoczpzLmNoYXJTdHJpbmdzLm9iamVjdHMsc3VicnM6cy50b3BEaWN0LnByaXZhdGVEaWN0Py5zdWJyc0luZGV4Py5vYmplY3RzLGdzdWJyczpzLmdsb2JhbFN1YnJJbmRleD8ub2JqZWN0cyxpc0NGRkNJREZvbnQ6cy5pc0NJREZvbnQsZmRTZWxlY3Q6cy5mZFNlbGVjdCxmZEFycmF5OnMuZmRBcnJheX19ZnVuY3Rpb24gbG9va3VwQ21hcChlLHQpe2NvbnN0IGE9dC5jb2RlUG9pbnRBdCgwKTtsZXQgbj0wLHM9MCxyPWUubGVuZ3RoLTE7Zm9yKDtzPHI7KXtjb25zdCB0PXMrcisxPj4xO2E8ZVt0XS5zdGFydD9yPXQtMTpzPXR9ZVtzXS5zdGFydDw9YSYmYTw9ZVtzXS5lbmQmJihuPWVbc10uaWREZWx0YSsoZVtzXS5pZHM/ZVtzXS5pZHNbYS1lW3NdLnN0YXJ0XTphKSY2NTUzNSk7cmV0dXJue2NoYXJDb2RlOmEsZ2x5cGhJZDpufX1mdW5jdGlvbiBjb21waWxlR2x5ZihlLHQsYSxuPW5ldyBTZXQpe2lmKCFlPy5sZW5ndGgpcmV0dXJuO2lmKG4uaGFzKGUpKXt3YXJuKCJjb21waWxlR2x5Zjogc2tpcHBpbmcgcmVjdXJzaXZlIGNvbXBvc2l0ZSBnbHlwaCByZWZlcmVuY2UuIik7cmV0dXJufW4uYWRkKGUpO2Z1bmN0aW9uIG1vdmVUbyhlLGEpe2wmJnQuYWRkKFl0LGwpO2w9W2UsYV07dC5hZGQoJHQsW2UsYV0pfWZ1bmN0aW9uIGxpbmVUbyhlLGEpe3QuYWRkKFl0LFtlLGFdKX1mdW5jdGlvbiBxdWFkcmF0aWNDdXJ2ZVRvKGUsYSxuLHMpe3QuYWRkKFF0LFtlLGEsbixzXSl9Y29uc3Qgcz1uZXcgRGF0YVZpZXcoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZUxlbmd0aCk7bGV0IHI9MDtjb25zdCBpPXMuZ2V0SW50MTYocik7bGV0IG8sbD1udWxsLGY9MCxjPTA7cis9MTA7aWYoaTwwKWRve289cy5nZXRVaW50MTYocik7Y29uc3QgaT1zLmdldFVpbnQxNihyKzIpO3IrPTQ7bGV0IGwsaDtpZigxJm8pe2lmKDImbyl7bD1zLmdldEludDE2KHIpO2g9cy5nZXRJbnQxNihyKzIpfWVsc2V7bD1zLmdldFVpbnQxNihyKTtoPXMuZ2V0VWludDE2KHIrMil9cis9NH1lbHNlIGlmKDImbyl7bD1zLmdldEludDgocisrKTtoPXMuZ2V0SW50OChyKyspfWVsc2V7bD1lW3IrK107aD1lW3IrK119aWYoMiZvKXtmPWw7Yz1ofWVsc2V7Zj0wO2M9MH1sZXQgdT0xLG09MSxwPTAsZD0wO2lmKDgmbyl7dT1tPWdldEZsb2F0MjE0KHMscik7cis9Mn1lbHNlIGlmKDY0Jm8pe3U9Z2V0RmxvYXQyMTQocyxyKTttPWdldEZsb2F0MjE0KHMscisyKTtyKz00fWVsc2UgaWYoMTI4Jm8pe3U9Z2V0RmxvYXQyMTQocyxyKTtwPWdldEZsb2F0MjE0KHMscisyKTtkPWdldEZsb2F0MjE0KHMscis0KTttPWdldEZsb2F0MjE0KHMscis2KTtyKz04fWNvbnN0IGc9YS5nbHlwaHNbaV07aWYoZyl7dC5zYXZlKCk7dC50cmFuc2Zvcm0oW3UscCxkLG0sZixjXSk7Y29tcGlsZUdseWYoZyx0LGEsbik7dC5yZXN0b3JlKCl9fXdoaWxlKDMyJm8pO2Vsc2V7Y29uc3QgdD1bXTtsZXQgYSxuO2ZvcihhPTA7YTxpO2ErKyl7dC5wdXNoKHMuZ2V0VWludDE2KHIpKTtyKz0yfXIrPTIrcy5nZXRVaW50MTYocik7Y29uc3QgbD10LmF0KC0xKSsxLGg9W107Zm9yKDtoLmxlbmd0aDxsOyl7bz1lW3IrK107bGV0IHQ9MTs4Jm8mJih0Kz1lW3IrK10pO2Zvcig7dC0tID4wOyloLnB1c2goe2ZsYWdzOm99KX1mb3IoYT0wO2E8bDthKyspe3N3aXRjaCgxOCZoW2FdLmZsYWdzKXtjYXNlIDA6Zis9cy5nZXRJbnQxNihyKTtyKz0yO2JyZWFrO2Nhc2UgMjpmLT1lW3IrK107YnJlYWs7Y2FzZSAxODpmKz1lW3IrK119aFthXS54PWZ9Zm9yKGE9MDthPGw7YSsrKXtzd2l0Y2goMzYmaFthXS5mbGFncyl7Y2FzZSAwOmMrPXMuZ2V0SW50MTYocik7cis9MjticmVhaztjYXNlIDQ6Yy09ZVtyKytdO2JyZWFrO2Nhc2UgMzY6Yys9ZVtyKytdfWhbYV0ueT1jfWxldCB1PTA7Zm9yKHI9MDtyPGk7cisrKXtjb25zdCBlPXRbcl0scz1oLnNsaWNlKHUsZSsxKTtpZigxJnNbMF0uZmxhZ3Mpcy5wdXNoKHNbMF0pO2Vsc2UgaWYoMSZzLmF0KC0xKS5mbGFncylzLnVuc2hpZnQocy5hdCgtMSkpO2Vsc2V7Y29uc3QgZT17ZmxhZ3M6MSx4OihzWzBdLngrcy5hdCgtMSkueCkvMix5OihzWzBdLnkrcy5hdCgtMSkueSkvMn07cy51bnNoaWZ0KGUpO3MucHVzaChlKX1tb3ZlVG8oc1swXS54LHNbMF0ueSk7Zm9yKGE9MSxuPXMubGVuZ3RoO2E8bjthKyspaWYoMSZzW2FdLmZsYWdzKWxpbmVUbyhzW2FdLngsc1thXS55KTtlbHNlIGlmKDEmc1thKzFdLmZsYWdzKXtxdWFkcmF0aWNDdXJ2ZVRvKHNbYV0ueCxzW2FdLnksc1thKzFdLngsc1thKzFdLnkpO2ErK31lbHNlIHF1YWRyYXRpY0N1cnZlVG8oc1thXS54LHNbYV0ueSwoc1thXS54K3NbYSsxXS54KS8yLChzW2FdLnkrc1thKzFdLnkpLzIpO3U9ZSsxfX1uLmRlbGV0ZShlKX1mdW5jdGlvbiBjb21waWxlQ2hhclN0cmluZyhlLHQsYSxuKXtmdW5jdGlvbiBtb3ZlVG8oZSxhKXtsJiZ0LmFkZChZdCxsKTtsPVtlLGFdO3QuYWRkKCR0LFtlLGFdKX1mdW5jdGlvbiBsaW5lVG8oZSxhKXt0LmFkZChZdCxbZSxhXSl9ZnVuY3Rpb24gYmV6aWVyQ3VydmVUbyhlLGEsbixzLHIsaSl7dC5hZGQoSnQsW2UsYSxuLHMscixpXSl9Y29uc3Qgcz1bXTtsZXQgcj0wLGk9MCxvPTAsbD1udWxsOyFmdW5jdGlvbiBwYXJzZShlKXtjb25zdCBsPW5ldyBEYXRhVmlldyhlLmJ1ZmZlcixlLmJ5dGVPZmZzZXQsZS5ieXRlTGVuZ3RoKTtsZXQgZj0wO2Zvcig7ZjxlLmxlbmd0aDspe2xldCBjLGgsdSxtLHAsZCxnLGIsdyxqPSExLGs9ZVtmKytdO3N3aXRjaChrKXtjYXNlIDE6Y2FzZSAzOmNhc2UgMTg6Y2FzZSAyMzpvKz1zLmxlbmd0aD4+MTtqPSEwO2JyZWFrO2Nhc2UgNDppKz1zLnBvcCgpO21vdmVUbyhyLGkpO2o9ITA7YnJlYWs7Y2FzZSA1OmZvcig7cy5sZW5ndGg+MDspe3IrPXMuc2hpZnQoKTtpKz1zLnNoaWZ0KCk7bGluZVRvKHIsaSl9YnJlYWs7Y2FzZSA2OmZvcig7cy5sZW5ndGg+MDspe3IrPXMuc2hpZnQoKTtsaW5lVG8ocixpKTtpZigwPT09cy5sZW5ndGgpYnJlYWs7aSs9cy5zaGlmdCgpO2xpbmVUbyhyLGkpfWJyZWFrO2Nhc2UgNzpmb3IoO3MubGVuZ3RoPjA7KXtpKz1zLnNoaWZ0KCk7bGluZVRvKHIsaSk7aWYoMD09PXMubGVuZ3RoKWJyZWFrO3IrPXMuc2hpZnQoKTtsaW5lVG8ocixpKX1icmVhaztjYXNlIDg6Zm9yKDtzLmxlbmd0aD4wOyl7Yz1yK3Muc2hpZnQoKTt1PWkrcy5zaGlmdCgpO2g9YytzLnNoaWZ0KCk7bT11K3Muc2hpZnQoKTtyPWgrcy5zaGlmdCgpO2k9bStzLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLHUsaCxtLHIsaSl9YnJlYWs7Y2FzZSAxMDpiPXMucG9wKCk7dz1udWxsO2lmKGEuaXNDRkZDSURGb250KXtjb25zdCBlPWEuZmRTZWxlY3QuZ2V0RkRJbmRleChuKTtpZihlPj0wJiZlPGEuZmRBcnJheS5sZW5ndGgpe2NvbnN0IHQ9YS5mZEFycmF5W2VdO2xldCBuO3QucHJpdmF0ZURpY3Q/LnN1YnJzSW5kZXgmJihuPXQucHJpdmF0ZURpY3Quc3VicnNJbmRleC5vYmplY3RzKTtpZihuKXtiKz1nZXRTdWJyb3V0aW5lQmlhcyhuKTt3PW5bYl19fWVsc2Ugd2FybigiSW52YWxpZCBmZCBpbmRleCBmb3IgZ2x5cGggaW5kZXguIil9ZWxzZSB3PWEuc3VicnNbYithLnN1YnJzQmlhc107dyYmcGFyc2Uodyk7YnJlYWs7Y2FzZSAxMTpyZXR1cm47Y2FzZSAxMjprPWVbZisrXTtzd2l0Y2goayl7Y2FzZSAzNDpjPXIrcy5zaGlmdCgpO2g9YytzLnNoaWZ0KCk7cD1pK3Muc2hpZnQoKTtyPWgrcy5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxpLGgscCxyLHApO2M9citzLnNoaWZ0KCk7aD1jK3Muc2hpZnQoKTtyPWgrcy5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxwLGgsaSxyLGkpO2JyZWFrO2Nhc2UgMzU6Yz1yK3Muc2hpZnQoKTt1PWkrcy5zaGlmdCgpO2g9YytzLnNoaWZ0KCk7bT11K3Muc2hpZnQoKTtyPWgrcy5zaGlmdCgpO2k9bStzLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLHUsaCxtLHIsaSk7Yz1yK3Muc2hpZnQoKTt1PWkrcy5zaGlmdCgpO2g9YytzLnNoaWZ0KCk7bT11K3Muc2hpZnQoKTtyPWgrcy5zaGlmdCgpO2k9bStzLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLHUsaCxtLHIsaSk7cy5wb3AoKTticmVhaztjYXNlIDM2OmM9citzLnNoaWZ0KCk7cD1pK3Muc2hpZnQoKTtoPWMrcy5zaGlmdCgpO2Q9cCtzLnNoaWZ0KCk7cj1oK3Muc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMscCxoLGQscixkKTtjPXIrcy5zaGlmdCgpO2g9YytzLnNoaWZ0KCk7Zz1kK3Muc2hpZnQoKTtyPWgrcy5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxkLGgsZyxyLGkpO2JyZWFrO2Nhc2UgMzc6Y29uc3QgZT1yLHQ9aTtjPXIrcy5zaGlmdCgpO3U9aStzLnNoaWZ0KCk7aD1jK3Muc2hpZnQoKTttPXUrcy5zaGlmdCgpO3I9aCtzLnNoaWZ0KCk7aT1tK3Muc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsdSxoLG0scixpKTtjPXIrcy5zaGlmdCgpO3U9aStzLnNoaWZ0KCk7aD1jK3Muc2hpZnQoKTttPXUrcy5zaGlmdCgpO3I9aDtpPW07TWF0aC5hYnMoci1lKT5NYXRoLmFicyhpLXQpP3IrPXMuc2hpZnQoKTppKz1zLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLHUsaCxtLHIsaSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6IDEyICR7a31gKX1icmVhaztjYXNlIDE0OmlmKHMubGVuZ3RoPj00KXtjb25zdCBlPXMucG9wKCksbj1zLnBvcCgpO2k9cy5wb3AoKTtyPXMucG9wKCk7dC5zYXZlKCk7dC50cmFuc2xhdGUocixpKTtsZXQgbz1sb29rdXBDbWFwKGEuY21hcCxTdHJpbmcuZnJvbUNoYXJDb2RlKGEuZ2x5cGhOYW1lTWFwW21uW2VdXSkpO2NvbXBpbGVDaGFyU3RyaW5nKGEuZ2x5cGhzW28uZ2x5cGhJZF0sdCxhLG8uZ2x5cGhJZCk7dC5yZXN0b3JlKCk7bz1sb29rdXBDbWFwKGEuY21hcCxTdHJpbmcuZnJvbUNoYXJDb2RlKGEuZ2x5cGhOYW1lTWFwW21uW25dXSkpO2NvbXBpbGVDaGFyU3RyaW5nKGEuZ2x5cGhzW28uZ2x5cGhJZF0sdCxhLG8uZ2x5cGhJZCl9cmV0dXJuO2Nhc2UgMTk6Y2FzZSAyMDpvKz1zLmxlbmd0aD4+MTtmKz1vKzc+PjM7aj0hMDticmVhaztjYXNlIDIxOmkrPXMucG9wKCk7cis9cy5wb3AoKTttb3ZlVG8ocixpKTtqPSEwO2JyZWFrO2Nhc2UgMjI6cis9cy5wb3AoKTttb3ZlVG8ocixpKTtqPSEwO2JyZWFrO2Nhc2UgMjQ6Zm9yKDtzLmxlbmd0aD4yOyl7Yz1yK3Muc2hpZnQoKTt1PWkrcy5zaGlmdCgpO2g9YytzLnNoaWZ0KCk7bT11K3Muc2hpZnQoKTtyPWgrcy5zaGlmdCgpO2k9bStzLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLHUsaCxtLHIsaSl9cis9cy5zaGlmdCgpO2krPXMuc2hpZnQoKTtsaW5lVG8ocixpKTticmVhaztjYXNlIDI1OmZvcig7cy5sZW5ndGg+Njspe3IrPXMuc2hpZnQoKTtpKz1zLnNoaWZ0KCk7bGluZVRvKHIsaSl9Yz1yK3Muc2hpZnQoKTt1PWkrcy5zaGlmdCgpO2g9YytzLnNoaWZ0KCk7bT11K3Muc2hpZnQoKTtyPWgrcy5zaGlmdCgpO2k9bStzLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLHUsaCxtLHIsaSk7YnJlYWs7Y2FzZSAyNjpzLmxlbmd0aCUyJiYocis9cy5zaGlmdCgpKTtmb3IoO3MubGVuZ3RoPjA7KXtjPXI7dT1pK3Muc2hpZnQoKTtoPWMrcy5zaGlmdCgpO209dStzLnNoaWZ0KCk7cj1oO2k9bStzLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLHUsaCxtLHIsaSl9YnJlYWs7Y2FzZSAyNzpzLmxlbmd0aCUyJiYoaSs9cy5zaGlmdCgpKTtmb3IoO3MubGVuZ3RoPjA7KXtjPXIrcy5zaGlmdCgpO3U9aTtoPWMrcy5zaGlmdCgpO209dStzLnNoaWZ0KCk7cj1oK3Muc2hpZnQoKTtpPW07YmV6aWVyQ3VydmVUbyhjLHUsaCxtLHIsaSl9YnJlYWs7Y2FzZSAyODpzLnB1c2gobC5nZXRJbnQxNihmKSk7Zis9MjticmVhaztjYXNlIDI5OmI9cy5wb3AoKSthLmdzdWJyc0JpYXM7dz1hLmdzdWJyc1tiXTt3JiZwYXJzZSh3KTticmVhaztjYXNlIDMwOmZvcig7cy5sZW5ndGg+MDspe2M9cjt1PWkrcy5zaGlmdCgpO2g9YytzLnNoaWZ0KCk7bT11K3Muc2hpZnQoKTtyPWgrcy5zaGlmdCgpO2k9bSsoMT09PXMubGVuZ3RoP3Muc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGMsdSxoLG0scixpKTtpZigwPT09cy5sZW5ndGgpYnJlYWs7Yz1yK3Muc2hpZnQoKTt1PWk7aD1jK3Muc2hpZnQoKTttPXUrcy5zaGlmdCgpO2k9bStzLnNoaWZ0KCk7cj1oKygxPT09cy5sZW5ndGg/cy5zaGlmdCgpOjApO2JlemllckN1cnZlVG8oYyx1LGgsbSxyLGkpfWJyZWFrO2Nhc2UgMzE6Zm9yKDtzLmxlbmd0aD4wOyl7Yz1yK3Muc2hpZnQoKTt1PWk7aD1jK3Muc2hpZnQoKTttPXUrcy5zaGlmdCgpO2k9bStzLnNoaWZ0KCk7cj1oKygxPT09cy5sZW5ndGg/cy5zaGlmdCgpOjApO2JlemllckN1cnZlVG8oYyx1LGgsbSxyLGkpO2lmKDA9PT1zLmxlbmd0aClicmVhaztjPXI7dT1pK3Muc2hpZnQoKTtoPWMrcy5zaGlmdCgpO209dStzLnNoaWZ0KCk7cj1oK3Muc2hpZnQoKTtpPW0rKDE9PT1zLmxlbmd0aD9zLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyhjLHUsaCxtLHIsaSl9YnJlYWs7ZGVmYXVsdDppZihrPDMyKXRocm93IG5ldyBGb3JtYXRFcnJvcihgdW5rbm93biBvcGVyYXRvcjogJHtrfWApO2lmKGs8MjQ3KXMucHVzaChrLTEzOSk7ZWxzZSBpZihrPDI1MSlzLnB1c2goMjU2KihrLTI0NykrZVtmKytdKzEwOCk7ZWxzZSBpZihrPDI1NSlzLnB1c2goMjU2Ki0oay0yNTEpLWVbZisrXS0xMDgpO2Vsc2V7cy5wdXNoKGwuZ2V0SW50MzIoZikvNjU1MzYpO2YrPTR9fWomJihzLmxlbmd0aD0wKX19KGUpfWNsYXNzIENvbW1hbmRze2NtZHM9W107dHJhbnNmb3JtU3RhY2s9W107Y3VycmVudFRyYW5zZm9ybT1bMSwwLDAsMSwwLDBdO2FkZChlLHQpe2lmKHQpe2NvbnN0e2N1cnJlbnRUcmFuc2Zvcm06YX09dGhpcztmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKz0yKVV0aWwuYXBwbHlUcmFuc2Zvcm0odCxhLGUpO3RoaXMuY21kcy5wdXNoKGUsLi4udCl9ZWxzZSB0aGlzLmNtZHMucHVzaChlKX10cmFuc2Zvcm0oZSl7dGhpcy5jdXJyZW50VHJhbnNmb3JtPVV0aWwudHJhbnNmb3JtKHRoaXMuY3VycmVudFRyYW5zZm9ybSxlKX10cmFuc2xhdGUoZSx0KXt0aGlzLnRyYW5zZm9ybShbMSwwLDAsMSxlLHRdKX1zYXZlKCl7dGhpcy50cmFuc2Zvcm1TdGFjay5wdXNoKHRoaXMuY3VycmVudFRyYW5zZm9ybS5zbGljZSgpKX1yZXN0b3JlKCl7dGhpcy5jdXJyZW50VHJhbnNmb3JtPXRoaXMudHJhbnNmb3JtU3RhY2sucG9wKCl8fFsxLDAsMCwxLDAsMF19Z2V0UGF0aCgpe3JldHVybiBGZWF0dXJlVGVzdC5pc0Zsb2F0MTZBcnJheVN1cHBvcnRlZD9uZXcgRmxvYXQxNkFycmF5KHRoaXMuY21kcyk6bmV3IEZsb2F0MzJBcnJheSh0aGlzLmNtZHMpfX1jbGFzcyBDb21waWxlZEZvbnR7I2dlPW5ldyBTZXQ7I2JlPW5ldyBNYXA7Y29uc3RydWN0b3IoZSl7dGhpcy5mb250TWF0cml4PWV9c3RhdGljIGdldCBOT09QKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJOT09QIixGZWF0dXJlVGVzdC5pc0Zsb2F0MTZBcnJheVN1cHBvcnRlZD9uZXcgRmxvYXQxNkFycmF5KDApOm5ldyBGbG9hdDMyQXJyYXkoMCkpfWdldFBhdGgoZSl7Y29uc3R7Y2hhckNvZGU6dCxnbHlwaElkOmF9PWxvb2t1cENtYXAodGhpcy5jbWFwLGUpO2lmKHRoaXMuI2JlLmhhcyhhKSYmdGhpcy4jZ2UuaGFzKHQpKXJldHVybiBudWxsO2NvbnN0IG49dGhpcy4jYmUuZ2V0T3JJbnNlcnRDb21wdXRlZChhLCgpPT57dHJ5e3JldHVybiB0aGlzLmNvbXBpbGVHbHlwaCh0aGlzLmdseXBoc1thXSxhKX1jYXRjaChlKXtyZXR1cm4gZX19KTt0aGlzLiNnZS5hZGQodCk7aWYobiBpbnN0YW5jZW9mIEVycm9yKXRocm93IG47cmV0dXJuIGZ1bmN0aW9uIGNvbXBpbGVGb250UGF0aEluZm8oZSl7cmV0dXJuIGUuc2xpY2UoKS5idWZmZXJ9KG4pfWNvbXBpbGVHbHlwaChlLHQpe2lmKCFlPy5sZW5ndGh8fDE0PT09ZVswXSlyZXR1cm4gQ29tcGlsZWRGb250Lk5PT1A7bGV0IGE9dGhpcy5mb250TWF0cml4O2lmKHRoaXMuaXNDRkZDSURGb250KXtjb25zdCBlPXRoaXMuZmRTZWxlY3QuZ2V0RkRJbmRleCh0KTtpZihlPj0wJiZlPHRoaXMuZmRBcnJheS5sZW5ndGgpe2E9dGhpcy5mZEFycmF5W2VdLmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpfHxufWVsc2Ugd2FybigiSW52YWxpZCBmZCBpbmRleCBmb3IgZ2x5cGggaW5kZXguIil9YXNzZXJ0KGlzTnVtYmVyQXJyYXkoYSw2KSwiRXhwZWN0ZWQgYSB2YWxpZCBmb250TWF0cml4LiIpO2NvbnN0IHM9bmV3IENvbW1hbmRzO3MudHJhbnNmb3JtKGEuc2xpY2UoKSk7dGhpcy5jb21waWxlR2x5cGhJbXBsKGUscyx0KTtzLmFkZChadCk7cmV0dXJuIHMuZ2V0UGF0aCgpfWNvbXBpbGVHbHlwaEltcGwoKXt1bnJlYWNoYWJsZSgiQ2hpbGRyZW4gY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50IHRoaXMuIil9fWNsYXNzIFRydWVUeXBlQ29tcGlsZWQgZXh0ZW5kcyBDb21waWxlZEZvbnR7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKGF8fFs0ODhlLTYsMCwwLDQ4OGUtNiwwLDBdKTt0aGlzLmdseXBocz1lO3RoaXMuY21hcD10fWNvbXBpbGVHbHlwaEltcGwoZSx0KXtjb21waWxlR2x5ZihlLHQsdGhpcyl9fWNsYXNzIFR5cGUyQ29tcGlsZWQgZXh0ZW5kcyBDb21waWxlZEZvbnR7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKGF8fFsuMDAxLDAsMCwuMDAxLDAsMF0pO3RoaXMuZ2x5cGhzPWUuZ2x5cGhzO3RoaXMuZ3N1YnJzPWUuZ3N1YnJzfHxbXTt0aGlzLnN1YnJzPWUuc3VicnN8fFtdO3RoaXMuY21hcD10O3RoaXMuZ2x5cGhOYW1lTWFwPWJuKCk7dGhpcy5nc3VicnNCaWFzPWdldFN1YnJvdXRpbmVCaWFzKHRoaXMuZ3N1YnJzKTt0aGlzLnN1YnJzQmlhcz1nZXRTdWJyb3V0aW5lQmlhcyh0aGlzLnN1YnJzKTt0aGlzLmlzQ0ZGQ0lERm9udD1lLmlzQ0ZGQ0lERm9udDt0aGlzLmZkU2VsZWN0PWUuZmRTZWxlY3Q7dGhpcy5mZEFycmF5PWUuZmRBcnJheX1jb21waWxlR2x5cGhJbXBsKGUsdCxhKXtjb21waWxlQ2hhclN0cmluZyhlLHQsdGhpcyxhKX19Y2xhc3MgRm9udFJlbmRlcmVyRmFjdG9yeXtzdGF0aWMgY3JlYXRlKGUsdCl7Y29uc3QgYT1uZXcgVWludDhBcnJheShlLmRhdGEpLG49bmV3IERhdGFWaWV3KGEuYnVmZmVyKTtsZXQgcyxyLGksbyxsLGY7Y29uc3QgYz1uLmdldFVpbnQxNig0KTtmb3IobGV0IGU9MCxoPTEyO2U8YztlKyssaCs9MTYpe2NvbnN0IGU9Ynl0ZXNUb1N0cmluZyhhLnN1YmFycmF5KGgsaCs0KSksYz1uLmdldFVpbnQzMihoKzgpLHU9bi5nZXRVaW50MzIoaCsxMik7c3dpdGNoKGUpe2Nhc2UiY21hcCI6cz1wYXJzZUNtYXAoYSxjKTticmVhaztjYXNlImdseWYiOnI9YS5zdWJhcnJheShjLGMrdSk7YnJlYWs7Y2FzZSJsb2NhIjppPWEuc3ViYXJyYXkoYyxjK3UpO2JyZWFrO2Nhc2UiaGVhZCI6Zj1uLmdldFVpbnQxNihjKzE4KTtsPW4uZ2V0VWludDE2KGMrNTApO2JyZWFrO2Nhc2UiQ0ZGICI6bz1wYXJzZUNmZihhLGMsYyt1LHQpfX1pZihyKXtjb25zdCB0PWY/WzEvZiwwLDAsMS9mLDAsMF06ZS5mb250TWF0cml4O3JldHVybiBuZXcgVHJ1ZVR5cGVDb21waWxlZChmdW5jdGlvbiBwYXJzZUdseWZUYWJsZShlLHQsYSl7Y29uc3Qgbj1uZXcgRGF0YVZpZXcodC5idWZmZXIsdC5ieXRlT2Zmc2V0LHQuYnl0ZUxlbmd0aCk7bGV0IHMscjtpZihhKXtzPTQ7cj0oZSx0KT0+ZS5nZXRVaW50MzIodCl9ZWxzZXtzPTI7cj0oZSx0KT0+MiplLmdldFVpbnQxNih0KX1jb25zdCBpPVtdO2xldCBvPXIobiwwKTtmb3IobGV0IGE9czthPHQubGVuZ3RoO2ErPXMpe2NvbnN0IHQ9cihuLGEpO2kucHVzaChlLnN1YmFycmF5KG8sdCkpO289dH1yZXR1cm4gaX0ocixpLGwpLHMsdCl9cmV0dXJuIG5ldyBUeXBlMkNvbXBpbGVkKG8scyxlLmZvbnRNYXRyaXgpfX1jb25zdCBRbj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5Db3VyaWVyPTYwMDtlWyJDb3VyaWVyLUJvbGQiXT02MDA7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPTYwMDtlWyJDb3VyaWVyLU9ibGlxdWUiXT02MDA7ZS5IZWx2ZXRpY2E9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTI3ODtlLnF1b3RlZGJsPTM1NTtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTY2NztlLnF1b3RlcmlnaHQ9MjIyO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj01NTY7ZS5hdD0xMDE1O2UuQT02Njc7ZS5CPTY2NztlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01MDA7ZS5LPTY2NztlLkw9NTU2O2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTI3ODtlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9Mjc4O2UuYXNjaWljaXJjdW09NDY5O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9MjIyO2UuYT01NTY7ZS5iPTU1NjtlLmM9NTAwO2UuZD01NTY7ZS5lPTU1NjtlLmY9Mjc4O2UuZz01NTY7ZS5oPTU1NjtlLmk9MjIyO2Uuaj0yMjI7ZS5rPTUwMDtlLmw9MjIyO2UubT04MzM7ZS5uPTU1NjtlLm89NTU2O2UucD01NTY7ZS5xPTU1NjtlLnI9MzMzO2Uucz01MDA7ZS50PTI3ODtlLnU9NTU2O2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTUwMDtlLmJyYWNlbGVmdD0zMzQ7ZS5iYXI9MjYwO2UuYnJhY2VyaWdodD0zMzQ7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MTkxO2UucXVvdGVkYmxsZWZ0PTMzMztlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01MDA7ZS5mbD01MDA7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTM3O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTIyMjtlLnF1b3RlZGJsYmFzZT0zMzM7ZS5xdW90ZWRibHJpZ2h0PTMzMztlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD01NTY7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yMjI7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD02Njc7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD01MDA7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01MDA7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTIyMjtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01MDA7ZS5zY2VkaWxsYT01MDA7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NjY3O2UucmNhcm9uPTMzMztlLmNjZWRpbGxhPTUwMDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj02NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT02Njc7ZS5BYnJldmU9NjY3O2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTU1NjtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTUwMDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yNjA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTMzMztlLm9tYWNyb249NTU2O2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yMjI7ZS50Y2Fyb249MzE3O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02Njc7ZS5BZGllcmVzaXM9NjY3O2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTIyMjtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NTU2O2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTAwO2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01NTY7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NTU2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTU2O2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTU2O2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249Mjk5O2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT01NTY7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NTU2O2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTU2O2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTU1NjtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTU2O2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9MzMzO2UuTnRpbGRlPTcyMjtlLm90aWxkZT01NTY7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTU1NjtlLkF0aWxkZT02Njc7ZS5Bb2dvbmVrPTY2NztlLkFyaW5nPTY2NztlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTU1NjtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTU2O2UuZXRoPTU1NjtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pO2VbIkhlbHZldGljYS1Cb2xkIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQ3NDtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTcyMjtlLnF1b3RlcmlnaHQ9Mjc4O2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj02MTE7ZS5hdD05NzU7ZS5BPTcyMjtlLkI9NzIyO2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTU1NjtlLks9NzIyO2UuTD02MTE7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODQ7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yNzg7ZS5hPTU1NjtlLmI9NjExO2UuYz01NTY7ZS5kPTYxMTtlLmU9NTU2O2UuZj0zMzM7ZS5nPTYxMTtlLmg9NjExO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTU2O2UubD0yNzg7ZS5tPTg4OTtlLm49NjExO2Uubz02MTE7ZS5wPTYxMTtlLnE9NjExO2Uucj0zODk7ZS5zPTU1NjtlLnQ9MzMzO2UudT02MTE7ZS52PTU1NjtlLnc9Nzc4O2UueD01NTY7ZS55PTU1NjtlLno9NTAwO2UuYnJhY2VsZWZ0PTM4OTtlLmJhcj0yODA7ZS5icmFjZXJpZ2h0PTM4OTtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0yMzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTYxMTtlLmZsPTYxMTtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01NTY7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9Mjc4O2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NjExO2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTU2O2Uuc2NvbW1hYWNjZW50PTU1NjtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTYxMTtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTU1NjtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTU1NjtlLnNjZWRpbGxhPTU1NjtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NjExO2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NTU2O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTc0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NjExO2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NjExO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01NTY7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTU2O2UubmFjdXRlPTYxMTtlLnVtYWNyb249NjExO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI4MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj02MTE7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zODk7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT02MTE7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01NTY7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTYxMTtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT02MTE7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD02MTE7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD02MTE7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj00MDA7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD02MTE7ZS5udGlsZGU9NjExO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NjExO2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT02MTE7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTYxMTtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTYxMTtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj02MTE7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NjExO2UudWRpZXJlc2lzPTYxMTtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD02MTE7ZS5ldGg9NjExO2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD02MTE7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSk7ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQ3NDtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTcyMjtlLnF1b3RlcmlnaHQ9Mjc4O2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj02MTE7ZS5hdD05NzU7ZS5BPTcyMjtlLkI9NzIyO2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTU1NjtlLks9NzIyO2UuTD02MTE7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODQ7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yNzg7ZS5hPTU1NjtlLmI9NjExO2UuYz01NTY7ZS5kPTYxMTtlLmU9NTU2O2UuZj0zMzM7ZS5nPTYxMTtlLmg9NjExO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTU2O2UubD0yNzg7ZS5tPTg4OTtlLm49NjExO2Uubz02MTE7ZS5wPTYxMTtlLnE9NjExO2Uucj0zODk7ZS5zPTU1NjtlLnQ9MzMzO2UudT02MTE7ZS52PTU1NjtlLnc9Nzc4O2UueD01NTY7ZS55PTU1NjtlLno9NTAwO2UuYnJhY2VsZWZ0PTM4OTtlLmJhcj0yODA7ZS5icmFjZXJpZ2h0PTM4OTtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0yMzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTYxMTtlLmZsPTYxMTtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01NTY7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9Mjc4O2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NjExO2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTU2O2Uuc2NvbW1hYWNjZW50PTU1NjtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTYxMTtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTU1NjtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTU1NjtlLnNjZWRpbGxhPTU1NjtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NjExO2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NTU2O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTc0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NjExO2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NjExO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01NTY7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTU2O2UubmFjdXRlPTYxMTtlLnVtYWNyb249NjExO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI4MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj02MTE7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zODk7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT02MTE7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01NTY7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTYxMTtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT02MTE7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD02MTE7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD02MTE7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj00MDA7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD02MTE7ZS5udGlsZGU9NjExO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NjExO2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT02MTE7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTYxMTtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTYxMTtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj02MTE7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NjExO2UudWRpZXJlc2lzPTYxMTtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD02MTE7ZS5ldGg9NjExO2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD02MTE7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSk7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09Mjc4O2UucXVvdGVkYmw9MzU1O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NjY3O2UucXVvdGVyaWdodD0yMjI7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTU1NjtlLmF0PTEwMTU7ZS5BPTY2NztlLkI9NjY3O2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTUwMDtlLks9NjY3O2UuTD01NTY7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9Mjc4O2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0yNzg7ZS5hc2NpaWNpcmN1bT00Njk7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yMjI7ZS5hPTU1NjtlLmI9NTU2O2UuYz01MDA7ZS5kPTU1NjtlLmU9NTU2O2UuZj0yNzg7ZS5nPTU1NjtlLmg9NTU2O2UuaT0yMjI7ZS5qPTIyMjtlLms9NTAwO2UubD0yMjI7ZS5tPTgzMztlLm49NTU2O2Uubz01NTY7ZS5wPTU1NjtlLnE9NTU2O2Uucj0zMzM7ZS5zPTUwMDtlLnQ9Mjc4O2UudT01NTY7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NTAwO2UuYnJhY2VsZWZ0PTMzNDtlLmJhcj0yNjA7ZS5icmFjZXJpZ2h0PTMzNDtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0xOTE7ZS5xdW90ZWRibGxlZnQ9MzMzO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTUwMDtlLmZsPTUwMDtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01Mzc7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MjIyO2UucXVvdGVkYmxiYXNlPTMzMztlLnF1b3RlZGJscmlnaHQ9MzMzO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTU1NjtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTIyMjtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTY2NztlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTUwMDtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTUwMDtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9MjIyO2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTUwMDtlLnNjZWRpbGxhPTUwMDtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj02Njc7ZS5yY2Fyb249MzMzO2UuY2NlZGlsbGE9NTAwO2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTY0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTY2NztlLkFicmV2ZT02Njc7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTAwO2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI2MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9MzMzO2Uub21hY3Jvbj01NTY7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTIyMjtlLnRjYXJvbj0zMTc7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTY2NztlLkFkaWVyZXNpcz02Njc7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9MjIyO2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT01NTY7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01MDA7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTU1NjtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT01NTY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01NTY7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01NTY7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj0yOTk7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTU1NjtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj01NTY7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01NTY7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NTU2O2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01NTY7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zMzM7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTU1NjtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NTU2O2UuQXRpbGRlPTY2NztlLkFvZ29uZWs9NjY3O2UuQXJpbmc9NjY3O2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NTU2O2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01NTY7ZS5ldGg9NTU2O2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSk7ZS5TeW1ib2w9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnVuaXZlcnNhbD03MTM7ZS5udW1iZXJzaWduPTUwMDtlLmV4aXN0ZW50aWFsPTU0OTtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnN1Y2h0aGF0PTQzOTtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrbWF0aD01MDA7ZS5wbHVzPTU0OTtlLmNvbW1hPTI1MDtlLm1pbnVzPTU0OTtlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU0OTtlLmVxdWFsPTU0OTtlLmdyZWF0ZXI9NTQ5O2UucXVlc3Rpb249NDQ0O2UuY29uZ3J1ZW50PTU0OTtlLkFscGhhPTcyMjtlLkJldGE9NjY3O2UuQ2hpPTcyMjtlLkRlbHRhPTYxMjtlLkVwc2lsb249NjExO2UuUGhpPTc2MztlLkdhbW1hPTYwMztlLkV0YT03MjI7ZS5Jb3RhPTMzMztlLnRoZXRhMT02MzE7ZS5LYXBwYT03MjI7ZS5MYW1iZGE9Njg2O2UuTXU9ODg5O2UuTnU9NzIyO2UuT21pY3Jvbj03MjI7ZS5QaT03Njg7ZS5UaGV0YT03NDE7ZS5SaG89NTU2O2UuU2lnbWE9NTkyO2UuVGF1PTYxMTtlLlVwc2lsb249NjkwO2Uuc2lnbWExPTQzOTtlLk9tZWdhPTc2ODtlLlhpPTY0NTtlLlBzaT03OTU7ZS5aZXRhPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLnRoZXJlZm9yZT04NjM7ZS5icmFja2V0cmlnaHQ9MzMzO2UucGVycGVuZGljdWxhcj02NTg7ZS51bmRlcnNjb3JlPTUwMDtlLnJhZGljYWxleD01MDA7ZS5hbHBoYT02MzE7ZS5iZXRhPTU0OTtlLmNoaT01NDk7ZS5kZWx0YT00OTQ7ZS5lcHNpbG9uPTQzOTtlLnBoaT01MjE7ZS5nYW1tYT00MTE7ZS5ldGE9NjAzO2UuaW90YT0zMjk7ZS5waGkxPTYwMztlLmthcHBhPTU0OTtlLmxhbWJkYT01NDk7ZS5tdT01NzY7ZS5udT01MjE7ZS5vbWljcm9uPTU0OTtlLnBpPTU0OTtlLnRoZXRhPTUyMTtlLnJobz01NDk7ZS5zaWdtYT02MDM7ZS50YXU9NDM5O2UudXBzaWxvbj01NzY7ZS5vbWVnYTE9NzEzO2Uub21lZ2E9Njg2O2UueGk9NDkzO2UucHNpPTY4NjtlLnpldGE9NDk0O2UuYnJhY2VsZWZ0PTQ4MDtlLmJhcj0yMDA7ZS5icmFjZXJpZ2h0PTQ4MDtlLnNpbWlsYXI9NTQ5O2UuRXVybz03NTA7ZS5VcHNpbG9uMT02MjA7ZS5taW51dGU9MjQ3O2UubGVzc2VxdWFsPTU0OTtlLmZyYWN0aW9uPTE2NztlLmluZmluaXR5PTcxMztlLmZsb3Jpbj01MDA7ZS5jbHViPTc1MztlLmRpYW1vbmQ9NzUzO2UuaGVhcnQ9NzUzO2Uuc3BhZGU9NzUzO2UuYXJyb3dib3RoPTEwNDI7ZS5hcnJvd2xlZnQ9OTg3O2UuYXJyb3d1cD02MDM7ZS5hcnJvd3JpZ2h0PTk4NztlLmFycm93ZG93bj02MDM7ZS5kZWdyZWU9NDAwO2UucGx1c21pbnVzPTU0OTtlLnNlY29uZD00MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UubXVsdGlwbHk9NTQ5O2UucHJvcG9ydGlvbmFsPTcxMztlLnBhcnRpYWxkaWZmPTQ5NDtlLmJ1bGxldD00NjA7ZS5kaXZpZGU9NTQ5O2Uubm90ZXF1YWw9NTQ5O2UuZXF1aXZhbGVuY2U9NTQ5O2UuYXBwcm94ZXF1YWw9NTQ5O2UuZWxsaXBzaXM9MWUzO2UuYXJyb3d2ZXJ0ZXg9NjAzO2UuYXJyb3dob3JpemV4PTFlMztlLmNhcnJpYWdlcmV0dXJuPTY1ODtlLmFsZXBoPTgyMztlLklmcmFrdHVyPTY4NjtlLlJmcmFrdHVyPTc5NTtlLndlaWVyc3RyYXNzPTk4NztlLmNpcmNsZW11bHRpcGx5PTc2ODtlLmNpcmNsZXBsdXM9NzY4O2UuZW1wdHlzZXQ9ODIzO2UuaW50ZXJzZWN0aW9uPTc2ODtlLnVuaW9uPTc2ODtlLnByb3BlcnN1cGVyc2V0PTcxMztlLnJlZmxleHN1cGVyc2V0PTcxMztlLm5vdHN1YnNldD03MTM7ZS5wcm9wZXJzdWJzZXQ9NzEzO2UucmVmbGV4c3Vic2V0PTcxMztlLmVsZW1lbnQ9NzEzO2Uubm90ZWxlbWVudD03MTM7ZS5hbmdsZT03Njg7ZS5ncmFkaWVudD03MTM7ZS5yZWdpc3RlcnNlcmlmPTc5MDtlLmNvcHlyaWdodHNlcmlmPTc5MDtlLnRyYWRlbWFya3NlcmlmPTg5MDtlLnByb2R1Y3Q9ODIzO2UucmFkaWNhbD01NDk7ZS5kb3RtYXRoPTI1MDtlLmxvZ2ljYWxub3Q9NzEzO2UubG9naWNhbGFuZD02MDM7ZS5sb2dpY2Fsb3I9NjAzO2UuYXJyb3dkYmxib3RoPTEwNDI7ZS5hcnJvd2RibGxlZnQ9OTg3O2UuYXJyb3dkYmx1cD02MDM7ZS5hcnJvd2RibHJpZ2h0PTk4NztlLmFycm93ZGJsZG93bj02MDM7ZS5sb3plbmdlPTQ5NDtlLmFuZ2xlbGVmdD0zMjk7ZS5yZWdpc3RlcnNhbnM9NzkwO2UuY29weXJpZ2h0c2Fucz03OTA7ZS50cmFkZW1hcmtzYW5zPTc4NjtlLnN1bW1hdGlvbj03MTM7ZS5wYXJlbmxlZnR0cD0zODQ7ZS5wYXJlbmxlZnRleD0zODQ7ZS5wYXJlbmxlZnRidD0zODQ7ZS5icmFja2V0bGVmdHRwPTM4NDtlLmJyYWNrZXRsZWZ0ZXg9Mzg0O2UuYnJhY2tldGxlZnRidD0zODQ7ZS5icmFjZWxlZnR0cD00OTQ7ZS5icmFjZWxlZnRtaWQ9NDk0O2UuYnJhY2VsZWZ0YnQ9NDk0O2UuYnJhY2VleD00OTQ7ZS5hbmdsZXJpZ2h0PTMyOTtlLmludGVncmFsPTI3NDtlLmludGVncmFsdHA9Njg2O2UuaW50ZWdyYWxleD02ODY7ZS5pbnRlZ3JhbGJ0PTY4NjtlLnBhcmVucmlnaHR0cD0zODQ7ZS5wYXJlbnJpZ2h0ZXg9Mzg0O2UucGFyZW5yaWdodGJ0PTM4NDtlLmJyYWNrZXRyaWdodHRwPTM4NDtlLmJyYWNrZXRyaWdodGV4PTM4NDtlLmJyYWNrZXRyaWdodGJ0PTM4NDtlLmJyYWNlcmlnaHR0cD00OTQ7ZS5icmFjZXJpZ2h0bWlkPTQ5NDtlLmJyYWNlcmlnaHRidD00OTQ7ZS5hcHBsZT03OTB9KTtlWyJUaW1lcy1Sb21hbiJdPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00MDg7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9NTY0O2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU2NDtlLmVxdWFsPTU2NDtlLmdyZWF0ZXI9NTY0O2UucXVlc3Rpb249NDQ0O2UuYXQ9OTIxO2UuQT03MjI7ZS5CPTY2NztlLkM9NjY3O2UuRD03MjI7ZS5FPTYxMTtlLkY9NTU2O2UuRz03MjI7ZS5IPTcyMjtlLkk9MzMzO2UuSj0zODk7ZS5LPTcyMjtlLkw9NjExO2UuTT04ODk7ZS5OPTcyMjtlLk89NzIyO2UuUD01NTY7ZS5RPTcyMjtlLlI9NjY3O2UuUz01NTY7ZS5UPTYxMTtlLlU9NzIyO2UuVj03MjI7ZS5XPTk0NDtlLlg9NzIyO2UuWT03MjI7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NDY5O2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT00NDQ7ZS5iPTUwMDtlLmM9NDQ0O2UuZD01MDA7ZS5lPTQ0NDtlLmY9MzMzO2UuZz01MDA7ZS5oPTUwMDtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTUwMDtlLmw9Mjc4O2UubT03Nzg7ZS5uPTUwMDtlLm89NTAwO2UucD01MDA7ZS5xPTUwMDtlLnI9MzMzO2Uucz0zODk7ZS50PTI3ODtlLnU9NTAwO2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTQ0NDtlLmJyYWNlbGVmdD00ODA7ZS5iYXI9MjAwO2UuYnJhY2VyaWdodD00ODA7ZS5hc2NpaXRpbGRlPTU0MTtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9MTgwO2UucXVvdGVkYmxsZWZ0PTQ0NDtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01NTY7ZS5mbD01NTY7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NDUzO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT00NDQ7ZS5xdW90ZWRibHJpZ2h0PTQ0NDtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj00NDQ7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTg4OTtlLm9yZGZlbWluaW5lPTI3NjtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9NzIyO2UuT0U9ODg5O2Uub3JkbWFzY3VsaW5lPTMxMDtlLmFlPTY2NztlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NzIyO2UuZ2VybWFuZGJscz01MDA7ZS5JZGllcmVzaXM9MzMzO2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT00NDQ7ZS51aHVuZ2FydW1sYXV0PTUwMDtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NzIyO2UuZGl2aWRlPTU2NDtlLllhY3V0ZT03MjI7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NDQ0O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz00NDQ7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01MDA7ZS5FZGllcmVzaXM9NjExO2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NjA7ZS5FbWFjcm9uPTYxMTtlLmNjYXJvbj00NDQ7ZS5hcmluZz00NDQ7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT00NDQ7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTY2NztlLmF0aWxkZT00NDQ7ZS5FZG90YWNjZW50PTYxMTtlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NjY3O2UuR2NvbW1hYWNjZW50PTcyMjtlLnVjaXJjdW1mbGV4PTUwMDtlLmFjaXJjdW1mbGV4PTQ0NDtlLkFtYWNyb249NzIyO2UucmNhcm9uPTMzMztlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NTU2O2UuT21hY3Jvbj03MjI7ZS5SYWN1dGU9NjY3O2UuU2FjdXRlPTU1NjtlLmRjYXJvbj01ODg7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTUwMDtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTcyMjtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTY0O2UudWFjdXRlPTUwMDtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTYxMTtlLmFkaWVyZXNpcz00NDQ7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01MDA7ZS51bWFjcm9uPTUwMDtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9MzMzO2UucGx1c21pbnVzPTU2NDtlLmJyb2tlbmJhcj0yMDA7ZS5yZWdpc3RlcmVkPTc2MDtlLkdicmV2ZT03MjI7ZS5JZG90YWNjZW50PTMzMztlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjExO2UucmFjdXRlPTMzMztlLm9tYWNyb249NTAwO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTY2NztlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249MzI2O2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT00NDQ7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03MjI7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj00NDQ7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTcyMjtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01MDA7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9NzIyO2UubXU9NTAwO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02MTE7ZS5kY3JvYXQ9NTAwO2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01NTY7ZS5sY2Fyb249MzQ0O2UuS2NvbW1hYWNjZW50PTcyMjtlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9OTgwO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9MzMzO2UuSW1hY3Jvbj0zMzM7ZS5MY2Fyb249NjExO2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTUwMDtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTYxMTtlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTU1NjtlLlNjb21tYWFjY2VudD01NTY7ZS5PaHVuZ2FydW1sYXV0PTcyMjtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTY2NztlLnVncmF2ZT01MDA7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9MzMzO2UuTnRpbGRlPTcyMjtlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NjY3O2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03MjI7ZS56ZG90YWNjZW50PTQ0NDtlLkVjYXJvbj02MTE7ZS5Jb2dvbmVrPTMzMztlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz01NjQ7ZS5JY2lyY3VtZmxleD0zMzM7ZS5uY2Fyb249NTAwO2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NTY0O2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01MDA7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj00NDQ7ZS5uY29tbWFhY2NlbnQ9NTAwO2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pO2VbIlRpbWVzLUJvbGQiXT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NTU1O2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD0xZTM7ZS5hbXBlcnNhbmQ9ODMzO2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTU3MDtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01NzA7ZS5lcXVhbD01NzA7ZS5ncmVhdGVyPTU3MDtlLnF1ZXN0aW9uPTUwMDtlLmF0PTkzMDtlLkE9NzIyO2UuQj02Njc7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03Nzg7ZS5JPTM4OTtlLko9NTAwO2UuSz03Nzg7ZS5MPTY2NztlLk09OTQ0O2UuTj03MjI7ZS5PPTc3ODtlLlA9NjExO2UuUT03Nzg7ZS5SPTcyMjtlLlM9NTU2O2UuVD02Njc7ZS5VPTcyMjtlLlY9NzIyO2UuVz0xZTM7ZS5YPTcyMjtlLlk9NzIyO2UuWj02Njc7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU4MTtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NTAwO2UuYj01NTY7ZS5jPTQ0NDtlLmQ9NTU2O2UuZT00NDQ7ZS5mPTMzMztlLmc9NTAwO2UuaD01NTY7ZS5pPTI3ODtlLmo9MzMzO2Uuaz01NTY7ZS5sPTI3ODtlLm09ODMzO2Uubj01NTY7ZS5vPTUwMDtlLnA9NTU2O2UucT01NTY7ZS5yPTQ0NDtlLnM9Mzg5O2UudD0zMzM7ZS51PTU1NjtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej00NDQ7ZS5icmFjZWxlZnQ9Mzk0O2UuYmFyPTIyMDtlLmJyYWNlcmlnaHQ9Mzk0O2UuYXNjaWl0aWxkZT01MjA7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTI3ODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTU2O2UuZmw9NTU2O2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTU0MDtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NTAwO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zMDA7ZS5Mc2xhc2g9NjY3O2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zMzA7ZS5hZT03MjI7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTcyMjtlLmdlcm1hbmRibHM9NTU2O2UuSWRpZXJlc2lzPTM4OTtlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NTAwO2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTcyMjtlLmRpdmlkZT01NzA7ZS5ZYWN1dGU9NzIyO2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTUwMDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTAwO2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzQ3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NTAwO2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTAwO2UuVGNvbW1hYWNjZW50PTY2NztlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTAwO2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01MDA7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj00NDQ7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTY2NztlLlRob3JuPTYxMTtlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT01NTY7ZS5kY2Fyb249NjcyO2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU3MDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjY3O2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTAwO2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTM4OTtlLnBsdXNtaW51cz01NzA7ZS5icm9rZW5iYXI9MjIwO2UucmVnaXN0ZXJlZD03NDc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0zODk7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT00NDQ7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT02Njc7ZS5aY2Fyb249NjY3O2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTQxNjtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT00NDQ7ZS56YWN1dGU9NDQ0O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NTAwO2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTU2O2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTc3ODtlLm11PTU1NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTU1NjtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTU2O2UubGNhcm9uPTM5NDtlLktjb21tYWFjY2VudD03Nzg7ZS5MYWN1dGU9NjY3O2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTM4OTtlLkltYWNyb249Mzg5O2UuTGNhcm9uPTY2NztlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01NTY7ZS5TY29tbWFhY2NlbnQ9NTU2O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTQ0NDtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD02Njc7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD00NDQ7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0zODk7ZS5rY29tbWFhY2NlbnQ9NTU2O2UubWludXM9NTcwO2UuSWNpcmN1bWZsZXg9Mzg5O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0zMzM7ZS5sb2dpY2Fsbm90PTU3MDtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249NDQ0O2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KTtlWyJUaW1lcy1Cb2xkSXRhbGljIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTM4OTtlLnF1b3RlZGJsPTU1NTtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NzA7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTcwO2UuZXF1YWw9NTcwO2UuZ3JlYXRlcj01NzA7ZS5xdWVzdGlvbj01MDA7ZS5hdD04MzI7ZS5BPTY2NztlLkI9NjY3O2UuQz02Njc7ZS5EPTcyMjtlLkU9NjY3O2UuRj02Njc7ZS5HPTcyMjtlLkg9Nzc4O2UuST0zODk7ZS5KPTUwMDtlLks9NjY3O2UuTD02MTE7ZS5NPTg4OTtlLk49NzIyO2UuTz03MjI7ZS5QPTYxMTtlLlE9NzIyO2UuUj02Njc7ZS5TPTU1NjtlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9ODg5O2UuWD02Njc7ZS5ZPTYxMTtlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01NzA7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTU2O2UuaT0yNzg7ZS5qPTI3ODtlLms9NTAwO2UubD0yNzg7ZS5tPTc3ODtlLm49NTU2O2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zODk7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01NTY7ZS52PTQ0NDtlLnc9NjY3O2UueD01MDA7ZS55PTQ0NDtlLno9Mzg5O2UuYnJhY2VsZWZ0PTM0ODtlLmJhcj0yMjA7ZS5icmFjZXJpZ2h0PTM0ODtlLmFzY2lpdGlsZGU9NTcwO2UuZXhjbGFtZG93bj0zODk7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yNzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01MDA7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9OTQ0O2Uub3JkZmVtaW5pbmU9MjY2O2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03MjI7ZS5PRT05NDQ7ZS5vcmRtYXNjdWxpbmU9MzAwO2UuYWU9NzIyO2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zODk7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz02MTE7ZS5kaXZpZGU9NTcwO2UuWWFjdXRlPTYxMTtlLkFjaXJjdW1mbGV4PTY2NztlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NDQ0O2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc0NztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj02Njc7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj02Njc7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02Njc7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTYwODtlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTY2NztlLkFicmV2ZT02Njc7ZS5tdWx0aXBseT01NzA7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz00NDQ7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zODk7ZS5wbHVzbWludXM9NTcwO2UuYnJva2VuYmFyPTIyMDtlLnJlZ2lzdGVyZWQ9NzQ3O2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9Mzg5O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zNjY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTY2NztlLkFkaWVyZXNpcz02Njc7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTM4OTtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01NzY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zODI7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zODk7ZS5JbWFjcm9uPTM4OTtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02Njc7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTY2NztlLkFvZ29uZWs9NjY3O2UuQXJpbmc9NjY3O2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9Mzg5O2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mzg5O2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTYwNjtlLkljaXJjdW1mbGV4PTM4OTtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD02MDY7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTM4OTtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSk7ZVsiVGltZXMtSXRhbGljIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQyMDtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz02NzU7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9Njc1O2UuZXF1YWw9Njc1O2UuZ3JlYXRlcj02NzU7ZS5xdWVzdGlvbj01MDA7ZS5hdD05MjA7ZS5BPTYxMTtlLkI9NjExO2UuQz02Njc7ZS5EPTcyMjtlLkU9NjExO2UuRj02MTE7ZS5HPTcyMjtlLkg9NzIyO2UuST0zMzM7ZS5KPTQ0NDtlLks9NjY3O2UuTD01NTY7ZS5NPTgzMztlLk49NjY3O2UuTz03MjI7ZS5QPTYxMTtlLlE9NzIyO2UuUj02MTE7ZS5TPTUwMDtlLlQ9NTU2O2UuVT03MjI7ZS5WPTYxMTtlLlc9ODMzO2UuWD02MTE7ZS5ZPTU1NjtlLlo9NTU2O2UuYnJhY2tldGxlZnQ9Mzg5O2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zODk7ZS5hc2NpaWNpcmN1bT00MjI7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0yNzg7ZS5nPTUwMDtlLmg9NTAwO2UuaT0yNzg7ZS5qPTI3ODtlLms9NDQ0O2UubD0yNzg7ZS5tPTcyMjtlLm49NTAwO2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zODk7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01MDA7ZS52PTQ0NDtlLnc9NjY3O2UueD00NDQ7ZS55PTQ0NDtlLno9Mzg5O2UuYnJhY2VsZWZ0PTQwMDtlLmJhcj0yNzU7ZS5icmFjZXJpZ2h0PTQwMDtlLmFzY2lpdGlsZGU9NTQxO2UuZXhjbGFtZG93bj0zODk7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yMTQ7ZS5xdW90ZWRibGxlZnQ9NTU2O2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTUwMDtlLmZsPTUwMDtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01MjM7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTU1NjtlLnF1b3RlZGJscmlnaHQ9NTU2O2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9ODg5O2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9ODg5O2UuQUU9ODg5O2Uub3JkZmVtaW5pbmU9Mjc2O2UuTHNsYXNoPTU1NjtlLk9zbGFzaD03MjI7ZS5PRT05NDQ7ZS5vcmRtYXNjdWxpbmU9MzEwO2UuYWU9NjY3O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT02Njc7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zMzM7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTAwO2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz01NTY7ZS5kaXZpZGU9Njc1O2UuWWFjdXRlPTU1NjtlLkFjaXJjdW1mbGV4PTYxMTtlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NDQ0O2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTUwMDtlLkVkaWVyZXNpcz02MTE7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc2MDtlLkVtYWNyb249NjExO2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD02Njc7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD01NTY7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjExO2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj02MTE7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTAwO2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj02MTE7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD01NTY7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02MTE7ZS5TYWN1dGU9NTAwO2UuZGNhcm9uPTU0NDtlLlVtYWNyb249NzIyO2UudXJpbmc9NTAwO2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTYxMTtlLkFicmV2ZT02MTE7ZS5tdWx0aXBseT02NzU7ZS51YWN1dGU9NTAwO2UuVGNhcm9uPTU1NjtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz00NDQ7ZS5OYWN1dGU9NjY3O2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjExO2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTUwMDtlLnVtYWNyb249NTAwO2UuTmNhcm9uPTY2NztlLklhY3V0ZT0zMzM7ZS5wbHVzbWludXM9Njc1O2UuYnJva2VuYmFyPTI3NTtlLnJlZ2lzdGVyZWQ9NzYwO2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9MzMzO2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02MTE7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NTU2O2UuWmNhcm9uPTU1NjtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zMDA7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTYxMTtlLkFkaWVyZXNpcz02MTE7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTM4OTtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01MDA7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTYxMTtlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTUwMDtlLmxjYXJvbj0zMDA7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTU1NjtlLnRyYWRlbWFyaz05ODA7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zMzM7ZS5JbWFjcm9uPTMzMztlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTAwO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjExO2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTAwO2UuU2NvbW1hYWNjZW50PTUwMDtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTUwMDtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NjY3O2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02MTE7ZS5MY29tbWFhY2NlbnQ9NTU2O2UuQXRpbGRlPTYxMTtlLkFvZ29uZWs9NjExO2UuQXJpbmc9NjExO2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9Mzg5O2UuRWNhcm9uPTYxMTtlLklvZ29uZWs9MzMzO2Uua2NvbW1hYWNjZW50PTQ0NDtlLm1pbnVzPTY3NTtlLkljaXJjdW1mbGV4PTMzMztlLm5jYXJvbj01MDA7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD02NzU7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTUwMDtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTM4OTtlLm5jb21tYWFjY2VudD01MDA7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSk7ZS5aYXBmRGluZ2JhdHM9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuYTE9OTc0O2UuYTI9OTYxO2UuYTIwMj05NzQ7ZS5hMz05ODA7ZS5hND03MTk7ZS5hNT03ODk7ZS5hMTE5PTc5MDtlLmExMTg9NzkxO2UuYTExNz02OTA7ZS5hMTE9OTYwO2UuYTEyPTkzOTtlLmExMz01NDk7ZS5hMTQ9ODU1O2UuYTE1PTkxMTtlLmExNj05MzM7ZS5hMTA1PTkxMTtlLmExNz05NDU7ZS5hMTg9OTc0O2UuYTE5PTc1NTtlLmEyMD04NDY7ZS5hMjE9NzYyO2UuYTIyPTc2MTtlLmEyMz01NzE7ZS5hMjQ9Njc3O2UuYTI1PTc2MztlLmEyNj03NjA7ZS5hMjc9NzU5O2UuYTI4PTc1NDtlLmE2PTQ5NDtlLmE3PTU1MjtlLmE4PTUzNztlLmE5PTU3NztlLmExMD02OTI7ZS5hMjk9Nzg2O2UuYTMwPTc4ODtlLmEzMT03ODg7ZS5hMzI9NzkwO2UuYTMzPTc5MztlLmEzND03OTQ7ZS5hMzU9ODE2O2UuYTM2PTgyMztlLmEzNz03ODk7ZS5hMzg9ODQxO2UuYTM5PTgyMztlLmE0MD04MzM7ZS5hNDE9ODE2O2UuYTQyPTgzMTtlLmE0Mz05MjM7ZS5hNDQ9NzQ0O2UuYTQ1PTcyMztlLmE0Nj03NDk7ZS5hNDc9NzkwO2UuYTQ4PTc5MjtlLmE0OT02OTU7ZS5hNTA9Nzc2O2UuYTUxPTc2ODtlLmE1Mj03OTI7ZS5hNTM9NzU5O2UuYTU0PTcwNztlLmE1NT03MDg7ZS5hNTY9NjgyO2UuYTU3PTcwMTtlLmE1OD04MjY7ZS5hNTk9ODE1O2UuYTYwPTc4OTtlLmE2MT03ODk7ZS5hNjI9NzA3O2UuYTYzPTY4NztlLmE2ND02OTY7ZS5hNjU9Njg5O2UuYTY2PTc4NjtlLmE2Nz03ODc7ZS5hNjg9NzEzO2UuYTY5PTc5MTtlLmE3MD03ODU7ZS5hNzE9NzkxO2UuYTcyPTg3MztlLmE3Mz03NjE7ZS5hNzQ9NzYyO2UuYTIwMz03NjI7ZS5hNzU9NzU5O2UuYTIwND03NTk7ZS5hNzY9ODkyO2UuYTc3PTg5MjtlLmE3OD03ODg7ZS5hNzk9Nzg0O2UuYTgxPTQzODtlLmE4Mj0xMzg7ZS5hODM9Mjc3O2UuYTg0PTQxNTtlLmE5Nz0zOTI7ZS5hOTg9MzkyO2UuYTk5PTY2ODtlLmExMDA9NjY4O2UuYTg5PTM5MDtlLmE5MD0zOTA7ZS5hOTM9MzE3O2UuYTk0PTMxNztlLmE5MT0yNzY7ZS5hOTI9Mjc2O2UuYTIwNT01MDk7ZS5hODU9NTA5O2UuYTIwNj00MTA7ZS5hODY9NDEwO2UuYTg3PTIzNDtlLmE4OD0yMzQ7ZS5hOTU9MzM0O2UuYTk2PTMzNDtlLmExMDE9NzMyO2UuYTEwMj01NDQ7ZS5hMTAzPTU0NDtlLmExMDQ9OTEwO2UuYTEwNj02Njc7ZS5hMTA3PTc2MDtlLmExMDg9NzYwO2UuYTExMj03NzY7ZS5hMTExPTU5NTtlLmExMTA9Njk0O2UuYTEwOT02MjY7ZS5hMTIwPTc4ODtlLmExMjE9Nzg4O2UuYTEyMj03ODg7ZS5hMTIzPTc4ODtlLmExMjQ9Nzg4O2UuYTEyNT03ODg7ZS5hMTI2PTc4ODtlLmExMjc9Nzg4O2UuYTEyOD03ODg7ZS5hMTI5PTc4ODtlLmExMzA9Nzg4O2UuYTEzMT03ODg7ZS5hMTMyPTc4ODtlLmExMzM9Nzg4O2UuYTEzND03ODg7ZS5hMTM1PTc4ODtlLmExMzY9Nzg4O2UuYTEzNz03ODg7ZS5hMTM4PTc4ODtlLmExMzk9Nzg4O2UuYTE0MD03ODg7ZS5hMTQxPTc4ODtlLmExNDI9Nzg4O2UuYTE0Mz03ODg7ZS5hMTQ0PTc4ODtlLmExNDU9Nzg4O2UuYTE0Nj03ODg7ZS5hMTQ3PTc4ODtlLmExNDg9Nzg4O2UuYTE0OT03ODg7ZS5hMTUwPTc4ODtlLmExNTE9Nzg4O2UuYTE1Mj03ODg7ZS5hMTUzPTc4ODtlLmExNTQ9Nzg4O2UuYTE1NT03ODg7ZS5hMTU2PTc4ODtlLmExNTc9Nzg4O2UuYTE1OD03ODg7ZS5hMTU5PTc4ODtlLmExNjA9ODk0O2UuYTE2MT04Mzg7ZS5hMTYzPTEwMTY7ZS5hMTY0PTQ1ODtlLmExOTY9NzQ4O2UuYTE2NT05MjQ7ZS5hMTkyPTc0ODtlLmExNjY9OTE4O2UuYTE2Nz05Mjc7ZS5hMTY4PTkyODtlLmExNjk9OTI4O2UuYTE3MD04MzQ7ZS5hMTcxPTg3MztlLmExNzI9ODI4O2UuYTE3Mz05MjQ7ZS5hMTYyPTkyNDtlLmExNzQ9OTE3O2UuYTE3NT05MzA7ZS5hMTc2PTkzMTtlLmExNzc9NDYzO2UuYTE3OD04ODM7ZS5hMTc5PTgzNjtlLmExOTM9ODM2O2UuYTE4MD04Njc7ZS5hMTk5PTg2NztlLmExODE9Njk2O2UuYTIwMD02OTY7ZS5hMTgyPTg3NDtlLmEyMDE9ODc0O2UuYTE4Mz03NjA7ZS5hMTg0PTk0NjtlLmExOTc9NzcxO2UuYTE4NT04NjU7ZS5hMTk0PTc3MTtlLmExOTg9ODg4O2UuYTE4Nj05Njc7ZS5hMTk1PTg4ODtlLmExODc9ODMxO2UuYTE4OD04NzM7ZS5hMTg5PTkyNztlLmExOTA9OTcwO2UuYTE5MT05MTh9KX0pLFpuPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLkNvdXJpZXI9e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDotNDI2fTtlWyJDb3VyaWVyLUJvbGQiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQzOX07ZVsiQ291cmllci1PYmxpcXVlIl09e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDo0MjZ9O2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQyNn07ZS5IZWx2ZXRpY2E9e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MzJ9O2VbIkhlbHZldGljYS1PYmxpcXVlIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTMyfTtlWyJUaW1lcy1Sb21hbiJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjYyLHhIZWlnaHQ6NDUwfTtlWyJUaW1lcy1Cb2xkIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NzYseEhlaWdodDo0NjF9O2VbIlRpbWVzLUl0YWxpYyJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjUzLHhIZWlnaHQ6NDQxfTtlWyJUaW1lcy1Cb2xkSXRhbGljIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NjkseEhlaWdodDo0NjJ9O2UuU3ltYm9sPXthc2NlbnQ6TWF0aC5OYU4sZGVzY2VudDpNYXRoLk5hTixjYXBIZWlnaHQ6TWF0aC5OYU4seEhlaWdodDpNYXRoLk5hTn07ZS5aYXBmRGluZ2JhdHM9e2FzY2VudDpNYXRoLk5hTixkZXNjZW50Ok1hdGguTmFOLGNhcEhlaWdodDpNYXRoLk5hTix4SGVpZ2h0Ok1hdGguTmFOfX0pO2NsYXNzIE9wZW5UeXBlRmlsZUJ1aWxkZXJ7I3dlPW5ldyBNYXA7Y29uc3RydWN0b3IoZSl7dGhpcy5zZm50PWV9c3RhdGljIGdldFNlYXJjaFBhcmFtcyhlLHQpe2xldCBhPTEsbj0wO2Zvcig7KGFeZSk+YTspe2E8PD0xO24rK31jb25zdCBzPWEqdDtyZXR1cm57cmFuZ2U6cyxlbnRyeTpuLHJhbmdlU2hpZnQ6dCplLXN9fXRvQXJyYXkoKXtsZXQgZT10aGlzLnNmbnQ7Y29uc3QgdD10aGlzLiN3ZSxhPVsuLi50LmtleXMoKV0uc29ydCgpLG49YS5sZW5ndGg7bGV0IHM9MTIrMTYqbjtjb25zdCByPVtzXTtmb3IobGV0IGU9MDtlPG47ZSsrKXtzKz0odC5nZXQoYVtlXSkubGVuZ3RoKzMmLTQpPj4+MDtyLnB1c2gocyl9Y29uc3QgaT1uZXcgVWludDhBcnJheShzKSxvPW5ldyBEYXRhVmlldyhpLmJ1ZmZlcik7Zm9yKGxldCBlPTA7ZTxuO2UrKyl7Y29uc3Qgbj10LmdldChhW2VdKTtpLnNldChuLHJbZV0pfSJ0cnVlIj09PWUmJihlPSJcMAFcMFwwIik7aS5zZXQoc3RyaW5nVG9CeXRlcyhlKSwwKTtvLnNldEludDE2KDQsbik7Y29uc3QgbD1PcGVuVHlwZUZpbGVCdWlsZGVyLmdldFNlYXJjaFBhcmFtcyhuLDE2KTtvLnNldEludDE2KDYsbC5yYW5nZSk7by5zZXRJbnQxNig4LGwuZW50cnkpO28uc2V0SW50MTYoMTAsbC5yYW5nZVNoaWZ0KTtzPTEyO2ZvcihsZXQgZT0wO2U8bjtlKyspe2NvbnN0IG49YVtlXTtpLnNldChzdHJpbmdUb0J5dGVzKG4pLHMpO2xldCBsPTA7Zm9yKGxldCB0PXJbZV0sYT1yW2UrMV07dDxhO3QrPTQpe2w9bCtvLmdldFVpbnQzMih0KT4+PjB9by5zZXRJbnQzMihzKzQsbCk7by5zZXRJbnQzMihzKzgscltlXSk7by5zZXRJbnQzMihzKzEyLHQuZ2V0KG4pLmxlbmd0aCk7cys9MTZ9dGhpcy4jd2UuY2xlYXIoKTtyZXR1cm4gaX1hZGRUYWJsZShlLHQpe2lmKHRoaXMuI3dlLmhhcyhlKSl0aHJvdyBuZXcgRXJyb3IoYFRhYmxlICR7ZX0gYWxyZWFkeSBleGlzdHNgKTt0aGlzLiN3ZS5zZXQoZSx0KX19Y29uc3QgZXM9WzRdLHRzPVs1XSxhcz1bNl0sbnM9WzddLHNzPVs4XSxycz1bMTIsMzVdLGlzPVsxNF0sb3M9WzIxXSxscz1bMjJdLGZzPVszMF0sY3M9WzMxXTtjbGFzcyBUeXBlMUNoYXJTdHJpbmd7d2lkdGg9MDtsc2I9MDtmbGV4aW5nPSExO291dHB1dD1bXTtzdGFjaz1bXTtjb252ZXJ0KGUsdCxhKXtjb25zdCBuPWUubGVuZ3RoO2xldCBzLHIsaSxvPSExO2ZvcihsZXQgbD0wO2w8bjtsKyspe2xldCBuPWVbbF07aWYobjwzMil7MTI9PT1uJiYobj0objw8OCkrZVsrK2xdKTtzd2l0Y2gobil7Y2FzZSAxOmNhc2UgMzpjYXNlIDk6Y2FzZSAzMDcyOmNhc2UgMzA3MzpjYXNlIDMwNzQ6Y2FzZSAzMTA1OnRoaXMuc3RhY2s9W107YnJlYWs7Y2FzZSA0OmlmKHRoaXMuZmxleGluZyl7aWYodGhpcy5zdGFjay5sZW5ndGg8MSl7bz0hMDticmVha31jb25zdCBlPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5zdGFjay5wdXNoKDAsZSk7YnJlYWt9bz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsZXMpO2JyZWFrO2Nhc2UgNTpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMix0cyk7YnJlYWs7Y2FzZSA2Om89dGhpcy5leGVjdXRlQ29tbWFuZCgxLGFzKTticmVhaztjYXNlIDc6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsbnMpO2JyZWFrO2Nhc2UgODpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoNixzcyk7YnJlYWs7Y2FzZSAxMDppZih0aGlzLnN0YWNrLmxlbmd0aDwxKXtvPSEwO2JyZWFrfWk9dGhpcy5zdGFjay5wb3AoKTtpZighdFtpXSl7bz0hMDticmVha31vPXRoaXMuY29udmVydCh0W2ldLHQsYSk7YnJlYWs7Y2FzZSAxMTpyZXR1cm4gbztjYXNlIDEzOmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe289ITA7YnJlYWt9cz10aGlzLnN0YWNrLnBvcCgpO3I9dGhpcy5zdGFjay5wb3AoKTt0aGlzLmxzYj1yO3RoaXMud2lkdGg9czt0aGlzLnN0YWNrLnB1c2gocyxyKTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixscyk7YnJlYWs7Y2FzZSAxNDp0aGlzLm91dHB1dC5wdXNoKGlzWzBdKTticmVhaztjYXNlIDIxOmlmKHRoaXMuZmxleGluZylicmVhaztvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixvcyk7YnJlYWs7Y2FzZSAyMjppZih0aGlzLmZsZXhpbmcpe3RoaXMuc3RhY2sucHVzaCgwKTticmVha31vPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMSxscyk7YnJlYWs7Y2FzZSAzMDpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxmcyk7YnJlYWs7Y2FzZSAzMTpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxjcyk7YnJlYWs7Y2FzZSAzMDc4OmlmKGEpe2NvbnN0IGU9dGhpcy5zdGFjay5hdCgtNSk7dGhpcy5zZWFjPXRoaXMuc3RhY2suc3BsaWNlKC00LDQpO3RoaXMuc2VhY1swXSs9dGhpcy5sc2ItZTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMCxpcyl9ZWxzZSBvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxpcyk7YnJlYWs7Y2FzZSAzMDc5OmlmKHRoaXMuc3RhY2subGVuZ3RoPDQpe289ITA7YnJlYWt9dGhpcy5zdGFjay5wb3AoKTtzPXRoaXMuc3RhY2sucG9wKCk7Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO3I9dGhpcy5zdGFjay5wb3AoKTt0aGlzLmxzYj1yO3RoaXMud2lkdGg9czt0aGlzLnN0YWNrLnB1c2gocyxyLGUpO289dGhpcy5leGVjdXRlQ29tbWFuZCgzLG9zKTticmVhaztjYXNlIDMwODQ6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7bz0hMDticmVha31jb25zdCBsPXRoaXMuc3RhY2sucG9wKCksZj10aGlzLnN0YWNrLnBvcCgpO3RoaXMuc3RhY2sucHVzaChmL2wpO2JyZWFrO2Nhc2UgMzA4ODppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXtvPSEwO2JyZWFrfWk9dGhpcy5zdGFjay5wb3AoKTtjb25zdCBjPXRoaXMuc3RhY2sucG9wKCk7aWYoMD09PWkmJjM9PT1jKXtjb25zdCBlPXRoaXMuc3RhY2suc3BsaWNlKC0xNywxNyk7dGhpcy5zdGFjay5wdXNoKGVbMl0rZVswXSxlWzNdK2VbMV0sZVs0XSxlWzVdLGVbNl0sZVs3XSxlWzhdLGVbOV0sZVsxMF0sZVsxMV0sZVsxMl0sZVsxM10sZVsxNF0pO289dGhpcy5leGVjdXRlQ29tbWFuZCgxMyxycywhMCk7dGhpcy5mbGV4aW5nPSExO3RoaXMuc3RhY2sucHVzaChlWzE1XSxlWzE2XSl9ZWxzZSAxPT09aSYmMD09PWMmJih0aGlzLmZsZXhpbmc9ITApO2JyZWFrO2Nhc2UgMzA4OTpicmVhaztkZWZhdWx0Ondhcm4oJ1Vua25vd24gdHlwZSAxIGNoYXJzdHJpbmcgY29tbWFuZCBvZiAiJytuKyciJyl9aWYobylicmVha31lbHNle248PTI0Nj9uLT0xMzk6bj1uPD0yNTA/MjU2KihuLTI0NykrZVsrK2xdKzEwODpuPD0yNTQ/LTI1Nioobi0yNTEpLWVbKytsXS0xMDg6KDI1NSZlWysrbF0pPDwyNHwoMjU1JmVbKytsXSk8PDE2fCgyNTUmZVsrK2xdKTw8OHwyNTUmZVsrK2xdO3RoaXMuc3RhY2sucHVzaChuKX19cmV0dXJuIG99ZXhlY3V0ZUNvbW1hbmQoZSx0LGEpe2NvbnN0IG49dGhpcy5zdGFjay5sZW5ndGg7aWYoZT5uKXJldHVybiEwO2NvbnN0IHM9bi1lO2ZvcihsZXQgZT1zO2U8bjtlKyspe2xldCB0PXRoaXMuc3RhY2tbZV07aWYoTnVtYmVyLmlzSW50ZWdlcih0KSl0aGlzLm91dHB1dC5wdXNoKDI4LHQ+PjgmMjU1LDI1NSZ0KTtlbHNle3Q9NjU1MzYqdHwwO3RoaXMub3V0cHV0LnB1c2goMjU1LHQ+PjI0JjI1NSx0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnQpfX10aGlzLm91dHB1dC5wdXNoKC4uLnQpO2E/dGhpcy5zdGFjay5zcGxpY2UocyxlKTp0aGlzLnN0YWNrLmxlbmd0aD0wO3JldHVybiExfX1mdW5jdGlvbiBpc0hleERpZ2l0KGUpe3JldHVybiBlPj00OCYmZTw9NTd8fGU+PTY1JiZlPD03MHx8ZT49OTcmJmU8PTEwMn1mdW5jdGlvbiBkZWNyeXB0KGUsdCxhKXtpZihhPj1lLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7bGV0IG4scyxyPTB8dDtmb3Iobj0wO248YTtuKyspcj01Mjg0NSooZVtuXStyKSsyMjcxOSY2NTUzNTtjb25zdCBpPWUubGVuZ3RoLWEsbz1uZXcgVWludDhBcnJheShpKTtmb3Iobj1hLHM9MDtzPGk7bisrLHMrKyl7Y29uc3QgdD1lW25dO29bc109dF5yPj44O3I9NTI4NDUqKHQrcikrMjI3MTkmNjU1MzV9cmV0dXJuIG99ZnVuY3Rpb24gaXNTcGVjaWFsKGUpe3JldHVybiA0Nz09PWV8fDkxPT09ZXx8OTM9PT1lfHwxMjM9PT1lfHwxMjU9PT1lfHw0MD09PWV8fDQxPT09ZX1jbGFzcyBUeXBlMVBhcnNlcntjb25zdHJ1Y3RvcihlLHQsYSl7aWYodCl7Y29uc3QgdD1lLmdldEJ5dGVzKCksYT0hKChpc0hleERpZ2l0KHRbMF0pfHxpc1doaXRlU3BhY2UodFswXSkpJiZpc0hleERpZ2l0KHRbMV0pJiZpc0hleERpZ2l0KHRbMl0pJiZpc0hleERpZ2l0KHRbM10pJiZpc0hleERpZ2l0KHRbNF0pJiZpc0hleERpZ2l0KHRbNV0pJiZpc0hleERpZ2l0KHRbNl0pJiZpc0hleERpZ2l0KHRbN10pKTtlPW5ldyBTdHJlYW0oYT9kZWNyeXB0KHQsNTU2NjUsNCk6ZnVuY3Rpb24gZGVjcnlwdEFzY2lpKGUsdCxhKXtsZXQgbj0wfHQ7Y29uc3Qgcz1lLmxlbmd0aCxyPW5ldyBVaW50OEFycmF5KHM+Pj4xKTtsZXQgaSxvO2ZvcihpPTAsbz0wO2k8cztpKyspe2NvbnN0IHQ9ZVtpXTtpZighaXNIZXhEaWdpdCh0KSljb250aW51ZTtpKys7bGV0IGE7Zm9yKDtpPHMmJiFpc0hleERpZ2l0KGE9ZVtpXSk7KWkrKztpZihpPHMpe2NvbnN0IGU9cGFyc2VJbnQoU3RyaW5nLmZyb21DaGFyQ29kZSh0LGEpLDE2KTtyW28rK109ZV5uPj44O249NTI4NDUqKGUrbikrMjI3MTkmNjU1MzV9fXJldHVybiByLnNsaWNlKGEsbyl9KHQsNTU2NjUsNCkpfXRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZD0hIWE7dGhpcy5zdHJlYW09ZTt0aGlzLm5leHRDaGFyKCl9cmVhZE51bWJlckFycmF5KCl7dGhpcy5nZXRUb2tlbigpO2NvbnN0IGU9W107Zm9yKDs7KXtjb25zdCB0PXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09dHx8Il0iPT09dHx8In0iPT09dClicmVhaztlLnB1c2gocGFyc2VGbG9hdCh0fHwwKSl9cmV0dXJuIGV9cmVhZE51bWJlcigpe2NvbnN0IGU9dGhpcy5nZXRUb2tlbigpO3JldHVybiBwYXJzZUZsb2F0KGV8fDApfXJlYWRJbnQoKXtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtyZXR1cm4gMHxwYXJzZUludChlfHwwLDEwKX1yZWFkQm9vbGVhbigpe3JldHVybiJ0cnVlIj09PXRoaXMuZ2V0VG9rZW4oKT8xOjB9bmV4dENoYXIoKXtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9cHJldkNoYXIoKXt0aGlzLnN0cmVhbS5za2lwKC0yKTtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9Z2V0VG9rZW4oKXtsZXQgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Zm9yKDs7KXtpZigtMT09PXQpcmV0dXJuIG51bGw7aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZighaXNXaGl0ZVNwYWNlKHQpKWJyZWFrO3Q9dGhpcy5uZXh0Q2hhcigpfWlmKGlzU3BlY2lhbCh0KSl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfWxldCBhPSIiO2Rve2ErPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7dD10aGlzLm5leHRDaGFyKCl9d2hpbGUodD49MCYmIWlzV2hpdGVTcGFjZSh0KSYmIWlzU3BlY2lhbCh0KSk7cmV0dXJuIGF9cmVhZENoYXJTdHJpbmdzKGUsdCl7cmV0dXJuLTE9PT10P2U6ZGVjcnlwdChlLDQzMzAsdCl9ZXh0cmFjdEZvbnRQcm9ncmFtKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW0sYT1bXSxuPVtdLHM9bmV3IE1hcChbWyJsZW5JViIsNF1dKSxyPXtzdWJyczpbXSxjaGFyc3RyaW5nczpbXSxwcm9wZXJ0aWVzOntwcml2YXRlRGF0YTpzfX07bGV0IGksbyxsLGY9ITEsYz0hMTtmb3IoO251bGwhPT0oaT10aGlzLmdldFRva2VuKCkpOylpZigiLyI9PT1pKXtpPXRoaXMuZ2V0VG9rZW4oKTtzd2l0Y2goaSl7Y2FzZSJDaGFyU3RyaW5ncyI6aWYoYylicmVhaztjPSEwO3RoaXMuZ2V0VG9rZW4oKTt0aGlzLmdldFRva2VuKCk7dGhpcy5nZXRUb2tlbigpO3RoaXMuZ2V0VG9rZW4oKTtmb3IoOzspe2k9dGhpcy5nZXRUb2tlbigpO2lmKG51bGw9PT1pfHwiZW5kIj09PWkpYnJlYWs7aWYoIi8iIT09aSljb250aW51ZTtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtvPXRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtsPW8+MD90LmdldEJ5dGVzKG8pOm5ldyBVaW50OEFycmF5KDApO2NvbnN0IGE9dGhpcy5yZWFkQ2hhclN0cmluZ3MobCxzLmdldCgibGVuSVYiKSk7dGhpcy5uZXh0Q2hhcigpO2k9dGhpcy5nZXRUb2tlbigpOyJub2FjY2VzcyI9PT1pP3RoaXMuZ2V0VG9rZW4oKToiLyI9PT1pJiZ0aGlzLnByZXZDaGFyKCk7bi5wdXNoKHtnbHlwaDplLGVuY29kZWQ6YX0pfWJyZWFrO2Nhc2UiU3VicnMiOmlmKGYpYnJlYWs7Zj0hMDt0aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Zm9yKDsiZHVwIj09PXRoaXMuZ2V0VG9rZW4oKTspe2NvbnN0IGU9dGhpcy5yZWFkSW50KCk7bz10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7bD1vPjA/dC5nZXRCeXRlcyhvKTpuZXcgVWludDhBcnJheSgwKTtjb25zdCBuPXRoaXMucmVhZENoYXJTdHJpbmdzKGwscy5nZXQoImxlbklWIikpO3RoaXMubmV4dENoYXIoKTtpPXRoaXMuZ2V0VG9rZW4oKTsibm9hY2Nlc3MiPT09aSYmdGhpcy5nZXRUb2tlbigpO2FbZV09bn1icmVhaztjYXNlIkJsdWVWYWx1ZXMiOmNhc2UiT3RoZXJCbHVlcyI6Y2FzZSJGYW1pbHlCbHVlcyI6Y2FzZSJGYW1pbHlPdGhlckJsdWVzIjp0aGlzLnJlYWROdW1iZXJBcnJheSgpOzA7YnJlYWs7Y2FzZSJTdGVtU25hcEgiOmNhc2UiU3RlbVNuYXBWIjpzLnNldChpLHRoaXMucmVhZE51bWJlckFycmF5KCkpO2JyZWFrO2Nhc2UiU3RkSFciOmNhc2UiU3RkVlciOnMuc2V0KGksdGhpcy5yZWFkTnVtYmVyQXJyYXkoKVswXSk7YnJlYWs7Y2FzZSJCbHVlU2hpZnQiOmNhc2UibGVuSVYiOmNhc2UiQmx1ZUZ1enoiOmNhc2UiQmx1ZVNjYWxlIjpjYXNlIkxhbmd1YWdlR3JvdXAiOnMuc2V0KGksdGhpcy5yZWFkTnVtYmVyKCkpO2JyZWFrO2Nhc2UiRXhwYW5zaW9uRmFjdG9yIjpzLnNldChpLHRoaXMucmVhZE51bWJlcigpfHwuMDYpO2JyZWFrO2Nhc2UiRm9yY2VCb2xkIjpzLnNldChpLHRoaXMucmVhZEJvb2xlYW4oKSl9fWZvcihjb25zdHtlbmNvZGVkOnQsZ2x5cGg6c31vZiBuKXtjb25zdCBuPW5ldyBUeXBlMUNoYXJTdHJpbmcsaT17Z2x5cGhOYW1lOnMsY2hhcnN0cmluZzpuLmNvbnZlcnQodCxhLHRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZCk/WzE0XTpuLm91dHB1dCx3aWR0aDpuLndpZHRoLGxzYjpuLmxzYixzZWFjOm4uc2VhY307Ii5ub3RkZWYiPT09cz9yLmNoYXJzdHJpbmdzLnVuc2hpZnQoaSk6ci5jaGFyc3RyaW5ncy5wdXNoKGkpO2lmKGUuYnVpbHRJbkVuY29kaW5nKXtjb25zdCB0PWUuYnVpbHRJbkVuY29kaW5nLmluZGV4T2Yocyk7dD4tMSYmdm9pZCAwPT09ZS53aWR0aHNbdF0mJnQ+PWUuZmlyc3RDaGFyJiZ0PD1lLmxhc3RDaGFyJiYoZS53aWR0aHNbdF09bi53aWR0aCl9fXJldHVybiByfWV4dHJhY3RDaWRLZXllZEZvbnRQcm9ncmFtKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW0sYT1uZXcgTWFwKFtbImxlbklWIiw0XV0pLG49e3N1YnJzOltdLGNoYXJzdHJpbmdzOltdLHByb3BlcnRpZXM6e3ByaXZhdGVEYXRhOmF9fTtsZXQgcz0wLHI9LTEsaT0xLG89MCxsPS0xLGY9MCxjPTAsaD0wLHU9ITEsbT0hMTtjb25zdCBwPVtdO2Z1bmN0aW9uIHJlbWVtYmVyVG9rZW4oZSl7cC5wdXNoKGUpO3AubGVuZ3RoPjQmJnAuc2hpZnQoKX1sZXQgZDtmb3IoO251bGwhPT0oZD10aGlzLmdldFRva2VuKCkpOyl7aWYoIlN0YXJ0RGF0YSI9PT1kKXtjb25zdCBlPXAuYXQoLTMpLHQ9cC5hdCgtMSk7aWYoIigiIT09cC5hdCgtNCl8fCIpIiE9PXAuYXQoLTIpfHwiQmluYXJ5IiE9PWUmJiJIZXgiIT09ZXx8IS9eXGQrJC8udGVzdCh0KSlyZXR1cm4gbnVsbDtoPXBhcnNlSW50KHQsMTApO2lmKGg8PTApcmV0dXJuIG51bGw7dT0iSGV4Ij09PWU7bT0hMDticmVha31yZW1lbWJlclRva2VuKGQpO2lmKCIvIj09PWQpe2Q9dGhpcy5nZXRUb2tlbigpO3JlbWVtYmVyVG9rZW4oZCk7c3dpdGNoKGQpe2Nhc2UiRm9udE1hdHJpeCI6ZS5mb250TWF0cml4PXRoaXMucmVhZE51bWJlckFycmF5KCk7YnJlYWs7Y2FzZSJGb250QkJveCI6Y29uc3QgdD10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UuYXNjZW50PU1hdGgubWF4KHRbM10sdFsxXSk7ZS5kZXNjZW50PU1hdGgubWluKHRbMV0sdFszXSk7ZS5hc2NlbnRTY2FsZWQ9ITA7YnJlYWs7Y2FzZSJDSURDb3VudCI6cz10aGlzLnJlYWRJbnQoKTticmVhaztjYXNlIkNJRE1hcE9mZnNldCI6cj10aGlzLnJlYWRJbnQoKTticmVhaztjYXNlIkZEQnl0ZXMiOmk9dGhpcy5yZWFkSW50KCk7YnJlYWs7Y2FzZSJHREJ5dGVzIjpvPXRoaXMucmVhZEludCgpO2JyZWFrO2Nhc2UiU3Vick1hcE9mZnNldCI6bD10aGlzLnJlYWRJbnQoKTticmVhaztjYXNlIlNEQnl0ZXMiOmY9dGhpcy5yZWFkSW50KCk7YnJlYWs7Y2FzZSJTdWJyQ291bnQiOmM9dGhpcy5yZWFkSW50KCk7YnJlYWs7Y2FzZSJCbHVlVmFsdWVzIjpjYXNlIk90aGVyQmx1ZXMiOmNhc2UiRmFtaWx5Qmx1ZXMiOmNhc2UiRmFtaWx5T3RoZXJCbHVlcyI6dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTticmVhaztjYXNlIlN0ZW1TbmFwSCI6Y2FzZSJTdGVtU25hcFYiOmEuc2V0KGQsdGhpcy5yZWFkTnVtYmVyQXJyYXkoKSk7YnJlYWs7Y2FzZSJTdGRIVyI6Y2FzZSJTdGRWVyI6YS5zZXQoZCx0aGlzLnJlYWROdW1iZXJBcnJheSgpWzBdKTticmVhaztjYXNlIkJsdWVTaGlmdCI6Y2FzZSJsZW5JViI6Y2FzZSJCbHVlRnV6eiI6Y2FzZSJCbHVlU2NhbGUiOmNhc2UiTGFuZ3VhZ2VHcm91cCI6YS5zZXQoZCx0aGlzLnJlYWROdW1iZXIoKSk7YnJlYWs7Y2FzZSJFeHBhbnNpb25GYWN0b3IiOmEuc2V0KGQsdGhpcy5yZWFkTnVtYmVyKCl8fC4wNik7YnJlYWs7Y2FzZSJGb3JjZUJvbGQiOmEuc2V0KGQsdGhpcy5yZWFkQm9vbGVhbigpKX19fWlmKCFtfHxzPD0wfHxyPDB8fGk8MHx8aT40fHxvPDF8fG8+NClyZXR1cm4gbnVsbDtjb25zdCBnPXQuZW5kLXQucG9zO2lmKGg+ZylpZih1KXtpZihoPjIqZylyZXR1cm4gbnVsbH1lbHNlIGg9ZztsZXQgYj10LmdldEJ5dGVzKHU/dm9pZCAwOmgpO2lmKHUpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoaCk7bGV0IHQ9LTEsYT0wO2ZvcihsZXQgbj0wLHM9Yi5sZW5ndGg7bjxzJiZhPGg7bisrKXtjb25zdCBzPWJbbl07aWYoaXNIZXhEaWdpdChzKSlpZih0PDApdD1zO2Vsc2V7ZVthKytdPXBhcnNlSW50KFN0cmluZy5mcm9tQ2hhckNvZGUodCxzKSwxNik7dD0tMX19aWYoYSE9PWgpcmV0dXJuIG51bGw7Yj1lfWNvbnN0IHc9YS5nZXQoImxlbklWIiksaj1pK28saz1bXTtmdW5jdGlvbiByZWFkVWludChlLHQpe2xldCBhPTA7Zm9yKGxldCBuPTA7bjx0O24rKylhPWE8PDh8YltlK25dO3JldHVybiBhPj4+MH1pZihyKyhzKzEpKmo+Yi5sZW5ndGh8fGM+MCYmKGw8MHx8ZjwxfHxmPjR8fGwrKGMrMSkqZj5iLmxlbmd0aCkpcmV0dXJuIG51bGw7aWYoaT4wKWZvcihsZXQgZT0wO2U8cztlKyspaWYoMCE9PXJlYWRVaW50KHIrZSpqLGkpKXJldHVybiBudWxsO2lmKGM+MCl7Y29uc3QgZT1uZXcgQXJyYXkoYysxKTtmb3IobGV0IHQ9MDt0PD1jO3QrKyllW3RdPXJlYWRVaW50KGwrdCpmLGYpO2ZvcihsZXQgdD0wO3Q8Yzt0Kyspe2NvbnN0IGE9ZVt0XSxuPWVbdCsxXTtuPmIubGVuZ3RofHxuPGE/a1t0XT1uZXcgVWludDhBcnJheSgwKTprW3RdPXRoaXMucmVhZENoYXJTdHJpbmdzKGIuc3ViYXJyYXkoYSxuKSx3KX19Y29uc3QgeT1bXTtsZXQgcT1yZWFkVWludChyK2ksbyk7Zm9yKGxldCBlPTA7ZTxzO2UrKyl7Y29uc3QgdD1yZWFkVWludChyKyhlKzEpKmoraSxvKSxhPTA9PT1lPyIubm90ZGVmIjpgY2lkJHtlfWA7aWYodD5xJiZ0PD1iLmxlbmd0aCl7Y29uc3QgZT10aGlzLnJlYWRDaGFyU3RyaW5ncyhiLnN1YmFycmF5KHEsdCksdyksbj1uZXcgVHlwZTFDaGFyU3RyaW5nLHM9bi5jb252ZXJ0KGUsayx0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQpO3kucHVzaCh7Z2x5cGhOYW1lOmEsY2hhcnN0cmluZzpzP1sxNF06bi5vdXRwdXQsd2lkdGg6bi53aWR0aCxsc2I6bi5sc2Isc2VhYzpuLnNlYWN9KX1lbHNle2NvbnN0IGU9eVswXTt5LnB1c2goe2dseXBoTmFtZTphLGNoYXJzdHJpbmc6ZT8uY2hhcnN0cmluZy5zbGljZSgpfHxbMTM5LDE0XSx3aWR0aDplPy53aWR0aHx8MCxsc2I6ZT8ubHNifHwwfSl9cT10fW4uc3VicnM9aztuLmNoYXJzdHJpbmdzPXk7cmV0dXJuIG59ZXh0cmFjdEZvbnRIZWFkZXIoZSl7bGV0IHQ7Zm9yKDtudWxsIT09KHQ9dGhpcy5nZXRUb2tlbigpKTspaWYoIi8iPT09dCl7dD10aGlzLmdldFRva2VuKCk7c3dpdGNoKHQpe2Nhc2UiRm9udE1hdHJpeCI6Y29uc3QgYT10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UuZm9udE1hdHJpeD1hO2JyZWFrO2Nhc2UiRW5jb2RpbmciOmNvbnN0IG49dGhpcy5nZXRUb2tlbigpO2xldCBzO2lmKC9eXGQrJC8udGVzdChuKSl7cz1bXTtjb25zdCBlPTB8cGFyc2VJbnQobiwxMCk7dGhpcy5nZXRUb2tlbigpO2ZvcihsZXQgYT0wO2E8ZTthKyspe3Q9dGhpcy5nZXRUb2tlbigpO2Zvcig7ImR1cCIhPT10JiYiZGVmIiE9PXQ7KXt0PXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09dClyZXR1cm59aWYoImRlZiI9PT10KWJyZWFrO2NvbnN0IGU9dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2NvbnN0IGE9dGhpcy5nZXRUb2tlbigpO3NbZV09YTt0aGlzLmdldFRva2VuKCl9fWVsc2Ugcz1nZXRFbmNvZGluZyhuKTtlLmJ1aWx0SW5FbmNvZGluZz1zO2JyZWFrO2Nhc2UiRm9udEJCb3giOmNvbnN0IHI9dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmFzY2VudD1NYXRoLm1heChyWzNdLHJbMV0pO2UuZGVzY2VudD1NYXRoLm1pbihyWzFdLHJbM10pO2UuYXNjZW50U2NhbGVkPSEwfX19fWZ1bmN0aW9uIGZpbmRCbG9jayhlLHQsYSl7Y29uc3Qgbj1lLmxlbmd0aCxzPXQubGVuZ3RoLHI9bi1zO2xldCBpPWEsbz0hMTtmb3IoO2k8cjspe2xldCBhPTA7Zm9yKDthPHMmJmVbaSthXT09PXRbYV07KWErKztpZihhPj1zKXtpKz1hO2Zvcig7aTxuJiZpc1doaXRlU3BhY2UoZVtpXSk7KWkrKztvPSEwO2JyZWFrfWkrK31yZXR1cm57Zm91bmQ6byxsZW5ndGg6aX19Y2xhc3MgVHlwZTFGb250eyNqZTtjb25zdHJ1Y3RvcihlLHQsYSl7bGV0IG47YS5jb21wb3NpdGUmJmZ1bmN0aW9uIGlzQ2lkS2V5ZWRUeXBlMUZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcygyMDQ4KTtpZih0Lmxlbmd0aDwyfHwzNyE9PXRbMF18fDMzIT09dFsxXSlyZXR1cm4hMTtjb25zdCBhPWJ5dGVzVG9TdHJpbmcodCk7cmV0dXJuIGEuaW5jbHVkZXMoIlJlc291cmNlLUNJREZvbnQiKXx8L1wvQ0lERm9udFR5cGVccyswXGIvLnRlc3QoYSl9KHQpJiYobj10aGlzLiNrZSh0LGEpKTtufHw9dGhpcy4jeWUodCxhKTtmb3IoY29uc3QgZSBpbiBuLnByb3BlcnRpZXMpYVtlXT1uLnByb3BlcnRpZXNbZV07Y29uc3Qgcz1uLmNoYXJzdHJpbmdzLHI9dGhpcy5nZXRUeXBlMkNoYXJzdHJpbmdzKHMpLGk9dGhpcy5nZXRUeXBlMlN1YnJzKG4uc3VicnMpO3RoaXMuY2hhcnN0cmluZ3M9czt0aGlzLmRhdGE9dGhpcy53cmFwKGUscix0aGlzLmNoYXJzdHJpbmdzLGksYSk7dGhpcy5zZWFjcz10aGlzLmdldFNlYWNzKG4uY2hhcnN0cmluZ3MpfSN5ZShlLHQpe2xldCBhPXQubGVuZ3RoMSxuPXQubGVuZ3RoMixzPWUucGVla0J5dGVzKDYpO2NvbnN0IHI9MTI4PT09c1swXSYmMT09PXNbMV07aWYocil7ZS5za2lwKDYpO2E9c1s1XTw8MjR8c1s0XTw8MTZ8c1szXTw8OHxzWzJdfWNvbnN0IGk9ZnVuY3Rpb24gZ2V0SGVhZGVyQmxvY2soZSx0KXtjb25zdCBhPVsxMDEsMTAxLDEyMCwxMDEsOTldLG49ZS5wb3M7bGV0IHMscixpLG87dHJ5e3M9ZS5nZXRCeXRlcyh0KTtyPXMubGVuZ3RofWNhdGNoe31pZihyPT09dCl7aT1maW5kQmxvY2socyxhLHQtMiphLmxlbmd0aCk7aWYoaS5mb3VuZCYmaS5sZW5ndGg9PT10KXJldHVybntzdHJlYW06bmV3IFN0cmVhbShzKSxsZW5ndGg6dH19d2FybignSW52YWxpZCAiTGVuZ3RoMSIgcHJvcGVydHkgaW4gVHlwZTEgZm9udCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4nKTtlLnBvcz1uO2Zvcig7Oyl7aT1maW5kQmxvY2soZS5wZWVrQnl0ZXMoMjA0OCksYSwwKTtpZigwPT09aS5sZW5ndGgpYnJlYWs7ZS5wb3MrPWkubGVuZ3RoO2lmKGkuZm91bmQpe289ZS5wb3MtbjticmVha319ZS5wb3M9bjtpZihvKXJldHVybntzdHJlYW06bmV3IFN0cmVhbShlLmdldEJ5dGVzKG8pKSxsZW5ndGg6b307d2FybignVW5hYmxlIHRvIHJlY292ZXIgIkxlbmd0aDEiIHByb3BlcnR5IGluIFR5cGUxIGZvbnQgLS0gdXNpbmcgYXMgaXMuJyk7cmV0dXJue3N0cmVhbTpuZXcgU3RyZWFtKGUuZ2V0Qnl0ZXModCkpLGxlbmd0aDp0fX0oZSxhKTtuZXcgVHlwZTFQYXJzZXIoaS5zdHJlYW0sITEsITApLmV4dHJhY3RGb250SGVhZGVyKHQpO2lmKHIpe3M9ZS5nZXRCeXRlcyg2KTtuPXNbNV08PDI0fHNbNF08PDE2fHNbM108PDh8c1syXX1jb25zdCBvPWZ1bmN0aW9uIGdldEVleGVjQmxvY2soZSx0KXtjb25zdCBhPWUuZ2V0Qnl0ZXMoKTtpZigwPT09YS5sZW5ndGgpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJnZXRFZXhlY0Jsb2NrIC0gbm8gZm9udCBwcm9ncmFtIGZvdW5kLiIpO3JldHVybntzdHJlYW06bmV3IFN0cmVhbShhKSxsZW5ndGg6YS5sZW5ndGh9fShlKSxsPW5ldyBUeXBlMVBhcnNlcihvLnN0cmVhbSwhMCwhMCkuZXh0cmFjdEZvbnRQcm9ncmFtKHQpO3RoaXMuI2plPWkubGVuZ3RoK28ubGVuZ3RoO3JldHVybiBsfSNrZShlLHQpe2NvbnN0IGE9ZS5wb3Msbj1lLmVuZC1hLHM9bmV3IFR5cGUxUGFyc2VyKGUsITEsITApLmV4dHJhY3RDaWRLZXllZEZvbnRQcm9ncmFtKHQpO2lmKCFzKXtlLnBvcz1hO3dhcm4oIlR5cGUxRm9udDogdW5hYmxlIHRvIHBhcnNlIENJRC1rZXllZCBUeXBlIDEgZm9udC4iKTtyZXR1cm4gbnVsbH10aGlzLiNqZT1uO3JldHVybiBzfWdldCBudW1HbHlwaHMoKXtyZXR1cm4gdGhpcy5jaGFyc3RyaW5ncy5sZW5ndGgrMX1nZXRDaGFyc2V0KCl7Y29uc3QgZT1bIi5ub3RkZWYiXTtmb3IoY29uc3R7Z2x5cGhOYW1lOnR9b2YgdGhpcy5jaGFyc3RyaW5ncyllLnB1c2godCk7cmV0dXJuIGV9Z2V0R2x5cGhNYXBwaW5nKGUpe2NvbnN0IHQ9dGhpcy5jaGFyc3RyaW5ncztpZihlLmNvbXBvc2l0ZSl7Y29uc3QgYT1uZXcgTWFwO2ZvcihsZXQgbj0wLHM9dC5sZW5ndGg7bjxzO24rKyl7Y29uc3QgdD1lLmNNYXAuY2hhckNvZGVPZihuKTthLnNldCh0LG4rMSl9cmV0dXJuIGF9Y29uc3QgYT1bIi5ub3RkZWYiXTtsZXQgbixzO2ZvcihzPTA7czx0Lmxlbmd0aDtzKyspYS5wdXNoKHRbc10uZ2x5cGhOYW1lKTtjb25zdCByPWUuYnVpbHRJbkVuY29kaW5nO2lmKHIpe249T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3QgZSBpbiByKXtzPWEuaW5kZXhPZihyW2VdKTtzPj0wJiYobltlXT1zKX19cmV0dXJuIHR5cGUxRm9udEdseXBoTWFwcGluZyhlLG4sYSl9aGFzR2x5cGhJZChlKXtpZihlPDB8fGU+PXRoaXMubnVtR2x5cGhzKXJldHVybiExO2lmKDA9PT1lKXJldHVybiEwO3JldHVybiB0aGlzLmNoYXJzdHJpbmdzW2UtMV0uY2hhcnN0cmluZy5sZW5ndGg+MH1nZXRTZWFjcyhlKXtjb25zdCB0PW5ldyBNYXA7Zm9yKGxldCBhPTAsbj1lLmxlbmd0aDthPG47YSsrKXtjb25zdHtzZWFjOm59PWVbYV07biYmdC5zZXQoYSsxLG4pfXJldHVybiB0fWdldFR5cGUyQ2hhcnN0cmluZ3MoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgYSBvZiBlKXQucHVzaChhLmNoYXJzdHJpbmcpO3JldHVybiB0fWdldFR5cGUyU3VicnMoZSl7bGV0IHQ9MDtjb25zdCBhPWUubGVuZ3RoO3Q9YTwxMTMzPzEwNzphPDMzNzY5PzExMzE6MzI3Njg7Y29uc3Qgbj1bXTtsZXQgcztmb3Iocz0wO3M8dDtzKyspbi5wdXNoKFsxMV0pO2ZvcihzPTA7czxhO3MrKyluLnB1c2goZVtzXSk7cmV0dXJuIG59d3JhcChlLHQsYSxuLHMpe2NvbnN0IHI9bmV3IENGRih0aGlzLiNqZSk7ci5oZWFkZXI9bmV3IENGRkhlYWRlcigxLDAsNCw0KTtyLm5hbWVzPVtlXTtjb25zdCBpPW5ldyBDRkZUb3BEaWN0O2kuc2V0QnlOYW1lKCJ2ZXJzaW9uIiwzOTEpO2kuc2V0QnlOYW1lKCJOb3RpY2UiLDM5Mik7aS5zZXRCeU5hbWUoIkZ1bGxOYW1lIiwzOTMpO2kuc2V0QnlOYW1lKCJGYW1pbHlOYW1lIiwzOTQpO2kuc2V0QnlOYW1lKCJXZWlnaHQiLDM5NSk7aS5zZXRCeU5hbWUoIkVuY29kaW5nIixudWxsKTtpLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIscy5mb250TWF0cml4KTtpLnNldEJ5TmFtZSgiRm9udEJCb3giLHMuYmJveCk7aS5zZXRCeU5hbWUoImNoYXJzZXQiLG51bGwpO2kuc2V0QnlOYW1lKCJDaGFyU3RyaW5ncyIsbnVsbCk7aS5zZXRCeU5hbWUoIlByaXZhdGUiLG51bGwpO3IudG9wRGljdD1pO2NvbnN0IG89bmV3IENGRlN0cmluZ3M7by5hZGQoIlZlcnNpb24gMC4xMSIpO28uYWRkKCJTZWUgb3JpZ2luYWwgbm90aWNlIik7by5hZGQoZSk7by5hZGQoZSk7by5hZGQoIk1lZGl1bSIpO3Iuc3RyaW5ncz1vO3IuZ2xvYmFsU3VickluZGV4PW5ldyBDRkZJbmRleDtjb25zdCBsPXQubGVuZ3RoLGY9WyIubm90ZGVmIl07Zm9yKGxldCBlPTA7ZTxsO2UrKyl7Y29uc3R7Z2x5cGhOYW1lOnR9PWFbZV07LTE9PT1Pbi5pbmRleE9mKHQpJiZvLmFkZCh0KTtmLnB1c2godCl9ci5jaGFyc2V0PW5ldyBDRkZDaGFyc2V0KCExLDAsZik7Y29uc3QgYz1uZXcgQ0ZGSW5kZXg7Yy5hZGQoWzEzOSwxNF0pO2ZvcihsZXQgZT0wO2U8bDtlKyspYy5hZGQodFtlXSk7ci5jaGFyU3RyaW5ncz1jO2NvbnN0IGg9bmV3IENGRlByaXZhdGVEaWN0O2guc2V0QnlOYW1lKCJTdWJycyIsbnVsbCk7Y29uc3QgdT1bIkJsdWVWYWx1ZXMiLCJPdGhlckJsdWVzIiwiRmFtaWx5Qmx1ZXMiLCJGYW1pbHlPdGhlckJsdWVzIiwiU3RlbVNuYXBIIiwiU3RlbVNuYXBWIiwiQmx1ZVNoaWZ0IiwiQmx1ZUZ1enoiLCJCbHVlU2NhbGUiLCJMYW5ndWFnZUdyb3VwIiwiRXhwYW5zaW9uRmFjdG9yIiwiRm9yY2VCb2xkIiwiU3RkSFciLCJTdGRWVyJdO2Zvcihjb25zdCBlIG9mIHUpe2lmKCFzLnByaXZhdGVEYXRhLmhhcyhlKSljb250aW51ZTtjb25zdCB0PXMucHJpdmF0ZURhdGEuZ2V0KGUpO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKGxldCBlPXQubGVuZ3RoLTE7ZT4wO2UtLSl0W2VdLT10W2UtMV07aC5zZXRCeU5hbWUoZSx0KX1yLnRvcERpY3QucHJpdmF0ZURpY3Q9aDtjb25zdCBtPW5ldyBDRkZJbmRleDtmb3IoY29uc3QgZSBvZiBuKW0uYWRkKGUpO2guc3VicnNJbmRleD1tO3JldHVybiBuZXcgQ0ZGQ29tcGlsZXIocikuY29tcGlsZSgpfX1jb25zdCBocz1bWzU3MzQ0LDYzNzQzXSxbMTA0ODU3NiwxMTE0MTA5XV0sdXM9MWUzLG1zPVsiYmJveCIsImJsYWNrIiwiYm9sZCIsImNzc0ZvbnRJbmZvIiwiZGF0YSIsImRpc2FibGVGb250RmFjZSIsImZhbGxiYWNrTmFtZSIsImZvbnRFeHRyYVByb3BlcnRpZXMiLCJmb250TWF0cml4IiwiaXNJbnZhbGlkUERGanNGb250IiwiaXNUeXBlM0ZvbnQiLCJpdGFsaWMiLCJsb2FkZWROYW1lIiwibWlzc2luZ0ZpbGUiLCJyZW1lYXN1cmUiLCJzeXN0ZW1Gb250SW5mbyIsInZlcnRpY2FsIl0scHM9WyJhc2NlbnQiLCJjb21wb3NpdGUiLCJkZWZhdWx0RW5jb2RpbmciLCJkZWZhdWx0Vk1ldHJpY3MiLCJkZWZhdWx0V2lkdGgiLCJkZXNjZW50IiwiZGlmZmVyZW5jZXMiLCJpc01vbm9zcGFjZSIsImlzU2VyaWZGb250IiwiaXNTeW1ib2xpY0ZvbnQiLCJuYW1lIiwic2VhY01hcCIsInN1YnR5cGUiLCJ0b0ZvbnRDaGFyIiwidHlwZSIsInZtZXRyaWNzIiwid2lkdGhzIl07ZnVuY3Rpb24gYWRqdXN0V2lkdGhzKGUpe2lmKCFlLmZvbnRNYXRyaXh8fGUuZm9udE1hdHJpeFswXT09PW5bMF0pcmV0dXJuO2NvbnN0IHQ9LjAwMS9lLmZvbnRNYXRyaXhbMF0sYT1lLndpZHRocztmb3IoY29uc3QgZSBpbiBhKWFbZV0qPXQ7ZS5kZWZhdWx0V2lkdGgqPXR9ZnVuY3Rpb24gYW1lbmRGYWxsYmFja1RvVW5pY29kZShlKXtpZighZS5mYWxsYmFja1RvVW5pY29kZXx8ZS50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFthLG5db2YgZS5mYWxsYmFja1RvVW5pY29kZSllLnRvVW5pY29kZS5oYXMoYSl8fHQuc2V0KGEsbik7ZS50b1VuaWNvZGUuYW1lbmQodCl9Y2xhc3MgZm9udHNfR2x5cGh7Y29uc3RydWN0b3IoZSx0LGEsbixzLHIsaSxvLGwpe3RoaXMub3JpZ2luYWxDaGFyQ29kZT1lO3RoaXMuZm9udENoYXI9dDt0aGlzLnVuaWNvZGU9YTt0aGlzLmFjY2VudD1uO3RoaXMud2lkdGg9czt0aGlzLnZtZXRyaWM9cjt0aGlzLm9wZXJhdG9yTGlzdElkPWk7dGhpcy5pc1NwYWNlPW87dGhpcy5pc0luRm9udD1sfWdldCBjYXRlZ29yeSgpe3JldHVybiBzaGFkb3codGhpcywiY2F0ZWdvcnkiLGZ1bmN0aW9uIGdldENoYXJVbmljb2RlQ2F0ZWdvcnkoZSl7Y29uc3QgdD1xbi5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBhPWUubWF0Y2goeW4pLG49e2lzV2hpdGVzcGFjZTohIWE/LlsxXSxpc1plcm9XaWR0aERpYWNyaXRpYzohIWE/LlsyXSxpc0ludmlzaWJsZUZvcm1hdE1hcms6ISFhPy5bM119O3FuLnNldChlLG4pO3JldHVybiBufSh0aGlzLnVuaWNvZGUpLCEwKX19ZnVuY3Rpb24gaW50MTYoZSx0KXtyZXR1cm4oZTw8OCkrdH1mdW5jdGlvbiB3cml0ZVNpZ25lZEludDE2KGUsdCxhKXtlW3QrMV09YTtlW3RdPWE+Pj44fWZ1bmN0aW9uIHNpZ25lZEludDE2KGUsdCl7Y29uc3QgYT0oZTw8OCkrdDtyZXR1cm4gMzI3NjgmYT9hLTY1NTM2OmF9ZnVuY3Rpb24gd3JpdGVVaW50MzIoZSx0LGEpe2VbdCszXT0yNTUmYTtlW3QrMl09YT4+Pjg7ZVt0KzFdPWE+Pj4xNjtlW3RdPWE+Pj4yNH1mdW5jdGlvbiBpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUoZSl7cmV0dXJuInR0Y2YiPT09Ynl0ZXNUb1N0cmluZyhlLnBlZWtCeXRlcyg0KSl9ZnVuY3Rpb24gZ2V0Rm9udEZpbGVUeXBlKGUse3R5cGU6dCxzdWJ0eXBlOmEsY29tcG9zaXRlOm59KXtsZXQgcyxyO2lmKGZ1bmN0aW9uIGlzVHJ1ZVR5cGVGaWxlKGUpe2NvbnN0IHQ9Ynl0ZXNUb1N0cmluZyhlLnBlZWtCeXRlcyg0KSk7cmV0dXJuIlwwAVwwXDAiPT09dHx8InRydWUiPT09dH0oZSl8fGlzVHJ1ZVR5cGVDb2xsZWN0aW9uRmlsZShlKSlzPW4/IkNJREZvbnRUeXBlMiI6IlRydWVUeXBlIjtlbHNlIGlmKGZ1bmN0aW9uIGlzT3BlblR5cGVGaWxlKGUpe3JldHVybiJPVFRPIj09PWJ5dGVzVG9TdHJpbmcoZS5wZWVrQnl0ZXMoNCkpfShlKSlzPW4/IkNJREZvbnRUeXBlMiI6Ik9wZW5UeXBlIjtlbHNlIGlmKGZ1bmN0aW9uIGlzVHlwZTFGaWxlKGUpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoMik7cmV0dXJuIDM3PT09dFswXSYmMzM9PT10WzFdfHwxMjg9PT10WzBdJiYxPT09dFsxXX0oZSkpcz1uPyJDSURGb250VHlwZTAiOiJNTVR5cGUxIj09PXQ/Ik1NVHlwZTEiOiJUeXBlMSI7ZWxzZSBpZihmdW5jdGlvbiBpc0NGRkZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcyg0KTtyZXR1cm4gdFswXT49MSYmdFszXT49MSYmdFszXTw9NH0oZSkpaWYobil7cz0iQ0lERm9udFR5cGUwIjtyPSJDSURGb250VHlwZTBDIn1lbHNle3M9Ik1NVHlwZTEiPT09dD8iTU1UeXBlMSI6IlR5cGUxIjtyPSJUeXBlMUMifWVsc2V7d2FybigiZ2V0Rm9udEZpbGVUeXBlOiBVbmFibGUgdG8gZGV0ZWN0IGNvcnJlY3QgZm9udCBmaWxlIFR5cGUvU3VidHlwZS4iKTtzPXQ7cj1hfXJldHVybltzLHJdfWZ1bmN0aW9uIGFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoZSx0KXtmb3IoY29uc3QgYSBpbiB0KWUuc2V0KCthLHRbYV0pfWNvbnN0IGRzPWdldExvb2t1cFRhYmxlRmFjdG9yeShlPT57bGV0IHQ9Mztmb3IoY29uc3RbYSxuXW9mW1szMiwxMjZdLFsxNjEsMjU0XV0pZm9yKGxldCBzPWE7czw9bjtzKyspZVt0KytdPWRuW3NdfSwhMCk7ZnVuY3Rpb24gYnVpbGRUb0ZvbnRDaGFyKGUsdCxhKXtjb25zdCBuPW5ldyBNYXA7bGV0IHM7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXtzPWdldFVuaWNvZGVGb3JHbHlwaChlW2FdLHQpOy0xIT09cyYmbi5zZXQoYSxzKX1mb3IoY29uc3RbZSxyXW9mIGEpe3M9Z2V0VW5pY29kZUZvckdseXBoKHIsdCk7LTEhPT1zJiZuLnNldChlLHMpfXJldHVybiBufWZ1bmN0aW9uIGlzTWFjTmFtZVJlY29yZChlKXtyZXR1cm4gMT09PWUucGxhdGZvcm0mJjA9PT1lLmVuY29kaW5nJiYwPT09ZS5sYW5ndWFnZX1mdW5jdGlvbiBpc1dpbk5hbWVSZWNvcmQoZSl7cmV0dXJuIDM9PT1lLnBsYXRmb3JtJiYxPT09ZS5lbmNvZGluZyYmMTAzMz09PWUubGFuZ3VhZ2V9ZnVuY3Rpb24gY29udmVydENpZFN0cmluZyhlLHQsYT0hMSl7c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIHQuY2hhckNvZGVBdCgwKTtjYXNlIDI6cmV0dXJuIHQuY2hhckNvZGVBdCgwKTw8OHx0LmNoYXJDb2RlQXQoMSl9Y29uc3Qgbj1gVW5zdXBwb3J0ZWQgQ0lEIHN0cmluZyAoY2hhckNvZGUgJHtlfSk6ICIke3R9Ii5gO2lmKGEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKG4pO3dhcm4obik7cmV0dXJuIHR9ZnVuY3Rpb24gYWRqdXN0TWFwcGluZyhlLHQsYSxuKXtjb25zdCBzPW5ldyBNYXAscj1uZXcgTWFwLGk9bmV3IE1hcCxvPW5ldyBTZXQ7bGV0IGw9MDtsZXQgZj1oc1tsXVswXSxjPWhzW2xdWzFdO2NvbnN0IGlzSW5Qcml2YXRlQXJlYT1lPT5oc1swXVswXTw9ZSYmZTw9aHNbMF1bMV18fGhzWzFdWzBdPD1lJiZlPD1oc1sxXVsxXTtsZXQgaD1udWxsO2Zvcihjb25zdFt1LG1db2YgZSl7aWYoIXQobSkpY29udGludWU7aWYoZj5jKXtsKys7aWYobD49aHMubGVuZ3RoKXt3YXJuKCJSYW4gb3V0IG9mIHNwYWNlIGluIGZvbnQgcHJpdmF0ZSB1c2UgYXJlYS4iKTticmVha31mPWhzW2xdWzBdO2M9aHNbbF1bMV19Y29uc3QgZT1mKysscD0wPT09bT9hOm07bGV0IGQ9bi5nZXQodSk7aWYoInN0cmluZyI9PXR5cGVvZiBkKWlmKDE9PT1kLmxlbmd0aClkPWQuY29kZVBvaW50QXQoMCk7ZWxzZXtpZighaCl7aD1uZXcgTWFwO2ZvcihsZXQgZT02NDI1NjtlPD02NDMzNTtlKyspe2NvbnN0IHQ9U3RyaW5nLmZyb21DaGFyQ29kZShlKS5ub3JtYWxpemUoIk5GS0QiKTt0Lmxlbmd0aD4xJiZoLnNldCh0LGUpfX1kPWguZ2V0KGQpfHxkLmNvZGVQb2ludEF0KDApfWlmKGQmJiFpc0luUHJpdmF0ZUFyZWEoZCkmJiFvLmhhcyhwKSl7ci5zZXQoZCxwKTtvLmFkZChwKX1zLnNldChlLHApO2kuc2V0KHUsZSl9cmV0dXJue3RvRm9udENoYXI6aSxjaGFyQ29kZVRvR2x5cGhJZDpzLHRvVW5pY29kZUV4dHJhTWFwOnIsbmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZTpmfX1mdW5jdGlvbiBjcmVhdGVDbWFwVGFibGUoZSx0LGEpe2NvbnN0IG49ZnVuY3Rpb24gZ2V0UmFuZ2VzKGUsdCxhKXtjb25zdCBuPVtdO2Zvcihjb25zdFt0LHNdb2YgZSlzPj1hfHxuLnB1c2goe2ZvbnRDaGFyQ29kZTp0LGdseXBoSWQ6c30pO2lmKHQpZm9yKGNvbnN0W2Usc11vZiB0KXM+PWF8fG4ucHVzaCh7Zm9udENoYXJDb2RlOmUsZ2x5cGhJZDpzfSk7MD09PW4ubGVuZ3RoJiZuLnB1c2goe2ZvbnRDaGFyQ29kZTowLGdseXBoSWQ6MH0pO24uc29ydCgoZSx0KT0+ZS5mb250Q2hhckNvZGUtdC5mb250Q2hhckNvZGUpO2NvbnN0IHM9W10scj1uLmxlbmd0aDtmb3IobGV0IGU9MDtlPHI7KXtjb25zdCB0PW5bZV0uZm9udENoYXJDb2RlLGE9W25bZV0uZ2x5cGhJZF07KytlO2xldCBpPXQ7Zm9yKDtlPHImJmkrMT09PW5bZV0uZm9udENoYXJDb2RlOyl7YS5wdXNoKG5bZV0uZ2x5cGhJZCk7KytpOysrZTtpZig2NTUzNT09PWkpYnJlYWt9cy5wdXNoKFt0LGksYV0pfXJldHVybiBzfShlLHQsYSkscz1uLmF0KC0xKVsxXT42NTUzNTtsZXQgcixpLG87Zm9yKHI9bi5sZW5ndGgtMTtyPj0wJiYhKG5bcl1bMF08PTY1NTM1KTstLXIpO2NvbnN0IGw9cisxO25bcl1bMF08NjU1MzUmJjY1NTM1PT09bltyXVsxXSYmKG5bcl1bMV09NjU1MzQpO2NvbnN0IGY9bltyXVsxXTw2NTUzNT8xOjAsYz1sK2YsaD1PcGVuVHlwZUZpbGVCdWlsZGVyLmdldFNlYXJjaFBhcmFtcyhjLDIpLHU9MipsKzIqZixtPW5ldyBEYXRhQnVpbGRlcih7ZXhhY3RMZW5ndGg6dX0pLHA9bmV3IERhdGFCdWlsZGVyKHtleGFjdExlbmd0aDp1fSksZD1uZXcgRGF0YUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOnV9KSxnPW5ldyBEYXRhQnVpbGRlcih7ZXhhY3RMZW5ndGg6dX0pLGI9bmV3IERhdGFCdWlsZGVyKHt9KTtsZXQgdz0wLGo9ITE7Zm9yKHI9MDtyPGw7cisrKXtjb25zdFtlLHQsYV09bltyXTttLnNldEludDE2KGUpO3Auc2V0SW50MTYodCk7bGV0IHM9ITA7Zm9yKGk9MSxvPWEubGVuZ3RoO2k8bzsrK2kpaWYoYVtpXSE9PWFbaS0xXSsxKXtzPSExO2JyZWFrfWlmKHMpe2NvbnN0IHQ9YVswXTtkLnNldEludDE2KHQtZSY2NTUzNSk7Zy5za2lwKDIpfWVsc2V7Y29uc3Qgbj0yKihjLXIpKzIqdzt3Kz10LWUrMTtkLnNraXAoMik7aWYobj42NTUzNSl7aj0hMDtnLnNraXAoMil9ZWxzZSBnLnNldEludDE2KG4pO2ZvcihpPTAsbz1hLmxlbmd0aDtpPG87KytpKWIuc2V0SW50MTYoYVtpXSl9fWlmKGY+MCl7cC5zZXRBcnJheShbMjU1LDI1NV0pO20uc2V0QXJyYXkoWzI1NSwyNTVdKTtkLnNldEFycmF5KFswLDFdKTtnLnNraXAoMil9Y29uc3Qgaz1uZXcgRGF0YUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOjEyK20ubGVuZ3RoK3AubGVuZ3RoK2QubGVuZ3RoK2cubGVuZ3RoK2IubGVuZ3RofSk7ay5za2lwKDIpO2suc2V0SW50MTYoMipjKTtrLnNldEludDE2KGgucmFuZ2UpO2suc2V0SW50MTYoaC5lbnRyeSk7ay5zZXRJbnQxNihoLnJhbmdlU2hpZnQpO2suc2V0QXJyYXkocC5kYXRhKTtrLnNraXAoMik7ay5zZXRBcnJheShtLmRhdGEpO2suc2V0QXJyYXkoZC5kYXRhKTtrLnNldEFycmF5KGcuZGF0YSk7ay5zZXRBcnJheShiLmRhdGEpO2NvbnN0IHk9IWomJmsubGVuZ3RoKzQ8PTY1NTM1LHE9c3x8IXksdj0oeT8xOjApKyhxPzE6MCk7bGV0IFM9bnVsbCx4PW51bGw7aWYocSl7Uz1uZXcgRGF0YUJ1aWxkZXIoe30pO2Zvcihjb25zdCBlIG9mIG4pe2xldCB0PWVbMF07Y29uc3QgYT1lWzJdO2xldCBuPWFbMF07Zm9yKGk9MSxvPWEubGVuZ3RoO2k8bzsrK2kpaWYoYVtpXSE9PWFbaS0xXSsxKXtjb25zdCBzPWVbMF0raS0xO1Muc2V0SW50MzIodCk7Uy5zZXRJbnQzMihzKTtTLnNldEludDMyKG4pO3Q9cysxO249YVtpXX1TLnNldEludDMyKHQpO1Muc2V0SW50MzIoZVsxXSk7Uy5zZXRJbnQzMihuKX14PW5ldyBEYXRhQnVpbGRlcih7ZXhhY3RMZW5ndGg6MTZ9KTt4LnNldEFycmF5KFswLDEyXSk7eC5za2lwKDIpO3guc2V0SW50MzIoUy5sZW5ndGgrMTYpO3guc2tpcCg0KTt4LnNldEludDMyKFMubGVuZ3RoLzEyKX1jb25zdCBDPTQrOCp2LEY9eT80K2subGVuZ3RoOjAsVD1uZXcgRGF0YUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOkN9KTtULnNraXAoMik7VC5zZXRJbnQxNih2KTtsZXQgUj1DO2lmKHkpe1Quc2V0QXJyYXkoWzAsM10pO1Quc2V0QXJyYXkoWzAsMV0pO1Quc2V0SW50MzIoUik7Uis9Rn1pZihxKXtULnNldEFycmF5KFswLDNdKTtULnNldEFycmF5KFswLDEwXSk7VC5zZXRJbnQzMihSKX1jb25zdCBPPW5ldyBEYXRhQnVpbGRlcih7ZXhhY3RMZW5ndGg6VC5sZW5ndGgrRisoeD8ubGVuZ3RoPz8wKSsoUz8ubGVuZ3RoPz8wKX0pO08uc2V0QXJyYXkoVC5kYXRhKTtpZih5KXtPLnNldEFycmF5KFswLDRdKTtPLnNldEludDE2KGsubGVuZ3RoKzQpO08uc2V0QXJyYXkoay5kYXRhKX1pZihxKXtPLnNldEFycmF5KHguZGF0YSk7Ty5zZXRBcnJheShTLmRhdGEpfXJldHVybiBPLmRhdGF9ZnVuY3Rpb24gY3JlYXRlT1MyVGFibGUoZSx0LGEpe2F8fD17dW5pdHNQZXJFbTowLHlNYXg6MCx5TWluOjAsYXNjZW50OjAsZGVzY2VudDowfTtsZXQgbj0wLHM9MCxyPTAsaT0wLG89bnVsbCxsPTAsZj0tMTtpZih0KXtmb3IoY29uc3QgZSBvZiB0LmtleXMoKSl7KG8+ZXx8IW8pJiYobz1lKTtsPGUmJihsPWUpO2Y9Z2V0VW5pY29kZVJhbmdlRm9yKGUsZik7aWYoZjwzMilufD0xPDxmO2Vsc2UgaWYoZjw2NClzfD0xPDxmLTMyO2Vsc2UgaWYoZjw5NilyfD0xPDxmLTY0O2Vsc2V7aWYoIShmPDEyMykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmljb2RlIHJhbmdlcyBCaXRzID4gMTIzIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNhZ2UiKTtpfD0xPDxmLTk2fX1sPjY1NTM1JiYobD02NTUzNSl9ZWxzZXtvPTA7bD0yNTV9Y29uc3QgYz1lLmJib3h8fFswLDAsMCwwXSxoPWEudW5pdHNQZXJFbXx8KGUuZm9udE1hdHJpeD8xL01hdGgubWF4KC4uLmUuZm9udE1hdHJpeC5zbGljZSgwLDQpLm1hcChNYXRoLmFicykpOjFlMyksdT1lLmFzY2VudFNjYWxlZD8xOmgvdXMsbT1hLmFzY2VudHx8TWF0aC5yb3VuZCh1KihlLmFzY2VudHx8Y1szXSkpO2xldCBwPWEuZGVzY2VudHx8TWF0aC5yb3VuZCh1KihlLmRlc2NlbnR8fGNbMV0pKTtwPjAmJmUuZGVzY2VudD4wJiZjWzFdPDAmJihwPS1wKTtjb25zdCBkPWEueU1heHx8bSxnPS1hLnlNaW58fC1wLGI9bmV3IERhdGFCdWlsZGVyKHtleGFjdExlbmd0aDo5Nn0pO2Iuc2V0QXJyYXkoWzAsM10pO2Iuc2V0QXJyYXkoWzIsMzZdKTtiLnNldEFycmF5KFsxLDI0NF0pO2Iuc2V0QXJyYXkoWzAsNV0pO2Iuc2tpcCgyKTtiLnNldEFycmF5KFsyLDEzOF0pO2Iuc2V0QXJyYXkoWzIsMTg3XSk7Yi5za2lwKDIpO2Iuc2V0QXJyYXkoWzAsMTQwXSk7Yi5zZXRBcnJheShbMiwxMzhdKTtiLnNldEFycmF5KFsyLDE4N10pO2Iuc2tpcCgyKTtiLnNldEFycmF5KFsxLDIyM10pO2Iuc2V0QXJyYXkoWzAsNDldKTtiLnNldEFycmF5KFsxLDJdKTtiLnNraXAoMik7Yi5zZXRBcnJheShbMCwwLDYsZS5maXhlZFBpdGNoPzk6MCwwLDAsMCwwLDAsMF0pO2Iuc2V0SW50MzIobik7Yi5zZXRJbnQzMihzKTtiLnNldEludDMyKHIpO2Iuc2V0SW50MzIoaSk7Yi5zZXRBcnJheShbNDIsNTAsNDksNDJdKTtiLnNldEludDE2KGUuaXRhbGljQW5nbGU/MTowKTtiLnNldEludDE2KG98fGUuZmlyc3RDaGFyKTtiLnNldEludDE2KGx8fGUubGFzdENoYXIpO2Iuc2V0SW50MTYobSk7Yi5zZXRJbnQxNihwKTtiLnNldEFycmF5KFswLDEwMF0pO2Iuc2V0SW50MTYoZCk7Yi5zZXRJbnQxNihnKTtiLnNraXAoOCk7Yi5zZXRJbnQxNihlLnhIZWlnaHQpO2Iuc2V0SW50MTYoZS5jYXBIZWlnaHQpO2Iuc2tpcCgyKTtiLnNldEludDE2KG98fGUuZmlyc3RDaGFyKTtiLnNldEFycmF5KFswLDNdKTtyZXR1cm4gYi5kYXRhfWZ1bmN0aW9uIGNyZWF0ZVBvc3RUYWJsZShlKXtjb25zdCB0PW5ldyBEYXRhQnVpbGRlcih7ZXhhY3RMZW5ndGg6MzJ9KTt0LnNldEFycmF5KFswLDMsMCwwXSk7dC5zZXRJbnQzMihNYXRoLmZsb29yKDY1NTM2KmUuaXRhbGljQW5nbGUpKTt0LnNraXAoNCk7dC5zZXRJbnQzMihlLmZpeGVkUGl0Y2g/MTowKTt0LnNraXAoMTYpO3JldHVybiB0LmRhdGF9ZnVuY3Rpb24gY3JlYXRlUG9zdHNjcmlwdE5hbWUoZSl7cmV0dXJuIGUucmVwbGFjZUFsbCgvW15ceDIxLVx4N0VdfFtbXF0oKXt9PD4vJV0vZywiIikuc2xpY2UoMCw2Myl9ZnVuY3Rpb24gY3JlYXRlTmFtZVRhYmxlKGUsdCl7dHx8PVtbXSxbXV07Y29uc3QgYT1bdFswXVswXXx8Ik9yaWdpbmFsIGxpY2VuY2UiLHRbMF1bMV18fGUsdFswXVsyXXx8IlVua25vd24iLHRbMF1bM118fCJ1bmlxdWVJRCIsdFswXVs0XXx8ZSx0WzBdWzVdfHwiVmVyc2lvbiAwLjExIix0WzBdWzZdfHxjcmVhdGVQb3N0c2NyaXB0TmFtZShlKSx0WzBdWzddfHwiVW5rbm93biIsdFswXVs4XXx8IlVua25vd24iLHRbMF1bOV18fCJVbmtub3duIl0sbj1hLm1hcChzdHJpbmdUb0J5dGVzKSxzPW5ldyBBcnJheShhLmxlbmd0aCk7bGV0IHIsaSxvLGwsZjtmb3Iocj0wLGk9YS5sZW5ndGg7cjxpO3IrKyl7Zj10WzFdW3JdfHxhW3JdO2NvbnN0IGU9bmV3IERhdGFCdWlsZGVyKHtleGFjdExlbmd0aDoyKmYubGVuZ3RofSk7Zm9yKG89MCxsPWYubGVuZ3RoO288bDtvKyspZS5zZXRJbnQxNihmLmNoYXJDb2RlQXQobykpO3Nbcl09ZS5kYXRhfWNvbnN0IGM9W24sc10saD1bWzAsMV0sWzAsM11dLHU9W1swLDBdLFswLDFdXSxtPVtbMCwwXSxbNCw5XV0scD1bXTtsZXQgZD0wO2ZvcihyPTAsaT1oLmxlbmd0aDtyPGk7cisrKXtjb25zdCBlPWNbcl07Zm9yKG89MCxsPWUubGVuZ3RoO288bDtvKyspe2Y9ZVtvXTtjb25zdCB0PW5ldyBEYXRhQnVpbGRlcih7ZXhhY3RMZW5ndGg6NitoW3JdLmxlbmd0aCt1W3JdLmxlbmd0aCttW3JdLmxlbmd0aH0pO3Quc2V0QXJyYXkoaFtyXSk7dC5zZXRBcnJheSh1W3JdKTt0LnNldEFycmF5KG1bcl0pO3Quc2V0SW50MTYobyk7dC5zZXRJbnQxNihmLmxlbmd0aCk7dC5zZXRJbnQxNihkKTtwLnB1c2godC5kYXRhKTtkKz1mLmxlbmd0aH19Y29uc3QgZz1uLmxlbmd0aCpoLmxlbmd0aCxiPW5ldyBEYXRhQnVpbGRlcih7ZXhhY3RMZW5ndGg6NitNYXRoLnN1bVByZWNpc2UocC5tYXAoZT0+ZS5sZW5ndGgpKStNYXRoLnN1bVByZWNpc2Uobi5tYXAoZT0+ZS5sZW5ndGgpKStNYXRoLnN1bVByZWNpc2Uocy5tYXAoZT0+ZS5sZW5ndGgpKX0pO2Iuc2tpcCgyKTtiLnNldEludDE2KGcpO2Iuc2V0SW50MTYoMTIqZys2KTtmb3IoY29uc3QgZSBvZiBwKWIuc2V0QXJyYXkoZSk7Zm9yKGNvbnN0IGUgb2YgbiliLnNldEFycmF5KGUpO2Zvcihjb25zdCBlIG9mIHMpYi5zZXRBcnJheShlKTtyZXR1cm4gYi5kYXRhfWNsYXNzIEZvbnR7I3FlPW5ldyBNYXA7I3ZlPW5ldyBNYXA7Y2hhclByb2NPcGVyYXRvckxpc3Q7dG9Gb250Q2hhcj1uZXcgTWFwO2NvbnN0cnVjdG9yKGUsdCxhLG4pe3RoaXMubmFtZT1lO3RoaXMucHNOYW1lPW51bGw7dGhpcy5kaXNhYmxlRm9udEZhY2U9bi5kaXNhYmxlRm9udEZhY2U7dGhpcy5mb250RXh0cmFQcm9wZXJ0aWVzPW4uZm9udEV4dHJhUHJvcGVydGllczt0aGlzLmxvYWRlZE5hbWU9YS5sb2FkZWROYW1lO3RoaXMuaXNUeXBlM0ZvbnQ9YS5pc1R5cGUzRm9udDt0aGlzLm1pc3NpbmdGaWxlPSExO3RoaXMuY3NzRm9udEluZm89YS5jc3NGb250SW5mbztsZXQgcz0hIShhLmZsYWdzJlNuKTtpZighcyYmIWEuaXNTaW11bGF0ZWRGbGFncyl7Y29uc3QgdD1fbigpLGE9TG4oKSxuPVVuKCk7Zm9yKGNvbnN0IHIgb2YgZS5zcGxpdCgiKyIpKXtsZXQgZT1ub3JtYWxpemVGb250TmFtZShyKTtlPXRbZV18fGFbZV18fGU7ZT1lLnNwbGl0KCItIiwxKVswXTtpZihuW2VdKXtzPSEwO2JyZWFrfX19dGhpcy5pc1NlcmlmRm9udD1zO3RoaXMuaXNTeW1ib2xpY0ZvbnQ9ISEoYS5mbGFncyZBbik7dGhpcy5pc01vbm9zcGFjZT0hIShhLmZsYWdzJnZuKTtsZXR7dHlwZTpyLHN1YnR5cGU6aX09YTt0aGlzLnR5cGU9cjt0aGlzLnN1YnR5cGU9aTt0aGlzLnN5c3RlbUZvbnRJbmZvPWEuc3lzdGVtRm9udEluZm87Y29uc3Qgbz1lLm1hdGNoKC9eSW52YWxpZFBERmpzRm9udF8oLiopX1xkKyQvKTt0aGlzLmlzSW52YWxpZFBERmpzRm9udD0hIW87dGhpcy5pc0ludmFsaWRQREZqc0ZvbnQ/dGhpcy5mYWxsYmFja05hbWU9b1sxXTp0aGlzLmlzTW9ub3NwYWNlP3RoaXMuZmFsbGJhY2tOYW1lPSJtb25vc3BhY2UiOnRoaXMuaXNTZXJpZkZvbnQ/dGhpcy5mYWxsYmFja05hbWU9InNlcmlmIjp0aGlzLmZhbGxiYWNrTmFtZT0ic2Fucy1zZXJpZiI7aWYodGhpcy5zeXN0ZW1Gb250SW5mbz8uZ3Vlc3NGYWxsYmFjayl7dGhpcy5zeXN0ZW1Gb250SW5mby5ndWVzc0ZhbGxiYWNrPSExO3RoaXMuc3lzdGVtRm9udEluZm8uY3NzKz1gLCR7dGhpcy5mYWxsYmFja05hbWV9YH10aGlzLmRpZmZlcmVuY2VzPWEuZGlmZmVyZW5jZXM7dGhpcy53aWR0aHM9YS53aWR0aHM7dGhpcy5kZWZhdWx0V2lkdGg9YS5kZWZhdWx0V2lkdGg7dGhpcy5jb21wb3NpdGU9YS5jb21wb3NpdGU7dGhpcy5jTWFwPWEuY01hcDt0aGlzLmNhcEhlaWdodD1hLmNhcEhlaWdodC91czt0aGlzLmFzY2VudD1hLmFzY2VudC91czt0aGlzLmRlc2NlbnQ9YS5kZXNjZW50L3VzO3RoaXMubGluZUhlaWdodD10aGlzLmFzY2VudC10aGlzLmRlc2NlbnQ7dGhpcy5mb250TWF0cml4PWEuZm9udE1hdHJpeDt0aGlzLmJib3g9YS5iYm94O3RoaXMuZGVmYXVsdEVuY29kaW5nPWEuZGVmYXVsdEVuY29kaW5nO3RoaXMudG9Vbmljb2RlPWEudG9Vbmljb2RlO2lmKCJUeXBlMyI9PT1hLnR5cGUpe2ZvcihsZXQgZT0wO2U8MjU2O2UrKyl0aGlzLnRvRm9udENoYXIuc2V0KGUsdGhpcy5kaWZmZXJlbmNlcy5nZXQoZSl8fGEuZGVmYXVsdEVuY29kaW5nW2VdKTtyZXR1cm59dGhpcy5jaWRFbmNvZGluZz1hLmNpZEVuY29kaW5nfHwiIjt0aGlzLnZlcnRpY2FsPSEhYS52ZXJ0aWNhbDtpZih0aGlzLnZlcnRpY2FsKXt0aGlzLnZtZXRyaWNzPWEudm1ldHJpY3M7dGhpcy5kZWZhdWx0Vk1ldHJpY3M9YS5kZWZhdWx0Vk1ldHJpY3N9aWYoIXR8fHQuaXNFbXB0eSl7dCYmd2FybignRm9udCBmaWxlIGlzIGVtcHR5IGluICInK2UrJyIgKCcrdGhpcy5sb2FkZWROYW1lKyIpIik7dGhpcy5mYWxsYmFja1RvU3lzdGVtRm9udChhKTtyZXR1cm59W3IsaV09Z2V0Rm9udEZpbGVUeXBlKHQsYSk7cj09PXRoaXMudHlwZSYmaT09PXRoaXMuc3VidHlwZXx8aW5mbyhgSW5jb25zaXN0ZW50IGZvbnQgZmlsZSBUeXBlL1N1YlR5cGUsIGV4cGVjdGVkOiAke3RoaXMudHlwZX0vJHt0aGlzLnN1YnR5cGV9IGJ1dCBmb3VuZDogJHtyfS8ke2l9LmApO2xldCBsO3RyeXtzd2l0Y2gocil7Y2FzZSJNTVR5cGUxIjppbmZvKCJNTVR5cGUxIGZvbnQgKCIrZSsiKSwgZmFsbGluZyBiYWNrIHRvIFR5cGUxLiIpO2Nhc2UiVHlwZTEiOmNhc2UiQ0lERm9udFR5cGUwIjpjb25zdCBuPSJUeXBlMUMiPT09aXx8IkNJREZvbnRUeXBlMEMiPT09aT9uZXcgQ0ZGRm9udCh0LGEpOm5ldyBUeXBlMUZvbnQoZSx0LGEpO2FkanVzdFdpZHRocyhhKTtsPXRoaXMuY29udmVydChlLG4sYSk7YnJlYWs7Y2FzZSJPcGVuVHlwZSI6Y2FzZSJUcnVlVHlwZSI6Y2FzZSJDSURGb250VHlwZTIiOmw9dGhpcy5jaGVja0FuZFJlcGFpcihlLHQsYSk7YWRqdXN0V2lkdGhzKGEpO3RoaXMuaXNPcGVuVHlwZSYmKHI9Ik9wZW5UeXBlIik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEZvbnQgJHtyfSBpcyBub3Qgc3VwcG9ydGVkYCl9fWNhdGNoKGUpe3dhcm4oZSk7dGhpcy5mYWxsYmFja1RvU3lzdGVtRm9udChhKTtyZXR1cm59YW1lbmRGYWxsYmFja1RvVW5pY29kZShhKTt0aGlzLmRhdGE9bDt0aGlzLnR5cGU9cjt0aGlzLnN1YnR5cGU9aTt0aGlzLmZvbnRNYXRyaXg9YS5mb250TWF0cml4O3RoaXMud2lkdGhzPWEud2lkdGhzO3RoaXMuZGVmYXVsdFdpZHRoPWEuZGVmYXVsdFdpZHRoO3RoaXMudG9Vbmljb2RlPWEudG9Vbmljb2RlO3RoaXMuc2VhY01hcD1hLnNlYWNNYXB9Z2V0IHJlbmRlcmVyKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJyZW5kZXJlciIsRm9udFJlbmRlcmVyRmFjdG9yeS5jcmVhdGUodGhpcywhMCkpfSNTZShlKXtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT10aGlzW2FdO3ZvaWQgMCE9PWUmJih0W2FdPWUpfXJldHVybiB0fWV4cG9ydERhdGEoKXtyZXR1cm57YnVmZmVyOmNvbXBpbGVGb250SW5mbyh0aGlzLiNTZShtcykpLGNoYXJQcm9jT3BlcmF0b3JMaXN0OnRoaXMuY2hhclByb2NPcGVyYXRvckxpc3QsZXh0cmE6dGhpcy5mb250RXh0cmFQcm9wZXJ0aWVzP3RoaXMuI1NlKHBzKTp2b2lkIDB9fWZhbGxiYWNrVG9TeXN0ZW1Gb250KGUpe3RoaXMubWlzc2luZ0ZpbGU9ITA7Y29uc3R7bmFtZTp0LHR5cGU6YX09dGhpcztsZXQgbj1ub3JtYWxpemVGb250TmFtZSh0KTtjb25zdCBzPV9uKCkscj1MbigpLGk9ISFzW25dLG89ISghcltuXXx8IXNbcltuXV0pO249c1tuXXx8cltuXXx8bjtjb25zdCBsPVpuKClbbl07aWYobCl7aXNOYU4odGhpcy5hc2NlbnQpJiYodGhpcy5hc2NlbnQ9bC5hc2NlbnQvdXMpO2lzTmFOKHRoaXMuZGVzY2VudCkmJih0aGlzLmRlc2NlbnQ9bC5kZXNjZW50L3VzKTtpc05hTih0aGlzLmNhcEhlaWdodCkmJih0aGlzLmNhcEhlaWdodD1sLmNhcEhlaWdodC91cyl9dGhpcy5ib2xkPS9ib2xkL2kudGVzdChuKTt0aGlzLml0YWxpYz0vb2JsaXF1ZXxpdGFsaWMvaS50ZXN0KG4pO3RoaXMuYmxhY2s9L0JsYWNrLy50ZXN0KHQpO2NvbnN0IGY9L05hcnJvdy8udGVzdCh0KTt0aGlzLnJlbWVhc3VyZT0oIWl8fGYpJiZPYmplY3Qua2V5cyh0aGlzLndpZHRocykubGVuZ3RoPjA7aWYoKGl8fG8pJiYiQ0lERm9udFR5cGUyIj09PWEmJnRoaXMuY2lkRW5jb2Rpbmcuc3RhcnRzV2l0aCgiSWRlbnRpdHktIikpe2NvbnN0IGE9ZS5jaWRUb0dpZE1hcCxuPW5ldyBNYXA7aWYoL1RyZWJ1Y2hldC9pLnRlc3QodCkpe2FwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAobixYbigpKTthcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKG4sR24oKSl9ZWxzZXthcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKG4sS24oKSk7L0FyaWFsLT9CbGFjay9pLnRlc3QodCk/YXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChuLFZuKCkpOi9DYWxpYnJpL2kudGVzdCh0KSYmYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChuLCRuKCkpfWlmKGEpe2Zvcihjb25zdFtlLHRdb2YgbilhLmhhcyh0KSYmbi5zZXQoZSxhLmdldCh0KSk7aWYoYS5zaXplIT09dGhpcy50b1VuaWNvZGUuc2l6ZSYmZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcCYmdGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcClmb3IoY29uc3RbZSx0XW9mIG4pIWEuaGFzKHQpJiZ0aGlzLnRvVW5pY29kZS5oYXMoZSkmJm4uZGVsZXRlKGUpfXRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXB8fHRoaXMudG9Vbmljb2RlLmZvckVhY2goKGUsdCk9PntuLnNldChlLHQpfSk7dGhpcy50b0ZvbnRDaGFyPW47dGhpcy50b1VuaWNvZGU9bmV3IFRvVW5pY29kZU1hcChuZXcgTWFwKG4pKX1lbHNlIGlmKC9TeW1ib2wvaS50ZXN0KG4pKXtjb25zdCBlPXRoaXMuY29tcG9zaXRlJiZ0aGlzLmNpZEVuY29kaW5nLnN0YXJ0c1dpdGgoIklkZW50aXR5LSIpO3RoaXMudG9Gb250Q2hhcj1idWlsZFRvRm9udENoYXIoZT9kcygpOmRuLGJuKCksdGhpcy5kaWZmZXJlbmNlcyl9ZWxzZSBpZigvRGluZ2JhdHMvaS50ZXN0KG4pKXRoaXMudG9Gb250Q2hhcj1idWlsZFRvRm9udENoYXIoZ24sd24oKSx0aGlzLmRpZmZlcmVuY2VzKTtlbHNlIGlmKGl8fG8pe2NvbnN0IGU9YnVpbGRUb0ZvbnRDaGFyKHRoaXMuZGVmYXVsdEVuY29kaW5nLGJuKCksdGhpcy5kaWZmZXJlbmNlcyk7IkNJREZvbnRUeXBlMiIhPT1hfHx0aGlzLmNpZEVuY29kaW5nLnN0YXJ0c1dpdGgoIklkZW50aXR5LSIpfHx0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwfHx0aGlzLnRvVW5pY29kZS5mb3JFYWNoKCh0LGEpPT57ZS5zZXQodCxhKX0pO3RoaXMudG9Gb250Q2hhcj1lfWVsc2V7Y29uc3QgZT1ibigpLGE9bmV3IE1hcDt0aGlzLnRvVW5pY29kZS5mb3JFYWNoKCh0LG4pPT57aWYoIXRoaXMuY29tcG9zaXRlKXtjb25zdCBhPWdldFVuaWNvZGVGb3JHbHlwaCh0aGlzLmRpZmZlcmVuY2VzLmdldCh0KXx8dGhpcy5kZWZhdWx0RW5jb2RpbmdbdF0sZSk7LTEhPT1hJiYobj1hKX1hLnNldCh0LG4pfSk7dGhpcy5jb21wb3NpdGUmJnRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXAmJi9UYWhvbWF8VmVyZGFuYS9pLnRlc3QodCkmJmFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoYSxLbigpKTt0aGlzLnRvRm9udENoYXI9YX1hbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGUpO3RoaXMubG9hZGVkTmFtZT1uLnNwbGl0KCItIiwxKVswXX1jaGVja0FuZFJlcGFpcihlLHQsYSl7Y29uc3Qgbj1bIk9TLzIiLCJjbWFwIiwiaGVhZCIsImhoZWEiLCJobXR4IiwibWF4cCIsIm5hbWUiLCJwb3N0IiwibG9jYSIsImdseWYiLCJmcGdtIiwicHJlcCIsImN2dCAiLCJDRkYgIl07ZnVuY3Rpb24gcmVhZFRhYmxlcyhlLHQpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTthWyJPUy8yIl09bnVsbDthLmNtYXA9bnVsbDthLmhlYWQ9bnVsbDthLmhoZWE9bnVsbDthLmhtdHg9bnVsbDthLm1heHA9bnVsbDthLm5hbWU9bnVsbDthLnBvc3Q9bnVsbDtmb3IobGV0IHM9MDtzPHQ7cysrKXtjb25zdCB0PXJlYWRUYWJsZUVudHJ5KGUpO24uaW5jbHVkZXModC50YWcpJiYoMCE9PXQubGVuZ3RoJiYoYVt0LnRhZ109dCkpfXJldHVybiBhfWZ1bmN0aW9uIHJlYWRUYWJsZUVudHJ5KGUpe2NvbnN0IHQ9ZS5nZXRTdHJpbmcoNCksYT1lLmdldEludDMyKCk+Pj4wLG49ZS5nZXRJbnQzMigpPj4+MCxzPWUuZ2V0SW50MzIoKT4+PjAscj1lLnBvcztlLnBvcz1lLnN0YXJ0fHwwO2Uuc2tpcChuKTtjb25zdCBpPWUuZ2V0Qnl0ZXMocyk7ZS5wb3M9cjtpZigiaGVhZCI9PT10KXtpWzhdPWlbOV09aVsxMF09aVsxMV09MDtpWzE3XXw9MzJ9cmV0dXJue3RhZzp0LGNoZWNrc3VtOmEsbGVuZ3RoOnMsb2Zmc2V0Om4sZGF0YTppLHZpZXc6IkNGRiAiPT09dD9udWxsOm5ldyBEYXRhVmlldyhpLmJ1ZmZlcixpLmJ5dGVPZmZzZXQsaS5ieXRlTGVuZ3RoKX19ZnVuY3Rpb24gcmVhZE9wZW5UeXBlSGVhZGVyKGUpe3JldHVybnt2ZXJzaW9uOmUuZ2V0U3RyaW5nKDQpLG51bVRhYmxlczplLmdldFVpbnQxNigpLHNlYXJjaFJhbmdlOmUuZ2V0VWludDE2KCksZW50cnlTZWxlY3RvcjplLmdldFVpbnQxNigpLHJhbmdlU2hpZnQ6ZS5nZXRVaW50MTYoKX19ZnVuY3Rpb24gc2FuaXRpemVHbHlwaChlLHQsYSxuLHMscil7Y29uc3QgaT17bGVuZ3RoOjAsc2l6ZU9mSW5zdHJ1Y3Rpb25zOjB9O2lmKHQ8MHx8dD49ZS5sZW5ndGh8fGE+ZS5sZW5ndGh8fGEtdDw9MTIpcmV0dXJuIGk7Y29uc3Qgbz1lLnN1YmFycmF5KHQsYSksbD1zaWduZWRJbnQxNihvWzJdLG9bM10pLGY9c2lnbmVkSW50MTYob1s0XSxvWzVdKSxjPXNpZ25lZEludDE2KG9bNl0sb1s3XSksaD1zaWduZWRJbnQxNihvWzhdLG9bOV0pO2lmKGw+Yyl7d3JpdGVTaWduZWRJbnQxNihvLDIsYyk7d3JpdGVTaWduZWRJbnQxNihvLDYsbCl9aWYoZj5oKXt3cml0ZVNpZ25lZEludDE2KG8sNCxoKTt3cml0ZVNpZ25lZEludDE2KG8sOCxmKX1jb25zdCB1PXNpZ25lZEludDE2KG9bMF0sb1sxXSk7aWYodTwwKXtpZih1PC0xKXJldHVybiBpO24uc2V0KG8scyk7aS5sZW5ndGg9by5sZW5ndGg7cmV0dXJuIGl9bGV0IG0scD0xMCxkPTA7Zm9yKG09MDttPHU7bSsrKXtkPShvW3BdPDw4fG9bcCsxXSkrMTtwKz0yfWNvbnN0IGc9cCxiPW9bcF08PDh8b1twKzFdO2kuc2l6ZU9mSW5zdHJ1Y3Rpb25zPWI7cCs9MitiO2NvbnN0IHc9cDtsZXQgaj0wO2ZvcihtPTA7bTxkO20rKyl7Y29uc3QgZT1vW3ArK107MTkyJmUmJihvW3AtMV09NjMmZSk7bGV0IHQ9MjsyJmU/dD0xOjE2JmUmJih0PTApO2xldCBhPTI7NCZlP2E9MTozMiZlJiYoYT0wKTtjb25zdCBuPXQrYTtqKz1uO2lmKDgmZSl7Y29uc3QgZT1vW3ArK107MD09PWUmJihvW3AtMV1ePTgpO20rPWU7ais9ZSpufX1pZigwPT09ailyZXR1cm4gaTtsZXQgaz1wK2o7aWYoaz5vLmxlbmd0aClyZXR1cm4gaTtpZighciYmYj4wKXtuLnNldChvLnN1YmFycmF5KDAsZykscyk7bi5zZXQoWzAsMF0scytnKTtuLnNldChvLnN1YmFycmF5KHcsaykscytnKzIpO2stPWI7by5sZW5ndGgtaz4zJiYoaz1rKzMmLTQpO2kubGVuZ3RoPWs7cmV0dXJuIGl9aWYoby5sZW5ndGgtaz4zKXtrPWsrMyYtNDtuLnNldChvLnN1YmFycmF5KDAsaykscyk7aS5sZW5ndGg9aztyZXR1cm4gaX1uLnNldChvLHMpO2kubGVuZ3RoPW8ubGVuZ3RoO3JldHVybiBpfWZ1bmN0aW9uIHJlYWROYW1lVGFibGUoZSl7Y29uc3QgYT0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9YTtjb25zdCBuPVtbXSxbXV0scz1bXSxyPWUubGVuZ3RoLGk9YStyO2lmKDAhPT10LmdldFVpbnQxNigpfHxyPDYpcmV0dXJuW24sc107Y29uc3Qgbz10LmdldFVpbnQxNigpLGw9dC5nZXRVaW50MTYoKTtsZXQgZixjO2ZvcihmPTA7ZjxvJiZ0LnBvcysxMjw9aTtmKyspe2NvbnN0IGU9e3BsYXRmb3JtOnQuZ2V0VWludDE2KCksZW5jb2Rpbmc6dC5nZXRVaW50MTYoKSxsYW5ndWFnZTp0LmdldFVpbnQxNigpLG5hbWU6dC5nZXRVaW50MTYoKSxsZW5ndGg6dC5nZXRVaW50MTYoKSxvZmZzZXQ6dC5nZXRVaW50MTYoKX07KGlzTWFjTmFtZVJlY29yZChlKXx8aXNXaW5OYW1lUmVjb3JkKGUpKSYmcy5wdXNoKGUpfWZvcihmPTAsYz1zLmxlbmd0aDtmPGM7ZisrKXtjb25zdCBlPXNbZl07aWYoZS5sZW5ndGg8PTApY29udGludWU7Y29uc3Qgcj1hK2wrZS5vZmZzZXQ7aWYocitlLmxlbmd0aD5pKWNvbnRpbnVlO3QucG9zPXI7Y29uc3Qgbz1lLm5hbWU7aWYoZS5lbmNvZGluZyl7bGV0IGE9IiI7Zm9yKGxldCBuPTAscz1lLmxlbmd0aDtuPHM7bis9MilhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQuZ2V0VWludDE2KCkpO25bMV1bb109YX1lbHNlIG5bMF1bb109dC5nZXRTdHJpbmcoZS5sZW5ndGgpfXJldHVybltuLHNdfWNvbnN0IHM9WzAsMCwwLDAsMCwwLDAsMCwtMiwtMiwtMiwtMiwwLDAsLTIsLTUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsMCwwLC0xLDAsLTEsLTEsLTEsLTEsMSwtMSwtOTk5LDAsMSwwLC0xLC0yLDAsLTEsLTIsLTEsLTEsMCwtMSwtMSwwLDAsLTk5OSwtOTk5LC0xLC0xLC0xLC0xLC0yLC05OTksLTIsLTIsLTk5OSwwLC0yLC0yLDAsMCwtMiwwLC0yLDAsMCwwLC0yLC0xLC0xLDEsMSwwLDAsLTEsLTEsLTEsLTEsLTEsLTEsLTEsMCwwLC0xLDAsLTEsLTEsMCwtOTk5LC0xLC0xLC0xLC0xLC0xLC0xLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLC0yLC05OTksLTk5OSwtOTk5LC05OTksLTk5OSwtMSwtMSwtMiwtMiwwLDAsMCwwLC0xLC0xLC05OTksLTIsLTIsMCwwLC0xLC0yLC0yLDAsMCwwLC0xLC0xLC0xLC0yXTtmdW5jdGlvbiBzYW5pdGl6ZVRUUHJvZ3JhbShlLHQpe2xldCBhLG4scixpLG8sbD1lLmRhdGEsZj0wLGM9MCxoPTA7Y29uc3QgdT1bXSxtPVtdLHA9W107bGV0IGQ9dC50b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnMsZz0hMSxiPTAsdz0wO2ZvcihsZXQgZT1sLmxlbmd0aDtmPGU7KXtjb25zdCBlPWxbZisrXTtpZig2ND09PWUpe249bFtmKytdO2lmKGd8fHcpZis9bjtlbHNlIGZvcihhPTA7YTxuO2ErKyl1LnB1c2gobFtmKytdKX1lbHNlIGlmKDY1PT09ZSl7bj1sW2YrK107aWYoZ3x8dylmKz0yKm47ZWxzZSBmb3IoYT0wO2E8bjthKyspe3I9bFtmKytdO3UucHVzaChzaWduZWRJbnQxNihyLGxbZisrXSkpfX1lbHNlIGlmKDE3Nj09KDI0OCZlKSl7bj1lLTE3NisxO2lmKGd8fHcpZis9bjtlbHNlIGZvcihhPTA7YTxuO2ErKyl1LnB1c2gobFtmKytdKX1lbHNlIGlmKDE4ND09KDI0OCZlKSl7bj1lLTE4NCsxO2lmKGd8fHcpZis9MipuO2Vsc2UgZm9yKGE9MDthPG47YSsrKXtyPWxbZisrXTt1LnB1c2goc2lnbmVkSW50MTYocixsW2YrK10pKX19ZWxzZSBpZig0MyE9PWV8fGQpaWYoNDQhPT1lfHxkKXtpZig0NT09PWUpaWYoZyl7Zz0hMTtjPWZ9ZWxzZXtvPW0ucG9wKCk7aWYoIW8pe3dhcm4oIlRUOiBFTkRGIGJhZCBzdGFjayIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59aT1wLnBvcCgpO2w9by5kYXRhO2Y9by5pO3QuZnVuY3Rpb25zU3RhY2tEZWx0YXNbaV09dS5sZW5ndGgtby5zdGFja1RvcH1lbHNlIGlmKDEzNz09PWUpe2lmKGd8fHcpe3dhcm4oIlRUOiBuZXN0ZWQgSURFRnMgbm90IGFsbG93ZWQiKTtkPSEwfWc9ITA7aD1mfWVsc2UgaWYoODg9PT1lKSsrYjtlbHNlIGlmKDI3PT09ZSl3PWI7ZWxzZSBpZig4OT09PWUpe3c9PT1iJiYodz0wKTstLWJ9ZWxzZSBpZigyOD09PWUmJiFnJiYhdyl7Y29uc3QgZT11LmF0KC0xKTtlPjAmJihmKz1lLTEpfX1lbHNle2lmKGd8fHcpe3dhcm4oIlRUOiBuZXN0ZWQgRkRFRnMgbm90IGFsbG93ZWQiKTtkPSEwfWc9ITA7aD1mO2k9dS5wb3AoKTt0LmZ1bmN0aW9uc0RlZmluZWRbaV09e2RhdGE6bCxpOmZ9fWVsc2UgaWYoIWcmJiF3KXtpPXUuYXQoLTEpO2lmKGlzTmFOKGkpKWluZm8oIlRUOiBDQUxMIGVtcHR5IHN0YWNrIChvciBpbnZhbGlkIGVudHJ5KS4iKTtlbHNle3QuZnVuY3Rpb25zVXNlZFtpXT0hMDtpZihpIGluIHQuZnVuY3Rpb25zU3RhY2tEZWx0YXMpe2NvbnN0IGU9dS5sZW5ndGgrdC5mdW5jdGlvbnNTdGFja0RlbHRhc1tpXTtpZihlPDApe3dhcm4oIlRUOiBDQUxMIGludmFsaWQgZnVuY3Rpb25zIHN0YWNrIGRlbHRhLiIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59dS5sZW5ndGg9ZX1lbHNlIGlmKGkgaW4gdC5mdW5jdGlvbnNEZWZpbmVkJiYhcC5pbmNsdWRlcyhpKSl7bS5wdXNoKHtkYXRhOmwsaTpmLHN0YWNrVG9wOnUubGVuZ3RoLTF9KTtwLnB1c2goaSk7bz10LmZ1bmN0aW9uc0RlZmluZWRbaV07aWYoIW8pe3dhcm4oIlRUOiBDQUxMIG5vbi1leGlzdGVudCBmdW5jdGlvbiIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59bD1vLmRhdGE7Zj1vLml9fX1pZighZyYmIXcpe2xldCB0PTA7ZTw9MTQyP3Q9c1tlXTplPj0xOTImJmU8PTIyMz90PS0xOmU+PTIyNCYmKHQ9LTIpO2lmKGU+PTExMyYmZTw9MTE3KXtuPXUucG9wKCk7aXNOYU4obil8fCh0PTIqLW4pfWZvcig7dDwwJiZ1Lmxlbmd0aD4wOyl7dS5wb3AoKTt0Kyt9Zm9yKDt0PjA7KXt1LnB1c2goTmFOKTt0LS19fX10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucz1kO2NvbnN0IGo9W2xdO2Y+bC5sZW5ndGgmJmoucHVzaChuZXcgVWludDhBcnJheShmLWwubGVuZ3RoKSk7aWYoaD5jKXt3YXJuKCJUVDogY29tcGxlbWVudGluZyBhIG1pc3NpbmcgZnVuY3Rpb24gdGFpbCIpO2oucHVzaChuZXcgVWludDhBcnJheShbMzQsNDVdKSl9IWZ1bmN0aW9uIGZvbGRUVFRhYmxlKGUsdCl7aWYodC5sZW5ndGg+MSl7bGV0IGEsbixzPTA7Zm9yKGE9MCxuPXQubGVuZ3RoO2E8bjthKyspcys9dFthXS5sZW5ndGg7cz1zKzMmLTQ7Y29uc3Qgcj1uZXcgVWludDhBcnJheShzKTtsZXQgaT0wO2ZvcihhPTAsbj10Lmxlbmd0aDthPG47YSsrKXtyLnNldCh0W2FdLGkpO2krPXRbYV0ubGVuZ3RofWUuZGF0YT1yO2UubGVuZ3RoPXN9fShlLGopfWxldCByLGk7aWYoaXNUcnVlVHlwZUNvbGxlY3Rpb25GaWxlKHQ9bmV3IFN0cmVhbShuZXcgVWludDhBcnJheSh0LmdldEJ5dGVzKCkpKSkpe2NvbnN0IGU9ZnVuY3Rpb24gcmVhZFRydWVUeXBlQ29sbGVjdGlvbkRhdGEoZSx0KXtjb25zdHtudW1Gb250czphLG9mZnNldFRhYmxlOm59PWZ1bmN0aW9uIHJlYWRUcnVlVHlwZUNvbGxlY3Rpb25IZWFkZXIoZSl7Y29uc3QgdD1lLmdldFN0cmluZyg0KTthc3NlcnQoInR0Y2YiPT09dCwiTXVzdCBiZSBhIFRydWVUeXBlIENvbGxlY3Rpb24gZm9udC4iKTtjb25zdCBhPWUuZ2V0VWludDE2KCksbj1lLmdldFVpbnQxNigpLHM9ZS5nZXRJbnQzMigpPj4+MCxyPVtdO2ZvcihsZXQgdD0wO3Q8czt0Kyspci5wdXNoKGUuZ2V0SW50MzIoKT4+PjApO2NvbnN0IGk9e3R0Y1RhZzp0LG1ham9yVmVyc2lvbjphLG1pbm9yVmVyc2lvbjpuLG51bUZvbnRzOnMsb2Zmc2V0VGFibGU6cn07c3dpdGNoKGEpe2Nhc2UgMTpyZXR1cm4gaTtjYXNlIDI6aS5kc2lnVGFnPWUuZ2V0SW50MzIoKT4+PjA7aS5kc2lnTGVuZ3RoPWUuZ2V0SW50MzIoKT4+PjA7aS5kc2lnT2Zmc2V0PWUuZ2V0SW50MzIoKT4+PjA7cmV0dXJuIGl9dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFRydWVUeXBlIENvbGxlY3Rpb24gbWFqb3JWZXJzaW9uOiAke2F9LmApfShlKSxzPXQuc3BsaXQoIisiKTtsZXQgcjtmb3IobGV0IGk9MDtpPGE7aSsrKXtlLnBvcz0oZS5zdGFydHx8MCkrbltpXTtjb25zdCBhPXJlYWRPcGVuVHlwZUhlYWRlcihlKSxvPXJlYWRUYWJsZXMoZSxhLm51bVRhYmxlcyk7aWYoIW8ubmFtZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1RydWVUeXBlIENvbGxlY3Rpb24gZm9udCBtdXN0IGNvbnRhaW4gYSAibmFtZSIgdGFibGUuJyk7Y29uc3RbbF09cmVhZE5hbWVUYWJsZShvLm5hbWUpO2Zvcihjb25zdCBlIG9mIGwpZm9yKGNvbnN0IG4gb2YgZSl7Y29uc3QgZT1uPy5yZXBsYWNlQWxsKC9ccy9nLCIiKTtpZihlKXtpZihlPT09dClyZXR1cm57aGVhZGVyOmEsdGFibGVzOm99O2lmKCEocy5sZW5ndGg8MikpZm9yKGNvbnN0IHQgb2YgcyllPT09dCYmKHI9e25hbWU6dCxoZWFkZXI6YSx0YWJsZXM6b30pfX19aWYocil7d2FybihgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICIke3R9IiBmb250LCBmYWxsaW5nIGJhY2sgdG8gIiR7ci5uYW1lfSIgZm9udCBpbnN0ZWFkLmApO3JldHVybntoZWFkZXI6ci5oZWFkZXIsdGFibGVzOnIudGFibGVzfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFRydWVUeXBlIENvbGxlY3Rpb24gZG9lcyBub3QgY29udGFpbiAiJHt0fSIgZm9udC5gKX0odCx0aGlzLm5hbWUpO3I9ZS5oZWFkZXI7aT1lLnRhYmxlc31lbHNle3I9cmVhZE9wZW5UeXBlSGVhZGVyKHQpO2k9cmVhZFRhYmxlcyh0LHIubnVtVGFibGVzKX1jb25zdCBvPSFpWyJDRkYgIl07bGV0IGwsZj1udWxsO2lmKG8pe2lmKCFpLmxvY2EpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCdSZXF1aXJlZCAibG9jYSIgdGFibGUgaXMgbm90IGZvdW5kJyk7aWYoIWkuZ2x5Zil7d2FybignUmVxdWlyZWQgImdseWYiIHRhYmxlIGlzIG5vdCBmb3VuZCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4nKTtpLmdseWY9e3RhZzoiZ2x5ZiIsZGF0YTpuZXcgVWludDhBcnJheSgwKX19dGhpcy5pc09wZW5UeXBlPSExfWVsc2V7dHJ5e2Y9bmV3IENGRlBhcnNlcihuZXcgU3RyZWFtKGlbIkNGRiAiXS5kYXRhKSxhLCEwKS5wYXJzZSgpfWNhdGNoe3dhcm4oIkZhaWxlZCB0byBwYXJzZSBmb250ICIrYS5sb2FkZWROYW1lKX1pZigiT1RUTyI9PT1yLnZlcnNpb24mJighYS5jb21wb3NpdGV8fCJGb250RmlsZTMiPT09YS5mb250RmlsZU4mJmY/LmlzQ0lERm9udCl8fCFpLmhlYWR8fCFpLmhoZWF8fCFpLm1heHB8fCFpLnBvc3QpcmV0dXJuIHRoaXMuY29udmVydChlLG5ldyBDRkZGb250KG5ldyBTdHJlYW0oaVsiQ0ZGICJdLmRhdGEpLGEpLGEpO2RlbGV0ZSBpLmdseWY7ZGVsZXRlIGkubG9jYTtkZWxldGUgaS5mcGdtO2RlbGV0ZSBpLnByZXA7ZGVsZXRlIGlbImN2dCAiXTt0aGlzLmlzT3BlblR5cGU9ITB9aWYoIWkubWF4cCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJtYXhwIiB0YWJsZSBpcyBub3QgZm91bmQnKTtpZihmKXRyeXtmLmR1cGxpY2F0ZUZpcnN0R2x5cGgoKTtpWyJDRkYgIl0uZGF0YT1uZXcgQ0ZGQ29tcGlsZXIoZikuY29tcGlsZSgpO2w9Zi5jaGFyU3RyaW5nQ291bnR9Y2F0Y2h7d2FybigiRmFpbGVkIHRvIGNvbXBpbGUgZm9udCAiK2EubG9hZGVkTmFtZSl9dC5wb3M9KHQuc3RhcnR8fDApK2kubWF4cC5vZmZzZXQ7bGV0IGM9dC5nZXRJbnQzMigpO2NvbnN0IGg9bD8/dC5nZXRVaW50MTYoKTtpZigyMDQ4MD09PWMmJjYhPT1pLm1heHAubGVuZ3RoKXtpLm1heHAuZGF0YT1pLm1heHAuZGF0YS5zdWJhcnJheSgwLDYpO2kubWF4cC5sZW5ndGg9Nn1pZig2NTUzNiE9PWMmJjIwNDgwIT09Yyl7aWYoNj09PWkubWF4cC5sZW5ndGgpYz0yMDQ4MDtlbHNle2lmKCEoaS5tYXhwLmxlbmd0aD49MzIpKXRocm93IG5ldyBGb3JtYXRFcnJvcignIm1heHAiIHRhYmxlIGhhcyBhIHdyb25nIHZlcnNpb24gbnVtYmVyJyk7Yz02NTUzNn13cml0ZVVpbnQzMihpLm1heHAuZGF0YSwwLGMpfWxldCB1PWludDE2KGkuaGVhZC5kYXRhWzUwXSxpLmhlYWQuZGF0YVs1MV0pO2lmKGkubG9jYSl7Y29uc3QgZT11PzQqKGgrMSk6MiooaCsxKTtpZihpLmxvY2EubGVuZ3RoIT09ZSl7d2FybigiSW5jb3JyZWN0ICdsb2NhJyB0YWJsZSBsZW5ndGggLS0gYXR0ZW1wdGluZyB0byBmaXggaXQuIik7Y29uc3QgYT1PYmplY3QudmFsdWVzKGkpLmZpbHRlcihCb29sZWFuKS5zb3J0KChlLHQpPT5lLm9mZnNldC10Lm9mZnNldCksbj1hLmluZGV4T2YoaS5sb2NhKSxzPWFbbisxXXx8bnVsbDtpZihzJiZpLmxvY2Eub2Zmc2V0K2U8cy5vZmZzZXQpe2NvbnN0IGE9dC5wb3M7dC5wb3M9dC5zdGFydHx8MDt0LnNraXAoaS5sb2NhLm9mZnNldCk7aS5sb2NhLmRhdGE9dC5nZXRCeXRlcyhlKTtpLmxvY2EubGVuZ3RoPWU7dC5wb3M9YX19fWlmKGEuc2NhbGVGYWN0b3JzPy5sZW5ndGg9PT1oJiZvKXtjb25zdHtzY2FsZUZhY3RvcnM6ZX09YSx0PW5ldyBHbHlmVGFibGUoe2dseWZUYWJsZTppLmdseWYuZGF0YSxpc0dseXBoTG9jYXRpb25zTG9uZzp1LGxvY2FUYWJsZTppLmxvY2EuZGF0YSxudW1HbHlwaHM6aH0pO3Quc2NhbGUoZSk7Y29uc3R7Z2x5ZjpuLGxvY2E6cyxpc0xvY2F0aW9uTG9uZzpyfT10LndyaXRlKCk7aS5nbHlmLmRhdGE9bjtpLmxvY2EuZGF0YT1zO2lmKHIhPT0hIXUpe2kuaGVhZC5kYXRhWzUwXT0wO3U9aS5oZWFkLmRhdGFbNTFdPXI/MTowfWNvbnN0IG89aS5obXR4LmRhdGE7Zm9yKGxldCB0PTA7dDxoO3QrKyl7Y29uc3QgYT00KnQsbj1NYXRoLnJvdW5kKGVbdF0qaW50MTYob1thXSxvW2ErMV0pKTtvW2FdPW4+PjgmMjU1O29bYSsxXT0yNTUmbjt3cml0ZVNpZ25lZEludDE2KG8sYSsyLE1hdGgucm91bmQoZVt0XSpzaWduZWRJbnQxNihvW2ErMl0sb1thKzNdKSkpfX1sZXQgbT1oKzEscD0hMDtpZihtPjY1NTM1KXtwPSExO209aDt3YXJuKCJOb3QgZW5vdWdoIHNwYWNlIGluIGdseWZzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKX1sZXQgZD0wLGc9MDtpZihjPj02NTUzNiYmaS5tYXhwLmxlbmd0aD49MzIpe3QucG9zKz04O2lmKHQuZ2V0VWludDE2KCk+Mil7aS5tYXhwLmRhdGFbMTRdPTA7aS5tYXhwLmRhdGFbMTVdPTJ9dC5wb3MrPTQ7ZD10LmdldFVpbnQxNigpO3QucG9zKz00O2c9dC5nZXRVaW50MTYoKX1lbHNlIGlmKG8mJjIwNDgwPT09Yyl7Y29uc3QgZT1uZXcgVWludDhBcnJheSgzMik7d3JpdGVVaW50MzIoZSwwLDY1NTM2KTtlWzRdPWg+PjgmMjU1O2VbNV09MjU1Jmg7ZS5maWxsKDI1NSw2LDE0KTtlWzE1XT0yO2VbMjhdPTI1NTtlWzI5XT0yNTU7ZVszMV09MTY7aS5tYXhwLmRhdGE9ZTtpLm1heHAubGVuZ3RoPTMyO2M9NjU1MzZ9aS5tYXhwLmRhdGFbNF09bT4+ODtpLm1heHAuZGF0YVs1XT0yNTUmbTtjb25zdCBiPWZ1bmN0aW9uIHNhbml0aXplVFRQcm9ncmFtcyhlLHQsYSxuKXtjb25zdCBzPXtmdW5jdGlvbnNEZWZpbmVkOltdLGZ1bmN0aW9uc1VzZWQ6W10sZnVuY3Rpb25zU3RhY2tEZWx0YXM6W10sdG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zOiExLGhpbnRzVmFsaWQ6ITB9O2UmJnNhbml0aXplVFRQcm9ncmFtKGUscyk7dCYmc2FuaXRpemVUVFByb2dyYW0odCxzKTtlJiZmdW5jdGlvbiBjaGVja0ludmFsaWRGdW5jdGlvbnMoZSx0KXtpZighZS50b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnMpaWYoZS5mdW5jdGlvbnNEZWZpbmVkLmxlbmd0aD50KXt3YXJuKCJUVDogbW9yZSBmdW5jdGlvbnMgZGVmaW5lZCB0aGFuIGV4cGVjdGVkIik7ZS5oaW50c1ZhbGlkPSExfWVsc2UgZm9yKGxldCBhPTAsbj1lLmZ1bmN0aW9uc1VzZWQubGVuZ3RoO2E8bjthKyspe2lmKGE+dCl7d2FybigiVFQ6IGludmFsaWQgZnVuY3Rpb24gaWQ6ICIrYSk7ZS5oaW50c1ZhbGlkPSExO3JldHVybn1pZihlLmZ1bmN0aW9uc1VzZWRbYV0mJiFlLmZ1bmN0aW9uc0RlZmluZWRbYV0pe3dhcm4oIlRUOiB1bmRlZmluZWQgZnVuY3Rpb246ICIrYSk7ZS5oaW50c1ZhbGlkPSExO3JldHVybn19fShzLG4pO2lmKGEmJjEmYS5sZW5ndGgpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoYS5sZW5ndGgrMSk7ZS5zZXQoYS5kYXRhKTthLmRhdGE9ZX1yZXR1cm4gcy5oaW50c1ZhbGlkfShpLmZwZ20saS5wcmVwLGlbImN2dCAiXSxkKTtpZighYil7ZGVsZXRlIGkuZnBnbTtkZWxldGUgaS5wcmVwO2RlbGV0ZSBpWyJjdnQgIl19IWZ1bmN0aW9uIHNhbml0aXplTWV0cmljcyhlLHQsYSxuLHMscil7aWYoIXQpe2EmJihhLmRhdGE9bnVsbCk7cmV0dXJufWUucG9zPShlLnN0YXJ0fHwwKSt0Lm9mZnNldDtlLnBvcys9NDtlLnBvcys9MjtlLnBvcys9MjtlLnBvcys9MjtlLnBvcys9MjtlLnBvcys9MjtlLnBvcys9MjtlLnBvcys9MjtlLnBvcys9MjtlLnBvcys9Mjtjb25zdCBpPWUuZ2V0VWludDE2KCk7ZS5wb3MrPTg7ZS5wb3MrPTI7bGV0IG89ZS5nZXRVaW50MTYoKTtpZigwIT09aSl7aWYoISgyJmludDE2KG4uZGF0YVs0NF0sbi5kYXRhWzQ1XSkpKXt0LmRhdGFbMjJdPTA7dC5kYXRhWzIzXT0wfX1pZihvPnMpe2luZm8oYFRoZSBudW1PZk1ldHJpY3MgKCR7b30pIHNob3VsZCBub3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBudW1HbHlwaHMgKCR7c30pLmApO289czt0LmRhdGFbMzRdPSg2NTI4MCZvKT4+ODt0LmRhdGFbMzVdPTI1NSZvfWNvbnN0IGw9cy1vLShhLmxlbmd0aC00Km8+PjEpO2lmKGw+MCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShhLmxlbmd0aCsyKmwpO2Uuc2V0KGEuZGF0YSk7aWYocil7ZVthLmxlbmd0aF09YS5kYXRhWzJdO2VbYS5sZW5ndGgrMV09YS5kYXRhWzNdfWEuZGF0YT1lfX0odCxpLmhoZWEsaS5obXR4LGkuaGVhZCxtLHApO2lmKCFpLmhlYWQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCdSZXF1aXJlZCAiaGVhZCIgdGFibGUgaXMgbm90IGZvdW5kJyk7IWZ1bmN0aW9uIHNhbml0aXplSGVhZChlLHQsYSl7Y29uc3R7ZGF0YTpuLHZpZXc6c309ZSxyPXMuZ2V0SW50MzIoMCk7aWYocj4+MTYhPTEpe2luZm8oIkF0dGVtcHRpbmcgdG8gZml4IGludmFsaWQgdmVyc2lvbiBpbiBoZWFkIHRhYmxlOiAiK3IpO3Muc2V0SW50MzIoMCw2NTUzNil9Y29uc3QgaT1zaWduZWRJbnQxNihuWzUwXSxuWzUxXSk7aWYoaTwwfHxpPjEpe2luZm8oIkF0dGVtcHRpbmcgdG8gZml4IGludmFsaWQgaW5kZXhUb0xvY0Zvcm1hdCBpbiBoZWFkIHRhYmxlOiAiK2kpO2NvbnN0IGU9dCsxO2lmKGE9PT1lPDwxKXtuWzUwXT0wO25bNTFdPTB9ZWxzZXtpZihhIT09ZTw8Mil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkNvdWxkIG5vdCBmaXggaW5kZXhUb0xvY0Zvcm1hdDogIitpKTtuWzUwXT0wO25bNTFdPTF9fX0oaS5oZWFkLGgsbz9pLmxvY2EubGVuZ3RoOjApO2xldCB3PW51bGw7aWYobyl7Y29uc3QgZT1mdW5jdGlvbiBzYW5pdGl6ZUdseXBoTG9jYXRpb25zKGUsdCxhLG4scyxyLGkpe2xldCBvLGwsZjtpZihuKXtvPTQ7bD1mdW5jdGlvbiBmb250SXRlbURlY29kZUxvbmcoZSx0KXtyZXR1cm4gZVt0XTw8MjR8ZVt0KzFdPDwxNnxlW3QrMl08PDh8ZVt0KzNdfTtmPWZ1bmN0aW9uIGZvbnRJdGVtRW5jb2RlTG9uZyhlLHQsYSl7ZVt0XT1hPj4+MjQmMjU1O2VbdCsxXT1hPj4xNiYyNTU7ZVt0KzJdPWE+PjgmMjU1O2VbdCszXT0yNTUmYX19ZWxzZXtvPTI7bD1mdW5jdGlvbiBmb250SXRlbURlY29kZShlLHQpe3JldHVybiBlW3RdPDw5fGVbdCsxXTw8MX07Zj1mdW5jdGlvbiBmb250SXRlbUVuY29kZShlLHQsYSl7ZVt0XT1hPj45JjI1NTtlW3QrMV09YT4+MSYyNTV9fWNvbnN0IGM9cj9hKzE6YSxoPW8qKDErYyksdT1uZXcgVWludDhBcnJheShoKTt1LnNldChlLmRhdGEuc3ViYXJyYXkoMCxoKSk7ZS5kYXRhPXU7Y29uc3QgbT10LmRhdGEscD1tLmxlbmd0aCxkPW5ldyBVaW50OEFycmF5KHApO2xldCBnLGI7Y29uc3Qgdz1bXTtmb3IoZz0wLGI9MDtnPGErMTtnKyssYis9byl7bGV0IGU9bCh1LGIpO2U+cCYmKGU9cCk7dy5wdXNoKHtpbmRleDpnLG9mZnNldDplLGVuZE9mZnNldDowfSl9dy5zb3J0KChlLHQpPT5lLm9mZnNldC10Lm9mZnNldCk7Zm9yKGc9MDtnPGE7ZysrKXdbZ10uZW5kT2Zmc2V0PXdbZysxXS5vZmZzZXQ7dy5zb3J0KChlLHQpPT5lLmluZGV4LXQuaW5kZXgpO2ZvcihnPTA7ZzxhO2crKyl7Y29uc3R7b2Zmc2V0OmUsZW5kT2Zmc2V0OnR9PXdbZ107aWYoMCE9PWV8fDAhPT10KWJyZWFrO2NvbnN0IGE9d1tnKzFdLm9mZnNldDtpZigwIT09YSl7d1tnXS5lbmRPZmZzZXQ9YTticmVha319Y29uc3Qgaj13LmF0KC0yKTswIT09ai5vZmZzZXQmJjA9PT1qLmVuZE9mZnNldCYmKGouZW5kT2Zmc2V0PXApO2NvbnN0IGs9ZnVuY3Rpb24gcHJ1bmVDb21wb3NpdGVHbHlwaEN5Y2xlcyhlLHQsYSl7Y29uc3Qgbj1uZXcgRGF0YVZpZXcoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZUxlbmd0aCkscz1uZXcgQXJyYXkoYSk7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7Y29uc3QgYT10W2VdLm9mZnNldCxyPU1hdGgubWluKHRbZV0uZW5kT2Zmc2V0LG4uYnl0ZUxlbmd0aCk7aWYoci1hPD1Kbnx8bi5nZXRJbnQxNihhKT49MCljb250aW51ZTtjb25zdCBpPVtdO2xldCBvPWErSm47Zm9yKDtvKzQ8PXI7KXtjb25zdCBlPW4uZ2V0VWludDE2KG8pLHQ9bi5nZXRVaW50MTYobysyKTtsZXQgYT00KygxJmU/NDoyKTs4JmU/YSs9Mjo2NCZlP2ErPTQ6MTI4JmUmJihhKz04KTtpLnB1c2goe2dpZDp0LG9mZnNldDpvLHNpemU6YSxmbGFnczplfSk7bys9YTtpZighKDMyJmUpKWJyZWFrfWkubGVuZ3RoJiYoc1tlXT1pKX1jb25zdCByPW5ldyBVaW50OEFycmF5KGEpLGk9bmV3IE1hcDtmb3IobGV0IGU9MDtlPGE7ZSsrKXtpZigwIT09cltlXXx8IXNbZV0pY29udGludWU7Y29uc3QgdD1be25vZGU6ZSxpZHg6MH1dO3JbZV09MTtmb3IoO3QubGVuZ3RoPjA7KXtjb25zdCBlPXQuYXQoLTEpLG49c1tlLm5vZGVdO2lmKCFufHxlLmlkeD49bi5sZW5ndGgpe3JbZS5ub2RlXT0yO3QucG9wKCk7Y29udGludWV9Y29uc3Qgbz1lLmlkeCsrLGw9bltvXS5naWQ7aWYoIShsPj1hfHwyPT09cltsXSkpaWYoMCE9PXJbbF0paS5nZXRPckluc2VydENvbXB1dGVkKGUubm9kZSxtYWtlU2V0KS5hZGQobyk7ZWxzZXtyW2xdPTE7dC5wdXNoKHtub2RlOmwsaWR4OjB9KX19fWNvbnN0IG89bmV3IFNldDtmb3IoY29uc3RbYSxyXW9mIGkpe2NvbnN0IGk9c1thXSxsPVtdO2ZvcihsZXQgZT0wO2U8aS5sZW5ndGg7ZSsrKXIuaGFzKGUpfHxsLnB1c2goaVtlXSk7aWYoMD09PWwubGVuZ3RoKXtvLmFkZChhKTtjb250aW51ZX1jb25zdCBmPXRbYV0ub2Zmc2V0LGM9TWF0aC5taW4odFthXS5lbmRPZmZzZXQsbi5ieXRlTGVuZ3RoKTtsZXQgaD1mK0puO2ZvcihsZXQgdD0wO3Q8bC5sZW5ndGg7dCsrKXtjb25zdCBhPWxbdF0scz10PT09bC5sZW5ndGgtMTtsZXQgcj0tMjU3JmEuZmxhZ3M7cj1zPy0zMyZyOjMyfHI7aCE9PWEub2Zmc2V0JiZlLmNvcHlXaXRoaW4oaCxhLm9mZnNldCxhLm9mZnNldCthLnNpemUpO24uc2V0VWludDE2KGgscik7aCs9YS5zaXplfWg8YyYmZS5maWxsKDAsaCxjKX1yZXR1cm4gb30obSx3LGEpLHk9bmV3IFVpbnQ4QXJyYXkoYSk7bGV0IHE9MDtmKHUsMCxxKTtmb3IoZz0wLGI9bztnPGE7ZysrLGIrPW8pe2NvbnN0IGU9ay5oYXMoZyk/e2xlbmd0aDowLHNpemVPZkluc3RydWN0aW9uczowfTpzYW5pdGl6ZUdseXBoKG0sd1tnXS5vZmZzZXQsd1tnXS5lbmRPZmZzZXQsZCxxLHMpLHQ9ZS5sZW5ndGg7MD09PXQmJih5W2ddPTEpO2Uuc2l6ZU9mSW5zdHJ1Y3Rpb25zPmkmJihpPWUuc2l6ZU9mSW5zdHJ1Y3Rpb25zKTtxKz10O2YodSxiLHEpfWlmKDA9PT1xKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFswLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDksMF0pO2ZvcihnPTAsYj1vO2c8YztnKyssYis9bylmKHUsYixlLmxlbmd0aCk7dC5kYXRhPWV9ZWxzZSBpZihyKXtjb25zdCBhPWwodSxvKTtpZihkLmxlbmd0aD5hK3EpdC5kYXRhPWQuc3ViYXJyYXkoMCxhK3EpO2Vsc2V7dC5kYXRhPW5ldyBVaW50OEFycmF5KGErcSk7dC5kYXRhLnNldChkLnN1YmFycmF5KDAscSkpfXQuZGF0YS5zZXQoZC5zdWJhcnJheSgwLGEpLHEpO2YoZS5kYXRhLHUubGVuZ3RoLW8scSthKX1lbHNlIHQuZGF0YT1kLnN1YmFycmF5KDAscSk7cmV0dXJue21pc3NpbmdHbHlwaHM6eSxtYXhTaXplT2ZJbnN0cnVjdGlvbnM6aX19KGkubG9jYSxpLmdseWYsaCx1LGIscCxnKTt3PWUubWlzc2luZ0dseXBocztpZihjPj02NTUzNiYmaS5tYXhwLmxlbmd0aD49MzIpe2kubWF4cC5kYXRhWzI2XT1lLm1heFNpemVPZkluc3RydWN0aW9ucz4+ODtpLm1heHAuZGF0YVsyN109MjU1JmUubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zfX1pZighaS5oaGVhKXRocm93IG5ldyBGb3JtYXRFcnJvcignUmVxdWlyZWQgImhoZWEiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO2lmKDA9PT1pLmhoZWEuZGF0YVsxMF0mJjA9PT1pLmhoZWEuZGF0YVsxMV0pe2kuaGhlYS5kYXRhWzEwXT0yNTU7aS5oaGVhLmRhdGFbMTFdPTI1NX1jb25zdCBqPXt1bml0c1BlckVtOmludDE2KGkuaGVhZC5kYXRhWzE4XSxpLmhlYWQuZGF0YVsxOV0pLHlNYXg6c2lnbmVkSW50MTYoaS5oZWFkLmRhdGFbNDJdLGkuaGVhZC5kYXRhWzQzXSkseU1pbjpzaWduZWRJbnQxNihpLmhlYWQuZGF0YVszOF0saS5oZWFkLmRhdGFbMzldKSxhc2NlbnQ6c2lnbmVkSW50MTYoaS5oaGVhLmRhdGFbNF0saS5oaGVhLmRhdGFbNV0pLGRlc2NlbnQ6c2lnbmVkSW50MTYoaS5oaGVhLmRhdGFbNl0saS5oaGVhLmRhdGFbN10pLGxpbmVHYXA6c2lnbmVkSW50MTYoaS5oaGVhLmRhdGFbOF0saS5oaGVhLmRhdGFbOV0pfTt0aGlzLmFzY2VudD1qLmFzY2VudC9qLnVuaXRzUGVyRW07dGhpcy5kZXNjZW50PWouZGVzY2VudC9qLnVuaXRzUGVyRW07dGhpcy5saW5lR2FwPWoubGluZUdhcC9qLnVuaXRzUGVyRW07aWYodGhpcy5jc3NGb250SW5mbz8ubGluZUhlaWdodCl7dGhpcy5saW5lSGVpZ2h0PXRoaXMuY3NzRm9udEluZm8ubWV0cmljcy5saW5lSGVpZ2h0O3RoaXMubGluZUdhcD10aGlzLmNzc0ZvbnRJbmZvLm1ldHJpY3MubGluZUdhcH1lbHNlIHRoaXMubGluZUhlaWdodD10aGlzLmFzY2VudC10aGlzLmRlc2NlbnQrdGhpcy5saW5lR2FwO2kucG9zdCYmZnVuY3Rpb24gcmVhZFBvc3RTY3JpcHRUYWJsZShlLGEsbil7Y29uc3Qgcz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9cztjb25zdCByPXMrZS5sZW5ndGgsaT10LmdldEludDMyKCk7dC5za2lwKDI4KTtsZXQgbyxsLGY9ITA7c3dpdGNoKGkpe2Nhc2UgNjU1MzY6bz1DbjticmVhaztjYXNlIDEzMTA3Mjpjb25zdCBlPXQuZ2V0VWludDE2KCk7aWYoZSE9PW4pe2Y9ITE7YnJlYWt9Y29uc3Qgcz1bXTtmb3IobD0wO2w8ZTsrK2wpe2NvbnN0IGU9dC5nZXRVaW50MTYoKTtpZihlPj0zMjc2OCl7Zj0hMTticmVha31zLnB1c2goZSl9aWYoIWYpYnJlYWs7Y29uc3QgYz1bXTtmb3IoO3QucG9zPHI7KXtjb25zdCBlPXQuZ2V0Qnl0ZSgpLGE9dC5nZXRTdHJpbmcoZSk7Yy5wdXNoKGEpfW89W107Zm9yKGw9MDtsPGU7KytsKXtjb25zdCBlPXNbbF07ZTwyNTg/by5wdXNoKENuW2VdKTpvLnB1c2goY1tlLTI1OF0pfWJyZWFrO2Nhc2UgMTk2NjA4OmJyZWFrO2RlZmF1bHQ6d2FybigiVW5rbm93bi91bnN1cHBvcnRlZCBwb3N0IHRhYmxlIHZlcnNpb24gIitpKTtmPSExO2EuZGVmYXVsdEVuY29kaW5nJiYobz1hLmRlZmF1bHRFbmNvZGluZyl9YS5nbHlwaE5hbWVzPW87cmV0dXJuIGZ9KGkucG9zdCxhLGgpO2kucG9zdD17dGFnOiJwb3N0IixkYXRhOmNyZWF0ZVBvc3RUYWJsZShhKX07Y29uc3Qgaz1uZXcgTWFwO2Z1bmN0aW9uIGhhc0dseXBoKGUpe3JldHVybiF3Py5bZV19aWYoYS5jb21wb3NpdGUpe2NvbnN0e2NpZFRvR2lkTWFwOmUsY01hcDp0fT1hLG49IWU/LnNpemU7dC5mb3JFYWNoKCh0LGEpPT57InN0cmluZyI9PXR5cGVvZiBhJiYoYT1jb252ZXJ0Q2lkU3RyaW5nKHQsYSwhMCkpO2lmKGE+NjU1MzUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNYXggc2l6ZSBvZiBDSUQgaXMgNjUsNTM1Iik7Y29uc3Qgcz1uP2E6ZS5nZXQoYSk/Py0xO3M+PTAmJnM8aCYmaGFzR2x5cGgocykmJmsuc2V0KHQscyl9KX1lbHNle2NvbnN0IGU9ZnVuY3Rpb24gcmVhZENtYXBUYWJsZShlLHQsYSxuKXtpZighZSl7d2FybigiTm8gY21hcCB0YWJsZSBhdmFpbGFibGUuIik7cmV0dXJue3BsYXRmb3JtSWQ6LTEsZW5jb2RpbmdJZDotMSxtYXBwaW5nczpbXSxoYXNTaG9ydENtYXA6ITF9fWxldCBzLHI9KHQuc3RhcnR8fDApK2Uub2Zmc2V0O3QucG9zPXI7dC5za2lwKDIpO2NvbnN0IGk9dC5nZXRVaW50MTYoKTtsZXQgbyxsPSExO2ZvcihsZXQgZT0wO2U8aTtlKyspe2NvbnN0IHM9dC5nZXRVaW50MTYoKSxyPXQuZ2V0VWludDE2KCksZj10LmdldEludDMyKCk+Pj4wO2xldCBjPSExO2lmKG8/LnBsYXRmb3JtSWQhPT1zfHxvPy5lbmNvZGluZ0lkIT09cil7aWYoMCE9PXN8fDAhPT1yJiYxIT09ciYmMyE9PXIpaWYoMT09PXMmJjA9PT1yKWM9ITA7ZWxzZSBpZigzIT09c3x8MSE9PXJ8fCFuJiZvKXtpZihhJiYzPT09cyYmMD09PXIpe2M9ITA7bGV0IGE9ITA7aWYoZTxpLTEpe2NvbnN0IGU9dC5wZWVrQnl0ZXMoMik7aW50MTYoZVswXSxlWzFdKTxzJiYoYT0hMSl9YSYmKGw9ITApfX1lbHNle2M9ITA7YXx8KGw9ITApfWVsc2UgYz0hMDtjJiYobz17cGxhdGZvcm1JZDpzLGVuY29kaW5nSWQ6cixvZmZzZXQ6Zn0pO2lmKGwpYnJlYWt9fW8mJih0LnBvcz1yK28ub2Zmc2V0KTtpZighb3x8LTE9PT10LnBlZWtCeXRlKCkpe3dhcm4oIkNvdWxkIG5vdCBmaW5kIGEgcHJlZmVycmVkIGNtYXAgdGFibGUuIik7cmV0dXJue3BsYXRmb3JtSWQ6LTEsZW5jb2RpbmdJZDotMSxtYXBwaW5nczpbXSxoYXNTaG9ydENtYXA6ITF9fWNvbnN0IGY9dC5nZXRVaW50MTYoKTtsZXQgYz0hMTtjb25zdCBoPVtdO2xldCB1LG07aWYoMD09PWYpe3Quc2tpcCg0KTtmb3IodT0wO3U8MjU2O3UrKyl7Y29uc3QgZT10LmdldEJ5dGUoKTtlJiZoLnB1c2goe2NoYXJDb2RlOnUsZ2x5cGhJZDplfSl9Yz0hMH1lbHNlIGlmKDI9PT1mKXt0LnNraXAoNCk7Y29uc3QgZT1bXTtsZXQgYT0wO2ZvcihsZXQgbj0wO248MjU2O24rKyl7Y29uc3Qgbj10LmdldFVpbnQxNigpPj4zO2UucHVzaChuKTthPU1hdGgubWF4KG4sYSl9Y29uc3Qgbj1bXTtmb3IobGV0IGU9MDtlPD1hO2UrKyluLnB1c2goe2ZpcnN0Q29kZTp0LmdldFVpbnQxNigpLGVudHJ5Q291bnQ6dC5nZXRVaW50MTYoKSxpZERlbHRhOnNpZ25lZEludDE2KHQuZ2V0Qnl0ZSgpLHQuZ2V0Qnl0ZSgpKSxpZFJhbmdlUG9zOnQucG9zK3QuZ2V0VWludDE2KCl9KTtmb3IobGV0IGE9MDthPDI1NjthKyspaWYoMD09PWVbYV0pe3QucG9zPW5bMF0uaWRSYW5nZVBvcysyKmE7bT10LmdldFVpbnQxNigpO2gucHVzaCh7Y2hhckNvZGU6YSxnbHlwaElkOm19KX1lbHNle2NvbnN0IHM9bltlW2FdXTtmb3IodT0wO3U8cy5lbnRyeUNvdW50O3UrKyl7Y29uc3QgZT0oYTw8OCkrdStzLmZpcnN0Q29kZTt0LnBvcz1zLmlkUmFuZ2VQb3MrMip1O209dC5nZXRVaW50MTYoKTswIT09bSYmKG09KG0rcy5pZERlbHRhKSU2NTUzNik7aC5wdXNoKHtjaGFyQ29kZTplLGdseXBoSWQ6bX0pfX19ZWxzZSBpZig0PT09Zil7dC5za2lwKDQpO2NvbnN0IGU9dC5nZXRVaW50MTYoKT4+MTt0LnNraXAoNik7Y29uc3QgYT1bXTtsZXQgbjtmb3Iobj0wO248ZTtuKyspYS5wdXNoKHtlbmQ6dC5nZXRVaW50MTYoKX0pO3Quc2tpcCgyKTtmb3Iobj0wO248ZTtuKyspYVtuXS5zdGFydD10LmdldFVpbnQxNigpO2ZvcihuPTA7bjxlO24rKylhW25dLmRlbHRhPXQuZ2V0VWludDE2KCk7bGV0IGksbz0wO2ZvcihuPTA7bjxlO24rKyl7cz1hW25dO2NvbnN0IHI9dC5nZXRVaW50MTYoKTtpZihyKXtpPShyPj4xKS0oZS1uKTtzLm9mZnNldEluZGV4PWk7bz1NYXRoLm1heChvLGkrcy5lbmQtcy5zdGFydCsxKX1lbHNlIHMub2Zmc2V0SW5kZXg9LTF9Y29uc3QgbD1bXTtmb3IodT0wO3U8bzt1KyspbC5wdXNoKHQuZ2V0VWludDE2KCkpO2ZvcihuPTA7bjxlO24rKyl7cz1hW25dO3I9cy5zdGFydDtjb25zdCBlPXMuZW5kLHQ9cy5kZWx0YTtpPXMub2Zmc2V0SW5kZXg7Zm9yKHU9cjt1PD1lO3UrKylpZig2NTUzNSE9PXUpe209aTwwP3U6bFtpK3Utcl07bT1tK3QmNjU1MzU7aC5wdXNoKHtjaGFyQ29kZTp1LGdseXBoSWQ6bX0pfX19ZWxzZSBpZig2PT09Zil7dC5za2lwKDQpO2NvbnN0IGU9dC5nZXRVaW50MTYoKSxhPXQuZ2V0VWludDE2KCk7Zm9yKHU9MDt1PGE7dSsrKXttPXQuZ2V0VWludDE2KCk7Y29uc3QgYT1lK3U7aC5wdXNoKHtjaGFyQ29kZTphLGdseXBoSWQ6bX0pfX1lbHNle2lmKDEyIT09Zil7d2FybigiY21hcCB0YWJsZSBoYXMgdW5zdXBwb3J0ZWQgZm9ybWF0OiAiK2YpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX17dC5za2lwKDEwKTtjb25zdCBlPXQuZ2V0SW50MzIoKT4+PjA7Zm9yKHU9MDt1PGU7dSsrKXtjb25zdCBlPXQuZ2V0SW50MzIoKT4+PjAsYT10LmdldEludDMyKCk+Pj4wO2xldCBuPXQuZ2V0SW50MzIoKT4+PjA7Zm9yKGxldCB0PWU7dDw9YTt0KyspaC5wdXNoKHtjaGFyQ29kZTp0LGdseXBoSWQ6bisrfSl9fX1jb25zdCBwPVtdLGQ9bmV3IFNldDtmb3IoY29uc3QgZSBvZiBoKXtjb25zdHtjaGFyQ29kZTp0fT1lO2lmKCFkLmhhcyh0KSl7ZC5hZGQodCk7cC5wdXNoKGUpfX1yZXR1cm57cGxhdGZvcm1JZDpvLnBsYXRmb3JtSWQsZW5jb2RpbmdJZDpvLmVuY29kaW5nSWQsbWFwcGluZ3M6cC5zb3J0KChlLHQpPT5lLmNoYXJDb2RlLXQuY2hhckNvZGUpLGhhc1Nob3J0Q21hcDpjfX0oaS5jbWFwLHQsdGhpcy5pc1N5bWJvbGljRm9udCxhLmhhc0VuY29kaW5nKSxuPWUucGxhdGZvcm1JZCxzPWUuZW5jb2RpbmdJZCxyPWUubWFwcGluZ3M7bGV0IG89W10sbD0hMTshYS5oYXNFbmNvZGluZ3x8Ik1hY1JvbWFuRW5jb2RpbmciIT09YS5iYXNlRW5jb2RpbmdOYW1lJiYiV2luQW5zaUVuY29kaW5nIiE9PWEuYmFzZUVuY29kaW5nTmFtZXx8KG89Z2V0RW5jb2RpbmcoYS5iYXNlRW5jb2RpbmdOYW1lKSk7aWYoYS5oYXNFbmNvZGluZyYmIXRoaXMuaXNTeW1ib2xpY0ZvbnQmJigzPT09biYmMT09PXN8fDE9PT1uJiYwPT09cykpe2NvbnN0IGU9Ym4oKTtmb3IobGV0IHQ9MDt0PDI1Njt0Kyspe2xldCBpO2k9dGhpcy5kaWZmZXJlbmNlcy5oYXModCk/dGhpcy5kaWZmZXJlbmNlcy5nZXQodCk6by5sZW5ndGgmJiIiIT09b1t0XT9vW3RdOm1uW3RdO2lmKCFpKWNvbnRpbnVlO2NvbnN0IGw9cmVjb3ZlckdseXBoTmFtZShpLGUpO2xldCBmOzM9PT1uJiYxPT09cz9mPWVbbF06MT09PW4mJjA9PT1zJiYoZj11bi5pbmRleE9mKGwpKTtpZih2b2lkIDA9PT1mKXtpZighYS5nbHlwaE5hbWVzJiZhLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiYhKHRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApKXtjb25zdCBlPXRoaXMudG9Vbmljb2RlLmdldCh0KTtlJiYoZj1lLmNvZGVQb2ludEF0KDApKX1pZih2b2lkIDA9PT1mKWNvbnRpbnVlfWZvcihjb25zdCBlIG9mIHIpaWYoZS5jaGFyQ29kZT09PWYpe2suc2V0KHQsZS5nbHlwaElkKTticmVha319fWVsc2UgaWYoMD09PW4pe2Zvcihjb25zdCBlIG9mIHIpay5zZXQoZS5jaGFyQ29kZSxlLmdseXBoSWQpO2w9ITB9ZWxzZSBpZigzPT09biYmMD09PXMpZm9yKGNvbnN0IGUgb2Ygcil7bGV0IHQ9ZS5jaGFyQ29kZTt0Pj02MTQ0MCYmdDw9NjE2OTUmJih0Jj0yNTUpO2suc2V0KHQsZS5nbHlwaElkKX1lbHNlIGZvcihjb25zdCBlIG9mIHIpay5zZXQoZS5jaGFyQ29kZSxlLmdseXBoSWQpO2lmKGEuZ2x5cGhOYW1lcyYmKG8ubGVuZ3RofHx0aGlzLmRpZmZlcmVuY2VzLnNpemUpKWZvcihsZXQgZT0wO2U8MjU2OysrZSl7aWYoIWwmJmsuaGFzKGUpKWNvbnRpbnVlO2NvbnN0IHQ9dGhpcy5kaWZmZXJlbmNlcy5nZXQoZSl8fG9bZV07aWYoIXQpY29udGludWU7Y29uc3Qgbj1hLmdseXBoTmFtZXMuaW5kZXhPZih0KTtuPjAmJmhhc0dseXBoKG4pJiZrLnNldChlLG4pfWEuaXNJbnRlcm5hbEZvbnR8fGsuaGFzKDApfHwhaGFzR2x5cGgoMCl8fGsuc2V0KDAsMCl9ay5zaXplfHxrLnNldCgwLDApO2NvbnN0IHk9cD9tLTE6MDtpZighYS5jc3NGb250SW5mbyl7Y29uc3QgZT1hZGp1c3RNYXBwaW5nKGssaGFzR2x5cGgseSx0aGlzLnRvVW5pY29kZSk7dGhpcy50b0ZvbnRDaGFyPWUudG9Gb250Q2hhcjtpLmNtYXA9e3RhZzoiY21hcCIsZGF0YTpjcmVhdGVDbWFwVGFibGUoZS5jaGFyQ29kZVRvR2x5cGhJZCxlLnRvVW5pY29kZUV4dHJhTWFwLG0pfTtpWyJPUy8yIl0mJmZ1bmN0aW9uIHZhbGlkYXRlT1MyVGFibGUoZSx0KXt0LnBvcz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7Y29uc3QgYT10LmdldFVpbnQxNigpLG49Wzc4LDg2LDk2LDk2LDk2LDEwMF1bYV07aWYodm9pZCAwPT09bnx8ZS5sZW5ndGg8bilyZXR1cm4hMTt0LnNraXAoNjApO2NvbnN0IHM9dC5nZXRVaW50MTYoKTtpZihhPDQmJjc2OCZzKXJldHVybiExO2lmKHQuZ2V0VWludDE2KCk+dC5nZXRVaW50MTYoKSlyZXR1cm4hMTt0LnNraXAoNik7aWYoMD09PXQuZ2V0VWludDE2KCkpcmV0dXJuITE7ZS5kYXRhWzhdPWUuZGF0YVs5XT0wO3JldHVybiEwfShpWyJPUy8yIl0sdCl8fChpWyJPUy8yIl09e3RhZzoiT1MvMiIsZGF0YTpjcmVhdGVPUzJUYWJsZShhLGUuY2hhckNvZGVUb0dseXBoSWQsail9KX1pZihpLm5hbWUpe2NvbnN0W3Qsbl09cmVhZE5hbWVUYWJsZShpLm5hbWUpO2kubmFtZS5kYXRhPWNyZWF0ZU5hbWVUYWJsZShlLHQpO3RoaXMucHNOYW1lPXRbMF1bNl18fG51bGw7YS5jb21wb3NpdGV8fGZ1bmN0aW9uIGFkanVzdFRydWVUeXBlVG9Vbmljb2RlKGUsdCxhKXtpZihlLmlzSW50ZXJuYWxGb250KXJldHVybjtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXJldHVybjtpZihlLmhhc0VuY29kaW5nKXJldHVybjtpZihlLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwKXJldHVybjtpZighdClyZXR1cm47aWYoMD09PWEubGVuZ3RoKXJldHVybjtpZihlLmRlZmF1bHRFbmNvZGluZz09PXBuKXJldHVybjtmb3IoY29uc3QgZSBvZiBhKWlmKCFpc1dpbk5hbWVSZWNvcmQoZSkpcmV0dXJuO2NvbnN0IG49cG4scz1uZXcgTWFwLHI9Ym4oKTtmb3IoY29uc3QgZSBpbiBuKXtjb25zdCB0PW5bZV07aWYoIiI9PT10KWNvbnRpbnVlO2NvbnN0IGE9clt0XTt2b2lkIDAhPT1hJiZzLnNldCgrZSxTdHJpbmcuZnJvbUNoYXJDb2RlKGEpKX1lLnRvVW5pY29kZS5hbWVuZChzKX0oYSx0aGlzLmlzU3ltYm9saWNGb250LG4pfWVsc2UgaS5uYW1lPXt0YWc6Im5hbWUiLGRhdGE6Y3JlYXRlTmFtZVRhYmxlKHRoaXMubmFtZSl9O2NvbnN0IHE9bmV3IE9wZW5UeXBlRmlsZUJ1aWxkZXIoci52ZXJzaW9uKTtmb3IoY29uc3QgZSBpbiBpKXEuYWRkVGFibGUoZSxpW2VdLmRhdGEpO3JldHVybiBxLnRvQXJyYXkoKX1jb252ZXJ0KGUsdCxhKXthLmZpeGVkUGl0Y2g9ITE7YS5idWlsdEluRW5jb2RpbmcmJmZ1bmN0aW9uIGFkanVzdFR5cGUxVG9Vbmljb2RlKGUsdCl7aWYoZS5pc0ludGVybmFsRm9udClyZXR1cm47aWYoZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcClyZXR1cm47aWYodD09PWUuZGVmYXVsdEVuY29kaW5nKXJldHVybjtpZihlLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwKXJldHVybjtjb25zdCBhPW5ldyBNYXAsbj1ibigpO2Zvcihjb25zdCBzIGluIHQpe2lmKGUuaGFzRW5jb2RpbmcmJihlLmJhc2VFbmNvZGluZ05hbWV8fGUuZGlmZmVyZW5jZXMuaGFzKCtzKSkpY29udGludWU7Y29uc3Qgcj1nZXRVbmljb2RlRm9yR2x5cGgodFtzXSxuKTstMSE9PXImJmEuc2V0KCtzLFN0cmluZy5mcm9tQ2hhckNvZGUocikpfWUudG9Vbmljb2RlLmFtZW5kKGEpfShhLGEuYnVpbHRJbkVuY29kaW5nKTtjb25zdCBzPXQgaW5zdGFuY2VvZiBDRkZGb250P3QubnVtR2x5cGhzLTE6MSxyPXQuZ2V0R2x5cGhNYXBwaW5nKGEpO2xldCBpPW51bGwsbz1yLGw9bnVsbDtpZighYS5jc3NGb250SW5mbyl7aT1hZGp1c3RNYXBwaW5nKHIsdC5oYXNHbHlwaElkLmJpbmQodCkscyx0aGlzLnRvVW5pY29kZSk7dGhpcy50b0ZvbnRDaGFyPWkudG9Gb250Q2hhcjtvPWkuY2hhckNvZGVUb0dseXBoSWQ7bD1pLnRvVW5pY29kZUV4dHJhTWFwfWNvbnN0e251bUdseXBoczpmLHNlYWNzOmN9PXQ7ZnVuY3Rpb24gZ2V0Q2hhckNvZGVzKGUsdCl7bGV0IGE9bnVsbDtmb3IoY29uc3RbbixzXW9mIGUpdD09PXMmJihhPz89W10pLnB1c2gobik7cmV0dXJuIGF9ZnVuY3Rpb24gY3JlYXRlQ2hhckNvZGUoZSx0KXtmb3IoY29uc3RbYSxuXW9mIGUpaWYodD09PW4pcmV0dXJuIGE7aS5jaGFyQ29kZVRvR2x5cGhJZC5zZXQoaS5uZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlLHQpO3JldHVybiBpLm5leHRBdmFpbGFibGVGb250Q2hhckNvZGUrK31pZihpJiZjPy5zaXplKXtjb25zdCBlPWEuZm9udE1hdHJpeHx8bixzPXQuZ2V0Q2hhcnNldCgpLG89bmV3IE1hcDtmb3IoY29uc3RbdCxhXW9mIGMpe2NvbnN0IG49bW5bYVsyXV0sbD1tblthWzNdXSxmPXMuaW5kZXhPZihuKSxjPXMuaW5kZXhPZihsKTtpZihmPDB8fGM8MCljb250aW51ZTtjb25zdCBoPXt4OmFbMF0qZVswXSthWzFdKmVbMl0rZVs0XSx5OmFbMF0qZVsxXSthWzFdKmVbM10rZVs1XX0sdT1nZXRDaGFyQ29kZXMocix0KTtpZih1KWZvcihjb25zdCBlIG9mIHUpe2NvbnN0e2NoYXJDb2RlVG9HbHlwaElkOnR9PWksYT1jcmVhdGVDaGFyQ29kZSh0LGYpLG49Y3JlYXRlQ2hhckNvZGUodCxjKTtvLnNldChlLHtiYXNlRm9udENoYXJDb2RlOmEsYWNjZW50Rm9udENoYXJDb2RlOm4sYWNjZW50T2Zmc2V0Omh9KX19YS5zZWFjTWFwPW99Y29uc3QgaD1hLmZvbnRNYXRyaXg/MS9NYXRoLm1heCguLi5hLmZvbnRNYXRyaXguc2xpY2UoMCw0KS5tYXAoTWF0aC5hYnMpKToxZTMsdT1uZXcgT3BlblR5cGVGaWxlQnVpbGRlcigiT1RUTyIpO3UuYWRkVGFibGUoIkNGRiAiLHQuZGF0YSk7dS5hZGRUYWJsZSgiT1MvMiIsY3JlYXRlT1MyVGFibGUoYSxvKSk7dS5hZGRUYWJsZSgiY21hcCIsY3JlYXRlQ21hcFRhYmxlKG8sbCxmKSk7dS5hZGRUYWJsZSgiaGVhZCIsZnVuY3Rpb24gZm9udFRhYmxlSGVhZCgpe2NvbnN0IGU9WzAsMCwwLDAsMTU4LDExLDEyNiwzOV0sdD1uZXcgRGF0YUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOjU0fSk7dC5zZXRBcnJheShbMCwxLDAsMF0pO3Quc2V0QXJyYXkoWzAsMCwxNiwwXSk7dC5za2lwKDQpO3Quc2V0QXJyYXkoWzk1LDE1LDYwLDI0NV0pO3Quc2tpcCgyKTt0LnNldFNhZmVJbnQxNihoKTt0LnNldEFycmF5KGUpO3Quc2V0QXJyYXkoZSk7dC5za2lwKDIpO3Quc2V0U2FmZUludDE2KGEuZGVzY2VudCk7dC5zZXRBcnJheShbMTUsMjU1XSk7dC5zZXRTYWZlSW50MTYoYS5hc2NlbnQpO3Quc2V0SW50MTYoYS5pdGFsaWNBbmdsZT8yOjApO3Quc2V0QXJyYXkoWzAsMTddKTt0LnNraXAoNik7cmV0dXJuIHQuZGF0YX0oKSk7dS5hZGRUYWJsZSgiaGhlYSIsZnVuY3Rpb24gZm9udFRhYmxlSGhlYSgpe2NvbnN0IGU9bmV3IERhdGFCdWlsZGVyKHtleGFjdExlbmd0aDozNn0pO2Uuc2V0QXJyYXkoWzAsMSwwLDBdKTtlLnNldFNhZmVJbnQxNihhLmFzY2VudCk7ZS5zZXRTYWZlSW50MTYoYS5kZXNjZW50KTtlLnNraXAoMik7ZS5zZXRBcnJheShbMjU1LDI1NV0pO2Uuc2tpcCg2KTtlLnNldFNhZmVJbnQxNihhLmNhcEhlaWdodCk7ZS5zZXRTYWZlSW50MTYoTWF0aC50YW4oYS5pdGFsaWNBbmdsZSkqYS54SGVpZ2h0KTtlLnNraXAoMTIpO2Uuc2V0SW50MTYoZik7cmV0dXJuIGUuZGF0YX0oKSk7dS5hZGRUYWJsZSgiaG10eCIsZnVuY3Rpb24gZm9udFRhYmxlSG10eCgpe2NvbnN0IGU9dC5jaGFyc3RyaW5ncyxhPXQuY2ZmPy53aWR0aHM/P251bGwsbj1uZXcgRGF0YUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOjQqZn0pO24uc2tpcCg0KTtmb3IobGV0IHQ9MTt0PGY7dCsrKXtsZXQgcz0wO2U/cz1lW3QtMV0ud2lkdGh8fDA6YSYmKHM9TWF0aC5jZWlsKGFbdF18fDApKTtuLnNldEludDE2KHMpO24uc2tpcCgyKX1yZXR1cm4gbi5kYXRhfSgpKTt1LmFkZFRhYmxlKCJtYXhwIixmdW5jdGlvbiBmb250VGFibGVNYXhwKCl7Y29uc3QgZT1uZXcgRGF0YUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOjZ9KTtlLnNldEFycmF5KFswLDAsODAsMF0pO2Uuc2V0SW50MTYoZik7cmV0dXJuIGUuZGF0YX0oKSk7dS5hZGRUYWJsZSgibmFtZSIsY3JlYXRlTmFtZVRhYmxlKGUpKTt1LmFkZFRhYmxlKCJwb3N0IixjcmVhdGVQb3N0VGFibGUoYSkpO3JldHVybiB1LnRvQXJyYXkoKX1nZXQgX3NwYWNlV2lkdGgoKXtjb25zdCBlPVsic3BhY2UiLCJtaW51cyIsIm9uZSIsImkiLCJJIl07bGV0IHQ7Zm9yKGNvbnN0IGEgb2YgZSl7aWYoYSBpbiB0aGlzLndpZHRocyl7dD10aGlzLndpZHRoc1thXTticmVha31jb25zdCBlPWJuKClbYV07bGV0IG49MDtpZih0aGlzLmNvbXBvc2l0ZSYmdGhpcy5jTWFwLmNvbnRhaW5zKGUpKXtuPXRoaXMuY01hcC5sb29rdXAoZSk7InN0cmluZyI9PXR5cGVvZiBuJiYobj1jb252ZXJ0Q2lkU3RyaW5nKGUsbikpfSFuJiZ0aGlzLnRvVW5pY29kZSYmKG49dGhpcy50b1VuaWNvZGUuY2hhckNvZGVPZihlKSk7bjw9MCYmKG49ZSk7dD10aGlzLndpZHRoc1tuXTtpZih0KWJyZWFrfXJldHVybiBzaGFkb3codGhpcywiX3NwYWNlV2lkdGgiLHR8fHRoaXMuZGVmYXVsdFdpZHRoKX1fY2hhclRvR2x5cGgoZSx0PSExKXtsZXQgYSxuLHMscj10aGlzLiN2ZS5nZXQoZSk7aWYocj8uaXNTcGFjZT09PXQpcmV0dXJuIHI7bGV0IGk9ZTtpZih0aGlzLmNNYXA/LmNvbnRhaW5zKGUpKXtpPXRoaXMuY01hcC5sb29rdXAoZSk7InN0cmluZyI9PXR5cGVvZiBpJiYoaT1jb252ZXJ0Q2lkU3RyaW5nKGUsaSkpfW49dGhpcy53aWR0aHNbaV07Im51bWJlciIhPXR5cGVvZiBuJiYobj10aGlzLmRlZmF1bHRXaWR0aCk7bGV0IG89dGhpcy52bWV0cmljcz8uW2ldO2lmKCFvJiZ0aGlzLmRlZmF1bHRWTWV0cmljcyl7Y29uc3RbZSwsdF09dGhpcy5kZWZhdWx0Vk1ldHJpY3M7bz1bZSwuNSpuLHRdfWxldCBsPXRoaXMudG9Vbmljb2RlLmdldChlKXx8ZTsibnVtYmVyIj09dHlwZW9mIGwmJihsPVN0cmluZy5mcm9tQ2hhckNvZGUobCkpO2xldCBmPXRoaXMudG9Gb250Q2hhci5oYXMoZSk7YT10aGlzLnRvRm9udENoYXIuZ2V0KGUpfHxlO2lmKHRoaXMubWlzc2luZ0ZpbGUpe2NvbnN0IHQ9dGhpcy5kaWZmZXJlbmNlcy5nZXQoZSl8fHRoaXMuZGVmYXVsdEVuY29kaW5nW2VdO2lmKCgiLm5vdGRlZiI9PT10fHwiIj09PXQpJiYiVHlwZTEiPT09dGhpcy50eXBlKXthPTMyO2lmKCIiPT09dCl7bnx8PXRoaXMuX3NwYWNlV2lkdGg7dGhpcy50b1VuaWNvZGUuaGFzKGUpfHwobD1TdHJpbmcuZnJvbUNoYXJDb2RlKGEpKX19YT1mdW5jdGlvbiBtYXBTcGVjaWFsVW5pY29kZVZhbHVlcyhlKXtyZXR1cm4gZT49NjU1MjAmJmU8PTY1NTM1PzA6ZT49NjI5NzYmJmU8PTYzNzQzP2puKClbZV18fGU6MTczPT09ZT80NTplfShhKX10aGlzLmlzVHlwZTNGb250JiYocz1hKTtsZXQgYz1udWxsO2NvbnN0IGg9dGhpcy5zZWFjTWFwPy5nZXQoZSk7aWYoaCl7Zj0hMDthPWguYmFzZUZvbnRDaGFyQ29kZTtjPXtmb250Q2hhcjpTdHJpbmcuZnJvbUNvZGVQb2ludChoLmFjY2VudEZvbnRDaGFyQ29kZSksb2Zmc2V0OmguYWNjZW50T2Zmc2V0fX1sZXQgdT0iIjsibnVtYmVyIj09dHlwZW9mIGEmJihhPD0xMTE0MTExP3U9U3RyaW5nLmZyb21Db2RlUG9pbnQoYSk6d2FybihgY2hhclRvR2x5cGggLSBpbnZhbGlkIGZvbnRDaGFyQ29kZTogJHthfWApKTtpZih0aGlzLm1pc3NpbmdGaWxlJiZ0aGlzLnZlcnRpY2FsJiYxPT09dS5sZW5ndGgpe2NvbnN0IGU9SW4oKVt1LmNoYXJDb2RlQXQoMCldO2UmJih1PWw9U3RyaW5nLmZyb21DaGFyQ29kZShlKSl9cj1uZXcgZm9udHNfR2x5cGgoZSx1LGwsYyxuLG8scyx0LGYpO3RoaXMuI3ZlLnNldChlLHIpO3JldHVybiByfWNoYXJzVG9HbHlwaHMoZSl7bGV0IHQ9dGhpcy4jcWUuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7dD1bXTtpZih0aGlzLmNNYXApe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKSxuPWUubGVuZ3RoO2xldCBzPTA7Zm9yKDtzPG47KXt0aGlzLmNNYXAucmVhZENoYXJDb2RlKGUscyxhKTtjb25zdHtjaGFyY29kZTpuLGxlbmd0aDpyfT1hO3MrPXI7Y29uc3QgaT10aGlzLl9jaGFyVG9HbHlwaChuLDE9PT1yJiYzMj09PWUuY2hhckNvZGVBdChzLTEpKTt0LnB1c2goaSl9fWVsc2UgZm9yKGxldCBhPTAsbj1lLmxlbmd0aDthPG47KythKXtjb25zdCBuPWUuY2hhckNvZGVBdChhKSxzPXRoaXMuX2NoYXJUb0dseXBoKG4sMzI9PT1uKTt0LnB1c2gocyl9dGhpcy4jcWUuc2V0KGUsdCk7cmV0dXJuIHR9Z2V0Q2hhclBvc2l0aW9ucyhlKXtjb25zdCB0PVtdO2lmKHRoaXMuY01hcCl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBuPTA7Zm9yKDtuPGUubGVuZ3RoOyl7dGhpcy5jTWFwLnJlYWRDaGFyQ29kZShlLG4sYSk7Y29uc3Qgcz1hLmxlbmd0aDt0LnB1c2goW24sbitzXSk7bis9c319ZWxzZSBmb3IobGV0IGE9MCxuPWUubGVuZ3RoO2E8bjsrK2EpdC5wdXNoKFthLGErMV0pO3JldHVybiB0fWdldCBnbHlwaENhY2hlVmFsdWVzKCl7cmV0dXJuIHRoaXMuI3ZlLnZhbHVlcygpfWVuY29kZVN0cmluZyhlKXtjb25zdCB0PVtdLGE9W10saGFzQ3VycmVudEJ1ZkVycm9ycz0oKT0+dC5sZW5ndGglMj09MSxuPXRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXA/ZT0+dGhpcy50b1VuaWNvZGUuY2hhckNvZGVPZihlKTplPT50aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKFN0cmluZy5mcm9tQ29kZVBvaW50KGUpKTtmb3IobGV0IHM9MCxyPWUubGVuZ3RoO3M8cjtzKyspe2NvbnN0IHI9ZS5jb2RlUG9pbnRBdChzKTtyPjY1NTM1JiZzKys7aWYodGhpcy50b1VuaWNvZGUpe2NvbnN0IGU9bihyKTtpZigtMSE9PWUpe2lmKGhhc0N1cnJlbnRCdWZFcnJvcnMoKSl7dC5wdXNoKGEuam9pbigiIikpO2EubGVuZ3RoPTB9Zm9yKGxldCB0PSh0aGlzLmNNYXA/dGhpcy5jTWFwLmdldENoYXJDb2RlTGVuZ3RoKGUpOjEpLTE7dD49MDt0LS0pYS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZT4+OCp0JjI1NSkpO2NvbnRpbnVlfX1pZighaGFzQ3VycmVudEJ1ZkVycm9ycygpKXt0LnB1c2goYS5qb2luKCIiKSk7YS5sZW5ndGg9MH1hLnB1c2goU3RyaW5nLmZyb21Db2RlUG9pbnQocikpfXQucHVzaChhLmpvaW4oIiIpKTtyZXR1cm4gdH19Y2xhc3MgRXJyb3JGb250e2NvbnN0cnVjdG9yKGUpe3RoaXMuZXJyb3I9ZTt0aGlzLmxvYWRlZE5hbWU9ImdfZm9udF9lcnJvciI7dGhpcy5taXNzaW5nRmlsZT0hMH1jaGFyc1RvR2x5cGhzKCl7cmV0dXJuW119ZW5jb2RlU3RyaW5nKGUpe3JldHVybltlXX1leHBvcnREYXRhKCl7cmV0dXJue2Vycm9yOnRoaXMuZXJyb3J9fX1jb25zdCBncz1bMS4zODc3LDEsMSwxLC45NzgwMSwuOTI0ODIsLjg5NTUyLC45MTEzMywuODE5ODgsLjk3NTY2LC45ODE1MiwuOTM1NDgsLjkzNTQ4LDEuMjc5OCwuODUyODQsLjkyNzk0LDEsLjk2MTM0LDEuNTQ2NTcsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC44Mjg0NSwuODI4NDUsLjg1Mjg0LC44NTI4NCwuODUyODQsLjc1ODU5LC45MjEzOCwuODM5MDgsLjc3NjIsLjczMjkzLC44NzI4OSwuNzMxMzMsLjc1MTQsLjgxOTIxLC44NzM1NiwuOTU5NTgsLjU5NTI2LC43NTcyNywuNjkyMjUsMS4wNDkyNCwuOTEyMSwuODY5NDMsLjc5Nzk1LC44ODE5OCwuNzc5NTgsLjcwODY0LC44MTA1NSwuOTAzOTksLjg4NjUzLC45NjAxNywuODI1NzcsLjc3ODkyLC43ODI1NywuOTc1MDcsMS41NDY1NywuOTc1MDcsLjg1Mjg0LC44OTU1MiwuOTAxNzYsLjg4NzYyLC44Nzg1LC43NTI0MSwuODc4NSwuOTA1MTgsLjk1MDE1LC43NzYxOCwuODc4NSwuODg0MDEsLjkxOTE2LC44NjMwNCwuODg0MDEsLjkxNDg4LC44Nzg1LC44ODAxLC44Nzg1LC44Nzg1LC45MTM0MywuNzE3MywxLjA0MTA2LC44Nzg1LC44NTA3NSwuOTU3OTQsLjgyNjE2LC44NTE2MiwuNzk0OTIsLjg4MzMxLDEuNjk4MDgsLjg4MzMxLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuNzgwMSwuODk1NTIsMS4yNDQ4NywxLjEzMjU0LDEuMTI0MDEsLjk2ODM5LC44NTI4NCwuNjg3ODcsLjcwNjQ1LC44NTU5MiwuOTA3NDcsMS4wMTQ2NiwxLjAwODgsLjkwMzIzLDEsMS4wNzQ2MywxLC45MTA1NiwuNzU4MDYsMS4xOTExOCwuOTY4MzksLjc4ODY0LC44Mjg0NSwuODQxMzMsLjc1ODU5LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC43NzUzOSwuNzMyOTMsLjczMTMzLC43MzEzMywuNzMxMzMsLjczMTMzLC45NTk1OCwuOTU5NTgsLjk1OTU4LC45NTk1OCwuODg1MDYsLjkxMjEsLjg2OTQzLC44Njk0MywuODY5NDMsLjg2OTQzLC44Njk0MywuODUyODQsLjg3NTA4LC45MDM5OSwuOTAzOTksLjkwMzk5LC45MDM5OSwuNzc4OTIsLjc5Nzk1LC45MDgwNywuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODcxNSwuNzUyNDEsLjkwNTE4LC45MDUxOCwuOTA1MTgsLjkwNTE4LC44ODQwMSwuODg0MDEsLjg4NDAxLC44ODQwMSwuODc4NSwuODc4NSwuODgwMSwuODgwMSwuODgwMSwuODgwMSwuODgwMSwuOTA3NDcsLjg5MDQ5LC44Nzg1LC44Nzg1LC44Nzg1LC44Nzg1LC44NTE2MiwuODc4NSwuODUxNjIsLjgzOTA4LC44ODc2MiwuODM5MDgsLjg4NzYyLC44MzkwOCwuODg3NjIsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuODcyODksLjgzMDE2LC44ODUwNiwuOTMxMjUsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC44MTkyMSwuNzc2MTgsLjgxOTIxLC43NzYxOCwuODE5MjEsLjc3NjE4LDEsMSwuODczNTYsLjg3ODUsLjkxMDc1LC44OTYwOCwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjc2MjI5LC45MDE2NywuNTk1MjYsLjkxOTE2LDEsMSwuODYzMDQsLjY5MjI1LC44ODQwMSwxLDEsLjcwNDI0LC43OTQ2OCwuOTE5MjYsLjg4MTc1LC43MDgyMywuOTQ5MDMsLjkxMjEsLjg3ODUsMSwxLC45MTIxLC44Nzg1LC44NzgwMiwuODg2NTYsLjg3ODUsLjg2OTQzLC44ODAxLC44Njk0MywuODgwMSwuODY5NDMsLjg4MDEsLjg3NDAyLC44OTI5MSwuNzc5NTgsLjkxMzQzLDEsMSwuNzc5NTgsLjkxMzQzLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywxLDEsLjgxMDU1LC43NTg0MSwuODEwNTUsMS4wNjQ1MiwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTYwMTcsLjk1Nzk0LC43Nzg5MiwuODUxNjIsLjc3ODkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC45Mjk3LC41Njg5MiwuODM5MDgsLjg4NzYyLC43NzUzOSwuODcxNSwuODc1MDgsLjg5MDQ5LDEsMSwuODEwNTUsMS4wNDEwNiwxLjIwNTI4LDEuMjA1MjgsMSwxLjE1NTQzLC43MDY3NCwuOTgzODcsLjk0NzIxLDEuMzM0MzEsMS40NTg5NCwuOTUxNjEsMS4wNjMwMywuODM5MDgsLjgwMzUyLC41NzE4NCwuNjk2NSwuNTYyODksLjgyMDAxLC41NjAyOSwuODEyMzUsMS4wMjk4OCwuODM5MDgsLjc3NjIsLjY4MTU2LC44MDM2NywuNzMxMzMsLjc4MjU3LC44NzM1NiwuODY5NDMsLjk1OTU4LC43NTcyNywuODkwMTksMS4wNDkyNCwuOTEyMSwuNzY0OCwuODY5NDMsLjg3MzU2LC43OTc5NSwuNzgyNzUsLjgxMDU1LC43Nzg5MiwuOTc2MiwuODI1NzcsLjk5ODE5LC44NDg5NiwuOTU5NTgsLjc3ODkyLC45NjEwOCwxLjAxNDA3LC44OTA0OSwxLjAyOTg4LC45NDIxMSwuOTYxMDgsLjg5MzYsLjg0MDIxLC44Nzg0MiwuOTYzOTksLjc5MTA5LC44OTA0OSwxLjAwODEzLDEuMDI5ODgsLjg2MDc3LC44NzQ0NSwuOTIwOTksLjg0NzIzLC44NjUxMywuODgwMSwuNzU2MzgsLjg1NzE0LC43ODIxNiwuNzk1ODYsLjg3OTY1LC45NDIxMSwuOTc3NDcsLjc4Mjg3LC45NzkyNiwuODQ5NzEsMS4wMjk4OCwuOTQyMTEsLjg4MDEsLjk0MjExLC44NDk3MSwuNzMxMzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwMjY0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDUxOCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA1NDgsMSwxLDEsMSwxLDEsLjk2MDE3LC45NTc5NCwuOTYwMTcsLjk1Nzk0LC45NjAxNywuOTU3OTQsLjc3ODkyLC44NTE2MiwxLDEsLjg5NTUyLC45MDUyNywxLC45MDM2MywuOTI3OTQsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjg3MDEyLC44NzAxMiwuODcwMTIsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC43MTE0MywxLjA2MTUyLDEsMSwxLjAzMzcyLDEuMDMzNzIsLjk3MTcxLDEuNDk1NiwyLjI4MDcsLjkzODM1LC44MzQwNiwuOTExMzMsLjg0MTA3LC45MTEzMywxLDEsMSwuNzIwMjEsMSwxLjIzMTA4LC44MzQ4OSwuODg1MjUsLjg4NTI1LC44MTQ5OSwuOTA1MjcsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjMxMDA2LDEuNTM3MTEsLjk0NDM0LDEuMDg2OTYsMSwuOTUwMTgsLjc3MTkyLC44NTI4NCwuOTA3NDcsMS4xNzUzNCwuNjk4MjUsLjk3MTYsMS4zNzA3NywuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDgwMDQsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA3MjcsLjkwNzI3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxicz17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30sd3M9WzEuMzg3NywxLDEsMSwuOTc4MDEsLjkyNDgyLC44OTU1MiwuOTExMzMsLjgxOTg4LC45NzU2NiwuOTgxNTIsLjkzNTQ4LC45MzU0OCwxLjI3OTgsLjg1Mjg0LC45Mjc5NCwxLC45NjEzNCwxLjU2MjM5LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuODI4NDUsLjgyODQ1LC44NTI4NCwuODUyODQsLjg1Mjg0LC43NTg1OSwuOTIxMzgsLjgzOTA4LC43NzYyLC43MTgwNSwuODcyODksLjczMTMzLC43NTE0LC44MTkyMSwuODczNTYsLjk1OTU4LC41OTUyNiwuNzU3MjcsLjY5MjI1LDEuMDQ5MjQsLjkwODcyLC44NTkzOCwuNzk3OTUsLjg3MDY4LC43Nzk1OCwuNjk3NjYsLjgxMDU1LC45MDM5OSwuODg2NTMsLjk2MDY4LC44MjU3NywuNzc4OTIsLjc4MjU3LC45NzUwNywxLjUyOSwuOTc1MDcsLjg1Mjg0LC44OTU1MiwuOTAxNzYsLjk0OTA4LC44NjQxMSwuNzQwMTIsLjg2NDExLC44ODMyMywuOTUwMTUsLjg2NDExLC44NjMzMSwuODg0MDEsLjkxOTE2LC44NjMwNCwuODg0MDEsLjkwMzksLjg2MzMxLC44NjMzMSwuODY0MTEsLjg2NDExLC45MDQ2NCwuNzA4NTIsMS4wNDEwNiwuODYzMzEsLjg0MzcyLC45NTc5NCwuODI2MTYsLjg0NTQ4LC43OTQ5MiwuODgzMzEsMS42OTgwOCwuODgzMzEsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS43ODAxLC44OTU1MiwxLjI0NDg3LDEuMTMyNTQsMS4xOTEyOSwuOTY4MzksLjg1Mjg0LC42ODc4NywuNzA2NDUsLjg1NTkyLC45MDc0NywxLjAxNDY2LDEuMDA4OCwuOTAzMjMsMSwxLjA3NDYzLDEsLjkxMDU2LC43NTgwNiwxLjE5MTE4LC45NjgzOSwuNzg4NjQsLjgyODQ1LC44NDEzMywuNzU4NTksLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjc3NTM5LC43MTgwNSwuNzMxMzMsLjczMTMzLC43MzEzMywuNzMxMzMsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjk1OTU4LC44ODUwNiwuOTA4NzIsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTkzOCwuODUyODQsLjg3MDY4LC45MDM5OSwuOTAzOTksLjkwMzk5LC45MDM5OSwuNzc4OTIsLjc5Nzk1LC45MDgwNywuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuODU4ODcsLjc0MDEyLC44ODMyMywuODgzMjMsLjg4MzIzLC44ODMyMywuODg0MDEsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg3ODUsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjkwNzQ3LC44OTA0OSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg0NTQ4LC44NjQxMSwuODQ1NDgsLjgzOTA4LC45NDkwOCwuODM5MDgsLjk0OTA4LC44MzkwOCwuOTQ5MDgsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuODcyODksLjc5NTM4LC44ODUwNiwuOTI3MjYsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC44MTkyMSwuODY0MTEsLjgxOTIxLC44NjQxMSwuODE5MjEsLjg2NDExLDEsMSwuODczNTYsLjg2MzMxLC45MTA3NSwuODc3NywuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjc2NDY3LC45MDE2NywuNTk1MjYsLjkxOTE2LDEsMSwuODYzMDQsLjY5MjI1LC44ODQwMSwxLDEsLjcwNDI0LC43NzMxMiwuOTE5MjYsLjg4MTc1LC43MDgyMywuOTQ5MDMsLjkwODcyLC44NjMzMSwxLDEsLjkwODcyLC44NjMzMSwuODY5MDYsLjg4MTE2LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg1OTM4LC44NjMzMSwuODc0MDIsLjg2NTQ5LC43Nzk1OCwuOTA0NjQsMSwxLC43Nzk1OCwuOTA0NjQsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwxLDEsLjgxMDU1LC43NTg0MSwuODEwNTUsMS4wNjQ1MiwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTYwNjgsLjk1Nzk0LC43Nzg5MiwuODQ1NDgsLjc3ODkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC45Mjk3LC41Njg5MiwuODM5MDgsLjk0OTA4LC43NzUzOSwuODU4ODcsLjg3MDY4LC44OTA0OSwxLDEsLjgxMDU1LDEuMDQxMDYsMS4yMDUyOCwxLjIwNTI4LDEsMS4xNTU0MywuNzAwODgsLjk4Mzg3LC45NDcyMSwxLjMzNDMxLDEuNDU4OTQsLjk1MTYxLDEuNDgzODcsLjgzOTA4LC44MDM1MiwuNTcxMTgsLjY5NjUsLjU2MzQ3LC43OTE3OSwuNTU4NTMsLjgwMzQ2LDEuMDI5ODgsLjgzOTA4LC43NzYyLC42NzE3NCwuODYwMzYsLjczMTMzLC43ODI1NywuODczNTYsLjg2NDQxLC45NTk1OCwuNzU3MjcsLjg5MDE5LDEuMDQ5MjQsLjkwODcyLC43NDg4OSwuODU5MzgsLjg3ODkxLC43OTc5NSwuNzk1NywuODEwNTUsLjc3ODkyLC45NzQ0NywuODI1NzcsLjk3NDY2LC44NzE3OSwuOTU5NTgsLjc3ODkyLC45NDI1MiwuOTU2MTIsLjg3NTMsMS4wMjk4OCwuOTI3MzMsLjk0MjUyLC44NzQxMSwuODQwMjEsLjg3MjgsLjk1NjEyLC43NDA4MSwuODc1MywxLjAyMTg5LDEuMDI5ODgsLjg0ODE0LC44NzQ0NSwuOTE4MjIsLjg0NzIzLC44NTY2OCwuODYzMzEsLjgxMzQ0LC44NzU4MSwuNzY0MjIsLjgyMDQ2LC45NjA1NywuOTI3MzMsLjk5Mzc1LC43ODAyMiwuOTU0NTIsLjg2MDE1LDEuMDI5ODgsLjkyNzMzLC44NjMzMSwuOTI3MzMsLjg2MDE1LC43MzEzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA2MzEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg4MzIzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NTE3NCwxLDEsMSwxLDEsMSwuOTYwNjgsLjk1Nzk0LC45NjA2OCwuOTU3OTQsLjk2MDY4LC45NTc5NCwuNzc4OTIsLjg0NTQ4LDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMzYzLC45Mjc5NCwuOTI3OTQsLjkyNzk0LC44OTgwNywuODcwMTIsLjg3MDEyLC44NzAxMiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjcxMDk0LDEuMDYxNTIsMSwxLDEuMDMzNzIsMS4wMzM3MiwuOTcxNzEsMS40OTU2LDIuMjgwNywuOTI5NzIsLjgzNDA2LC45MTEzMywuODMzMjYsLjkxMTMzLDEsMSwxLC43MjAyMSwxLDEuMjMxMDgsLjgzNDg5LC44ODUyNSwuODg1MjUsLjgxNDk5LC45MDYxNiwxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMzEwNywxLjUzNzExLC45NDQzNCwxLjA4Njk2LDEsLjk1MDE4LC43NzE5MiwuODUyODQsLjkwNzQ3LDEuMTc1MzQsLjY5ODI1LC45NzE2LDEuMzcwNzcsLjkwNzQ3LC45MDc0NywuODUzNTYsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjA4MDA0LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNzI3LC45MDcyNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sanM9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9LGtzPVsxLjM4NzcsMSwxLDEsMS4xNzIyMywxLjEyOTMsLjg5NTUyLC45MTEzMywuODAzOTUsMS4wMjI2OSwxLjE1NjAxLC45MTA1NiwuOTEwNTYsMS4yNzk4LC44NTI4NCwuODk4MDcsMSwuOTA4NjEsMS4zOTU0MywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjk2MzA5LC45NjMwOSwuODUyODQsLjg1Mjg0LC44NTI4NCwuODMzMTksLjg4MDcxLC44Njc1LC44MTU1MiwuNzIzNDYsLjg1MTkzLC43MzIwNiwuNzUyMiwuODExMDUsLjg2Mjc1LC45MDY4NSwuNjM3NywuNzc4OTIsLjc1NTkzLDEuMDI2MzgsLjg5MjQ5LC44NDExOCwuNzc0NTIsLjg1Mzc0LC43NTE4NiwuNjc3ODksLjc5Nzc2LC44ODg0NCwuODUwNjYsLjk0MzA5LC43NzgxOCwuNzMwNiwuNzY2NTksMS4xMDM2OSwxLjM4MzEzLDEuMTAzNjksMS4wNjEzOSwuODk1NTIsLjg3MzksLjkyNDUsLjkyNDUsLjgzMjAzLC45MjQ1LC44NTg2NSwxLjA5ODQyLC45MjQ1LC45MjQ1LDEuMDMyOTcsMS4wNzY5MiwuOTA5MTgsMS4wMzI5NywuOTQ5NTksLjkyNDUsLjkyMjc0LC45MjQ1LC45MjQ1LDEuMDI5MzMsLjc3ODMyLDEuMjA1NjIsLjkyNDUsLjg5MTYsLjk4OTg2LC44NjYyMSwuODk0NTMsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4xNjM1OSwuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MjM0NiwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkyNDksLjg0MTE4LC44NDExOCwuODQxMTgsLjg0MTE4LC44NDExOCwuODUyODQsLjg0NTU3LC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44NDg0MywuODMyMDMsLjg1ODY1LC44NTg2NSwuODU4NjUsLjg1ODY1LC44MjYwMSwuODI2MDEsLjgyNjAxLC44MjYwMSwuOTQ0NjksLjkyNDUsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTA3NDcsLjg2NjUxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44OTQ1MywuOTI0NSwuODk0NTMsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuODUxOTMsLjg4NzUsLjg2NDc3LC45OTAzNCwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjgxMTA1LC45MjQ1LC44MTEwNSwuOTI0NSwuODExMDUsLjkyNDUsMSwxLC44NjI3NSwuOTI0NSwuOTA4NzIsLjkzNTkxLC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwxLjAzMjk3LC45MDY4NSwuODI2MDEsLjc3ODk2LDEuMDU2MTEsLjYzNzcsMS4wNzY5MiwxLDEsLjkwOTE4LC43NTU5MywxLjAzMjk3LDEsMSwuNzYwMzIsLjkzNzUsLjk4MTU2LC45MzQwNywuNzcyNjEsMS4xMTQyOSwuODkyNDksLjkyNDUsMSwxLC44OTI0OSwuOTI0NSwuOTI1MzQsLjg2Njk4LC45MjQ1LC44NDExOCwuOTIyNzQsLjg0MTE4LC45MjI3NCwuODQxMTgsLjkyMjc0LC44NjY3LC44NjI5MSwuNzUxODYsMS4wMjkzMywxLDEsLjc1MTg2LDEuMDI5MzMsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwxLDEsLjc5Nzc2LC45NzY1NSwuNzk3NzYsMS4yMzAyMywuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywuNzMwNiwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwxLjA5MjMxLC41NDg3MywuODY3NSwuOTI0NSwuNzYzMTgsLjg0ODQzLC44NDU1NywuODY2NTEsMSwxLC43OTc3NiwxLjIwNTYyLDEuMTg2MjIsMS4xODYyMiwxLDEuMTQzNywuNjcwMDksLjk2MzM0LC45MzY5NSwxLjM1MTkxLDEuNDA5MDksLjk1MTYxLDEuNDgzODcsLjg2NzUsLjkwODYxLC42MTkyLC43MzYzLC42NDgyNCwuODI0MTEsLjU2MzIxLC44NTY5NiwxLjIzNTE2LC44Njc1LC44MTU1MiwuNzI4NiwuODQxMzQsLjczMjA2LC43NjY1OSwuODYyNzUsLjg0MzY5LC45MDY4NSwuNzc4OTIsLjg1ODcxLDEuMDI2MzgsLjg5MjQ5LC43NTgyOCwuODQxMTgsLjg1OTg0LC43NzQ1MiwuNzY0NjYsLjc5Nzc2LC43MzA2LC45MDc4MiwuNzc4MTgsLjkwMywuODcyOTEsLjkwNjg1LC43MzA2LC45OTA1OCwxLjAzNjY3LC45NDYzNSwxLjIzNTE2LC45ODQ5LC45OTA1OCwuOTIzOTMsLjg5MTYsLjk0MiwxLjAzNjY3LC43NTAyNiwuOTQ2MzUsMS4wMjk3LDEuMjM1MTYsLjkwOTE4LC45NDA0OCwuOTgyMTcsLjg5NzQ2LC44NDE1MywuOTIyNzQsLjgyNTA3LC44ODgzMiwuODQ0MzgsLjg4MTc4LDEuMDM1MjUsLjk4NDksMS4wMDIyNSwuNzgwODYsLjk3MjQ4LC44OTQwNCwxLjIzNTE2LC45ODQ5LC45MjI3NCwuOTg0OSwuODk0MDQsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTY5MywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODU4NjUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwOTMzLDEsMSwxLDEsMSwxLC45NDMwOSwuOTg5ODYsLjk0MzA5LC45ODk4NiwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjg5OTQsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45Nzg1OCwuODI2MTYsLjkxMTMzLC44MzQzNywuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDU3MiwxLjgxMDU1LC45MDc0OSwxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1Mjg0LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx5cz17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30scXM9WzEuMzg3NywxLDEsMSwxLjE3MjIzLDEuMTI5MywuODk1NTIsLjkxMTMzLC44MDM5NSwxLjAyMjY5LDEuMTU2MDEsLjkxMDU2LC45MTA1NiwxLjI3OTgsLjg1Mjg0LC44OTgwNywxLC45MDg2MSwxLjM5MDE2LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTYzMDksLjk2MzA5LC44NTI4NCwuODUyODQsLjg1Mjg0LC44MzMxOSwuODgwNzEsLjg2NzUsLjgxNTUyLC43MzgzNCwuODUxOTMsLjczMjA2LC43NTIyLC44MTEwNSwuODYyNzUsLjkwNjg1LC42Mzc3LC43Nzg5MiwuNzU1OTMsMS4wMjYzOCwuODkzODUsLjg1MTIyLC43NzQ1MiwuODY1MDMsLjc1MTg2LC42ODg4NywuNzk3NzYsLjg4ODQ0LC44NTA2NiwuOTQyNTgsLjc3ODE4LC43MzA2LC43NjY1OSwxLjEwMzY5LDEuMzkwMTYsMS4xMDM2OSwxLjA2MTM5LC44OTU1MiwuODczOSwuODYxMjgsLjk0NDY5LC44NDU3LC45NDQ2OSwuODk0NjQsMS4wOTg0MiwuODQ2MzYsLjk0NDY5LDEuMDMyOTcsMS4wNzY5MiwuOTA5MTgsMS4wMzI5NywuOTU4OTcsLjk0NDY5LC45NDgyLC45NDQ2OSwuOTQ0NjksMS4wNDY5MiwuNzgyMjMsMS4yMDU2MiwuOTQ0NjksLjkwMzMyLC45ODk4NiwuODY2MjEsLjkwNTI3LC43OTAwNCwuOTQxNTIsMS43NzI1NiwuOTQxNTIsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS45MTcyOSwuODk1NTIsMS4xNzg4OSwxLjEzMjU0LDEuMDg3MDcsLjkyMDk4LC44NTI4NCwuNjg3ODcsLjcxMzUzLC44NDczNywuOTA3NDcsMS4wMDg4LDEuMDA0NCwuODc2ODMsMSwxLjA5MDkxLDEsLjkyMjI5LC43MzksMS4xNTY0MiwuOTIwOTgsLjc2Mjg4LC44MDUwNCwuODA5NzIsLjc1ODU5LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC43NjMxOCwuNzM4MzQsLjczMjA2LC43MzIwNiwuNzMyMDYsLjczMjA2LC45MDY4NSwuOTA2ODUsLjkwNjg1LC45MDY4NSwuODY0NzcsLjg5Mzg1LC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1Mjg0LC44NTMxMSwuODg4NDQsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjczMDYsLjc3NDUyLC44NjMzMSwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODY5MywuODQ1NywuODk0NjQsLjg5NDY0LC44OTQ2NCwuODk0NjQsLjgyNjAxLC44MjYwMSwuODI2MDEsLjgyNjAxLC45NDQ2OSwuOTQ0NjksLjk0ODIsLjk0ODIsLjk0ODIsLjk0ODIsLjk0ODIsLjkwNzQ3LC44NjY1MSwuOTQ0NjksLjk0NDY5LC45NDQ2OSwuOTQ0NjksLjkwNTI3LC45NDQ2OSwuOTA1MjcsLjg2NzUsLjg2MTI4LC44Njc1LC44NjEyOCwuODY3NSwuODYxMjgsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC44NTE5MywuOTI0NTQsLjg2NDc3LC45OTIxLC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuODExMDUsLjg0NjM2LC44MTEwNSwuODQ2MzYsLjgxMTA1LC44NDYzNiwxLDEsLjg2Mjc1LC45NDQ2OSwuOTA4NzIsLjk1Nzg2LC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwxLjAzMjk3LC45MDY4NSwuODI2MDEsLjc3NzQxLDEuMDU2MTEsLjYzNzcsMS4wNzY5MiwxLDEsLjkwOTE4LC43NTU5MywxLjAzMjk3LDEsMSwuNzYwMzIsLjkwNDUyLC45ODE1NiwxLjExODQyLC43NzI2MSwxLjExNDI5LC44OTM4NSwuOTQ0NjksMSwxLC44OTM4NSwuOTQ0NjksLjk1ODc3LC44NjkwMSwuOTQ0NjksLjg1MTIyLC45NDgyLC44NTEyMiwuOTQ4MiwuODUxMjIsLjk0ODIsLjg2NjcsLjkwMDE2LC43NTE4NiwxLjA0NjkyLDEsMSwuNzUxODYsMS4wNDY5MiwuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLDEsMSwuNzk3NzYsLjkyMTg4LC43OTc3NiwxLjIzMDIzLC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC45NDI1OCwuOTg5ODYsLjczMDYsLjkwNTI3LC43MzA2LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LDEuMDkyMzEsLjU0ODczLC44Njc1LC44NjEyOCwuNzYzMTgsLjg2OTMsLjg1MzExLC44NjY1MSwxLDEsLjc5Nzc2LDEuMjA1NjIsMS4xODYyMiwxLjE4NjIyLDEsMS4xNDM3LC42Nzc0MiwuOTYzMzQsLjkzNjk1LDEuMzUxOTEsMS40MDkwOSwuOTUxNjEsMS40ODM4NywuODY2ODYsLjkwODYxLC42MjI2NywuNzQzNTksLjY1NjQ5LC44NTQ5OCwuNTY5NjMsLjg4MjU0LDEuMjM1MTYsLjg2NzUsLjgxNTUyLC43NTQ0MywuODQ1MDMsLjczMjA2LC43NjY1OSwuODYyNzUsLjg1MTIyLC45MDY4NSwuNzc4OTIsLjg1NzQ2LDEuMDI2MzgsLjg5Mzg1LC43NTY1NywuODUxMjIsLjg2Mjc1LC43NzQ1MiwuNzQxNzEsLjc5Nzc2LC43MzA2LC45NTE2NSwuNzc4MTgsLjg5NzcyLC44ODgzMSwuOTA2ODUsLjczMDYsLjk4MTQyLDEuMDIxOTEsLjk2NTc2LDEuMjM1MTYsLjk5MDE4LC45ODE0MiwuOTIzNiwuODkyNTgsLjk0MDM1LDEuMDIxOTEsLjc4ODQ4LC45NjU3NiwuOTU2MSwxLjIzNTE2LC45MDkxOCwuOTI1NzgsLjk1NDI0LC44OTc0NiwuODM5NjksLjk0ODIsLjgwMTEzLC44OTQ0MiwuODUyMDgsLjg2MTU1LC45ODAyMiwuOTkwMTgsMS4wMDQ1MiwuODEyMDksLjk5MjQ3LC44OTE4MSwxLjIzNTE2LC45OTAxOCwuOTQ4MiwuOTkwMTgsLjg5MTgxLC43MzIwNiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODg4NDQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg5NDY0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45Njc2NiwxLDEsMSwxLDEsMSwuOTQyNTgsLjk4OTg2LC45NDI1OCwuOTg5ODYsLjk0MjU4LC45ODk4NiwuNzMwNiwuOTA1MjcsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAxODYsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjI1NjYsMS4yNTY2LDEuMjU2NiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjY5MDQzLDEuMDM4MDksMSwxLDEuMDE3NiwxLjAxNzYsMS4xMTUyMywxLjQ5NTYsMi4wMTQ2MiwuOTkzMzEsLjgyNjE2LC45MTEzMywuODQyODYsLjkxMTMzLDEsMSwxLC43MDUwOCwxLDEuMjMxMDgsLjc5ODAxLC44NDQyNiwuODQ0MjYsLjc3NCwuOTA1MjcsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjI4ODA5LDEuNTU0NjksLjk0NDM0LDEuMDc4MDYsMSwuOTcwOTQsLjc1ODksLjg1Mjg0LC45MDc0NywxLjE5NjU4LC42OTgyNSwuOTc2MjIsMS4zMzUxMiwuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDMzNiwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDU4NTksMS4wNTg1OSwxLDEsMSwxLjA3MTg1LC45OTQxMywuOTYzMzQsMS4wODA2NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHZzPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fSxTcz1bLjc2MTE2LDEsMSwxLjAwMDYsLjk5OTk4LC45OTk3NCwuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzcsMS4wMDA4NywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsMS4wMDAyNiwuOTk5OSwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwuOTk5NzMsLjk5OTc3LDEuMDAwMjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTk4LDEuMDAwNiwuOTk5OTgsMS4wMDAwMywuOTk5NzMsLjk5OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5OTgsMS4wMDAyNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsLjk5OTczLDEuMDAwNiwuOTk5ODIsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NTksLjk5OTczLC45OTk5OCwxLjAwMDI2LC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzMsMSwuOTk5NTksMS4wMDA3NywuOTk5NTksMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNzcsLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk3MywxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wNjQwOSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LDEuMDMzNzQsLjk5OTc3LDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDQyLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3NywuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMzgyOCwxLjAwMDI2LC45OTk5OSwxLjAwMDI2LDEuMDAwNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5MywuOTk5OCwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEsMS4wMDAxNiwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwxLjAwMDI2LC44MTIxLDEuMDAwMjYsLjk5OTk4LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwNiwuOTk5NzMsLjk5OTc3LC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEuMDAwMzQsLjk5OTc3LDEsLjk5OTk3LDEuMDAwMjYsMS4wMDA3OCwxLjAwMDM2LC45OTk3MywxLjAwMDEzLDEuMDAwNiwuOTk5NzcsLjk5OTc3LC45OTk4OCwuODUxNDgsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwuOTk5NzcsMS4wMDAwMSwuOTk5OTksLjk5OTc3LDEuMDAwNjksMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwuOTk5ODQsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMjQsMS4wMDAwMSwuOTk5OSwxLDEuMDAwNiwxLjAwMDAxLDEuMDAwNDEsLjk5OTYyLDEuMDAwMjYsMS4wMDA2LC45OTk5NSwxLjAwMDQxLC45OTk0MiwuOTk5NzMsLjk5OTI3LDEuMDAwODIsLjk5OTAyLDEuMDAwMjYsMS4wMDA4NywxLjAwMDYsMS4wMDA2OSwuOTk5NzMsLjk5ODY3LC45OTk3MywuOTk5MywxLjAwMDI2LDEuMDAwNDksMS4wMDA1NiwxLC45OTk4OCwuOTk5MzUsLjk5OTk1LC45OTk1NCwxLjAwMDU1LC45OTk0NSwxLjAwMDMyLDEuMDAwNiwuOTk5OTUsMS4wMDAyNiwuOTk5OTUsMS4wMDAzMiwxLjAwMDAxLDEuMDAwMDgsLjk5OTcxLDEuMDAwMTksLjk5OTQsMS4wMDAwMSwxLjAwMDYsMS4wMDA0NCwuOTk5NzMsMS4wMDAyMywxLjAwMDQ3LDEsLjk5OTQyLC45OTU2MSwuOTk5ODksMS4wMDAzNSwuOTk5NzcsMS4wMDAzNSwuOTk5NzcsMS4wMDAxOSwuOTk5NDQsMS4wMDAwMSwxLjAwMDIxLC45OTkyNiwxLjAwMDM1LDEuMDAwMzUsLjk5OTQyLDEuMDAwNDgsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMzUsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5ODksMS4wMDA1NywxLjAwMDAxLC45OTkzNiwxLjAwMDUyLDEuMDAwMTIsLjk5OTk2LDEuMDAwNDMsMSwxLjAwMDM1LC45OTk0LC45OTk3NiwxLjAwMDM1LC45OTk3MywxLjAwMDUyLDEuMDAwNDEsMS4wMDExOSwxLjAwMDM3LC45OTk3MywxLjAwMDAyLC45OTk4NiwxLjAwMDQxLDEuMDAwNDEsLjk5OTAyLC45OTk2LDEuMDAwMzQsLjk5OTk5LDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsLjk5OTczLDEuMDAwNTIsLjk5OTczLDEsLjk5OTczLDEuMDAwNDEsMS4wMDA3NSwuOTk5NCwxLjAwMDMsLjk5OTk5LDEsMS4wMDA0MSwuOTk5NTUsMSwuOTk5MTUsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAxMTksLjk5OTU1LC45OTk3MywxLjAwMDYsLjk5OTExLDEuMDAwNiwxLjAwMDI2LC45OTk3MiwxLjAwMDI2LC45OTkwMiwxLjAwMDQxLC45OTk3MywuOTk5OTksMSwxLDEuMDAwMzgsMS4wMDA1LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMSwxLDEsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAxMDYsLjk5OTk5LC45OTk5OCwuOTk5OTgsLjk5OTk5LC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywuOTk5NzEsMS4wMDA0NywxLjAwMDIzLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEsMSwxLDEsMSwxLDEsLjk5OTcyLDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDE1LDEsLjk5NTYxLDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MiwuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLEFzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSx4cz1bLjc2MTE2LDEsMSwxLjAwMDYsLjk5OTk4LC45OTk3NCwuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzcsMS4wMDA4NywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsMS4wMDAyNiwuOTk5OSwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwuOTk5NzMsLjk5OTc3LDEuMDAwMjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTk4LDEuMDAwNiwuOTk5OTgsMS4wMDAwMywuOTk5NzMsLjk5OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5OTgsMS4wMDAyNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsLjk5OTczLDEuMDAwNiwuOTk5ODIsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NTksLjk5OTczLC45OTk5OCwxLjAwMDI2LC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzMsMSwuOTk5NTksMS4wMDA3NywuOTk5NTksMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNzcsLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk3MywxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wNjQwOSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LDEuMDA0NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDEwMTEsMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwxLjAwMDYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTMsLjk5OTgsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLDEuMDAwMTYsLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsMS4wMDAyNiwuODEyMSwxLjAwMDI2LC45OTk5OCwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDYsLjk5OTczLC45OTk3NywuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTc3LDEsMSwxLjAwMDI2LC45OTk2OSwuOTk5NzIsLjk5OTgxLC45OTk4LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsLjkxMTU1LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsLjk5OTc3LDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5NjYsMS4wMDAyMiwxLjAwMDMyLDEuMDAwMDEsLjk5OTQ0LDEuMDAwMjYsMS4wMDAwMSwuOTk5NjgsMS4wMDAwMSwxLjAwMDQ3LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTgxLDEuMDAxMDEsMS4wMDAyNiwxLjAwMDYsLjk5OTQ4LC45OTk4MSwxLjAwMDY0LC45OTk3MywuOTk5NDIsMS4wMDEwMSwxLjAwMDYxLDEuMDAwMjYsMS4wMDA2OSwxLjAwMDYsMS4wMDAxNCwuOTk5NzMsMS4wMTMyMiwuOTk5NzMsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMTIsLjk5OTIzLDEsMS4wMDA2NCwxLjAwMDc2LC45OTk0OCwxLjAwMDU1LDEuMDAwNjMsMS4wMDAwNywuOTk5NDMsMS4wMDA2LC45OTk0OCwxLjAwMDI2LC45OTk0OCwuOTk5NDMsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjksMS4wMDAzOCwxLjAwMDM1LDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTc4LDEuMDAwMDEsMS4wMDA1NywuOTk5ODksLjk5OTY3LC45OTk2NCwuOTk5NjcsLjk5OTc3LC45OTk5OSwuOTk5NzcsMS4wMDAzOCwuOTk5NzcsMS4wMDAwMSwuOTk5NzMsMS4wMDA2NiwuOTk5NjcsLjk5OTY3LDEuMDAwNDEsLjk5OTk4LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwuOTk5NjcsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NjQsMS4wMDAzMSwxLjAwMDAxLC45OTk5OSwuOTk5OTksMSwxLjAwMDIzLDEsMSwuOTk5OTksMS4wMDAzNSwxLjAwMDAxLC45OTk5OSwuOTk5NzMsLjk5OTc3LC45OTk5OSwxLjAwMDU4LC45OTk3MywuOTk5NzMsLjk5OTU1LC45OTk1LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDMyLC45OTk4OSwxLjAwMDM0LC45OTk5OSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsLjQ1OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDAxLC45OTk5OSwuOTk5ODIsLjk5OTk0LC45OTk5NiwxLDEuMDAwNDIsMS4wMDA0NCwxLjAwMDI5LDEuMDAwMjMsLjk5OTczLC45OTk3MywxLjAwMDI2LC45OTk0OSwxLjAwMDAyLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzUsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMzIsLjk4Njg1LC45OTk3MywxLjAwMDI2LDEsMSwuOTk5NjYsMS4wMDA0NCwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLDEsLjk5OTczLDEsMSwuOTk5NTUsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEsMSwxLC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMTA2LC45OTk5OSwuOTk5OTgsLjk5OTk4LC45OTk5OSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTcxLC45OTk3OCwxLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwOTgsMSwxLDEsMS4wMDA0OSwxLDEsLjk5OTcyLDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDE1LDEsLjk5NTYxLDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MiwuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLENzPXtsaW5lSGVpZ2h0OjEuMzUsbGluZUdhcDouMn0sSXM9Wy43NjExNiwxLDEsMS4wMDA2LDEuMDAwNiwxLjAwMDA2LC45OTk3MywuOTk5NzMsLjk5OTgyLDEuMDAwMDEsMS4wMDA0MywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsLjk5OTczLC45OTk4NywxLjAwMDAxLDEuMDAwMDEsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LDEsMS4wMDAwMSwuOTk5NzMsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTQ5LC45OTk3MywuOTk5OTgsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTI0LC45OTkyNCwxLC45OTkyNCwuOTk5OTksLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwNiwuOTk5NzMsMSwuOTk5NzcsMSwxLDEsMS4wMDAwNSwxLjAwMDksMS4wMDAwNSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA5LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5OCwxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLDEsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wNjQwOSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLC45OTk3MywxLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLjAyODgsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LC45OTk0NiwxLjAwMDM0LDEsLjk5OTI0LDEuMDAwMDEsMSwxLC45OTk3MywuOTk5MjQsLjk5OTczLC45OTkyNCwuOTk5NzMsMS4wNjMxMSwuOTk5NzMsMS4wMDAyNCwuOTk5NzMsLjk5OTI0LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwNDEsLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODk1NDcsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAwMSwxLDEuMDAwNTQsLjk5OTc3LDEuMDAwODQsMS4wMDAwNywuOTk5NzMsMS4wMDAxMywuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLC45OTk0NSwuOTEyMjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5MzMsMS4wMDAyMiwxLjAwMDU0LDEuMDAwMDEsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMDEsMS4wMDAxLDEuMDAwMDEsMS4wMDA1MiwxLDEuMDAwNiwxLjAwMDAxLC45OTk0NSwuOTk4OTcsLjk5OTY4LC45OTkyNCwxLjAwMDM2LC45OTk0NSwuOTk5NDksMSwxLjAwMDYsLjk5ODk3LC45OTkxOCwuOTk5NjgsLjk5OTExLC45OTkyNCwxLC45OTk2MiwxLjAxNDg3LDEsMS4wMDA1LC45OTk3MywxLjAwMDEyLDEuMDAwNDMsMSwuOTk5OTUsLjk5OTk0LDEuMDAwMzYsLjk5OTQ3LDEuMDAwMTksMS4wMDA2MywxLjAwMDI1LC45OTkyNCwxLjAwMDM2LC45OTk3MywxLjAwMDM2LDEuMDAwMjUsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjcsMS4wMDAxLDEuMDAwNjgsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsMS4wMDAwOCwuOTk5NTcsLjk5OTcyLC45OTk0LC45OTk1NCwuOTk5NzUsMS4wMDA1MSwxLjAwMDAxLDEuMDAwMTksMS4wMDAwMSwxLjAwMDEsLjk5OTg2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDM4LC45OTk1NCwuOTk5NTQsLjk5OTQsMS4wMDA2NiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDA1NCwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk3NSwxLjAwMDEsMS4wMDAwMSwuOTk5OTMsLjk5OTUsLjk5OTU1LDEuMDAwMTYsLjk5OTc4LC45OTk3NCwxLjAwMDE5LDEuMDAwMjIsLjk5OTU1LDEuMDAwNTMsLjk5OTczLDEuMDAwODksMS4wMDAwNSwuOTk5NjcsMS4wMDA0OCwuOTk5NzMsMS4wMDAwMiwxLjAwMDM0LC45OTk3MywuOTk5NzMsLjk5OTY0LDEuMDAwMDYsMS4wMDA2NiwuOTk5NDcsLjk5OTczLC45ODg5NCwuOTk5NzMsMSwuNDQ4OTgsMSwuOTk5NDYsMSwxLjAwMDM5LDEuMDAwODIsLjk5OTkxLC45OTk5MSwuOTk5ODUsMS4wMDAyMiwxLjAwMDIzLDEuMDAwNjEsMS4wMDAwNiwuOTk5NjYsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDAxOSwxLjAwMDgsMSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5ODMsMS4wMDA0NCwuOTk5NzMsLjk5OTY0LC45ODMzMiwxLC45OTk3MywxLDEsLjk5OTYyLC45OTg5NSwxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMSwxLC45OTk3MywxLDEsLjk5OTU1LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDI2NywuOTk5OTksLjk5OTk4LC45OTk5OCwxLC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywxLjAwNDIzLC45OTkyNSwuOTk5OTksMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDA0OSwxLDEuMDAyNDUsMSwxLDEsMSwuOTYzMjksMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywuODI1NCwxLjAwMDE1LDEsMS4wMDAzNSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwxLjAwMDAzLDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk1MzE3LC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sRnM9e2xpbmVIZWlnaHQ6MS4zNSxsaW5lR2FwOi4yfSxUcz1bLjc2MTE2LDEsMSwxLjAwMDYsMS4wMDA2LDEuMDAwMDYsLjk5OTczLC45OTk3MywuOTk5ODIsMS4wMDAwMSwxLjAwMDQzLC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywuOTk5NzMsLjk5OTg3LDEuMDAwMDEsMS4wMDAwMSwuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsMSwxLjAwMDAxLC45OTk3MywuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NDksLjk5OTczLC45OTk5OCwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5MjQsLjk5OTI0LDEsLjk5OTI0LC45OTk5OSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDA2LC45OTk3MywxLC45OTk3NywxLDEsMSwxLjAwMDA1LDEuMDAwOSwxLjAwMDA1LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDksLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk4LDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsMSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjA2NDA5LDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEsLjk5OTczLDEsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEuMDQ1OTYsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LDEuMDAwMTksMS4wMDAzNCwxLC45OTkyNCwxLjAwMDAxLDEsMSwuOTk5NzMsLjk5OTI0LC45OTk3MywuOTk5MjQsLjk5OTczLDEuMDI1NzIsLjk5OTczLDEuMDAwMDUsLjk5OTczLC45OTkyNCwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5OTksLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODQ1MzMsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTI4LDEsLjk5OTc3LDEuMDAwMTMsMS4wMDA1NSwuOTk5NDcsLjk5OTQ1LC45OTk0MSwuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNCwuOTE2MjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDUsLjk5OTk5LC45OTk3NywxLjAwMDE1LDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDE5LDEuMDAwMDEsLjk5OTQ2LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTc4LDEuMDAwNDUsLjk5OTczLC45OTkyNCwxLjAwMDIzLC45OTk3OCwuOTk5NjYsMSwxLjAwMDY1LDEuMDAwNDUsMS4wMDAxOSwuOTk5NzMsLjk5OTczLC45OTkyNCwxLDEsLjk2NDk5LDEsMS4wMDA1NSwuOTk5NzMsMS4wMDAwOCwxLjAwMDI3LDEsLjk5OTcsLjk5OTk1LDEuMDAwMjMsLjk5OTMzLDEuMDAwMTksMS4wMDAxNSwxLjAwMDMxLC45OTkyNCwxLjAwMDIzLC45OTk3MywxLjAwMDIzLDEuMDAwMzEsMS4wMDAwMSwuOTk5MjgsMS4wMDAyOSwxLjAwMDkyLDEuMDAwMzUsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsLjk5OTg4LC45OTk3NSwxLDEuMDAwODIsLjk5NTYxLC45OTk2LDEuMDAwMzUsMS4wMDAwMSwuOTk5NjIsMS4wMDAwMSwxLjAwMDkyLC45OTk2NCwxLjAwMDAxLC45OTk2MywuOTk5OTksMS4wMDAzNSwxLjAwMDM1LDEuMDAwODIsLjk5OTYyLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDM1LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTYsLjk5OTY3LDEuMDAwMDEsMS4wMDAzNCwxLjAwMDc0LDEuMDAwNTQsMS4wMDA1MywxLjAwMDYzLC45OTk3MSwuOTk5NjIsMS4wMDAzNSwuOTk5NzUsLjk5OTc3LC45OTk3MywxLjAwMDQzLC45OTk1MywxLjAwMDcsLjk5OTE1LC45OTk3MywxLjAwMDA4LC45OTg5MiwxLjAwMDczLDEuMDAwNzMsMS4wMDExNCwuOTk5MTUsMS4wMDA3MywuOTk5NTUsLjk5OTczLDEuMDAwOTIsLjk5OTczLDEsLjk5OTk4LDEsMS4wMDAzLDEsMS4wMDA0MywxLjAwMDAxLC45OTk2OSwxLjAwMDMsMSwxLjAwMDM1LDEuMDAwMDEsLjk5OTUsMSwxLjAwMDkyLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNywuOTk5NSwxLC45OTkyNCwxLjAwMDYsLjk5OTI0LC45OTk3MiwxLjAwMDYyLC45OTk3MywxLjAwMTE0LDEuMDAwNzMsMSwuOTk5NTUsMSwxLDEuMDAwNDcsLjk5OTY4LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLDEsLjk5OTczLDEsMSwuOTk5NTUsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMjY3LC45OTk5OSwuOTk5OTgsLjk5OTk4LDEsLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwuOTk5MjUsMS4wMDAyMywxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLDEsMSwxLDEsMSwxLC45NjMyOSwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLC44MjU0LDEuMDAwMTUsMSwxLjAwMDM1LDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45NTMxNywuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxScz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sT3M9WzM2NSwwLDMzMywyNzgsMzMzLDQ3NCw1NTYsNTU2LDg4OSw3MjIsMjM4LDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDMzMywzMzMsNTg0LDU4NCw1ODQsNjExLDk3NSw3MjIsNzIyLDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1NTYsNzIyLDYxMSw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDMzMywyNzgsMzMzLDU4NCw1NTYsMzMzLDU1Niw2MTEsNTU2LDYxMSw1NTYsMzMzLDYxMSw2MTEsMjc4LDI3OCw1NTYsMjc4LDg4OSw2MTEsNjExLDYxMSw2MTEsMzg5LDU1NiwzMzMsNjExLDU1Niw3NzgsNTU2LDU1Niw1MDAsMzg5LDI4MCwzODksNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjgwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTU2LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDcyMiw3MjIsNzIyLDcyMiw3MjIsNzIyLDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw1NDksNjExLDYxMSw2MTEsNjExLDYxMSw1NTYsNjExLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw3MTksNzIyLDYxMSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3MjIsNjExLDcyMiw2MTEsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDc4NSw1NTYsNTU2LDI3OCw3MjIsNTU2LDU1Niw2MTEsMjc4LDYxMSwyNzgsNjExLDM4NSw2MTEsNDc5LDYxMSwyNzgsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzA4LDcyMyw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsMWUzLDk0NCw3MjIsMzg5LDcyMiwzODksNzIyLDM4OSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDYxMSwzMzMsNjExLDQ3OSw2MTEsMzMzLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDk0NCw3NzgsNjY3LDU1Niw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjc4LDU1Niw3MjIsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTU2LDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDQ2NSw3MjIsMzMzLDg1Myw5MDYsNDc0LDgyNSw5MjcsODM4LDI3OCw3MjIsNzIyLDYwMSw3MTksNjY3LDYxMSw3MjIsNzc4LDI3OCw3MjIsNjY3LDgzMyw3MjIsNjQ0LDc3OCw3MjIsNjY3LDYwMCw2MTEsNjY3LDgyMSw2NjcsODA5LDgwMiwyNzgsNjY3LDYxNSw0NTEsNjExLDI3OCw1ODIsNjE1LDYxMCw1NTYsNjA2LDQ3NSw0NjAsNjExLDU0MSwyNzgsNTU4LDU1Niw2MTIsNTU2LDQ0NSw2MTEsNzY2LDYxOSw1MjAsNjg0LDQ0Niw1ODIsNzE1LDU3Niw3NTMsODQ1LDI3OCw1ODIsNjExLDU4Miw4NDUsNjY3LDY2OSw4ODUsNTY3LDcxMSw2NjcsMjc4LDI3Niw1NTYsMTA5NCwxMDYyLDg3NSw2MTAsNzIyLDYyMiw3MTksNzIyLDcxOSw3MjIsNTY3LDcxMiw2NjcsOTA0LDYyNiw3MTksNzE5LDYxMCw3MDIsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDYyMiw4NTQsNjY3LDczMCw3MDMsMTAwNSwxMDE5LDg3MCw5NzksNzE5LDcxMSwxMDMxLDcxOSw1NTYsNjE4LDYxNSw0MTcsNjM1LDU1Niw3MDksNDk3LDYxNSw2MTUsNTAwLDYzNSw3NDAsNjA0LDYxMSw2MDQsNjExLDU1Niw0OTAsNTU2LDg3NSw1NTYsNjE1LDU4MSw4MzMsODQ0LDcyOSw4NTQsNjE1LDU1Miw4NTQsNTgzLDU1Niw1NTYsNjExLDQxNyw1NTIsNTU2LDI3OCwyODEsMjc4LDk2OSw5MDYsNjExLDUwMCw2MTUsNTU2LDYwNCw3NzgsNjExLDQ4Nyw0NDcsOTQ0LDc3OCw5NDQsNzc4LDk0NCw3NzgsNjY3LDU1NiwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyNzgsMjc4LDI3OCwyNzgsNTAwLDUwMCw1MDAsNTU2LDU1NiwzNTAsMWUzLDFlMywyNDAsNDc5LDMzMywzMzMsNjA0LDMzMywxNjcsMzk2LDU1Niw1NTYsMTA5NCw1NTYsODg1LDQ4OSwxMTE1LDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MjIsMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNjExLDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzM10sQnM9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLERzPVszNjUsMCwzMzMsMjc4LDMzMyw0NzQsNTU2LDU1Niw4ODksNzIyLDIzOCwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwzMzMsMzMzLDU4NCw1ODQsNTg0LDYxMSw5NzUsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTU2LDcyMiw2MTEsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwzMzMsMjc4LDMzMyw1ODQsNTU2LDMzMyw1NTYsNjExLDU1Niw2MTEsNTU2LDMzMyw2MTEsNjExLDI3OCwyNzgsNTU2LDI3OCw4ODksNjExLDYxMSw2MTEsNjExLDM4OSw1NTYsMzMzLDYxMSw1NTYsNzc4LDU1Niw1NTYsNTAwLDM4OSwyODAsMzg5LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI4MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDU1NiwyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw3MjIsNzIyLDcyMiw3MjIsNzIyLDcyMiwxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNTQ5LDYxMSw2MTEsNjExLDYxMSw2MTEsNTU2LDYxMSw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNzQwLDcyMiw2MTEsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzIyLDYxMSw3MjIsNjExLDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCw3ODIsNTU2LDU1NiwyNzgsNzIyLDU1Niw1NTYsNjExLDI3OCw2MTEsMjc4LDYxMSwzOTYsNjExLDQ3OSw2MTEsMjc4LDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcwOCw3MjMsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDFlMyw5NDQsNzIyLDM4OSw3MjIsMzg5LDcyMiwzODksNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2MTEsMzMzLDYxMSw0NzksNjExLDMzMyw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw5NDQsNzc4LDY2Nyw1NTYsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDI3OCw1NTYsNzIyLDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDU1Niw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNzIyLDMzMyw4NTQsOTA2LDQ3Myw4NDQsOTMwLDg0NywyNzgsNzIyLDcyMiw2MTAsNjcxLDY2Nyw2MTEsNzIyLDc3OCwyNzgsNzIyLDY2Nyw4MzMsNzIyLDY1Nyw3NzgsNzE4LDY2Nyw1OTAsNjExLDY2Nyw4MjIsNjY3LDgyOSw3ODEsMjc4LDY2Nyw2MjAsNDc5LDYxMSwyNzgsNTkxLDYyMCw2MjEsNTU2LDYxMCw0NzksNDkyLDYxMSw1NTgsMjc4LDU2Niw1NTYsNjAzLDU1Niw0NTAsNjExLDcxMiw2MDUsNTMyLDY2NCw0MDksNTkxLDcwNCw1NzgsNzczLDgzNCwyNzgsNTkxLDYxMSw1OTEsODM0LDY2Nyw2NjcsODg2LDYxNCw3MTksNjY3LDI3OCwyNzgsNTU2LDEwOTQsMTA0Miw4NTQsNjIyLDcxOSw2NzcsNzE5LDcyMiw3MDgsNzIyLDYxNCw3MjIsNjY3LDkyNyw2NDMsNzE5LDcxOSw2MTUsNjg3LDgzMyw3MjIsNzc4LDcxOSw2NjcsNzIyLDYxMSw2NzcsNzgxLDY2Nyw3MjksNzA4LDk3OSw5ODksODU0LDFlMyw3MDgsNzE5LDEwNDIsNzI5LDU1Niw2MTksNjA0LDUzNCw2MTgsNTU2LDczNiw1MTAsNjExLDYxMSw1MDcsNjIyLDc0MCw2MDQsNjExLDYxMSw2MTEsNTU2LDg4OSw1NTYsODg1LDU1Niw2NDYsNTgzLDg4OSw5MzUsNzA3LDg1NCw1OTQsNTUyLDg2NSw1ODksNTU2LDU1Niw2MTEsNDY5LDU2Myw1NTYsMjc4LDI3OCwyNzgsOTY5LDkwNiw2MTEsNTA3LDYxOSw1NTYsNjExLDc3OCw2MTEsNTc1LDQ2Nyw5NDQsNzc4LDk0NCw3NzgsOTQ0LDc3OCw2NjcsNTU2LDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDI3OCwyNzgsMjc4LDI3OCw1MDAsNTAwLDUwMCw1NTYsNTU2LDM1MCwxZTMsMWUzLDI0MCw0NzksMzMzLDMzMyw2MDQsMzMzLDE2NywzOTYsNTU2LDU1NiwxMTA0LDU1Niw4ODUsNTE2LDExNDYsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDk5OSw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcyMiwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw2MTEsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzXSxIcz1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV0sTXM9WzM2NSwwLDMzMywyNzgsMjc4LDM1NSw1NTYsNTU2LDg4OSw2NjcsMTkxLDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsNTg0LDU4NCw1ODQsNTU2LDEwMTUsNjY3LDY2Nyw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTAwLDY2Nyw1NTYsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwyNzgsMjc4LDI3OCw0NjksNTU2LDMzMyw1NTYsNTU2LDUwMCw1NTYsNTU2LDI3OCw1NTYsNTU2LDIyMiwyMjIsNTAwLDIyMiw4MzMsNTU2LDU1Niw1NTYsNTU2LDMzMyw1MDAsMjc4LDU1Niw1MDAsNzIyLDUwMCw1MDAsNTAwLDMzNCwyNjAsMzM0LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI2MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDUzNywyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw2NjcsNjY3LDY2Nyw2NjcsNjY3LDY2NywxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1MDAsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTQ5LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTAwLDU1Niw1MDAsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNjI1LDcyMiw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzIyLDU1Niw3MjIsNTU2LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyMjIsMjc4LDI3OCw3MzMsNDQ0LDUwMCwyMjIsNjY3LDUwMCw1MDAsNTU2LDIyMiw1NTYsMjIyLDU1NiwyODEsNTU2LDQwMCw1NTYsMjIyLDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDYxNSw3MjMsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDFlMyw5NDQsNzIyLDMzMyw3MjIsMzMzLDcyMiwzMzMsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2MTEsMjc4LDYxMSwzNTQsNjExLDI3OCw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw5NDQsNzIyLDY2Nyw1MDAsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDIyMiw1NTYsNjY3LDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDUwMCw2MTEsMjc4LDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNjY3LDI3OCw3ODksODQ2LDM4OSw3OTQsODY1LDc3NSwyMjIsNjY3LDY2Nyw1NzAsNjcxLDY2Nyw2MTEsNzIyLDc3OCwyNzgsNjY3LDY2Nyw4MzMsNzIyLDY0OCw3NzgsNzI1LDY2Nyw2MDAsNjExLDY2Nyw4MzcsNjY3LDgzMSw3NjEsMjc4LDY2Nyw1NzAsNDM5LDU1NSwyMjIsNTUwLDU3MCw1NzEsNTAwLDU1Niw0MzksNDYzLDU1NSw1NDIsMjIyLDUwMCw0OTIsNTQ4LDUwMCw0NDcsNTU2LDY3MCw1NzMsNDg2LDYwMywzNzQsNTUwLDY1Miw1NDYsNzI4LDc3OSwyMjIsNTUwLDU1Niw1NTAsNzc5LDY2Nyw2NjcsODQzLDU0NCw3MDgsNjY3LDI3OCwyNzgsNTAwLDEwNjYsOTgyLDg0NCw1ODksNzE1LDYzOSw3MjQsNjY3LDY1MSw2NjcsNTQ0LDcwNCw2NjcsOTE3LDYxNCw3MTUsNzE1LDU4OSw2ODYsODMzLDcyMiw3NzgsNzI1LDY2Nyw3MjIsNjExLDYzOSw3OTUsNjY3LDcyNyw2NzMsOTIwLDkyMyw4MDUsODg2LDY1MSw2OTQsMTAyMiw2ODIsNTU2LDU2Miw1MjIsNDkzLDU1Myw1NTYsNjg4LDQ2NSw1NTYsNTU2LDQ3Miw1NjQsNjg2LDU1MCw1NTYsNTU2LDU1Niw1MDAsODMzLDUwMCw4MzUsNTAwLDU3Miw1MTgsODMwLDg1MSw2MjEsNzM2LDUyNiw0OTIsNzUyLDUzNCw1NTYsNTU2LDU1NiwzNzgsNDk2LDUwMCwyMjIsMjIyLDIyMiw5MTAsODI4LDU1Niw0NzIsNTY1LDUwMCw1NTYsNzc4LDU1Niw0OTIsMzM5LDk0NCw3MjIsOTQ0LDcyMiw5NDQsNzIyLDY2Nyw1MDAsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjIyLDIyMiwyMjIsMjIyLDMzMywzMzMsMzMzLDU1Niw1NTYsMzUwLDFlMywxZTMsMTg4LDM1NCwzMzMsMzMzLDUwMCwzMzMsMTY3LDM2NSw1NTYsNTU2LDEwOTQsNTU2LDg4NSwzMjMsMTA4MywxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsMWUzLDUwMCw5OTgsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzE5LDI3NCw1NDksNTQ5LDU4NCw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDUwMCw1MDAsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDI5NCwyOTQsMzI0LDMyNCwzMTYsMzI4LDM5OCwyODVdLE5zPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSxFcz1bMzY1LDAsMzMzLDI3OCwyNzgsMzU1LDU1Niw1NTYsODg5LDY2NywxOTEsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCw1ODQsNTg0LDU4NCw1NTYsMTAxNSw2NjcsNjY3LDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1MDAsNjY3LDU1Niw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDI3OCwyNzgsMjc4LDQ2OSw1NTYsMzMzLDU1Niw1NTYsNTAwLDU1Niw1NTYsMjc4LDU1Niw1NTYsMjIyLDIyMiw1MDAsMjIyLDgzMyw1NTYsNTU2LDU1Niw1NTYsMzMzLDUwMCwyNzgsNTU2LDUwMCw3MjIsNTAwLDUwMCw1MDAsMzM0LDI2MCwzMzQsNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjYwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTM3LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDY2Nyw2NjcsNjY3LDY2Nyw2NjcsNjY3LDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDUwMCw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NDksNjExLDU1Niw1NTYsNTU2LDU1Niw1MDAsNTU2LDUwMCw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw2MTUsNzIyLDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3MjIsNTU2LDcyMiw1NTYsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDIyMiwyNzgsMjc4LDczNSw0NDQsNTAwLDIyMiw2NjcsNTAwLDUwMCw1NTYsMjIyLDU1NiwyMjIsNTU2LDI5Miw1NTYsMzM0LDU1NiwyMjIsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNjA0LDcyMyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsMWUzLDk0NCw3MjIsMzMzLDcyMiwzMzMsNzIyLDMzMyw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDYxMSwyNzgsNjExLDM3NSw2MTEsMjc4LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDk0NCw3MjIsNjY3LDUwMCw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjIyLDU1Niw2NjcsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTAwLDYxMSwyNzgsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw2NjcsMjc4LDc4NCw4MzgsMzg0LDc3NCw4NTUsNzUyLDIyMiw2NjcsNjY3LDU1MSw2NjgsNjY3LDYxMSw3MjIsNzc4LDI3OCw2NjcsNjY4LDgzMyw3MjIsNjUwLDc3OCw3MjIsNjY3LDYxOCw2MTEsNjY3LDc5OCw2NjcsODM1LDc0OCwyNzgsNjY3LDU3OCw0NDYsNTU2LDIyMiw1NDcsNTc4LDU3NSw1MDAsNTU3LDQ0Niw0NDEsNTU2LDU1NiwyMjIsNTAwLDUwMCw1NzYsNTAwLDQ0OCw1NTYsNjkwLDU2OSw0ODIsNjE3LDM5NSw1NDcsNjQ4LDUyNSw3MTMsNzgxLDIyMiw1NDcsNTU2LDU0Nyw3ODEsNjY3LDY2Nyw4NjUsNTQyLDcxOSw2NjcsMjc4LDI3OCw1MDAsMTA1NywxMDEwLDg1NCw1ODMsNzIyLDYzNSw3MTksNjY3LDY1Niw2NjcsNTQyLDY3Nyw2NjcsOTIzLDYwNCw3MTksNzE5LDU4Myw2NTYsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDYzNSw3NjAsNjY3LDc0MCw2NjcsOTE3LDkzOCw3OTIsODg1LDY1Niw3MTksMTAxMCw3MjIsNTU2LDU3Myw1MzEsMzY1LDU4Myw1NTYsNjY5LDQ1OCw1NTksNTU5LDQzOCw1ODMsNjg4LDU1Miw1NTYsNTQyLDU1Niw1MDAsNDU4LDUwMCw4MjMsNTAwLDU3Myw1MjEsODAyLDgyMyw2MjUsNzE5LDUyMSw1MTAsNzUwLDU0Miw1NTYsNTU2LDU1NiwzNjUsNTEwLDUwMCwyMjIsMjc4LDIyMiw5MDYsODEyLDU1Niw0MzgsNTU5LDUwMCw1NTIsNzc4LDU1Niw0ODksNDExLDk0NCw3MjIsOTQ0LDcyMiw5NDQsNzIyLDY2Nyw1MDAsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjIyLDIyMiwyMjIsMjIyLDMzMywzMzMsMzMzLDU1Niw1NTYsMzUwLDFlMywxZTMsMTg4LDM1NCwzMzMsMzMzLDUwMCwzMzMsMTY3LDM2NSw1NTYsNTU2LDEwOTQsNTU2LDg4NSwzMjMsMTA3MywxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsMWUzLDUwMCwxZTMsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzE5LDI3NCw1NDksNTQ5LDU4Myw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDUwMCw1MDAsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDI5NCwyOTQsMzI0LDMyNCwzMTYsMzI4LDM5OCwyODVdLF9zPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSx6cz1bMS4zNjg5OCwxLDEsLjcyNzA2LC44MDQ3OSwuODM3MzQsLjk4ODk0LC45OTc5MywuOTg5NywuOTM4ODQsLjg2MjA5LC45NDI5MiwuOTQyOTIsMS4xNjY2MSwxLjAyMDU4LC45MzU4MiwuOTY2OTQsLjkzNTgyLDEuMTkxMzcsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC43ODA3NiwuNzgwNzYsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjcyODUxLC43ODk2NiwuOTA4MzgsLjgzNjM3LC44MjM5MSwuOTYzNzYsLjgwMDYxLC44NjI3NSwuODc2OCwuOTU0MDcsMS4wMjU4LC43MzkwMSwuODUwMjIsLjgzNjU1LDEuMDE1NiwuOTU1NDYsLjkyMTc5LC44NzEwNywuOTIxNzksLjgyMTE0LC44MDk2LC44OTcxMywuOTQ0MzgsLjk1MzUzLC45NDA4MywuOTE5MDUsLjkwNDA2LC45NDQ2LC45NDI5MiwxLjE4Nzc3LC45NDI5MiwxLjAyMDU4LC44OTkwMywuOTAwODgsLjk0OTM4LC45Nzg5OCwuODEwOTMsLjk3NTcxLC45NDkzOCwxLjAyNCwuOTU3NywuOTU5MzMsLjk4NjIxLDEuMDQ3NCwuOTc0NTUsLjk4OTgxLC45NjcyLC45NTkzMywuOTQ0NiwuOTc4OTgsLjk3NDA3LC45NzY0NiwuNzgwMzYsMS4xMDIwOCwuOTU0NDIsLjk1Mjk4LC45NzU3OSwuOTMzMiwuOTQwMzksLjkzOCwuODA2ODcsMS4wMTE0OSwuODA2ODcsMS4wMjA1OCwuODA0NzksLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLDEuMDExNDksMS4wMDg3MiwuOTAwODgsLjkxODgyLDEuMDIxMywuODM2MSwxLjAyMDU4LC42MjI5NSwuNTQzMjQsLjg5MDIyLDEuMDg1OTUsMSwxLC45MDA4OCwxLC45NzQ1NSwuOTM1ODIsLjkwMDg4LDEsMS4wNTY4NiwuODM2MSwuOTk2NDIsLjk5NjQyLC45OTY0MiwuNzI4NTEsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjg2OCwuODIzOTEsLjgwMDYxLC44MDA2MSwuODAwNjEsLjgwMDYxLDEuMDI1OCwxLjAyNTgsMS4wMjU4LDEuMDI1OCwuOTc0ODQsLjk1NTQ2LC45MjE3OSwuOTIxNzksLjkyMTc5LC45MjE3OSwuOTIxNzksMS4wMjA1OCwuOTIxNzksLjk0NDM4LC45NDQzOCwuOTQ0MzgsLjk0NDM4LC45MDQwNiwuODY5NTgsLjk4MjI1LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45MDMxLC44MTA5MywuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk4NjIxLC45Mzk2OSwuOTU5MzMsLjk0NDYsLjk0NDYsLjk0NDYsLjk0NDYsLjk0NDYsMS4wODU5NSwuOTQ0NiwuOTU0NDIsLjk1NDQyLC45NTQ0MiwuOTU0NDIsLjk0MDM5LC45Nzg5OCwuOTQwMzksLjkwODM4LC45NDkzOCwuOTA4MzgsLjk0OTM4LC45MDgzOCwuOTQ5MzgsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuOTYzNzYsLjg0MzEzLC45NzQ4NCwuOTc1NzEsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44NzY4LC45NTc3LC44NzY4LC45NTc3LC44NzY4LC45NTc3LDEsMSwuOTU0MDcsLjk1OTMzLC45NzA2OSwuOTU5MzMsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLC44ODcsMS4wMTU5MSwuNzM5MDEsMS4wNDc0LDEsMSwuOTc0NTUsLjgzNjU1LC45ODk4MSwxLDEsLjgzNjU1LC43Mzk3NywuODM2NTUsLjczOTAzLC44NDYzOCwxLjAzMywuOTU1NDYsLjk1OTMzLDEsMSwuOTU1NDYsLjk1OTMzLC44MjcxLC45NTQxNywuOTU5MzMsLjkyMTc5LC45NDQ2LC45MjE3OSwuOTQ0NiwuOTIxNzksLjk0NDYsLjkzNiwuOTE5NjQsLjgyMTE0LC45NzY0NiwxLDEsLjgyMTE0LC45NzY0NiwuODA5NiwuNzgwMzYsLjgwOTYsLjc4MDM2LDEsMSwuODA5NiwuNzgwMzYsMSwxLC44OTcxMywuNzc0NTIsLjg5NzEzLDEuMTAyMDgsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0MDgzLC45NzU3OSwuOTA0MDYsLjk0MDM5LC45MDQwNiwuOTQ0NiwuOTM4LC45NDQ2LC45MzgsLjk0NDYsLjkzOCwxLC45OTc5MywuOTA4MzgsLjk0OTM4LC44NjgsLjkwMzEsLjkyMTc5LC45NDQ2LDEsMSwuODk3MTMsMS4xMDIwOCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTA5ODksLjkzNTgsLjkxOTQ1LC44MzE4MSwuNzUyNjEsLjg3OTkyLC44Mjk3NiwuOTYwMzQsLjgzNjg5LC45NzI2OCwxLjAwNzgsLjkwODM4LC44MzYzNywuODAxOSwuOTAxNTcsLjgwMDYxLC45NDQ2LC45NTQwNywuOTI0MzYsMS4wMjU4LC44NTAyMiwuOTcxNTMsMS4wMTU2LC45NTU0NiwuODkxOTIsLjkyMTc5LC45MjM2MSwuODcxMDcsLjk2MzE4LC44OTcxMywuOTM3MDQsLjk1NjM4LC45MTkwNSwuOTE3MDksLjkyNzk2LDEuMDI1OCwuOTM3MDQsLjk0ODM2LDEuMDM3MywuOTU5MzMsMS4wMDc4LC45NTg3MSwuOTQ4MzYsLjk2MTc0LC45MjYwMSwuOTQ5OCwuOTg2MDcsLjk1Nzc2LC45NTkzMywxLjA1NDUzLDEuMDA3OCwuOTgyNzUsLjkzMTQsLjk1NjE3LC45MTcwMSwxLjA1OTkzLC45NDQ2LC43ODM2NywuOTU1MywxLC44NjgzMiwxLjAxMjgsLjk1ODcxLC45OTM5NCwuODc1NDgsLjk2MzYxLC44Njc3NCwxLjAwNzgsLjk1ODcxLC45NDQ2LC45NTg3MSwuODY3NzQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTQwODMsLjk3NTc5LC45NDA4MywuOTc1NzksLjk0MDgzLC45NzU3OSwuOTA0MDYsLjk0MDM5LC45NjY5NCwxLC44OTkwMywxLDEsMSwuOTM1ODIsLjkzNTgyLC45MzU4MiwxLC45MDgsLjkwOCwuOTE4LC45NDIxOSwuOTQyMTksLjk2NTQ0LDEsMS4yODUsMSwxLC44MTA3OSwuODEwNzksMSwxLC43NDg1NCwxLDEsMSwxLC45OTc5MywxLDEsMSwuNjUsMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjE3MTczLDEsLjgwNTM1LC43NjE2OSwxLjAyMDU4LDEuMDczMiwxLjA1NDg2LDEsMSwxLjMwNjkyLDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTYxNjEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sTHM9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LFVzPVsxLjM2ODk4LDEsMSwuNjYyMjcsLjgwNzc5LC44MTYyNSwuOTcyNzYsLjk3Mjc2LC45NzczMywuOTIyMjIsLjgzMjY2LC45NDI5MiwuOTQyOTIsMS4xNjE0OCwxLjAyMDU4LC45MzU4MiwuOTY2OTQsLjkzNTgyLDEuMTczMzcsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC43ODA3NiwuNzgwNzYsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjcxNTQxLC43NjgxMywuODU1NzYsLjgwNTkxLC44MDcyOSwuOTQyOTksLjc3NTEyLC44MzY1NSwuODY1MjMsLjkyMjIyLC45ODYyMSwuNzE3NDMsLjgxNjk4LC43OTcyNiwuOTg1NTgsLjkyMjIyLC45MDYzNywuODM4MDksLjkwNjM3LC44MDcyOSwuNzY0NjMsLjg2Mjc1LC45MDY5OSwuOTE2MDUsLjkxNTQsLjg1MzA4LC44NTQ1OCwuOTA1MzEsLjk0MjkyLDEuMjEyOTYsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLDEuMTg2MTYsLjk5NjEzLC45MTY3NywuNzgyMTYsLjkxNjc3LC45MDA4MywuOTg3OTYsLjkxMzUsLjkyMTY4LC45NTM4MSwuOTg5ODEsLjk1Mjk4LC45NTM4MSwuOTM0NTksLjkyMTY4LC45MTUxMywuOTIwMDQsLjkxNjc3LC45NTA3NywuNzQ4LDEuMDQ1MDIsLjkxNjc3LC45MjA2MSwuOTQyMzYsLjg5NTQ0LC44OTM2NCwuOSwuODA2ODcsLjg1NzgsLjgwNjg3LDEuMDIwNTgsLjgwNzc5LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuODU3OCwuOTk5NzMsMS4xODYxNiwuOTEzMzksMS4wODA3NCwuODI4OTEsMS4wMjA1OCwuNTU1MDksLjcxNTI2LC44OTAyMiwxLjA4NTk1LDEsMSwxLjE4NjE2LDEsLjk2NzM2LC45MzU4MiwxLjE4NjE2LDEsMS4wNDg2NCwuODI3MTEsLjk5MDQzLC45OTA0MywuOTkwNDMsLjcxNTQxLC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NDUsLjgwNzI5LC43NzUxMiwuNzc1MTIsLjc3NTEyLC43NzUxMiwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk1OTYxLC45MjIyMiwuOTA2MzcsLjkwNjM3LC45MDYzNywuOTA2MzcsLjkwNjM3LDEuMDIwNTgsLjkwMjUxLC45MDY5OSwuOTA2OTksLjkwNjk5LC45MDY5OSwuODU0NTgsLjgzNjU5LC45NDk1MSwuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuODU4MTEsLjc4MjE2LC45MDA4MywuOTAwODMsLjkwMDgzLC45MDA4MywuOTUzODEsLjk1MzgxLC45NTM4MSwuOTUzODEsLjkxMzUsLjkyMTY4LC45MTUxMywuOTE1MTMsLjkxNTEzLC45MTUxMywuOTE1MTMsMS4wODU5NSwuOTE2NzcsLjkxNjc3LC45MTY3NywuOTE2NzcsLjkxNjc3LC44OTM2NCwuOTIzMzIsLjg5MzY0LC44NTU3NiwuOTk2MTMsLjg1NTc2LC45OTYxMywuODU1NzYsLjk5NjEzLC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjk0Mjk5LC43Njc4MywuOTU5NjEsLjkxNjc3LC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuODY1MjMsLjkxMzUsLjg2NTIzLC45MTM1LC44NjUyMywuOTEzNSwxLDEsLjkyMjIyLC45MjE2OCwuOTIyMjIsLjkyMTY4LC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuODYwMzYsLjk3MDk2LC43MTc0MywuOTg5ODEsMSwxLC45NTI5OCwuNzk3MjYsLjk1MzgxLDEsMSwuNzk3MjYsLjY4OTQsLjc5NzI2LC43NDMyMSwuODE2OTEsMS4wMDA2LC45MjIyMiwuOTIxNjgsMSwxLC45MjIyMiwuOTIxNjgsLjc5NDY0LC45MjA5OCwuOTIxNjgsLjkwNjM3LC45MTUxMywuOTA2MzcsLjkxNTEzLC45MDYzNywuOTE1MTMsLjkwOSwuODc1MTQsLjgwNzI5LC45NTA3NywxLDEsLjgwNzI5LC45NTA3NywuNzY0NjMsLjc0OCwuNzY0NjMsLjc0OCwxLDEsLjc2NDYzLC43NDgsMSwxLC44NjI3NSwuNzI2NTEsLjg2Mjc1LDEuMDQ1MDIsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkxNTQsLjk0MjM2LC44NTQ1OCwuODkzNjQsLjg1NDU4LC45MDUzMSwuOSwuOTA1MzEsLjksLjkwNTMxLC45LDEsLjk3Mjc2LC44NTU3NiwuOTk2MTMsLjg0NSwuODU4MTEsLjkwMjUxLC45MTY3NywxLDEsLjg2Mjc1LDEuMDQ1MDIsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4wMDg5OSwxLjMwNjI4LC44NTU3NiwuODAxNzgsLjY2ODYyLC43OTI3LC42OTMyMywuODgxMjcsLjcyNDU5LC44OTcxMSwuOTUzODEsLjg1NTc2LC44MDU5MSwuNzgwNSwuOTQ3MjksLjc3NTEyLC45MDUzMSwuOTIyMjIsLjkwNjM3LC45ODYyMSwuODE2OTgsLjkyNjU1LC45ODU1OCwuOTIyMjIsLjg1MzU5LC45MDYzNywuOTA5NzYsLjgzODA5LC45NDUyMywuODYyNzUsLjgzNTA5LC45MzE1NywuODUzMDgsLjgzMzkyLC45MjM0NiwuOTg2MjEsLjgzNTA5LC45Mjg4NiwuOTEzMjQsLjkyMTY4LC45NTM4MSwuOTA2NDYsLjkyODg2LC45MDU1NywuODY4NDcsLjkwMjc2LC45MTMyNCwuODY4NDIsLjkyMTY4LC45OTUzMSwuOTUzODEsLjkyMjQsLjg1NDA4LC45MjY5OSwuODY4NDcsMS4wMDUxLC45MTUxMywuODA0ODcsLjkzNDgxLDEsLjg4MTU5LDEuMDUyMTQsLjkwNjQ2LC45NzM1NSwuODE1MzksLjg5Mzk4LC44NTkyMywuOTUzODEsLjkwNjQ2LC45MTUxMywuOTA2NDYsLjg1OTIzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkxNTQsLjk0MjM2LC45MTU0LC45NDIzNiwuOTE1NCwuOTQyMzYsLjg1NDU4LC44OTM2NCwuOTY2OTQsMSwuODk5MDMsMSwxLDEsLjkxNzgyLC45MTc4MiwuOTE3ODIsMSwuODk2LC44OTYsLjg5NiwuOTMzMiwuOTMzMiwuOTU5NzMsMSwxLjI2LDEsMSwuODA0NzksLjgwMTc4LDEsMSwuODU2MzMsMSwxLDEsMSwuOTcyNzYsMSwxLDEsLjY5OCwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTQ1NDIsMSwuNzkxOTksLjc4Njk0LDEuMDIwNTgsMS4wMzQ5MywxLjA1NDg2LDEsMSwxLjIzMDI2LDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMjAwMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sV3M9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LFhzPVsxLjM2ODk4LDEsMSwuNjU1MDcsLjg0OTQzLC44NTYzOSwuODg0NjUsLjg4NDY1LC44NjkzNiwuODgzMDcsLjg2OTQ4LC44NTI4MywuODUyODMsMS4wNjM4MywxLjAyMDU4LC43NTk0NSwuOTIxOSwuNzU5NDUsMS4xNzMzNywuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjc1OTQ1LC43NTk0NSwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNjkwNDYsLjcwOTI2LC44NTE1OCwuNzc4MTIsLjc2ODUyLC44OTU5MSwuNzA0NjYsLjc2MTI1LC44MDA5NCwuODY4MjIsLjgzODY0LC43MjgsLjc3MjEyLC43OTQ3NSwuOTM2MzcsLjg3NTE0LC44NTg4LC43NjAxMywuODU4OCwuNzI0MjEsLjY5ODY2LC43NzU5OCwuODU5OTEsLjgwODExLC44NzgzMiwuNzgxMTIsLjc3NTEyLC44NTYyLDEuMDIyMiwxLjE4NDE3LDEuMDIyMiwxLjI3MDE0LC44OTkwMywxLjE1MDEyLC45Mzg1OSwuOTQzOTksLjg0NiwuOTQzOTksLjgxNDUzLDEuMDE4NiwuOTQyMTksLjk2MDE3LDEuMDMwNzUsMS4wMjE3NSwuOTEyLDEuMDMwNzUsLjk2OTk4LC45NjAxNywuOTM4NTksLjk0Mzk5LC45NDM5OSwuOTU0OTMsLjc0NiwxLjEyNjU4LC45NDU3OCwuOTEsLjk3OSwuODgyLC44ODIsLjgzLC44NTAzNCwuODM1MzcsLjg1MDM0LDEuMDIwNTgsLjcwODY5LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODM1MzcsLjkwMDgzLDEuMTUwMTIsLjkxNjEsLjk0NTY1LC43MzU0MSwxLjAyMDU4LC41MzYwOSwuNjkzNTMsLjc5NTE5LDEuMDg1OTUsMSwxLDEuMTUwMTIsMSwuOTE5NzQsLjc1OTQ1LDEuMTUwMTIsMSwuOTQ0NiwuNzMzNjEsLjkwMDUsLjkwMDUsLjkwMDUsLjYyODY0LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC43NzMsLjc2ODUyLC43MDQ2NiwuNzA0NjYsLjcwNDY2LC43MDQ2NiwuODM4NjQsLjgzODY0LC44Mzg2NCwuODM4NjQsLjkwNTYxLC44NzUxNCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwxLjAyMDU4LC44NTc1MSwuODU5OTEsLjg1OTkxLC44NTk5MSwuODU5OTEsLjc3NTEyLC43NjAxMywuODgwNzUsLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjgwNzUsLjg0NiwuODE0NTMsLjgxNDUzLC44MTQ1MywuODE0NTMsLjgyNDI0LC44MjQyNCwuODI0MjQsLjgyNDI0LC45Mjc4LC45NjAxNywuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LDEuMDg1OTUsLjg1NjIsLjk0NTc4LC45NDU3OCwuOTQ1NzgsLjk0NTc4LC44ODIsLjk0NTc4LC44ODIsLjg1MTU4LC45Mzg1OSwuODUxNTgsLjkzODU5LC44NTE1OCwuOTM4NTksLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjg5NTkxLC44NTQ0LC45MDU2MSwuOTQzOTksLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC44MDA5NCwuOTQyMTksLjgwMDk0LC45NDIxOSwuODAwOTQsLjk0MjE5LDEsMSwuODY4MjIsLjk2MDE3LC44NjgyMiwuOTYwMTcsLjgzODY0LC44MjQyNCwuODM4NjQsLjgyNDI0LC44Mzg2NCwuODI0MjQsLjgzODY0LDEuMDMwNzUsLjgzODY0LC44MjQyNCwuODE0MDIsMS4wMjczOCwuNzI4LDEuMDIxNzUsMSwxLC45MTIsLjc5NDc1LDEuMDMwNzUsMSwxLC43OTQ3NSwuODM5MTEsLjc5NDc1LC42NjI2NiwuODA1NTMsMS4wNjY3NiwuODc1MTQsLjk2MDE3LDEsMSwuODc1MTQsLjk2MDE3LC44Njg2NSwuODczOTYsLjk2MDE3LC44NTg4LC45Mzg1OSwuODU4OCwuOTM4NTksLjg1ODgsLjkzODU5LC44NjcsLjg0NzU5LC43MjQyMSwuOTU0OTMsMSwxLC43MjQyMSwuOTU0OTMsLjY5ODY2LC43NDYsLjY5ODY2LC43NDYsMSwxLC42OTg2NiwuNzQ2LDEsMSwuNzc1OTgsLjg4NDE3LC43NzU5OCwxLjEyNjU4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NzgzMiwuOTc5LC43NzUxMiwuODgyLC43NzUxMiwuODU2MiwuODMsLjg1NjIsLjgzLC44NTYyLC44MywxLC44ODQ2NSwuODUxNTgsLjkzODU5LC43NzMsLjgwNzUsLjg1NzUxLC44NTYyLDEsMSwuNzc1OTgsMS4xMjY1OCwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTMxMywxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjA4MTA2LDEuMDM5MDEsLjg1MTU4LC43NzAyNSwuNjIyNjQsLjc2NDYsLjY1MzUxLC44NjAyNiwuNjk0NjEsLjg5OTQ3LDEuMDMwNzUsLjg1MTU4LC43NzgxMiwuNzY0NDksLjg4ODM2LC43MDQ2NiwuODU2MiwuODY4MjIsLjg1ODgsLjgzODY0LC43NzIxMiwuODUzMDgsLjkzNjM3LC44NzUxNCwuODIzNTIsLjg1ODgsLjg1NzAxLC43NjAxMywuODkwNTgsLjc3NTk4LC44MTU2LC44MjU2NSwuNzgxMTIsLjc3ODk5LC44OTM4NiwuODM4NjQsLjgxNTYsLjk0ODYsLjkyMzg4LC45NjE4NiwxLjAzMDc1LC45MTEyMywuOTQ4NiwuOTMyOTgsLjg3OCwuOTM5NDIsLjkyMzg4LC44NDU5NiwuOTYxODYsLjk1MTE5LDEuMDMwNzUsLjkyMiwuODg3ODcsLjk1ODI5LC44OCwuOTM1NTksLjkzODU5LC43ODgxNSwuOTM3NTgsMSwuODkyMTcsMS4wMzczNywuOTExMjMsLjkzOTY5LC43NzQ4NywuODU3NjksLjg2Nzk5LDEuMDMwNzUsLjkxMTIzLC45Mzg1OSwuOTExMjMsLjg2Nzk5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjc3NTEyLC44ODIsLjkyMTksMSwuODk5MDMsMSwxLDEsLjg3MzIxLC44NzMyMSwuODczMjEsMSwxLjAyNywxLjAyNywxLjAyNywuODY4NDcsLjg2ODQ3LC43OTEyMSwxLDEuMTI0LDEsMSwuNzM1NzIsLjczNTcyLDEsMSwuODUwMzQsMSwxLDEsMSwuODg0NjUsMSwxLDEsLjY2OSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQ4MjgsMSwuNzQ5NDgsLjc1MTg3LDEuMDIwNTgsLjk4MzkxLDEuMDIxMTksMSwxLDEuMDYyMzMsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTIzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxLcz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sR3M9WzEuMzY4OTgsMSwxLC43NjMwNSwuODI3ODQsLjk0OTM1LC44OTM2NCwuOTIyNDEsLjg5MDczLC45MDcwNiwuOTg0NzIsLjg1MjgzLC44NTI4MywxLjA2NjQsMS4wMjA1OCwuNzQ1MDUsLjkyMTksLjc0NTA1LDEuMjM0NTYsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC43NDUwNSwuNzQ1MDUsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjczMDAyLC43MjYwMSwuOTE3NTUsLjgxMjYsLjgwMzE0LC45MjIyMiwuNzM3NjQsLjc5NzI2LC44MzA1MSwuOTAyODQsLjg2MDIzLC43NCwuODEyNiwuODQ4NjksLjk2NTE4LC45MTExNSwuODg1OCwuNzk3NjEsLjg4NTgsLjc0NDk4LC43MzkxNCwuODEzNjMsLjg5NTkxLC44MzY1OSwuODk2MzMsLjg1NjA4LC44MTExLC45MDUzMSwxLjAyMjIsMS4yMjczNiwxLjAyMjIsMS4yNzAxNCwuODk5MDMsLjkwMDg4LC44NjY2NywxLjAyMzEsLjg5NiwxLjAxNDExLC45MDA4MywxLjA1MDk5LDEuMDA1MTIsLjk5NzkzLDEuMDUzMjYsMS4wOTM3NywuOTM4LDEuMDYyMjYsMS4wMDExOSwuOTk3OTMsLjk4NzE0LDEuMDIzMSwxLjAxMjMxLC45ODE5NiwuNzkyLDEuMTkxMzcsLjk5MDc0LC45NjIsMS4wMTkxNSwuOTI2LC45NDIsLjg1NiwuODUwMzQsLjkyMDA2LC44NTAzNCwxLjAyMDU4LC42OTA2NywuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMDA2LC45MzMyLC45MDA4OCwuOTE4ODIsLjkzNDg0LC43NTMzOSwxLjAyMDU4LC41Njg2NiwuNTQzMjQsLjc5NTE5LDEuMDg1OTUsMSwxLC45MDA4OCwxLC45NTMyNSwuNzQ1MDUsLjkwMDg4LDEsLjk3MTk4LC43NTMzOSwuOTEwMDksLjkxMDA5LC45MTAwOSwuNjY0NjYsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjc4OCwuODAzMTQsLjczNzY0LC43Mzc2NCwuNzM3NjQsLjczNzY0LC44NjAyMywuODYwMjMsLjg2MDIzLC44NjAyMywuOTI5MTUsLjkxMTE1LC44ODU4LC44ODU4LC44ODU4LC44ODU4LC44ODU4LDEuMDIwNTgsLjg4NTgsLjg5NTkxLC44OTU5MSwuODk1OTEsLjg5NTkxLC44MTExLC43OTYxMSwuODk3MTMsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2OTM2LC44OTYsLjkwMDgzLC45MDA4MywuOTAwODMsLjkwMDgzLC44NDIyNCwuODQyMjQsLjg0MjI0LC44NDIyNCwuOTcyNzYsLjk5NzkzLC45ODcxNCwuOTg3MTQsLjk4NzE0LC45ODcxNCwuOTg3MTQsMS4wODU5NSwuODk4NzYsLjk5MDc0LC45OTA3NCwuOTkwNzQsLjk5MDc0LC45NDIsMS4wMjMxLC45NDIsLjkxNzU1LC44NjY2NywuOTE3NTUsLjg2NjY3LC45MTc1NSwuODY2NjcsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjkyMjIyLC45MzM3MiwuOTI5MTUsMS4wMTQxMSwuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsMSwxLC45MDI4NCwuOTk3OTMsLjkwOTc2LC45OTc5MywuODYwMjMsLjg0MjI0LC44NjAyMywuODQyMjQsLjg2MDIzLC44NDIyNCwuODYwMjMsMS4wNTMyNiwuODYwMjMsLjg0MjI0LC44Mjg3MywxLjA3NDY5LC43NCwxLjA5Mzc3LDEsMSwuOTM4LC44NDg2OSwxLjA2MjI2LDEsMSwuODQ4NjksLjgzNzA0LC44NDg2OSwuODE0NDEsLjg1NTg4LDEuMDg5MjcsLjkxMTE1LC45OTc5MywxLDEsLjkxMTE1LC45OTc5MywuOTE4ODcsLjkwOTkxLC45OTc5MywuODg1OCwuOTg3MTQsLjg4NTgsLjk4NzE0LC44ODU4LC45ODcxNCwuODk0LC45MTQzNCwuNzQ0OTgsLjk4MTk2LDEsMSwuNzQ0OTgsLjk4MTk2LC43MzkxNCwuNzkyLC43MzkxNCwuNzkyLDEsMSwuNzM5MTQsLjc5MiwxLDEsLjgxMzYzLC45MDQsLjgxMzYzLDEuMTkxMzcsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NjMzLDEuMDE5MTUsLjgxMTEsLjk0MiwuODExMSwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwxLC45MjI0MSwuOTE3NTUsLjg2NjY3LC43ODgsLjg2OTM2LC44ODU4LC44OTg3NiwxLDEsLjgxMzYzLDEuMTkxMzcsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMzg4LDEuMDM5MDEsLjkyMTM4LC43ODEwNSwuNzE1NCwuODYxNjksLjgwNTEzLC45NDAwNywuODI1MjgsLjk4NjEyLDEuMDYyMjYsLjkxNzU1LC44MTI2LC44MTg4NCwuOTI4MTksLjczNzY0LC45MDUzMSwuOTAyODQsLjg4NTgsLjg2MDIzLC44MTI2LC45MTE3MiwuOTY1MTgsLjkxMTE1LC44MzA4OSwuODg1OCwuODc3OTEsLjc5NzYxLC44OTI5NywuODEzNjMsLjg4MTU3LC44OTk5MiwuODU2MDgsLjgxOTkyLC45NDMwNywuODYwMjMsLjg4MTU3LC45NTMwOCwuOTg2OTksLjk5NzkzLDEuMDYyMjYsLjk1ODE3LC45NTMwOCwuOTczNTgsLjkyOCwuOTgwODgsLjk4Njk5LC45Mjc2MSwuOTk3OTMsLjk2MDE3LDEuMDYyMjYsLjk4NiwuOTQ0LC45NTk3OCwuOTM4LC45NjcwNSwuOTg3MTQsLjgwNDQyLC45ODk3MiwxLC44OTc2MiwxLjA0NTUyLC45NTgxNywuOTkwMDcsLjg3MDY0LC45MTg3OSwuODg4ODgsMS4wNjIyNiwuOTU4MTcsLjk4NzE0LC45NTgxNywuODg4ODgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODExMSwuOTQyLC45MjE5LDEsLjg5OTAzLDEsMSwxLC45MzE3MywuOTMxNzMsLjkzMTczLDEsMS4wNjMwNCwxLjA2MzA0LDEuMDY5MDQsLjg5OTAzLC44OTkwMywuODA1NDksMSwxLjE1NiwxLDEsLjc2NTc1LC43NjU3NSwxLDEsLjcyNDU4LDEsMSwxLDEsLjkyMjQxLDEsMSwxLC42MTksMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA3MjU3LDEsLjc0NzA1LC43MTExOSwxLjAyMDU4LDEuMDI0LDEuMDIxMTksMSwxLDEuMTUzNiwxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1NjM4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLFZzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSwkcz1bMS43NjczOCwxLDEsLjk5Mjk3LC45ODI0LDEuMDQwMTYsMS4wNjQ5NywxLjAzNDI0LC45NzUyOSwxLjE3NjQ3LDEuMjMyMDMsMS4xMDg1LDEuMTA4NSwxLjE2OTM5LDEuMjEwNywuOTc1NCwxLjIxNDA4LC45NzU0LDEuNTk1NzgsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwuODEzNzgsLjgxMzc4LDEuMjEwNywxLjIxMDcsMS4yMTA3LC43MTcwMywuOTc4NDcsLjk3MzYzLC44ODc3NiwuODY0MSwxLjAyMDk2LC43OTc5NSwuODUxMzIsLjkxNCwxLjA2MDg1LDEuMTQwNiwuODAwNywuODk4NTgsLjgzNjkzLDEuMTQ4ODksMS4wOTM5OCwuOTc0ODksLjkyMDk0LC45NzQ4OSwuOTAzOTksLjg0MDQxLC45NTkyMywxLjAwMTM1LDEsMS4wNjQ2NywuOTgyNDMsLjkwOTk2LC45OTM2MSwxLjEwODUsMS41Njk0MiwxLjEwODUsMS4yMTA3LC43NDYyNywuOTQyODIsLjk2NzUyLDEuMDE1MTksLjg2MzA0LDEuMDEzNTksLjk3Mjc4LDEuMTUxMDMsMS4wMTM1OSwuOTg1NjEsMS4wMjI4NSwxLjAyMjg1LDEuMDA1MjcsMS4wMjI4NSwxLjAzMDIsLjk5MDQxLDEuMDAwOCwxLjAxNTE5LDEuMDEzNTksMS4wMjI1OCwuNzkxMDQsMS4xNjg2MiwuOTkwNDEsLjk3NDU0LDEuMDI1MTEsLjk5Mjk4LC45Njc1MiwuOTU4MDEsLjk0ODU2LDEuMTY1NzksLjk0ODU2LDEuMjEwNywuOTgyNCwxLjAzNDI0LDEuMDM0MjQsMSwxLjAzNDI0LDEuMTY1NzksLjg3MjcsMS4zODcxLDEuMTg2MjIsMS4xMDgxOCwxLjA0NDc4LDEuMjEwNywxLjE4NjIyLC43NTE1NSwuOTQ5OTQsMS4yODgyNiwxLjIxNDA4LDEuMjE0MDgsLjkxMDU2LDEsLjkxNTcyLC45NzU0LC42NDY2MywxLjE4MzI4LDEuMjQ4NjYsMS4wNDQ3OCwxLjE0MTY5LDEuMTU3NDksMS4xNzM4OSwuNzE3MDMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjkzNTA2LC44NjQxLC43OTc5NSwuNzk3OTUsLjc5Nzk1LC43OTc5NSwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjE0MDYsMS4wMjA5NiwxLjA5Mzk4LC45NzQyNiwuOTc0MjYsLjk3NDI2LC45NzQyNiwuOTc0MjYsMS4yMTA3LC45NzQ4OSwxLjAwMTM1LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LC45MDk5NiwuOTIwOTQsMS4wMjc5OCwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTMxMzYsLjg2MzA0LC45NzI3OCwuOTcyNzgsLjk3Mjc4LC45NzI3OCwxLjAyMjg1LDEuMDIyODUsMS4wMjI4NSwxLjAyMjg1LC45NzEyMiwuOTkwNDEsMSwxLDEsMSwxLDEuMjg4MjYsMS4wMDA4LC45OTA0MSwuOTkwNDEsLjk5MDQxLC45OTA0MSwuOTY3NTIsMS4wMTUxOSwuOTY3NTIsLjk3MzYzLC45Njc1MiwuOTczNjMsLjk2NzUyLC45NzM2MywuOTY3NTIsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LDEuMDIwOTYsMS4wMzA1NywxLjAyMDk2LDEuMDM1MTcsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC45MTQsMS4wMTM1OSwuOTE0LDEuMDEzNTksLjkxNCwxLjAxMzU5LDEsMSwxLjA2MDg1LC45ODU2MSwxLjA2MDg1LDEuMDA4NzksMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsLjk3MTM4LDEuMDg2OTIsLjgwMDcsMS4wMjI4NSwxLDEsMS4wMDUyNywuODM2OTMsMS4wMjI4NSwxLDEsLjgzNjkzLC45NDU1LC44MzY5MywuOTA0MTgsLjgzNjkzLDEuMTMwMDUsMS4wOTM5OCwuOTkwNDEsMSwxLDEuMDkzOTgsLjk5MDQxLC45NjY5MiwxLjA5MjUxLC45OTA0MSwuOTc0ODksMS4wMDA4LC45NzQ4OSwxLjAwMDgsLjk3NDg5LDEuMDAwOCwuOTM5OTQsLjk3OTMxLC45MDM5OSwxLjAyMjU4LDEsMSwuOTAzOTksMS4wMjI1OCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LDEsMSwuOTU5MjMsMS4wNzAzNCwuOTU5MjMsMS4xNjg2MiwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjA2NDY3LDEuMDI1MTEsLjkwOTk2LC45Njc1MiwuOTA5OTYsLjk5MzYxLC45NTgwMSwuOTkzNjEsLjk1ODAxLC45OTM2MSwuOTU4MDEsMS4wNzczMywxLjAzNDI0LC45NzM2MywuOTY3NTIsLjkzNTA2LC45MzEzNiwuOTc0ODksMS4wMDA4LDEsMSwuOTU5MjMsMS4xNjg2MiwxLjE1MTAzLDEuMTUxMDMsMS4wMTE3MywxLjAzOTU5LC43NTk1MywuODEzNzgsLjc5OTEyLDEuMTUxMDMsMS4yMTk5NCwuOTUxNjEsLjg3ODE1LDEuMDExNDksLjgxNTI1LC43Njc2LC45ODE2NywxLjAxMTM0LDEuMDI1NDYsLjg0MDk3LDEuMDMwODksMS4xODEwMiwuOTczNjMsLjg4Nzc2LC44NTEzNCwuOTc4MjYsLjc5Nzk1LC45OTM2MSwxLjA2MDg1LC45NzQ4OSwxLjE0MDYsLjg5ODU4LDEuMDM4OCwxLjE0ODg5LDEuMDkzOTgsLjg2MDM5LC45NzQ4OSwxLjA1OTUsLjkyMDk0LC45NDc5MywuOTU5MjMsLjkwOTk2LC45OTM0NiwuOTgyNDMsMS4wMjExMiwuOTU0OTMsMS4xNDA2LC45MDk5NiwxLjAzNTc0LDEuMDI1OTcsMS4wMDA4LDEuMTgxMDIsMS4wNjYyOCwxLjAzNTc0LDEuMDE5MiwxLjAxOTMyLDEuMDA4ODYsLjk3NTMxLDEuMDEwNiwxLjAwMDgsMS4xMzE4OSwxLjE4MTAyLDEuMDIyNzcsLjk4NjgzLDEuMDAxNiwuOTk1NjEsMS4wNzIzNywxLjAwMDgsLjkwNDM0LC45OTkyMSwuOTM4MDMsLjg5NjUsMS4yMzA4NSwxLjA2NjI4LDEuMDQ5ODMsLjk2MjY4LDEuMDQ5OSwuOTg0MzksMS4xODEwMiwxLjA2NjI4LDEuMDAwOCwxLjA2NjI4LC45ODQzOSwuNzk3OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wOTQ2NiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTcyNzgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wMjA2NSwxLDEsMSwxLDEsMSwxLjA2NDY3LDEuMDI1MTEsMS4wNjQ2NywxLjAyNTExLDEuMDY0NjcsMS4wMjUxMSwuOTA5OTYsLjk2NzUyLDEsMS4yMTQwOCwuODk5MDMsMSwxLC43NTE1NSwxLjA0Mzk0LDEuMDQzOTQsMS4wNDM5NCwxLjA0Mzk0LC45ODYzMywuOTg2MzMsLjk4NjMzLC43MzA0NywuNzMwNDcsMS4yMDY0MiwuOTEyMTEsMS4yNTYzNSwxLjIyMiwxLjAyOTU2LDEuMDMzNzIsMS4wMzM3MiwuOTYwMzksMS4yNDYzMywxLDEuMTI0NTQsLjkzNTAzLDEuMDM0MjQsMS4xOTY4NywxLjAzNDI0LDEsMSwxLC43NzEsMSwxLDEuMTU3NDksMS4xNTc0OSwxLjE1NzQ5LDEuMTA5NDgsLjg2Mjc5LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjE4MiwxLDEsMS4xNjg5NywxLC45NjA4NSwuOTAxMzcsMS4yMTA3LDEuMTg0MTYsMS4xMzk3MywuNjk4MjUsLjk3MTYsMi4xMDMzOSwxLjI5MDA0LDEuMjkwMDQsMS4yMTE3MiwxLjI5MDA0LDEuMjkwMDQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE4ODc0LDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4wOTE5MywxLjA5MTkzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxZcz17bGluZUhlaWdodDoxLjMzMDA4LGxpbmVHYXA6MH0sSnM9WzEuNzY3MzgsMSwxLC45ODk0NiwxLjAzOTU5LDEuMDQwMTYsMS4wMjgwOSwxLjAzNiwuOTc2MzksMS4xMDk1MywxLjIzMjAzLDEuMTExNDQsMS4xMTE0NCwxLjE2OTM5LDEuMjEyMzcsLjk3NTQsMS4yMTI2MSwuOTc1NCwxLjU5NzU0LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LC44MTM3OCwuODEzNzgsMS4yMTIzNywxLjIxMjM3LDEuMjEyMzcsLjczNTQxLC45Nzg0NywuOTczNjMsLjg5NzIzLC44Nzg5NywxLjA0MjYsLjc5NDI5LC44NTI5MiwuOTExNDksMS4wNTgxNSwxLjE0MDYsLjc5NjMxLC45MDEyOCwuODM4NTMsMS4wNDM5NiwxLjEwNjE1LC45NzU1MiwuOTQ0MzYsLjk3NTUyLC44ODY0MSwuODA1MjcsLjk2MDgzLDEuMDAxMzUsMSwxLjA2Nzc3LC45ODE3LC45MTE0MiwuOTkzNjEsMS4xMTE0NCwxLjU3MjkzLDEuMTExNDQsMS4yMTIzNywuNzQ2MjcsMS4zMTgxOCwxLjA2NTg1LC45NzA0MiwuODMwNTUsLjk3MDQyLC45MzUwMywxLjEyNjEsLjk3MDQyLC45NzkyMiwxLjE0MjM2LC45NDU1MiwxLjAxMDU0LDEuMTQyMzYsMS4wMjQ3MSwuOTc5MjIsLjk0MTY1LC45NzA0MiwuOTcwNDIsMS4wMjc2LC43ODkyOSwxLjEyNjEsLjk3OTIyLC45NTg3NCwxLjAyMTk3LC45ODUwNywuOTY3NTIsLjk3MTY4LC45NTEwNywxLjE2NTc5LC45NTEwNywxLjIxMjM3LDEuMDM5NTksMS4wMzYsMS4wMzYsMSwxLjAzNiwxLjE2NTc5LC44NzM1NywxLjMxODE4LDEuMTg3NTQsMS4yNjc4MSwxLjA1MzU2LDEuMjEyMzcsMS4xODYyMiwuNzk0ODcsLjk0OTk0LDEuMjkwMDQsMS4yNDA0NywxLjI0MDQ3LDEuMzE4MTgsMSwuOTE0ODQsLjk3NTQsMS4zMTgxOCwxLjEzNDksMS4yNDg2NiwxLjA1MzU2LDEuMTM5MzQsMS4xNTU3NCwxLjE3Mzg5LC43MzU0MSwuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTQzODUsLjg3ODk3LC43OTQyOSwuNzk0MjksLjc5NDI5LC43OTQyOSwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjE0MDYsMS4wNDI2LDEuMTA2MTUsLjk3NTUyLC45NzU1MiwuOTc1NTIsLjk3NTUyLC45NzU1MiwxLjIxMjM3LC45NzU1MiwxLjAwMTM1LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LC45MTE0MiwuOTQ0MzYsLjk4NzIxLDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LC45NjcwNSwuODMwNTUsLjkzNTAzLC45MzUwMywuOTM1MDMsLjkzNTAzLDEuMTQyMzYsMS4xNDIzNiwxLjE0MjM2LDEuMTQyMzYsLjkzMTI1LC45NzkyMiwuOTQxNjUsLjk0MTY1LC45NDE2NSwuOTQxNjUsLjk0MTY1LDEuMjkwMDQsLjk0MTY1LC45NzkyMiwuOTc5MjIsLjk3OTIyLC45NzkyMiwuOTY3NTIsLjk3MDQyLC45Njc1MiwuOTczNjMsMS4wNjU4NSwuOTczNjMsMS4wNjU4NSwuOTczNjMsMS4wNjU4NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LDEuMDQyNiwxLjAwMzMsMS4wNDI2LC45NzA0MiwuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjkxMTQ5LC45NzA0MiwuOTExNDksLjk3MDQyLC45MTE0OSwuOTcwNDIsMSwxLDEuMDU4MTUsLjk3OTIyLDEuMDU4MTUsLjk3OTIyLDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LC45NzQ0MSwxLjA0MzAyLC43OTYzMSwxLjAxNTgyLDEsMSwxLjAxMDU0LC44Mzg1MywxLjE0MjM2LDEsMSwuODM4NTMsMS4wOTEyNSwuODM4NTMsLjkwNDE4LC44Mzg1MywxLjE5NTA4LDEuMTA2MTUsLjk3OTIyLDEsMSwxLjEwNjE1LC45NzkyMiwxLjAxMDM0LDEuMTA0NjYsLjk3OTIyLC45NzU1MiwuOTQxNjUsLjk3NTUyLC45NDE2NSwuOTc1NTIsLjk0MTY1LC45MTYwMiwuOTE5ODEsLjg4NjQxLDEuMDI3NiwxLDEsLjg4NjQxLDEuMDI3NiwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LDEsMSwuOTYwODMsMS4wNTQwMywuOTU5MjMsMS4xNjg2MiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjA2Nzc3LDEuMDIxOTcsLjkxMTQyLC45Njc1MiwuOTExNDIsLjk5MzYxLC45NzE2OCwuOTkzNjEsLjk3MTY4LC45OTM2MSwuOTcxNjgsMS4yMzE5OSwxLjAzNiwuOTczNjMsMS4wNjU4NSwuOTQzODUsLjk2NzA1LC45NzU1MiwuOTQxNjUsMSwxLC45NjA4MywxLjEyNjEsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsLjk1MTYxLDEuMjcxMjYsMS4wMDgxMSwuODMyODQsLjc3NzAyLC45OTEzNywuOTUyNTMsMS4wMzQ3LC44NjE0MiwxLjA3MjA1LDEuMTQyMzYsLjk3MzYzLC44OTcyMywuODY4NjksMS4wOTgxOCwuNzk0MjksLjk5MzYxLDEuMDU4MTUsLjk3NTUyLDEuMTQwNiwuOTAxMjgsMS4wNjY2MiwxLjA0Mzk2LDEuMTA2MTUsLjg0OTE4LC45NzU1MiwxLjA0Njk0LC45NDQzNiwuOTgwMTUsLjk2MDgzLC45MTE0MiwxLjAwMzU2LC45ODE3LDEuMDE5NDUsLjk4OTk5LDEuMTQwNiwuOTExNDIsMS4wNDk2MSwuOTg5OCwxLjAwNjM5LDEuMTQyMzYsMS4wNzUxNCwxLjA0OTYxLC45OTYwNywxLjAyODk3LDEuMDA4LC45ODk4LC45NTEzNCwxLjAwNjM5LDEuMTExMjEsMS4xNDIzNiwxLjAwNTE4LC45Nzk4MSwxLjAyMTg2LDEsMS4wODU3OCwuOTQxNjUsLjk5MzE0LC45ODM4NywuOTMwMjgsLjkzMzc3LDEuMzUxMjUsMS4wNzUxNCwxLjEwNjg3LC45MzQ5MSwxLjA0MjMyLDEuMDAzNTEsMS4xNDIzNiwxLjA3NTE0LC45NDE2NSwxLjA3NTE0LDEuMDAzNTEsLjc5NDI5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDkwOTcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkzNTAzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NjYwOSwxLDEsMSwxLDEsMSwxLjA2Nzc3LDEuMDIxOTcsMS4wNjc3NywxLjAyMTk3LDEuMDY3NzcsMS4wMjE5NywuOTExNDIsLjk2NzUyLDEsMS4yMTI2MSwuODk5MDMsMSwxLC43NTE1NSwxLjA0NzQ1LDEuMDQ3NDUsMS4wNDc0NSwxLjA0Mzk0LC45ODYzMywuOTg2MzMsLjk4NjMzLC43Mjk1OSwuNzI5NTksMS4yMDUwMiwuOTE0MDYsMS4yNjUxNCwxLjIyMiwxLjAyOTU2LDEuMDMzNzIsMS4wMzM3MiwuOTYwMzksMS4yNDYzMywxLDEuMDkxMjUsLjkzMzI3LDEuMDMzMzYsMS4xNjU0MSwxLjAzNiwxLDEsMSwuNzcxLDEsMSwxLjE1NTc0LDEuMTU1NzQsMS4xNTU3NCwxLjE1NTc0LC44NjM2NCwuOTQ0MzQsLjg2Mjc5LC45NDQzNCwuODYyMjQsMSwxLDEuMTY3OTgsMSwuOTYwODUsLjkwMDY4LDEuMjEyMzcsMS4xODQxNiwxLjEzOTA0LC42OTgyNSwuOTcxNiwyLjEwMzM5LDEuMjkwMDQsMS4yOTAwNCwxLjIxMzM5LDEuMjkwMDQsMS4yOTAwNCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTg3NzUsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjEzMjY5LDEuMTMyNjksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLFFzPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSxacz1bMS43NjczOCwxLDEsLjk4OTQ2LDEuMTQ3NjMsMS4wNTM2NSwxLjA2MjM0LC45NjkyNywuOTI1ODYsMS4xNTM3MywxLjE4NDE0LC45MTM0OSwuOTEzNDksMS4wNzQwMywxLjE3MzA4LC43ODM4MywxLjIwMDg4LC43ODM4MywxLjQyNTMxLC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuNzgzODMsLjc4MzgzLDEuMTczMDgsMS4xNzMwOCwxLjE3MzA4LC43NzM0OSwuOTQ1NjUsLjk0NzI5LC44NTk0NCwuODg1MDYsLjk4NTgsLjc0ODE3LC44MDAxNiwuODg0NDksLjk4MDM5LC45NTc4MiwuNjkyMzgsLjg5ODk4LC44MzIzMSwuOTgxODMsMS4wMzk4OSwuOTY5MjQsLjg2MjM3LC45NjkyNCwuODA1OTUsLjc0NTI0LC44NjA5MSwuOTU0MDIsLjk0MTQzLC45ODQ0OCwuODg1OCwuODMwODksLjkzMjg1LDEuMDk0OSwxLjM5MDE2LDEuMDk0OSwxLjQ1OTk0LC43NDYyNywxLjA0ODM5LC45NzQ1NCwuOTc0NTQsLjg3MjA3LC45NzQ1NCwuODc1MzMsMS4wNjE1MSwuOTc0NTQsMS4wMDE3NiwxLjE2NDg0LDEuMDgxMzIsLjk4MDQ3LDEuMTY0ODQsMS4wMjk4OSwxLjAxMDU0LC45NjIyNSwuOTc0NTQsLjk3NDU0LDEuMDY1OTgsLjc5MDA0LDEuMTYzNDQsMS4wMDM1MSwuOTQ2MjksLjk5NzMsLjkxMDE2LC45Njc3NywuOTA0MywuOTEwODIsLjkyNDgxLC45MTA4MiwxLjE3MzA4LC45NTc0OCwuOTY5MjcsLjk2OTI3LDEsLjk2OTI3LC45MjQ4MSwuODA1OTcsMS4wNDgzOSwxLjIzMzkzLDEuMTc4MSwuOTI0NSwxLjE3MzA4LDEuMjA4MDgsLjYzMjE4LC45NDI2MSwxLjI0ODIyLDEuMDk5NzEsMS4wOTk3MSwxLjA0ODM5LDEsLjg1MjczLC43ODAzMiwxLjA0ODM5LDEuMDk5NzEsMS4yMjMyNiwuOTI0NSwxLjA5ODM2LDEuMTM1MjUsMS4xNTIyMiwuNzA0MjQsLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjg1NDk4LC44ODUwNiwuNzQ4MTcsLjc0ODE3LC43NDgxNywuNzQ4MTcsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45ODU4LDEuMDM5ODksLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwxLjE3MzA4LC45NjkyNCwuOTU0MDIsLjk1NDAyLC45NTQwMiwuOTU0MDIsLjgzMDg5LC44NjIzNywuODg0MDksLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjkyOTE2LC44NzIwNywuODc1MzMsLjg3NTMzLC44NzUzMywuODc1MzMsLjkzMTQ2LC45MzE0NiwuOTMxNDYsLjkzMTQ2LC45Mzg1NCwxLjAxMDU0LC45NjIyNSwuOTYyMjUsLjk2MjI1LC45NjIyNSwuOTYyMjUsMS4yNDgyMiwuODc2MSwxLjAwMzUxLDEuMDAzNTEsMS4wMDM1MSwxLjAwMzUxLC45Njc3NywuOTc0NTQsLjk2Nzc3LC45NDcyOSwuOTc0NTQsLjk0NzI5LC45NzQ1NCwuOTQ3MjksLjk3NDU0LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjk4NTgsLjk1MzkxLC45ODU4LC45NzQ1NCwuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjg4NDQ5LC45NzQ1NCwuODg0NDksLjk3NDU0LC44ODQ0OSwuOTc0NTQsMSwxLC45ODAzOSwxLjAwMTc2LC45ODAzOSwxLjAwMTc2LC45NTc4MiwuOTMxNDYsLjk1NzgyLC45MzE0NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwxLjE2NDg0LC45NTc4MiwuOTMxNDYsLjg0NDIxLDEuMTI3NjEsLjY5MjM4LDEuMDgxMzIsMSwxLC45ODA0NywuODMyMzEsMS4xNjQ4NCwxLDEsLjg0NzIzLDEuMDQ4NjEsLjg0NzIzLC43ODc1NSwuODMyMzEsMS4yMzczNiwxLjAzOTg5LDEuMDEwNTQsMSwxLDEuMDM5ODksMS4wMTA1NCwuOTg1NywxLjAzODQ5LDEuMDEwNTQsLjk2OTI0LC45NjIyNSwuOTY5MjQsLjk2MjI1LC45NjkyNCwuOTYyMjUsLjkyMzgzLC45MDE3MSwuODA1OTUsMS4wNjU5OCwxLDEsLjgwNTk1LDEuMDY1OTgsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwxLDEsLjg2MDkxLDEuMDI3NTksLjg1NzcxLDEuMTYzNDQsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk4NDQ4LC45OTczLC44MzA4OSwuOTY3NzcsLjgzMDg5LC45MzI4NSwuOTA0MywuOTMyODUsLjkwNDMsLjkzMjg1LC45MDQzLDEuMzE4NjgsLjk2OTI3LC45NDcyOSwuOTc0NTQsLjg1NDk4LC45MjkxNiwuOTY5MjQsLjg3NjEsMSwxLC44NjA5MSwxLjE2MzQ0LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LC44MTk2NSwuODE5NjUsLjk0NzI5LC43ODAzMiwuNzEwMjIsLjkwODgzLC44NDE3MSwuOTk4NzcsLjc3NTk2LDEuMDU3MzQsMS4yLC45NDcyOSwuODU5NDQsLjgyNzkxLC45NjA3LC43NDgxNywuOTMyODUsLjk4MDM5LC45NjkyNCwuOTU3ODIsLjg5ODk4LC45ODMxNiwuOTgxODMsMS4wMzk4OSwuNzg2MTQsLjk2OTI0LC45NzY0MiwuODYyMzcsLjg2MDc1LC44NjA5MSwuODMwODksLjkwMDgyLC44ODU4LC45NzI5NiwxLjAxMjg0LC45NTc4MiwuODMwODksMS4wOTc2LDEuMDQsMS4wMzM0MiwxLjIsMS4wNjc1LDEuMDk3NiwuOTgyMDUsMS4wMzgwOSwxLjA1MDk3LDEuMDQsLjk1MzY0LDEuMDMzNDIsMS4wNTQwMSwxLjIsMS4wMjE0OCwxLjAxMTksMS4wNDcyNCwxLjAxMjcsMS4wMjczMiwuOTYyMjUsLjg5NjUsLjk3NzgzLC45MzU3NCwuOTQ4MTgsMS4zMDY3OSwxLjA2NzUsMS4xMTgyNiwuOTk4MjEsMS4wNTU3LDEuMDMyNiwxLjIsMS4wNjc1LC45NjIyNSwxLjA2NzUsMS4wMzI2LC43NDgxNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAzNzU0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NzUzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTg3MDUsMSwxLDEsMSwxLDEsLjk4NDQ4LC45OTczLC45ODQ0OCwuOTk3MywuOTg0NDgsLjk5NzMsLjgzMDg5LC45Njc3NywxLDEuMjAwODgsLjg5OTAzLDEsMSwuNzUxNTUsLjk0OTQ1LC45NDk0NSwuOTQ5NDUsLjk0OTQ1LDEuMTIzMTcsMS4xMjMxNywxLjEyMzE3LC42NzYwMywuNjc2MDMsMS4xNTYyMSwuNzM1ODQsMS4yMTE5MSwxLjIyMTM1LDEuMDY0ODMsLjk0ODY4LC45NDg2OCwuOTU5OTYsMS4yNDYzMywxLDEuMDc0OTcsLjg3NzA5LC45NjkyNywxLjAxNDczLC45NjkyNywxLDEsMSwuNzcyOTUsMSwxLDEuMDk4MzYsMS4wOTgzNiwxLjA5ODM2LDEuMDE1MjIsLjg2MzIxLC45NDQzNCwuODY0OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjA4MywxLC45MTU3OCwuODY0MzgsMS4xNzMwOCwxLjE4NDE2LDEuMTQ1ODksLjY5ODI1LC45NzYyMiwxLjk2NzkxLDEuMjQ4MjIsMS4yNDgyMiwxLjE3MzA4LDEuMjQ4MjIsMS4yNDgyMiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTc5ODQsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjEwNzQyLDEuMTA3NDIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLGVyPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSx0cj1bMS43NjczOCwxLDEsLjk4NTk0LDEuMDIyODUsMS4xMDQ1NCwxLjA2MjM0LC45NjkyNywuOTIwMzcsMS4xOTk4NSwxLjIwNDYsLjkwNjE2LC45MDYxNiwxLjA3MTUyLDEuMTcxNCwuNzgwMzIsMS4yMDA4OCwuNzgwMzIsMS40MDI0NiwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MDMyLC43ODAzMiwxLjE3MTQsMS4xNzE0LDEuMTcxNCwuODA1OTcsLjk0MDg0LC45NjcwNiwuODU5NDQsLjg1NzM0LC45NzA5MywuNzU4NDIsLjc5OTM2LC44ODE5OCwuOTgzMSwuOTU3ODIsLjcxMzg3LC44Njk2OSwuODQ2MzYsMS4wNzc5NiwxLjAzNTg0LC45NjkyNCwuODM5NjgsLjk2OTI0LC44MjgyNiwuNzk2NDksLjg1NzcxLC45NTEzMiwuOTMxMTksLjk4OTY1LC44ODQzMywuODI4NywuOTMzNjUsMS4wODYxMiwxLjM2MzgsMS4wODYxMiwxLjQ1Nzg2LC43NDYyNywuODA0OTksLjkxNDg0LDEuMDU3MDcsLjkyMzgzLDEuMDU4ODIsLjk0MDMsMS4xMjY1NCwxLjA1ODgyLDEuMDE3NTYsMS4wOTAxMSwxLjA5MDExLC45OTQxNCwxLjA5MDExLDEuMDM0LDEuMDE3NTYsMS4wNTM1NiwxLjA1NzA3LDEuMDU4ODIsMS4wNDM5OSwuODQ4NjMsMS4yMTk2OCwxLjAxNzU2LC45NTgwMSwxLjAwMDY4LC45MTc5NywuOTY3NzcsLjkwNDMsLjkwMzUxLC45MjEwNSwuOTAzNTEsMS4xNzE0LC44NTMzNywuOTY5MjcsLjk2OTI3LC45OTkxMiwuOTY5MjcsLjkyMTA1LC44MDU5NywxLjI0MzQsMS4yMDgwOCwxLjA1OTM3LC45MDk1NywxLjE3MTQsMS4yMDgwOCwuNzUxNTUsLjk0MjYxLDEuMjQ2NDQsMS4wOTk3MSwxLjA5OTcxLC44NDc1MSwxLC44NTI3MywuNzgwMzIsLjYxNTg0LDEuMDU0MjUsMS4xNzkxNCwuOTA5NTcsMS4wODY2NSwxLjExNTkzLDEuMTQxNjksLjczMzgxLC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC44NjAzNSwuODU3MzQsLjc1ODQyLC43NTg0MiwuNzU4NDIsLjc1ODQyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTcwOTMsMS4wMzU4NCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LDEuMTcxNCwuOTY5MjQsLjk1MTMyLC45NTEzMiwuOTUxMzIsLjk1MTMyLC44Mjg3LC44Mzk2OCwuODkwNDksLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkzNTc1LC45MjM4MywuOTQwMywuOTQwMywuOTQwMywuOTQwMywuODcxNywuODcxNywuODcxNywuODcxNywxLjAwNTI3LDEuMDE3NTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMjQ2NDQsLjk1OTIzLDEuMDE3NTYsMS4wMTc1NiwxLjAxNzU2LDEuMDE3NTYsLjk2Nzc3LDEuMDU3MDcsLjk2Nzc3LC45NjcwNiwuOTE0ODQsLjk2NzA2LC45MTQ4NCwuOTY3MDYsLjkxNDg0LC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjk3MDkzLDEuMDk2OSwuOTcwOTMsMS4wNTg4MiwuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLDEsMSwuOTgzMSwxLjAxNzU2LC45ODMxLDEuMDE3NTYsLjk1NzgyLC44NzE3LC45NTc4MiwuODcxNywuOTU3ODIsLjg3MTcsLjk1NzgyLDEuMDkwMTEsLjk1NzgyLC44NzE3LC44NDc4NCwxLjExNTUxLC43MTM4NywxLjA5MDExLDEsMSwuOTk0MTQsLjg0NjM2LDEuMDkwMTEsMSwxLC44NDYzNiwxLjA1MzYsLjg0NjM2LC45NDI5OCwuODQ2MzYsMS4yMzI5NywxLjAzNTg0LDEuMDE3NTYsMSwxLDEuMDM1ODQsMS4wMTc1NiwxLjAwMzIzLDEuMDM0NDQsMS4wMTc1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTMwNjYsLjk4MjkzLC44MjgyNiwxLjA0Mzk5LDEsMSwuODI4MjYsMS4wNDM5OSwuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLDEsMSwuODU3NzEsMS4xNzMxOCwuODU3NzEsMS4yMTk2OCwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTg5NjUsMS4wMDA2OCwuODI4NywuOTY3NzcsLjgyODcsLjkzMzY1LC45MDQzLC45MzM2NSwuOTA0MywuOTMzNjUsLjkwNDMsMS4wODU3MSwuOTY5MjcsLjk2NzA2LC45MTQ4NCwuODYwMzUsLjkzNTc1LC45NjkyNCwuOTU5MjMsMSwxLC44NTc3MSwxLjIxOTY4LDEuMTE0MzcsMS4xMTQzNywuOTMxMDksLjkxMjAyLC42MDQxMSwuODQxNjQsLjU1NTcyLDEuMDExNzMsLjk3MzYxLC44MTgxOCwuODE4MTgsLjk2NjM1LC43ODAzMiwuNzI3MjcsLjkyMzY2LC45ODYwMSwxLjAzNDA1LC43Nzk2OCwxLjA5Nzk5LDEuMiwuOTY3MDYsLjg1OTQ0LC44NTYzOCwuOTY0OTEsLjc1ODQyLC45MzM2NSwuOTgzMSwuOTY5MjQsLjk1NzgyLC44Njk2OSwuOTQxNTIsMS4wNzc5NiwxLjAzNTg0LC43ODQzNywuOTY5MjQsLjk4NzE1LC44Mzk2OCwuODM0OTEsLjg1NzcxLC44Mjg3LC45NDQ5MiwuODg0MzMsLjkyODcsMS4wMDk4LC45NTc4MiwuODI4NywxLjA2MjUsLjk4MjQ4LDEuMDM0MjQsMS4yLDEuMDEwNzEsMS4wNjI1LC45NTI0NiwxLjAzODA5LDEuMDQ5MTIsLjk4MjQ4LDEuMDAyMjEsMS4wMzQyNCwxLjA1NDQzLDEuMiwxLjA0Nzg1LC45OTYwOSwxLjAwMTY5LDEuMDUxNzYsLjk5MzQ2LDEuMDUzNTYsLjkwODcsMS4wMzAwNCwuOTU1NDIsLjkzMTE3LDEuMjMzNjIsMS4wMTA3MSwxLjA3ODMxLDEuMDI1MTIsMS4wNTIwNSwxLjAzNTAyLDEuMiwxLjAxMDcxLDEuMDUzNTYsMS4wMTA3MSwxLjAzNTAyLC43NTg0MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAzNzE5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDAzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQwMjEsMSwxLDEsMSwxLDEsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjgyODcsLjk2Nzc3LDEsMS4yMDA4OCwuODk5MDMsMSwxLC43NTE1NSwxLjAzMDc3LDEuMDMwNzcsMS4wMzA3NywxLjAzMDc3LDEuMTMxOTYsMS4xMzE5NiwxLjEzMTk2LC42NzQyOCwuNjc0MjgsMS4xNjAzOSwuNzMyOTEsMS4yMDk5NiwxLjIyMTM1LDEuMDY0ODMsLjk0ODY4LC45NDg2OCwuOTU5OTYsMS4yNDYzMywxLDEuMDc0OTcsLjg3Nzk2LC45NjkyNywxLjAxNTE4LC45NjkyNywxLDEsMSwuNzcyOTUsMSwxLDEuMTA1MzksMS4xMDUzOSwxLjExMzU4LDEuMDY5NjcsLjg2Mjc5LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NTA3LDEuMTcxNCwxLjE4NDE2LDEuMTQ1ODksLjY5ODI1LC45NzYyMiwxLjk2OTcsMS4yNDgyMiwxLjI0ODIyLDEuMTcyMzgsMS4yNDgyMiwxLjI0ODIyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODA4MywxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTA5MzgsMS4xMDkzOCwxLDEsMSwxLjA1NDI1LDEuMDk5NzEsMS4wOTk3MSwxLjA5OTcxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sYXI9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LG5yPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlWyJNeXJpYWRQcm8tUmVndWxhciJdPWVbIlBkZkpTLUZhbGxiYWNrLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpHcyxiYXNlV2lkdGhzOkVzLGJhc2VNYXBwaW5nOl9zLG1ldHJpY3M6VnN9O2VbIk15cmlhZFByby1Cb2xkIl09ZVsiUGRmSlMtRmFsbGJhY2stQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOnpzLGJhc2VXaWR0aHM6T3MsYmFzZU1hcHBpbmc6QnMsbWV0cmljczpMc307ZVsiTXlyaWFkUHJvLUl0Il09ZVsiTXlyaWFkUHJvLUl0YWxpYyJdPWVbIlBkZkpTLUZhbGxiYWNrLUl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiLGZhY3RvcnM6WHMsYmFzZVdpZHRoczpNcyxiYXNlTWFwcGluZzpOcyxtZXRyaWNzOktzfTtlWyJNeXJpYWRQcm8tQm9sZEl0Il09ZVsiTXlyaWFkUHJvLUJvbGRJdGFsaWMiXT1lWyJQZGZKUy1GYWxsYmFjay1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6VXMsYmFzZVdpZHRoczpEcyxiYXNlTWFwcGluZzpIcyxtZXRyaWNzOldzfTtlLkFyaWFsTVQ9ZS5BcmlhbD1lWyJBcmlhbC1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGJhc2VXaWR0aHM6RXMsYmFzZU1hcHBpbmc6X3N9O2VbIkFyaWFsLUJvbGRNVCJdPWVbIkFyaWFsLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsYmFzZVdpZHRoczpPcyxiYXNlTWFwcGluZzpCc307ZVsiQXJpYWwtSXRhbGljTVQiXT1lWyJBcmlhbC1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixiYXNlV2lkdGhzOk1zLGJhc2VNYXBwaW5nOk5zfTtlWyJBcmlhbC1Cb2xkSXRhbGljTVQiXT1lWyJBcmlhbC1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGJhc2VXaWR0aHM6RHMsYmFzZU1hcHBpbmc6SHN9O2VbIkNhbGlicmktUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOnFzLGJhc2VXaWR0aHM6RXMsYmFzZU1hcHBpbmc6X3MsbWV0cmljczp2c307ZVsiQ2FsaWJyaS1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6Z3MsYmFzZVdpZHRoczpPcyxiYXNlTWFwcGluZzpCcyxtZXRyaWNzOmJzfTtlWyJDYWxpYnJpLUl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiLGZhY3RvcnM6a3MsYmFzZVdpZHRoczpNcyxiYXNlTWFwcGluZzpOcyxtZXRyaWNzOnlzfTtlWyJDYWxpYnJpLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczp3cyxiYXNlV2lkdGhzOkRzLGJhc2VNYXBwaW5nOkhzLG1ldHJpY3M6anN9O2VbIlNlZ29ldWktUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOnRyLGJhc2VXaWR0aHM6RXMsYmFzZU1hcHBpbmc6X3MsbWV0cmljczphcn07ZVsiU2Vnb2V1aS1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6JHMsYmFzZVdpZHRoczpPcyxiYXNlTWFwcGluZzpCcyxtZXRyaWNzOllzfTtlWyJTZWdvZXVpLUl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiLGZhY3RvcnM6WnMsYmFzZVdpZHRoczpNcyxiYXNlTWFwcGluZzpOcyxtZXRyaWNzOmVyfTtlWyJTZWdvZXVpLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczpKcyxiYXNlV2lkdGhzOkRzLGJhc2VNYXBwaW5nOkhzLG1ldHJpY3M6UXN9O2VbIkhlbHZldGljYS1SZWd1bGFyIl09ZS5IZWx2ZXRpY2E9e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6VHMsYmFzZVdpZHRoczpFcyxiYXNlTWFwcGluZzpfcyxtZXRyaWNzOlJzfTtlWyJIZWx2ZXRpY2EtQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOlNzLGJhc2VXaWR0aHM6T3MsYmFzZU1hcHBpbmc6QnMsbWV0cmljczpBc307ZVsiSGVsdmV0aWNhLUl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiLGZhY3RvcnM6SXMsYmFzZVdpZHRoczpNcyxiYXNlTWFwcGluZzpOcyxtZXRyaWNzOkZzfTtlWyJIZWx2ZXRpY2EtQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOnhzLGJhc2VXaWR0aHM6RHMsYmFzZU1hcHBpbmc6SHMsbWV0cmljczpDc319KTtmdW5jdGlvbiBnZXRYZmFGb250TmFtZShlKXtjb25zdCB0PW5vcm1hbGl6ZUZvbnROYW1lKGUpO3JldHVybiBucigpW3RdfWZ1bmN0aW9uIGdldFhmYUZvbnREaWN0KGUpe2NvbnN0IHQ9ZnVuY3Rpb24gZ2V0WGZhRm9udFdpZHRocyhlKXtjb25zdCB0PWdldFhmYUZvbnROYW1lKGUpO2lmKCF0KXJldHVybiBudWxsO2NvbnN0e2Jhc2VXaWR0aHM6YSxiYXNlTWFwcGluZzpuLGZhY3RvcnM6c309dCxyPXM/YS5tYXAoKGUsdCk9PmUqc1t0XSk6YTtsZXQgaSxvPS0yO2NvbnN0IGw9W107Zm9yKGNvbnN0W2UsdF1vZiBuLm1hcCgoZSx0KT0+W2UsdF0pLnNvcnQoKFtlXSxbdF0pPT5lLXQpKWlmKC0xIT09ZSlpZihlPT09bysxKXtpLnB1c2goclt0XSk7bys9MX1lbHNle289ZTtpPVtyW3RdXTtsLnB1c2goZSxpKX1yZXR1cm4gbH0oZSksYT1uZXcgRGljdChudWxsKTthLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KGUpKTthLnNldCgiVHlwZSIsTmFtZS5nZXQoIkZvbnQiKSk7YS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJDSURGb250VHlwZTIiKSk7YS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiSWRlbnRpdHktSCIpKTthLnNldCgiQ0lEVG9HSURNYXAiLE5hbWUuZ2V0KCJJZGVudGl0eSIpKTthLnNldCgiVyIsdCk7YS5zZXQoIkZpcnN0Q2hhciIsdFswXSk7YS5zZXQoIkxhc3RDaGFyIix0LmF0KC0yKSt0LmF0KC0xKS5sZW5ndGgtMSk7Y29uc3Qgbj1uZXcgRGljdChudWxsKTthLnNldCgiRm9udERlc2NyaXB0b3IiLG4pO2NvbnN0IHM9bmV3IERpY3QobnVsbCk7cy5zZXQoIk9yZGVyaW5nIiwiSWRlbnRpdHkiKTtzLnNldCgiUmVnaXN0cnkiLCJBZG9iZSIpO3Muc2V0KCJTdXBwbGVtZW50IiwwKTthLnNldCgiQ0lEU3lzdGVtSW5mbyIscyk7cmV0dXJuIGF9Y29uc3Qgc3I9e251bWJlcjowLGxicmFjZToxLHJicmFjZToyLHRydWU6MyxmYWxzZTo0LGFkZDo1LHN1Yjo2LG11bDo3LGRpdjo4LGlkaXY6OSxtb2Q6MTAsZXhwOjExLGVxOjEyLG5lOjEzLGd0OjE0LGdlOjE1LGx0OjE2LGxlOjE3LGFuZDoxOCxvcjoxOSx4b3I6MjAsYml0c2hpZnQ6MjEsYWJzOjIyLG5lZzoyMyxjZWlsaW5nOjI0LGZsb29yOjI1LHJvdW5kOjI2LHRydW5jYXRlOjI3LG5vdDoyOCxzcXJ0OjI5LHNpbjozMCxjb3M6MzEsbG46MzIsbG9nOjMzLGF0YW46MzQsY3ZpOjM1LGN2cjozNixkdXA6MzcsZXhjaDozOCxwb3A6MzksY29weTo0MCxpbmRleDo0MSxyb2xsOjQyLGlmOjQzLGlmZWxzZTo0NCxlb2Y6NDUsbWluOjQ2LG1heDo0N307Y2xhc3MgVG9rZW57Y29uc3RydWN0b3IoZSx0PW51bGwpe3RoaXMuaWQ9ZTt0aGlzLnZhbHVlPXR9fWNsYXNzIGxleGVyX0xleGVye3N0YXRpYyNBZT1udWxsO3N0YXRpYyN4ZT1udWxsO3N0YXRpYyNDZSgpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShudWxsKSx0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W2Esbl1vZiBPYmplY3QuZW50cmllcyhzcikpe2lmKCJudW1iZXIiPT09YSljb250aW51ZTtjb25zdCBzPW4+PXNyLnRydWUmJm48PXNyLmlmZWxzZSxyPW5ldyBUb2tlbihuLHM/YTpudWxsKTtlW2FdPXI7cyYmKHRbYV09cil9dGhpcy4jQWU9ZTt0aGlzLiN4ZT10fWNvbnN0cnVjdG9yKGUpe2xleGVyX0xleGVyLiNBZXx8bGV4ZXJfTGV4ZXIuI0NlKCk7dGhpcy5kYXRhPWU7dGhpcy5wb3M9MDt0aGlzLmxlbj1lLmxlbmd0aDt0aGlzLl9udW1iZXJQYXR0ZXJuPS9bKy1dPyg/OlxkKyg/OlwuXGQqKT98XC5cZCspKD86ZVsrLV0/XGQrKT8vaXk7dGhpcy5faWRlbnRpZmllclBhdHRlcm49L1thLXpdKy95fV9za2lwQ29tbWVudCgpe2NvbnN0IGU9dGhpcy5kYXRhLmluZGV4T2YoIlxuIix0aGlzLnBvcyksdD10aGlzLmRhdGEuaW5kZXhPZigiXHIiLHRoaXMucG9zKSxhPU1hdGgubWluKGU8MD90aGlzLmxlbjplLHQ8MD90aGlzLmxlbjp0KTt0aGlzLnBvcz1NYXRoLm1pbihhKzEsdGhpcy5sZW4pfV9nZXROdW1iZXIoKXt0aGlzLl9udW1iZXJQYXR0ZXJuLmxhc3RJbmRleD10aGlzLnBvcztjb25zdCBlPXRoaXMuX251bWJlclBhdHRlcm4uZXhlYyh0aGlzLmRhdGEpO2lmKCFlKXJldHVybiBuZXcgVG9rZW4oc3IubnVtYmVyLDApO2NvbnN0IHQ9cGFyc2VGbG9hdChlWzBdKTtpZighTnVtYmVyLmlzRmluaXRlKHQpKXJldHVybiBuZXcgVG9rZW4oc3IubnVtYmVyLDApO3RoaXMucG9zPXRoaXMuX251bWJlclBhdHRlcm4ubGFzdEluZGV4O3JldHVybiBuZXcgVG9rZW4oc3IubnVtYmVyLHQpfV9nZXRPcGVyYXRvcigpe3RoaXMuX2lkZW50aWZpZXJQYXR0ZXJuLmxhc3RJbmRleD10aGlzLnBvcztjb25zdCBlPXRoaXMuX2lkZW50aWZpZXJQYXR0ZXJuLmV4ZWModGhpcy5kYXRhKTtpZighZSlyZXR1cm4gbmV3IFRva2VuKHNyLm51bWJlciwwKTt0aGlzLnBvcz10aGlzLl9pZGVudGlmaWVyUGF0dGVybi5sYXN0SW5kZXg7Y29uc3QgdD1lWzBdO3JldHVybiBsZXhlcl9MZXhlci4jeGVbdF0/P25ldyBUb2tlbihzci5udW1iZXIsMCl9bmV4dCgpe2Zvcig7dGhpcy5wb3M8dGhpcy5sZW47KXtjb25zdCBlPXRoaXMuZGF0YS5jaGFyQ29kZUF0KHRoaXMucG9zKyspO3N3aXRjaChlKXtjYXNlIDA6Y2FzZSA5OmNhc2UgMTA6Y2FzZSAxMjpjYXNlIDEzOmNhc2UgMzI6YnJlYWs7Y2FzZSAzNzp0aGlzLl9za2lwQ29tbWVudCgpO2JyZWFrO2Nhc2UgMTIzOnJldHVybiBsZXhlcl9MZXhlci4jQWUubGJyYWNlO2Nhc2UgMTI1OnJldHVybiBsZXhlcl9MZXhlci4jQWUucmJyYWNlO2Nhc2UgNDM6Y2FzZSA0NTpjYXNlIDQ2OnRoaXMucG9zLS07cmV0dXJuIHRoaXMuX2dldE51bWJlcigpO2RlZmF1bHQ6aWYoZT49NDgmJmU8PTU3KXt0aGlzLnBvcy0tO3JldHVybiB0aGlzLl9nZXROdW1iZXIoKX1pZihlPj05NyYmZTw9MTIyKXt0aGlzLnBvcy0tO3JldHVybiB0aGlzLl9nZXRPcGVyYXRvcigpfXJldHVybiBuZXcgVG9rZW4oc3IubnVtYmVyLDApfX1yZXR1cm4gbGV4ZXJfTGV4ZXIuI0FlLmVvZn19Y29uc3QgcnI9MCxpcj0xLG9yPTIsbHI9MCxmcj0xLGNyPTIsaHI9Myx1cj00LG1yPTUscHI9Nixkcj03LGdyPTgsYnI9OSx3cj0xMDtjbGFzcyBQc05vZGV7Y29uc3RydWN0b3IoZSl7dGhpcy50eXBlPWV9fWNsYXNzIFBzUHJvZ3JhbSBleHRlbmRzIFBzTm9kZXtjb25zdHJ1Y3RvcihlKXtzdXBlcihscik7dGhpcy5ib2R5PWV9fWNsYXNzIFBzQmxvY2sgZXh0ZW5kcyBQc05vZGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoZnIpO3RoaXMuaW5zdHJ1Y3Rpb25zPWV9fWNsYXNzIFBzTnVtYmVyIGV4dGVuZHMgUHNOb2Rle2NvbnN0cnVjdG9yKGUpe3N1cGVyKGNyKTt0aGlzLnZhbHVlPWV9fWNsYXNzIFBzT3BlcmF0b3IgZXh0ZW5kcyBQc05vZGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoaHIpO3RoaXMub3A9ZX19Y2xhc3MgUHNJZiBleHRlbmRzIFBzTm9kZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih1cik7dGhpcy50aGVuPWV9fWNsYXNzIFBzSWZFbHNlIGV4dGVuZHMgUHNOb2Rle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIobXIpO3RoaXMudGhlbj1lO3RoaXMub3RoZXJ3aXNlPXR9fWNsYXNzIFBzQXJnTm9kZSBleHRlbmRzIFBzTm9kZXtjb25zdHJ1Y3RvcihlKXtzdXBlcihwcik7dGhpcy5pbmRleD1lO3RoaXMudmFsdWVUeXBlPXJyfX1jbGFzcyBQc0NvbnN0Tm9kZSBleHRlbmRzIFBzTm9kZXtjb25zdHJ1Y3RvcihlKXtzdXBlcihkcik7dGhpcy52YWx1ZT1lO3RoaXMudmFsdWVUeXBlPSJib29sZWFuIj09dHlwZW9mIGU/aXI6cnJ9fWNsYXNzIFBzVW5hcnlOb2RlIGV4dGVuZHMgUHNOb2Rle2NvbnN0cnVjdG9yKGUsdCxhPW9yKXtzdXBlcihncik7dGhpcy5vcD1lO3RoaXMub3BlcmFuZD10O3RoaXMudmFsdWVUeXBlPWF9fWNsYXNzIFBzQmluYXJ5Tm9kZSBleHRlbmRzIFBzTm9kZXtjb25zdHJ1Y3RvcihlLHQsYSxuPW9yKXtzdXBlcihicik7dGhpcy5vcD1lO3RoaXMuZmlyc3Q9dDt0aGlzLnNlY29uZD1hO3RoaXMudmFsdWVUeXBlPW59fWNsYXNzIFBzVGVybmFyeU5vZGUgZXh0ZW5kcyBQc05vZGV7Y29uc3RydWN0b3IoZSx0LGEsbj1vcil7c3VwZXIod3IpO3RoaXMuY29uZD1lO3RoaXMudGhlbj10O3RoaXMub3RoZXJ3aXNlPWE7dGhpcy52YWx1ZVR5cGU9bn19Y2xhc3MgYXN0X1BhcnNlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmxleGVyPWU7dGhpcy5fdG9rZW49bnVsbH1zdGF0aWMgX2lzUmVndWxhck9wZXJhdG9yKGUpe3JldHVybiBlPj1zci50cnVlJiZlPHNyLmlmfV9hZHZhbmNlKCl7dGhpcy5fdG9rZW49dGhpcy5sZXhlci5uZXh0KCl9X2V4cGVjdChlKXtpZih0aGlzLl90b2tlbi5pZCE9PWUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBQb3N0U2NyaXB0IGZ1bmN0aW9uOiBleHBlY3RlZCB0b2tlbiBpZCAke2V9LCBnb3QgJHt0aGlzLl90b2tlbi5pZH0uYCk7Y29uc3QgdD10aGlzLl90b2tlbjt0aGlzLl9hZHZhbmNlKCk7cmV0dXJuIHR9cGFyc2UoKXt0aGlzLl9hZHZhbmNlKCk7dGhpcy5fZXhwZWN0KHNyLmxicmFjZSk7Y29uc3QgZT10aGlzLl9wYXJzZUJsb2NrKCk7dGhpcy5fZXhwZWN0KHNyLnJicmFjZSk7dGhpcy5fdG9rZW4uaWQhPT1zci5lb2YmJndhcm4oIlBvc3RTY3JpcHQgZnVuY3Rpb246IHVuZXhwZWN0ZWQgY29udGVudCBhZnRlciBjbG9zaW5nIGJyYWNlLiIpO3JldHVybiBuZXcgUHNQcm9ncmFtKGUpfV9wYXJzZUJsb2NrKCl7Y29uc3QgZT1bXTtmb3IoOzspe2NvbnN0IHQ9dGhpcy5fdG9rZW47c3dpdGNoKHQuaWQpe2Nhc2Ugc3IubnVtYmVyOmUucHVzaChuZXcgUHNOdW1iZXIodC52YWx1ZSkpO3RoaXMuX2FkdmFuY2UoKTticmVhaztjYXNlIHNyLmxicmFjZTp7dGhpcy5fYWR2YW5jZSgpO2NvbnN0IHQ9dGhpcy5fcGFyc2VCbG9jaygpO3RoaXMuX2V4cGVjdChzci5yYnJhY2UpO2lmKHRoaXMuX3Rva2VuLmlkPT09c3IuaWYpe3RoaXMuX2FkdmFuY2UoKTtlLnB1c2gobmV3IFBzSWYodCkpfWVsc2V7aWYodGhpcy5fdG9rZW4uaWQhPT1zci5sYnJhY2UpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQb3N0U2NyaXB0IGZ1bmN0aW9uOiBhIHByb2NlZHVyZSBibG9jayBtdXN0IGJlIGZvbGxvd2VkIGJ5ICdpZicgb3IgJ3vigKZ9IGlmZWxzZScuIik7e3RoaXMuX2FkdmFuY2UoKTtjb25zdCBhPXRoaXMuX3BhcnNlQmxvY2soKTt0aGlzLl9leHBlY3Qoc3IucmJyYWNlKTt0aGlzLl9leHBlY3Qoc3IuaWZlbHNlKTtlLnB1c2gobmV3IFBzSWZFbHNlKHQsYSkpfX1icmVha31jYXNlIHNyLnJicmFjZTpjYXNlIHNyLmVvZjpyZXR1cm4gbmV3IFBzQmxvY2soZSk7Y2FzZSBzci5pZjpjYXNlIHNyLmlmZWxzZTp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFBvc3RTY3JpcHQgZnVuY3Rpb246IHVuZXhwZWN0ZWQgJyR7dC52YWx1ZX0nIG9wZXJhdG9yLmApO2RlZmF1bHQ6aWYoYXN0X1BhcnNlci5faXNSZWd1bGFyT3BlcmF0b3IodC5pZCkpe2UucHVzaChuZXcgUHNPcGVyYXRvcih0LmlkKSk7dGhpcy5fYWR2YW5jZSgpO2JyZWFrfXRocm93IG5ldyBGb3JtYXRFcnJvcihgUG9zdFNjcmlwdCBmdW5jdGlvbjogdW5leHBlY3RlZCB0b2tlbiBpZCAke3QuaWR9LmApfX19fWZ1bmN0aW9uIHBhcnNlUG9zdFNjcmlwdEZ1bmN0aW9uKGUpe3JldHVybiBuZXcgYXN0X1BhcnNlcihuZXcgbGV4ZXJfTGV4ZXIoZSkpLnBhcnNlKCl9ZnVuY3Rpb24gX25vZGVzRXF1YWwoZSx0KXtpZihlPT09dClyZXR1cm4hMDtpZihlLnR5cGUhPT10LnR5cGUpcmV0dXJuITE7c3dpdGNoKGUudHlwZSl7Y2FzZSBwcjpyZXR1cm4gZS5pbmRleD09PXQuaW5kZXg7Y2FzZSBkcjpyZXR1cm4gZS52YWx1ZT09PXQudmFsdWU7Y2FzZSBncjpyZXR1cm4gZS5vcD09PXQub3AmJl9ub2Rlc0VxdWFsKGUub3BlcmFuZCx0Lm9wZXJhbmQpO2Nhc2UgYnI6cmV0dXJuIGUub3A9PT10Lm9wJiZfbm9kZXNFcXVhbChlLmZpcnN0LHQuZmlyc3QpJiZfbm9kZXNFcXVhbChlLnNlY29uZCx0LnNlY29uZCk7Y2FzZSB3cjpyZXR1cm4gX25vZGVzRXF1YWwoZS5jb25kLHQuY29uZCkmJl9ub2Rlc0VxdWFsKGUudGhlbix0LnRoZW4pJiZfbm9kZXNFcXVhbChlLm90aGVyd2lzZSx0Lm90aGVyd2lzZSk7ZGVmYXVsdDpyZXR1cm4hMX19Y29uc3QganI9MTAwO2NsYXNzIFBTU3RhY2tUb1RyZWV7c3RhdGljI0llPW51bGw7c3RhdGljI0ZlPW51bGw7c3RhdGljI1RlPW51bGw7c3RhdGljI1JlPW51bGw7c3RhdGljI09lKCl7dGhpcy4jSWU9bmV3IFNldChbc3IuYWRkLHNyLnN1Yixzci5tdWwsc3IuZGl2LHNyLmlkaXYsc3IubW9kLHNyLmV4cCxzci5hdGFuLHNyLmVxLHNyLm5lLHNyLmd0LHNyLmdlLHNyLmx0LHNyLmxlLHNyLmFuZCxzci5vcixzci54b3Isc3IuYml0c2hpZnRdKTt0aGlzLiNGZT1uZXcgU2V0KFtzci5hYnMsc3IubmVnLHNyLmNlaWxpbmcsc3IuZmxvb3Isc3Iucm91bmQsc3IudHJ1bmNhdGUsc3Iuc3FydCxzci5zaW4sc3IuY29zLHNyLmxuLHNyLmxvZyxzci5jdmksc3IuY3ZyLHNyLm5vdF0pO3RoaXMuI1RlPW5ldyBTZXQoW3NyLmFicyxzci5jZWlsaW5nLHNyLmN2aSxzci5jdnIsc3IuZmxvb3Isc3Iucm91bmQsc3IudHJ1bmNhdGVdKTt0aGlzLiNSZT1uZXcgTWFwKFtbc3IuZXEsc3IubmVdLFtzci5uZSxzci5lcV0sW3NyLmx0LHNyLmdlXSxbc3IubGUsc3IuZ3RdLFtzci5ndCxzci5sZV0sW3NyLmdlLHNyLmx0XV0pfWV2YWx1YXRlKGUsdCl7UFNTdGFja1RvVHJlZS4jSWV8fFBTU3RhY2tUb1RyZWUuI09lKCk7dGhpcy5fZmFpbGVkPSExO2lmKHQ+anIpcmV0dXJuIG51bGw7Y29uc3QgYT1bXTtmb3IobGV0IGU9MDtlPHQ7ZSsrKWEucHVzaChuZXcgUHNBcmdOb2RlKGUpKTt0aGlzLl9ldmFsQmxvY2soZS5ib2R5LGEpO2lmKHRoaXMuX2ZhaWxlZClyZXR1cm4gbnVsbDtQU1N0YWNrVG9UcmVlLiNCZShhKTtyZXR1cm4gYX1zdGF0aWMjQmUoZSl7Y29uc3QgdD1uZXcgTWFwLHZpc2l0PWU9PntpZighZXx8ZS50eXBlPT09cHJ8fGUudHlwZT09PWRyKXJldHVybjtjb25zdCBhPXQuZ2V0KGUpPz8wO3Quc2V0KGUsYSsxKTtpZighKGE+MCkpc3dpdGNoKGUudHlwZSl7Y2FzZSBncjp2aXNpdChlLm9wZXJhbmQpO2JyZWFrO2Nhc2UgYnI6dmlzaXQoZS5maXJzdCk7dmlzaXQoZS5zZWNvbmQpO2JyZWFrO2Nhc2Ugd3I6dmlzaXQoZS5jb25kKTt2aXNpdChlLnRoZW4pO3Zpc2l0KGUub3RoZXJ3aXNlKX19O2Zvcihjb25zdCB0IG9mIGUpdmlzaXQodCk7Zm9yKGNvbnN0W2UsYV1vZiB0KWlmKGE+MSl7ZS5zaGFyZWQ9ITA7ZS5zaGFyZWRDb3VudD1hfX1fZXZhbEJsb2NrKGUsdCl7dGhpcy5fZXZhbEJsb2NrRnJvbShlLmluc3RydWN0aW9ucywwLHQpfV9ldmFsQmxvY2tGcm9tKGUsdCxhKXtmb3IobGV0IG49dDtuPGUubGVuZ3RoJiYhdGhpcy5fZmFpbGVkO24rKyl7Y29uc3QgdD1lW25dO3N3aXRjaCh0LnR5cGUpe2Nhc2UgY3I6YS5wdXNoKG5ldyBQc0NvbnN0Tm9kZSh0LnZhbHVlKSk7YS5sZW5ndGg+anImJih0aGlzLl9mYWlsZWQ9ITApO2JyZWFrO2Nhc2UgaHI6dGhpcy5fZXZhbE9wKHQub3AsYSk7YnJlYWs7Y2FzZSB1cjp7aWYoYS5sZW5ndGg8MSl7dGhpcy5fZmFpbGVkPSEwO2JyZWFrfWNvbnN0IHM9YS5wb3AoKSxyPWEuc2xpY2UoKTt0aGlzLl9ldmFsQmxvY2sodC50aGVuLGEpO2lmKHRoaXMuX2ZhaWxlZClicmVhaztpZihhLmxlbmd0aD09PXIubGVuZ3RoKWZvcihsZXQgZT0wO2U8YS5sZW5ndGg7ZSsrKWFbZV0hPT1yW2VdJiYoYVtlXT10aGlzLl9tYWtlVGVybmFyeShzLGFbZV0scltlXSkpO2Vsc2V7aWYoYS5sZW5ndGg+ci5sZW5ndGgpe2lmKHMudHlwZT09PWRyKXtpZighcy52YWx1ZSl7YS5sZW5ndGg9MDthLnB1c2goLi4ucil9YnJlYWt9Y29uc3QgdD1hLnNsaWNlKCk7dGhpcy5fZXZhbEJsb2NrRnJvbShlLG4rMSx0KTtpZih0aGlzLl9mYWlsZWQpYnJlYWs7Y29uc3QgaT1yO3RoaXMuX2V2YWxCbG9ja0Zyb20oZSxuKzEsaSk7aWYodGhpcy5fZmFpbGVkKWJyZWFrO2lmKHQubGVuZ3RoIT09aS5sZW5ndGgpe2NvbnN0IGU9bmV3IFBzQ29uc3ROb2RlKDApO2Zvcig7dC5sZW5ndGg8aS5sZW5ndGg7KXQucHVzaChlKTtmb3IoO2kubGVuZ3RoPHQubGVuZ3RoOylpLnB1c2goZSl9YS5sZW5ndGg9MDtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKylhLnB1c2godGhpcy5fbWFrZVRlcm5hcnkocyx0W2VdLGlbZV0pKTtyZXR1cm59dGhpcy5fZmFpbGVkPSEwfWJyZWFrfWNhc2UgbXI6e2lmKGEubGVuZ3RoPDEpe3RoaXMuX2ZhaWxlZD0hMDticmVha31jb25zdCBlPWEucG9wKCksbj1hLnNsaWNlKCkscz1uLnNsaWNlKCk7dGhpcy5fZXZhbEJsb2NrKHQudGhlbixzKTtpZih0aGlzLl9mYWlsZWQpYnJlYWs7Y29uc3Qgcj1uLnNsaWNlKCk7dGhpcy5fZXZhbEJsb2NrKHQub3RoZXJ3aXNlLHIpO2lmKHRoaXMuX2ZhaWxlZClicmVhaztpZihzLmxlbmd0aCE9PXIubGVuZ3RoKXtjb25zdCBlPW5ldyBQc0NvbnN0Tm9kZSgwKTtmb3IoO3MubGVuZ3RoPHIubGVuZ3RoOylzLnB1c2goZSk7Zm9yKDtyLmxlbmd0aDxzLmxlbmd0aDspci5wdXNoKGUpfWEubGVuZ3RoPTA7Zm9yKGxldCB0PTA7dDxzLmxlbmd0aDt0KyspYS5wdXNoKHRoaXMuX21ha2VUZXJuYXJ5KGUsc1t0XSxyW3RdKSk7YnJlYWt9fX19X2V2YWxPcChlLHQpe2lmKFBTU3RhY2tUb1RyZWUuI0llLmhhcyhlKSl7aWYodC5sZW5ndGg8Mil7dGhpcy5fZmFpbGVkPSEwO3JldHVybn1jb25zdCBhPXQucG9wKCksbj10LnBvcCgpO3QucHVzaCh0aGlzLl9tYWtlQmluYXJ5KGUsYSxuKSk7cmV0dXJufWlmKFBTU3RhY2tUb1RyZWUuI0ZlLmhhcyhlKSl7aWYodC5sZW5ndGg8MSl7dGhpcy5fZmFpbGVkPSEwO3JldHVybn10LnB1c2godGhpcy5fbWFrZVVuYXJ5KGUsdC5wb3AoKSkpfWVsc2Ugc3dpdGNoKGUpe2Nhc2Ugc3IudHJ1ZTp0LnB1c2gobmV3IFBzQ29uc3ROb2RlKCEwKSk7dC5sZW5ndGg+anImJih0aGlzLl9mYWlsZWQ9ITApO2JyZWFrO2Nhc2Ugc3IuZmFsc2U6dC5wdXNoKG5ldyBQc0NvbnN0Tm9kZSghMSkpO3QubGVuZ3RoPmpyJiYodGhpcy5fZmFpbGVkPSEwKTticmVhaztjYXNlIHNyLmR1cDppZih0Lmxlbmd0aDwxKXt0aGlzLl9mYWlsZWQ9ITA7YnJlYWt9dC5wdXNoKHQuYXQoLTEpKTt0Lmxlbmd0aD5qciYmKHRoaXMuX2ZhaWxlZD0hMCk7YnJlYWs7Y2FzZSBzci5leGNoOntpZih0Lmxlbmd0aDwyKXt0aGlzLl9mYWlsZWQ9ITA7YnJlYWt9Y29uc3QgZT10LnBvcCgpLGE9dC5wb3AoKTt0LnB1c2goZSxhKTticmVha31jYXNlIHNyLnBvcDppZih0Lmxlbmd0aDwxKXt0aGlzLl9mYWlsZWQ9ITA7YnJlYWt9dC5wb3AoKTticmVhaztjYXNlIHNyLmNvcHk6e2lmKHQubGVuZ3RoPDEpe3RoaXMuX2ZhaWxlZD0hMDticmVha31jb25zdCBlPXQucG9wKCk7aWYoZS50eXBlPT09ZHIpe2NvbnN0IGE9MHxlLnZhbHVlO2lmKDA9PT1hKTtlbHNlIGlmKGE8MHx8YT50Lmxlbmd0aCl0aGlzLl9mYWlsZWQ9ITA7ZWxzZXt0LnB1c2goLi4udC5zbGljZSgtYSkpO3QubGVuZ3RoPmpyJiYodGhpcy5fZmFpbGVkPSEwKX19ZWxzZSB0aGlzLl9mYWlsZWQ9ITA7YnJlYWt9Y2FzZSBzci5pbmRleDp7aWYodC5sZW5ndGg8MSl7dGhpcy5fZmFpbGVkPSEwO2JyZWFrfWNvbnN0IGU9dC5wb3AoKTtpZihlLnR5cGU9PT1kcil7Y29uc3QgYT0wfGUudmFsdWU7YTwwfHxhPj10Lmxlbmd0aD90aGlzLl9mYWlsZWQ9ITA6dC5wdXNoKHQuYXQoLWEtMSkpfWVsc2UgdGhpcy5fZmFpbGVkPSEwO2JyZWFrfWNhc2Ugc3Iucm9sbDp7aWYodC5sZW5ndGg8Mil7dGhpcy5fZmFpbGVkPSEwO2JyZWFrfWNvbnN0IGU9dC5wb3AoKSxhPXQucG9wKCk7aWYoYS50eXBlPT09ZHImJmUudHlwZT09PWRyKXtjb25zdCBuPTB8YS52YWx1ZTtpZigwPT09bik7ZWxzZSBpZihuPDB8fG4+dC5sZW5ndGgpdGhpcy5fZmFpbGVkPSEwO2Vsc2V7Y29uc3QgYT0oKDB8ZS52YWx1ZSklbituKSVuO2lmKGE+MCl7Y29uc3QgZT10LnNwbGljZSgtbixuKTt0LnB1c2goLi4uZS5zbGljZShuLWEpLC4uLmUuc2xpY2UoMCxuLWEpKX19fWVsc2UgdGhpcy5fZmFpbGVkPSEwO2JyZWFrfWRlZmF1bHQ6dGhpcy5fZmFpbGVkPSEwfX1fbWFrZUJpbmFyeShlLHQsYSl7aWYodC50eXBlPT09ZHImJmEudHlwZT09PWRyKXtjb25zdCBuPWZ1bmN0aW9uIF9ldmFsQmluYXJ5Q29uc3QoZSx0LGEpe3N3aXRjaChlKXtjYXNlIHNyLmFkZDpyZXR1cm4gdCthO2Nhc2Ugc3Iuc3ViOnJldHVybiB0LWE7Y2FzZSBzci5tdWw6cmV0dXJuIHQqYTtjYXNlIHNyLmRpdjpyZXR1cm4gMCE9PWE/dC9hOjA7Y2FzZSBzci5pZGl2OnJldHVybiAwIT09YT9NYXRoLnRydW5jKHQvYSk6MDtjYXNlIHNyLm1vZDpyZXR1cm4gMCE9PWE/dC1NYXRoLnRydW5jKHQvYSkqYTowO2Nhc2Ugc3IuZXhwOntjb25zdCBlPXQqKmE7cmV0dXJuIE51bWJlci5pc0Zpbml0ZShlKT9lOnZvaWQgMH1jYXNlIHNyLmF0YW46e2xldCBlPU1hdGguYXRhbjIodCxhKSooMTgwL01hdGguUEkpO2U8MCYmKGUrPTM2MCk7cmV0dXJuIGV9Y2FzZSBzci5lcTpyZXR1cm4gdD09PWE7Y2FzZSBzci5uZTpyZXR1cm4gdCE9PWE7Y2FzZSBzci5ndDpyZXR1cm4gdD5hO2Nhc2Ugc3IuZ2U6cmV0dXJuIHQ+PWE7Y2FzZSBzci5sdDpyZXR1cm4gdDxhO2Nhc2Ugc3IubGU6cmV0dXJuIHQ8PWE7Y2FzZSBzci5hbmQ6cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgdD90JiZhOnQmYXwwO2Nhc2Ugc3Iub3I6cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgdD90fHxhOnR8YXwwO2Nhc2Ugc3IueG9yOnJldHVybiJib29sZWFuIj09dHlwZW9mIHQ/dCE9PWE6dF5hfDA7Y2FzZSBzci5iaXRzaGlmdDpyZXR1cm4gYT49MD90PDxhfDA6dD4+LWF8MDtjYXNlIHNyLm1pbjpyZXR1cm4gTWF0aC5taW4odCxhKTtjYXNlIHNyLm1heDpyZXR1cm4gTWF0aC5tYXgodCxhKTtkZWZhdWx0OnJldHVybn19KGUsYS52YWx1ZSx0LnZhbHVlKTtpZih2b2lkIDAhPT1uKXJldHVybiBuZXcgUHNDb25zdE5vZGUobil9aWYoX25vZGVzRXF1YWwodCxhKSlzd2l0Y2goZSl7Y2FzZSBzci5zdWI6cmV0dXJuIG5ldyBQc0NvbnN0Tm9kZSgwKTtjYXNlIHNyLnhvcjpyZXR1cm4gbmV3IFBzQ29uc3ROb2RlKHQudmFsdWVUeXBlIT09aXImJjApO2Nhc2Ugc3IuYW5kOmNhc2Ugc3Iub3I6Y2FzZSBzci5taW46Y2FzZSBzci5tYXg6cmV0dXJuIHQ7Y2FzZSBzci5lcTpjYXNlIHNyLmdlOmNhc2Ugc3IubGU6cmV0dXJuIG5ldyBQc0NvbnN0Tm9kZSghMCk7Y2FzZSBzci5uZTpjYXNlIHNyLmd0OmNhc2Ugc3IubHQ6cmV0dXJuIG5ldyBQc0NvbnN0Tm9kZSghMSl9aWYodC50eXBlPT09ZHIpe2NvbnN0IG49dC52YWx1ZTtzd2l0Y2goZSl7Y2FzZSBzci5hZGQ6Y2FzZSBzci5zdWI6aWYoMD09PW4pcmV0dXJuIGE7YnJlYWs7Y2FzZSBzci5tdWw6aWYoMT09PW4pcmV0dXJuIGE7aWYoMD09PW4pcmV0dXJuIHQ7aWYoLTE9PT1uKXJldHVybiB0aGlzLl9tYWtlVW5hcnkoc3IubmVnLGEpO2JyZWFrO2Nhc2Ugc3IuZGl2OmlmKDAhPT1uKXJldHVybiB0aGlzLl9tYWtlQmluYXJ5KHNyLm11bCxuZXcgUHNDb25zdE5vZGUoMS9uKSxhKTticmVhaztjYXNlIHNyLmlkaXY6aWYoMT09PW4pcmV0dXJuIGE7YnJlYWs7Y2FzZSBzci5leHA6aWYoMT09PW4pcmV0dXJuIGE7aWYoLTE9PT1uKXJldHVybiB0aGlzLl9tYWtlQmluYXJ5KHNyLmRpdixhLG5ldyBQc0NvbnN0Tm9kZSgxKSk7aWYoLjU9PT1uKXJldHVybiB0aGlzLl9tYWtlVW5hcnkoc3Iuc3FydCxhKTtpZiguMjU9PT1uKXtjb25zdCBlPXRoaXMuX21ha2VVbmFyeShzci5zcXJ0LGEpO3JldHVybiB0aGlzLl9tYWtlVW5hcnkoc3Iuc3FydCxlKX1pZigyPT09bilyZXR1cm4gdGhpcy5fbWFrZUJpbmFyeShzci5tdWwsYSxhKTtpZigzPT09bilyZXR1cm4gdGhpcy5fbWFrZUJpbmFyeShzci5tdWwsdGhpcy5fbWFrZUJpbmFyeShzci5tdWwsYSxhKSxhKTtpZig0PT09bil7Y29uc3QgZT10aGlzLl9tYWtlQmluYXJ5KHNyLm11bCxhLGEpO3JldHVybiB0aGlzLl9tYWtlQmluYXJ5KHNyLm11bCxlLGUpfWlmKDA9PT1uKXJldHVybiBuZXcgUHNDb25zdE5vZGUoMSk7YnJlYWs7Y2FzZSBzci5hbmQ6aWYoITA9PT1uKXJldHVybiBhO2lmKCExPT09bilyZXR1cm4gdDticmVhaztjYXNlIHNyLm9yOmlmKCExPT09bilyZXR1cm4gYTtpZighMD09PW4pcmV0dXJuIHQ7YnJlYWs7Y2FzZSBzci5taW46aWYoYS50eXBlPT09YnImJmEub3A9PT1zci5tYXgmJmEuZmlyc3QudHlwZT09PWRyJiZhLmZpcnN0LnZhbHVlPj1uKXJldHVybiB0O2JyZWFrO2Nhc2Ugc3IubWF4OmlmKGEudHlwZT09PWJyJiZhLm9wPT09c3IubWluJiZhLmZpcnN0LnR5cGU9PT1kciYmYS5maXJzdC52YWx1ZTw9bilyZXR1cm4gdH19aWYoYS50eXBlPT09ZHIpe2NvbnN0IG49YS52YWx1ZTtzd2l0Y2goZSl7Y2FzZSBzci5hZGQ6aWYoMD09PW4pcmV0dXJuIHQ7YnJlYWs7Y2FzZSBzci5zdWI6aWYoMD09PW4pcmV0dXJuIHRoaXMuX21ha2VVbmFyeShzci5uZWcsdCk7YnJlYWs7Y2FzZSBzci5tdWw6aWYoMT09PW4pcmV0dXJuIHQ7aWYoMD09PW4pcmV0dXJuIGE7aWYoLTE9PT1uKXJldHVybiB0aGlzLl9tYWtlVW5hcnkoc3IubmVnLHQpO2JyZWFrO2Nhc2Ugc3IuYW5kOmlmKCEwPT09bilyZXR1cm4gdDtpZighMT09PW4pcmV0dXJuIGE7YnJlYWs7Y2FzZSBzci5vcjppZighMT09PW4pcmV0dXJuIHQ7aWYoITA9PT1uKXJldHVybiBhfX1yZXR1cm4gbmV3IFBzQmluYXJ5Tm9kZShlLHQsYSxmdW5jdGlvbiBfYmluYXJ5VmFsdWVUeXBlKGUsdCxhKXtzd2l0Y2goZSl7Y2FzZSBzci5lcTpjYXNlIHNyLm5lOmNhc2Ugc3IuZ3Q6Y2FzZSBzci5nZTpjYXNlIHNyLmx0OmNhc2Ugc3IubGU6cmV0dXJuIGlyO2Nhc2Ugc3IuYW5kOmNhc2Ugc3Iub3I6Y2FzZSBzci54b3I6cmV0dXJuIHQ9PT1hJiZ0IT09b3I/dDpvcjtkZWZhdWx0OnJldHVybiBycn19KGUsdC52YWx1ZVR5cGUsYS52YWx1ZVR5cGUpKX1fbWFrZVVuYXJ5KGUsdCl7aWYodC50eXBlPT09ZHIpe2NvbnN0IGE9ZnVuY3Rpb24gX2V2YWxVbmFyeUNvbnN0KGUsdCl7c3dpdGNoKGUpe2Nhc2Ugc3IuYWJzOnJldHVybiBNYXRoLmFicyh0KTtjYXNlIHNyLm5lZzpyZXR1cm4tdDtjYXNlIHNyLmNlaWxpbmc6cmV0dXJuIE1hdGguY2VpbCh0KTtjYXNlIHNyLmZsb29yOnJldHVybiBNYXRoLmZsb29yKHQpO2Nhc2Ugc3Iucm91bmQ6cmV0dXJuIE1hdGgucm91bmQodCk7Y2FzZSBzci50cnVuY2F0ZTpyZXR1cm4gTWF0aC50cnVuYyh0KTtjYXNlIHNyLnNxcnQ6e2NvbnN0IGU9TWF0aC5zcXJ0KHQpO3JldHVybiBOdW1iZXIuaXNGaW5pdGUoZSk/ZTp2b2lkIDB9Y2FzZSBzci5zaW46cmV0dXJuIE1hdGguc2luKHQlMzYwKk1hdGguUEkvMTgwKTtjYXNlIHNyLmNvczpyZXR1cm4gTWF0aC5jb3ModCUzNjAqTWF0aC5QSS8xODApO2Nhc2Ugc3IubG46e2NvbnN0IGU9TWF0aC5sb2codCk7cmV0dXJuIE51bWJlci5pc0Zpbml0ZShlKT9lOnZvaWQgMH1jYXNlIHNyLmxvZzp7Y29uc3QgZT1NYXRoLmxvZzEwKHQpO3JldHVybiBOdW1iZXIuaXNGaW5pdGUoZSk/ZTp2b2lkIDB9Y2FzZSBzci5jdmk6cmV0dXJuIE1hdGgudHJ1bmModCk7Y2FzZSBzci5jdnI6cmV0dXJuIHQ7Y2FzZSBzci5ub3Q6cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgdD8hdDp+dDtkZWZhdWx0OnJldHVybn19KGUsdC52YWx1ZSk7aWYodm9pZCAwIT09YSlyZXR1cm4gbmV3IFBzQ29uc3ROb2RlKGEpfWlmKGU9PT1zci5ub3QmJnQudHlwZT09PWJyKXtjb25zdCBlPVBTU3RhY2tUb1RyZWUuI1JlLmdldCh0Lm9wKTtpZih2b2lkIDAhPT1lKXJldHVybiBuZXcgUHNCaW5hcnlOb2RlKGUsdC5maXJzdCx0LnNlY29uZCxpcil9aWYoZT09PXNyLm5lZyYmdC50eXBlPT09YnImJnQub3A9PT1zci5zdWIpcmV0dXJuIHRoaXMuX21ha2VCaW5hcnkoc3Iuc3ViLHQuc2Vjb25kLHQuZmlyc3QpO2lmKHQudHlwZT09PWdyKXtpZihlPT09c3IubmVnJiZ0Lm9wPT09c3IubmVnfHxlPT09c3Iubm90JiZ0Lm9wPT09c3Iubm90KXJldHVybiB0Lm9wZXJhbmQ7aWYoZT09PXNyLmFicyYmdC5vcD09PXNyLm5lZylyZXR1cm4gdGhpcy5fbWFrZVVuYXJ5KHNyLmFicyx0Lm9wZXJhbmQpO2lmKFBTU3RhY2tUb1RyZWUuI1RlLmhhcyhlKSYmZT09PXQub3ApcmV0dXJuIHR9cmV0dXJuIG5ldyBQc1VuYXJ5Tm9kZShlLHQsZnVuY3Rpb24gX3VuYXJ5VmFsdWVUeXBlKGUsdCl7cmV0dXJuIGU9PT1zci5ub3Q/dDpycn0oZSx0LnZhbHVlVHlwZSkpfV9tYWtlVGVybmFyeShlLHQsYSl7aWYoZS50eXBlPT09ZHIpcmV0dXJuIGUudmFsdWU/dDphO2lmKF9ub2Rlc0VxdWFsKHQsYSkpcmV0dXJuIHQ7aWYodC50eXBlPT09ZHImJmEudHlwZT09PWRyKXtpZighMD09PXQudmFsdWUmJiExPT09YS52YWx1ZSlyZXR1cm4gZTtpZighMT09PXQudmFsdWUmJiEwPT09YS52YWx1ZSlyZXR1cm4gdGhpcy5fbWFrZVVuYXJ5KHNyLm5vdCxlKX1pZihlLnR5cGU9PT1icil7Y29uc3R7b3A6bixmaXJzdDpzLHNlY29uZDpyfT1lO2lmKG49PT1zci5ndHx8bj09PXNyLmdlKXtpZihfbm9kZXNFcXVhbCh0LHMpJiZfbm9kZXNFcXVhbChhLHIpKXJldHVybiB0aGlzLl9tYWtlQmluYXJ5KHNyLm1pbixzLHIpO2lmKF9ub2Rlc0VxdWFsKHQscikmJl9ub2Rlc0VxdWFsKGEscykpcmV0dXJuIHRoaXMuX21ha2VCaW5hcnkoc3IubWF4LHMscil9ZWxzZSBpZihuPT09c3IubHR8fG49PT1zci5sZSl7aWYoX25vZGVzRXF1YWwodCxzKSYmX25vZGVzRXF1YWwoYSxyKSlyZXR1cm4gdGhpcy5fbWFrZUJpbmFyeShzci5tYXgscyxyKTtpZihfbm9kZXNFcXVhbCh0LHIpJiZfbm9kZXNFcXVhbChhLHMpKXJldHVybiB0aGlzLl9tYWtlQmluYXJ5KHNyLm1pbixzLHIpfX1yZXR1cm4gbmV3IFBzVGVybmFyeU5vZGUoZSx0LGEsdC52YWx1ZVR5cGU9PT1hLnZhbHVlVHlwZT90LnZhbHVlVHlwZTpvcil9fWNvbnN0IGtyPTAseXI9MSxxcj0yLHZyPTMsU3I9NCxBcj01LHhyPTYsQ3I9NyxJcj04LEZyPTksVHI9MTAsUnI9MTEsT3I9MTIsRHI9MTMsSHI9MTQsTXI9MTUsTnI9MTYsUHI9MTcsRXI9MTgsX3I9MTksenI9MjAsTHI9MjEsVXI9MjIsV3I9MjMsWHI9MjQsS3I9MjUsR3I9MjYsVnI9MjcsJHI9MjgsWXI9MjksSnI9MzAsUXI9MzEsWnI9MzIsZWk9MzMsdGk9MzQsYWk9MzUsbmk9MzYsc2k9Mzcscmk9MzgsaWk9Mzksb2k9NDAsbGk9TWF0aC5QSS8xODAsZmk9MTgwL01hdGguUEk7Y2xhc3MgUHNKc0NvbXBpbGVye3N0YXRpYyNEZT1uZXcgRmxvYXQ2NEFycmF5KDY0KTtzdGF0aWMjSGU9bmV3IEZsb2F0NjRBcnJheSg2NCk7Y29uc3RydWN0b3IoZSx0KXt0aGlzLm5Jbj1lLmxlbmd0aD4+MTt0aGlzLm5PdXQ9dC5sZW5ndGg+PjE7dGhpcy5yYW5nZT10O3RoaXMuaXI9W107dGhpcy5fdG1wTWFwPW5ldyBNYXA7dGhpcy5fbmV4dFRtcD0wfV9jb21waWxlTm9kZShlKXtpZihlLnNoYXJlZCl7Y29uc3QgdD10aGlzLl90bXBNYXAuZ2V0KGUpO2lmKHZvaWQgMCE9PXQpe3RoaXMuaXIucHVzaChvaSx0KTtyZXR1cm4hMH1pZighdGhpcy5fY29tcGlsZU5vZGVJbXBsKGUpKXJldHVybiExO2NvbnN0IGE9dGhpcy5fbmV4dFRtcCsrO3RoaXMuX3RtcE1hcC5zZXQoZSxhKTt0aGlzLmlyLnB1c2goaWksYSk7cmV0dXJuITB9cmV0dXJuIHRoaXMuX2NvbXBpbGVOb2RlSW1wbChlKX1fY29tcGlsZU5vZGVJbXBsKGUpe3N3aXRjaChlLnR5cGUpe2Nhc2UgcHI6dGhpcy5pci5wdXNoKGtyLGUuaW5kZXgpO3JldHVybiEwO2Nhc2UgZHI6e2NvbnN0IHQ9ZS52YWx1ZTt0aGlzLmlyLnB1c2goeXIsImJvb2xlYW4iPT10eXBlb2YgdD9OdW1iZXIodCk6dCk7cmV0dXJuITB9Y2FzZSBncjpyZXR1cm4gdGhpcy5fY29tcGlsZVVuYXJ5KGUpO2Nhc2UgYnI6cmV0dXJuIHRoaXMuX2NvbXBpbGVCaW5hcnkoZSk7Y2FzZSB3cjpyZXR1cm4gdGhpcy5fY29tcGlsZVRlcm5hcnkoZSk7ZGVmYXVsdDpyZXR1cm4hMX19X2NvbXBpbGVVbmFyeShlKXtjb25zdHtvcDp0LG9wZXJhbmQ6YSx2YWx1ZVR5cGU6bn09ZTtpZih0PT09c3IuY3ZyKXJldHVybiB0aGlzLl9jb21waWxlTm9kZShhKTtpZighdGhpcy5fY29tcGlsZU5vZGUoYSkpcmV0dXJuITE7c3dpdGNoKHQpe2Nhc2Ugc3IuYWJzOnRoaXMuaXIucHVzaChBcik7YnJlYWs7Y2FzZSBzci5uZWc6dGhpcy5pci5wdXNoKHhyKTticmVhaztjYXNlIHNyLmNlaWxpbmc6dGhpcy5pci5wdXNoKENyKTticmVhaztjYXNlIHNyLmZsb29yOnRoaXMuaXIucHVzaChJcik7YnJlYWs7Y2FzZSBzci5yb3VuZDp0aGlzLmlyLnB1c2goRnIpO2JyZWFrO2Nhc2Ugc3IudHJ1bmNhdGU6dGhpcy5pci5wdXNoKFRyKTticmVhaztjYXNlIHNyLnNxcnQ6dGhpcy5pci5wdXNoKERyKTticmVhaztjYXNlIHNyLnNpbjp0aGlzLmlyLnB1c2goSHIpO2JyZWFrO2Nhc2Ugc3IuY29zOnRoaXMuaXIucHVzaChNcik7YnJlYWs7Y2FzZSBzci5sbjp0aGlzLmlyLnB1c2goTnIpO2JyZWFrO2Nhc2Ugc3IubG9nOnRoaXMuaXIucHVzaChQcik7YnJlYWs7Y2FzZSBzci5jdmk6dGhpcy5pci5wdXNoKEVyKTticmVhaztjYXNlIHNyLm5vdDppZihuPT09aXIpdGhpcy5pci5wdXNoKFJyKTtlbHNle2lmKG4hPT1ycilyZXR1cm4hMTt0aGlzLmlyLnB1c2goT3IpfWJyZWFrO2RlZmF1bHQ6cmV0dXJuITF9cmV0dXJuITB9X2NvbXBpbGVCaW5hcnkoZSl7Y29uc3R7b3A6dCxmaXJzdDphLHNlY29uZDpufT1lO2lmKHQ9PT1zci5iaXRzaGlmdCl7aWYoYS50eXBlIT09ZHJ8fCFOdW1iZXIuaXNJbnRlZ2VyKGEudmFsdWUpfHwhdGhpcy5fY29tcGlsZU5vZGUobikpcmV0dXJuITE7dGhpcy5pci5wdXNoKF9yLGEudmFsdWUpO3JldHVybiEwfWlmKCF0aGlzLl9jb21waWxlTm9kZShuKXx8IXRoaXMuX2NvbXBpbGVOb2RlKGEpKXJldHVybiExO3N3aXRjaCh0KXtjYXNlIHNyLmFkZDp0aGlzLmlyLnB1c2goenIpO2JyZWFrO2Nhc2Ugc3Iuc3ViOnRoaXMuaXIucHVzaChMcik7YnJlYWs7Y2FzZSBzci5tdWw6dGhpcy5pci5wdXNoKFVyKTticmVhaztjYXNlIHNyLmRpdjp0aGlzLmlyLnB1c2goV3IpO2JyZWFrO2Nhc2Ugc3IuaWRpdjp0aGlzLmlyLnB1c2goWHIpO2JyZWFrO2Nhc2Ugc3IubW9kOnRoaXMuaXIucHVzaChLcik7YnJlYWs7Y2FzZSBzci5leHA6dGhpcy5pci5wdXNoKEdyKTticmVhaztjYXNlIHNyLmVxOnRoaXMuaXIucHVzaChWcik7YnJlYWs7Y2FzZSBzci5uZTp0aGlzLmlyLnB1c2goJHIpO2JyZWFrO2Nhc2Ugc3IuZ3Q6dGhpcy5pci5wdXNoKFlyKTticmVhaztjYXNlIHNyLmdlOnRoaXMuaXIucHVzaChKcik7YnJlYWs7Y2FzZSBzci5sdDp0aGlzLmlyLnB1c2goUXIpO2JyZWFrO2Nhc2Ugc3IubGU6dGhpcy5pci5wdXNoKFpyKTticmVhaztjYXNlIHNyLmFuZDp0aGlzLmlyLnB1c2goZWkpO2JyZWFrO2Nhc2Ugc3Iub3I6dGhpcy5pci5wdXNoKHRpKTticmVhaztjYXNlIHNyLnhvcjp0aGlzLmlyLnB1c2goYWkpO2JyZWFrO2Nhc2Ugc3IuYXRhbjp0aGlzLmlyLnB1c2gobmkpO2JyZWFrO2Nhc2Ugc3IubWluOnRoaXMuaXIucHVzaChzaSk7YnJlYWs7Y2FzZSBzci5tYXg6dGhpcy5pci5wdXNoKHJpKTticmVhaztkZWZhdWx0OnJldHVybiExfXJldHVybiEwfV9jb21waWxlVGVybmFyeShlKXtpZighdGhpcy5fY29tcGlsZU5vZGUoZS5jb25kKSlyZXR1cm4hMTt0aGlzLmlyLnB1c2godnIsMCk7Y29uc3QgdD10aGlzLmlyLmxlbmd0aC0xO2lmKCF0aGlzLl9jb21waWxlTm9kZShlLnRoZW4pKXJldHVybiExO3RoaXMuaXIucHVzaChTciwwKTtjb25zdCBhPXRoaXMuaXIubGVuZ3RoLTE7dGhpcy5pclt0XT10aGlzLmlyLmxlbmd0aDtpZighdGhpcy5fY29tcGlsZU5vZGUoZS5vdGhlcndpc2UpKXJldHVybiExO3RoaXMuaXJbYV09dGhpcy5pci5sZW5ndGg7cmV0dXJuITB9Y29tcGlsZShlKXtjb25zdCB0PShuZXcgUFNTdGFja1RvVHJlZSkuZXZhbHVhdGUoZSx0aGlzLm5Jbik7aWYoIXR8fHQubGVuZ3RoPHRoaXMubk91dClyZXR1cm4gbnVsbDtmb3IobGV0IGU9MDtlPHRoaXMubk91dDtlKyspe2lmKCF0aGlzLl9jb21waWxlTm9kZSh0W2VdKSlyZXR1cm4gbnVsbDtjb25zdCBhPXRoaXMucmFuZ2VbMiplXSxuPXRoaXMucmFuZ2VbMiplKzFdO3RoaXMuaXIucHVzaChxcixlLGEsbil9cmV0dXJuIG5ldyBGbG9hdDY0QXJyYXkodGhpcy5pcil9c3RhdGljIGV4ZWN1dGUoZSx0LGEsbixzKXtsZXQgcj0wLGk9MDtjb25zdCBvPWUubGVuZ3RoLGw9dGhpcy4jRGUsZj10aGlzLiNIZTtmb3IoO3I8bzspc3dpdGNoKDB8ZVtyKytdKXtjYXNlIGtyOmxbaSsrXT10W2ErKDB8ZVtyKytdKV07YnJlYWs7Y2FzZSB5cjpsW2krK109ZVtyKytdO2JyZWFrO2Nhc2UgcXI6e2NvbnN0IHQ9MHxlW3IrK10sYT1lW3IrK10sbz1lW3IrK107bltzK3RdPU1hdGhDbGFtcChsWy0taV0sYSxvKTticmVha31jYXNlIHZyOntjb25zdCB0PWVbcisrXTswPT09bFstLWldJiYocj10KTticmVha31jYXNlIFNyOnI9ZVtyXTticmVhaztjYXNlIEFyOmxbaS0xXT1NYXRoLmFicyhsW2ktMV0pO2JyZWFrO2Nhc2UgeHI6bFtpLTFdPS1sW2ktMV07YnJlYWs7Y2FzZSBDcjpsW2ktMV09TWF0aC5jZWlsKGxbaS0xXSk7YnJlYWs7Y2FzZSBJcjpsW2ktMV09TWF0aC5mbG9vcihsW2ktMV0pO2JyZWFrO2Nhc2UgRnI6bFtpLTFdPU1hdGguZmxvb3IobFtpLTFdKy41KTticmVhaztjYXNlIFRyOmxbaS0xXT1NYXRoLnRydW5jKGxbaS0xXSk7YnJlYWs7Y2FzZSBScjpsW2ktMV09MCE9PWxbaS0xXT8wOjE7YnJlYWs7Y2FzZSBPcjpsW2ktMV09fmxbaS0xXTticmVhaztjYXNlIERyOmxbaS0xXT1NYXRoLnNxcnQobFtpLTFdKTticmVhaztjYXNlIEhyOmxbaS0xXT1NYXRoLnNpbihsW2ktMV0lMzYwKmxpKTticmVhaztjYXNlIE1yOmxbaS0xXT1NYXRoLmNvcyhsW2ktMV0lMzYwKmxpKTticmVhaztjYXNlIE5yOmxbaS0xXT1NYXRoLmxvZyhsW2ktMV0pO2JyZWFrO2Nhc2UgUHI6bFtpLTFdPU1hdGgubG9nMTAobFtpLTFdKTticmVhaztjYXNlIEVyOmxbaS0xXT0wfE1hdGgudHJ1bmMobFtpLTFdKTticmVhaztjYXNlIF9yOntjb25zdCB0PWVbcisrXSxhPTB8bFtpLTFdO2xbaS0xXT10PjA/YTw8dDp0PDA/YT4+LXQ6YTticmVha31jYXNlIHpyOntjb25zdCBlPWxbLS1pXTtsW2ktMV0rPWU7YnJlYWt9Y2FzZSBMcjp7Y29uc3QgZT1sWy0taV07bFtpLTFdLT1lO2JyZWFrfWNhc2UgVXI6e2NvbnN0IGU9bFstLWldO2xbaS0xXSo9ZTticmVha31jYXNlIFdyOntjb25zdCBlPWxbLS1pXTtsW2ktMV09MCE9PWU/bFtpLTFdL2U6MDticmVha31jYXNlIFhyOntjb25zdCBlPWxbLS1pXTtsW2ktMV09MCE9PWU/TWF0aC50cnVuYyhsW2ktMV0vZSk6MDticmVha31jYXNlIEtyOntjb25zdCBlPWxbLS1pXTtsW2ktMV09MCE9PWU/bFtpLTFdJWU6MDticmVha31jYXNlIEdyOntjb25zdCBlPWxbLS1pXTtsW2ktMV0qKj1lO2JyZWFrfWNhc2UgVnI6e2NvbnN0IGU9bFstLWldO2xbaS0xXT1sW2ktMV09PT1lPzE6MDticmVha31jYXNlICRyOntjb25zdCBlPWxbLS1pXTtsW2ktMV09bFtpLTFdIT09ZT8xOjA7YnJlYWt9Y2FzZSBZcjp7Y29uc3QgZT1sWy0taV07bFtpLTFdPWxbaS0xXT5lPzE6MDticmVha31jYXNlIEpyOntjb25zdCBlPWxbLS1pXTtsW2ktMV09bFtpLTFdPj1lPzE6MDticmVha31jYXNlIFFyOntjb25zdCBlPWxbLS1pXTtsW2ktMV09bFtpLTFdPGU/MTowO2JyZWFrfWNhc2UgWnI6e2NvbnN0IGU9bFstLWldO2xbaS0xXT1sW2ktMV08PWU/MTowO2JyZWFrfWNhc2UgZWk6e2NvbnN0IGU9MHxsWy0taV07bFtpLTFdPSgwfGxbaS0xXSkmZTticmVha31jYXNlIHRpOntjb25zdCBlPTB8bFstLWldO2xbaS0xXT0wfGxbaS0xXXxlO2JyZWFrfWNhc2UgYWk6e2NvbnN0IGU9MHxsWy0taV07bFtpLTFdPSgwfGxbaS0xXSleZTticmVha31jYXNlIG5pOntjb25zdCBlPWxbLS1pXSx0PU1hdGguYXRhbjIobFtpLTFdLGUpKmZpO2xbaS0xXT10PDA/dCszNjA6dDticmVha31jYXNlIHNpOntjb25zdCBlPWxbLS1pXTtsW2ktMV09TWF0aC5taW4obFtpLTFdLGUpO2JyZWFrfWNhc2Ugcmk6e2NvbnN0IGU9bFstLWldO2xbaS0xXT1NYXRoLm1heChsW2ktMV0sZSk7YnJlYWt9Y2FzZSBpaTpmWzB8ZVtyKytdXT1sW2ktMV07YnJlYWs7Y2FzZSBvaTpsW2krK109ZlswfGVbcisrXV19fX1jbGFzcyBQU1N0YWNrQmFzZWRJbnRlcnByZXRlcntzdGF0aWMjRGU9bmV3IEZsb2F0NjRBcnJheSgxMDApO3N0YXRpYyNNZT0wO3N0YXRpYyNOZShlKXt0aGlzLiNNZTx0aGlzLiNEZS5sZW5ndGgmJih0aGlzLiNEZVt0aGlzLiNNZSsrXT1lKX1zdGF0aWMjUGUoZSl7Y29uc3QgdD10aGlzLiNEZTtzd2l0Y2goZSl7Y2FzZSBzci50cnVlOnRoaXMuI05lKDEpO2JyZWFrO2Nhc2Ugc3IuZmFsc2U6dGhpcy4jTmUoMCk7YnJlYWs7Y2FzZSBzci5hYnM6dFt0aGlzLiNNZS0xXT1NYXRoLmFicyh0W3RoaXMuI01lLTFdKTticmVhaztjYXNlIHNyLm5lZzp0W3RoaXMuI01lLTFdPS10W3RoaXMuI01lLTFdO2JyZWFrO2Nhc2Ugc3IuY2VpbGluZzp0W3RoaXMuI01lLTFdPU1hdGguY2VpbCh0W3RoaXMuI01lLTFdKTticmVhaztjYXNlIHNyLmZsb29yOnRbdGhpcy4jTWUtMV09TWF0aC5mbG9vcih0W3RoaXMuI01lLTFdKTticmVhaztjYXNlIHNyLnJvdW5kOnRbdGhpcy4jTWUtMV09TWF0aC5mbG9vcih0W3RoaXMuI01lLTFdKy41KTticmVhaztjYXNlIHNyLnRydW5jYXRlOnRbdGhpcy4jTWUtMV09TWF0aC50cnVuYyh0W3RoaXMuI01lLTFdKTticmVhaztjYXNlIHNyLnNxcnQ6dFt0aGlzLiNNZS0xXT1NYXRoLnNxcnQodFt0aGlzLiNNZS0xXSk7YnJlYWs7Y2FzZSBzci5zaW46dFt0aGlzLiNNZS0xXT1NYXRoLnNpbih0W3RoaXMuI01lLTFdJTM2MCpsaSk7YnJlYWs7Y2FzZSBzci5jb3M6dFt0aGlzLiNNZS0xXT1NYXRoLmNvcyh0W3RoaXMuI01lLTFdJTM2MCpsaSk7YnJlYWs7Y2FzZSBzci5sbjp0W3RoaXMuI01lLTFdPU1hdGgubG9nKHRbdGhpcy4jTWUtMV0pO2JyZWFrO2Nhc2Ugc3IubG9nOnRbdGhpcy4jTWUtMV09TWF0aC5sb2cxMCh0W3RoaXMuI01lLTFdKTticmVhaztjYXNlIHNyLmN2aTp0W3RoaXMuI01lLTFdPTB8TWF0aC50cnVuYyh0W3RoaXMuI01lLTFdKTticmVhaztjYXNlIHNyLmN2cjpicmVhaztjYXNlIHNyLm5vdDp7Y29uc3QgZT10W3RoaXMuI01lLTFdO3RbdGhpcy4jTWUtMV09MD09PWV8fDE9PT1lPzEtZTp+ZTticmVha31jYXNlIHNyLmFkZDp7Y29uc3QgZT10Wy0tdGhpcy4jTWVdO3RbdGhpcy4jTWUtMV0rPWU7YnJlYWt9Y2FzZSBzci5zdWI6e2NvbnN0IGU9dFstLXRoaXMuI01lXTt0W3RoaXMuI01lLTFdLT1lO2JyZWFrfWNhc2Ugc3IubXVsOntjb25zdCBlPXRbLS10aGlzLiNNZV07dFt0aGlzLiNNZS0xXSo9ZTticmVha31jYXNlIHNyLmRpdjp7Y29uc3QgZT10Wy0tdGhpcy4jTWVdO3RbdGhpcy4jTWUtMV09MCE9PWU/dFt0aGlzLiNNZS0xXS9lOjA7YnJlYWt9Y2FzZSBzci5pZGl2Ontjb25zdCBlPXRbLS10aGlzLiNNZV07dFt0aGlzLiNNZS0xXT0wIT09ZT9NYXRoLnRydW5jKHRbdGhpcy4jTWUtMV0vZSk6MDticmVha31jYXNlIHNyLm1vZDp7Y29uc3QgZT10Wy0tdGhpcy4jTWVdO3RbdGhpcy4jTWUtMV09MCE9PWU/dFt0aGlzLiNNZS0xXSVlOjA7YnJlYWt9Y2FzZSBzci5leHA6e2NvbnN0IGU9dFstLXRoaXMuI01lXTt0W3RoaXMuI01lLTFdKio9ZTticmVha31jYXNlIHNyLmF0YW46e2NvbnN0IGU9dFstLXRoaXMuI01lXSxhPU1hdGguYXRhbjIodFt0aGlzLiNNZS0xXSxlKSpmaTt0W3RoaXMuI01lLTFdPWE8MD9hKzM2MDphO2JyZWFrfWNhc2Ugc3IuZXE6e2NvbnN0IGU9dFstLXRoaXMuI01lXTt0W3RoaXMuI01lLTFdPXRbdGhpcy4jTWUtMV09PT1lPzE6MDticmVha31jYXNlIHNyLm5lOntjb25zdCBlPXRbLS10aGlzLiNNZV07dFt0aGlzLiNNZS0xXT10W3RoaXMuI01lLTFdIT09ZT8xOjA7YnJlYWt9Y2FzZSBzci5ndDp7Y29uc3QgZT10Wy0tdGhpcy4jTWVdO3RbdGhpcy4jTWUtMV09dFt0aGlzLiNNZS0xXT5lPzE6MDticmVha31jYXNlIHNyLmdlOntjb25zdCBlPXRbLS10aGlzLiNNZV07dFt0aGlzLiNNZS0xXT10W3RoaXMuI01lLTFdPj1lPzE6MDticmVha31jYXNlIHNyLmx0Ontjb25zdCBlPXRbLS10aGlzLiNNZV07dFt0aGlzLiNNZS0xXT10W3RoaXMuI01lLTFdPGU/MTowO2JyZWFrfWNhc2Ugc3IubGU6e2NvbnN0IGU9dFstLXRoaXMuI01lXTt0W3RoaXMuI01lLTFdPXRbdGhpcy4jTWUtMV08PWU/MTowO2JyZWFrfWNhc2Ugc3IuYW5kOntjb25zdCBlPTB8dFstLXRoaXMuI01lXTt0W3RoaXMuI01lLTFdPSgwfHRbdGhpcy4jTWUtMV0pJmU7YnJlYWt9Y2FzZSBzci5vcjp7Y29uc3QgZT0wfHRbLS10aGlzLiNNZV07dFt0aGlzLiNNZS0xXT0wfHRbdGhpcy4jTWUtMV18ZTticmVha31jYXNlIHNyLnhvcjp7Y29uc3QgZT0wfHRbLS10aGlzLiNNZV07dFt0aGlzLiNNZS0xXT0oMHx0W3RoaXMuI01lLTFdKV5lO2JyZWFrfWNhc2Ugc3IuYml0c2hpZnQ6e2NvbnN0IGU9MHx0Wy0tdGhpcy4jTWVdLGE9MHx0W3RoaXMuI01lLTFdO3RbdGhpcy4jTWUtMV09ZT4wP2E8PGU6YT4+LWU7YnJlYWt9Y2FzZSBzci5taW46e2NvbnN0IGU9dFstLXRoaXMuI01lXTt0W3RoaXMuI01lLTFdPU1hdGgubWluKHRbdGhpcy4jTWUtMV0sZSk7YnJlYWt9Y2FzZSBzci5tYXg6e2NvbnN0IGU9dFstLXRoaXMuI01lXTt0W3RoaXMuI01lLTFdPU1hdGgubWF4KHRbdGhpcy4jTWUtMV0sZSk7YnJlYWt9Y2FzZSBzci5kdXA6dGhpcy4jTmUodFt0aGlzLiNNZS0xXSk7YnJlYWs7Y2FzZSBzci5leGNoOntjb25zdCBlPXRbLS10aGlzLiNNZV0sYT10Wy0tdGhpcy4jTWVdO3RoaXMuI05lKGUpO3RoaXMuI05lKGEpO2JyZWFrfWNhc2Ugc3IucG9wOnRoaXMuI01lLS07YnJlYWs7Y2FzZSBzci5jb3B5Ontjb25zdCBlPU1hdGgudHJ1bmModFstLXRoaXMuI01lXSksYT10aGlzLiNNZS1lO2ZvcihsZXQgbj0wO248ZTtuKyspdGhpcy4jTmUodFthK25dKTticmVha31jYXNlIHNyLmluZGV4Ontjb25zdCBlPU1hdGgudHJ1bmModFstLXRoaXMuI01lXSk7dGhpcy4jTmUodFt0aGlzLiNNZS0xLWVdKTticmVha31jYXNlIHNyLnJvbGw6e2NvbnN0IGU9TWF0aC50cnVuYyh0Wy0tdGhpcy4jTWVdKSxhPU1hdGgudHJ1bmModFstLXRoaXMuI01lXSk7aWYoYT4xJiYwIT09ZSl7Y29uc3Qgbj0oZSVhK2EpJWE7aWYoMCE9PW4pe2NvbnN0IGU9dGhpcy4jTWUtYSxzPXQuc2xpY2UoZSx0aGlzLiNNZSk7Zm9yKGxldCByPTA7cjxhO3IrKyl0W2Urcl09c1soci1uK2EpJWFdfX1icmVha319fXN0YXRpYyNFZShlKXtmb3IoY29uc3QgdCBvZiBlKXN3aXRjaCh0LnR5cGUpe2Nhc2UgY3I6dGhpcy4jTmUodC52YWx1ZSk7YnJlYWs7Y2FzZSBocjp0aGlzLiNQZSh0Lm9wKTticmVhaztjYXNlIHVyOjAhPT10aGlzLiNEZVstLXRoaXMuI01lXSYmdGhpcy4jRWUodC50aGVuLmluc3RydWN0aW9ucyk7YnJlYWs7Y2FzZSBtcjowIT09dGhpcy4jRGVbLS10aGlzLiNNZV0/dGhpcy4jRWUodC50aGVuLmluc3RydWN0aW9ucyk6dGhpcy4jRWUodC5vdGhlcndpc2UuaW5zdHJ1Y3Rpb25zKX19c3RhdGljIGJ1aWxkKGUsdCxhKXtjb25zdCBuPXQubGVuZ3RoPj4xLHM9YS5sZW5ndGg+PjEse2luc3RydWN0aW9uczpyfT1lLmJvZHk7cmV0dXJuKGUsdCxpLG8pPT57dGhpcy4jTWU9MDtmb3IobGV0IGE9MDthPG47YSsrKXRoaXMuI05lKGVbdCthXSk7dGhpcy4jRWUocik7Y29uc3QgbD10aGlzLiNNZS1zO2ZvcihsZXQgZT0wO2U8cztlKyspe2NvbnN0IHQ9bCtlPj0wP3RoaXMuI0RlW2wrZV06MDtpW28rZV09TWF0aENsYW1wKHQsYVsyKmVdLGFbMiplKzFdKX19fX1jb25zdCBjaT17aWY6NCxlbHNlOjUsZW5kOjExLHNlbGVjdDoyNyxjYWxsOjE2LGxvY2FsX2dldDozMixsb2NhbF9zZXQ6MzMsbG9jYWxfdGVlOjM0LGkzMl9jb25zdDo2NSxpMzJfZXF6OjY5LGkzMl9hbmQ6MTEzLGkzMl9vcjoxMTQsaTMyX3hvcjoxMTUsaTMyX3NobDoxMTYsaTMyX3Nocl9zOjExNyxpMzJfdHJ1bmNfZjY0X3M6MTcwLGY2NF9jb25zdDo2OCxmNjRfZXE6OTcsZjY0X25lOjk4LGY2NF9sdDo5OSxmNjRfZ3Q6MTAwLGY2NF9sZToxMDEsZjY0X2dlOjEwMixmNjRfYWJzOjE1MyxmNjRfbmVnOjE1NCxmNjRfY2VpbDoxNTUsZjY0X2Zsb29yOjE1NixmNjRfdHJ1bmM6MTU3LGY2NF9uZWFyZXN0OjE1OCxmNjRfc3FydDoxNTksZjY0X2FkZDoxNjAsZjY0X3N1YjoxNjEsZjY0X211bDoxNjIsZjY0X2RpdjoxNjMsZjY0X21pbjoxNjQsZjY0X21heDoxNjUsZjY0X2NvbnZlcnRfaTMyX3M6MTgzLGY2NF9zdG9yZTo1N30saGk9MTI0LHVpPTEsbWk9MixwaT0zLGRpPTUsZ2k9NyxiaT0xMDtmdW5jdGlvbiB1bnNpZ25lZExFQjEyOChlKXtjb25zdCB0PVtdO2Rve2xldCBhPTEyNyZlOzAhPT0oZT4+Pj03KSYmKGF8PTEyOCk7dC5wdXNoKGEpfXdoaWxlKDAhPT1lKTtyZXR1cm4gdH1mdW5jdGlvbiBlbmNvZGVBU0NJSVN0cmluZyhlKXtyZXR1cm5bLi4udW5zaWduZWRMRUIxMjgoZS5sZW5ndGgpLC4uLnN0cmluZ1RvQnl0ZXMoZSldfWZ1bmN0aW9uIHNlY3Rpb24oZSx0KXtyZXR1cm5bZSwuLi51bnNpZ25lZExFQjEyOCh0Lmxlbmd0aCksLi4udF19ZnVuY3Rpb24gdmVjKGUpe2NvbnN0IHQ9dW5zaWduZWRMRUIxMjgoZS5sZW5ndGgpO2Zvcihjb25zdCBhIG9mIGUpaWYoIm51bWJlciIhPXR5cGVvZiBhKWZvcihjb25zdCBlIG9mIGEpdC5wdXNoKGUpO2Vsc2UgdC5wdXNoKGEpO3JldHVybiB0fWNvbnN0IHdpPVtbInNpbiIsIk1hdGgiLCJzaW4iLFtoaV0sW2hpXV0sWyJjb3MiLCJNYXRoIiwiY29zIixbaGldLFtoaV1dLFsiYXRhbjIiLCJNYXRoIiwiYXRhbjIiLFtoaSxoaV0sW2hpXV0sWyJsb2ciLCJNYXRoIiwibG9nIixbaGldLFtoaV1dLFsibG9nMTAiLCJNYXRoIiwibG9nMTAiLFtoaV0sW2hpXV0sWyJwb3ciLCJNYXRoIiwicG93IixbaGksaGldLFtoaV1dXSxqaT17TWF0aDpPYmplY3QuZnJvbUVudHJpZXMod2kubWFwKChbZV0pPT5bZSxNYXRoW2VdXSkpfTtjbGFzcyBQc1dhc21Db21waWxlcntzdGF0aWMjX2U9ITE7c3RhdGljI3plPW51bGw7c3RhdGljI0xlPW51bGw7c3RhdGljI1VlPTA7c3RhdGljI1dlPTA7c3RhdGljI1hlPW51bGw7c3RhdGljI0tlPW51bGw7c3RhdGljI0dlPW51bGw7c3RhdGljI1ZlPW51bGw7c3RhdGljIyRlPW51bGw7c3RhdGljI1llPW51bGw7c3RhdGljI0plPW51bGw7c3RhdGljI1FlPW51bGw7c3RhdGljI09lKCl7dGhpcy4jemU9bmV3IE1hcChbW3NyLmVxLGNpLmY2NF9lcV0sW3NyLm5lLGNpLmY2NF9uZV0sW3NyLmx0LGNpLmY2NF9sdF0sW3NyLmxlLGNpLmY2NF9sZV0sW3NyLmd0LGNpLmY2NF9ndF0sW3NyLmdlLGNpLmY2NF9nZV1dKTt0aGlzLiNMZT1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgZT0wO2U8d2kubGVuZ3RoO2UrKyl0aGlzLiNMZVt3aVtlXVswXV09ZTt0aGlzLiNVZT1NYXRoLlBJLzE4MDt0aGlzLiNXZT0xODAvTWF0aC5QSTt0aGlzLiNYZT13aS5tYXAoKFssLCxlLHRdKT0+Wzk2LC4uLnZlYyhlKSwuLi52ZWModCldKTt0aGlzLiNLZT1uZXcgVWludDhBcnJheShzZWN0aW9uKG1pLHZlYyh3aS5tYXAoKFssZSx0XSxhKT0+Wy4uLmVuY29kZUFTQ0lJU3RyaW5nKGUpLC4uLmVuY29kZUFTQ0lJU3RyaW5nKHQpLDAsLi4udW5zaWduZWRMRUIxMjgoYSsxKV0pKSkpO3RoaXMuI0dlPW5ldyBVaW50OEFycmF5KHNlY3Rpb24ocGksdmVjKFtbMF1dKSkpO3RoaXMuI1ZlPW5ldyBVaW50OEFycmF5KHNlY3Rpb24oZGksdmVjKFtbMCwxXV0pKSk7dGhpcy4jJGU9bmV3IFVpbnQ4QXJyYXkoc2VjdGlvbihnaSx2ZWMoW1suLi5lbmNvZGVBU0NJSVN0cmluZygiZm4iKSwwLC4uLnVuc2lnbmVkTEVCMTI4KHdpLmxlbmd0aCldLFsuLi5lbmNvZGVBU0NJSVN0cmluZygibWVtIiksMiwwXV0pKSk7dGhpcy4jWWU9bmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwXSk7Y29uc3QgZT1uZXcgQXJyYXlCdWZmZXIoOCk7dGhpcy4jSmU9bmV3IERhdGFWaWV3KGUpO3RoaXMuI1FlPW5ldyBVaW50OEFycmF5KGUpO3RoaXMuI19lPSEwfWNvbnN0cnVjdG9yKGUsdCl7UHNXYXNtQ29tcGlsZXIuI19lfHxQc1dhc21Db21waWxlci4jT2UoKTt0aGlzLl9uSW49ZS5sZW5ndGg+PjE7dGhpcy5fbk91dD10Lmxlbmd0aD4+MTt0aGlzLl9yYW5nZT10O3RoaXMuX2NvZGU9W107dGhpcy5fbmV4dExvY2FsPXRoaXMuX25Jbjt0aGlzLl9mcmVlTG9jYWxzPVtdO3RoaXMuX3NoYXJlZExvY2Fscz1uZXcgTWFwfV9hbGxvY0xvY2FsKCl7cmV0dXJuIHRoaXMuX2ZyZWVMb2NhbHMucG9wKCk/P3RoaXMuX25leHRMb2NhbCsrfV9yZWxlYXNlTG9jYWwoZSl7dGhpcy5fZnJlZUxvY2Fscy5wdXNoKGUpfV9lbWl0VUxFQjEyOChlKXtkb3tsZXQgdD0xMjcmZTswIT09KGU+Pj49NykmJih0fD0xMjgpO3RoaXMuX2NvZGUucHVzaCh0KX13aGlsZSgwIT09ZSl9X2VtaXRTTEVCMTI4KGUpe2Zvcig7Oyl7Y29uc3QgdD0xMjcmZTtpZigwPT09KGU+Pj03KSYmISg2NCZ0KXx8LTE9PT1lJiY2NCZ0KXt0aGlzLl9jb2RlLnB1c2godCk7cmV0dXJufXRoaXMuX2NvZGUucHVzaCgxMjh8dCl9fV9lbWl0RjY0Q29uc3QoZSl7dGhpcy5fY29kZS5wdXNoKGNpLmY2NF9jb25zdCk7UHNXYXNtQ29tcGlsZXIuI0plLnNldEZsb2F0NjQoMCxlLCEwKTtmb3IobGV0IGU9MDtlPDg7ZSsrKXRoaXMuX2NvZGUucHVzaChQc1dhc21Db21waWxlci4jUWVbZV0pfV9lbWl0TG9jYWxHZXQoZSl7dGhpcy5fY29kZS5wdXNoKGNpLmxvY2FsX2dldCk7dGhpcy5fZW1pdFVMRUIxMjgoZSl9X2VtaXRMb2NhbFNldChlKXt0aGlzLl9jb2RlLnB1c2goY2kubG9jYWxfc2V0KTt0aGlzLl9lbWl0VUxFQjEyOChlKX1fZW1pdExvY2FsVGVlKGUpe3RoaXMuX2NvZGUucHVzaChjaS5sb2NhbF90ZWUpO3RoaXMuX2VtaXRVTEVCMTI4KGUpfV9jb21waWxlTm9kZShlKXtpZihlLnNoYXJlZCl7Y29uc3QgdD10aGlzLl9zaGFyZWRMb2NhbHMuZ2V0KGUpO2lmKHZvaWQgMCE9PXQpe3RoaXMuX2VtaXRMb2NhbEdldCh0LmxvY2FsKTswPT09LS10LnJlbWFpbmluZyYmdGhpcy5fcmVsZWFzZUxvY2FsKHQubG9jYWwpO3JldHVybiEwfWlmKCF0aGlzLl9jb21waWxlTm9kZUltcGwoZSkpcmV0dXJuITE7Y29uc3QgYT10aGlzLl9hbGxvY0xvY2FsKCk7dGhpcy5fc2hhcmVkTG9jYWxzLnNldChlLHtsb2NhbDphLHJlbWFpbmluZzplLnNoYXJlZENvdW50LTF9KTt0aGlzLl9lbWl0TG9jYWxUZWUoYSk7cmV0dXJuITB9cmV0dXJuIHRoaXMuX2NvbXBpbGVOb2RlSW1wbChlKX1fY29tcGlsZU5vZGVJbXBsKGUpe3N3aXRjaChlLnR5cGUpe2Nhc2UgcHI6dGhpcy5fZW1pdExvY2FsR2V0KGUuaW5kZXgpO3JldHVybiEwO2Nhc2UgZHI6e2xldCB0PWUudmFsdWU7ImJvb2xlYW4iPT10eXBlb2YgdCYmKHQ9dD8xOjApO3RoaXMuX2VtaXRGNjRDb25zdCh0KTtyZXR1cm4hMH1jYXNlIGdyOnJldHVybiB0aGlzLl9jb21waWxlVW5hcnlOb2RlKGUpO2Nhc2UgYnI6cmV0dXJuIHRoaXMuX2NvbXBpbGVCaW5hcnlOb2RlKGUpO2Nhc2Ugd3I6cmV0dXJuIHRoaXMuX2NvbXBpbGVUZXJuYXJ5Tm9kZShlKTtkZWZhdWx0OnJldHVybiExfX1fY29tcGlsZVNpbkNvc05vZGUoZSl7Y29uc3QgdD10aGlzLl9hbGxvY0xvY2FsKCk7dHJ5e2lmKCF0aGlzLl9jb21waWxlTm9kZShlLm9wZXJhbmQpKXJldHVybiExO2NvbnN0IGE9dGhpcy5fY29kZTt0aGlzLl9lbWl0TG9jYWxTZXQodCk7dGhpcy5fZW1pdExvY2FsR2V0KHQpO3RoaXMuX2VtaXRMb2NhbEdldCh0KTt0aGlzLl9lbWl0RjY0Q29uc3QoMzYwKTthLnB1c2goY2kuZjY0X2RpdixjaS5mNjRfdHJ1bmMpO3RoaXMuX2VtaXRGNjRDb25zdCgzNjApO2EucHVzaChjaS5mNjRfbXVsLGNpLmY2NF9zdWIpO3RoaXMuX2VtaXRGNjRDb25zdChQc1dhc21Db21waWxlci4jVWUpO2EucHVzaChjaS5mNjRfbXVsLGNpLmNhbGwpO3RoaXMuX2VtaXRVTEVCMTI4KFBzV2FzbUNvbXBpbGVyLiNMZVtlLm9wPT09c3Iuc2luPyJzaW4iOiJjb3MiXSk7cmV0dXJuITB9ZmluYWxseXt0aGlzLl9yZWxlYXNlTG9jYWwodCl9fV9jb21waWxlVW5hcnlOb2RlKGUpe2NvbnN0IHQ9dGhpcy5fY29kZTtpZihlLm9wPT09c3Iuc2lufHxlLm9wPT09c3IuY29zKXJldHVybiB0aGlzLl9jb21waWxlU2luQ29zTm9kZShlKTtpZihlLm9wPT09c3Iubm90KXtpZihlLnZhbHVlVHlwZT09PWlyKXtpZighdGhpcy5fY29tcGlsZU5vZGVBc0Jvb2xJMzIoZS5vcGVyYW5kKSlyZXR1cm4hMTt0LnB1c2goY2kuaTMyX2VxeixjaS5mNjRfY29udmVydF9pMzJfcyk7cmV0dXJuITB9aWYoZS52YWx1ZVR5cGU9PT1ycil7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKGUub3BlcmFuZCkpcmV0dXJuITE7dC5wdXNoKGNpLmkzMl90cnVuY19mNjRfcyxjaS5pMzJfY29uc3QsMTI3LGNpLmkzMl94b3IsY2kuZjY0X2NvbnZlcnRfaTMyX3MpO3JldHVybiEwfXJldHVybiExfWlmKCF0aGlzLl9jb21waWxlTm9kZShlLm9wZXJhbmQpKXJldHVybiExO3N3aXRjaChlLm9wKXtjYXNlIHNyLmFiczp0LnB1c2goY2kuZjY0X2Ficyk7YnJlYWs7Y2FzZSBzci5uZWc6dC5wdXNoKGNpLmY2NF9uZWcpO2JyZWFrO2Nhc2Ugc3Iuc3FydDp0LnB1c2goY2kuZjY0X3NxcnQpO2JyZWFrO2Nhc2Ugc3IuZmxvb3I6dC5wdXNoKGNpLmY2NF9mbG9vcik7YnJlYWs7Y2FzZSBzci5jZWlsaW5nOnQucHVzaChjaS5mNjRfY2VpbCk7YnJlYWs7Y2FzZSBzci5yb3VuZDp0aGlzLl9lbWl0RjY0Q29uc3QoLjUpO3QucHVzaChjaS5mNjRfYWRkLGNpLmY2NF9mbG9vcik7YnJlYWs7Y2FzZSBzci50cnVuY2F0ZTp0LnB1c2goY2kuZjY0X3RydW5jKTticmVhaztjYXNlIHNyLmN2aTp0LnB1c2goY2kuaTMyX3RydW5jX2Y2NF9zLGNpLmY2NF9jb252ZXJ0X2kzMl9zKTticmVhaztjYXNlIHNyLmN2cjpicmVhaztjYXNlIHNyLmxuOnQucHVzaChjaS5jYWxsKTt0aGlzLl9lbWl0VUxFQjEyOChQc1dhc21Db21waWxlci4jTGUubG9nKTticmVhaztjYXNlIHNyLmxvZzp0LnB1c2goY2kuY2FsbCk7dGhpcy5fZW1pdFVMRUIxMjgoUHNXYXNtQ29tcGlsZXIuI0xlLmxvZzEwKTticmVhaztkZWZhdWx0OnJldHVybiExfXJldHVybiEwfV9jb21waWxlU2FmZURpdk5vZGUoZSx0KXtjb25zdCBhPXRoaXMuX2FsbG9jTG9jYWwoKTt0cnl7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKHQpfHwhdGhpcy5fY29tcGlsZU5vZGUoZSkpcmV0dXJuITE7Y29uc3Qgbj10aGlzLl9jb2RlO3RoaXMuX2VtaXRMb2NhbFRlZShhKTtuLnB1c2goY2kuZjY0X2Rpdik7dGhpcy5fZW1pdEY2NENvbnN0KDApO3RoaXMuX2VtaXRMb2NhbEdldChhKTt0aGlzLl9lbWl0RjY0Q29uc3QoMCk7bi5wdXNoKGNpLmY2NF9uZSxjaS5zZWxlY3QpO3JldHVybiEwfWZpbmFsbHl7dGhpcy5fcmVsZWFzZUxvY2FsKGEpfX1fY29tcGlsZVNhZmVJZGl2Tm9kZShlLHQpe2NvbnN0IGE9dGhpcy5fYWxsb2NMb2NhbCgpO3RyeXtpZighdGhpcy5fY29tcGlsZU5vZGUodCl8fCF0aGlzLl9jb21waWxlTm9kZShlKSlyZXR1cm4hMTtjb25zdCBuPXRoaXMuX2NvZGU7dGhpcy5fZW1pdExvY2FsVGVlKGEpO24ucHVzaChjaS5mNjRfZGl2LGNpLmY2NF90cnVuYyk7dGhpcy5fZW1pdEY2NENvbnN0KDApO3RoaXMuX2VtaXRMb2NhbEdldChhKTt0aGlzLl9lbWl0RjY0Q29uc3QoMCk7bi5wdXNoKGNpLmY2NF9uZSxjaS5zZWxlY3QpO3JldHVybiEwfWZpbmFsbHl7dGhpcy5fcmVsZWFzZUxvY2FsKGEpfX1fY29tcGlsZUJpdHNoaWZ0Tm9kZShlLHQpe2lmKGUudHlwZSE9PWRyfHwhTnVtYmVyLmlzSW50ZWdlcihlLnZhbHVlKXx8IXRoaXMuX2NvbXBpbGVOb2RlKHQpKXJldHVybiExO2NvbnN0IGE9dGhpcy5fY29kZTthLnB1c2goY2kuaTMyX3RydW5jX2Y2NF9zKTtjb25zdCBuPWUudmFsdWU7aWYobj4wKXthLnB1c2goY2kuaTMyX2NvbnN0KTt0aGlzLl9lbWl0U0xFQjEyOChuKTthLnB1c2goY2kuaTMyX3NobCl9ZWxzZSBpZihuPDApe2EucHVzaChjaS5pMzJfY29uc3QpO3RoaXMuX2VtaXRTTEVCMTI4KC1uKTthLnB1c2goY2kuaTMyX3Nocl9zKX1hLnB1c2goY2kuZjY0X2NvbnZlcnRfaTMyX3MpO3JldHVybiEwfV9jb21waWxlTW9kTm9kZShlLHQpe2lmKGUudHlwZT09PWRyJiYwPT09ZS52YWx1ZSl7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKHQpKXJldHVybiExO3RoaXMuX2NvZGUucHVzaChjaS5kcm9wKTt0aGlzLl9lbWl0RjY0Q29uc3QoMCk7cmV0dXJuITB9Y29uc3QgYT10aGlzLl9hbGxvY0xvY2FsKCk7dHJ5e2lmKCF0aGlzLl9jb21waWxlTm9kZSh0KSlyZXR1cm4hMTt0aGlzLl9lbWl0TG9jYWxUZWUoYSk7Y29uc3Qgbj10aGlzLl9jb2RlO2lmKGUudHlwZT09PWRyKXt0aGlzLl9lbWl0TG9jYWxHZXQoYSk7dGhpcy5fZW1pdEY2NENvbnN0KGUudmFsdWUpO24ucHVzaChjaS5mNjRfZGl2LGNpLmY2NF90cnVuYyk7dGhpcy5fZW1pdEY2NENvbnN0KGUudmFsdWUpO24ucHVzaChjaS5mNjRfbXVsLGNpLmY2NF9zdWIpfWVsc2V7Y29uc3QgdD10aGlzLl9hbGxvY0xvY2FsKCk7dHJ5e2lmKCF0aGlzLl9jb21waWxlTm9kZShlKSlyZXR1cm4hMTt0aGlzLl9lbWl0TG9jYWxTZXQodCk7dGhpcy5fZW1pdExvY2FsR2V0KGEpO3RoaXMuX2VtaXRMb2NhbEdldCh0KTtuLnB1c2goY2kuZjY0X2RpdixjaS5mNjRfdHJ1bmMpO3RoaXMuX2VtaXRMb2NhbEdldCh0KTtuLnB1c2goY2kuZjY0X211bCxjaS5mNjRfc3ViKTt0aGlzLl9lbWl0RjY0Q29uc3QoMCk7dGhpcy5fZW1pdExvY2FsR2V0KHQpO3RoaXMuX2VtaXRGNjRDb25zdCgwKTtuLnB1c2goY2kuZjY0X25lLGNpLnNlbGVjdCl9ZmluYWxseXt0aGlzLl9yZWxlYXNlTG9jYWwodCl9fXJldHVybiEwfWZpbmFsbHl7dGhpcy5fcmVsZWFzZUxvY2FsKGEpfX1fY29tcGlsZUF0YW5Ob2RlKGUsdCl7Y29uc3QgYT10aGlzLl9hbGxvY0xvY2FsKCk7dHJ5e2lmKCF0aGlzLl9jb21waWxlTm9kZSh0KXx8IXRoaXMuX2NvbXBpbGVOb2RlKGUpKXJldHVybiExO2NvbnN0IG49dGhpcy5fY29kZTtuLnB1c2goY2kuY2FsbCk7dGhpcy5fZW1pdFVMRUIxMjgoUHNXYXNtQ29tcGlsZXIuI0xlLmF0YW4yKTt0aGlzLl9lbWl0RjY0Q29uc3QoUHNXYXNtQ29tcGlsZXIuI1dlKTtuLnB1c2goY2kuZjY0X211bCk7dGhpcy5fZW1pdExvY2FsVGVlKGEpO3RoaXMuX2VtaXRGNjRDb25zdCgwKTtuLnB1c2goY2kuZjY0X2x0LGNpLmlmLGhpKTt0aGlzLl9lbWl0TG9jYWxHZXQoYSk7dGhpcy5fZW1pdEY2NENvbnN0KDM2MCk7bi5wdXNoKGNpLmY2NF9hZGQsY2kuZWxzZSk7dGhpcy5fZW1pdExvY2FsR2V0KGEpO24ucHVzaChjaS5lbmQpO3JldHVybiEwfWZpbmFsbHl7dGhpcy5fcmVsZWFzZUxvY2FsKGEpfX1fY29tcGlsZUJpdHdpc2VOb2RlKGUsdCxhKXtpZighdGhpcy5fY29tcGlsZUJpdHdpc2VPcGVyYW5kSTMyKGEpfHwhdGhpcy5fY29tcGlsZUJpdHdpc2VPcGVyYW5kSTMyKHQpKXJldHVybiExO2NvbnN0IG49dGhpcy5fY29kZTtzd2l0Y2goZSl7Y2FzZSBzci5hbmQ6bi5wdXNoKGNpLmkzMl9hbmQpO2JyZWFrO2Nhc2Ugc3Iub3I6bi5wdXNoKGNpLmkzMl9vcik7YnJlYWs7Y2FzZSBzci54b3I6bi5wdXNoKGNpLmkzMl94b3IpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuITF9bi5wdXNoKGNpLmY2NF9jb252ZXJ0X2kzMl9zKTtyZXR1cm4hMH1fY29tcGlsZUJpdHdpc2VPcGVyYW5kSTMyKGUpe2lmKGUudmFsdWVUeXBlPT09aXIpcmV0dXJuIHRoaXMuX2NvbXBpbGVOb2RlQXNCb29sSTMyKGUpO2lmKCF0aGlzLl9jb21waWxlTm9kZShlKSlyZXR1cm4hMTt0aGlzLl9jb2RlLnB1c2goY2kuaTMyX3RydW5jX2Y2NF9zKTtyZXR1cm4hMH1fY29tcGlsZVN0YW5kYXJkQmluYXJ5Tm9kZShlLHQsYSl7aWYodCE9PWF8fHQudHlwZT09PXByfHx0LnR5cGU9PT1kcnx8dC5zaGFyZWQpe2lmKCF0aGlzLl9jb21waWxlTm9kZShhKXx8IXRoaXMuX2NvbXBpbGVOb2RlKHQpKXJldHVybiExfWVsc2V7Y29uc3QgZT10aGlzLl9hbGxvY0xvY2FsKCk7dHJ5e2lmKCF0aGlzLl9jb21waWxlTm9kZSh0KSlyZXR1cm4hMTt0aGlzLl9lbWl0TG9jYWxUZWUoZSk7dGhpcy5fZW1pdExvY2FsR2V0KGUpfWZpbmFsbHl7dGhpcy5fcmVsZWFzZUxvY2FsKGUpfX1jb25zdCBuPXRoaXMuX2NvZGU7c3dpdGNoKGUpe2Nhc2Ugc3IuYWRkOm4ucHVzaChjaS5mNjRfYWRkKTticmVhaztjYXNlIHNyLnN1YjpuLnB1c2goY2kuZjY0X3N1Yik7YnJlYWs7Y2FzZSBzci5tdWw6bi5wdXNoKGNpLmY2NF9tdWwpO2JyZWFrO2Nhc2Ugc3IuZXhwOm4ucHVzaChjaS5jYWxsKTt0aGlzLl9lbWl0VUxFQjEyOChQc1dhc21Db21waWxlci4jTGUucG93KTticmVhaztjYXNlIHNyLmVxOm4ucHVzaChjaS5mNjRfZXEsY2kuZjY0X2NvbnZlcnRfaTMyX3MpO2JyZWFrO2Nhc2Ugc3IubmU6bi5wdXNoKGNpLmY2NF9uZSxjaS5mNjRfY29udmVydF9pMzJfcyk7YnJlYWs7Y2FzZSBzci5sdDpuLnB1c2goY2kuZjY0X2x0LGNpLmY2NF9jb252ZXJ0X2kzMl9zKTticmVhaztjYXNlIHNyLmxlOm4ucHVzaChjaS5mNjRfbGUsY2kuZjY0X2NvbnZlcnRfaTMyX3MpO2JyZWFrO2Nhc2Ugc3IuZ3Q6bi5wdXNoKGNpLmY2NF9ndCxjaS5mNjRfY29udmVydF9pMzJfcyk7YnJlYWs7Y2FzZSBzci5nZTpuLnB1c2goY2kuZjY0X2dlLGNpLmY2NF9jb252ZXJ0X2kzMl9zKTticmVhaztjYXNlIHNyLm1pbjpuLnB1c2goY2kuZjY0X21pbik7YnJlYWs7Y2FzZSBzci5tYXg6bi5wdXNoKGNpLmY2NF9tYXgpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuITF9cmV0dXJuITB9X2NvbXBpbGVCaW5hcnlOb2RlKGUpe2NvbnN0e29wOnQsZmlyc3Q6YSxzZWNvbmQ6bn09ZTtyZXR1cm4gdD09PXNyLmJpdHNoaWZ0P3RoaXMuX2NvbXBpbGVCaXRzaGlmdE5vZGUoYSxuKTp0PT09c3IuZGl2P3RoaXMuX2NvbXBpbGVTYWZlRGl2Tm9kZShhLG4pOnQ9PT1zci5pZGl2P3RoaXMuX2NvbXBpbGVTYWZlSWRpdk5vZGUoYSxuKTp0PT09c3IubW9kP3RoaXMuX2NvbXBpbGVNb2ROb2RlKGEsbik6dD09PXNyLmF0YW4/dGhpcy5fY29tcGlsZUF0YW5Ob2RlKGEsbik6dD09PXNyLmFuZHx8dD09PXNyLm9yfHx0PT09c3IueG9yP3RoaXMuX2NvbXBpbGVCaXR3aXNlTm9kZSh0LGEsbik6dGhpcy5fY29tcGlsZVN0YW5kYXJkQmluYXJ5Tm9kZSh0LGEsbil9X2NvbXBpbGVOb2RlQXNCb29sSTMyKGUpe2lmKGUudHlwZT09PWJyKXtjb25zdCB0PVBzV2FzbUNvbXBpbGVyLiN6ZS5nZXQoZS5vcCk7aWYodm9pZCAwIT09dCl7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKGUuc2Vjb25kKXx8IXRoaXMuX2NvbXBpbGVOb2RlKGUuZmlyc3QpKXJldHVybiExO3RoaXMuX2NvZGUucHVzaCh0KTtyZXR1cm4hMH1pZihlLnZhbHVlVHlwZT09PWlyJiYoZS5vcD09PXNyLmFuZHx8ZS5vcD09PXNyLm9yfHxlLm9wPT09c3IueG9yKSl7aWYoIXRoaXMuX2NvbXBpbGVOb2RlQXNCb29sSTMyKGUuc2Vjb25kKXx8IXRoaXMuX2NvbXBpbGVOb2RlQXNCb29sSTMyKGUuZmlyc3QpKXJldHVybiExO3N3aXRjaChlLm9wKXtjYXNlIHNyLmFuZDp0aGlzLl9jb2RlLnB1c2goY2kuaTMyX2FuZCk7YnJlYWs7Y2FzZSBzci5vcjp0aGlzLl9jb2RlLnB1c2goY2kuaTMyX29yKTticmVhaztjYXNlIHNyLnhvcjp0aGlzLl9jb2RlLnB1c2goY2kuaTMyX3hvcil9cmV0dXJuITB9fWlmKGUudHlwZT09PWdyJiZlLm9wPT09c3Iubm90JiZlLnZhbHVlVHlwZT09PWlyKXtpZighdGhpcy5fY29tcGlsZU5vZGVBc0Jvb2xJMzIoZS5vcGVyYW5kKSlyZXR1cm4hMTt0aGlzLl9jb2RlLnB1c2goY2kuaTMyX2Vxeik7cmV0dXJuITB9aWYoIXRoaXMuX2NvbXBpbGVOb2RlKGUpKXJldHVybiExO2lmKGUudmFsdWVUeXBlPT09aXIpdGhpcy5fY29kZS5wdXNoKGNpLmkzMl90cnVuY19mNjRfcyk7ZWxzZXt0aGlzLl9lbWl0RjY0Q29uc3QoMCk7dGhpcy5fY29kZS5wdXNoKGNpLmY2NF9uZSl9cmV0dXJuITB9X2NvbXBpbGVUZXJuYXJ5Tm9kZShlKXtpZighdGhpcy5fY29tcGlsZU5vZGVBc0Jvb2xJMzIoZS5jb25kKSlyZXR1cm4hMTt0aGlzLl9jb2RlLnB1c2goY2kuaWYsaGkpO2lmKCF0aGlzLl9jb21waWxlTm9kZShlLnRoZW4pKXJldHVybiExO3RoaXMuX2NvZGUucHVzaChjaS5lbHNlKTtpZighdGhpcy5fY29tcGlsZU5vZGUoZS5vdGhlcndpc2UpKXJldHVybiExO3RoaXMuX2NvZGUucHVzaChjaS5lbmQpO3JldHVybiEwfWNvbXBpbGUoZSl7Y29uc3QgdD0obmV3IFBTU3RhY2tUb1RyZWUpLmV2YWx1YXRlKGUsdGhpcy5fbkluKTtpZighdHx8dC5sZW5ndGg8dGhpcy5fbk91dClyZXR1cm4gbnVsbDtjb25zdCBhPXRoaXMuX2NvZGU7Zm9yKGxldCBlPTA7ZTx0aGlzLl9uT3V0O2UrKyl7Y29uc3Qgbj10aGlzLl9yYW5nZVsyKmVdLHM9dGhpcy5fcmFuZ2VbMiplKzFdO2EucHVzaChjaS5pMzJfY29uc3QpO3RoaXMuX2VtaXRTTEVCMTI4KDgqZSk7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKHRbZV0pKXJldHVybiBudWxsO3RoaXMuX2VtaXRGNjRDb25zdChzKTthLnB1c2goY2kuZjY0X21pbik7dGhpcy5fZW1pdEY2NENvbnN0KG4pO2EucHVzaChjaS5mNjRfbWF4LGNpLmY2NF9zdG9yZSwzLDApfWEucHVzaChjaS5lbmQpO2NvbnN0IG49dGhpcy5fbkluLHM9dGhpcy5fbmV4dExvY2FsLW4scj1bOTYsLi4udmVjKEFycmF5KG4pLmZpbGwoaGkpKSwuLi52ZWMoW10pXSxpPW5ldyBVaW50OEFycmF5KHNlY3Rpb24odWksdmVjKFtyLC4uLlBzV2FzbUNvbXBpbGVyLiNYZV0pKSksbz12ZWMocz4wP1tbLi4udW5zaWduZWRMRUIxMjgocyksaGldXTpbXSksbD1vLmxlbmd0aCthLmxlbmd0aCxmPW5ldyBVaW50OEFycmF5KHNlY3Rpb24oYmksdmVjKFtbLi4udW5zaWduZWRMRUIxMjgobCksLi4ubywuLi5hXV0pKSksYz1Qc1dhc21Db21waWxlci4jWWUsaD1Qc1dhc21Db21waWxlci4jS2UsdT1Qc1dhc21Db21waWxlci4jR2UsbT1Qc1dhc21Db21waWxlci4jVmUscD1Qc1dhc21Db21waWxlci4jJGUsZD1jLmxlbmd0aCtpLmxlbmd0aCtoLmxlbmd0aCt1Lmxlbmd0aCttLmxlbmd0aCtwLmxlbmd0aCtmLmxlbmd0aCxnPW5ldyBVaW50OEFycmF5KGQpO2xldCBiPTA7Zy5zZXQoYyxiKTtiKz1jLmxlbmd0aDtnLnNldChpLGIpO2IrPWkubGVuZ3RoO2cuc2V0KGgsYik7Yis9aC5sZW5ndGg7Zy5zZXQodSxiKTtiKz11Lmxlbmd0aDtnLnNldChtLGIpO2IrPW0ubGVuZ3RoO2cuc2V0KHAsYik7Yis9cC5sZW5ndGg7Zy5zZXQoZixiKTtyZXR1cm4gZ319ZnVuY3Rpb24gYnVpbGRQb3N0U2NyaXB0V2FzbUZ1bmN0aW9uKGUsdCxhKXtjb25zdCBuPWZ1bmN0aW9uIGNvbXBpbGVQb3N0U2NyaXB0VG9XYXNtKGUsdCxhKXtyZXR1cm4gbmV3IFBzV2FzbUNvbXBpbGVyKHQsYSkuY29tcGlsZShwYXJzZVBvc3RTY3JpcHRGdW5jdGlvbihlKSl9KGUsdCxhKTtpZighbilyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGZ1bmN0aW9uIF9tYWtlV3JhcHBlcihlLHQsYSl7Y29uc3R7Zm46bixtZW06c309ZSxyPW5ldyBGbG9hdDY0QXJyYXkocy5idWZmZXIsMCxhKTtsZXQgaTtzd2l0Y2goYSl7Y2FzZSAxOmk9KGUsdCk9PntlW3RdPXJbMF19O2JyZWFrO2Nhc2UgMjppPShlLHQpPT57ZVt0XT1yWzBdO2VbdCsxXT1yWzFdfTticmVhaztjYXNlIDM6aT0oZSx0KT0+e2VbdF09clswXTtlW3QrMV09clsxXTtlW3QrMl09clsyXX07YnJlYWs7Y2FzZSA0Omk9KGUsdCk9PntlW3RdPXJbMF07ZVt0KzFdPXJbMV07ZVt0KzJdPXJbMl07ZVt0KzNdPXJbM119O2JyZWFrO2RlZmF1bHQ6aT0oZSx0KT0+e2ZvcihsZXQgbj0wO248YTtuKyspZVt0K25dPXJbbl19fXN3aXRjaCh0KXtjYXNlIDE6cmV0dXJuKGUsdCxhLHMpPT57bihlW3RdKTtpKGEscyl9O2Nhc2UgMjpyZXR1cm4oZSx0LGEscyk9PntuKGVbdF0sZVt0KzFdKTtpKGEscyl9O2Nhc2UgMzpyZXR1cm4oZSx0LGEscyk9PntuKGVbdF0sZVt0KzFdLGVbdCsyXSk7aShhLHMpfTtjYXNlIDQ6cmV0dXJuKGUsdCxhLHMpPT57bihlW3RdLGVbdCsxXSxlW3QrMl0sZVt0KzNdKTtpKGEscyl9O2RlZmF1bHQ6e2NvbnN0IGU9bmV3IEZsb2F0NjRBcnJheSh0KTtyZXR1cm4oYSxzLHIsbyk9Pntmb3IobGV0IG49MDtuPHQ7bisrKWVbbl09YVtzK25dO24oLi4uZSk7aShyLG8pfX19fShuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShuKSxqaSkuZXhwb3J0cyx0Lmxlbmd0aD4+MSxhLmxlbmd0aD4+MSl9Y2F0Y2h7cmV0dXJuIG51bGx9fWNsYXNzIEJhc2VMb2NhbENhY2hle2NvbnN0cnVjdG9yKGUpe3RoaXMuX29ubHlSZWZzPSEwPT09ZT8ub25seVJlZnM7aWYoIXRoaXMuX29ubHlSZWZzKXt0aGlzLl9uYW1lUmVmTWFwPW5ldyBNYXA7dGhpcy5faW1hZ2VNYXA9bmV3IE1hcH10aGlzLl9pbWFnZUNhY2hlPW5ldyBSZWZNYXB9Z2V0QnlOYW1lKGUpe3RoaXMuX29ubHlSZWZzJiZ1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGBnZXRCeU5hbWVgIG1ldGhvZC4iKTtjb25zdCB0PXRoaXMuX25hbWVSZWZNYXAuZ2V0KGUpO3JldHVybiB0P3RoaXMuZ2V0QnlSZWYodCk6dGhpcy5faW1hZ2VNYXAuZ2V0KGUpfHxudWxsfWdldEJ5UmVmKGUpe3JldHVybiB0aGlzLl9pbWFnZUNhY2hlLmdldChlKXx8bnVsbH1zZXQoZSx0LGEpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHNldGAgY2FsbGVkLiIpfX1jbGFzcyBMb2NhbEltYWdlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZSx0PW51bGwsYSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcignTG9jYWxJbWFnZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47dGhpcy5fbmFtZVJlZk1hcC5zZXQoZSx0KTt0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGEpfWVsc2UgdGhpcy5faW1hZ2VNYXAuaGFzKGUpfHx0aGlzLl9pbWFnZU1hcC5zZXQoZSxhKX19Y2xhc3MgTG9jYWxDb2xvclNwYWNlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZT1udWxsLHQ9bnVsbCxhKXtpZigic3RyaW5nIiE9dHlwZW9mIGUmJiF0KXRocm93IG5ldyBFcnJvcignTG9jYWxDb2xvclNwYWNlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgIm5hbWUiIGFuZC9vciAicmVmIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47bnVsbCE9PWUmJnRoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsYSl9fWNsYXNzIExvY2FsRnVuY3Rpb25DYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle2NvbnN0cnVjdG9yKGUpe3N1cGVyKHtvbmx5UmVmczohMH0pfXNldChlPW51bGwsdCxhKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsRnVuY3Rpb25DYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX19Y2xhc3MgTG9jYWxHU3RhdGVDYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle3NldChlLHQ9bnVsbCxhKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCdMb2NhbEdTdGF0ZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47dGhpcy5fbmFtZVJlZk1hcC5zZXQoZSx0KTt0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGEpfWVsc2UgdGhpcy5faW1hZ2VNYXAuaGFzKGUpfHx0aGlzLl9pbWFnZU1hcC5zZXQoZSxhKX19Y2xhc3MgTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoZT1udWxsLHQsYSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdMb2NhbFRpbGluZ1BhdHRlcm5DYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX19Y2xhc3MgUmVnaW9uYWxJbWFnZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGEpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUmVnaW9uYWxJbWFnZUNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGEpfX1jbGFzcyBHbG9iYWxDb2xvclNwYWNlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoZT1udWxsLHQsYSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdHbG9iYWxDb2xvclNwYWNlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXModCl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQsYSl9Y2xlYXIoKXt0aGlzLl9pbWFnZUNhY2hlLmNsZWFyKCl9fWNsYXNzIEdsb2JhbEltYWdlQ2FjaGV7c3RhdGljIE5VTV9QQUdFU19USFJFU0hPTEQ9MjtzdGF0aWMgTUlOX0lNQUdFU19UT19DQUNIRT0xMDtzdGF0aWMgTUFYX0JZVEVfU0laRT01ZTc7I1plPW5ldyBSZWZTZXQ7Y29uc3RydWN0b3IoKXt0aGlzLl9yZWZDYWNoZT1uZXcgUmVmTWFwO3RoaXMuX2ltYWdlQ2FjaGU9bmV3IFJlZk1hcH1nZXQjZXQoKXtsZXQgZT0wO2Zvcihjb25zdCB0IG9mIHRoaXMuX2ltYWdlQ2FjaGUpZSs9dC5ieXRlU2l6ZTtyZXR1cm4gZX1nZXQjdHQoKXtyZXR1cm4gdGhpcy5faW1hZ2VDYWNoZS5zaXplPj1HbG9iYWxJbWFnZUNhY2hlLk1JTl9JTUFHRVNfVE9fQ0FDSEUmJnRoaXMuI2V0Pj1HbG9iYWxJbWFnZUNhY2hlLk1BWF9CWVRFX1NJWkV9c2hvdWxkQ2FjaGUoZSx0KXtjb25zdCBhPXRoaXMuX3JlZkNhY2hlLmdldE9yUHV0Q29tcHV0ZWQoZSxtYWtlU2V0KTthLmFkZCh0KTtyZXR1cm4hKGEuc2l6ZTxHbG9iYWxJbWFnZUNhY2hlLk5VTV9QQUdFU19USFJFU0hPTEQpJiYhKCF0aGlzLl9pbWFnZUNhY2hlLmhhcyhlKSYmdGhpcy4jdHQpfWFkZERlY29kZUZhaWxlZChlKXt0aGlzLiNaZS5wdXQoZSl9aGFzRGVjb2RlRmFpbGVkKGUpe3JldHVybiB0aGlzLiNaZS5oYXMoZSl9YWRkQnl0ZVNpemUoZSx0KXtjb25zdCBhPXRoaXMuX2ltYWdlQ2FjaGUuZ2V0KGUpO2EmJihhLmJ5dGVTaXplfHwoYS5ieXRlU2l6ZT10KSl9Z2V0RGF0YShlLHQpe2NvbnN0IGE9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO2lmKCFhfHxhLnNpemU8R2xvYmFsSW1hZ2VDYWNoZS5OVU1fUEFHRVNfVEhSRVNIT0xEKXJldHVybiBudWxsO2NvbnN0IG49dGhpcy5faW1hZ2VDYWNoZS5nZXQoZSk7aWYoIW4pcmV0dXJuIG51bGw7YS5hZGQodCk7cmV0dXJuIG59c2V0RGF0YShlLHQpe2lmKCF0aGlzLl9yZWZDYWNoZS5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKCdHbG9iYWxJbWFnZUNhY2hlLnNldERhdGEgLSBleHBlY3RlZCAic2hvdWxkQ2FjaGUiIHRvIGhhdmUgYmVlbiBjYWxsZWQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXMoZSl8fCh0aGlzLiN0dD93YXJuKCJHbG9iYWxJbWFnZUNhY2hlLnNldERhdGEgLSBjYWNoZSBsaW1pdCByZWFjaGVkLiIpOnRoaXMuX2ltYWdlQ2FjaGUucHV0KGUsdCkpfWNsZWFyKGU9ITEpe2lmKCFlKXt0aGlzLiNaZS5jbGVhcigpO3RoaXMuX3JlZkNhY2hlLmNsZWFyKCl9dGhpcy5faW1hZ2VDYWNoZS5jbGVhcigpfX1jb25zdCBraT0wLHlpPTIscWk9Myx2aT00O2NsYXNzIFBERkZ1bmN0aW9uRmFjdG9yeXtzdGF0aWMjVD0hMDtzdGF0aWMgc2V0T3B0aW9ucyh7dXNlV2FzbTplfSl7dGhpcy4jVD1lfWNvbnN0cnVjdG9yKHt4cmVmOmV9KXt0aGlzLnhyZWY9ZX1nZXQgdXNlV2FzbSgpe3JldHVybiBQREZGdW5jdGlvbkZhY3RvcnkuI1R9Y3JlYXRlKGUsdD0hMSl7bGV0IGEsbjtlIGluc3RhbmNlb2YgUmVmP2E9ZTplIGluc3RhbmNlb2YgRGljdD9hPWUub2JqSWQ6ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJihhPWUuZGljdD8ub2JqSWQpO2lmKGEpe2NvbnN0IGU9dGhpcy5fbG9jYWxGdW5jdGlvbkNhY2hlLmdldEJ5UmVmKGEpO2lmKGUpcmV0dXJuIGV9Y29uc3Qgcz10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKTtpZihBcnJheS5pc0FycmF5KHMpKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ1BERkZ1bmN0aW9uRmFjdG9yeS5jcmVhdGUgLSBleHBlY3RlZCAicGFyc2VBcnJheSIgYXJndW1lbnQuJyk7bj1QREZGdW5jdGlvbi5wYXJzZUFycmF5KHRoaXMscyl9ZWxzZSBuPVBERkZ1bmN0aW9uLnBhcnNlKHRoaXMscyk7YSYmdGhpcy5fbG9jYWxGdW5jdGlvbkNhY2hlLnNldChudWxsLGEsbik7cmV0dXJuIG59Z2V0IF9sb2NhbEZ1bmN0aW9uQ2FjaGUoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9sb2NhbEZ1bmN0aW9uQ2FjaGUiLG5ldyBMb2NhbEZ1bmN0aW9uQ2FjaGUpfX1mdW5jdGlvbiB0b051bWJlckFycmF5KGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2lzTnVtYmVyQXJyYXkoZSxudWxsKT9lOmUubWFwKGU9PitlKTpudWxsfWZ1bmN0aW9uIHNldEFyaXR5KGUsdCxhKXtlLm51bUlucHV0cz10O2UubnVtT3V0cHV0cz1hO3JldHVybiBlfWZ1bmN0aW9uIGludGVycG9sYXRlKGUsdCxhLG4scyl7cmV0dXJuIHQ9PT1hP246bisocy1uKS8oYS10KSooZS10KX1jbGFzcyBQREZGdW5jdGlvbntzdGF0aWMgTUFYX01VTFRJTElORUFSX0lOUFVUUz04O3N0YXRpYyBnZXRTYW1wbGVBcnJheShlLHQsYSxuKXtsZXQgcz10O2Zvcihjb25zdCB0IG9mIGUpcyo9dDtjb25zdCByPW5ldyBBcnJheShzKTtsZXQgaT0wLG89MDtjb25zdCBsPTEvKDIqKmEtMSksZj1uLmdldEJ5dGVzKChzKmErNykvOCk7bGV0IGM9MDtmb3IobGV0IGU9MDtlPHM7ZSsrKXtmb3IoO2k8YTspe288PD04O298PWZbYysrXTtpKz04fWktPWE7cltlXT0obz4+aSkqbDtvJj0oMTw8aSktMX1yZXR1cm4gcn1zdGF0aWMgcGFyc2UoZSx0KXtjb25zdCBhPXQuZGljdHx8dCxuPWEuZ2V0KCJGdW5jdGlvblR5cGUiKTtzd2l0Y2gobil7Y2FzZSBraTpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RTYW1wbGVkKGUsdCxhKTtjYXNlIHlpOnJldHVybiB0aGlzLmNvbnN0cnVjdEludGVycG9sYXRlZChlLGEpO2Nhc2UgcWk6cmV0dXJuIHRoaXMuY29uc3RydWN0U3RpdGNoZWQoZSxhKTtjYXNlIHZpOnJldHVybiB0aGlzLmNvbnN0cnVjdFBvc3RTY3JpcHQoZSx0LGEpfXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBmdW5jdGlvbiB0eXBlOiAke259YCl9c3RhdGljIHBhcnNlQXJyYXkoZSx0KXtjb25zdHt4cmVmOmF9PWUsbj1bXTtmb3IoY29uc3QgcyBvZiB0KW4ucHVzaCh0aGlzLnBhcnNlKGUsYS5mZXRjaElmUmVmKHMpKSk7aWYoMT09PW4ubGVuZ3RoKXJldHVybiBuWzBdO2NvbnN0IHM9blswXT8ubnVtSW5wdXRzPz8wO2lmKG4uc29tZShlPT5lLm51bUlucHV0cyE9PXN8fDEhPT1lLm51bU91dHB1dHMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBhcnJheSBvZiBmdW5jdGlvbnMuIik7cmV0dXJuIHNldEFyaXR5KGZ1bmN0aW9uKGUsdCxhLHMpe2ZvcihsZXQgcj0wLGk9bi5sZW5ndGg7cjxpO3IrKyluW3JdKGUsdCxhLHMrcil9LHMsbi5sZW5ndGgpfXN0YXRpYyBjb25zdHJ1Y3RTYW1wbGVkKGUsdCxhKXtjb25zdCBuPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRG9tYWluIikpLHM9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJSYW5nZSIpKTtpZighbnx8IXMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBkb21haW4gb3IgcmFuZ2UiKTtjb25zdCByPW4ubGVuZ3RoLzIsaT1zLmxlbmd0aC8yLG89dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJTaXplIikpLGw9YS5nZXQoIkJpdHNQZXJTYW1wbGUiKSxmPWEuZ2V0KCJPcmRlciIpfHwxOzEhPT1mJiZpbmZvKCJObyBzdXBwb3J0IGZvciBjdWJpYyBzcGxpbmUgaW50ZXJwb2xhdGlvbjogIitmKTtsZXQgYz10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkVuY29kZSIpKTtpZighYyl7Yz1bXTtmb3IobGV0IGU9MDtlPHI7KytlKWMucHVzaCgwLG9bZV0tMSl9Y29uc3QgaD10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkRlY29kZSIpKXx8cyx1PXRoaXMuZ2V0U2FtcGxlQXJyYXkobyxpLGwsdCksbT1yPlBERkZ1bmN0aW9uLk1BWF9NVUxUSUxJTkVBUl9JTlBVVFMscD1uZXcgRmxvYXQ2NEFycmF5KHIpLGQ9bmV3IEZsb2F0NjRBcnJheShyKSxnPW5ldyBGbG9hdDY0QXJyYXkociksYj1tP25ldyBVaW50MzJBcnJheShyKTpudWxsLHc9bT9yKzE6MTw8cixqPW5ldyBVaW50MzJBcnJheSh3KSxrPW5ldyBGbG9hdDY0QXJyYXkodyk7cmV0dXJuIHNldEFyaXR5KGZ1bmN0aW9uIGNvbnN0cnVjdFNhbXBsZWRGbihlLHQsYSxsKXtsZXQgZj0wLHc9aSx5PTA7Zm9yKGxldCBhPTA7YTxyOysrYSl7Y29uc3Qgcz1uWzIqYV0scj1uWzIqYSsxXTtsZXQgaT1pbnRlcnBvbGF0ZShNYXRoQ2xhbXAoZVt0K2FdLHMscikscyxyLGNbMiphXSxjWzIqYSsxXSk7Y29uc3QgbD1vW2FdO2k9TWF0aENsYW1wKGksMCxsLTEpO2NvbnN0IGg9TWF0aC5mbG9vcihpKTtmKz1oKnc7aWYoaSE9PWgpe3BbeV09dztkW3ldPWgrMS1pO2dbeV09aS1oO3krK313Kj1sfWpbMF09ZjtrWzBdPTE7bGV0IHE9MTtpZihtKXtpZih5PjApe2ZvcihsZXQgZT0wO2U8eTtlKyspe2NvbnN0IHQ9Z1tlXTtsZXQgYT1lO2Zvcig7YT4wJiZnW2JbYS0xXV08dDthLS0pYlthXT1iW2EtMV07YlthXT1lfWtbMF09ZFtiWzBdXTtmb3IobGV0IGU9MDtlPHk7ZSsrKXtjb25zdCB0PWJbZV07altlKzFdPWpbZV0rcFt0XTtrW2UrMV09ZSsxPHk/Z1t0XS1nW2JbZSsxXV06Z1t0XX1xPXkrMX19ZWxzZSBmb3IobGV0IGU9MDtlPHk7ZSsrKXtjb25zdCB0PXBbZV0sYT1kW2VdLG49Z1tlXTtmb3IobGV0IGU9MDtlPHE7ZSsrKXtqW3ErZV09altlXSt0O2tbcStlXT1rW2VdKm47a1tlXSo9YX1xPDw9MX1mb3IobGV0IGU9MDtlPGk7KytlKXtsZXQgdD0wO2ZvcihsZXQgYT0wO2E8cTthKyspdCs9dVtqW2FdK2VdKmtbYV07dD1pbnRlcnBvbGF0ZSh0LDAsMSxoWzIqZV0saFsyKmUrMV0pO2FbbCtlXT1NYXRoQ2xhbXAodCxzWzIqZV0sc1syKmUrMV0pfX0scixpKX1zdGF0aWMgY29uc3RydWN0SW50ZXJwb2xhdGVkKGUsdCl7Y29uc3QgYT10b051bWJlckFycmF5KHQuZ2V0QXJyYXkoIkRvbWFpbiIpKSxuPXRvTnVtYmVyQXJyYXkodC5nZXRBcnJheSgiQzAiKSl8fFswXSxzPXRvTnVtYmVyQXJyYXkodC5nZXRBcnJheSgiQzEiKSl8fFsxXSxyPXQuZ2V0KCJOIiksaT1bXTtmb3IobGV0IGU9MCx0PW4ubGVuZ3RoO2U8dDsrK2UpaS5wdXNoKHNbZV0tbltlXSk7Y29uc3Qgbz1pLmxlbmd0aDtyZXR1cm4gc2V0QXJpdHkoZnVuY3Rpb24gY29uc3RydWN0SW50ZXJwb2xhdGVkRm4oZSx0LGEscyl7Y29uc3QgbD0xPT09cj9lW3RdOmVbdF0qKnI7Zm9yKGxldCBlPTA7ZTxvOysrZSlhW3MrZV09bltlXStsKmlbZV19LGE/YS5sZW5ndGgvMjoxLG8pfXN0YXRpYyBjb25zdHJ1Y3RTdGl0Y2hlZChlLHQpe2NvbnN0IGE9dG9OdW1iZXJBcnJheSh0LmdldEFycmF5KCJEb21haW4iKSk7aWYoIWEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBkb21haW4iKTtjb25zdCBuPWEubGVuZ3RoLzI7aWYoMSE9PW4pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgZG9tYWluIGZvciBzdGl0Y2hlZCBmdW5jdGlvbiIpO2NvbnN0e3hyZWY6c309ZSxyPVtdO2Zvcihjb25zdCBhIG9mIHQuZ2V0KCJGdW5jdGlvbnMiKSlyLnB1c2godGhpcy5wYXJzZShlLHMuZmV0Y2hJZlJlZihhKSkpO2NvbnN0IGk9clswXT8ubnVtT3V0cHV0cz8/MDtpZigwPT09ci5sZW5ndGh8fHIuc29tZShlPT4xIT09ZS5udW1JbnB1dHN8fGUubnVtT3V0cHV0cyE9PWkpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW5jb21wYXRpYmxlIHN1Yi1mdW5jdGlvbnMgZm9yIHN0aXRjaGVkIGZ1bmN0aW9uIik7Y29uc3Qgbz10b051bWJlckFycmF5KHQuZ2V0QXJyYXkoIkJvdW5kcyIpKSxsPXRvTnVtYmVyQXJyYXkodC5nZXRBcnJheSgiRW5jb2RlIikpLGY9bmV3IEZsb2F0MzJBcnJheSgxKTtyZXR1cm4gc2V0QXJpdHkoZnVuY3Rpb24gY29uc3RydWN0U3RpdGNoZWRGbihlLHQsbixzKXtjb25zdCBpPU1hdGhDbGFtcChlW3RdLGFbMF0sYVsxXSksYz1vLmxlbmd0aDtsZXQgaDtmb3IoaD0wO2g8YyYmIShpPG9baF0pOysraCk7Y29uc3QgdT1oPjA/b1toLTFdOmFbMF0sbT1oPGM/b1toXTphWzFdO2ZbMF09aW50ZXJwb2xhdGUoaSx1LG0sbFsyKmhdLGxbMipoKzFdKTtyW2hdKGYsMCxuLHMpfSxuLGkpfXN0YXRpYyBjb25zdHJ1Y3RQb3N0U2NyaXB0KGUsdCxhKXtjb25zdCBuPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRG9tYWluIikpLHM9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJSYW5nZSIpKTtpZighbil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIGRvbWFpbi4iKTtpZighcyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIHJhbmdlLiIpO2NvbnN0IHI9dC5nZXRTdHJpbmcoKSxpPW4ubGVuZ3RoLzIsbz1zLmxlbmd0aC8yO3RyeXtpZihlLnVzZVdhc20pe2NvbnN0IGU9YnVpbGRQb3N0U2NyaXB0V2FzbUZ1bmN0aW9uKHIsbixzKTtpZihlKXJldHVybiBzZXRBcml0eShlLGksbyl9fWNhdGNoe313YXJuKCJGYWlsZWQgdG8gY29tcGlsZSBQb3N0U2NyaXB0IGZ1bmN0aW9uIHRvIHdhc20sIGZhbGxpbmcgYmFjayB0byBKUyIpO3JldHVybiBzZXRBcml0eShmdW5jdGlvbiBidWlsZFBvc3RTY3JpcHRKc0Z1bmN0aW9uKGUsdCxhLG49ITEpe2NvbnN0IHM9cGFyc2VQb3N0U2NyaXB0RnVuY3Rpb24oZSkscj0hbiYmbmV3IFBzSnNDb21waWxlcih0LGEpLmNvbXBpbGUocyk7cmV0dXJuIHI/KGUsdCxhLG4pPT57UHNKc0NvbXBpbGVyLmV4ZWN1dGUocixlLHQsYSxuKX06UFNTdGFja0Jhc2VkSW50ZXJwcmV0ZXIuYnVpbGQocyx0LGEpfShyLG4scyksaSxvKX19ZnVuY3Rpb24gaXNQREZGdW5jdGlvbihlKXtsZXQgdDtpZihlIGluc3RhbmNlb2YgRGljdCl0PWU7ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSlyZXR1cm4hMTt0PWUuZGljdH1yZXR1cm4gdC5oYXMoIkZ1bmN0aW9uVHlwZSIpfWZ1bmN0aW9uIHRleHRTaW5rV3JhcHBlcihlKXtjb25zdCB0PWU/bnVsbDpQcm9taXNlLnJlc29sdmUoKTtyZXR1cm57ZW5xdWV1ZUludm9rZWQ6ITEsZW5xdWV1ZSh0LGEpe3RoaXMuZW5xdWV1ZUludm9rZWQ9ITA7ZT8uZW5xdWV1ZSh0LGEpfSxnZXQgZGVzaXJlZFNpemUoKXtyZXR1cm4gZT8uZGVzaXJlZFNpemU/PzEwMH0sZ2V0IHJlYWR5KCl7cmV0dXJuIGU/LnJlYWR5Pz90fX19ZnVuY3Rpb24gX3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24oZSx0LGEsbil7aWYoKythPjEwKXt3YXJuKCJWaXNpYmlsaXR5IGV4cHJlc3Npb24gaXMgdG9vIGRlZXBseSBuZXN0ZWQiKTtyZXR1cm59Y29uc3Qgcz10Lmxlbmd0aCxyPWUuZmV0Y2hJZlJlZih0WzBdKTtpZighKHM8MikmJnIgaW5zdGFuY2VvZiBOYW1lKXtzd2l0Y2goci5uYW1lKXtjYXNlIkFuZCI6Y2FzZSJPciI6Y2FzZSJOb3QiOm4ucHVzaChyLm5hbWUpO2JyZWFrO2RlZmF1bHQ6d2FybihgSW52YWxpZCBvcGVyYXRvciAke3IubmFtZX0gaW4gdmlzaWJpbGl0eSBleHByZXNzaW9uYCk7cmV0dXJufWZvcihsZXQgcj0xO3I8cztyKyspe2NvbnN0IHM9dFtyXSxpPWUuZmV0Y2hJZlJlZihzKTtpZihBcnJheS5pc0FycmF5KGkpKXtjb25zdCB0PVtdO24ucHVzaCh0KTtfcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihlLGksYSx0KX1lbHNlIHMgaW5zdGFuY2VvZiBSZWYmJm4ucHVzaChzLnRvU3RyaW5nKCkpfX1lbHNlIHdhcm4oIkludmFsaWQgdmlzaWJpbGl0eSBleHByZXNzaW9uIil9ZnVuY3Rpb24gcGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZSx0LGEpe2xldCBuO2lmKHQgaW5zdGFuY2VvZiBOYW1lKXtuPWEuZ2V0KCJQcm9wZXJ0aWVzIikuZ2V0KHQubmFtZSl9ZWxzZXtpZighKHQgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk9wdGlvbmFsIGNvbnRlbnQgcHJvcGVydGllcyBtYWxmb3JtZWQuIik7bj10fWNvbnN0IHM9bi5nZXQoIlR5cGUiKT8ubmFtZTtpZigiT0NHIj09PXMpcmV0dXJue3R5cGU6cyxpZDpuLm9iaklkfTtpZigiT0NNRCI9PT1zKXtjb25zdCB0PW4uZ2V0KCJWRSIpO2lmKEFycmF5LmlzQXJyYXkodCkpe2NvbnN0IGE9W107X3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24oZSx0LDAsYSk7aWYoYS5sZW5ndGg+MClyZXR1cm57dHlwZToiT0NNRCIsZXhwcmVzc2lvbjphfX1jb25zdCBhPW4uZ2V0KCJPQ0dzIik7aWYoQXJyYXkuaXNBcnJheShhKXx8YSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9W107aWYoQXJyYXkuaXNBcnJheShhKSlmb3IoY29uc3QgdCBvZiBhKWUucHVzaCh0LnRvU3RyaW5nKCkpO2Vsc2UgZS5wdXNoKGEub2JqSWQpO2NvbnN0IHQ9bi5nZXQoIlAiKTtyZXR1cm57dHlwZTpzLGlkczplLHBvbGljeTp0IGluc3RhbmNlb2YgTmFtZT90Lm5hbWU6bnVsbCxleHByZXNzaW9uOm51bGx9fWlmKGEgaW5zdGFuY2VvZiBSZWYpcmV0dXJue3R5cGU6cyxpZDphLnRvU3RyaW5nKCl9fXJldHVybiBudWxsfWNvbnN0IFNpPVsiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiUyIsIkIiLCJTIiwiV1MiLCJCIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkIiLCJCIiwiQiIsIlMiLCJXUyIsIk9OIiwiT04iLCJFVCIsIkVUIiwiRVQiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiRVMiLCJDUyIsIkVTIiwiQ1MiLCJDUyIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiQ1MiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJPTiIsIk9OIiwiT04iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkNTIiwiT04iLCJFVCIsIkVUIiwiRVQiLCJFVCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIk9OIiwiT04iLCJCTiIsIk9OIiwiT04iLCJFVCIsIkVUIiwiRU4iLCJFTiIsIk9OIiwiTCIsIk9OIiwiT04iLCJPTiIsIkVOIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiXSxBaT1bIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIk9OIiwiT04iLCJBTCIsIkVUIiwiRVQiLCJBTCIsIkNTIiwiQUwiLCJPTiIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIiIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiRVQiLCJBTiIsIkFOIiwiQUwiLCJBTCIsIkFMIiwiTlNNIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiTlNNIiwiTlNNIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiXTtmdW5jdGlvbiBpc09kZChlKXtyZXR1cm4hISgxJmUpfWZ1bmN0aW9uIGlzRXZlbihlKXtyZXR1cm4hKDEmZSl9ZnVuY3Rpb24gZmluZFVuZXF1YWwoZSx0LGEpe2xldCBuLHM7Zm9yKG49dCxzPWUubGVuZ3RoO248czsrK24paWYoZVtuXSE9PWEpcmV0dXJuIG47cmV0dXJuIG59ZnVuY3Rpb24gcmV2ZXJzZVZhbHVlcyhlLHQsYSl7Zm9yKGxldCBuPXQscz1hLTE7bjxzOysrbiwtLXMpe2NvbnN0IHQ9ZVtuXTtlW25dPWVbc107ZVtzXT10fX1mdW5jdGlvbiBjcmVhdGVCaWRpVGV4dChlLHQsYT0hMSl7bGV0IG49Imx0ciI7YT9uPSJ0dGIiOnR8fChuPSJydGwiKTtyZXR1cm57c3RyOmUsZGlyOm59fWNvbnN0IHhpPVtdLENpPVtdO2Z1bmN0aW9uIGJpZGkoZSx0PS0xLGE9ITEpe2xldCBuPSEwO2NvbnN0IHM9ZS5sZW5ndGg7aWYoMD09PXN8fGEpcmV0dXJuIGNyZWF0ZUJpZGlUZXh0KGUsbixhKTt4aS5sZW5ndGg9cztDaS5sZW5ndGg9cztsZXQgcixpLG89MDtmb3Iocj0wO3I8czsrK3Ipe3hpW3JdPWUuY2hhckF0KHIpO2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KHIpO2xldCBhPSJMIjtpZih0PD0yNTUpYT1TaVt0XTtlbHNlIGlmKDE0MjQ8PXQmJnQ8PTE1MjQpYT0iUiI7ZWxzZSBpZigxNTM2PD10JiZ0PD0xNzkxKXthPUFpWzI1NSZ0XTthfHx3YXJuKCJCaWRpOiBpbnZhbGlkIFVuaWNvZGUgY2hhcmFjdGVyICIrdC50b1N0cmluZygxNikpfWVsc2UoMTc5Mjw9dCYmdDw9MjIyMHx8NjQzMzY8PXQmJnQ8PTY1MDIzfHw2NTEzNjw9dCYmdDw9NjUyNzkpJiYoYT0iQUwiKTsiUiIhPT1hJiYiQUwiIT09YSYmIkFOIiE9PWF8fG8rKztDaVtyXT1hfWlmKDA9PT1vKXtuPSEwO3JldHVybiBjcmVhdGVCaWRpVGV4dChlLG4pfWlmKC0xPT09dClpZihvL3M8LjMmJnM+NCl7bj0hMDt0PTB9ZWxzZXtuPSExO3Q9MX1jb25zdCBsPVtdO2ZvcihyPTA7cjxzOysrcilsW3JdPXQ7Y29uc3QgZj1pc09kZCh0KT8iUiI6IkwiLGM9ZixoPWM7bGV0IHUsbT1jO2ZvcihyPTA7cjxzOysrcikiTlNNIj09PUNpW3JdP0NpW3JdPW06bT1DaVtyXTttPWM7Zm9yKHI9MDtyPHM7KytyKXt1PUNpW3JdOyJFTiI9PT11P0NpW3JdPSJBTCI9PT1tPyJBTiI6IkVOIjoiUiIhPT11JiYiTCIhPT11JiYiQUwiIT09dXx8KG09dSl9Zm9yKHI9MDtyPHM7KytyKXt1PUNpW3JdOyJBTCI9PT11JiYoQ2lbcl09IlIiKX1mb3Iocj0xO3I8cy0xOysrcil7IkVTIj09PUNpW3JdJiYiRU4iPT09Q2lbci0xXSYmIkVOIj09PUNpW3IrMV0mJihDaVtyXT0iRU4iKTsiQ1MiIT09Q2lbcl18fCJFTiIhPT1DaVtyLTFdJiYiQU4iIT09Q2lbci0xXXx8Q2lbcisxXSE9PUNpW3ItMV18fChDaVtyXT1DaVtyLTFdKX1mb3Iocj0wO3I8czsrK3IpaWYoIkVOIj09PUNpW3JdKXtmb3IobGV0IGU9ci0xO2U+PTAmJiJFVCI9PT1DaVtlXTstLWUpQ2lbZV09IkVOIjtmb3IobGV0IGU9cisxO2U8cyYmIkVUIj09PUNpW2VdOysrZSlDaVtlXT0iRU4ifWZvcihyPTA7cjxzOysrcil7dT1DaVtyXTsiV1MiIT09dSYmIkVTIiE9PXUmJiJFVCIhPT11JiYiQ1MiIT09dXx8KENpW3JdPSJPTiIpfW09Yztmb3Iocj0wO3I8czsrK3Ipe3U9Q2lbcl07IkVOIj09PXU/Q2lbcl09IkwiPT09bT8iTCI6IkVOIjoiUiIhPT11JiYiTCIhPT11fHwobT11KX1mb3Iocj0wO3I8czsrK3IpaWYoIk9OIj09PUNpW3JdKXtjb25zdCBlPWZpbmRVbmVxdWFsKENpLHIrMSwiT04iKTtsZXQgdD1jO2ZvcihsZXQgZT1yLTE7ZT49MDtlLS0pe2NvbnN0IGE9Q2lbZV07aWYoIkwiPT09YSl7dD0iTCI7YnJlYWt9aWYoIlIiPT09YXx8IkVOIj09PWF8fCJBTiI9PT1hKXt0PSJSIjticmVha319bGV0IGE9aDtmb3IobGV0IHQ9ZTt0PHM7dCsrKXtjb25zdCBlPUNpW3RdO2lmKCJMIj09PWUpe2E9IkwiO2JyZWFrfWlmKCJSIj09PWV8fCJFTiI9PT1lfHwiQU4iPT09ZSl7YT0iUiI7YnJlYWt9fXQ9PT1hJiZDaS5maWxsKHQscixlKTtyPWUtMX1mb3Iocj0wO3I8czsrK3IpIk9OIj09PUNpW3JdJiYoQ2lbcl09Zik7Zm9yKHI9MDtyPHM7KytyKXt1PUNpW3JdO2lzRXZlbihsW3JdKT8iUiI9PT11P2xbcl0rPTE6IkFOIiE9PXUmJiJFTiIhPT11fHwobFtyXSs9Mik6IkwiIT09dSYmIkFOIiE9PXUmJiJFTiIhPT11fHwobFtyXSs9MSl9bGV0IHAsZD0tMSxnPTk5O2ZvcihyPTAsaT1sLmxlbmd0aDtyPGk7KytyKXtwPWxbcl07ZDxwJiYoZD1wKTtnPnAmJmlzT2RkKHApJiYoZz1wKX1mb3IocD1kO3A+PWc7LS1wKXtsZXQgZT0tMTtmb3Iocj0wLGk9bC5sZW5ndGg7cjxpOysrcilpZihsW3JdPHApe2lmKGU+PTApe3JldmVyc2VWYWx1ZXMoeGksZSxyKTtlPS0xfX1lbHNlIGU8MCYmKGU9cik7ZT49MCYmcmV2ZXJzZVZhbHVlcyh4aSxlLGwubGVuZ3RoKX1mb3Iocj0wLGk9eGkubGVuZ3RoO3I8aTsrK3Ipe2NvbnN0IGU9eGlbcl07IjwiIT09ZSYmIj4iIT09ZXx8KHhpW3JdPSIiKX1yZXR1cm4gY3JlYXRlQmlkaVRleHQoeGkuam9pbigiIiksbil9Y29uc3QgSWk9e3N0eWxlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIn0sRmk9e3N0eWxlOiJub3JtYWwiLHdlaWdodDoiNTAwIn0sVGk9e3N0eWxlOiJub3JtYWwiLHdlaWdodDoiYm9sZCJ9LFJpPXtzdHlsZToiaXRhbGljIix3ZWlnaHQ6Im5vcm1hbCJ9LE9pPXtzdHlsZToiaXRhbGljIix3ZWlnaHQ6ImJvbGQifSxCaT1uZXcgTWFwKFtbIlRpbWVzLVJvbWFuIix7bG9jYWw6WyJUaW1lcyBOZXcgUm9tYW4iLCJUaW1lcy1Sb21hbiIsIlRpbWVzIiwiTGliZXJhdGlvbiBTZXJpZiIsIk5pbWJ1cyBSb21hbiIsIk5pbWJ1cyBSb21hbiBMIiwiVGlub3MiLCJUaG9ybmRhbGUiLCJUZVggR3lyZSBUZXJtZXMiLCJGcmVlU2VyaWYiLCJMaW51eCBMaWJlcnRpbmUgTyIsIkxpYmVydGludXMgU2VyaWYiLCJQVCBBc3RyYSBTZXJpZiIsIkRlamFWdSBTZXJpZiIsIkJpdHN0cmVhbSBWZXJhIFNlcmlmIiwiVWJ1bnR1Il0sc3R5bGU6SWksdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtQm9sZCIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6VGksdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtSXRhbGljIix7YWxpYXM6IlRpbWVzLVJvbWFuIixzdHlsZTpSaSx1bHRpbWF0ZToic2VyaWYifV0sWyJUaW1lcy1Cb2xkSXRhbGljIix7YWxpYXM6IlRpbWVzLVJvbWFuIixzdHlsZTpPaSx1bHRpbWF0ZToic2VyaWYifV0sWyJIZWx2ZXRpY2EiLHtsb2NhbDpbIkhlbHZldGljYSIsIkhlbHZldGljYSBOZXVlIiwiQXJpYWwiLCJBcmlhbCBOb3ZhIiwiTGliZXJhdGlvbiBTYW5zIiwiQXJpbW8iLCJOaW1idXMgU2FucyIsIk5pbWJ1cyBTYW5zIEwiLCJBMDMwIiwiVGVYIEd5cmUgSGVyb3MiLCJGcmVlU2FucyIsIkRlamFWdSBTYW5zIiwiQWxiYW55IiwiQml0c3RyZWFtIFZlcmEgU2FucyIsIkFyaWFsIFVuaWNvZGUgTVMiLCJNaWNyb3NvZnQgU2FucyBTZXJpZiIsIkFwcGxlIFN5bWJvbHMiLCJDYW50YXJlbGwiXSxwYXRoOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiIsc3R5bGU6SWksdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtQm9sZCIse2FsaWFzOiJIZWx2ZXRpY2EiLHBhdGg6IkxpYmVyYXRpb25TYW5zLUJvbGQudHRmIixzdHlsZTpUaSx1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIkhlbHZldGljYS1PYmxpcXVlIix7YWxpYXM6IkhlbHZldGljYSIscGF0aDoiTGliZXJhdGlvblNhbnMtSXRhbGljLnR0ZiIsc3R5bGU6UmksdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiLHthbGlhczoiSGVsdmV0aWNhIixwYXRoOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljLnR0ZiIsc3R5bGU6T2ksdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJDb3VyaWVyIix7bG9jYWw6WyJDb3VyaWVyIiwiQ291cmllciBOZXciLCJMaWJlcmF0aW9uIE1vbm8iLCJOaW1idXMgTW9ubyIsIk5pbWJ1cyBNb25vIEwiLCJDb3VzaW5lIiwiQ3VtYmVybGFuZCIsIlRlWCBHeXJlIEN1cnNvciIsIkZyZWVNb25vIiwiTGludXggTGliZXJ0aW5lIE1vbm8gTyIsIkxpYmVydGludXMgTW9ubyJdLHN0eWxlOklpLHVsdGltYXRlOiJtb25vc3BhY2UifV0sWyJDb3VyaWVyLUJvbGQiLHthbGlhczoiQ291cmllciIsc3R5bGU6VGksdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkNvdXJpZXItT2JsaXF1ZSIse2FsaWFzOiJDb3VyaWVyIixzdHlsZTpSaSx1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQ291cmllci1Cb2xkT2JsaXF1ZSIse2FsaWFzOiJDb3VyaWVyIixzdHlsZTpPaSx1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQXJpYWxCbGFjayIse2xvY2FsOlsiQXJpYWwgQmxhY2siXSxzdHlsZTp7c3R5bGU6Im5vcm1hbCIsd2VpZ2h0OiI5MDAifSxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGQifV0sWyJBcmlhbEJsYWNrLUJvbGQiLHthbGlhczoiQXJpYWxCbGFjayJ9XSxbIkFyaWFsQmxhY2stSXRhbGljIix7YWxpYXM6IkFyaWFsQmxhY2siLHN0eWxlOntzdHlsZToiaXRhbGljIix3ZWlnaHQ6IjkwMCJ9LGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUifV0sWyJBcmlhbEJsYWNrLUJvbGRJdGFsaWMiLHthbGlhczoiQXJpYWxCbGFjay1JdGFsaWMifV0sWyJBcmlhbE5hcnJvdyIse2xvY2FsOlsiQXJpYWwgTmFycm93IiwiTGliZXJhdGlvbiBTYW5zIE5hcnJvdyIsIkhlbHZldGljYSBDb25kZW5zZWQiLCJOaW1idXMgU2FucyBOYXJyb3ciLCJUZVggR3lyZSBIZXJvcyBDbiJdLHN0eWxlOklpLGZhbGxiYWNrOiJIZWx2ZXRpY2EifV0sWyJBcmlhbE5hcnJvdy1Cb2xkIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTpUaSxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGQifV0sWyJBcmlhbE5hcnJvdy1JdGFsaWMiLHthbGlhczoiQXJpYWxOYXJyb3ciLHN0eWxlOlJpLGZhbGxiYWNrOiJIZWx2ZXRpY2EtT2JsaXF1ZSJ9XSxbIkFyaWFsTmFycm93LUJvbGRJdGFsaWMiLHthbGlhczoiQXJpYWxOYXJyb3ciLHN0eWxlOk9pLGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUifV0sWyJDYWxpYnJpIix7bG9jYWw6WyJDYWxpYnJpIiwiQ2FybGl0byJdLHN0eWxlOklpLGZhbGxiYWNrOiJIZWx2ZXRpY2EifV0sWyJDYWxpYnJpLUJvbGQiLHthbGlhczoiQ2FsaWJyaSIsc3R5bGU6VGksZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQ2FsaWJyaS1JdGFsaWMiLHthbGlhczoiQ2FsaWJyaSIsc3R5bGU6UmksZmFsbGJhY2s6IkhlbHZldGljYS1PYmxpcXVlIn1dLFsiQ2FsaWJyaS1Cb2xkSXRhbGljIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOk9pLGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUifV0sWyJXaW5nZGluZ3MiLHtsb2NhbDpbIldpbmdkaW5ncyIsIlVSVyBEaW5nYmF0cyJdLHN0eWxlOklpfV0sWyJXaW5nZGluZ3MtUmVndWxhciIse2FsaWFzOiJXaW5nZGluZ3MifV0sWyJXaW5nZGluZ3MtQm9sZCIse2FsaWFzOiJXaW5nZGluZ3MifV0sWyLDi8OOw4zDpSIse2xvY2FsOlsiU2ltU3VuIiwiU2ltU3VuIFJlZ3VsYXIiLCJOU2ltU3VuIl0sc3R5bGU6SWksdWx0aW1hdGU6InNlcmlmIn1dLFsiwrrDmsOMw6UiLHtsb2NhbDpbIlNpbUhlaSIsIlNpbUhlaSBSZWd1bGFyIl0sc3R5bGU6SWksdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyLCv8Ksw4zDpSIse2xvY2FsOlsiS2FpVGkiLCJTaW1LYWkiLCJTaW1LYWkgUmVndWxhciJdLHN0eWxlOklpLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiwrfDgsOLw44iLHtsb2NhbDpbIkZhbmdTb25nIiwiU2ltRmFuZyIsIlNpbUZhbmcgUmVndWxhciJdLHN0eWxlOklpLHVsdGltYXRlOiJzZXJpZiJ9XSxbIsK/wqzDjMOlX0dCMjMxMiIse2FsaWFzOiLCv8Ksw4zDpSJ9XSxbIsK3w4LDi8OOX0dCMjMxMiIse2FsaWFzOiLCt8OCw4vDjiJ9XSxbIsOBwqXDisOpIix7bG9jYWw6WyJTaW1MaSIsIlNpbUxpIFJlZ3VsYXIiXSxzdHlsZTpJaSx1bHRpbWF0ZToic2VyaWYifV0sWyLDkMOCw4vDjiIse2FsaWFzOiLDi8OOw4zDpSJ9XSxbIkhlaXNlaU1pbi1XMyIse2xvY2FsOlsiSGlyYWdpbm8gTWluY2hvIFByb04iLCJIaXJhZ2lubyBNaW5jaG8gUHJvIiwiWXUgTWluY2hvIiwiWXVNaW5jaG8iLCJTb3VyY2UgSGFuIFNlcmlmIEpQIiwiTm90byBTZXJpZiBKUCIsIk5vdG8gU2VyaWYgQ0pLIEpQIiwiSVBBZXhNaW5jaG8iLCJJUEFNaW5jaG8iLCJUYWthbyBNaW5jaG8iLCJNUyBNaW5jaG8iLCJNUyBQTWluY2hvIl0sc3R5bGU6SWksdWx0aW1hdGU6InNlcmlmIn1dLFsiSGVpc2VpS2FrdUdvLVc1Iix7bG9jYWw6WyJIaXJhZ2lubyBLYWt1IEdvdGhpYyBQcm9OIiwiSGlyYWdpbm8gS2FrdSBHb3RoaWMgUHJvIiwiSGlyYWdpbm8gU2FucyIsIll1IEdvdGhpYyIsIll1R290aGljIiwiU291cmNlIEhhbiBTYW5zIEpQIiwiTm90byBTYW5zIEpQIiwiTm90byBTYW5zIENKSyBKUCIsIklQQWV4R290aGljIiwiSVBBR290aGljIiwiVGFrYW8gR290aGljIiwiTWVpcnlvIiwiTVMgR290aGljIiwiTVMgUEdvdGhpYyJdLHN0eWxlOkZpLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiSGVpc2VpTWluLVczLUFjcm8iLHthbGlhczoiSGVpc2VpTWluLVczIn1dLFsiSGVpc2VpS2FrdUdvLVc1LUFjcm8iLHthbGlhczoiSGVpc2VpS2FrdUdvLVc1In1dLFsiS296TWluUHJvLVJlZ3VsYXIiLHthbGlhczoiSGVpc2VpTWluLVczIn1dLFsiS296TWluUHJvVkktUmVndWxhciIse2FsaWFzOiJIZWlzZWlNaW4tVzMifV0sWyJLb3pNaW5QcjZOLVJlZ3VsYXIiLHthbGlhczoiSGVpc2VpTWluLVczIn1dLFsiS296R29Qcm8tUmVndWxhciIse2FsaWFzOiJIZWlzZWlLYWt1R28tVzUifV0sWyJLb3pHb1Byb1ZJLVJlZ3VsYXIiLHthbGlhczoiSGVpc2VpS2FrdUdvLVc1In1dLFsiS296R29QcjZOLVJlZ3VsYXIiLHthbGlhczoiSGVpc2VpS2FrdUdvLVc1In1dLFsiU1RTb25nLUxpZ2h0Iix7bG9jYWw6WyJTVFNvbmciLCJTb25ndGkgU0MiLCJTb3VyY2UgSGFuIFNlcmlmIFNDIiwiU291cmNlIEhhbiBTZXJpZiBDTiIsIk5vdG8gU2VyaWYgU0MiLCJOb3RvIFNlcmlmIENKSyBTQyIsIkFSIFBMIFVNaW5nIENOIiwiU2ltU3VuIiwiTlNpbVN1biJdLHN0eWxlOklpLHVsdGltYXRlOiJzZXJpZiJ9XSxbIlNUSGVpdGktUmVndWxhciIse2xvY2FsOlsiU1RIZWl0aSIsIkhlaXRpIFNDIiwiUGluZ0ZhbmcgU0MiLCJTb3VyY2UgSGFuIFNhbnMgU0MiLCJTb3VyY2UgSGFuIFNhbnMgQ04iLCJOb3RvIFNhbnMgU0MiLCJOb3RvIFNhbnMgQ0pLIFNDIiwiTWljcm9zb2Z0IFlhSGVpIiwiU2ltSGVpIiwiV2VuUXVhbllpIFplbiBIZWkiXSxzdHlsZTpJaSx1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIlNUU29uZ1N0ZC1MaWdodCIse2FsaWFzOiJTVFNvbmctTGlnaHQifV0sWyJBZG9iZVNvbmdTdGQtTGlnaHQiLHthbGlhczoiU1RTb25nLUxpZ2h0In1dLFsiQWRvYmVIZWl0aVN0ZC1SZWd1bGFyIix7YWxpYXM6IlNUSGVpdGktUmVndWxhciJ9XSxbIkFkb2JlS2FpdGlTdGQtUmVndWxhciIse2FsaWFzOiLCv8Ksw4zDpSJ9XSxbIkFkb2JlRmFuZ3NvbmdTdGQtUmVndWxhciIse2FsaWFzOiLCt8OCw4vDjiJ9XSxbIk1TdW5nLUxpZ2h0Iix7bG9jYWw6WyJTb25ndGkgVEMiLCJMaVNvbmcgUHJvIiwiU291cmNlIEhhbiBTZXJpZiBUQyIsIlNvdXJjZSBIYW4gU2VyaWYgVFciLCJOb3RvIFNlcmlmIFRDIiwiTm90byBTZXJpZiBDSksgVEMiLCJBUiBQTCBVTWluZyBUVyIsIlBNaW5nTGlVIiwiTWluZ0xpVSIsIk1pbmdMaVVfSEtTQ1MiXSxzdHlsZTpJaSx1bHRpbWF0ZToic2VyaWYifV0sWyJNSGVpLU1lZGl1bSIse2xvY2FsOlsiSGVpdGkgVEMiLCJTVEhlaXRpIiwiU291cmNlIEhhbiBTYW5zIFRDIiwiU291cmNlIEhhbiBTYW5zIFRXIiwiTm90byBTYW5zIFRDIiwiTm90byBTYW5zIENKSyBUQyIsIlBpbmdGYW5nIFRDIiwiTWljcm9zb2Z0IEpoZW5nSGVpIl0sc3R5bGU6RmksdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJNU3VuZ1N0ZC1MaWdodCIse2FsaWFzOiJNU3VuZy1MaWdodCJ9XSxbIkFkb2JlTWluZ1N0ZC1MaWdodCIse2FsaWFzOiJNU3VuZy1MaWdodCJ9XSxbIkhZU015ZW9uZ0pvLU1lZGl1bSIse2xvY2FsOlsiQXBwbGVNeXVuZ2pvIiwiU291cmNlIEhhbiBTZXJpZiBLUiIsIk5vdG8gU2VyaWYgS1IiLCJOb3RvIFNlcmlmIENKSyBLUiIsIk5hbnVtIE15ZW9uZ2pvIiwiQmF0YW5nIl0sc3R5bGU6RmksdWx0aW1hdGU6InNlcmlmIn1dLFsiSFlHb1RoaWMtTWVkaXVtIix7bG9jYWw6WyJBcHBsZSBTRCBHb3RoaWMgTmVvIiwiQXBwbGVHb3RoaWMiLCJTb3VyY2UgSGFuIFNhbnMgS1IiLCJOb3RvIFNhbnMgS1IiLCJOb3RvIFNhbnMgQ0pLIEtSIiwiTmFudW0gR290aGljIiwiTWFsZ3VuIEdvdGhpYyIsIkRvdHVtIiwiR3VsaW0iXSxzdHlsZTpGaSx1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIkhZU015ZW9uZ0pvU3RkLU1lZGl1bSIse2FsaWFzOiJIWVNNeWVvbmdKby1NZWRpdW0ifV0sWyJBZG9iZU15dW5nam9TdGQtTWVkaXVtIix7YWxpYXM6IkhZU015ZW9uZ0pvLU1lZGl1bSJ9XSxbIkhZR29UaGljLUJvbGQiLHthbGlhczoiSFlHb1RoaWMtTWVkaXVtIixzdHlsZTpUaX1dLFsiQWRvYmVHb3RoaWNTdGQtQm9sZCIse2FsaWFzOiJIWUdvVGhpYy1NZWRpdW0iLHN0eWxlOlRpfV1dKSxEaT1uZXcgTWFwKFtbIkFyaWFsLUJsYWNrIiwiQXJpYWxCbGFjayJdXSk7ZnVuY3Rpb24gZ2V0RmFtaWx5TmFtZShlKXtjb25zdCB0PW5ldyBTZXQoWyJ0aGluIiwiZXh0cmFsaWdodCIsInVsdHJhbGlnaHQiLCJkZW1pbGlnaHQiLCJzZW1pbGlnaHQiLCJsaWdodCIsImJvb2siLCJyZWd1bGFyIiwibm9ybWFsIiwibWVkaXVtIiwiZGVtaWJvbGQiLCJzZW1pYm9sZCIsImJvbGQiLCJleHRyYWJvbGQiLCJ1bHRyYWJvbGQiLCJibGFjayIsImhlYXZ5IiwiZXh0cmFibGFjayIsInVsdHJhYmxhY2siLCJyb21hbiIsIml0YWxpYyIsIm9ibGlxdWUiLCJ1bHRyYWNvbmRlbnNlZCIsImV4dHJhY29uZGVuc2VkIiwiY29uZGVuc2VkIiwic2VtaWNvbmRlbnNlZCIsIm5vcm1hbCIsInNlbWlleHBhbmRlZCIsImV4cGFuZGVkIiwiZXh0cmFleHBhbmRlZCIsInVsdHJhZXhwYW5kZWQiLCJib2xkaXRhbGljIl0pO3JldHVybiBlLnNwbGl0KC9bLSAsK10rL2cpLmZpbHRlcihlPT4hdC5oYXMoZS50b0xvd2VyQ2FzZSgpKSkuam9pbigiICIpfWZ1bmN0aW9uIGdlbmVyYXRlRm9udCh7YWxpYXM6ZSxsb2NhbDp0LHBhdGg6YSxmYWxsYmFjazpuLHN0eWxlOnMsdWx0aW1hdGU6cn0saSxvLGw9ITAsZj0hMCxjPSIiKXtjb25zdCBoPXtzdHlsZTpudWxsLHVsdGltYXRlOm51bGx9O2lmKHQpe2NvbnN0IGU9Yz9gICR7Y31gOiIiO2Zvcihjb25zdCBhIG9mIHQpaS5wdXNoKGBsb2NhbCgke2F9JHtlfSlgKX1pZihlKXtjb25zdCB0PUJpLmdldChlKSxyPWN8fGZ1bmN0aW9uIGdldFN0eWxlVG9BcHBlbmQoZSl7c3dpdGNoKGUpe2Nhc2UgVGk6cmV0dXJuIkJvbGQiO2Nhc2UgUmk6cmV0dXJuIkl0YWxpYyI7Y2FzZSBPaTpyZXR1cm4iQm9sZCBJdGFsaWMiO2RlZmF1bHQ6aWYoImJvbGQiPT09ZT8ud2VpZ2h0KXJldHVybiJCb2xkIjtpZigiaXRhbGljIj09PWU/LnN0eWxlKXJldHVybiJJdGFsaWMifXJldHVybiIifShzKTtPYmplY3QuYXNzaWduKGgsZ2VuZXJhdGVGb250KHQsaSxvLGwmJiFuLGYmJiFhLHIpKX1zJiYoaC5zdHlsZT1zKTtyJiYoaC51bHRpbWF0ZT1yKTtpZihsJiZuKXtjb25zdCBlPUJpLmdldChuKSx7dWx0aW1hdGU6dH09Z2VuZXJhdGVGb250KGUsaSxvLGwsZiYmIWEsYyk7aC51bHRpbWF0ZXx8PXR9ZiYmYSYmbyYmaS5wdXNoKGB1cmwoJHtvfSR7YX0pYCk7cmV0dXJuIGh9ZnVuY3Rpb24gZ2V0Rm9udFN1YnN0aXR1dGlvbihlLHQsYSxuLHMscil7aWYobi5zdGFydHNXaXRoKCJJbnZhbGlkUERGanNGb250XyIpKXJldHVybiBudWxsOyJUcnVlVHlwZSIhPT1yJiYiVHlwZTEiIT09cnx8IS9eW0EtWl17Nn1cKy8udGVzdChuKXx8KG49bi5zbGljZSg3KSk7Y29uc3QgaT1uPW5vcm1hbGl6ZUZvbnROYW1lKG4pO2xldCBvPWUuZ2V0KGkpO2lmKG8pcmV0dXJuIG87bGV0IGw9QmkuZ2V0KG4pO2lmKCFsKWZvcihjb25zdFtlLHRdb2YgRGkpaWYobi5zdGFydHNXaXRoKGUpKXtuPWAke3R9JHtuLnN1YnN0cmluZyhlLmxlbmd0aCl9YDtsPUJpLmdldChuKTticmVha31sZXQgZj0hMTtpZighbCl7bD1CaS5nZXQocyk7Zj0hMH1jb25zdCBjPWAke3QuZ2V0RG9jSWQoKX1fcyR7dC5jcmVhdGVGb250SWQoKX1gO2lmKCFsKXtpZighdmFsaWRhdGVGb250TmFtZShuKSl7d2FybihgQ2Fubm90IHN1YnN0aXR1dGUgdGhlIGZvbnQgYmVjYXVzZSBvZiBpdHMgbmFtZTogJHtufWApO2Uuc2V0KGksbnVsbCk7cmV0dXJuIG51bGx9Y29uc3QgdD0vYm9sZC9pLnRlc3QobiksYT0vb2JsaXF1ZXxpdGFsaWMvaS50ZXN0KG4pLHM9dCYmYSYmT2l8fHQmJlRpfHxhJiZSaXx8SWk7bz17Y3NzOmAiJHtnZXRGYW1pbHlOYW1lKG4pfSIsJHtjfWAsZ3Vlc3NGYWxsYmFjazohMCxsb2FkZWROYW1lOmMsYmFzZUZvbnROYW1lOm4sc3JjOmBsb2NhbCgke259KWAsc3R5bGU6c307ZS5zZXQoaSxvKTtyZXR1cm4gb31jb25zdCBoPVtdO2YmJnZhbGlkYXRlRm9udE5hbWUobikmJmgucHVzaChgbG9jYWwoJHtufSlgKTtjb25zdHtzdHlsZTp1LHVsdGltYXRlOm19PWdlbmVyYXRlRm9udChsLGgsYSkscD1udWxsPT09bSxkPXA/IiI6YCwke219YDtvPXtjc3M6YCIke2dldEZhbWlseU5hbWUobil9Iiwke2N9JHtkfWAsZ3Vlc3NGYWxsYmFjazpwLGxvYWRlZE5hbWU6YyxiYXNlRm9udE5hbWU6bixzcmM6aC5qb2luKCIsIiksc3R5bGU6dX07ZS5zZXQoaSxvKTtyZXR1cm4gb31jb25zdCBIaT0zMjg1Mzc3NTIwLE1pPTQyOTQ5MDE3NjAsTmk9NjU1MzU7Y2xhc3MgTXVybXVySGFzaDNfNjR7Y29uc3RydWN0b3IoZSl7dGhpcy5oMT1lPzQyOTQ5NjcyOTUmZTpIaTt0aGlzLmgyPWU/NDI5NDk2NzI5NSZlOkhpfXVwZGF0ZShlKXtsZXQgdCxhO2lmKCJzdHJpbmciPT10eXBlb2YgZSl7dD1uZXcgVWludDhBcnJheSgyKmUubGVuZ3RoKTthPTA7Zm9yKGxldCBuPTAscz1lLmxlbmd0aDtuPHM7bisrKXtjb25zdCBzPWUuY2hhckNvZGVBdChuKTtpZihzPD0yNTUpdFthKytdPXM7ZWxzZXt0W2ErK109cz4+Pjg7dFthKytdPTI1NSZzfX19ZWxzZXtpZighQXJyYXlCdWZmZXIuaXNWaWV3KGUpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBkYXRhIGZvcm1hdCwgbXVzdCBiZSBhIHN0cmluZyBvciBUeXBlZEFycmF5LiIpO3Q9ZS5zbGljZSgpO2E9dC5ieXRlTGVuZ3RofWNvbnN0IG49YT4+MixzPWEtNCpuLHI9bmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyLDAsbik7bGV0IGk9MCxvPTAsbD10aGlzLmgxLGY9dGhpcy5oMjtjb25zdCBjPTM0MzI5MTgzNTMsaD00NjE4NDU5MDcsdT0xMTYwMSxtPTEzNzE1O2ZvcihsZXQgZT0wO2U8bjtlKyspaWYoMSZlKXtpPXJbZV07aT1pKmMmTWl8aSp1Jk5pO2k9aTw8MTV8aT4+PjE3O2k9aSpoJk1pfGkqbSZOaTtsXj1pO2w9bDw8MTN8bD4+PjE5O2w9NSpsKzM4NjQyOTIxOTZ9ZWxzZXtvPXJbZV07bz1vKmMmTWl8byp1Jk5pO289bzw8MTV8bz4+PjE3O289bypoJk1pfG8qbSZOaTtmXj1vO2Y9Zjw8MTN8Zj4+PjE5O2Y9NSpmKzM4NjQyOTIxOTZ9aT0wO3N3aXRjaChzKXtjYXNlIDM6aV49dFs0Km4rMl08PDE2O2Nhc2UgMjppXj10WzQqbisxXTw8ODtjYXNlIDE6aV49dFs0Km5dO2k9aSpjJk1pfGkqdSZOaTtpPWk8PDE1fGk+Pj4xNztpPWkqaCZNaXxpKm0mTmk7MSZuP2xePWk6Zl49aX10aGlzLmgxPWw7dGhpcy5oMj1mfWhleGRpZ2VzdCgpe2xldCBlPXRoaXMuaDEsdD10aGlzLmgyO2VePXQ+Pj4xO2U9Mzk4MTgwNjc5NyplJk1pfDM2MDQ1KmUmTmk7dD00MjgzNTQzNTExKnQmTWl8KDI5NTAxNjM3OTcqKHQ8PDE2fGU+Pj4xNikmTWkpPj4+MTY7ZV49dD4+PjE7ZT00NDQ5ODQ0MDMqZSZNaXw2MDQ5OSplJk5pO3Q9MzMwMTg4MjM2Nip0Jk1pfCgzMTIwNDM3ODkzKih0PDwxNnxlPj4+MTYpJk1pKT4+PjE2O2VePXQ+Pj4xO3JldHVybihlPj4+MCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSsodD4+PjApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIil9fWNsYXNzIFBERkltYWdle2NvbnN0cnVjdG9yKHt4cmVmOmUscmVzOnQsaW1hZ2U6YSxpc0lubGluZTpuPSExLHNtYXNrOnM9bnVsbCxtYXNrOnI9bnVsbCxpc01hc2s6aT0hMSxwZGZGdW5jdGlvbkZhY3Rvcnk6byxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6bCxsb2NhbENvbG9yU3BhY2VDYWNoZTpmfSl7dGhpcy5pbWFnZT1hO2NvbnN0IGM9YS5kaWN0LGg9Yy5nZXQoIkYiLCJGaWx0ZXIiKTtsZXQgdTtpZihoIGluc3RhbmNlb2YgTmFtZSl1PWgubmFtZTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoaCkpe2NvbnN0IHQ9ZS5mZXRjaElmUmVmKGhbMF0pO3QgaW5zdGFuY2VvZiBOYW1lJiYodT10Lm5hbWUpfXN3aXRjaCh1KXtjYXNlIkpQWERlY29kZSI6KHt3aWR0aDphLndpZHRoLGhlaWdodDphLmhlaWdodCxjb21wb25lbnRzQ291bnQ6YS5udW1Db21wcyxiaXRzUGVyQ29tcG9uZW50OmEuYml0c1BlckNvbXBvbmVudH09SnB4SW1hZ2UucGFyc2VJbWFnZVByb3BlcnRpZXMoYS5zdHJlYW0pKTthLnN0cmVhbS5yZXNldCgpO2NvbnN0IGU9SW1hZ2VSZXNpemVyLmdldFJlZHVjZVBvd2VyRm9ySlBYKGEud2lkdGgsYS5oZWlnaHQsYS5udW1Db21wcyk7dGhpcy5qcHhEZWNvZGVyT3B0aW9ucz17bnVtQ29tcG9uZW50czowLGlzSW5kZXhlZENvbG9ybWFwOiExLHNtYXNrSW5EYXRhOmMuZ2V0KCJTTWFza0luRGF0YSIpPj0xLHJlZHVjZVBvd2VyOmV9O2lmKGUpe2NvbnN0IHQ9MioqZTthLndpZHRoPU1hdGguY2VpbChhLndpZHRoL3QpO2EuaGVpZ2h0PU1hdGguY2VpbChhLmhlaWdodC90KX1icmVhaztjYXNlIkpCSUcyRGVjb2RlIjphLmJpdHNQZXJDb21wb25lbnQ9MTthLm51bUNvbXBzPTF9bGV0IG09Yy5nZXQoIlciLCJXaWR0aCIpLHA9Yy5nZXQoIkgiLCJIZWlnaHQiKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGEud2lkdGgpJiZhLndpZHRoPjAmJk51bWJlci5pc0ludGVnZXIoYS5oZWlnaHQpJiZhLmhlaWdodD4wJiYoYS53aWR0aCE9PW18fGEuaGVpZ2h0IT09cCkpe3dhcm4oIlBERkltYWdlIC0gdXNpbmcgdGhlIFdpZHRoL0hlaWdodCBvZiB0aGUgaW1hZ2UgZGF0YSwgcmF0aGVyIHRoYW4gdGhlIGltYWdlIGRpY3Rpb25hcnkuIik7bT1hLndpZHRoO3A9YS5oZWlnaHR9ZWxzZXtjb25zdCBlPSJudW1iZXIiPT10eXBlb2YgbSYmbT4wLHQ9Im51bWJlciI9PXR5cGVvZiBwJiZwPjA7aWYoIWV8fCF0KXtpZighYS5mYWxsYmFja0RpbXMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGltYWdlIHdpZHRoOiAke219IG9yIGhlaWdodDogJHtwfWApO3dhcm4oIlBERkltYWdlIC0gdXNpbmcgdGhlIFdpZHRoL0hlaWdodCBvZiB0aGUgcGFyZW50IGltYWdlLCBmb3IgU01hc2svTWFzayBkYXRhLiIpO2V8fChtPWEuZmFsbGJhY2tEaW1zLndpZHRoKTt0fHwocD1hLmZhbGxiYWNrRGltcy5oZWlnaHQpfX10aGlzLndpZHRoPW07dGhpcy5oZWlnaHQ9cDt0aGlzLmludGVycG9sYXRlPWMuZ2V0KCJJIiwiSW50ZXJwb2xhdGUiKTt0aGlzLmltYWdlTWFzaz1jLmdldCgiSU0iLCJJbWFnZU1hc2siKXx8ITE7dGhpcy5tYXR0ZT1jLmdldCgiTWF0dGUiKXx8ITE7bGV0IGQ9YS5iaXRzUGVyQ29tcG9uZW50O2lmKCFkKXtkPWMuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iik7aWYoIWQpe2lmKCF0aGlzLmltYWdlTWFzayl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEJpdHMgcGVyIGNvbXBvbmVudCBtaXNzaW5nIGluIGltYWdlOiAke3RoaXMuaW1hZ2VNYXNrfWApO2Q9MX19dGhpcy5icGM9ZDtpZih0aGlzLmltYWdlTWFzayl0aGlzLm51bUNvbXBzPTE7ZWxzZXtsZXQgcz1jLmdldFJhdygiQ1MiKXx8Yy5nZXRSYXcoIkNvbG9yU3BhY2UiKTtjb25zdCByPSEhcztpZih0aGlzLmpweERlY29kZXJPcHRpb25zPy5zbWFza0luRGF0YSYmMj09PWMuZ2V0KCJTTWFza0luRGF0YSIpKXt0aGlzLmpweFByZW11bHRpcGxpZWQ9ITA7aWYodGhpcy5tYXR0ZSl7Y29uc3QgYT1Db2xvclNwYWNlVXRpbHMucGFyc2Uoe2NzOnI/czpOYW1lLmdldCgiRGV2aWNlUkdCIikseHJlZjplLHJlc291cmNlczpuP3Q6bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6byxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6bCxsb2NhbENvbG9yU3BhY2VDYWNoZTpmfSk7dGhpcy5wcmVibGVuZE1hdHRlPWEuZ2V0UmdiKHRoaXMubWF0dGUsMCl9fWlmKHIpdGhpcy5qcHhEZWNvZGVyT3B0aW9ucz8uc21hc2tJbkRhdGEmJihzPU5hbWUuZ2V0KCJEZXZpY2VSR0JBIikpO2Vsc2UgaWYodGhpcy5qcHhEZWNvZGVyT3B0aW9ucylzPU5hbWUuZ2V0KCJEZXZpY2VSR0JBIik7ZWxzZSBzd2l0Y2goYS5udW1Db21wcyl7Y2FzZSAxOnM9TmFtZS5nZXQoIkRldmljZUdyYXkiKTticmVhaztjYXNlIDM6cz1OYW1lLmdldCgiRGV2aWNlUkdCIik7YnJlYWs7Y2FzZSA0OnM9TmFtZS5nZXQoIkRldmljZUNNWUsiKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgSW1hZ2VzIHdpdGggJHthLm51bUNvbXBzfSBjb2xvciBjb21wb25lbnRzIG5vdCBzdXBwb3J0ZWQuYCl9dGhpcy5jb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5wYXJzZSh7Y3M6cyx4cmVmOmUscmVzb3VyY2VzOm4/dDpudWxsLHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpsLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmZ9KTt0aGlzLm51bUNvbXBzPXRoaXMuY29sb3JTcGFjZS5udW1Db21wcztpZih0aGlzLmpweERlY29kZXJPcHRpb25zKXt0aGlzLmpweERlY29kZXJPcHRpb25zLm51bUNvbXBvbmVudHM9cj90aGlzLm51bUNvbXBzOjA7dGhpcy5qcHhEZWNvZGVyT3B0aW9ucy5pc0luZGV4ZWRDb2xvcm1hcD0iSW5kZXhlZCI9PT10aGlzLmNvbG9yU3BhY2UubmFtZX19dGhpcy5kZWNvZGU9Yy5nZXRBcnJheSgiRCIsIkRlY29kZSIpO3RoaXMubmVlZHNEZWNvZGU9ITE7aWYodGhpcy5kZWNvZGUmJih0aGlzLmNvbG9yU3BhY2UmJiF0aGlzLmNvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKHRoaXMuZGVjb2RlLGQpfHxpJiYhQ29sb3JTcGFjZS5pc0RlZmF1bHREZWNvZGUodGhpcy5kZWNvZGUsMSkpKXt0aGlzLm5lZWRzRGVjb2RlPSEwO2NvbnN0IGU9KDE8PGQpLTE7dGhpcy5kZWNvZGVDb2VmZmljaWVudHM9W107dGhpcy5kZWNvZGVBZGRlbmRzPVtdO2NvbnN0IHQ9IkluZGV4ZWQiPT09dGhpcy5jb2xvclNwYWNlPy5uYW1lO2ZvcihsZXQgYT0wLG49MDthPHRoaXMuZGVjb2RlLmxlbmd0aDthKz0yLCsrbil7Y29uc3Qgcz10aGlzLmRlY29kZVthXSxyPXRoaXMuZGVjb2RlW2ErMV07dGhpcy5kZWNvZGVDb2VmZmljaWVudHNbbl09dD8oci1zKS9lOnItczt0aGlzLmRlY29kZUFkZGVuZHNbbl09dD9zOmUqc319aWYocyl7cy5mYWxsYmFja0RpbXM/Pz17d2lkdGg6bSxoZWlnaHQ6cH07dGhpcy5zbWFzaz1uZXcgUERGSW1hZ2Uoe3hyZWY6ZSxyZXM6dCxpbWFnZTpzLGlzSW5saW5lOm4scGRmRnVuY3Rpb25GYWN0b3J5Om8sZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOmwsbG9jYWxDb2xvclNwYWNlQ2FjaGU6Zn0pfWVsc2UgaWYocilpZihyIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7aWYoci5kaWN0LmdldCgiSU0iLCJJbWFnZU1hc2siKSl7ci5mYWxsYmFja0RpbXM/Pz17d2lkdGg6bSxoZWlnaHQ6cH07dGhpcy5tYXNrPW5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOnIsaXNJbmxpbmU6bixpc01hc2s6ITAscGRmRnVuY3Rpb25GYWN0b3J5Om8sZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOmwsbG9jYWxDb2xvclNwYWNlQ2FjaGU6Zn0pfWVsc2Ugd2FybigiSWdub3JpbmcgL01hc2sgaW4gaW1hZ2Ugd2l0aG91dCAvSW1hZ2VNYXNrLiIpfWVsc2UgdGhpcy5tYXNrPXJ9c3RhdGljIGFzeW5jIGJ1aWxkSW1hZ2Uoe3hyZWY6ZSxyZXM6dCxpbWFnZTphLGlzSW5saW5lOm49ITEscGRmRnVuY3Rpb25GYWN0b3J5OnMsZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnIsbG9jYWxDb2xvclNwYWNlQ2FjaGU6aX0pe2NvbnN0IG89YTtsZXQgbD1udWxsLGY9bnVsbDtjb25zdCBjPWEuZGljdC5nZXQoIlNNYXNrIiksaD1hLmRpY3QuZ2V0KCJNYXNrIik7Yz9jIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9sPWM6d2FybigiVW5zdXBwb3J0ZWQgL1NNYXNrIGZvcm1hdC4iKTpoJiYoaCBpbnN0YW5jZW9mIEJhc2VTdHJlYW18fEFycmF5LmlzQXJyYXkoaCk/Zj1oOndhcm4oIlVuc3VwcG9ydGVkIC9NYXNrIGZvcm1hdC4iKSk7cmV0dXJuIG5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOm8saXNJbmxpbmU6bixzbWFzazpsLG1hc2s6ZixwZGZGdW5jdGlvbkZhY3Rvcnk6cyxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6cixsb2NhbENvbG9yU3BhY2VDYWNoZTppfSl9c3RhdGljIGFzeW5jIGNyZWF0ZU1hc2soe2ltYWdlOmUsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6dD0hMX0pe2NvbnN0e2RpY3Q6YX09ZSxuPWEuZ2V0KCJXIiwiV2lkdGgiKSxzPWEuZ2V0KCJIIiwiSGVpZ2h0Iikscj1hLmdldCgiSSIsIkludGVycG9sYXRlIiksaT1hLmdldEFycmF5KCJEIiwiRGVjb2RlIiksbz1pPy5bMF0+MCxsPShuKzc+PjMpKnMsZj1hd2FpdCBlLmdldEltYWdlRGF0YShsKSxjPTE9PT1uJiYxPT09cyYmbz09PSgwPT09Zi5sZW5ndGh8fCEhKDEyOCZmWzBdKSk7aWYoYylyZXR1cm57aXNTaW5nbGVPcGFxdWVQaXhlbDpjfTtpZih0KXtpZihJbWFnZVJlc2l6ZXIubmVlZHNUb0JlUmVzaXplZChuLHMpKXtjb25zdCBlPW5ldyBVaW50OENsYW1wZWRBcnJheShuKnMqNCk7Y29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoe3NyYzpmLGRlc3Q6ZSx3aWR0aDpuLGhlaWdodDpzLG5vbkJsYWNrQ29sb3I6MCxpbnZlcnNlRGVjb2RlOm99KTtyZXR1cm4gSW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHtraW5kOlQsZGF0YTplLHdpZHRoOm4saGVpZ2h0OnMsaW50ZXJwb2xhdGU6cn0pfWNvbnN0IGU9bmV3IE9mZnNjcmVlbkNhbnZhcyhuLHMpLHQ9ZS5nZXRDb250ZXh0KCIyZCIpLGE9dC5jcmVhdGVJbWFnZURhdGEobixzKTtjb252ZXJ0QmxhY2tBbmRXaGl0ZVRvUkdCQSh7c3JjOmYsZGVzdDphLmRhdGEsd2lkdGg6bixoZWlnaHQ6cyxub25CbGFja0NvbG9yOjAsaW52ZXJzZURlY29kZTpvfSk7dC5wdXRJbWFnZURhdGEoYSwwLDApO3JldHVybntkYXRhOm51bGwsd2lkdGg6bixoZWlnaHQ6cyxpbnRlcnBvbGF0ZTpyLGJpdG1hcDplLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpfX1jb25zdCBoPWYuYnl0ZUxlbmd0aDtsZXQgdTtpZihlIGluc3RhbmNlb2YgRGVjb2RlU3RyZWFtJiYoIW98fGw9PT1oKSl1PWY7ZWxzZSBpZihvKXt1PW5ldyBVaW50OEFycmF5KGwpO3Uuc2V0KGYpO3UuZmlsbCgyNTUsaCl9ZWxzZSB1PW5ldyBVaW50OEFycmF5KGYpO2lmKG8pZm9yKGxldCBlPTA7ZTxoO2UrKyl1W2VdXj0yNTU7cmV0dXJue2RhdGE6dSx3aWR0aDpuLGhlaWdodDpzLGludGVycG9sYXRlOnJ9fWdldCBkcmF3V2lkdGgoKXtyZXR1cm4gTWF0aC5tYXgodGhpcy53aWR0aCx0aGlzLnNtYXNrPy53aWR0aHx8MCx0aGlzLm1hc2s/LndpZHRofHwwKX1nZXQgZHJhd0hlaWdodCgpe3JldHVybiBNYXRoLm1heCh0aGlzLmhlaWdodCx0aGlzLnNtYXNrPy5oZWlnaHR8fDAsdGhpcy5tYXNrPy5oZWlnaHR8fDApfWRlY29kZUJ1ZmZlcihlKXtjb25zdCB0PXRoaXMuYnBjLGE9dGhpcy5udW1Db21wcyxuPXRoaXMuZGVjb2RlQWRkZW5kcyxzPXRoaXMuZGVjb2RlQ29lZmZpY2llbnRzLHI9KDE8PHQpLTE7bGV0IGksbztpZigxPT09dCl7Zm9yKGk9MCxvPWUubGVuZ3RoO2k8bztpKyspZVtpXT0rIWVbaV07cmV0dXJufWxldCBsPTA7Zm9yKGk9MCxvPXRoaXMud2lkdGgqdGhpcy5oZWlnaHQ7aTxvO2krKylmb3IobGV0IHQ9MDt0PGE7dCsrKXtlW2xdPU1hdGhDbGFtcChuW3RdK2VbbF0qc1t0XSwwLHIpO2wrK319Z2V0Q29tcG9uZW50cyhlKXtjb25zdCB0PXRoaXMuYnBjO2lmKDg9PT10KXJldHVybiBlO2NvbnN0IGE9dGhpcy53aWR0aCxuPXRoaXMuaGVpZ2h0LHM9dGhpcy5udW1Db21wcyxyPWEqbipzO2xldCBpLG89MDtpPXQ8PTg/bmV3IFVpbnQ4QXJyYXkocik6dDw9MTY/bmV3IFVpbnQxNkFycmF5KHIpOm5ldyBVaW50MzJBcnJheShyKTtjb25zdCBsPWEqcyxmPSgxPDx0KS0xO2xldCBjLGg9MDtpZigxPT09dCl7bGV0IHQsYSxzO2ZvcihsZXQgcj0wO3I8bjtyKyspe2E9aCsoLTgmbCk7cz1oK2w7Zm9yKDtoPGE7KXtjPWVbbysrXTtpW2hdPWM+PjcmMTtpW2grMV09Yz4+NiYxO2lbaCsyXT1jPj41JjE7aVtoKzNdPWM+PjQmMTtpW2grNF09Yz4+MyYxO2lbaCs1XT1jPj4yJjE7aVtoKzZdPWM+PjEmMTtpW2grN109MSZjO2grPTh9aWYoaDxzKXtjPWVbbysrXTt0PTEyODtmb3IoO2g8czspe2lbaCsrXT0rISEoYyZ0KTt0Pj49MX19fX1lbHNle2xldCBhPTA7Yz0wO2ZvcihoPTA7aDxyOysraCl7aWYoaCVsPT09MCl7Yz0wO2E9MH1mb3IoO2E8dDspe2M9Yzw8OHxlW28rK107YSs9OH1jb25zdCBuPWEtdDtpW2hdPU1hdGhDbGFtcChjPj5uLDAsZik7YyY9KDE8PG4pLTE7YT1ufX1yZXR1cm4gaX1hc3luYyBmaWxsT3BhY2l0eShlLHQsYSxuLHMpe2xldCByO2lmKHRoaXMuc21hc2spcj0oZSxuKT0+dGhpcy5zbWFzay5maWxsR3JheUJ1ZmZlcihlLHsuLi5uLGRlc3RXaWR0aDp0LGRlc3RIZWlnaHQ6YX0pO2Vsc2UgaWYodGhpcy5tYXNrKWlmKHRoaXMubWFzayBpbnN0YW5jZW9mIFBERkltYWdlKXI9KGUsbik9PnRoaXMubWFzay5maWxsR3JheUJ1ZmZlcihlLHsuLi5uLGludmVydE91dHB1dDohMCxkZXN0V2lkdGg6dCxkZXN0SGVpZ2h0OmF9KTtlbHNle2lmKCFBcnJheS5pc0FycmF5KHRoaXMubWFzaykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIG1hc2sgZm9ybWF0LiIpO3I9KGUse21heFJvd3M6YSxvZmZzZXQ6bixzdHJpZGU6cn0pPT57Zm9yKGxldCBpPTAsbz10KmE7aTxvOysraSl7bGV0IHQ9MDtjb25zdCBhPWkqdGhpcy5udW1Db21wcztmb3IobGV0IGU9MDtlPHRoaXMubnVtQ29tcHM7KytlKXtjb25zdCBuPXNbYStlXSxyPTIqZTtpZihuPHRoaXMubWFza1tyXXx8bj50aGlzLm1hc2tbcisxXSl7dD0yNTU7YnJlYWt9fWVbaSpyK25dPXR9fX1lbHNlIHI9KGUse21heFJvd3M6YSxvZmZzZXQ6bixzdHJpZGU6c30pPT57Zm9yKGxldCByPTAsaT10KmE7cjxpOysrcillW3IqcytuXT0yNTV9O2F3YWl0IHIoZSx7bWF4Um93czpuLG9mZnNldDozLHN0cmlkZTo0fSl9c3RhdGljI2F0KGUsdCxhLG4scyl7Zm9yKGxldCByPTA7cjx0O3IrPTQpe2NvbnN0IHQ9ZVtyKzNdO2lmKDA9PT10KXtlW3JdPTI1NTtlW3IrMV09MjU1O2VbcisyXT0yNTU7Y29udGludWV9Y29uc3QgaT0yNTUvdDtlW3JdPShlW3JdLWEpKmkrYTtlW3IrMV09KGVbcisxXS1uKSppK247ZVtyKzJdPShlW3IrMl0tcykqaStzfX11bmRvUHJlYmxlbmQoZSx0LGEpe2NvbnN0IG49dGhpcy5zbWFzaz8ubWF0dGU7aWYoIW4pcmV0dXJuO2NvbnN0IHM9dGhpcy5jb2xvclNwYWNlLmdldFJnYihuLDApO1BERkltYWdlLiNhdChlLHQqYSo0LHNbMF0sc1sxXSxzWzJdKX1hc3luYyBjcmVhdGVJbWFnZURhdGEoZT0hMSx0PSExKXtjb25zdCBhPXRoaXMuZHJhd1dpZHRoLG49dGhpcy5kcmF3SGVpZ2h0LHM9e3dpZHRoOmEsaGVpZ2h0Om4saW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZSxraW5kOjAsZGF0YTpudWxsfSxyPXRoaXMubnVtQ29tcHMsaT10aGlzLndpZHRoLG89dGhpcy5oZWlnaHQsbD10aGlzLmJwYyxmPWkqcipsKzc+PjMsYz10JiZJbWFnZVJlc2l6ZXIubmVlZHNUb0JlUmVzaXplZChhLG4pO2lmKCF0aGlzLnNtYXNrJiYhdGhpcy5tYXNrJiYiRGV2aWNlUkdCQSI9PT10aGlzLmNvbG9yU3BhY2UubmFtZSl7cy5raW5kPVQ7Y29uc3QgZT1zLmRhdGE9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKG8qaSo0LHtpbnRlcm5hbDp0JiZjfSk7aWYodGhpcy5qcHhQcmVtdWx0aXBsaWVkKXtjb25zdCB0PXRoaXMucHJlYmxlbmRNYXR0ZTtQREZJbWFnZS4jYXQoZSxlLmxlbmd0aCx0Py5bMF0/PzAsdD8uWzFdPz8wLHQ/LlsyXT8/MCl9cmV0dXJuIHQ/Yz9JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2UocywhMSk6dGhpcy5jcmVhdGVCaXRtYXAoVCxhLG4sZSk6c31pZighZSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2spe2xldCBlOyJEZXZpY2VHcmF5Ij09PXRoaXMuY29sb3JTcGFjZS5uYW1lJiYxPT09bD9lPUM6IkRldmljZVJHQiIhPT10aGlzLmNvbG9yU3BhY2UubmFtZXx8OCE9PWx8fHRoaXMubmVlZHNEZWNvZGV8fChlPUYpO2lmKGUmJmE9PT1pJiZuPT09byl7Y29uc3Qgcj1hd2FpdCB0aGlzLiNudChpLG8pO2lmKHIpcmV0dXJuIHI7Y29uc3QgbD1hd2FpdCB0aGlzLmdldEltYWdlQnl0ZXMobypmLHtpbnRlcm5hbDp0JiZjfSk7aWYodClyZXR1cm4gYz9JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2Uoe2RhdGE6bCxraW5kOmUsd2lkdGg6YSxoZWlnaHQ6bixpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlfSx0aGlzLm5lZWRzRGVjb2RlKTp0aGlzLmNyZWF0ZUJpdG1hcChlLGksbyxsKTtzLmtpbmQ9ZTtzLmRhdGE9bDtpZih0aGlzLm5lZWRzRGVjb2RlKXthc3NlcnQoZT09PUMsIlBERkltYWdlLmNyZWF0ZUltYWdlRGF0YTogVGhlIGltYWdlIG11c3QgYmUgZ3JheXNjYWxlLiIpO2NvbnN0IHQ9cy5kYXRhO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhO2UrKyl0W2VdXj0yNTV9cmV0dXJuIHN9aWYodGhpcy5pbWFnZSBpbnN0YW5jZW9mIEpwZWdTdHJlYW0mJiF0aGlzLm5lZWRzRGVjb2RlKXtsZXQgZT0hMTtzd2l0Y2godGhpcy5jb2xvclNwYWNlLm5hbWUpe2Nhc2UiRGV2aWNlR3JheSI6Y2FzZSJEZXZpY2VSR0IiOmNhc2UiRGV2aWNlQ01ZSyI6ZT0hMH1pZihlKXtpZih0KXtjb25zdCBlPWF3YWl0IHRoaXMuI250KGEsbik7aWYoZSlyZXR1cm4gZX1sZXQgZT1vKmY7aWYodCYmIWMpe3N3aXRjaCh0aGlzLmNvbG9yU3BhY2UubmFtZSl7Y2FzZSJEZXZpY2VHcmF5IjplKj00O2JyZWFrO2Nhc2UiRGV2aWNlUkdCIjplPWUvMyo0fWNvbnN0IHQ9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKGUse2RyYXdXaWR0aDphLGRyYXdIZWlnaHQ6bixmb3JjZVJHQkE6ITAsaW50ZXJuYWw6ITB9KTtyZXR1cm4gdGhpcy5jcmVhdGVCaXRtYXAoVCxhLG4sdCl9IkRldmljZUdyYXkiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUmJihlKj0zKTtzLmtpbmQ9RjtzLmRhdGE9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKGUse2RyYXdXaWR0aDphLGRyYXdIZWlnaHQ6bixmb3JjZVJHQjohMCxpbnRlcm5hbDpjfSk7cmV0dXJuIGM/SW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHMpOnN9fX1jb25zdCBoPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmYse2ludGVybmFsOiEwfSksdT0wfGgubGVuZ3RoL2Yqbi9vLG09dGhpcy5nZXRDb21wb25lbnRzKGgpO2xldCBwLGQsZyxiLHcsajtpZih0JiYhYyl7Zz1uZXcgT2Zmc2NyZWVuQ2FudmFzKGEsbik7Yj1nLmdldENvbnRleHQoIjJkIik7dz1iLmNyZWF0ZUltYWdlRGF0YShhLG4pO2o9dy5kYXRhfXMua2luZD1UO2lmKGV8fHRoaXMuc21hc2t8fHRoaXMubWFzayl7dCYmIWN8fChqPW5ldyBVaW50OENsYW1wZWRBcnJheShhKm4qNCkpO3A9MTtkPSEwO2F3YWl0IHRoaXMuZmlsbE9wYWNpdHkoaixhLG4sdSxtKX1lbHNle2lmKCF0fHxjKXtzLmtpbmQ9RjtqPW5ldyBVaW50OENsYW1wZWRBcnJheShhKm4qMyk7cD0wfWVsc2V7bmV3IFVpbnQzMkFycmF5KGouYnVmZmVyKS5maWxsKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuPzQyNzgxOTAwODA6MjU1KTtwPTF9ZD0hMX10aGlzLm5lZWRzRGVjb2RlJiZ0aGlzLmRlY29kZUJ1ZmZlcihtKTt0aGlzLmNvbG9yU3BhY2UuZmlsbFJnYihqLGksbyxhLG4sdSxsLG0scCk7ZCYmdGhpcy51bmRvUHJlYmxlbmQoaixhLHUpO2lmKHQmJiFjKXtiLnB1dEltYWdlRGF0YSh3LDAsMCk7cmV0dXJue2RhdGE6bnVsbCx3aWR0aDphLGhlaWdodDpuLGJpdG1hcDpnLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGV9fXMuZGF0YT1qO3JldHVybiBjP0ltYWdlUmVzaXplci5jcmVhdGVJbWFnZShzKTpzfWFzeW5jIGZpbGxHcmF5QnVmZmVyKGUse2Rlc3RXaWR0aDp0LGRlc3RIZWlnaHQ6YSxpbnZlcnRPdXRwdXQ6bixtYXhSb3dzOnMsb2Zmc2V0OnI9MCxzdHJpZGU6aT0xfT17fSl7Y29uc3Qgbz10aGlzLm51bUNvbXBzO2lmKDEhPT1vKXRocm93IG5ldyBGb3JtYXRFcnJvcihgUmVhZGluZyBncmF5IHNjYWxlIGZyb20gYSBjb2xvciBpbWFnZTogJHtvfWApO2NvbnN0IGw9dGhpcy53aWR0aCxmPXRoaXMuaGVpZ2h0LGM9dGhpcy5icGMsaD1sKm8qYys3Pj4zLHU9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKGYqaCx7aW50ZXJuYWw6ITB9KSxtPXRoaXMuZ2V0Q29tcG9uZW50cyh1KSxwPXQ/P2wsZD1hPz9mLGc9cCE9PWx8fGQhPT1mLGI9dm9pZCAwPT09cz9kOk1hdGgubWluKGQscyk7bGV0IHc9bCxqPTAsaz1udWxsO2lmKGcpe3c9cDtqPWYvZDtjb25zdCBlPWwvcDtrPW5ldyBVaW50MzJBcnJheShwKTtmb3IobGV0IHQ9MDt0PHA7dCsrKWtbdF09TWF0aC5mbG9vcih0KmUpfWNvbnN0IHk9bj8yNTU6MDtpZigxPT09Yyl7aWYoayl7Y29uc3QgdD1rO2xldCBhPXI7aWYodGhpcy5uZWVkc0RlY29kZSlmb3IobGV0IG49MDtuPGI7bisrKXtjb25zdCBzPU1hdGguZmxvb3IobipqKSpsO2ZvcihsZXQgbj0wO248dztuKyspe2VbYV09bVtzK3Rbbl1dLTEmMjU1Xnk7YSs9aX19ZWxzZSBmb3IobGV0IG49MDtuPGI7bisrKXtjb25zdCBzPU1hdGguZmxvb3IobipqKSpsO2ZvcihsZXQgbj0wO248dztuKyspe2VbYV09MjU1Ji1tW3MrdFtuXV1eeTthKz1pfX19ZWxzZXtjb25zdCB0PXcqYjtpZih0aGlzLm5lZWRzRGVjb2RlKWZvcihsZXQgYT0wO2E8dDsrK2EpZVthKmkrcl09bVthXS0xJjI1NV55O2Vsc2UgZm9yKGxldCBhPTA7YTx0OysrYSllW2EqaStyXT0yNTUmLW1bYV1eeX1yZXR1cm59dGhpcy5uZWVkc0RlY29kZSYmdGhpcy5kZWNvZGVCdWZmZXIobSk7Y29uc3QgcT0yNTUvKCgxPDxjKS0xKTtpZihrKXtjb25zdCB0PWs7bGV0IGE9cjtmb3IobGV0IG49MDtuPGI7bisrKXtjb25zdCBzPU1hdGguZmxvb3IobipqKSpsO2ZvcihsZXQgbj0wO248dztuKyspe2VbYV09cSptW3MrdFtuXV1eeTthKz1pfX19ZWxzZXtjb25zdCB0PXcqYjtmb3IobGV0IGE9MDthPHQ7KythKWVbYSppK3JdPXEqbVthXV55fX1jcmVhdGVCaXRtYXAoZSx0LGEsbil7Y29uc3Qgcz1uZXcgT2Zmc2NyZWVuQ2FudmFzKHQsYSkscj1zLmdldENvbnRleHQoIjJkIik7bGV0IGk7aWYoZT09PVQpaT1uZXcgSW1hZ2VEYXRhKG4sdCxhKTtlbHNle2k9ci5jcmVhdGVJbWFnZURhdGEodCxhKTtjb252ZXJ0VG9SR0JBKHtraW5kOmUsc3JjOm4sZGVzdDpuZXcgVWludDMyQXJyYXkoaS5kYXRhLmJ1ZmZlciksd2lkdGg6dCxoZWlnaHQ6YSxpbnZlcnNlRGVjb2RlOnRoaXMubmVlZHNEZWNvZGV9KX1yLnB1dEltYWdlRGF0YShpLDAsMCk7cmV0dXJue2RhdGE6bnVsbCx3aWR0aDp0LGhlaWdodDphLGJpdG1hcDpzLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGV9fWFzeW5jI250KGUsdCl7Y29uc3QgYT1hd2FpdCB0aGlzLmltYWdlLmdldFRyYW5zZmVyYWJsZUltYWdlKGUsdCk7cmV0dXJuIGE/e2RhdGE6bnVsbCx3aWR0aDphLmRpc3BsYXlXaWR0aD8/ZSxoZWlnaHQ6YS5kaXNwbGF5SGVpZ2h0Pz90LGJpdG1hcDphLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGV9Om51bGx9YXN5bmMgZ2V0SW1hZ2VCeXRlcyhlLHtkcmF3V2lkdGg6dCxkcmF3SGVpZ2h0OmEsZm9yY2VSR0JBOm49ITEsZm9yY2VSR0I6cz0hMSxpbnRlcm5hbDpyPSExfSl7dGhpcy5pbWFnZS5yZXNldCgpO3RoaXMuaW1hZ2UuZHJhd1dpZHRoPXR8fHRoaXMud2lkdGg7dGhpcy5pbWFnZS5kcmF3SGVpZ2h0PWF8fHRoaXMuaGVpZ2h0O3RoaXMuaW1hZ2UuZm9yY2VSR0JBPSEhbjt0aGlzLmltYWdlLmZvcmNlUkdCPSEhcztjb25zdCBpPWF3YWl0IHRoaXMuaW1hZ2UuZ2V0SW1hZ2VEYXRhKGUsdGhpcy5qcHhEZWNvZGVyT3B0aW9ucyk7aWYocnx8dGhpcy5pbWFnZSBpbnN0YW5jZW9mIERlY29kZVN0cmVhbSlyZXR1cm4gaTthc3NlcnQoaSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXksJ1BERkltYWdlLmdldEltYWdlQnl0ZXM6IFVuc3VwcG9ydGVkICJpbWFnZUJ5dGVzIiB0eXBlLicpO3JldHVybiBuZXcgVWludDhBcnJheShpKX19Y29uc3QgUGk9T2JqZWN0LmZyZWV6ZSh7bWF4SW1hZ2VTaXplOi0xLGRpc2FibGVGb250RmFjZTohMSxpZ25vcmVFcnJvcnM6ITEsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6ITEsaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQ6ITEsY2FudmFzTWF4QXJlYUluQnl0ZXM6LTEsZm9udEV4dHJhUHJvcGVydGllczohMSx1c2VTeXN0ZW1Gb250czohMCx1c2VXYXNtOiEwLHVzZVdvcmtlckZldGNoOiEwLGNNYXBVcmw6bnVsbCxjTWFwUGFja2VkOiEwLGljY1VybDpudWxsLHN0YW5kYXJkRm9udERhdGFVcmw6bnVsbCx3YXNtVXJsOm51bGwsaGFzR1BVOiExfSksRWk9MSxfaT0yLHppPVByb21pc2UucmVzb2x2ZSgpLGFyZ0lzRGljdD1lPT5lIGluc3RhbmNlb2YgRGljdDtmdW5jdGlvbiBub3JtYWxpemVCbGVuZE1vZGUoZSx0PSExKXtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPW5vcm1hbGl6ZUJsZW5kTW9kZSh0LCEwKTtpZihlKXJldHVybiBlfXdhcm4oYFVuc3VwcG9ydGVkIGJsZW5kIG1vZGUgQXJyYXk6ICR7ZX1gKTtyZXR1cm4ic291cmNlLW92ZXIifWlmKGUgaW5zdGFuY2VvZiBOYW1lKXtzd2l0Y2goZS5uYW1lKXtjYXNlIk5vcm1hbCI6Y2FzZSJDb21wYXRpYmxlIjpyZXR1cm4ic291cmNlLW92ZXIiO2Nhc2UiTXVsdGlwbHkiOnJldHVybiJtdWx0aXBseSI7Y2FzZSJTY3JlZW4iOnJldHVybiJzY3JlZW4iO2Nhc2UiT3ZlcmxheSI6cmV0dXJuIm92ZXJsYXkiO2Nhc2UiRGFya2VuIjpyZXR1cm4iZGFya2VuIjtjYXNlIkxpZ2h0ZW4iOnJldHVybiJsaWdodGVuIjtjYXNlIkNvbG9yRG9kZ2UiOnJldHVybiJjb2xvci1kb2RnZSI7Y2FzZSJDb2xvckJ1cm4iOnJldHVybiJjb2xvci1idXJuIjtjYXNlIkhhcmRMaWdodCI6cmV0dXJuImhhcmQtbGlnaHQiO2Nhc2UiU29mdExpZ2h0IjpyZXR1cm4ic29mdC1saWdodCI7Y2FzZSJEaWZmZXJlbmNlIjpyZXR1cm4iZGlmZmVyZW5jZSI7Y2FzZSJFeGNsdXNpb24iOnJldHVybiJleGNsdXNpb24iO2Nhc2UiSHVlIjpyZXR1cm4iaHVlIjtjYXNlIlNhdHVyYXRpb24iOnJldHVybiJzYXR1cmF0aW9uIjtjYXNlIkNvbG9yIjpyZXR1cm4iY29sb3IiO2Nhc2UiTHVtaW5vc2l0eSI6cmV0dXJuImx1bWlub3NpdHkifXdhcm4oYFVuc3VwcG9ydGVkIGJsZW5kIG1vZGU6ICR7ZS5uYW1lfWApfXJldHVybiB0P251bGw6InNvdXJjZS1vdmVyIn1mdW5jdGlvbiBhZGRDYWNoZWRJbWFnZU9wcyhlLHtvYmpJZDp0LGZuOmEsYXJnczpuLG9wdGlvbmFsQ29udGVudDpzLGhhc01hc2s6cn0pe3QmJmUuYWRkRGVwZW5kZW5jeSh0KTtlLmFkZEltYWdlT3BzKGEsbixzLHIpO2E9PT1OdCYmblswXT8uY291bnQ+MCYmblswXS5jb3VudCsrfWNsYXNzIFRpbWVTbG90TWFuYWdlcntzdGF0aWMgVElNRV9TTE9UX0RVUkFUSU9OX01TPTIwO3N0YXRpYyBDSEVDS19USU1FX0VWRVJZPTEwMDtjb25zdHJ1Y3Rvcigpe3RoaXMucmVzZXQoKX1jaGVjaygpe2lmKCsrdGhpcy5jaGVja2VkPFRpbWVTbG90TWFuYWdlci5DSEVDS19USU1FX0VWRVJZKXJldHVybiExO3RoaXMuY2hlY2tlZD0wO3JldHVybiB0aGlzLmVuZFRpbWU8PURhdGUubm93KCl9cmVzZXQoKXt0aGlzLmVuZFRpbWU9RGF0ZS5ub3coKStUaW1lU2xvdE1hbmFnZXIuVElNRV9TTE9UX0RVUkFUSU9OX01TO3RoaXMuY2hlY2tlZD0wfX1jbGFzcyBQYXJ0aWFsRXZhbHVhdG9ye2NvbnN0cnVjdG9yKHt4cmVmOmUsaGFuZGxlcjp0LHBhZ2VJbmRleDphLHBhZ2VQcm94eUlkOm49bnVsbCxpZEZhY3Rvcnk6cyxmb250Q2FjaGU6cixidWlsdEluQ01hcENhY2hlOmksc3RhbmRhcmRGb250RGF0YUNhY2hlOm8sZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOmwsZ2xvYmFsSW1hZ2VDYWNoZTpmLHN5c3RlbUZvbnRDYWNoZTpjLG9wdGlvbnM6aD1udWxsfSl7dGhpcy54cmVmPWU7dGhpcy5oYW5kbGVyPXQ7dGhpcy5wYWdlSW5kZXg9YTt0aGlzLnBhZ2VQcm94eUlkPW47dGhpcy5pZEZhY3Rvcnk9czt0aGlzLmZvbnRDYWNoZT1yO3RoaXMuYnVpbHRJbkNNYXBDYWNoZT1pO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlPW87dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGU9bDt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9Zjt0aGlzLnN5c3RlbUZvbnRDYWNoZT1jO3RoaXMub3B0aW9ucz1ofHxQaTt0aGlzLnR5cGUzRm9udFJlZnM9bnVsbDt0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGU9bmV3IFJlZ2lvbmFsSW1hZ2VDYWNoZTt0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQ9dGhpcy5mZXRjaEJ1aWx0SW5DTWFwLmJpbmQodGhpcyl9Z2V0IF9wZGZGdW5jdGlvbkZhY3RvcnkoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9wZGZGdW5jdGlvbkZhY3RvcnkiLG5ldyBQREZGdW5jdGlvbkZhY3Rvcnkoe3hyZWY6dGhpcy54cmVmfSkpfWdldCBwYXJzaW5nVHlwZTNGb250KCl7cmV0dXJuISF0aGlzLnR5cGUzRm9udFJlZnN9Y2xvbmUoZT1udWxsKXtjb25zdCB0PU9iamVjdC5jcmVhdGUodGhpcyk7dC5vcHRpb25zPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLm9wdGlvbnMsZSk7cmV0dXJuIHR9aGFzQmxlbmRNb2RlcyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiExO2lmKGUub2JqSWQmJnQuaGFzKGUub2JqSWQpKXJldHVybiExO2NvbnN0IGE9bmV3IFJlZlNldCh0KTtlLm9iaklkJiZhLnB1dChlLm9iaklkKTtjb25zdCBuPVtlXSxzPXRoaXMueHJlZjtmb3IoO24ubGVuZ3RoOyl7Y29uc3QgZT1uLnNoaWZ0KCksdD1lLmdldCgiRXh0R1N0YXRlIik7aWYodCBpbnN0YW5jZW9mIERpY3QpZm9yKGxldCBlIG9mIHQuZ2V0UmF3VmFsdWVzKCkpe2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKGEuaGFzKGUpKWNvbnRpbnVlO3RyeXtlPXMuZmV0Y2goZSl9Y2F0Y2godCl7YS5wdXQoZSk7aW5mbyhgaGFzQmxlbmRNb2RlcyAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7dH0iLmApO2NvbnRpbnVlfX1pZighKGUgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtlLm9iaklkJiZhLnB1dChlLm9iaklkKTtjb25zdCB0PWUuZ2V0KCJCTSIpO2lmKHQgaW5zdGFuY2VvZiBOYW1lKXtpZigiTm9ybWFsIiE9PXQubmFtZSlyZXR1cm4hMH1lbHNlIGlmKHZvaWQgMCE9PXQmJkFycmF5LmlzQXJyYXkodCkpZm9yKGNvbnN0IGUgb2YgdClpZihlIGluc3RhbmNlb2YgTmFtZSYmIk5vcm1hbCIhPT1lLm5hbWUpcmV0dXJuITB9Y29uc3Qgcj1lLmdldCgiWE9iamVjdCIpO2lmKHIgaW5zdGFuY2VvZiBEaWN0KWZvcihsZXQgZSBvZiByLmdldFJhd1ZhbHVlcygpKXtpZihlIGluc3RhbmNlb2YgUmVmKXtpZihhLmhhcyhlKSljb250aW51ZTt0cnl7ZT1zLmZldGNoKGUpfWNhdGNoKHQpe2EucHV0KGUpO2luZm8oYGhhc0JsZW5kTW9kZXMgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHt0fSIuYCk7Y29udGludWV9fWlmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKWNvbnRpbnVlO2UuZGljdC5vYmpJZCYmYS5wdXQoZS5kaWN0Lm9iaklkKTtjb25zdCB0PWUuZGljdC5nZXQoIlJlc291cmNlcyIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0JiYoIXQub2JqSWR8fCFhLmhhcyh0Lm9iaklkKSkpe24ucHVzaCh0KTt0Lm9iaklkJiZhLnB1dCh0Lm9iaklkKX19fWZvcihjb25zdCBlIG9mIGEpdC5wdXQoZSk7cmV0dXJuITF9YXN5bmMgZmV0Y2hCdWlsdEluQ01hcChlKXtjb25zdCB0PXRoaXMuYnVpbHRJbkNNYXBDYWNoZS5nZXQoZSk7aWYodClyZXR1cm4gdDtsZXQgYTthPXRoaXMub3B0aW9ucy51c2VXb3JrZXJGZXRjaD97Y01hcERhdGE6YXdhaXQgZmV0Y2hCaW5hcnlEYXRhKGAke3RoaXMub3B0aW9ucy5jTWFwVXJsfSR7ZX0uYmNtYXBgKSxpc0NvbXByZXNzZWQ6ITB9OntjTWFwRGF0YTphd2FpdCB0aGlzLmhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJGZXRjaEJpbmFyeURhdGEiLHtraW5kOiJjTWFwVXJsIixmaWxlbmFtZTpgJHtlfSR7dGhpcy5vcHRpb25zLmNNYXBQYWNrZWQ/Ii5iY21hcCI6IiJ9YH0pLGlzQ29tcHJlc3NlZDp0aGlzLm9wdGlvbnMuY01hcFBhY2tlZH07dGhpcy5idWlsdEluQ01hcENhY2hlLnNldChlLGEpO3JldHVybiBhfWFzeW5jIGZldGNoU3RhbmRhcmRGb250RGF0YShlKXtjb25zdCB0PXRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLmdldChlKTtpZih0KXJldHVybiBuZXcgU3RyZWFtKHQpO2lmKHRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyYmIlN5bWJvbCIhPT1lJiYiWmFwZkRpbmdiYXRzIiE9PWUpcmV0dXJuIG51bGw7Y29uc3QgYT16bigpW2VdO2xldCBuO3RyeXtuPXRoaXMub3B0aW9ucy51c2VXb3JrZXJGZXRjaD9hd2FpdCBmZXRjaEJpbmFyeURhdGEoYCR7dGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmx9JHthfWApOmF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkZldGNoQmluYXJ5RGF0YSIse2tpbmQ6InN0YW5kYXJkRm9udERhdGFVcmwiLGZpbGVuYW1lOmF9KX1jYXRjaChlKXt3YXJuKGUpO3JldHVybiBudWxsfXRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLnNldChlLG4pO3JldHVybiBuZXcgU3RyZWFtKG4pfWFzeW5jIGJ1aWxkRm9ybVhPYmplY3QoZSx0LGEsbixzLHIsaSxvKXtjb25zdHtkaWN0Omx9PXQsZj1sb29rdXBNYXRyaXgobC5nZXRBcnJheSgiTWF0cml4IiksbnVsbCksYz1sb29rdXBOb3JtYWxSZWN0KGwuZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtsZXQgaCx1LG09YyYmbmV3IEZsb2F0MzJBcnJheShjKTttPy5zb21lKGU9PiFpc0Zpbml0ZShlKSkmJihtPW51bGwpO2wuaGFzKCJPQyIpJiYoaD1hd2FpdCB0aGlzLnBhcnNlTWFya2VkQ29udGVudFByb3BzKGwuZ2V0KCJPQyIpLGUpKTt2b2lkIDAhPT1oJiZuLmFkZE9wKEN0LFsiT0MiLGhdKTtjb25zdCBwPWwuZ2V0KCJHcm91cCIpO2xldCBkO2NvbnN0IGc9W2YmJm5ldyBGbG9hdDMyQXJyYXkoZiksIXAmJm18fG51bGxdLGI9bC5nZXQoIlJlc291cmNlcyIpO2lmKHApe3U9e21hdHJpeDpmLGJib3g6bSxzbWFzazphLGlzb2xhdGVkOiExLGtub2Nrb3V0OiExLG5lZWRzSXNvbGF0aW9uOiExLGhhc1NvZnRNYXNrOiExLGlzR3JheTohMX07bGV0IHQ9bnVsbDtpZihpc05hbWUocC5nZXQoIlMiKSwiVHJhbnNwYXJlbmN5Iikpe3UuaXNvbGF0ZWQ9cC5nZXQoIkkiKXx8ITE7dS5rbm9ja291dD1wLmdldCgiSyIpfHwhMTtpZihwLmhhcygiQ1MiKSl7Y29uc3QgYT10aGlzLl9nZXRDb2xvclNwYWNlKHAuZ2V0UmF3KCJDUyIpLGUsaSk7dD1hIGluc3RhbmNlb2YgQ29sb3JTcGFjZT9hOmF3YWl0IHRoaXMuX2hhbmRsZUNvbG9yU3BhY2UoYSl9fXUuaXNHcmF5PTE9PT10Py5udW1Db21wcztpZihhPy5iYWNrZHJvcCl7dHx8PUNvbG9yU3BhY2VVdGlscy5yZ2I7YS5iYWNrZHJvcD10LmdldFJnYkhleChhLmJhY2tkcm9wLDApfWVsc2UiTHVtaW5vc2l0eSI9PT1hPy5zdWJ0eXBlJiYoYS5iYWNrZHJvcD0iIzAwMDAwMCIpO2Q9bmV3IENoZWNrZWRPcGVyYXRvckxpc3R9ZWxzZXtkPW47bi5hZGRPcChSdCxnKX1hd2FpdCB0aGlzLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnQsdGFzazpzLHJlc291cmNlczpiIGluc3RhbmNlb2YgRGljdD9iOmUsb3BlcmF0b3JMaXN0OmQsaW5pdGlhbFN0YXRlOnIscHJldlJlZnM6b30pO2lmKHApe3UubmVlZHNJc29sYXRpb249ZC5uZWVkc0lzb2xhdGlvbnx8ISFhO3UuaGFzU29mdE1hc2s9ZC5oYXNTb2Z0TWFza3x8ISFhO24uYWRkT3AoQnQsW3VdKTtuLmFkZE9wKFJ0LGcpO24uYWRkT3BMaXN0KGQpO24uYWRkT3AoT3QsW10pO24uYWRkT3AoRHQsW3VdKX1lbHNlIG4uYWRkT3AoT3QsW10pO3ZvaWQgMCE9PWgmJm4uYWRkT3AoSXQsW10pfV9zZW5kSW1nRGF0YShlLHQsYT0hMSl7Y29uc3Qgbj10P1t0LmJpdG1hcHx8dC5kYXRhLmJ1ZmZlcl06bnVsbDtyZXR1cm4gdGhpcy5wYXJzaW5nVHlwZTNGb250fHxhP3RoaXMuaGFuZGxlci5zZW5kKCJjb21tb25vYmoiLFtlLCJJbWFnZSIsdF0sbik6dGhpcy5oYW5kbGVyLnNlbmQoIm9iaiIsW2UsdGhpcy5wYWdlUHJveHlJZCwiSW1hZ2UiLHRdLG4pfWFzeW5jIGJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczplLGltYWdlOnQsaXNJbmxpbmU6YT0hMSxvcGVyYXRvckxpc3Q6bixjYWNoZUtleTpzLGxvY2FsSW1hZ2VDYWNoZTpyLGxvY2FsQ29sb3JTcGFjZUNhY2hlOml9KXtjb25zdHttYXhJbWFnZVNpemU6byxpZ25vcmVFcnJvcnM6bCxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpmfT10aGlzLm9wdGlvbnMse2RpY3Q6Y309dCxoPWMub2JqSWQsdT1jLmdldCgiVyIsIldpZHRoIiksbT1jLmdldCgiSCIsIkhlaWdodCIpO2lmKCF1fHwibnVtYmVyIiE9dHlwZW9mIHV8fCFtfHwibnVtYmVyIiE9dHlwZW9mIG0pe3dhcm4oIkltYWdlIGRpbWVuc2lvbnMgYXJlIG1pc3NpbmcsIG9yIG5vdCBudW1iZXJzLiIpO3JldHVybn1pZigtMSE9PW8mJnUqbT5vKXtjb25zdCBlPSJJbWFnZSBleGNlZWRlZCBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBhbmQgd2FzIHJlbW92ZWQuIjtpZighbCl0aHJvdyBuZXcgRXJyb3IoZSk7d2FybihlKTtyZXR1cm59bGV0IHA7Yy5oYXMoIk9DIikmJihwPWF3YWl0IHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoYy5nZXQoIk9DIiksZSkpO2xldCBkLGcsYjtpZihjLmdldCgiSU0iLCJJbWFnZU1hc2siKXx8ITEpe2Q9YXdhaXQgUERGSW1hZ2UuY3JlYXRlTWFzayh7aW1hZ2U6dCxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpmJiYhdGhpcy5wYXJzaW5nVHlwZTNGb250fSk7aWYoZC5pc1NpbmdsZU9wYXF1ZVBpeGVsKXtnPVd0O2I9W107bi5hZGRJbWFnZU9wcyhnLGIscCk7aWYocyl7Y29uc3QgZT17Zm46ZyxhcmdzOmIsb3B0aW9uYWxDb250ZW50OnB9O3Iuc2V0KHMsaCxlKTtoJiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsaCxlKX1yZXR1cm59aWYodGhpcy5wYXJzaW5nVHlwZTNGb250KXtiPWZ1bmN0aW9uIGNvbXBpbGVUeXBlM0dseXBoKHtkYXRhOmUsd2lkdGg6dCxoZWlnaHQ6YX0pe2lmKHQ+MWUzfHxhPjFlMylyZXR1cm4gbnVsbDtjb25zdCBuPW5ldyBVaW50OEFycmF5KFswLDIsNCwwLDEsMCw1LDQsOCwxMCwwLDgsMCwyLDEsMF0pLHM9dCsxLHI9bmV3IFVpbnQ4QXJyYXkocyooYSsxKSk7bGV0IGksbyxsO2NvbnN0IGY9dCs3Ji04LGM9bmV3IFVpbnQ4QXJyYXkoZiphKTtsZXQgaD0wO2Zvcihjb25zdCB0IG9mIGUpe2xldCBlPTEyODtmb3IoO2U+MDspe2NbaCsrXT10JmU/MDoyNTU7ZT4+PTF9fWxldCB1PTA7aD0wO2lmKDAhPT1jW2hdKXtyWzBdPTE7Kyt1fWZvcihvPTE7bzx0O28rKyl7aWYoY1toXSE9PWNbaCsxXSl7cltvXT1jW2hdPzI6MTsrK3V9aCsrfWlmKDAhPT1jW2hdKXtyW29dPTI7Kyt1fWZvcihpPTE7aTxhO2krKyl7aD1pKmY7bD1pKnM7aWYoY1toLWZdIT09Y1toXSl7cltsXT1jW2hdPzE6ODsrK3V9bGV0IGU9KGNbaF0/NDowKSsoY1toLWZdPzg6MCk7Zm9yKG89MTtvPHQ7bysrKXtlPShlPj4yKSsoY1toKzFdPzQ6MCkrKGNbaC1mKzFdPzg6MCk7aWYobltlXSl7cltsK29dPW5bZV07Kyt1fWgrK31pZihjW2gtZl0hPT1jW2hdKXtyW2wrb109Y1toXT8yOjQ7Kyt1fWlmKHU+MWUzKXJldHVybiBudWxsfWg9ZiooYS0xKTtsPWkqcztpZigwIT09Y1toXSl7cltsXT04OysrdX1mb3Iobz0xO288dDtvKyspe2lmKGNbaF0hPT1jW2grMV0pe3JbbCtvXT1jW2hdPzQ6ODsrK3V9aCsrfWlmKDAhPT1jW2hdKXtyW2wrb109NDsrK3V9aWYodT4xZTMpcmV0dXJuIG51bGw7Y29uc3QgbT1uZXcgSW50MzJBcnJheShbMCxzLC0xLDAsLXMsMCwwLDAsMV0pLHA9W10se2E6ZCxiOmcsYzpiLGQ6dyxlOmosZjprfT0obmV3IERPTU1hdHJpeCkuc2NhbGVTZWxmKDEvdCwtMS9hKS50cmFuc2xhdGVTZWxmKDAsLWEpO2ZvcihpPTA7dSYmaTw9YTtpKyspe2xldCBlPWkqcztjb25zdCBhPWUrdDtmb3IoO2U8YSYmIXJbZV07KWUrKztpZihlPT09YSljb250aW51ZTtsZXQgbj1lJXMsbz1pO3AucHVzaCgkdCxkKm4rYipvK2osZypuK3cqbytrKTtjb25zdCBsPWU7bGV0IGY9cltlXTtkb3tjb25zdCB0PW1bZl07ZG97ZSs9dH13aGlsZSghcltlXSk7Y29uc3QgYT1yW2VdO2lmKDUhPT1hJiYxMCE9PWEpe2Y9YTtyW2VdPTB9ZWxzZXtmPWEmNTEqZj4+NDtyW2VdJj1mPj4yfGY8PDJ9bj1lJXM7bz1lL3N8MDtwLnB1c2goWXQsZCpuK2IqbytqLGcqbit3Km8rayk7cltlXXx8LS11fXdoaWxlKGwhPT1lKTstLWl9cmV0dXJuW1Z0LFtuZXcgRmxvYXQzMkFycmF5KHApXSxuZXcgRmxvYXQzMkFycmF5KFswLDAsdCxhXSldfShkKTtpZihiKXtuLmFkZEltYWdlT3BzKFh0LGIscCk7cmV0dXJufXdhcm4oIkNhbm5vdCBjb21waWxlIFR5cGUzIGdseXBoLiIpO24uYWRkSW1hZ2VPcHMoTnQsW2RdLHApO3JldHVybn1jb25zdCBlPWBtYXNrXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gO24uYWRkRGVwZW5kZW5jeShlKTtkLmRhdGFMZW49ZC5iaXRtYXA/ZC53aWR0aCpkLmhlaWdodCo0OmQuZGF0YS5sZW5ndGg7dGhpcy5fc2VuZEltZ0RhdGEoZSxkKTtnPU50O2I9W3tkYXRhOmUsd2lkdGg6ZC53aWR0aCxoZWlnaHQ6ZC5oZWlnaHQsaW50ZXJwb2xhdGU6ZC5pbnRlcnBvbGF0ZSxjb3VudDoxfV07bi5hZGRJbWFnZU9wcyhnLGIscCk7aWYocyl7Y29uc3QgdD17b2JqSWQ6ZSxmbjpnLGFyZ3M6YixvcHRpb25hbENvbnRlbnQ6cH07ci5zZXQocyxoLHQpO2gmJnRoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCxoLHQpfXJldHVybn1jb25zdCB3PWMuaGFzKCJTTWFzayIpfHxjLmhhcygiTWFzayIpO2lmKGEmJnUrbTwyMDAmJiF3KXt0cnl7Y29uc3Qgcz1uZXcgUERGSW1hZ2Uoe3hyZWY6dGhpcy54cmVmLHJlczplLGltYWdlOnQsaXNJbmxpbmU6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGdsb2JhbENvbG9yU3BhY2VDYWNoZTp0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZSxsb2NhbENvbG9yU3BhY2VDYWNoZTppfSk7ZD1hd2FpdCBzLmNyZWF0ZUltYWdlRGF0YSghMCwhMSk7bi5hZGRJbWFnZU9wcyhfdCxbZF0scCl9Y2F0Y2goZSl7Y29uc3QgdD1gVW5hYmxlIHRvIGRlY29kZSBpbmxpbmUgaW1hZ2U6ICIke2V9Ii5gO2lmKCFsKXRocm93IG5ldyBFcnJvcih0KTt3YXJuKHQpfXJldHVybn1sZXQgaj1gaW1nXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gLGs9ITEseT1udWxsO2lmKHRoaXMucGFyc2luZ1R5cGUzRm9udClqPWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9X3R5cGUzXyR7an1gO2Vsc2UgaWYocyYmaCl7az10aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2hvdWxkQ2FjaGUoaCx0aGlzLnBhZ2VJbmRleCk7aWYoayl7YXNzZXJ0KCFhLCJDYW5ub3QgY2FjaGUgYW4gaW5saW5lIGltYWdlIGdsb2JhbGx5LiIpO2o9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fJHtqfWB9fW4uYWRkRGVwZW5kZW5jeShqKTtnPUV0O2I9W2osdSxtXTtuLmFkZEltYWdlT3BzKGcsYixwLHcpO2lmKGspe3k9e29iaklkOmosZm46ZyxhcmdzOmIsb3B0aW9uYWxDb250ZW50OnAsaGFzTWFzazp3LGJ5dGVTaXplOjB9O2lmKHRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5oYXNEZWNvZGVGYWlsZWQoaCkpe3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhKGgseSk7dGhpcy5fc2VuZEltZ0RhdGEoaixudWxsLGspO3JldHVybn1pZih1Km0+MjVlNHx8dyl7Y29uc3QgZT1hd2FpdCB0aGlzLmhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJjb21tb25vYmoiLFtqLCJDb3B5TG9jYWxJbWFnZSIse2ltYWdlUmVmOmh9XSk7aWYoZSl7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNldERhdGEoaCx5KTt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkQnl0ZVNpemUoaCxlKTtyZXR1cm59fX1QREZJbWFnZS5idWlsZEltYWdlKHt4cmVmOnRoaXMueHJlZixyZXM6ZSxpbWFnZTp0LGlzSW5saW5lOmEscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGUsbG9jYWxDb2xvclNwYWNlQ2FjaGU6aX0pLnRoZW4oYXN5bmMgZT0+e2Q9YXdhaXQgZS5jcmVhdGVJbWFnZURhdGEoITEsZik7ZC5kYXRhTGVuPWQuYml0bWFwP2Qud2lkdGgqZC5oZWlnaHQqNDpkLmRhdGEubGVuZ3RoO2QucmVmPWg7ayYmdGhpcy5nbG9iYWxJbWFnZUNhY2hlLmFkZEJ5dGVTaXplKGgsZC5kYXRhTGVuKTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEoaixkLGspfSkuY2F0Y2goZT0+e3dhcm4oYFVuYWJsZSB0byBkZWNvZGUgaW1hZ2UgIiR7an0iOiAiJHtlfSIuYCk7aCYmdGhpcy5nbG9iYWxJbWFnZUNhY2hlLmFkZERlY29kZUZhaWxlZChoKTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEoaixudWxsLGspfSk7aWYocyl7Y29uc3QgZT17b2JqSWQ6aixmbjpnLGFyZ3M6YixvcHRpb25hbENvbnRlbnQ6cCxoYXNNYXNrOnd9O3Iuc2V0KHMsaCxlKTtpZihoKXt0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsaCxlKTtpZihrKXthc3NlcnQoeSwiVGhlIGdsb2JhbCBjYWNoZS1kYXRhIG11c3QgYmUgYXZhaWxhYmxlLiIpO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhKGgseSl9fX19I3N0KGUpe2NvbnN0IHQ9dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LmNyZWF0ZShlKSxhPW5ldyBGbG9hdDMyQXJyYXkoMSk7cmV0dXJuIFVpbnQ4QXJyYXkuZnJvbSh7bGVuZ3RoOjI1Nn0sKGUsbik9PnthWzBdPW4vMjU1O3QoYSwwLGEsMCk7cmV0dXJuIDI1NSphWzBdfDB9KX1oYW5kbGVTTWFzayhlLHQsYSxuLHMscixpKXtjb25zdCBvPWUuZ2V0KCJHIiksbD17c3VidHlwZTplLmdldCgiUyIpLm5hbWUsYmFja2Ryb3A6ZS5nZXQoIkJDIil9LGY9ZS5nZXQoIlRSIik7aXNQREZGdW5jdGlvbihmKSYmKGwudHJhbnNmZXJNYXA9dGhpcy4jc3QoZikpO3JldHVybiB0aGlzLmJ1aWxkRm9ybVhPYmplY3QodCxvLGwsYSxuLHMuc3RhdGUuY2xvbmUoe25ld1BhdGg6ITB9KSxyLGkpfWhhbmRsZVRyYW5zZmVyRnVuY3Rpb24oZSl7bGV0IHQ7aWYoQXJyYXkuaXNBcnJheShlKSl0PWUubGVuZ3RoPjEmJmUuZXZlcnkodD0+dD09PWVbMF0pP1tlWzBdXTplO2Vsc2V7aWYoIWlzUERGRnVuY3Rpb24oZSkpcmV0dXJuIG51bGw7dD1bZV19Y29uc3QgYT1bXTtsZXQgbj0wLHM9MDtmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PXRoaXMueHJlZi5mZXRjaElmUmVmKGUpO24rKztpZihpc05hbWUodCwiSWRlbnRpdHkiKSlhLnB1c2gobnVsbCk7ZWxzZXtpZighaXNQREZGdW5jdGlvbih0KSlyZXR1cm4gbnVsbDthLnB1c2godGhpcy4jc3QodCkpO3MrK319cmV0dXJuIDEhPT1uJiY0IT09bnx8MD09PXM/bnVsbDphfWhhbmRsZVRpbGluZ1R5cGUoZSx0LGEsbixzLHIsaSxvLGwpe2NvbnN0IGY9bmV3IENoZWNrZWRPcGVyYXRvckxpc3QsYz1EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6W3MuZ2V0KCJSZXNvdXJjZXMiKSxhXX0pO3JldHVybiB0aGlzLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOm4sdGFzazppLHJlc291cmNlczpjLG9wZXJhdG9yTGlzdDpmLHByZXZSZWZzOmx9KS50aGVuKGZ1bmN0aW9uKCl7Y29uc3QgYT1mLmdldElSKCkse25lZWRzSXNvbGF0aW9uOm59PWYsaT1nZXRUaWxpbmdQYXR0ZXJuSVIoYSxzLHQsbik7ci5hZGREZXBlbmRlbmNpZXMoZi5kZXBlbmRlbmNpZXMpO3IuYWRkT3AoZSxpKTtzLm9iaklkJiZvLnNldChudWxsLHMub2JqSWQse29wZXJhdG9yTGlzdElSOmEsbmVlZHNJc29sYXRpb246bixkaWN0OnN9KX0pLmNhdGNoKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgaGFuZGxlVGlsaW5nVHlwZSAtIGlnbm9yaW5nIHBhdHRlcm46ICIke2V9Ii5gKX19KX1hc3luYyBoYW5kbGVTZXRGb250KGUsdCxhLG4scyxyLGk9bnVsbCxvPW51bGwsbD1udWxsKXtjb25zdCBmPXQ/LlswXWluc3RhbmNlb2YgTmFtZT90WzBdLm5hbWU6bnVsbCxjPWF3YWl0IHRoaXMubG9hZEZvbnQoZixhLGUscyxpLG8sbCk7Yy5mb250LmlzVHlwZTNGb250JiZuLmFkZERlcGVuZGVuY2llcyhjLnR5cGUzRGVwZW5kZW5jaWVzKTtyLmZvbnQ9Yy5mb250O2Muc2VuZCh0aGlzLmhhbmRsZXIpO3JldHVybiBjLmxvYWRlZE5hbWV9aGFuZGxlVGV4dChlLHQpe2NvbnN0IGE9dC5mb250LG49YS5jaGFyc1RvR2x5cGhzKGUpO2lmKGEuZGF0YSl7KCEhKHQudGV4dFJlbmRlcmluZ01vZGUmeCl8fCJQYXR0ZXJuIj09PXQuZmlsbENvbG9yU3BhY2UubmFtZXx8IlBhdHRlcm4iPT09dC5zdHJva2VDb2xvclNwYWNlLm5hbWV8fGEuZGlzYWJsZUZvbnRGYWNlKSYmUGFydGlhbEV2YWx1YXRvci5idWlsZEZvbnRQYXRocyhhLG4sdGhpcy5oYW5kbGVyLHRoaXMub3B0aW9ucyl9cmV0dXJuIG59ZW5zdXJlU3RhdGVGb250KGUpe2lmKGUuZm9udClyZXR1cm47Y29uc3QgdD1uZXcgRm9ybWF0RXJyb3IoIk1pc3Npbmcgc2V0Rm9udCAoVGYpIG9wZXJhdG9yIGJlZm9yZSB0ZXh0IHJlbmRlcmluZyBvcGVyYXRvci4iKTtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyB0O3dhcm4oYGVuc3VyZVN0YXRlRm9udDogIiR7dH0iLmApfWFzeW5jIHNldEdTdGF0ZSh7cmVzb3VyY2VzOmUsZ1N0YXRlOnQsb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6bix0YXNrOnMsc3RhdGVNYW5hZ2VyOnIsbG9jYWxHU3RhdGVDYWNoZTppLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm8sc2VlblJlZnM6bH0pe2NvbnN0IGY9dC5vYmpJZDtsZXQgYz0hMDtjb25zdCBoPVtdO2xldCB1PVByb21pc2UucmVzb2x2ZSgpO2Zvcihjb25zdFtuLGldb2YgdClzd2l0Y2gobil7Y2FzZSJUeXBlIjpicmVhaztjYXNlIkxXIjppZigibnVtYmVyIiE9dHlwZW9mIGkpe3dhcm4oYEludmFsaWQgTFcgKGxpbmUgd2lkdGgpOiAke2l9YCk7YnJlYWt9aC5wdXNoKFtuLE1hdGguYWJzKGkpXSk7YnJlYWs7Y2FzZSJMQyI6Y2FzZSJMSiI6Y2FzZSJNTCI6Y2FzZSJEIjpjYXNlIlJJIjpjYXNlIkZMIjpjYXNlIkNBIjpjYXNlImNhIjpoLnB1c2goW24saV0pO2JyZWFrO2Nhc2UiRm9udCI6Yz0hMTt1PXUudGhlbigoKT0+dGhpcy5oYW5kbGVTZXRGb250KGUsbnVsbCxpWzBdLGEscyxyLnN0YXRlLG51bGwsbnVsbCxsKS50aGVuKGZ1bmN0aW9uKGUpe2EuYWRkRGVwZW5kZW5jeShlKTtoLnB1c2goW24sW2UsaVsxXV1dKX0pKTticmVhaztjYXNlIkJNIjpoLnB1c2goW24sbm9ybWFsaXplQmxlbmRNb2RlKGkpXSk7YnJlYWs7Y2FzZSJTTWFzayI6aWYoaXNOYW1lKGksIk5vbmUiKSl7aC5wdXNoKFtuLCExXSk7YnJlYWt9aWYoaSBpbnN0YW5jZW9mIERpY3Qpe2M9ITE7dT11LnRoZW4oKCk9PnRoaXMuaGFuZGxlU01hc2soaSxlLGEscyxyLG8sbCkpO2gucHVzaChbbiwhMF0pfWVsc2Ugd2FybigiVW5zdXBwb3J0ZWQgU01hc2sgdHlwZSIpO2JyZWFrO2Nhc2UiVFIiOmlmKHQuaGFzKCJUUjIiKSlicmVhaztjYXNlIlRSMiI6e2NvbnN0IGU9dGhpcy5oYW5kbGVUcmFuc2ZlckZ1bmN0aW9uKGkpO2gucHVzaChbIlRSIixlXSk7YnJlYWt9Y2FzZSJPUCI6Y2FzZSJvcCI6Y2FzZSJPUE0iOmNhc2UiQkciOmNhc2UiQkcyIjpjYXNlIlVDUiI6Y2FzZSJVQ1IyIjpjYXNlIkhUIjpjYXNlIlNNIjpjYXNlIlNBIjpjYXNlIkFJUyI6Y2FzZSJUSyI6aW5mbygiZ3JhcGhpYyBzdGF0ZSBvcGVyYXRvciAiK24pO2JyZWFrO2RlZmF1bHQ6aW5mbygiVW5rbm93biBncmFwaGljIHN0YXRlIG9wZXJhdG9yICIrbil9YXdhaXQgdTtoLmxlbmd0aD4wJiZhLmFkZE9wKGtlLFtoXSk7YyYmaS5zZXQobixmLGgpfWxvYWRGb250KGUsdCxhLG4scz1udWxsLHI9bnVsbCxpPW51bGwpe2NvbnN0IGVycm9yRm9udD1hc3luYygpPT5uZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6ImdfZm9udF9lcnJvciIsZm9udDpuZXcgRXJyb3JGb250KGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApLGRpY3Q6dH0pO2xldCBvO2lmKHQpdCBpbnN0YW5jZW9mIFJlZiYmKG89dCk7ZWxzZXtjb25zdCB0PWEuZ2V0KCJGb250Iik7dCYmKG89dC5nZXRSYXcoZSkpfWlmKG8pe2lmKHRoaXMudHlwZTNGb250UmVmcz8uaGFzKG8pKXJldHVybiBlcnJvckZvbnQoKTtpZih0aGlzLmZvbnRDYWNoZS5oYXMobykpcmV0dXJuIHRoaXMuZm9udENhY2hlLmdldChvKTt0cnl7dD10aGlzLnhyZWYuZmV0Y2hJZlJlZihvKX1jYXRjaChlKXt3YXJuKGBsb2FkRm9udCAtIGxvb2t1cCBmYWlsZWQ6ICIke2V9Ii5gKX19aWYoISh0IGluc3RhbmNlb2YgRGljdCkpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzJiYhdGhpcy5wYXJzaW5nVHlwZTNGb250KXt3YXJuKGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApO3JldHVybiBlcnJvckZvbnQoKX13YXJuKGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlIC0tIGF0dGVtcHRpbmcgdG8gZmFsbGJhY2sgdG8gYSBkZWZhdWx0IGZvbnQuYCk7dD1zfHxQYXJ0aWFsRXZhbHVhdG9yLmZhbGxiYWNrRm9udERpY3R9aWYodC5jYWNoZUtleSYmdGhpcy5mb250Q2FjaGUuaGFzKHQuY2FjaGVLZXkpKXJldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQodC5jYWNoZUtleSk7Y29uc3R7cHJvbWlzZTpsLHJlc29sdmU6Zn09UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7bGV0IGM7dHJ5e2M9dGhpcy5wcmVFdmFsdWF0ZUZvbnQodCk7Yy5jc3NGb250SW5mbz1yfWNhdGNoKGUpe3dhcm4oYGxvYWRGb250IC0gcHJlRXZhbHVhdGVGb250IGZhaWxlZDogIiR7ZX0iLmApO3JldHVybiBlcnJvckZvbnQoKX1jb25zdHtkZXNjcmlwdG9yOmgsaGFzaDp1fT1jLG09byBpbnN0YW5jZW9mIFJlZjtsZXQgcDtpZih1JiZoIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1oLmZvbnRBbGlhc2VzfHw9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlW3VdKXtjb25zdCB0PWVbdV0uYWxpYXNSZWY7aWYobSYmdCYmdGhpcy5mb250Q2FjaGUuaGFzKHQpKXt0aGlzLmZvbnRDYWNoZS5wdXRBbGlhcyhvLHQpO3JldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQobyl9fWVsc2UgZVt1XT17Zm9udElEOnRoaXMuaWRGYWN0b3J5LmNyZWF0ZUZvbnRJZCgpfTttJiYoZVt1XS5hbGlhc1JlZj1vKTtwPWVbdV0uZm9udElEfWVsc2UgcD10aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKTthc3NlcnQocD8uc3RhcnRzV2l0aCgiZiIpLCdUaGUgImZvbnRJRCIgbXVzdCBiZSAoY29ycmVjdGx5KSBkZWZpbmVkLicpO2lmKG0pdGhpcy5mb250Q2FjaGUucHV0KG8sbCk7ZWxzZXt0LmNhY2hlS2V5PWBjYWNoZUtleV8ke3B9YDt0aGlzLmZvbnRDYWNoZS5wdXQodC5jYWNoZUtleSxsKX10LmxvYWRlZE5hbWU9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fJHtwfWA7dGhpcy50cmFuc2xhdGVGb250KGMpLnRoZW4oYXN5bmMgZT0+e2NvbnN0IHM9bmV3IFRyYW5zbGF0ZWRGb250KHtsb2FkZWROYW1lOnQubG9hZGVkTmFtZSxmb250OmUsZGljdDp0fSk7aWYoZS5pc1R5cGUzRm9udCl0cnl7YXdhaXQgcy5sb2FkVHlwZTNEYXRhKHRoaXMsYSxuLGkpfWNhdGNoKGUpe3Rocm93IG5ldyBFcnJvcihgVHlwZTMgZm9udCBsb2FkIGVycm9yOiAke2V9YCl9ZihzKX0pLmNhdGNoKGU9Pnt3YXJuKGBsb2FkRm9udCAtIHRyYW5zbGF0ZUZvbnQgZmFpbGVkOiAiJHtlfSIuYCk7ZihuZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6dC5sb2FkZWROYW1lLGZvbnQ6bmV3IEVycm9yRm9udChlPy5tZXNzYWdlKSxkaWN0OnR9KSl9KTtyZXR1cm4gbH1idWlsZFBhdGgoZSx0LGEpe2NvbnN0e3BhdGhNaW5NYXg6bixwYXRoQnVmZmVyOnN9PWE7c3dpdGNoKDB8ZSl7Y2FzZSBUZTp7Y29uc3QgZT1hLmN1cnJlbnRQb2ludFg9dFswXSxyPWEuY3VycmVudFBvaW50WT10WzFdLGk9dFsyXSxvPXRbM10sbD1lK2ksZj1yK287MD09PWl8fDA9PT1vP3MucHVzaCgkdCxlLHIsWXQsbCxmLFp0KTpzLnB1c2goJHQsZSxyLFl0LGwscixZdCxsLGYsWXQsZSxmLFp0KTtVdGlsLnJlY3RCb3VuZGluZ0JveChlLHIsbCxmLG4pO2JyZWFrfWNhc2UgU2U6e2NvbnN0IGU9YS5jdXJyZW50UG9pbnRYPXRbMF0scj1hLmN1cnJlbnRQb2ludFk9dFsxXTtzLnB1c2goJHQsZSxyKTtVdGlsLnBvaW50Qm91bmRpbmdCb3goZSxyLG4pO2JyZWFrfWNhc2UgQWU6e2NvbnN0IGU9YS5jdXJyZW50UG9pbnRYPXRbMF0scj1hLmN1cnJlbnRQb2ludFk9dFsxXTtzLnB1c2goWXQsZSxyKTtVdGlsLnBvaW50Qm91bmRpbmdCb3goZSxyLG4pO2JyZWFrfWNhc2UgeGU6e2NvbnN0IGU9YS5jdXJyZW50UG9pbnRYLHI9YS5jdXJyZW50UG9pbnRZLFtpLG8sbCxmLGMsaF09dDthLmN1cnJlbnRQb2ludFg9YzthLmN1cnJlbnRQb2ludFk9aDtzLnB1c2goSnQsaSxvLGwsZixjLGgpO1V0aWwuYmV6aWVyQm91bmRpbmdCb3goZSxyLGksbyxsLGYsYyxoLG4pO2JyZWFrfWNhc2UgQ2U6e2NvbnN0IGU9YS5jdXJyZW50UG9pbnRYLHI9YS5jdXJyZW50UG9pbnRZLFtpLG8sbCxmXT10O2EuY3VycmVudFBvaW50WD1sO2EuY3VycmVudFBvaW50WT1mO3MucHVzaChKdCxlLHIsaSxvLGwsZik7VXRpbC5iZXppZXJCb3VuZGluZ0JveChlLHIsZSxyLGksbyxsLGYsbik7YnJlYWt9Y2FzZSBJZTp7Y29uc3QgZT1hLmN1cnJlbnRQb2ludFgscj1hLmN1cnJlbnRQb2ludFksW2ksbyxsLGZdPXQ7YS5jdXJyZW50UG9pbnRYPWw7YS5jdXJyZW50UG9pbnRZPWY7cy5wdXNoKEp0LGksbyxsLGYsbCxmKTtVdGlsLmJlemllckJvdW5kaW5nQm94KGUscixpLG8sbCxmLGwsZixuKTticmVha31jYXNlIEZlOnMucHVzaChadCl9fV9nZXRDb2xvclNwYWNlKGUsdCxhKXtyZXR1cm4gQ29sb3JTcGFjZVV0aWxzLnBhcnNlKHtjczplLHhyZWY6dGhpcy54cmVmLHJlc291cmNlczp0LHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnRoaXMuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmEsYXN5bmNJZk5vdENhY2hlZDohMH0pfWFzeW5jIF9oYW5kbGVDb2xvclNwYWNlKGUpe3RyeXtyZXR1cm4gYXdhaXQgZX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl7d2FybihgX2hhbmRsZUNvbG9yU3BhY2UgLSBpZ25vcmluZyBDb2xvclNwYWNlOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9dGhyb3cgZX19cGFyc2VTaGFkaW5nKHtzaGFkaW5nOmUscmVzb3VyY2VzOnQsbG9jYWxDb2xvclNwYWNlQ2FjaGU6YSxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6bn0pe2xldCBzLHI9bi5nZXQoZSk7aWYocilyZXR1cm4gcjt0cnl7cz1QYXR0ZXJuLnBhcnNlU2hhZGluZyhlLHRoaXMueHJlZix0LHRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSx0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZSxhKS5nZXRJUigpfWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbilyZXR1cm4gbnVsbDtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt3YXJuKGBwYXJzZVNoYWRpbmcgLSBpZ25vcmluZyBzaGFkaW5nOiAiJHt0fSIuYCk7bi5zZXQoZSxudWxsKTtyZXR1cm4gbnVsbH10aHJvdyB0fXI9YHBhdHRlcm5fJHt0aGlzLmlkRmFjdG9yeS5jcmVhdGVPYmpJZCgpfWA7dGhpcy5wYXJzaW5nVHlwZTNGb250JiYocj1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV90eXBlM18ke3J9YCk7bi5zZXQoZSxyKTtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpe2NvbnN0IGU9ZnVuY3Rpb24gY29tcGlsZVBhdHRlcm5JbmZvKGUpe2xldCB0LGE9bnVsbCxuPVtdLHM9W10scj1bXSxpPW51bGwsbz1udWxsO3N3aXRjaChlWzBdKXtjYXNlIlJhZGlhbEF4aWFsIjp0PSJheGlhbCI9PT1lWzFdPzE6MjthPWVbMl07cj1lWzNdOzE9PT10P24ucHVzaCguLi5lWzRdLC4uLmVbNV0pOm4ucHVzaChlWzRdWzBdLGVbNF1bMV0sZVs2XSxlWzVdWzBdLGVbNV1bMV0sZVs3XSk7YnJlYWs7Y2FzZSJNZXNoIjp0PTM7aT1lWzFdO249ZVsyXTtzPWVbM107YT1lWzZdO289ZVs3XTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgcGF0dGVybiB0eXBlOiAke2VbMF19YCl9Y29uc3QgbD1NYXRoLmZsb29yKG4ubGVuZ3RoLzIpLGY9TWF0aC5mbG9vcihzLmxlbmd0aC80KSxjPXIubGVuZ3RoLGg9bmV3IEFycmF5QnVmZmVyKDIwKzgqbCs0KmYrOCpjKyhhPzE2OjApKyhvPzM6MCkpLHU9bmV3IERhdGFWaWV3KGgpLG09bmV3IFVpbnQ4QXJyYXkoaCk7dS5zZXRVaW50OChQQVRURVJOX0lORk8uS0lORCx0KTt1LnNldFVpbnQ4KFBBVFRFUk5fSU5GTy5IQVNfQkJPWCxhPzE6MCk7dS5zZXRVaW50OChQQVRURVJOX0lORk8uSEFTX0JBQ0tHUk9VTkQsbz8xOjApO3Uuc2V0VWludDgoUEFUVEVSTl9JTkZPLlNIQURJTkdfVFlQRSxpKTt1LnNldFVpbnQzMihQQVRURVJOX0lORk8uTl9DT09SRCxsLCEwKTt1LnNldFVpbnQzMihQQVRURVJOX0lORk8uTl9DT0xPUixmLCEwKTt1LnNldFVpbnQzMihQQVRURVJOX0lORk8uTl9TVE9QLGMsITApO3Uuc2V0VWludDMyKFBBVFRFUk5fSU5GTy5OX0ZJR1VSRVMsMCwhMCk7bGV0IHA9MjA7bmV3IEZsb2F0MzJBcnJheShoLHAsMipsKS5zZXQobik7cCs9OCpsO20uc2V0KHMscCk7cCs9NCpmO2Zvcihjb25zdFtlLHRdb2Ygcil7dS5zZXRGbG9hdDMyKHAsZSwhMCk7cCs9NDt1LnNldFVpbnQzMihwLHBhcnNlSW50KHQuc2xpY2UoMSksMTYpLCEwKTtwKz00fWlmKGEpZm9yKGNvbnN0IGUgb2YgYSl7dS5zZXRGbG9hdDMyKHAsZSwhMCk7cCs9NH1vJiZtLnNldChvLHApO3JldHVybiBofShzKTt0aGlzLmhhbmRsZXIuc2VuZCgiY29tbW9ub2JqIixbciwiUGF0dGVybiIsZV0sW2VdKX1lbHNlIHRoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtyLHRoaXMucGFnZVByb3h5SWQsIlBhdHRlcm4iLHNdKTtyZXR1cm4gcn1oYW5kbGVDb2xvck4oZSx0LGEsbixzLHIsaSxvLGwsZixjKXtjb25zdCBoPWEucG9wKCk7aWYoaCBpbnN0YW5jZW9mIE5hbWUpe2NvbnN0IHU9cy5nZXRSYXcoaC5uYW1lKSxtPXUgaW5zdGFuY2VvZiBSZWYmJmwuZ2V0QnlSZWYodSk7aWYobSl0cnl7Y29uc3Qgcz1uLmJhc2U/bi5iYXNlLmdldFJnYkhleChhLDApOm51bGwscj1nZXRUaWxpbmdQYXR0ZXJuSVIobS5vcGVyYXRvckxpc3RJUixtLmRpY3QscyxtLm5lZWRzSXNvbGF0aW9uKTtlLmFkZE9wKHQscik7cmV0dXJufWNhdGNoe31jb25zdCBwPXRoaXMueHJlZi5mZXRjaElmUmVmKHUpO2lmKHApe2NvbnN0IHM9cCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/cC5kaWN0OnAsaD1zLmdldCgiUGF0dGVyblR5cGUiKTtpZihoPT09RWkpe2NvbnN0IG89bi5iYXNlP24uYmFzZS5nZXRSZ2JIZXgoYSwwKTpudWxsO3JldHVybiB0aGlzLmhhbmRsZVRpbGluZ1R5cGUodCxvLHIscCxzLGUsaSxsLGMpfWlmKGg9PT1faSl7Y29uc3QgYT1zLmdldCgiU2hhZGluZyIpLG49dGhpcy5wYXJzZVNoYWRpbmcoe3NoYWRpbmc6YSxyZXNvdXJjZXM6cixsb2NhbENvbG9yU3BhY2VDYWNoZTpvLGxvY2FsU2hhZGluZ1BhdHRlcm5DYWNoZTpmfSk7aWYobil7Y29uc3QgYT1sb29rdXBNYXRyaXgocy5nZXRBcnJheSgiTWF0cml4IiksbnVsbCk7ZS5hZGRPcCh0LFsiU2hhZGluZyIsbixhXSl9cmV0dXJufXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuVHlwZTogJHtofWApfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gUGF0dGVybk5hbWU6ICR7aH1gKX1hc3luYyBwYXJzZU1hcmtlZENvbnRlbnRQcm9wcyhlLHQpe3JldHVybiBwYXJzZU1hcmtlZENvbnRlbnRQcm9wcyh0aGlzLnhyZWYsZSx0KX1hc3luYyBnZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTplLHRhc2s6YSxyZXNvdXJjZXM6bixvcGVyYXRvckxpc3Q6cyxpbml0aWFsU3RhdGU6cj1udWxsLGZhbGxiYWNrRm9udERpY3Q6aT1udWxsLHByZXZSZWZzOm89bnVsbH0pe2lmKGUuaXNBc3luYyl7Y29uc3QgdD1hd2FpdCBlLmFzeW5jR2V0Qnl0ZXMoKTt0JiYoZT1uZXcgU3RyZWFtKHQsMCx0Lmxlbmd0aCxlLmRpY3QpKX1jb25zdCBsPWUuZGljdD8ub2JqSWQsZj1uZXcgUmVmU2V0KG8pO2lmKGwpe2lmKG8/LmhhcyhsKSl0aHJvdyBuZXcgRXJyb3IoYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIGNpcmN1bGFyIHJlZmVyZW5jZTogJHtsfWApO2YucHV0KGwpfW58fD1EaWN0LmVtcHR5O3J8fD1uZXcgRXZhbFN0YXRlO2lmKCFzKXRocm93IG5ldyBFcnJvcignZ2V0T3BlcmF0b3JMaXN0OiBtaXNzaW5nICJvcGVyYXRvckxpc3QiIHBhcmFtZXRlcicpO2NvbnN0IGM9dGhpcyxoPXRoaXMueHJlZix1PW5ldyBMb2NhbEltYWdlQ2FjaGUsbT1uZXcgTG9jYWxDb2xvclNwYWNlQ2FjaGUscD1uZXcgTG9jYWxHU3RhdGVDYWNoZSxkPW5ldyBMb2NhbFRpbGluZ1BhdHRlcm5DYWNoZSxnPW5ldyBNYXAsYj1uLmdldCgiWE9iamVjdCIpfHxEaWN0LmVtcHR5LHc9bi5nZXQoIlBhdHRlcm4iKXx8RGljdC5lbXB0eSxqPW5ldyBTdGF0ZU1hbmFnZXIociksaz1uZXcgRXZhbHVhdG9yUHJlcHJvY2Vzc29yKGUsaCxqKSx5PW5ldyBUaW1lU2xvdE1hbmFnZXI7bGV0IHE9MDtmdW5jdGlvbiBjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKGUpe2ZvcihsZXQgZT0wLHQ9ay5zYXZlZFN0YXRlc0RlcHRoO2U8dDtlKyspcy5hZGRPcChxZSxbXSl9ZnVuY3Rpb24gY2xvc2VQZW5kaW5nTWFya2VkQ29udGVudE9QUygpe2Zvcig7cT4wO3EtLSlzLmFkZE9wKEl0LFtdKX1yZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gcHJvbWlzZUJvZHkoZSxyKXtjb25zdCBuZXh0PWZ1bmN0aW9uKHQpe1Byb21pc2UuYWxsKFt0LHMucmVhZHldKS50aGVuKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUscil9Y2F0Y2goZSl7cihlKX19LHIpfTthLmVuc3VyZU5vdFRlcm1pbmF0ZWQoKTt5LnJlc2V0KCk7Y29uc3Qgbz17fTtsZXQgbCx2LFMseDtmb3IoOyEobD15LmNoZWNrKCkpOyl7by5hcmdzPW51bGw7aWYoIWsucmVhZChvKSlicmVhaztsZXQgZT1vLmFyZ3Mscj1vLmZuO3N3aXRjaCgwfHIpe2Nhc2UgdnQ6eD1lWzBdaW5zdGFuY2VvZiBOYW1lO1M9ZVswXS5uYW1lO2lmKHgpe2NvbnN0IHQ9dS5nZXRCeU5hbWUoUyk7aWYodCl7YWRkQ2FjaGVkSW1hZ2VPcHMocyx0KTtlPW51bGw7Y29udGludWV9fW5leHQobmV3IFByb21pc2UoZnVuY3Rpb24oZSx0KXtpZigheCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3QgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2xldCByPWIuZ2V0UmF3KFMpO2lmKHIgaW5zdGFuY2VvZiBSZWYpe2NvbnN0IHQ9dS5nZXRCeVJlZihyKXx8Yy5fcmVnaW9uYWxJbWFnZUNhY2hlLmdldEJ5UmVmKHIpfHxjLmdsb2JhbEltYWdlQ2FjaGUuZ2V0RGF0YShyLGMucGFnZUluZGV4KTtpZih0KXthZGRDYWNoZWRJbWFnZU9wcyhzLHQpO2UoKTtyZXR1cm59cj1oLmZldGNoKHIpfWlmKCEociBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgYmUgYSBzdHJlYW0iKTtjb25zdCBpPXIuZGljdC5nZXQoIlN1YnR5cGUiKTtpZighKGkgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGhhdmUgYSBOYW1lIHN1YnR5cGUiKTtpZigiRm9ybSIhPT1pLm5hbWUpaWYoIkltYWdlIiE9PWkubmFtZSl7aWYoIlBTIiE9PWkubmFtZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVuaGFuZGxlZCBYT2JqZWN0IHN1YnR5cGUgJHtpLm5hbWV9YCk7aW5mbygiSWdub3JlZCBYT2JqZWN0IHN1YnR5cGUgUFMiKTtlKCl9ZWxzZSBjLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczpuLGltYWdlOnIsb3BlcmF0b3JMaXN0OnMsY2FjaGVLZXk6Uyxsb2NhbEltYWdlQ2FjaGU6dSxsb2NhbENvbG9yU3BhY2VDYWNoZTptfSkudGhlbihlLHQpO2Vsc2V7ai5zYXZlKCk7Yy5idWlsZEZvcm1YT2JqZWN0KG4scixudWxsLHMsYSxqLnN0YXRlLmNsb25lKHtuZXdQYXRoOiEwfSksbSxmKS50aGVuKGZ1bmN0aW9uKCl7ai5yZXN0b3JlKCk7ZSgpfSx0KX19KS5jYXRjaChlPT57aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighYy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIFhPYmplY3Q6ICIke2V9Ii5gKX19KSk7cmV0dXJuO2Nhc2UgVmU6Y29uc3Qgbz1lWzFdO25leHQoYy5oYW5kbGVTZXRGb250KG4sZSxudWxsLHMsYSxqLnN0YXRlLGksbnVsbCxmKS50aGVuKGZ1bmN0aW9uKGUpe3MuYWRkRGVwZW5kZW5jeShlKTtzLmFkZE9wKFZlLFtlLG9dKX0pKTtyZXR1cm47Y2FzZSBxdDpjb25zdCBsPWVbMF0uY2FjaGVLZXk7aWYobCl7Y29uc3QgdD11LmdldEJ5TmFtZShsKTtpZih0KXthZGRDYWNoZWRJbWFnZU9wcyhzLHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChjLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczpuLGltYWdlOmVbMF0saXNJbmxpbmU6ITAsb3BlcmF0b3JMaXN0OnMsY2FjaGVLZXk6bCxsb2NhbEltYWdlQ2FjaGU6dSxsb2NhbENvbG9yU3BhY2VDYWNoZTptfSkpO3JldHVybjtjYXNlIHR0OmlmKCFqLnN0YXRlLmZvbnQpe2MuZW5zdXJlU3RhdGVGb250KGouc3RhdGUpO2NvbnRpbnVlfWVbMF09Yy5oYW5kbGVUZXh0KGVbMF0sai5zdGF0ZSk7YnJlYWs7Y2FzZSBhdDppZighai5zdGF0ZS5mb250KXtjLmVuc3VyZVN0YXRlRm9udChqLnN0YXRlKTtjb250aW51ZX1jb25zdCBrPVtdLHk9ai5zdGF0ZTtmb3IoY29uc3QgdCBvZiBlWzBdKSJzdHJpbmciPT10eXBlb2YgdD9rLnB1c2goLi4uYy5oYW5kbGVUZXh0KHQseSkpOiJudW1iZXIiPT10eXBlb2YgdCYmay5wdXNoKHQpO2VbMF09aztyPXR0O2JyZWFrO2Nhc2UgbnQ6aWYoIWouc3RhdGUuZm9udCl7Yy5lbnN1cmVTdGF0ZUZvbnQoai5zdGF0ZSk7Y29udGludWV9cy5hZGRPcChldCk7ZVswXT1jLmhhbmRsZVRleHQoZVswXSxqLnN0YXRlKTtyPXR0O2JyZWFrO2Nhc2Ugc3Q6aWYoIWouc3RhdGUuZm9udCl7Yy5lbnN1cmVTdGF0ZUZvbnQoai5zdGF0ZSk7Y29udGludWV9cy5hZGRPcChldCk7cy5hZGRPcChYZSxbZS5zaGlmdCgpXSk7cy5hZGRPcChXZSxbZS5zaGlmdCgpXSk7ZVswXT1jLmhhbmRsZVRleHQoZVswXSxqLnN0YXRlKTtyPXR0O2JyZWFrO2Nhc2UgJGU6ai5zdGF0ZS50ZXh0UmVuZGVyaW5nTW9kZT1lWzBdO2JyZWFrO2Nhc2UgbHQ6e2NvbnN0IHQ9Yy5fZ2V0Q29sb3JTcGFjZShlWzBdLG4sbSk7aWYodCBpbnN0YW5jZW9mIENvbG9yU3BhY2Upe2ouc3RhdGUuZmlsbENvbG9yU3BhY2U9dDtjb250aW51ZX1uZXh0KGMuX2hhbmRsZUNvbG9yU3BhY2UodCkudGhlbihlPT57ai5zdGF0ZS5maWxsQ29sb3JTcGFjZT1lfHxDb2xvclNwYWNlVXRpbHMuZ3JheX0pKTtyZXR1cm59Y2FzZSBvdDp7Y29uc3QgdD1jLl9nZXRDb2xvclNwYWNlKGVbMF0sbixtKTtpZih0IGluc3RhbmNlb2YgQ29sb3JTcGFjZSl7ai5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPXQ7Y29udGludWV9bmV4dChjLl9oYW5kbGVDb2xvclNwYWNlKHQpLnRoZW4oZT0+e2ouc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT1lfHxDb2xvclNwYWNlVXRpbHMuZ3JheX0pKTtyZXR1cm59Y2FzZSBodDppZighaXNOdW1iZXJBcnJheShlLG51bGwpKWNvbnRpbnVlO3Y9ai5zdGF0ZS5maWxsQ29sb3JTcGFjZTtlPVt2LmdldFJnYkhleChlLDApXTtyPWd0O2JyZWFrO2Nhc2UgZnQ6aWYoIWlzTnVtYmVyQXJyYXkoZSxudWxsKSljb250aW51ZTt2PWouc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZTtlPVt2LmdldFJnYkhleChlLDApXTtyPWR0O2JyZWFrO2Nhc2UgcHQ6aWYoIWlzTnVtYmVyQXJyYXkoZSxudWxsKSljb250aW51ZTtqLnN0YXRlLmZpbGxDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5ncmF5O2U9W0NvbG9yU3BhY2VVdGlscy5ncmF5LmdldFJnYkhleChlLDApXTtyPWd0O2JyZWFrO2Nhc2UgbXQ6aWYoIWlzTnVtYmVyQXJyYXkoZSxudWxsKSljb250aW51ZTtqLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Q29sb3JTcGFjZVV0aWxzLmdyYXk7ZT1bQ29sb3JTcGFjZVV0aWxzLmdyYXkuZ2V0UmdiSGV4KGUsMCldO3I9ZHQ7YnJlYWs7Y2FzZSB3dDppZighaXNOdW1iZXJBcnJheShlLG51bGwpKWNvbnRpbnVlO2ouc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZVV0aWxzLmNteWs7ZT1bQ29sb3JTcGFjZVV0aWxzLmNteWsuZ2V0UmdiSGV4KGUsMCldO3I9Z3Q7YnJlYWs7Y2FzZSBidDppZighaXNOdW1iZXJBcnJheShlLG51bGwpKWNvbnRpbnVlO2ouc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT1Db2xvclNwYWNlVXRpbHMuY215aztlPVtDb2xvclNwYWNlVXRpbHMuY215ay5nZXRSZ2JIZXgoZSwwKV07cj1kdDticmVhaztjYXNlIGd0OmlmKCFpc051bWJlckFycmF5KGUsbnVsbCkpY29udGludWU7ai5zdGF0ZS5maWxsQ29sb3JTcGFjZT1Db2xvclNwYWNlVXRpbHMucmdiO2U9W0NvbG9yU3BhY2VVdGlscy5yZ2IuZ2V0UmdiSGV4KGUsMCldO2JyZWFrO2Nhc2UgZHQ6aWYoIWlzTnVtYmVyQXJyYXkoZSxudWxsKSljb250aW51ZTtqLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Q29sb3JTcGFjZVV0aWxzLnJnYjtlPVtDb2xvclNwYWNlVXRpbHMucmdiLmdldFJnYkhleChlLDApXTticmVhaztjYXNlIHV0OnY9ai5zdGF0ZS5wYXR0ZXJuRmlsbENvbG9yU3BhY2U7aWYoIXYpe2lmKGlzTnVtYmVyQXJyYXkoZSxudWxsKSl7ZT1bQ29sb3JTcGFjZVV0aWxzLmdyYXkuZ2V0UmdiSGV4KGUsMCldO3I9Z3Q7YnJlYWt9ZT1bXTtyPUd0O2JyZWFrfWlmKCJQYXR0ZXJuIj09PXYubmFtZSl7aWYoIUFycmF5LmlzQXJyYXkoZSkpY29udGludWU7bmV4dChjLmhhbmRsZUNvbG9yTihzLHV0LGUsdix3LG4sYSxtLGQsZyxmKSk7cmV0dXJufWlmKCFpc051bWJlckFycmF5KGUsbnVsbCkpY29udGludWU7ZT1bdi5nZXRSZ2JIZXgoZSwwKV07cj1ndDticmVhaztjYXNlIGN0OnY9ai5zdGF0ZS5wYXR0ZXJuU3Ryb2tlQ29sb3JTcGFjZTtpZighdil7aWYoaXNOdW1iZXJBcnJheShlLG51bGwpKXtlPVtDb2xvclNwYWNlVXRpbHMuZ3JheS5nZXRSZ2JIZXgoZSwwKV07cj1kdDticmVha31lPVtdO3I9S3Q7YnJlYWt9aWYoIlBhdHRlcm4iPT09di5uYW1lKXtpZighQXJyYXkuaXNBcnJheShlKSljb250aW51ZTtuZXh0KGMuaGFuZGxlQ29sb3JOKHMsY3QsZSx2LHcsbixhLG0sZCxnLGYpKTtyZXR1cm59aWYoIWlzTnVtYmVyQXJyYXkoZSxudWxsKSljb250aW51ZTtlPVt2LmdldFJnYkhleChlLDApXTtyPWR0O2JyZWFrO2Nhc2UganQ6bGV0IEM7dHJ5e2NvbnN0IHQ9bi5nZXQoIlNoYWRpbmciKTtpZighdCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIHNoYWRpbmcgcmVzb3VyY2UgZm91bmQiKTtDPXQuZ2V0KGVbMF0ubmFtZSk7aWYoIUMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBzaGFkaW5nIG9iamVjdCBmb3VuZCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbiljb250aW51ZTtpZihjLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBTaGFkaW5nOiAiJHtlfSIuYCk7Y29udGludWV9dGhyb3cgZX1jb25zdCBGPWMucGFyc2VTaGFkaW5nKHtzaGFkaW5nOkMscmVzb3VyY2VzOm4sbG9jYWxDb2xvclNwYWNlQ2FjaGU6bSxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6Z30pO2lmKCFGKWNvbnRpbnVlO2U9W0ZdO3I9anQ7YnJlYWs7Y2FzZSBrZTp4PWVbMF1pbnN0YW5jZW9mIE5hbWU7Uz1lWzBdLm5hbWU7aWYoeCl7Y29uc3QgdD1wLmdldEJ5TmFtZShTKTtpZih0KXt0Lmxlbmd0aD4wJiZzLmFkZE9wKGtlLFt0XSk7ZT1udWxsO2NvbnRpbnVlfX1uZXh0KG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsdCl7aWYoIXgpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2NvbnN0IHI9bi5nZXQoIkV4dEdTdGF0ZSIpO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3QgaT1yLmdldChTKTtpZighKGkgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2Muc2V0R1N0YXRlKHtyZXNvdXJjZXM6bixnU3RhdGU6aSxvcGVyYXRvckxpc3Q6cyxjYWNoZUtleTpTLHRhc2s6YSxzdGF0ZU1hbmFnZXI6aixsb2NhbEdTdGF0ZUNhY2hlOnAsbG9jYWxDb2xvclNwYWNlQ2FjaGU6bSxzZWVuUmVmczpmfSkudGhlbihlLHQpfSkuY2F0Y2goZT0+e2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIWMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBFeHRHU3RhdGU6ICIke2V9Ii5gKX19KSk7cmV0dXJuO2Nhc2UgbWU6e2NvbnN0W3RdPWU7aWYoIm51bWJlciIhPXR5cGVvZiB0KXt3YXJuKGBJbnZhbGlkIHNldExpbmVXaWR0aDogJHt0fWApO2NvbnRpbnVlfWVbMF09TWF0aC5hYnModCk7YnJlYWt9Y2FzZSBiZTp7Y29uc3QgdD1lWzFdO2lmKCJudW1iZXIiIT10eXBlb2YgdCl7d2FybihgSW52YWxpZCBzZXREYXNoOiAke3R9YCk7Y29udGludWV9Y29uc3QgYT1lWzBdO2lmKCFBcnJheS5pc0FycmF5KGEpKXt3YXJuKGBJbnZhbGlkIHNldERhc2g6ICR7YX1gKTtjb250aW51ZX1hLnNvbWUoZT0+Im51bWJlciIhPXR5cGVvZiBlKSYmKGVbMF09YS5maWx0ZXIoZT0+Im51bWJlciI9PXR5cGVvZiBlKSk7YnJlYWt9Y2FzZSBTZTpjYXNlIEFlOmNhc2UgeGU6Y2FzZSBDZTpjYXNlIEllOmNhc2UgRmU6Y2FzZSBUZTpjLmJ1aWxkUGF0aChyLGUsai5zdGF0ZSk7Y29udGludWU7Y2FzZSBSZTpjYXNlIE9lOmNhc2UgQmU6Y2FzZSBEZTpjYXNlIEhlOmNhc2UgTWU6Y2FzZSBOZTpjYXNlIFBlOmNhc2UgRWU6e2NvbnN0e3N0YXRlOntwYXRoQnVmZmVyOmUscGF0aE1pbk1heDphfX09ajtyIT09T2UmJnIhPT1OZSYmciE9PVBlfHxlLnB1c2goWnQpO2lmKDA9PT1lLmxlbmd0aClzLmFkZE9wKFh0LFtyLFtudWxsXSxudWxsXSk7ZWxzZXtzLmFkZE9wKFh0LFtyLFtuZXcgRmxvYXQzMkFycmF5KGUpXSxhLnNsaWNlKCldKTtlLmxlbmd0aD0wO2Euc2V0KHQsMCl9Y29udGludWV9Y2FzZSBaZTpzLmFkZE9wKHIsW25ldyBGbG9hdDMyQXJyYXkoZSldKTtjb250aW51ZTtjYXNlIFN0OmNhc2UgQXQ6Y2FzZSBGdDpjYXNlIFR0OmNvbnRpbnVlO2Nhc2UgQ3Q6cSsrO2lmKCEoZVswXWluc3RhbmNlb2YgTmFtZSkpe3dhcm4oYEV4cGVjdGVkIG5hbWUgZm9yIGJlZ2luTWFya2VkQ29udGVudFByb3BzIGFyZzA9JHtlWzBdfWApO3MuYWRkT3AoQ3QsWyJPQyIsbnVsbF0pO2NvbnRpbnVlfWlmKCJPQyI9PT1lWzBdLm5hbWUpe25leHQoYy5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyhlWzFdLG4pLnRoZW4oZT0+e3MuYWRkT3AoQ3QsWyJPQyIsZV0pfSkuY2F0Y2goZT0+e2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIWMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBiZWdpbk1hcmtlZENvbnRlbnRQcm9wczogIiR7ZX0iLmApO3MuYWRkT3AoQ3QsWyJPQyIsbnVsbF0pfX0pKTtyZXR1cm59ZT1bZVswXS5uYW1lLGVbMV1pbnN0YW5jZW9mIERpY3Q/ZVsxXS5nZXQoIk1DSUQiKTpudWxsXTticmVhaztjYXNlIHh0OmlmKGU/LnNvbWUoYXJnSXNEaWN0KSl7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3Jpbmcgb3BlcmF0b3I6ICR7cn1gKTtjb250aW51ZX1xKys7YnJlYWs7Y2FzZSBJdDppZihlPy5zb21lKGFyZ0lzRGljdCkpe3dhcm4oYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIG9wZXJhdG9yOiAke3J9YCk7Y29udGludWV9aWYoMD09PXEpY29udGludWU7cS0tO2JyZWFrO2RlZmF1bHQ6aWYoZT8uc29tZShhcmdJc0RpY3QpKXt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBvcGVyYXRvcjogJHtyfWApO2NvbnRpbnVlfX1zLmFkZE9wKHIsZSl9aWYobCluZXh0KHppKTtlbHNle2Nsb3NlUGVuZGluZ01hcmtlZENvbnRlbnRPUFMoKTtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCk7ZSgpfX0pLmNhdGNoKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgZXJyb3JzIGR1cmluZyAiJHthLm5hbWV9IiB0YXNrOiAiJHtlfSIuYCk7Y2xvc2VQZW5kaW5nTWFya2VkQ29udGVudE9QUygpO2Nsb3NlUGVuZGluZ1Jlc3RvcmVPUFMoKX19KX1hc3luYyBnZXRUZXh0Q29udGVudCh7c3RyZWFtOmUsdGFzazp0LHJlc291cmNlczphLHN0YXRlTWFuYWdlcjpzPW51bGwsaW5jbHVkZU1hcmtlZENvbnRlbnQ6cj0hMSxzaW5rOmksc2VlblN0eWxlczpvPW5ldyBTZXQsdmlld0JveDpsLGxhbmc6Zj1udWxsLGRpc2FibGVOb3JtYWxpemF0aW9uOmM9ITEsa2VlcFdoaXRlU3BhY2U6aD0hMSxwcmV2UmVmczp1PW51bGwsaW50ZXJzZWN0b3I6bT1udWxsfSl7aWYoZS5pc0FzeW5jKXtjb25zdCB0PWF3YWl0IGUuYXN5bmNHZXRCeXRlcygpO3QmJihlPW5ldyBTdHJlYW0odCwwLHQubGVuZ3RoLGUuZGljdCkpfWk/Pz10ZXh0U2lua1dyYXBwZXIobnVsbCk7Y29uc3QgcD1lLmRpY3Q/Lm9iaklkLGQ9bmV3IFJlZlNldCh1KTtpZihwKXtpZih1Py5oYXMocCkpdGhyb3cgbmV3IEVycm9yKGBnZXRUZXh0Q29udGVudCAtIGlnbm9yaW5nIGNpcmN1bGFyIHJlZmVyZW5jZTogJHtwfWApO2QucHV0KHApfWF8fD1EaWN0LmVtcHR5O3N8fD1uZXcgU3RhdGVNYW5hZ2VyKG5ldyBUZXh0U3RhdGUpO2xldCBnPTAsYj1udWxsO2NvbnN0IHc9e2l0ZW1zOltdLHN0eWxlczpPYmplY3QuY3JlYXRlKG51bGwpLGxhbmc6Zn0saj17aW5pdGlhbGl6ZWQ6ITEsc3RyOltdLHRvdGFsV2lkdGg6MCx0b3RhbEhlaWdodDowLHdpZHRoOjAsaGVpZ2h0OjAsdmVydGljYWw6ITEscHJldlRyYW5zZm9ybTpudWxsLHByZXZUZXh0UmlzZTowLHRleHRBZHZhbmNlU2NhbGU6MCxzcGFjZUluRmxvd01pbjowLHNwYWNlSW5GbG93TWF4OjAsdHJhY2tpbmdTcGFjZU1pbjoxLzAsbmVnYXRpdmVTcGFjZU1heDotMS8wLG5vdEFTcGFjZTotMS8wLHRyYW5zZm9ybTpudWxsLGZvbnROYW1lOm51bGwsaGFzRU9MOiExfSxrPVsiICIsIiAiXTtsZXQgeT0wO2Z1bmN0aW9uIHNhdmVMYXN0Q2hhcihlKXtjb25zdCB0PSh5KzEpJTIsYT0iICIhPT1rW3ldJiYiICI9PT1rW3RdO2tbeV09ZTt5PXQ7cmV0dXJuIWgmJmF9ZnVuY3Rpb24gc2hvdWxkQWRkV2hpdGVwc2FjZSgpe3JldHVybiFoJiYiICIhPT1rW3ldJiYiICI9PT1rWyh5KzEpJTJdfWZ1bmN0aW9uIHJlc2V0TGFzdENoYXJzKCl7a1swXT1rWzFdPSIgIjt5PTB9Y29uc3QgcT10aGlzLHY9dGhpcy54cmVmLFM9W107bGV0IHg9bnVsbDtjb25zdCBDPW5ldyBMb2NhbEltYWdlQ2FjaGUsRj1uZXcgTG9jYWxHU3RhdGVDYWNoZSxUPW5ldyBFdmFsdWF0b3JQcmVwcm9jZXNzb3IoZSx2LHMpO2xldCBSLE87ZnVuY3Rpb24gcHVzaFdoaXRlc3BhY2Uoe3dpZHRoOmU9MCxoZWlnaHQ6dD0wLHRyYW5zZm9ybTphPWoucHJldlRyYW5zZm9ybSxmb250TmFtZTpuPWouZm9udE5hbWV9KXttPy5hZGRFeHRyYUNoYXIoIiAiKTt3Lml0ZW1zLnB1c2goe3N0cjoiICIsZGlyOiJsdHIiLHdpZHRoOmUsaGVpZ2h0OnQsdHJhbnNmb3JtOmEsZm9udE5hbWU6bixoYXNFT0w6ITF9KX1mdW5jdGlvbiBnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpe2NvbnN0IGU9Ui5mb250LHQ9W1IuZm9udFNpemUqUi50ZXh0SFNjYWxlLDAsMCxSLmZvbnRTaXplLDAsUi50ZXh0UmlzZV07aWYoZS5pc1R5cGUzRm9udCYmKFIuZm9udFNpemU8PTF8fGUuaXNDaGFyQkJveCkmJiFpc0FycmF5RXF1YWwoUi5mb250TWF0cml4LG4pKXtjb25zdCBhPWUuYmJveFszXS1lLmJib3hbMV07YT4wJiYodFszXSo9YSpSLmZvbnRNYXRyaXhbM10pfXJldHVybiBVdGlsLnRyYW5zZm9ybShSLmN0bSxVdGlsLnRyYW5zZm9ybShSLnRleHRNYXRyaXgsdCkpfWZ1bmN0aW9uIGVuc3VyZVRleHRDb250ZW50SXRlbSgpe2lmKGouaW5pdGlhbGl6ZWQpcmV0dXJuIGo7Y29uc3R7Zm9udDplLGxvYWRlZE5hbWU6dH09UjtpZighby5oYXModCkpe28uYWRkKHQpO3cuc3R5bGVzW3RdPXtmb250RmFtaWx5OmUuZmFsbGJhY2tOYW1lLGFzY2VudDplLmFzY2VudCxkZXNjZW50OmUuZGVzY2VudCx2ZXJ0aWNhbDplLnZlcnRpY2FsfTtpZihxLm9wdGlvbnMuZm9udEV4dHJhUHJvcGVydGllcyYmZS5zeXN0ZW1Gb250SW5mbyl7Y29uc3QgYT13LnN0eWxlc1t0XTthLmZvbnRTdWJzdGl0dXRpb249ZS5zeXN0ZW1Gb250SW5mby5jc3M7YS5mb250U3Vic3RpdHV0aW9uTG9hZGVkTmFtZT1lLnN5c3RlbUZvbnRJbmZvLmxvYWRlZE5hbWV9fWouZm9udE5hbWU9dDtjb25zdCBhPWoudHJhbnNmb3JtPWdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCk7aWYoZS52ZXJ0aWNhbCl7ai53aWR0aD1qLnRvdGFsV2lkdGg9TWF0aC5oeXBvdChhWzBdLGFbMV0pO2ouaGVpZ2h0PWoudG90YWxIZWlnaHQ9MDtqLnZlcnRpY2FsPSEwfWVsc2V7ai53aWR0aD1qLnRvdGFsV2lkdGg9MDtqLmhlaWdodD1qLnRvdGFsSGVpZ2h0PU1hdGguaHlwb3QoYVsyXSxhWzNdKTtqLnZlcnRpY2FsPSExfWNvbnN0IG49TWF0aC5oeXBvdChSLnRleHRMaW5lTWF0cml4WzBdLFIudGV4dExpbmVNYXRyaXhbMV0pLHM9TWF0aC5oeXBvdChSLmN0bVswXSxSLmN0bVsxXSk7ai50ZXh0QWR2YW5jZVNjYWxlPXMqbjtjb25zdHtmb250U2l6ZTpyfT1SO2oudHJhY2tpbmdTcGFjZU1pbj0uMTAyKnI7ai5ub3RBU3BhY2U9LjAzKnI7ai5uZWdhdGl2ZVNwYWNlTWF4PS0uMipyO2ouc3BhY2VJbkZsb3dNaW49LjEwMipyO2ouc3BhY2VJbkZsb3dNYXg9LjYqcjtqLmhhc0VPTD0hMTtqLmluaXRpYWxpemVkPSEwO3JldHVybiBqfWZ1bmN0aW9uIHVwZGF0ZUFkdmFuY2VTY2FsZSgpe2lmKCFqLmluaXRpYWxpemVkKXJldHVybjtjb25zdCBlPU1hdGguaHlwb3QoUi50ZXh0TGluZU1hdHJpeFswXSxSLnRleHRMaW5lTWF0cml4WzFdKSx0PU1hdGguaHlwb3QoUi5jdG1bMF0sUi5jdG1bMV0pKmU7aWYodCE9PWoudGV4dEFkdmFuY2VTY2FsZSl7aWYoai52ZXJ0aWNhbCl7ai50b3RhbEhlaWdodCs9ai5oZWlnaHQqai50ZXh0QWR2YW5jZVNjYWxlO2ouaGVpZ2h0PTB9ZWxzZXtqLnRvdGFsV2lkdGgrPWoud2lkdGgqai50ZXh0QWR2YW5jZVNjYWxlO2oud2lkdGg9MH1qLnRleHRBZHZhbmNlU2NhbGU9dH19ZnVuY3Rpb24gcnVuQmlkaVRyYW5zZm9ybShlKXtsZXQgdD1lLnN0ci5qb2luKCIiKTtjfHwodD1mdW5jdGlvbiBub3JtYWxpemVVbmljb2RlKGUpe2lmKCFzYSl7c2E9LyhbXHUwMGEwXHUwMGI1XHUwMzdlXHUwZWIzXHUyMDAwLVx1MjAwYVx1MjAyZlx1MjEyNlx1ZmIwMC1cdWZiMDRcdWZiMDZcdWZiMjAtXHVmYjM2XHVmYjM4LVx1ZmIzY1x1ZmIzZVx1ZmI0MFx1ZmI0MVx1ZmI0M1x1ZmI0NFx1ZmI0Ni1cdWZiYTFcdWZiYTQtXHVmYmE5XHVmYmFlLVx1ZmJiMVx1ZmJkMy1cdWZiZGNcdWZiZGUtXHVmYmU3XHVmYmVhLVx1ZmJmOFx1ZmJmY1x1ZmJmZFx1ZmMwMC1cdWZjNWRcdWZjNjQtXHVmY2YxXHVmY2Y1LVx1ZmQzZFx1ZmQ4OFx1ZmRmNFx1ZmRmYVx1ZmRmYlx1ZmU3MVx1ZmU3N1x1ZmU3OVx1ZmU3Ylx1ZmU3ZF0rKXwoXHVmYjA1KykvZ3U7cmE9bmV3IE1hcChbWyLvrIUiLCLFv3QiXV0pfXJldHVybiBlLnJlcGxhY2VBbGwoc2EsKGUsdCxhKT0+dD90Lm5vcm1hbGl6ZSgiTkZLQyIpOnJhLmdldChhKSl9KHQpKTtjb25zdCBhPWJpZGkodCwtMSxlLnZlcnRpY2FsKTtyZXR1cm57c3RyOmEuc3RyLGRpcjphLmRpcix3aWR0aDpNYXRoLmFicyhlLnRvdGFsV2lkdGgpLGhlaWdodDpNYXRoLmFicyhlLnRvdGFsSGVpZ2h0KSx0cmFuc2Zvcm06ZS50cmFuc2Zvcm0sZm9udE5hbWU6ZS5mb250TmFtZSxoYXNFT0w6ZS5oYXNFT0x9fWFzeW5jIGZ1bmN0aW9uIGhhbmRsZVNldEZvbnQoZSxzKXtjb25zdCByPWF3YWl0IHEubG9hZEZvbnQoZSxzLGEsdCxudWxsLG51bGwsZCk7Ui5sb2FkZWROYW1lPXIubG9hZGVkTmFtZTtSLmZvbnQ9ci5mb250O1IuZm9udE1hdHJpeD1yLmZvbnQuZm9udE1hdHJpeHx8bn1mdW5jdGlvbiBhcHBseUludmVyc2VSb3RhdGlvbihlLHQsYSl7Y29uc3Qgbj1NYXRoLmh5cG90KGFbMF0sYVsxXSk7cmV0dXJuWyhhWzBdKmUrYVsxXSp0KS9uLChhWzJdKmUrYVszXSp0KS9uXX1mdW5jdGlvbiBjb21wYXJlV2l0aExhc3RQb3NpdGlvbihlKXtjb25zdCB0PWdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCk7bGV0IGE9dFs0XSxuPXRbNV07aWYoUi5mb250Py52ZXJ0aWNhbCl7aWYoYTxsWzBdfHxhPmxbMl18fG4rZTxsWzFdfHxuPmxbM10pcmV0dXJuITF9ZWxzZSBpZihhK2U8bFswXXx8YT5sWzJdfHxuPGxbMV18fG4+bFszXSlyZXR1cm4hMTtpZighUi5mb250fHwhai5wcmV2VHJhbnNmb3JtKXJldHVybiEwO2xldCBzPWoucHJldlRyYW5zZm9ybVs0XSxyPWoucHJldlRyYW5zZm9ybVs1XTtpZihzPT09YSYmcj09PW4pcmV0dXJuITA7bGV0IGk9LTE7dFswXSYmMD09PXRbMV0mJjA9PT10WzJdP2k9dFswXT4wPzA6MTgwOnRbMV0mJjA9PT10WzBdJiYwPT09dFszXSYmKGk9dFsxXT4wPzkwOjI3MCk7c3dpdGNoKGkpe2Nhc2UgMDpicmVhaztjYXNlIDkwOlthLG5dPVtuLGFdO1tzLHJdPVtyLHNdO2JyZWFrO2Nhc2UgMTgwOlthLG4scyxyXT1bLWEsLW4sLXMsLXJdO2JyZWFrO2Nhc2UgMjcwOlthLG5dPVstbiwtYV07W3Mscl09Wy1yLC1zXTticmVhaztkZWZhdWx0OlthLG5dPWFwcGx5SW52ZXJzZVJvdGF0aW9uKGEsbix0KTtbcyxyXT1hcHBseUludmVyc2VSb3RhdGlvbihzLHIsai5wcmV2VHJhbnNmb3JtKX1pZihSLmZvbnQudmVydGljYWwpe2NvbnN0IGU9KHItbikvai50ZXh0QWR2YW5jZVNjYWxlLHQ9YS1zLGk9TWF0aC5zaWduKGouaGVpZ2h0fHxqLnRvdGFsSGVpZ2h0KTtpZihlPGkqai5uZWdhdGl2ZVNwYWNlTWF4KXtpZihNYXRoLmFicyh0KT4uNSpqLndpZHRoKXthcHBlbmRFT0woKTtyZXR1cm4hMH1yZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmV0dXJuITB9aWYoTWF0aC5hYnModCk+ai53aWR0aCl7YXBwZW5kRU9MKCk7cmV0dXJuITB9ZTw9aSpqLm5vdEFTcGFjZSYmcmVzZXRMYXN0Q2hhcnMoKTtpZihlPD1pKmoudHJhY2tpbmdTcGFjZU1pbilpZihzaG91bGRBZGRXaGl0ZXBzYWNlKCkpe3Jlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtwdXNoV2hpdGVzcGFjZSh7aGVpZ2h0Ok1hdGguYWJzKGUpfSl9ZWxzZSBqLmhlaWdodCs9ZTtlbHNlIGlmKCFhZGRGYWtlU3BhY2VzKGUsai5wcmV2VHJhbnNmb3JtLGkpKWlmKDA9PT1qLnN0ci5sZW5ndGgpe3Jlc2V0TGFzdENoYXJzKCk7cHVzaFdoaXRlc3BhY2Uoe2hlaWdodDpNYXRoLmFicyhlKX0pfWVsc2Ugai5oZWlnaHQrPWU7TWF0aC5hYnModCk+LjI1Kmoud2lkdGgmJmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmV0dXJuITB9Y29uc3Qgbz0oYS1zKS9qLnRleHRBZHZhbmNlU2NhbGUsZj1uLXIsYz1NYXRoLnNpZ24oai53aWR0aHx8ai50b3RhbFdpZHRoKTtpZihvPGMqai5uZWdhdGl2ZVNwYWNlTWF4KXtpZihNYXRoLmFicyhmKT4uNSpqLmhlaWdodCl7YXBwZW5kRU9MKCk7cmV0dXJuITB9cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWNvbnN0IGg9Ui50ZXh0UmlzZS1qLnByZXZUZXh0UmlzZSx1PTA9PT1oP2Y6Zi10WzNdL1IuZm9udFNpemUqaDtpZihNYXRoLmFicyh1KT5qLmhlaWdodCl7YXBwZW5kRU9MKCk7cmV0dXJuITB9bzw9YypqLm5vdEFTcGFjZSYmcmVzZXRMYXN0Q2hhcnMoKTtpZihvPD1jKmoudHJhY2tpbmdTcGFjZU1pbilpZihzaG91bGRBZGRXaGl0ZXBzYWNlKCkpe3Jlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtwdXNoV2hpdGVzcGFjZSh7d2lkdGg6TWF0aC5hYnMobyl9KX1lbHNlIGoud2lkdGgrPW87ZWxzZSBpZighYWRkRmFrZVNwYWNlcyhvLGoucHJldlRyYW5zZm9ybSxjKSlpZigwPT09ai5zdHIubGVuZ3RoKXtyZXNldExhc3RDaGFycygpO3B1c2hXaGl0ZXNwYWNlKHt3aWR0aDpNYXRoLmFicyhvKX0pfWVsc2Ugai53aWR0aCs9bztNYXRoLmFicyhmKT4uMjUqai5oZWlnaHQmJmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmV0dXJuITB9ZnVuY3Rpb24gYnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmUsZXh0cmFTcGFjaW5nOnR9KXtpZihPIT09UiYmKE8uZm9udFNpemUhPT1SLmZvbnRTaXplfHxPLmZvbnROYW1lIT09Ui5mb250TmFtZSYmKE8uZm9udC5uYW1lIT09Ui5mb250Lm5hbWV8fE8uZm9udC52ZXJ0aWNhbCE9PVIuZm9udC52ZXJ0aWNhbCkpKXtmbHVzaFRleHRDb250ZW50SXRlbSgpO089Ui5jbG9uZSgpfWNvbnN0IGE9Ui5mb250LG49YS52ZXJ0aWNhbD8tUi5jaGFyU3BhY2luZzpSLmNoYXJTcGFjaW5nO2lmKCFlKXtjb25zdCBlPW4rdDtlJiYoYS52ZXJ0aWNhbD9SLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCwtZSk6Ui50cmFuc2xhdGVUZXh0TWF0cml4KGUqUi50ZXh0SFNjYWxlLDApKTtoJiZjb21wYXJlV2l0aExhc3RQb3NpdGlvbigwKTtyZXR1cm59Y29uc3Qgcz1hLmNoYXJzVG9HbHlwaHMoZSkscj1SLmZvbnRNYXRyaXhbMF0qUi5mb250U2l6ZTtmb3IobGV0IGU9MCxpPXMubGVuZ3RoO2U8aTtlKyspe2NvbnN0IG89c1tlXSx7Y2F0ZWdvcnk6bCxvcmlnaW5hbENoYXJDb2RlOmZ9PW87aWYobC5pc0ludmlzaWJsZUZvcm1hdE1hcmspY29udGludWU7bGV0IGM9bisoZSsxPT09aT90OjApO2xldCB1PShhLnZlcnRpY2FsP28udm1ldHJpY1swXTpvLndpZHRoKSpyOzMyPT09ZiYmKGMrPVIud29yZFNwYWNpbmcpO2lmKCFoJiZsLmlzV2hpdGVzcGFjZSl7aWYoYS52ZXJ0aWNhbCl7Yys9LXU7Ui50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWMpfWVsc2V7Yys9dTtSLnRyYW5zbGF0ZVRleHRNYXRyaXgoYypSLnRleHRIU2NhbGUsMCl9c2F2ZUxhc3RDaGFyKCIgIik7Y29udGludWV9aWYoIWwuaXNaZXJvV2lkdGhEaWFjcml0aWMmJiFjb21wYXJlV2l0aExhc3RQb3NpdGlvbih1KSl7YS52ZXJ0aWNhbD9SLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCx1KTpSLnRyYW5zbGF0ZVRleHRNYXRyaXgodSpSLnRleHRIU2NhbGUsMCk7Y29udGludWV9Y29uc3QgcD1lbnN1cmVUZXh0Q29udGVudEl0ZW0oKTtsLmlzWmVyb1dpZHRoRGlhY3JpdGljJiYodT0wKTtpZihhLnZlcnRpY2FsKXttPy5hZGRHbHlwaChnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLDAsdSxvLnVuaWNvZGUpO1IudHJhbnNsYXRlVGV4dE1hdHJpeCgwLHUpO3U9TWF0aC5hYnModSk7cC5oZWlnaHQrPXV9ZWxzZXt1Kj1SLnRleHRIU2NhbGU7bT8uYWRkR2x5cGgoZ2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSx1LDAsby51bmljb2RlKTtSLnRyYW5zbGF0ZVRleHRNYXRyaXgodSwwKTtwLndpZHRoKz11fWlmKHUpe3AucHJldlRyYW5zZm9ybT1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpO3AucHJldlRleHRSaXNlPVIudGV4dFJpc2V9Y29uc3QgZD1vLnVuaWNvZGU7aWYoc2F2ZUxhc3RDaGFyKGQpKXtwLnN0ci5wdXNoKCIgIik7bT8uYWRkRXh0cmFDaGFyKCIgIil9bXx8cC5zdHIucHVzaChkKTtjJiYoYS52ZXJ0aWNhbD9SLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCwtYyk6Ui50cmFuc2xhdGVUZXh0TWF0cml4KGMqUi50ZXh0SFNjYWxlLDApKX19ZnVuY3Rpb24gYXBwZW5kRU9MKCl7bT8uYWRkRXh0cmFDaGFyKCJcbiIpO3Jlc2V0TGFzdENoYXJzKCk7aWYoai5pbml0aWFsaXplZCl7ai5oYXNFT0w9ITA7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKX1lbHNlIHcuaXRlbXMucHVzaCh7c3RyOiIiLGRpcjoibHRyIix3aWR0aDowLGhlaWdodDowLHRyYW5zZm9ybTpnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLGZvbnROYW1lOlIubG9hZGVkTmFtZSxoYXNFT0w6ITB9KX1mdW5jdGlvbiBhZGRGYWtlU3BhY2VzKGUsdCxhKXtpZihhKmouc3BhY2VJbkZsb3dNaW48PWUmJmU8PWEqai5zcGFjZUluRmxvd01heCl7aWYoai5pbml0aWFsaXplZCl7cmVzZXRMYXN0Q2hhcnMoKTtqLnN0ci5wdXNoKCIgIik7bT8uYWRkRXh0cmFDaGFyKCIgIil9cmV0dXJuITF9Y29uc3Qgbj1qLmZvbnROYW1lO2xldCBzPTA7aWYoai52ZXJ0aWNhbCl7cz1lO2U9MH1mbHVzaFRleHRDb250ZW50SXRlbSgpO3Jlc2V0TGFzdENoYXJzKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKGUpLGhlaWdodDpNYXRoLmFicyhzKSx0cmFuc2Zvcm06dHx8Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxmb250TmFtZTpufSk7cmV0dXJuITB9ZnVuY3Rpb24gZmx1c2hUZXh0Q29udGVudEl0ZW0oKXtpZihqLmluaXRpYWxpemVkJiZqLnN0cil7ai52ZXJ0aWNhbD9qLnRvdGFsSGVpZ2h0Kz1qLmhlaWdodCpqLnRleHRBZHZhbmNlU2NhbGU6ai50b3RhbFdpZHRoKz1qLndpZHRoKmoudGV4dEFkdmFuY2VTY2FsZTt3Lml0ZW1zLnB1c2gocnVuQmlkaVRyYW5zZm9ybShqKSk7ai5pbml0aWFsaXplZD0hMTtqLnN0ci5sZW5ndGg9MH19ZnVuY3Rpb24gY2xvc2VQZW5kaW5nTWFya2VkQ29udGVudEl0ZW1zKGU9MCl7aWYociYmIShnPD1lKSl7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtmb3IoO2c+ZTtnLS0pdy5pdGVtcy5wdXNoKHt0eXBlOiJlbmRNYXJrZWRDb250ZW50In0pfX1mdW5jdGlvbiBlbnF1ZXVlQ2h1bmsoZT0hMSl7Y29uc3QgdD13Lml0ZW1zLmxlbmd0aDtpZigwIT09dCYmIShlJiZ0PDEwKSl7aS5lbnF1ZXVlKHcsdCk7dy5pdGVtcz1bXTt3LnN0eWxlcz1PYmplY3QuY3JlYXRlKG51bGwpfX1jb25zdCBEPW5ldyBUaW1lU2xvdE1hbmFnZXI7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIHByb21pc2VCb2R5KGUsbil7Y29uc3QgbmV4dD1mdW5jdGlvbih0KXtlbnF1ZXVlQ2h1bmsoITApO1Byb21pc2UuYWxsKFt0LGkucmVhZHldKS50aGVuKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUsbil9Y2F0Y2goZSl7bihlKX19LG4pfTt0LmVuc3VyZU5vdFRlcm1pbmF0ZWQoKTtELnJlc2V0KCk7Y29uc3QgdT17fTtsZXQgbSxwLGosaz1bXTtmb3IoOyEobT1ELmNoZWNrKCkpOyl7ay5sZW5ndGg9MDt1LmFyZ3M9aztpZighVC5yZWFkKHUpKWJyZWFrO1I9cy5zdGF0ZTtPfHw9Ui5jbG9uZSgpO2NvbnN0IGU9dS5mbjtrPXUuYXJncztzd2l0Y2goMHxlKXtjYXNlIFZlOmNvbnN0IGU9a1swXS5uYW1lLG49a1sxXTtpZihSLmZvbnQmJmU9PT1SLmZvbnROYW1lJiZuPT09Ui5mb250U2l6ZSlicmVhaztSLmZvbnROYW1lPWU7Ui5mb250U2l6ZT1uO25leHQoaGFuZGxlU2V0Rm9udChlLG51bGwpKTtyZXR1cm47Y2FzZSBZZTpSLnRleHRSaXNlPWtbMF07YnJlYWs7Y2FzZSBLZTpSLnRleHRIU2NhbGU9a1swXS8xMDA7YnJlYWs7Y2FzZSBHZTpSLmxlYWRpbmc9a1swXTticmVhaztjYXNlIEplOlIudHJhbnNsYXRlVGV4dExpbmVNYXRyaXgoa1swXSxrWzFdKTtSLnRleHRNYXRyaXg9Ui50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2JyZWFrO2Nhc2UgUWU6Ui5sZWFkaW5nPS1rWzFdO1IudHJhbnNsYXRlVGV4dExpbmVNYXRyaXgoa1swXSxrWzFdKTtSLnRleHRNYXRyaXg9Ui50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2JyZWFrO2Nhc2UgZXQ6Ui5jYXJyaWFnZVJldHVybigpO2JyZWFrO2Nhc2UgWmU6Ui5zZXRUZXh0TWF0cml4KGtbMF0sa1sxXSxrWzJdLGtbM10sa1s0XSxrWzVdKTtSLnNldFRleHRMaW5lTWF0cml4KGtbMF0sa1sxXSxrWzJdLGtbM10sa1s0XSxrWzVdKTt1cGRhdGVBZHZhbmNlU2NhbGUoKTticmVhaztjYXNlIFdlOlIuY2hhclNwYWNpbmc9a1swXTticmVhaztjYXNlIFhlOlIud29yZFNwYWNpbmc9a1swXTticmVhaztjYXNlIExlOlIudGV4dE1hdHJpeD1nYS5zbGljZSgpO1IudGV4dExpbmVNYXRyaXg9Z2Euc2xpY2UoKTtiPWc7YnJlYWs7Y2FzZSBVZTppZihudWxsIT09Yil7Y2xvc2VQZW5kaW5nTWFya2VkQ29udGVudEl0ZW1zKGIpO2I9bnVsbH1icmVhaztjYXNlIGF0OmlmKCFzLnN0YXRlLmZvbnQpe3EuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfWNvbnN0IHU9KFIuZm9udC52ZXJ0aWNhbD8xOi0xKSpSLmZvbnRTaXplLzFlMztmb3IoY29uc3QgZSBvZiBrWzBdKWlmKCJzdHJpbmciPT10eXBlb2YgZSlTLnB1c2goZSk7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIGUmJjAhPT1lKXtjb25zdCB0PVMuam9pbigiIik7Uy5sZW5ndGg9MDtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6dCxleHRyYVNwYWNpbmc6ZSp1fSl9aWYoUy5sZW5ndGg+MCl7Y29uc3QgZT1TLmpvaW4oIiIpO1MubGVuZ3RoPTA7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmUsZXh0cmFTcGFjaW5nOjB9KX1icmVhaztjYXNlIHR0OmlmKCFzLnN0YXRlLmZvbnQpe3EuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfWJ1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczprWzBdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBudDppZighcy5zdGF0ZS5mb250KXtxLmVuc3VyZVN0YXRlRm9udChzLnN0YXRlKTtjb250aW51ZX1SLmNhcnJpYWdlUmV0dXJuKCk7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmtbMF0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIHN0OmlmKCFzLnN0YXRlLmZvbnQpe3EuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfVIud29yZFNwYWNpbmc9a1swXTtSLmNoYXJTcGFjaW5nPWtbMV07Ui5jYXJyaWFnZVJldHVybigpO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczprWzJdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSB2dDpmbHVzaFRleHRDb250ZW50SXRlbSgpO3g/Pz1hLmdldCgiWE9iamVjdCIpfHxEaWN0LmVtcHR5O2o9a1swXWluc3RhbmNlb2YgTmFtZTtwPWtbMF0ubmFtZTtpZihqJiZDLmdldEJ5TmFtZShwKSlicmVhaztuZXh0KG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsbil7aWYoIWopdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtsZXQgdT14LmdldFJhdyhwKTtpZih1IGluc3RhbmNlb2YgUmVmKXtpZihDLmdldEJ5UmVmKHUpKXtlKCk7cmV0dXJufWlmKHEuZ2xvYmFsSW1hZ2VDYWNoZS5nZXREYXRhKHUscS5wYWdlSW5kZXgpKXtlKCk7cmV0dXJufXU9di5mZXRjaCh1KX1pZighKHUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGJlIGEgc3RyZWFtIik7Y29uc3R7ZGljdDptfT11LGc9bS5nZXQoIlN1YnR5cGUiKTtpZighKGcgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGhhdmUgYSBOYW1lIHN1YnR5cGUiKTtpZigiRm9ybSIhPT1nLm5hbWUpe0Muc2V0KHAsbS5vYmpJZCwhMCk7ZSgpO3JldHVybn1jb25zdCBiPXMuc3RhdGUuY2xvbmUoKSx3PW5ldyBTdGF0ZU1hbmFnZXIoYiksaz1sb29rdXBNYXRyaXgobS5nZXRBcnJheSgiTWF0cml4IiksbnVsbCk7ayYmdy50cmFuc2Zvcm0oayk7Y29uc3QgeT1tLmdldCgiUmVzb3VyY2VzIik7ZW5xdWV1ZUNodW5rKCk7Y29uc3QgUz10ZXh0U2lua1dyYXBwZXIoaSk7cS5nZXRUZXh0Q29udGVudCh7c3RyZWFtOnUsdGFzazp0LHJlc291cmNlczp5IGluc3RhbmNlb2YgRGljdD95OmEsc3RhdGVNYW5hZ2VyOncsaW5jbHVkZU1hcmtlZENvbnRlbnQ6cixzaW5rOlMsc2VlblN0eWxlczpvLHZpZXdCb3g6bCxsYW5nOmYsZGlzYWJsZU5vcm1hbGl6YXRpb246YyxrZWVwV2hpdGVTcGFjZTpoLHByZXZSZWZzOmR9KS50aGVuKGZ1bmN0aW9uKCl7Uy5lbnF1ZXVlSW52b2tlZHx8Qy5zZXQocCxtLm9iaklkLCEwKTtlKCl9LG4pfSkuY2F0Y2goZT0+e2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIXEub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRUZXh0Q29udGVudCAtIGlnbm9yaW5nIFhPYmplY3Q6ICIke2V9Ii5gKX19KSk7cmV0dXJuO2Nhc2Uga2U6aj1rWzBdaW5zdGFuY2VvZiBOYW1lO3A9a1swXS5uYW1lO2lmKGomJkYuZ2V0QnlOYW1lKHApKWJyZWFrO25leHQobmV3IFByb21pc2UoZnVuY3Rpb24oZSx0KXtpZighail0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkdTdGF0ZSBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7Y29uc3Qgbj1hLmdldCgiRXh0R1N0YXRlIik7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJFeHRHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjb25zdCBzPW4uZ2V0KHApO2lmKCEocyBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiR1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3Qgcj1zLmdldCgiRm9udCIpO2lmKHIpe2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7Ui5mb250TmFtZT1udWxsO1IuZm9udFNpemU9clsxXTtoYW5kbGVTZXRGb250KG51bGwsclswXSkudGhlbihlLHQpfWVsc2V7Ri5zZXQocCxzLm9iaklkLCEwKTtlKCl9fSkuY2F0Y2goZT0+e2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIXEub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRUZXh0Q29udGVudCAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7ZX0iLmApfX0pKTtyZXR1cm47Y2FzZSB4dDpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKHIpe2crKzt3Lml0ZW1zLnB1c2goe3R5cGU6ImJlZ2luTWFya2VkQ29udGVudCIsdGFnOmtbMF1pbnN0YW5jZW9mIE5hbWU/a1swXS5uYW1lOm51bGx9KX1icmVhaztjYXNlIEN0OmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7aWYocil7ZysrO2NvbnN0IGU9a1sxXWluc3RhbmNlb2YgRGljdD9rWzFdLmdldCgiTUNJRCIpOm51bGw7dy5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyIsaWQ6TnVtYmVyLmlzSW50ZWdlcihlKT9gJHtxLmlkRmFjdG9yeS5nZXRQYWdlT2JqSWQoKX1fbWMke2V9YDpudWxsLHRhZzprWzBdaW5zdGFuY2VvZiBOYW1lP2tbMF0ubmFtZTpudWxsfSl9YnJlYWs7Y2FzZSBJdDpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKHIpe2lmKDA9PT1nKWJyZWFrO2ctLTt3Lml0ZW1zLnB1c2goe3R5cGU6ImVuZE1hcmtlZENvbnRlbnQifSl9fWlmKHcuaXRlbXMubGVuZ3RoPj1pLmRlc2lyZWRTaXplKXttPSEwO2JyZWFrfX1pZihtKW5leHQoemkpO2Vsc2V7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtjbG9zZVBlbmRpbmdNYXJrZWRDb250ZW50SXRlbXMoKTtlbnF1ZXVlQ2h1bmsoKTtlKCl9fSkuY2F0Y2goZT0+e2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRUZXh0Q29udGVudCAtIGlnbm9yaW5nIGVycm9ycyBkdXJpbmcgIiR7dC5uYW1lfSIgdGFzazogIiR7ZX0iLmApO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7Y2xvc2VQZW5kaW5nTWFya2VkQ29udGVudEl0ZW1zKCk7ZW5xdWV1ZUNodW5rKCl9fSl9YXN5bmMgZXh0cmFjdERhdGFTdHJ1Y3R1cmVzKGUsdCl7Y29uc3QgYT10aGlzLnhyZWY7bGV0IG47Y29uc3Qgcz10aGlzLnJlYWRUb1VuaWNvZGUodC50b1VuaWNvZGUpO2lmKHQuY29tcG9zaXRlKXtjb25zdCBhPWUuZ2V0KCJDSURTeXN0ZW1JbmZvIik7YSBpbnN0YW5jZW9mIERpY3QmJiF0LmNpZFN5c3RlbUluZm8mJih0LmNpZFN5c3RlbUluZm89e3JlZ2lzdHJ5OnN0cmluZ1RvUERGU3RyaW5nKGEuZ2V0KCJSZWdpc3RyeSIpKSxvcmRlcmluZzpzdHJpbmdUb1BERlN0cmluZyhhLmdldCgiT3JkZXJpbmciKSksc3VwcGxlbWVudDphLmdldCgiU3VwcGxlbWVudCIpfSk7dHJ5e2NvbnN0IHQ9ZS5nZXQoIkNJRFRvR0lETWFwIik7dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJihuPXQuZ2V0Qnl0ZXMoKSl9Y2F0Y2goZSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBleHRyYWN0RGF0YVN0cnVjdHVyZXMgLSBpZ25vcmluZyBDSURUb0dJRE1hcCBkYXRhOiAiJHtlfSIuYCl9fWNvbnN0IHI9bmV3IE1hcDtsZXQgaSxvPW51bGw7aWYoZS5oYXMoIkVuY29kaW5nIikpe2k9ZS5nZXQoIkVuY29kaW5nIik7aWYoaSBpbnN0YW5jZW9mIERpY3Qpe289aS5nZXQoIkJhc2VFbmNvZGluZyIpO289byBpbnN0YW5jZW9mIE5hbWU/by5uYW1lOm51bGw7aWYoaS5oYXMoIkRpZmZlcmVuY2VzIikpe2NvbnN0IGU9aS5nZXQoIkRpZmZlcmVuY2VzIik7bGV0IHQ9MDtmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPWEuZmV0Y2hJZlJlZihuKTtpZigibnVtYmVyIj09dHlwZW9mIGUpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGVudHJ5IGluICdEaWZmZXJlbmNlcycgYXJyYXk6ICR7ZX1gKTtyLnNldCh0KyssZS5uYW1lKX19fX1lbHNlIGlmKGkgaW5zdGFuY2VvZiBOYW1lKW89aS5uYW1lO2Vsc2V7Y29uc3QgZT0iRW5jb2RpbmcgaXMgbm90IGEgTmFtZSBub3IgYSBEaWN0IjtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoZSk7d2FybihlKX0iTWFjUm9tYW5FbmNvZGluZyIhPT1vJiYiTWFjRXhwZXJ0RW5jb2RpbmciIT09byYmIldpbkFuc2lFbmNvZGluZyIhPT1vJiYobz1udWxsKX1jb25zdCBsPSF0LmZpbGV8fHQuaXNJbnRlcm5hbEZvbnQsZj1XbigpW3QubmFtZV07byYmbCYmZiYmKG89bnVsbCk7aWYoIldpbkFuc2lFbmNvZGluZyI9PT1vJiZsJiZ0Lm5hbWU/LmNoYXJDb2RlQXQoMCk+PTE4Myl7Y29uc3QgZT10Lm5hbWU7aWYoWyLDi8OOw4zDpSIsIsK6w5rDjMOlIiwiwr/CrMOMw6UiLCLCt8OCw4vDjiIsIsK/wqzDjMOlX0dCMjMxMiIsIsK3w4LDi8OOX0dCMjMxMiIsIsOBwqXDisOpIiwiw5DDgsOLw44iLCLCt8OCw4vDjsOMw6UiLCLDkMKhwrHDqsOLw44iXS5pbmNsdWRlcyhlKSl7bz1udWxsO3QuZGVmYXVsdEVuY29kaW5nPSJBZG9iZS1HQjEtVUNTMiI7dC5jb21wb3NpdGU9ITA7dC5jaWRFbmNvZGluZz1OYW1lLmdldCgiR0JLLUVVQy1IIik7Y29uc3QgZT1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOnQuY2lkRW5jb2RpbmcsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSk7dC5jTWFwPWU7dC52ZXJ0aWNhbD10LmNNYXAudmVydGljYWw7dC5jaWRTeXN0ZW1JbmZvPXtyZWdpc3RyeToiQWRvYmUiLG9yZGVyaW5nOiJHQjEiLHN1cHBsZW1lbnQ6MH19fWlmKG8pdC5kZWZhdWx0RW5jb2Rpbmc9Z2V0RW5jb2Rpbmcobyk7ZWxzZXtsZXQgZT0hISh0LmZsYWdzJkFuKTtjb25zdCBhPSEhKHQuZmxhZ3MmeG4pO2lmKCJUcnVlVHlwZSI9PT10LnR5cGUmJmUmJmEmJnIuc2l6ZSl7dC5mbGFncyY9fkFuO2U9ITF9aT1tbjsiVHJ1ZVR5cGUiIT09dC50eXBlfHxhfHwoaT1wbik7aWYoZXx8Zil7aT11bjtsJiYoL1N5bWJvbC9pLnRlc3QodC5uYW1lKT9pPWRuOi9EaW5nYmF0cy9pLnRlc3QodC5uYW1lKT9pPWduOi9XaW5nZGluZ3MvaS50ZXN0KHQubmFtZSkmJihpPXBuKSl9dC5kZWZhdWx0RW5jb2Rpbmc9aX10LmRpZmZlcmVuY2VzPXI7dC5iYXNlRW5jb2RpbmdOYW1lPW87dC5oYXNFbmNvZGluZz0hIW98fCEhci5zaXplO3QuZGljdD1lO3QudG9Vbmljb2RlPWF3YWl0IHM7Y29uc3QgYz1hd2FpdCB0aGlzLmJ1aWxkVG9Vbmljb2RlKHQpO3QudG9Vbmljb2RlPWM7biYmKHQuY2lkVG9HaWRNYXA9dGhpcy5yZWFkQ2lkVG9HaWRNYXAobixjKSk7cmV0dXJuIHR9X3NpbXBsZUZvbnRUb1VuaWNvZGUoZSx0PSExKXthc3NlcnQoIWUuY29tcG9zaXRlLCJNdXN0IGJlIGEgc2ltcGxlIGZvbnQuIik7Y29uc3QgYT1uZXcgTWFwLG49ZS5kZWZhdWx0RW5jb2Rpbmcuc2xpY2UoKSxzPWUuYmFzZUVuY29kaW5nTmFtZTtmb3IoY29uc3RbdCxhXW9mIGUuZGlmZmVyZW5jZXMpIi5ub3RkZWYiIT09YSYmKG5bdF09YSk7Y29uc3Qgcj1ibigpO2Zvcihjb25zdCBpIGluIG4pe2xldCBvPW5baV07aWYoIiI9PT1vKWNvbnRpbnVlO2xldCBsPXJbb107aWYodm9pZCAwIT09bCl7YS5zZXQoK2ksU3RyaW5nLmZyb21DaGFyQ29kZShsKSk7Y29udGludWV9bGV0IGY9MDtzd2l0Y2gob1swXSl7Y2FzZSJHIjozPT09by5sZW5ndGgmJihmPXBhcnNlSW50KG8uc3Vic3RyaW5nKDEpLDE2KSk7YnJlYWs7Y2FzZSJnIjo1PT09by5sZW5ndGgmJihmPXBhcnNlSW50KG8uc3Vic3RyaW5nKDEpLDE2KSk7YnJlYWs7Y2FzZSJDIjpjYXNlImMiOmlmKG8ubGVuZ3RoPj0zJiZvLmxlbmd0aDw9NCl7Y29uc3QgYT1vLnN1YnN0cmluZygxKTtpZih0KXtmPXBhcnNlSW50KGEsMTYpO2JyZWFrfWY9K2E7aWYoTnVtYmVyLmlzTmFOKGYpJiZOdW1iZXIuaXNJbnRlZ2VyKHBhcnNlSW50KGEsMTYpKSlyZXR1cm4gdGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlLCEwKX1icmVhaztjYXNlInUiOmw9Z2V0VW5pY29kZUZvckdseXBoKG8scik7LTEhPT1sJiYoZj1sKTticmVhaztkZWZhdWx0OnN3aXRjaChvKXtjYXNlImZfaCI6Y2FzZSJmX3QiOmNhc2UiVF9oIjphLnNldCgraSxvLnJlcGxhY2VBbGwoIl8iLCIiKSk7Y29udGludWV9fWlmKGY+MCYmZjw9MTExNDExMSYmTnVtYmVyLmlzSW50ZWdlcihmKSl7aWYocyYmZj09PStpKXtjb25zdCBlPWdldEVuY29kaW5nKHMpO2lmKGUmJihvPWVbaV0pKXthLnNldCgraSxTdHJpbmcuZnJvbUNoYXJDb2RlKHJbb10pKTtjb250aW51ZX19YS5zZXQoK2ksU3RyaW5nLmZyb21Db2RlUG9pbnQoZikpfX1yZXR1cm4gYX1hc3luYyBidWlsZFRvVW5pY29kZShlKXtlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwPSEhZS50b1VuaWNvZGU/LnNpemU7aWYoZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcCl7IWUuY29tcG9zaXRlJiZlLmhhc0VuY29kaW5nJiYoZS5mYWxsYmFja1RvVW5pY29kZT10aGlzLl9zaW1wbGVGb250VG9Vbmljb2RlKGUpKTtyZXR1cm4gZS50b1VuaWNvZGV9aWYoIWUuY29tcG9zaXRlKXJldHVybiBuZXcgVG9Vbmljb2RlTWFwKHRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSkpO2lmKGUuY01hcC5idWlsdEluQ01hcCYmIShlLmNNYXAgaW5zdGFuY2VvZiBJZGVudGl0eUNNYXApfHwiQWRvYmUiPT09ZS5jaWRTeXN0ZW1JbmZvPy5yZWdpc3RyeSYmKCJHQjEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nfHwiQ05TMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmd8fCJKYXBhbjEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nfHwiS29yZWExIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZykpe2NvbnN0e3JlZ2lzdHJ5OnQsb3JkZXJpbmc6YX09ZS5jaWRTeXN0ZW1JbmZvLG49TmFtZS5nZXQoYCR7dH0tJHthfS1VQ1MyYCkscz1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOm4sZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSkscj1uZXcgTWFwLGk9W107ZS5jTWFwLmZvckVhY2goKGUsdCk9PntpZih0PjY1NTM1KXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWF4IHNpemUgb2YgQ0lEIGlzIDY1LDUzNSIpO2NvbnN0IGE9cy5sb29rdXAodCk7aWYoYSl7aS5sZW5ndGg9MDtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKz0yKWkucHVzaCgoYS5jaGFyQ29kZUF0KGUpPDw4KSthLmNoYXJDb2RlQXQoZSsxKSk7ci5zZXQoZSxTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLmkpKX19KTtyZXR1cm4gbmV3IFRvVW5pY29kZU1hcChyKX1yZXR1cm4gbmV3IElkZW50aXR5VG9Vbmljb2RlTWFwKGUuZmlyc3RDaGFyLGUubGFzdENoYXIpfWFzeW5jIHJlYWRUb1VuaWNvZGUoZSl7aWYoIWUpcmV0dXJuIG51bGw7aWYoZSBpbnN0YW5jZW9mIE5hbWUpe2NvbnN0IHQ9YXdhaXQgQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pO3JldHVybiB0IGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwP25ldyBJZGVudGl0eVRvVW5pY29kZU1hcCgwLDY1NTM1KTpuZXcgVG9Vbmljb2RlTWFwKHQuZ2V0TWFwKCkpfWlmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXRyeXtjb25zdCB0PWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KTtpZih0IGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwKXJldHVybiBuZXcgSWRlbnRpdHlUb1VuaWNvZGVNYXAoMCw2NTUzNSk7Y29uc3QgYT1uZXcgTWFwO3QuZm9yRWFjaCgoZSx0KT0+e2lmKCJudW1iZXIiPT10eXBlb2YgdCl7YS5zZXQoZSxTdHJpbmcuZnJvbUNvZGVQb2ludCh0KSk7cmV0dXJufXQubGVuZ3RoJTIhPTAmJih0PSJcMCIrdCk7Y29uc3Qgbj1bXTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrPTIpe2NvbnN0IGE9dC5jaGFyQ29kZUF0KGUpPDw4fHQuY2hhckNvZGVBdChlKzEpO2lmKDU1Mjk2IT0oNjM0ODgmYSkpe24ucHVzaChhKTtjb250aW51ZX1lKz0yO2NvbnN0IHM9dC5jaGFyQ29kZUF0KGUpPDw4fHQuY2hhckNvZGVBdChlKzEpO24ucHVzaCgoKDEwMjMmYSk8PDEwKSsoMTAyMyZzKSs2NTUzNil9YS5zZXQoZSxTdHJpbmcuZnJvbUNvZGVQb2ludCguLi5uKSl9KTtyZXR1cm4gbmV3IFRvVW5pY29kZU1hcChhKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl7d2FybihgcmVhZFRvVW5pY29kZSAtIGlnbm9yaW5nIFRvVW5pY29kZSBkYXRhOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9dGhyb3cgZX1yZXR1cm4gbnVsbH1yZWFkQ2lkVG9HaWRNYXAoZSx0KXtjb25zdCBhPW5ldyBNYXA7Zm9yKGxldCBuPTAscz1lLmxlbmd0aDtuPHM7bisrKXtjb25zdCBzPWVbbisrXTw8OHxlW25dLHI9bj4+MTsoMCE9PXN8fHQuaGFzKHIpKSYmYS5zZXQocixzKX1yZXR1cm4gYX1leHRyYWN0V2lkdGhzKGUsdCxhKXtjb25zdCBuPXRoaXMueHJlZjtsZXQgcz1bXSxyPTA7Y29uc3QgaT1bXTtsZXQgbztpZihhLmNvbXBvc2l0ZSl7Y29uc3QgdD1lLmdldCgiRFciKTtyPSJudW1iZXIiPT10eXBlb2YgdD9NYXRoLmNlaWwodCk6MWUzO2NvbnN0IGw9ZS5nZXQoIlciKTtpZihBcnJheS5pc0FycmF5KGwpKWZvcihsZXQgZT0wLHQ9bC5sZW5ndGg7ZTx0O2UrKyl7bGV0IHQ9bi5mZXRjaElmUmVmKGxbZSsrXSk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpYnJlYWs7Y29uc3QgYT1uLmZldGNoSWZSZWYobFtlXSk7aWYoQXJyYXkuaXNBcnJheShhKSlmb3IoY29uc3QgZSBvZiBhKXtjb25zdCBhPW4uZmV0Y2hJZlJlZihlKTsibnVtYmVyIj09dHlwZW9mIGEmJihzW3RdPWEpO3QrK31lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpKWJyZWFrO3tjb25zdCByPW4uZmV0Y2hJZlJlZihsWysrZV0pO2lmKCJudW1iZXIiIT10eXBlb2Ygciljb250aW51ZTtmb3IobGV0IGU9dDtlPD1hO2UrKylzW2VdPXJ9fX1pZihhLnZlcnRpY2FsKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkRXMiIpO2xldCBhPWlzTnVtYmVyQXJyYXkodCwyKT90Ols4ODAsLTFlM107bz1bYVsxXSwuNSpyLGFbMF1dO2E9ZS5nZXQoIlcyIik7aWYoQXJyYXkuaXNBcnJheShhKSlmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKyspe2xldCB0PW4uZmV0Y2hJZlJlZihhW2UrK10pO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpKWJyZWFrO2NvbnN0IHM9bi5mZXRjaElmUmVmKGFbZV0pO2lmKEFycmF5LmlzQXJyYXkocykpZm9yKGxldCBlPTAsYT1zLmxlbmd0aDtlPGE7ZSsrKXtjb25zdCBhPVtuLmZldGNoSWZSZWYoc1tlKytdKSxuLmZldGNoSWZSZWYoc1tlKytdKSxuLmZldGNoSWZSZWYoc1tlXSldO2lzTnVtYmVyQXJyYXkoYSxudWxsKSYmKGlbdF09YSk7dCsrfWVsc2V7aWYoIU51bWJlci5pc0ludGVnZXIocykpYnJlYWs7e2NvbnN0IHI9W24uZmV0Y2hJZlJlZihhWysrZV0pLG4uZmV0Y2hJZlJlZihhWysrZV0pLG4uZmV0Y2hJZlJlZihhWysrZV0pXTtpZighaXNOdW1iZXJBcnJheShyLG51bGwpKWNvbnRpbnVlO2ZvcihsZXQgZT10O2U8PXM7ZSsrKWlbZV09cn19fX19ZWxzZXtjb25zdCBpPWUuZ2V0KCJXaWR0aHMiKTtpZihBcnJheS5pc0FycmF5KGkpKXtsZXQgZT1hLmZpcnN0Q2hhcjtmb3IoY29uc3QgdCBvZiBpKXtjb25zdCBhPW4uZmV0Y2hJZlJlZih0KTsibnVtYmVyIj09dHlwZW9mIGEmJihzW2VdPWEpO2UrK31jb25zdCBvPXQuZ2V0KCJNaXNzaW5nV2lkdGgiKTtyPSJudW1iZXIiPT10eXBlb2Ygbz9vOjB9ZWxzZXtjb25zdCB0PWUuZ2V0KCJCYXNlRm9udCIpO2lmKHQgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCBlPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKHQubmFtZSk7cz10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUud2lkdGhzLGEpO3I9ZS5kZWZhdWx0V2lkdGh9fX1sZXQgbD0hMCxmPXI7Zm9yKGNvbnN0IGUgaW4gcyl7Y29uc3QgdD1zW2VdO2lmKHQpaWYoZil7aWYoZiE9PXQpe2w9ITE7YnJlYWt9fWVsc2UgZj10fWw/YS5mbGFnc3w9dm46YS5mbGFncyY9fnZuO2EuZGVmYXVsdFdpZHRoPXI7YS53aWR0aHM9czthLmRlZmF1bHRWTWV0cmljcz1vO2Eudm1ldHJpY3M9aX1pc1NlcmlmRm9udChlKXtjb25zdCB0PWUuc3BsaXQoIi0iLDEpWzBdO3JldHVybiB0IGluIFVuKCl8fC9zZXJpZi9pLnRlc3QodCl9Z2V0QmFzZUZvbnRNZXRyaWNzKGUpe2xldCB0PTAsYT1PYmplY3QuY3JlYXRlKG51bGwpLG49ITEscz1ub3JtYWxpemVGb250TmFtZShlKTtzPV9uKClbc118fHM7Y29uc3Qgcj1RbigpLGk9cltzXT8/clt0aGlzLmlzU2VyaWZGb250KGUpPyJUaW1lcy1Sb21hbiI6IkhlbHZldGljYSJdO2lmKCJudW1iZXIiPT10eXBlb2YgaSl7dD1pO249ITB9ZWxzZSBhPWkoKTtyZXR1cm57ZGVmYXVsdFdpZHRoOnQsbW9ub3NwYWNlOm4sd2lkdGhzOmF9fWJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUsdCl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpLG49dC5kaWZmZXJlbmNlcyxzPXQuZGVmYXVsdEVuY29kaW5nO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl7Y29uc3Qgcj1uLmhhcyh0KSYmZVtuLmdldCh0KV18fHQgaW4gcyYmZVtzW3RdXTtyJiYoYVt0XT1yKX1yZXR1cm4gYX1wcmVFdmFsdWF0ZUZvbnQoZSl7Y29uc3QgdD1lO2xldCBhPWUuZ2V0KCJTdWJ0eXBlIik7aWYoIShhIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgU3VidHlwZSIpO2xldCBuLHM9ITE7aWYoIlR5cGUwIj09PWEubmFtZSl7Y29uc3QgdD1lLmdldCgiRGVzY2VuZGFudEZvbnRzIik7aWYoIXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnRzIGFyZSBub3Qgc3BlY2lmaWVkIik7aWYoISgoZT1BcnJheS5pc0FycmF5KHQpP3RoaXMueHJlZi5mZXRjaElmUmVmKHRbMF0pOnQpaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkRlc2NlbmRhbnQgZm9udCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO2E9ZS5nZXQoIlN1YnR5cGUiKTtpZighKGEgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBTdWJ0eXBlIik7cz0hMH1sZXQgcj1lLmdldCgiRmlyc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihyKXx8KHI9MCk7bGV0IGk9ZS5nZXQoIkxhc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihpKXx8KGk9cz82NTUzNToyNTUpO2NvbnN0IG89ZS5nZXQoIkZvbnREZXNjcmlwdG9yIiksbD1lLmdldCgiVG9Vbmljb2RlIil8fHQuZ2V0KCJUb1VuaWNvZGUiKTtpZihvKXtuPW5ldyBNdXJtdXJIYXNoM182NDtjb25zdCBvPXQuZ2V0UmF3KCJFbmNvZGluZyIpO2lmKG8gaW5zdGFuY2VvZiBOYW1lKW4udXBkYXRlKG8ubmFtZSk7ZWxzZSBpZihvIGluc3RhbmNlb2YgUmVmKW4udXBkYXRlKG8udG9TdHJpbmcoKSk7ZWxzZSBpZihvIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3QgZSBvZiBvLmdldFJhd1ZhbHVlcygpKWlmKGUgaW5zdGFuY2VvZiBOYW1lKW4udXBkYXRlKGUubmFtZSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgUmVmKW4udXBkYXRlKGUudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubGVuZ3RoLGE9bmV3IEFycmF5KHQpO2ZvcihsZXQgbj0wO248dDtuKyspe2NvbnN0IHQ9ZVtuXTt0IGluc3RhbmNlb2YgTmFtZT9hW25dPXQubmFtZTooIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmKGFbbl09dC50b1N0cmluZygpKX1uLnVwZGF0ZShhLmpvaW4oKSl9bi51cGRhdGUoYCR7cn0tJHtpfWApO2lmKGwgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBlPWwuc3RyZWFtfHxsLHQ9ZS5idWZmZXI/bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIuYnVmZmVyLDAsZS5idWZmZXJMZW5ndGgpOm5ldyBVaW50OEFycmF5KGUuYnl0ZXMuYnVmZmVyLGUuc3RhcnQsZS5lbmQtZS5zdGFydCk7bi51cGRhdGUodCl9ZWxzZSBsIGluc3RhbmNlb2YgTmFtZSYmbi51cGRhdGUobC5uYW1lKTtjb25zdCBmPWUuZ2V0KCJXaWR0aHMiKXx8dC5nZXQoIldpZHRocyIpO2lmKEFycmF5LmlzQXJyYXkoZikpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgZikoIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmZS5wdXNoKHQudG9TdHJpbmcoKSk7bi51cGRhdGUoZS5qb2luKCkpfWlmKHMpe24udXBkYXRlKCJjb21wb3NpdGVGb250Iik7Y29uc3QgYT1lLmdldCgiVyIpfHx0LmdldCgiVyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgYSlpZigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBSZWYpZS5wdXNoKHQudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCBhPVtdO2Zvcihjb25zdCBlIG9mIHQpKCJudW1iZXIiPT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIFJlZikmJmEucHVzaChlLnRvU3RyaW5nKCkpO2UucHVzaChgWyR7YS5qb2luKCl9XWApfW4udXBkYXRlKGUuam9pbigpKX1jb25zdCBzPWUuZ2V0UmF3KCJDSURUb0dJRE1hcCIpfHx0LmdldFJhdygiQ0lEVG9HSURNYXAiKTtzIGluc3RhbmNlb2YgTmFtZT9uLnVwZGF0ZShzLm5hbWUpOnMgaW5zdGFuY2VvZiBSZWY/bi51cGRhdGUocy50b1N0cmluZygpKTpzIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmbi51cGRhdGUocy5wZWVrQnl0ZXMoKSl9aWYoIlR5cGUzIj09PWEubmFtZSl7Y29uc3QgZT10LmdldCgiQ2hhclByb2NzIik7aWYoZSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0W3QsYV1vZiBlLmdldFJhd0VudHJpZXMoKSluLnVwZGF0ZShhIGluc3RhbmNlb2YgUmVmP2Ake3R9XDAke2F9YDp0KX19cmV0dXJue2Rlc2NyaXB0b3I6byxkaWN0OmUsYmFzZURpY3Q6dCxjb21wb3NpdGU6cyx0eXBlOmEubmFtZSxmaXJzdENoYXI6cixsYXN0Q2hhcjppLHRvVW5pY29kZTpsLGhhc2g6bj9uLmhleGRpZ2VzdCgpOiIifX1hc3luYyB0cmFuc2xhdGVGb250KHtkZXNjcmlwdG9yOmUsZGljdDp0LGJhc2VEaWN0OmEsY29tcG9zaXRlOnMsdHlwZTpyLGZpcnN0Q2hhcjppLGxhc3RDaGFyOm8sdG9Vbmljb2RlOmwsY3NzRm9udEluZm86Zn0pe2NvbnN0IGM9IlR5cGUzIj09PXI7aWYoIWUpaWYoYyllPURpY3QuZW1wdHk7ZWxzZXtpZighcyl7bGV0IGU9dC5nZXQoIkJhc2VGb250Iik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYXNlIGZvbnQgaXMgbm90IHNwZWNpZmllZCIpO2U9bm9ybWFsaXplRm9udE5hbWUoZS5uYW1lKTtjb25zdCBuPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKGUpLHM9ZS5zcGxpdCgiLSIsMSlbMF0sZj0odGhpcy5pc1NlcmlmRm9udChzKT9TbjowKXwobi5tb25vc3BhY2U/dm46MCl8KFduKClbc10/QW46eG4pLGg9e3R5cGU6cixuYW1lOmUsbG9hZGVkTmFtZTphLmxvYWRlZE5hbWUsc3lzdGVtRm9udEluZm86bnVsbCx3aWR0aHM6bi53aWR0aHMsZGVmYXVsdFdpZHRoOm4uZGVmYXVsdFdpZHRoLGlzU2ltdWxhdGVkRmxhZ3M6ITAsZmxhZ3M6ZixmaXJzdENoYXI6aSxsYXN0Q2hhcjpvLHRvVW5pY29kZTpsLHhIZWlnaHQ6MCxjYXBIZWlnaHQ6MCxpdGFsaWNBbmdsZTowLGlzVHlwZTNGb250OmN9LHU9dC5nZXQoIldpZHRocyIpLG09Z2V0U3RhbmRhcmRGb250TmFtZShlKTtsZXQgcD1udWxsO2lmKG0pe3A9YXdhaXQgdGhpcy5mZXRjaFN0YW5kYXJkRm9udERhdGEobSk7aC5pc0ludGVybmFsRm9udD0hIXB9IWguaXNJbnRlcm5hbEZvbnQmJnRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyYmKGguc3lzdGVtRm9udEluZm89Z2V0Rm9udFN1YnN0aXR1dGlvbih0aGlzLnN5c3RlbUZvbnRDYWNoZSx0aGlzLmlkRmFjdG9yeSx0aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybCxlLG0scikpO2NvbnN0IGQ9YXdhaXQgdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXModCxoKTtpZihBcnJheS5pc0FycmF5KHUpKXtjb25zdCBlPVtdO2xldCB0PWk7Zm9yKGNvbnN0IGEgb2YgdSl7Y29uc3Qgbj10aGlzLnhyZWYuZmV0Y2hJZlJlZihhKTsibnVtYmVyIj09dHlwZW9mIG4mJihlW3RdPW4pO3QrK31kLndpZHRocz1lfWVsc2UgZC53aWR0aHM9dGhpcy5idWlsZENoYXJDb2RlVG9XaWR0aChuLndpZHRocyxkKTtyZXR1cm4gbmV3IEZvbnQoZSxwLGQsdGhpcy5vcHRpb25zKX1lPURpY3QuZW1wdHl9bGV0IGg9ZS5nZXQoIkZvbnROYW1lIiksdT10LmdldCgiQmFzZUZvbnQiKTsic3RyaW5nIj09dHlwZW9mIGgmJihoPU5hbWUuZ2V0KGgpKTsic3RyaW5nIj09dHlwZW9mIHUmJih1PU5hbWUuZ2V0KHUpKTtjb25zdCBtPWg/Lm5hbWUscD11Py5uYW1lO2lmKGMpbXx8KGg9TmFtZS5nZXQocikpO2Vsc2UgaWYobSE9PXApe2luZm8oYFRoZSBGb250RGVzY3JpcHRvcidzIEZvbnROYW1lIGlzICIke219IiBidXQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBGb250J3MgQmFzZUZvbnQgIiR7cH0iLmApO20mJnAmJihwLnN0YXJ0c1dpdGgobSl8fCFpc0tub3duRm9udE5hbWUobSkmJmlzS25vd25Gb250TmFtZShwKSkmJihoPW51bGwpO2h8fD11fWlmKCEoaCBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiaW52YWxpZCBmb250IG5hbWUiKTtsZXQgZCxnLGIsdyxqLGs7dHJ5e2Zvcihjb25zdCB0IG9mWyJGb250RmlsZSIsIkZvbnRGaWxlMiIsIkZvbnRGaWxlMyJdKXtkPWUuZ2V0KHQpO2lmKGQpe2c9dDticmVha319aWYoZCl7aWYoIShkIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJGb250RmlsZSBzaG91bGQgYmUgYSBzdHJlYW0iKTtpZihkLmlzQXN5bmMpe2NvbnN0IGU9YXdhaXQgZC5hc3luY0dldEJ5dGVzKCk7ZSYmKGQ9bmV3IFN0cmVhbShlLDAsZS5sZW5ndGgsZC5kaWN0KSl9aWYoZC5pc0VtcHR5KXRocm93IG5ldyBGb3JtYXRFcnJvcigiRm9udEZpbGUgaXMgZW1wdHkiKX19Y2F0Y2goZSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGB0cmFuc2xhdGVGb250IC0gZmV0Y2hpbmcgIiR7aC5uYW1lfSIgZm9udCBmaWxlOiAiJHtlfSIuYCk7ZD1udWxsfWxldCB5PSExLHE9bnVsbCx2PW51bGw7aWYoZCl7aWYoZC5kaWN0KXtjb25zdCBlPWQuZGljdC5nZXQoIlN1YnR5cGUiKTtlIGluc3RhbmNlb2YgTmFtZSYmKGI9ZS5uYW1lKTt3PWQuZGljdC5nZXQoIkxlbmd0aDEiKTtqPWQuZGljdC5nZXQoIkxlbmd0aDIiKTtrPWQuZGljdC5nZXQoIkxlbmd0aDMiKX19ZWxzZSBpZihmKXtjb25zdCBlPWdldFhmYUZvbnROYW1lKGgubmFtZSk7aWYoZSl7Zi5mb250RmFtaWx5PWAke2YuZm9udEZhbWlseX0tUGRmSlMtWEZBYDtmLm1ldHJpY3M9ZS5tZXRyaWNzfHxudWxsO3E9ZS5mYWN0b3JzfHxudWxsO2Q9YXdhaXQgdGhpcy5mZXRjaFN0YW5kYXJkRm9udERhdGEoZS5uYW1lKTt5PSEhZDthPXQ9Z2V0WGZhRm9udERpY3QoaC5uYW1lKTtzPSEwfX1lbHNlIGlmKCFjKXtjb25zdCBlPWdldFN0YW5kYXJkRm9udE5hbWUoaC5uYW1lKTtpZihlKXtkPWF3YWl0IHRoaXMuZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUpO3k9ISFkfSF5JiZ0aGlzLm9wdGlvbnMudXNlU3lzdGVtRm9udHMmJih2PWdldEZvbnRTdWJzdGl0dXRpb24odGhpcy5zeXN0ZW1Gb250Q2FjaGUsdGhpcy5pZEZhY3RvcnksdGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmwsaC5uYW1lLGUscikpfWNvbnN0IFM9bG9va3VwTWF0cml4KHQuZ2V0QXJyYXkoIkZvbnRNYXRyaXgiKSxuKSx4PWxvb2t1cE5vcm1hbFJlY3QoZS5nZXRBcnJheSgiRm9udEJCb3giKXx8dC5nZXRBcnJheSgiRm9udEJCb3giKSxjP1swLDAsMCwwXTp2b2lkIDApO2xldCBDPWUuZ2V0KCJBc2NlbnQiKTsibnVtYmVyIiE9dHlwZW9mIEMmJihDPXZvaWQgMCk7bGV0IEY9ZS5nZXQoIkRlc2NlbnQiKTsibnVtYmVyIiE9dHlwZW9mIEYmJihGPXZvaWQgMCk7bGV0IFQ9ZS5nZXQoIlhIZWlnaHQiKTsibnVtYmVyIiE9dHlwZW9mIFQmJihUPTApO2xldCBSPWUuZ2V0KCJDYXBIZWlnaHQiKTsibnVtYmVyIiE9dHlwZW9mIFImJihSPTApO2xldCBPPWUuZ2V0KCJGbGFncyIpO051bWJlci5pc0ludGVnZXIoTyl8fChPPTApO2xldCBEPWUuZ2V0KCJJdGFsaWNBbmdsZSIpOyJudW1iZXIiIT10eXBlb2YgRCYmKEQ9MCk7Y29uc3QgSD17dHlwZTpyLG5hbWU6aC5uYW1lLHN1YnR5cGU6YixmaWxlOmQsZm9udEZpbGVOOmcsbGVuZ3RoMTp3LGxlbmd0aDI6aixsZW5ndGgzOmssaXNJbnRlcm5hbEZvbnQ6eSxsb2FkZWROYW1lOmEubG9hZGVkTmFtZSxjb21wb3NpdGU6cyxmaXhlZFBpdGNoOiExLGZvbnRNYXRyaXg6UyxmaXJzdENoYXI6aSxsYXN0Q2hhcjpvLHRvVW5pY29kZTpsLGJib3g6eCxhc2NlbnQ6QyxkZXNjZW50OkYseEhlaWdodDpULGNhcEhlaWdodDpSLGZsYWdzOk8saXRhbGljQW5nbGU6RCxpc1R5cGUzRm9udDpjLGNzc0ZvbnRJbmZvOmYsc2NhbGVGYWN0b3JzOnEsc3lzdGVtRm9udEluZm86dn07aWYocyl7Y29uc3QgZT1hLmdldCgiRW5jb2RpbmciKTtlIGluc3RhbmNlb2YgTmFtZSYmKEguY2lkRW5jb2Rpbmc9ZS5uYW1lKTtjb25zdCB0PWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KTtILmNNYXA9dDtILnZlcnRpY2FsPUguY01hcC52ZXJ0aWNhbH1jb25zdCBNPWF3YWl0IHRoaXMuZXh0cmFjdERhdGFTdHJ1Y3R1cmVzKHQsSCk7dGhpcy5leHRyYWN0V2lkdGhzKHQsZSxNKTtjb25zdCBOPW5ldyBGb250KGgubmFtZSxkLE0sdGhpcy5vcHRpb25zKTtpZihOLm1pc3NpbmdGaWxlJiYhTi5zeXN0ZW1Gb250SW5mbyYmIWMmJnRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyl7Y29uc3QgZT1nZXRTdGFuZGFyZEZvbnROYW1lKGgubmFtZSksdD1nZXRGb250U3Vic3RpdHV0aW9uKHRoaXMuc3lzdGVtRm9udENhY2hlLHRoaXMuaWRGYWN0b3J5LHRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsLGgubmFtZSxlLHIpO2lmKHQpe2lmKHQuZ3Vlc3NGYWxsYmFjayl7dC5ndWVzc0ZhbGxiYWNrPSExO3QuY3NzKz1gLCR7Ti5mYWxsYmFja05hbWV9YH1OLnN5c3RlbUZvbnRJbmZvPXR9fXJldHVybiBOfXN0YXRpYyBidWlsZEZvbnRQYXRocyhlLHQsYSxuKXtmdW5jdGlvbiBidWlsZFBhdGgodCl7Y29uc3Qgcz1gJHtlLmxvYWRlZE5hbWV9X3BhdGhfJHt0fWA7dHJ5e2NvbnN0IG49ZS5yZW5kZXJlci5nZXRQYXRoKHQpO2lmKCFuKXJldHVybjthLnNlbmQoImNvbW1vbm9iaiIsW3MsIkZvbnRQYXRoIixuXSxbbl0pfWNhdGNoKGUpe2lmKG4uaWdub3JlRXJyb3JzKXt3YXJuKGBidWlsZEZvbnRQYXRocyAtIGlnbm9yaW5nICR7c30gZ2x5cGg6ICIke2V9Ii5gKTtyZXR1cm59dGhyb3cgZX19Zm9yKGNvbnN0IGUgb2YgdCl7YnVpbGRQYXRoKGUuZm9udENoYXIpO2NvbnN0IHQ9ZS5hY2NlbnQ7dD8uZm9udENoYXImJmJ1aWxkUGF0aCh0LmZvbnRDaGFyKX19c3RhdGljIGdldCBmYWxsYmFja0ZvbnREaWN0KCl7Y29uc3QgZT1uZXcgRGljdDtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO3JldHVybiBzaGFkb3codGhpcywiZmFsbGJhY2tGb250RGljdCIsZSl9fWNsYXNzIFRyYW5zbGF0ZWRGb250eyNydD0hMTsjaXQ9bnVsbDtjb25zdHJ1Y3Rvcih7bG9hZGVkTmFtZTplLGZvbnQ6dCxkaWN0OmF9KXt0aGlzLmxvYWRlZE5hbWU9ZTt0aGlzLmZvbnQ9dDt0aGlzLmRpY3Q9YTt0aGlzLnR5cGUzRGVwZW5kZW5jaWVzPXQuaXNUeXBlM0ZvbnQ/bmV3IFNldDpudWxsfXNlbmQoZSl7aWYodGhpcy4jcnQpcmV0dXJuO3RoaXMuI3J0PSEwO2NvbnN0IHQ9dGhpcy5mb250LmV4cG9ydERhdGEoKSxhPXQuYnVmZmVyP1t0LmJ1ZmZlcl06bnVsbDtlLnNlbmQoImNvbW1vbm9iaiIsW3RoaXMubG9hZGVkTmFtZSwiRm9udCIsdF0sYSl9ZmFsbGJhY2soZSx0KXtpZih0aGlzLmZvbnQuZGF0YSl7dGhpcy5mb250LmRpc2FibGVGb250RmFjZT0hMDtQYXJ0aWFsRXZhbHVhdG9yLmJ1aWxkRm9udFBhdGhzKHRoaXMuZm9udCx0aGlzLmZvbnQuZ2x5cGhDYWNoZVZhbHVlcyxlLHQpfX1hc3luYyBsb2FkVHlwZTNEYXRhKGUsdCxhLG49bnVsbCl7aWYodGhpcy4jaXQpcmV0dXJuIHRoaXMuI2l0O2NvbnN0e2RpY3Q6cyxmb250OnIsdHlwZTNEZXBlbmRlbmNpZXM6aX09dGhpczthc3NlcnQoci5pc1R5cGUzRm9udCwiTXVzdCBiZSBhIFR5cGUzIGZvbnQuIik7Y29uc3R7cHJvbWlzZTpvLHJlc29sdmU6bH09UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy4jaXQ9bztjb25zdCBmPWUuY2xvbmUoe2lnbm9yZUVycm9yczohMX0pLGM9bmV3IFJlZlNldChlLnR5cGUzRm9udFJlZnMpO3Mub2JqSWQmJmMucHV0KHMub2JqSWQpO2YudHlwZTNGb250UmVmcz1jO2NvbnN0IGg9cy5nZXQoIkNoYXJQcm9jcyIpLHU9cy5nZXQoIlJlc291cmNlcyIpfHx0LG09bmV3IE1hcCxbcCxkLGcsYl09ci5iYm94LHc9TWF0aC5oeXBvdChnLXAsYi1kKTtmb3IoY29uc3QgZSBvZiBoLmdldEtleXMoKSl0cnl7Y29uc3QgdD1uZXcgT3BlcmF0b3JMaXN0O2F3YWl0IGYuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06aC5nZXQoZSksdGFzazphLHJlc291cmNlczp1LG9wZXJhdG9yTGlzdDp0LHByZXZSZWZzOm59KTtzd2l0Y2godC5mbkFycmF5WzBdKXtjYXNlIGl0OnRoaXMuI290KHQsdyk7YnJlYWs7Y2FzZSBydDp3fHx0aGlzLiNsdCh0KX1tLnNldChlLHQuZ2V0SVIoKSk7Zm9yKGNvbnN0IGUgb2YgdC5kZXBlbmRlbmNpZXMpaS5hZGQoZSl9Y2F0Y2h7d2FybihgVHlwZTMgZm9udCByZXNvdXJjZSAiJHtlfSIgaXMgbm90IGF2YWlsYWJsZS5gKTttLnNldChlLChuZXcgT3BlcmF0b3JMaXN0KS5nZXRJUigpKX1yLmNoYXJQcm9jT3BlcmF0b3JMaXN0PW07aWYodGhpcy5fYmJveCl7ci5pc0NoYXJCQm94PSEwO3IuYmJveD10aGlzLl9iYm94fWwoKTtyZXR1cm4gdGhpcy4jaXR9I290KGUsYT1OYU4pe2NvbnN0IG49VXRpbC5ub3JtYWxpemVSZWN0KGUuYXJnc0FycmF5WzBdLnNsaWNlKDIpKSxzPW5bMl0tblswXSxyPW5bM10tblsxXSxpPU1hdGguaHlwb3QocyxyKTtpZigwPT09c3x8MD09PXIpe2UuZm5BcnJheS5zcGxpY2UoMCwxKTtlLmFyZ3NBcnJheS5zcGxpY2UoMCwxKX1lbHNlIGlmKDA9PT1hfHxNYXRoLnJvdW5kKGkvYSk+PTEwKXt0aGlzLl9iYm94Pz89dC5zbGljZSgpO1V0aWwucmVjdEJvdW5kaW5nQm94KC4uLm4sdGhpcy5fYmJveCl9bGV0IG89MCxsPWUubGVuZ3RoO2Zvcig7bzxsOyl7c3dpdGNoKGUuZm5BcnJheVtvXSl7Y2FzZSBpdDpicmVhaztjYXNlIG90OmNhc2UgbHQ6Y2FzZSBmdDpjYXNlIGN0OmNhc2UgaHQ6Y2FzZSB1dDpjYXNlIG10OmNhc2UgcHQ6Y2FzZSBkdDpjYXNlIGd0OmNhc2UgYnQ6Y2FzZSB3dDpjYXNlIGp0OmNhc2Ugd2U6ZS5mbkFycmF5LnNwbGljZShvLDEpO2UuYXJnc0FycmF5LnNwbGljZShvLDEpO2wtLTtjb250aW51ZTtjYXNlIGtlOmNvbnN0W3RdPWUuYXJnc0FycmF5W29dO2xldCBhPTAsbj10Lmxlbmd0aDtmb3IoO2E8bjspe2NvbnN0W2VdPXRbYV07c3dpdGNoKGUpe2Nhc2UiVFIiOmNhc2UiVFIyIjpjYXNlIkhUIjpjYXNlIkJHIjpjYXNlIkJHMiI6Y2FzZSJVQ1IiOmNhc2UiVUNSMiI6dC5zcGxpY2UoYSwxKTtuLS07Y29udGludWV9YSsrfX1vKyt9fSNsdChlKXtsZXQgYT0xO2NvbnN0IG49ZS5sZW5ndGg7Zm9yKDthPG47KXtpZihlLmZuQXJyYXlbYV09PT1YdCl7Y29uc3Qgbj1lLmFyZ3NBcnJheVthXVsyXTt0aGlzLl9iYm94Pz89dC5zbGljZSgpO1V0aWwucmVjdEJvdW5kaW5nQm94KC4uLm4sdGhpcy5fYmJveCl9YSsrfX19Y2xhc3MgU3RhdGVNYW5hZ2Vye2NvbnN0cnVjdG9yKGU9bmV3IEV2YWxTdGF0ZSl7dGhpcy5zdGF0ZT1lO3RoaXMuc3RhdGVTdGFjaz1bXX1zYXZlKCl7Y29uc3QgZT10aGlzLnN0YXRlO3RoaXMuc3RhdGVTdGFjay5wdXNoKHRoaXMuc3RhdGUpO3RoaXMuc3RhdGU9ZS5jbG9uZSgpfXJlc3RvcmUoKXtjb25zdCBlPXRoaXMuc3RhdGVTdGFjay5wb3AoKTtlJiYodGhpcy5zdGF0ZT1lKX10cmFuc2Zvcm0oZSl7dGhpcy5zdGF0ZS5jdG09VXRpbC50cmFuc2Zvcm0odGhpcy5zdGF0ZS5jdG0sZSl9fWNsYXNzIFRleHRTdGF0ZXtjdG09bmV3IEZsb2F0MzJBcnJheShnYSk7Zm9udE5hbWU9bnVsbDtmb250U2l6ZT0wO2xvYWRlZE5hbWU9bnVsbDtmb250PW51bGw7Zm9udE1hdHJpeD1uO3RleHRNYXRyaXg9Z2Euc2xpY2UoKTt0ZXh0TGluZU1hdHJpeD1nYS5zbGljZSgpO2NoYXJTcGFjaW5nPTA7d29yZFNwYWNpbmc9MDtsZWFkaW5nPTA7dGV4dEhTY2FsZT0xO3RleHRSaXNlPTA7c2V0VGV4dE1hdHJpeChlLHQsYSxuLHMscil7Y29uc3QgaT10aGlzLnRleHRNYXRyaXg7aVswXT1lO2lbMV09dDtpWzJdPWE7aVszXT1uO2lbNF09cztpWzVdPXJ9c2V0VGV4dExpbmVNYXRyaXgoZSx0LGEsbixzLHIpe2NvbnN0IGk9dGhpcy50ZXh0TGluZU1hdHJpeDtpWzBdPWU7aVsxXT10O2lbMl09YTtpWzNdPW47aVs0XT1zO2lbNV09cn10cmFuc2xhdGVUZXh0TWF0cml4KGUsdCl7Y29uc3QgYT10aGlzLnRleHRNYXRyaXg7YVs0XT1hWzBdKmUrYVsyXSp0K2FbNF07YVs1XT1hWzFdKmUrYVszXSp0K2FbNV19dHJhbnNsYXRlVGV4dExpbmVNYXRyaXgoZSx0KXtjb25zdCBhPXRoaXMudGV4dExpbmVNYXRyaXg7YVs0XT1hWzBdKmUrYVsyXSp0K2FbNF07YVs1XT1hWzFdKmUrYVszXSp0K2FbNV19Y2FycmlhZ2VSZXR1cm4oKXt0aGlzLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KDAsLXRoaXMubGVhZGluZyk7dGhpcy50ZXh0TWF0cml4PXRoaXMudGV4dExpbmVNYXRyaXguc2xpY2UoKX1jbG9uZSgpe2NvbnN0IGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHRoaXMpLHRoaXMpO2UudGV4dE1hdHJpeD10aGlzLnRleHRNYXRyaXguc2xpY2UoKTtlLnRleHRMaW5lTWF0cml4PXRoaXMudGV4dExpbmVNYXRyaXguc2xpY2UoKTtlLmZvbnRNYXRyaXg9dGhpcy5mb250TWF0cml4LnNsaWNlKCk7cmV0dXJuIGV9fWNsYXNzIEV2YWxTdGF0ZXtjdG09bmV3IEZsb2F0MzJBcnJheShnYSk7Zm9udD1udWxsO3RleHRSZW5kZXJpbmdNb2RlPVM7X2ZpbGxDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5ncmF5O19zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5ncmF5O3BhdHRlcm5GaWxsQ29sb3JTcGFjZT1udWxsO3BhdHRlcm5TdHJva2VDb2xvclNwYWNlPW51bGw7Y3VycmVudFBvaW50WD0wO2N1cnJlbnRQb2ludFk9MDtwYXRoTWluTWF4PWEuc2xpY2UoKTtwYXRoQnVmZmVyPVtdO2dldCBmaWxsQ29sb3JTcGFjZSgpe3JldHVybiB0aGlzLl9maWxsQ29sb3JTcGFjZX1zZXQgZmlsbENvbG9yU3BhY2UoZSl7dGhpcy5fZmlsbENvbG9yU3BhY2U9dGhpcy5wYXR0ZXJuRmlsbENvbG9yU3BhY2U9ZX1nZXQgc3Ryb2tlQ29sb3JTcGFjZSgpe3JldHVybiB0aGlzLl9zdHJva2VDb2xvclNwYWNlfXNldCBzdHJva2VDb2xvclNwYWNlKGUpe3RoaXMuX3N0cm9rZUNvbG9yU3BhY2U9dGhpcy5wYXR0ZXJuU3Ryb2tlQ29sb3JTcGFjZT1lfWNsb25lKHtuZXdQYXRoOmU9ITF9PXt9KXtjb25zdCB0PU9iamVjdC5jcmVhdGUodGhpcyk7aWYoZSl7dC5wYXRoQnVmZmVyPVtdO3QucGF0aE1pbk1heD1hLnNsaWNlKCl9cmV0dXJuIHR9fWNsYXNzIEV2YWx1YXRvclByZXByb2Nlc3NvcntzdGF0aWMgZ2V0IG9wTWFwKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJvcE1hcCIsT2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHt3OntpZDptZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxKOntpZDpwZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxqOntpZDpkZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxNOntpZDpnZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxkOntpZDpiZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxyaTp7aWQ6d2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0saTp7aWQ6amUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZ3M6e2lkOmtlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LHE6e2lkOnllLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFE6e2lkOnFlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGNtOntpZDp2ZSxudW1BcmdzOjYsdmFyaWFibGVBcmdzOiExfSxtOntpZDpTZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxsOntpZDpBZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxjOntpZDp4ZSxudW1BcmdzOjYsdmFyaWFibGVBcmdzOiExfSx2OntpZDpDZSxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfSx5OntpZDpJZSxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfSxoOntpZDpGZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxyZTp7aWQ6VGUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sUzp7aWQ6UmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sczp7aWQ6T2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sZjp7aWQ6QmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sRjp7aWQ6QmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sImYqIjp7aWQ6RGUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sQjp7aWQ6SGUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sIkIqIjp7aWQ6TWUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sYjp7aWQ6TmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sImIqIjp7aWQ6UGUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sbjp7aWQ6RWUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sVzp7aWQ6X2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sIlcqIjp7aWQ6emUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sQlQ6e2lkOkxlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEVUOntpZDpVZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxUYzp7aWQ6V2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVHc6e2lkOlhlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFR6OntpZDpLZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUTDp7aWQ6R2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVGY6e2lkOlZlLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LFRyOntpZDokZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUczp7aWQ6WWUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVGQ6e2lkOkplLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LFREOntpZDpRZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxUbTp7aWQ6WmUsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sIlQqIjp7aWQ6ZXQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sVGo6e2lkOnR0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRKOntpZDphdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSwiJyI6e2lkOm50LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LCciJzp7aWQ6c3QsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX0sZDA6e2lkOnJ0LG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LGQxOntpZDppdCxudW1BcmdzOjYsdmFyaWFibGVBcmdzOiExfSxDUzp7aWQ6b3QsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sY3M6e2lkOmx0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFNDOntpZDpmdCxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiEwfSxTQ046e2lkOmN0LG51bUFyZ3M6MzMsdmFyaWFibGVBcmdzOiEwfSxzYzp7aWQ6aHQsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMH0sc2NuOntpZDp1dCxudW1BcmdzOjMzLHZhcmlhYmxlQXJnczohMH0sRzp7aWQ6bXQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZzp7aWQ6cHQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sUkc6e2lkOmR0LG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9LHJnOntpZDpndCxudW1BcmdzOjMsdmFyaWFibGVBcmdzOiExfSxLOntpZDpidCxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfSxrOntpZDp3dCxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfSxzaDp7aWQ6anQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sQkk6e2lkOmt0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LElEOntpZDp5dCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxFSTp7aWQ6cXQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sRG86e2lkOnZ0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LE1QOntpZDpTdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxEUDp7aWQ6QXQsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sQk1DOntpZDp4dCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxCREM6e2lkOkN0LG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LEVNQzp7aWQ6SXQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sQlg6e2lkOkZ0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEVYOntpZDpUdCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxCTTpudWxsLEJEOm51bGwsdHJ1ZTpudWxsLGZhOm51bGwsZmFsOm51bGwsZmFsczpudWxsLGZhbHNlOm51bGwsbnU6bnVsbCxudWw6bnVsbCxudWxsOm51bGx9KSl9c3RhdGljIE1BWF9JTlZBTElEX1BBVEhfT1BTPTEwO2NvbnN0cnVjdG9yKGUsdCxhPW5ldyBTdGF0ZU1hbmFnZXIpe3RoaXMucGFyc2VyPW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihlLEV2YWx1YXRvclByZXByb2Nlc3Nvci5vcE1hcCkseHJlZjp0fSk7dGhpcy5zdGF0ZU1hbmFnZXI9YTt0aGlzLm5vblByb2Nlc3NlZEFyZ3M9W107dGhpcy5faXNQYXRoT3A9ITE7dGhpcy5fbnVtSW52YWxpZFBhdGhPUFM9MH1nZXQgc2F2ZWRTdGF0ZXNEZXB0aCgpe3JldHVybiB0aGlzLnN0YXRlTWFuYWdlci5zdGF0ZVN0YWNrLmxlbmd0aH1yZWFkKGUpe2xldCB0PWUuYXJncztmb3IoOzspe2NvbnN0IGE9dGhpcy5wYXJzZXIuZ2V0T2JqKCk7aWYoYSBpbnN0YW5jZW9mIENtZCl7Y29uc3Qgbj1hLmNtZCxzPUV2YWx1YXRvclByZXByb2Nlc3Nvci5vcE1hcFtuXTtpZighcyl7d2FybihgVW5rbm93biBjb21tYW5kICIke259Ii5gKTtjb250aW51ZX1jb25zdCByPXMuaWQsaT1zLm51bUFyZ3M7bGV0IG89bnVsbCE9PXQ/dC5sZW5ndGg6MDt0aGlzLl9pc1BhdGhPcHx8KHRoaXMuX251bUludmFsaWRQYXRoT1BTPTApO3RoaXMuX2lzUGF0aE9wPXI+PVNlJiZyPD1FZTtpZihzLnZhcmlhYmxlQXJncylvPmkmJmluZm8oYENvbW1hbmQgJHtufTogZXhwZWN0ZWQgWzAsICR7aX1dIGFyZ3MsIGJ1dCByZWNlaXZlZCAke299IGFyZ3MuYCk7ZWxzZXtpZihvIT09aSl7Y29uc3QgZT10aGlzLm5vblByb2Nlc3NlZEFyZ3M7Zm9yKDtvPmk7KXtlLnB1c2godC5zaGlmdCgpKTtvLS19Zm9yKDtvPGkmJjAhPT1lLmxlbmd0aDspe251bGw9PT10JiYodD1bXSk7dC51bnNoaWZ0KGUucG9wKCkpO28rK319aWYobzxpKXtjb25zdCBlPWBjb21tYW5kICR7bn06IGV4cGVjdGVkICR7aX0gYXJncywgYnV0IHJlY2VpdmVkICR7b30gYXJncy5gO2lmKHRoaXMuX2lzUGF0aE9wJiYrK3RoaXMuX251bUludmFsaWRQYXRoT1BTPkV2YWx1YXRvclByZXByb2Nlc3Nvci5NQVhfSU5WQUxJRF9QQVRIX09QUyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgJHtlfWApO3dhcm4oYFNraXBwaW5nICR7ZX1gKTtudWxsIT09dCYmKHQubGVuZ3RoPTApO2NvbnRpbnVlfX10aGlzLnByZXByb2Nlc3NDb21tYW5kKHIsdCk7ZS5mbj1yO2UuYXJncz10O3JldHVybiEwfWlmKGE9PT1vYSlyZXR1cm4hMTtpZihudWxsIT09YSl7bnVsbD09PXQmJih0PVtdKTt0LnB1c2goYSk7aWYodC5sZW5ndGg+MzMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJUb28gbWFueSBhcmd1bWVudHMiKX19fXByZXByb2Nlc3NDb21tYW5kKGUsdCl7c3dpdGNoKDB8ZSl7Y2FzZSB5ZTp0aGlzLnN0YXRlTWFuYWdlci5zYXZlKCk7YnJlYWs7Y2FzZSBxZTp0aGlzLnN0YXRlTWFuYWdlci5yZXN0b3JlKCk7YnJlYWs7Y2FzZSB2ZTp0aGlzLnN0YXRlTWFuYWdlci50cmFuc2Zvcm0odCl9fX1jbGFzcyBEZWZhdWx0QXBwZWFyYW5jZUV2YWx1YXRvciBleHRlbmRzIEV2YWx1YXRvclByZXByb2Nlc3Nvcntjb25zdHJ1Y3RvcihlKXtzdXBlcihuZXcgU3RyaW5nU3RyZWFtKGUpKX1wYXJzZSgpe2NvbnN0IGU9e2ZuOjAsYXJnczpbXX0sdD17Zm9udFNpemU6MCxmb250TmFtZToiIixmb250Q29sb3I6bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpfTt0cnl7Zm9yKDs7KXtlLmFyZ3MubGVuZ3RoPTA7aWYoIXRoaXMucmVhZChlKSlicmVhaztpZigwIT09dGhpcy5zYXZlZFN0YXRlc0RlcHRoKWNvbnRpbnVlO2NvbnN0e2ZuOmEsYXJnczpufT1lO3N3aXRjaCgwfGEpe2Nhc2UgVmU6Y29uc3RbZSxhXT1uO2UgaW5zdGFuY2VvZiBOYW1lJiYodC5mb250TmFtZT1lLm5hbWUpOyJudW1iZXIiPT10eXBlb2YgYSYmYT4wJiYodC5mb250U2l6ZT1hKTticmVhaztjYXNlIGd0OkNvbG9yU3BhY2VVdGlscy5yZ2IuZ2V0UmdiSXRlbShuLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBwdDpDb2xvclNwYWNlVXRpbHMuZ3JheS5nZXRSZ2JJdGVtKG4sMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIHd0OkNvbG9yU3BhY2VVdGlscy5jbXlrLmdldFJnYkl0ZW0obiwwLHQuZm9udENvbG9yLDApfX19Y2F0Y2goZSl7d2FybihgcGFyc2VEZWZhdWx0QXBwZWFyYW5jZSAtIGlnbm9yaW5nIGVycm9yczogIiR7ZX0iLmApfXJldHVybiB0fX1mdW5jdGlvbiBwYXJzZURlZmF1bHRBcHBlYXJhbmNlKGUpe3JldHVybiBuZXcgRGVmYXVsdEFwcGVhcmFuY2VFdmFsdWF0b3IoZSkucGFyc2UoKX1jbGFzcyBBcHBlYXJhbmNlU3RyZWFtRXZhbHVhdG9yIGV4dGVuZHMgRXZhbHVhdG9yUHJlcHJvY2Vzc29ye2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcihlKTt0aGlzLnN0cmVhbT1lO3RoaXMueHJlZj10O3RoaXMuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlPWE7dGhpcy5yZXNvdXJjZXM9ZS5kaWN0Py5nZXQoIlJlc291cmNlcyIpfXBhcnNlKCl7Y29uc3QgZT17Zm46MCxhcmdzOltdfTtsZXQgdD17c2NhbGVGYWN0b3I6MSxmb250U2l6ZTowLGZvbnROYW1lOiIiLGZvbnRDb2xvcjpuZXcgVWludDhDbGFtcGVkQXJyYXkoMyksZmlsbENvbG9yU3BhY2U6Q29sb3JTcGFjZVV0aWxzLmdyYXl9LGE9ITE7Y29uc3Qgbj1bXTt0cnl7Zm9yKDs7KXtlLmFyZ3MubGVuZ3RoPTA7aWYoYXx8IXRoaXMucmVhZChlKSlicmVhaztjb25zdHtmbjpzLGFyZ3M6cn09ZTtzd2l0Y2goMHxzKXtjYXNlIHllOm4ucHVzaCh7c2NhbGVGYWN0b3I6dC5zY2FsZUZhY3Rvcixmb250U2l6ZTp0LmZvbnRTaXplLGZvbnROYW1lOnQuZm9udE5hbWUsZm9udENvbG9yOnQuZm9udENvbG9yLnNsaWNlKCksZmlsbENvbG9yU3BhY2U6dC5maWxsQ29sb3JTcGFjZX0pO2JyZWFrO2Nhc2UgcWU6dD1uLnBvcCgpfHx0O2JyZWFrO2Nhc2UgWmU6Y29uc3QgZT1VdGlsLnRyYW5zZm9ybSh0aGlzLnN0YXRlTWFuYWdlci5zdGF0ZS5jdG0scik7dC5zY2FsZUZhY3Rvcio9TWF0aC5oeXBvdChlWzBdLGVbMV0pO2JyZWFrO2Nhc2UgVmU6Y29uc3RbcyxpXT1yO3MgaW5zdGFuY2VvZiBOYW1lJiYodC5mb250TmFtZT1zLm5hbWUpOyJudW1iZXIiPT10eXBlb2YgaSYmaT4wJiYodC5mb250U2l6ZT1pKTticmVhaztjYXNlIGx0OnQuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZVV0aWxzLnBhcnNlKHtjczpyWzBdLHhyZWY6dGhpcy54cmVmLHJlc291cmNlczp0aGlzLnJlc291cmNlcyxwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGdsb2JhbENvbG9yU3BhY2VDYWNoZTp0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZSxsb2NhbENvbG9yU3BhY2VDYWNoZTp0aGlzLl9sb2NhbENvbG9yU3BhY2VDYWNoZX0pO2JyZWFrO2Nhc2UgaHQ6dC5maWxsQ29sb3JTcGFjZS5nZXRSZ2JJdGVtKHIsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIGd0OkNvbG9yU3BhY2VVdGlscy5yZ2IuZ2V0UmdiSXRlbShyLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBwdDpDb2xvclNwYWNlVXRpbHMuZ3JheS5nZXRSZ2JJdGVtKHIsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIHd0OkNvbG9yU3BhY2VVdGlscy5jbXlrLmdldFJnYkl0ZW0ociwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgdHQ6Y2FzZSBhdDpjYXNlIG50OmNhc2Ugc3Q6dC5mb250U2l6ZSo9dC5zY2FsZUZhY3RvcjthPSEwfX19Y2F0Y2goZSl7d2FybihgcGFyc2VBcHBlYXJhbmNlU3RyZWFtIC0gaWdub3JpbmcgZXJyb3JzOiAiJHtlfSIuYCl9dGhpcy5zdHJlYW0ucmVzZXQoKTtkZWxldGUgdC5zY2FsZUZhY3RvcjtkZWxldGUgdC5maWxsQ29sb3JTcGFjZTtyZXR1cm4gdH1nZXQgX2xvY2FsQ29sb3JTcGFjZUNhY2hlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJfbG9jYWxDb2xvclNwYWNlQ2FjaGUiLG5ldyBMb2NhbENvbG9yU3BhY2VDYWNoZSl9Z2V0IF9wZGZGdW5jdGlvbkZhY3RvcnkoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9wZGZGdW5jdGlvbkZhY3RvcnkiLG5ldyBQREZGdW5jdGlvbkZhY3Rvcnkoe3hyZWY6dGhpcy54cmVmfSkpfX1mdW5jdGlvbiBnZXRQZGZDb2xvcihlLHQpe2lmKGVbMF09PT1lWzFdJiZlWzFdPT09ZVsyXSl7cmV0dXJuYCR7bnVtYmVyVG9TdHJpbmcoZVswXS8yNTUpfSAke3Q/ImciOiJHIn1gfXJldHVybiBBcnJheS5mcm9tKGUsZT0+bnVtYmVyVG9TdHJpbmcoZS8yNTUpKS5qb2luKCIgIikrIiAiKyh0PyJyZyI6IlJHIil9Y2xhc3MgRmFrZVVuaWNvZGVGb250e3N0YXRpYyNmdD0xO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy54cmVmPWU7dGhpcy53aWR0aHM9bnVsbDt0aGlzLmZpcnN0Q2hhcj0xLzA7dGhpcy5sYXN0Q2hhcj0tMS8wO3RoaXMuZm9udEZhbWlseT10O2NvbnN0IGE9bmV3IE9mZnNjcmVlbkNhbnZhcygxLDEpO3RoaXMuY3R4TWVhc3VyZT1hLmdldENvbnRleHQoIjJkIix7d2lsbFJlYWRGcmVxdWVudGx5OiEwfSk7dGhpcy5mb250TmFtZT1OYW1lLmdldChgSW52YWxpZFBERmpzRm9udF8ke3R9XyR7RmFrZVVuaWNvZGVGb250LiNmdCsrfWApfWdldCBmb250RGVzY3JpcHRvclJlZigpe2lmKCFGYWtlVW5pY29kZUZvbnQuX2ZvbnREZXNjcmlwdG9yUmVmKXtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZik7ZS5zZXRJZk5hbWUoIlR5cGUiLCJGb250RGVzY3JpcHRvciIpO2Uuc2V0KCJGb250TmFtZSIsdGhpcy5mb250TmFtZSk7ZS5zZXQoIkZvbnRGYW1pbHkiLCJNeXJpYWRQcm8gUmVndWxhciIpO2Uuc2V0KCJGb250QkJveCIsWzAsMCwwLDBdKTtlLnNldElmTmFtZSgiRm9udFN0cmV0Y2giLCJOb3JtYWwiKTtlLnNldCgiRm9udFdlaWdodCIsNDAwKTtlLnNldCgiSXRhbGljQW5nbGUiLDApO0Zha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWY9dGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9cmV0dXJuIEZha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWZ9Z2V0IGRlc2NlbmRhbnRGb250UmVmKCl7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJCYXNlRm9udCIsdGhpcy5mb250TmFtZSk7ZS5zZXRJZk5hbWUoIlR5cGUiLCJGb250Iik7ZS5zZXRJZk5hbWUoIlN1YnR5cGUiLCJDSURGb250VHlwZTAiKTtlLnNldElmTmFtZSgiQ0lEVG9HSURNYXAiLCJJZGVudGl0eSIpO2Uuc2V0KCJGaXJzdENoYXIiLHRoaXMuZmlyc3RDaGFyKTtlLnNldCgiTGFzdENoYXIiLHRoaXMubGFzdENoYXIpO2Uuc2V0KCJGb250RGVzY3JpcHRvciIsdGhpcy5mb250RGVzY3JpcHRvclJlZik7ZS5zZXQoIkRXIiwxZTMpO2NvbnN0IHQ9W10sYT1bLi4udGhpcy53aWR0aHNdLnNvcnQoKTtsZXQgbj1udWxsLHM9bnVsbDtmb3IoY29uc3RbZSxyXW9mIGEpaWYobilpZihlPT09bitzLmxlbmd0aClzLnB1c2gocik7ZWxzZXt0LnB1c2gobixzKTtuPWU7cz1bcl19ZWxzZXtuPWU7cz1bcl19biYmdC5wdXNoKG4scyk7ZS5zZXQoIlciLHQpO2NvbnN0IHI9bmV3IERpY3QodGhpcy54cmVmKTtyLnNldCgiT3JkZXJpbmciLCJJZGVudGl0eSIpO3Iuc2V0KCJSZWdpc3RyeSIsIkFkb2JlIik7ci5zZXQoIlN1cHBsZW1lbnQiLDApO2Uuc2V0KCJDSURTeXN0ZW1JbmZvIixyKTtyZXR1cm4gdGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9Z2V0IGJhc2VGb250UmVmKCl7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJCYXNlRm9udCIsdGhpcy5mb250TmFtZSk7ZS5zZXRJZk5hbWUoIlR5cGUiLCJGb250Iik7ZS5zZXRJZk5hbWUoIlN1YnR5cGUiLCJUeXBlMCIpO2Uuc2V0SWZOYW1lKCJFbmNvZGluZyIsIklkZW50aXR5LUgiKTtlLnNldCgiRGVzY2VuZGFudEZvbnRzIixbdGhpcy5kZXNjZW5kYW50Rm9udFJlZl0pO2Uuc2V0SWZOYW1lKCJUb1VuaWNvZGUiLCJJZGVudGl0eS1IIik7cmV0dXJuIHRoaXMueHJlZi5nZXROZXdQZXJzaXN0ZW50UmVmKGUpfWdldCByZXNvdXJjZXMoKXtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZiksdD1uZXcgRGljdCh0aGlzLnhyZWYpO3Quc2V0KHRoaXMuZm9udE5hbWUubmFtZSx0aGlzLmJhc2VGb250UmVmKTtlLnNldCgiRm9udCIsdCk7cmV0dXJuIGV9X2NyZWF0ZUNvbnRleHQoKXt0aGlzLndpZHRocz1uZXcgTWFwO3RoaXMuY3R4TWVhc3VyZS5mb250PWAxMDAwcHggJHt0aGlzLmZvbnRGYW1pbHl9YDtyZXR1cm4gdGhpcy5jdHhNZWFzdXJlfWNyZWF0ZUZvbnRSZXNvdXJjZXMoZSl7Y29uc3QgdD10aGlzLl9jcmVhdGVDb250ZXh0KCk7Zm9yKGNvbnN0IGEgb2YgZS5zcGxpdCgvXHJcbj98XG4vKSlmb3IoY29uc3QgZSBvZiBhLnNwbGl0KCIiKSl7Y29uc3QgYT1lLmNoYXJDb2RlQXQoMCk7aWYodGhpcy53aWR0aHMuaGFzKGEpKWNvbnRpbnVlO2NvbnN0IG49dC5tZWFzdXJlVGV4dChlKSxzPU1hdGguY2VpbChuLndpZHRoKTt0aGlzLndpZHRocy5zZXQoYSxzKTt0aGlzLmZpcnN0Q2hhcj1NYXRoLm1pbihhLHRoaXMuZmlyc3RDaGFyKTt0aGlzLmxhc3RDaGFyPU1hdGgubWF4KGEsdGhpcy5sYXN0Q2hhcil9cmV0dXJuIHRoaXMucmVzb3VyY2VzfXN0YXRpYyBnZXRGaXJzdFBvc2l0aW9uSW5mbyhlLHQsYSl7Y29uc3RbbixzLHIsaV09ZTtsZXQgbz1yLW4sbD1pLXM7dCUxODAhPTAmJihbbyxsXT1bbCxvXSk7Y29uc3QgZj0xLjM1KmE7cmV0dXJue2Nvb3JkczpbMCxsKy4zNSphLWZdLGJib3g6WzAsMCxvLGxdLG1hdHJpeDowIT09dD9nZXRSb3RhdGlvbk1hdHJpeCh0LGwsZik6dm9pZCAwfX1jcmVhdGVBcHBlYXJhbmNlKGUsdCxhLG4scyxyKXtjb25zdCBpPXRoaXMuX2NyZWF0ZUNvbnRleHQoKSxvPVtdO2xldCBsPS0xLzA7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvXHJcbj98XG4vKSl7by5wdXNoKHQpO2NvbnN0IGU9aS5tZWFzdXJlVGV4dCh0KS53aWR0aDtsPU1hdGgubWF4KGwsZSk7Zm9yKGNvbnN0IGUgb2YgY29kZVBvaW50SXRlcih0KSl7Y29uc3QgdD1TdHJpbmcuZnJvbUNvZGVQb2ludChlKTtsZXQgYT10aGlzLndpZHRocy5nZXQoZSk7aWYodm9pZCAwPT09YSl7Y29uc3Qgbj1pLm1lYXN1cmVUZXh0KHQpO2E9TWF0aC5jZWlsKG4ud2lkdGgpO3RoaXMud2lkdGhzLnNldChlLGEpO3RoaXMuZmlyc3RDaGFyPU1hdGgubWluKGUsdGhpcy5maXJzdENoYXIpO3RoaXMubGFzdENoYXI9TWF0aC5tYXgoZSx0aGlzLmxhc3RDaGFyKX19fWwqPW4vMWUzO2NvbnN0W2YsYyxoLHVdPXQ7bGV0IG09aC1mLHA9dS1jO2ElMTgwIT0wJiYoW20scF09W3AsbV0pO2NvbnN0IGQ9bD5tP20vbDoxO2xldCBnPTE7Y29uc3QgYj0xLjM1Km4sdz0uMzUqbixqPWIqby5sZW5ndGg7aj5wJiYoZz1wL2opO2NvbnN0IGs9bipNYXRoLm1pbihkLGcpLHk9WyJxIixgMCAwICR7bnVtYmVyVG9TdHJpbmcobSl9ICR7bnVtYmVyVG9TdHJpbmcocCl9IHJlIFcgbmAsIkJUIixgMSAwIDAgMSAwICR7bnVtYmVyVG9TdHJpbmcocCt3KX0gVG0gMCBUYyAke2dldFBkZkNvbG9yKHMsITApfWAsYC8ke3RoaXMuZm9udE5hbWUubmFtZX0gJHtudW1iZXJUb1N0cmluZyhrKX0gVGZgXSx7cmVzb3VyY2VzOnF9PXRoaXM7aWYoMSE9PShyPSJudW1iZXIiPT10eXBlb2YgciYmcj49MCYmcjw9MT9yOjEpKXt5LnB1c2goIi9SMCBncyIpO2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKSx0PW5ldyBEaWN0KHRoaXMueHJlZik7dC5zZXQoImNhIixyKTt0LnNldCgiQ0EiLHIpO3Quc2V0SWZOYW1lKCJUeXBlIiwiRXh0R1N0YXRlIik7ZS5zZXQoIlIwIix0KTtxLnNldCgiRXh0R1N0YXRlIixlKX1jb25zdCB2PW51bWJlclRvU3RyaW5nKGIpO2Zvcihjb25zdCBlIG9mIG8peS5wdXNoKGAwIC0ke3Z9IFRkIDwke3N0cmluZ1RvVVRGMTZIZXhTdHJpbmcoZSl9PiBUamApO3kucHVzaCgiRVQiLCJRIik7Y29uc3QgUz15LmpvaW4oIlxuIikseD1uZXcgRGljdCh0aGlzLnhyZWYpO3guc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRm9ybSIpO3guc2V0SWZOYW1lKCJUeXBlIiwiWE9iamVjdCIpO3guc2V0KCJCQm94IixbMCwwLG0scF0pO3guc2V0KCJMZW5ndGgiLFMubGVuZ3RoKTt4LnNldCgiUmVzb3VyY2VzIixxKTtpZihhKXtjb25zdCBlPWdldFJvdGF0aW9uTWF0cml4KGEsbSxwKTt4LnNldCgiTWF0cml4IixlKX1yZXR1cm4gbmV3IFN0cmluZ1N0cmVhbShTLHgpfX1jb25zdCBXaT1bIm0vZCIsIm0vZC95eSIsIm1tL2RkL3l5IiwibW0veXkiLCJkLW1tbSIsImQtbW1tLXl5IiwiZGQtbW1tLXl5IiwieXktbW0tZGQiLCJtbW0teXkiLCJtbW1tLXl5IiwibW1tIGQsIHl5eXkiLCJtbW1tIGQsIHl5eXkiLCJtL2QveXkgaDpNTSB0dCIsIm0vZC95eSBISDpNTSJdLFhpPVsiSEg6TU0iLCJoOk1NIHR0IiwiSEg6TU06c3MiLCJoOk1NOnNzIHR0Il07Y2xhc3MgTmFtZU9yTnVtYmVyVHJlZXtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5yb290PWU7dGhpcy54cmVmPXQ7dGhpcy5fdHlwZT1hfWdldEFsbChlPSExKXtjb25zdCB0PW5ldyBNYXA7aWYoIXRoaXMucm9vdClyZXR1cm4gdDtjb25zdCBhPXRoaXMueHJlZixuPW5ldyBSZWZTZXQ7dGhpcy5yb290IGluc3RhbmNlb2YgUmVmJiZuLnB1dCh0aGlzLnJvb3QpO2NvbnN0IHM9W3RoaXMucm9vdF07Zm9yKGNvbnN0IHIgb2Ygcyl7Y29uc3QgaT1hLmZldGNoSWZSZWYocik7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7aWYoaS5oYXMoIktpZHMiKSl7Y29uc3QgZT1pLmdldCgiS2lkcyIpO2lmKCFBcnJheS5pc0FycmF5KGUpKWNvbnRpbnVlO2Zvcihjb25zdCB0IG9mIGUpe2lmKHQgaW5zdGFuY2VvZiBSZWYpe2lmKG4uaGFzKHQpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgRHVwbGljYXRlIGVudHJ5IGluICIke3RoaXMuX3R5cGV9IiB0cmVlLmApO24ucHV0KHQpfXMucHVzaCh0KX1jb250aW51ZX1jb25zdCBvPWkuZ2V0KHRoaXMuX3R5cGUpO2lmKEFycmF5LmlzQXJyYXkobykpZm9yKGxldCBuPTAscz1vLmxlbmd0aDtuPHM7bis9Mil0LnNldChlP29bbl06YS5mZXRjaElmUmVmKG9bbl0pLGU/b1tuKzFdOmEuZmV0Y2hJZlJlZihvW24rMV0pKX1yZXR1cm4gdH1nZXRSYXcoZSl7aWYoIXRoaXMucm9vdClyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMueHJlZjtsZXQgYT10LmZldGNoSWZSZWYodGhpcy5yb290KSxuPTA7Zm9yKDthLmhhcygiS2lkcyIpOyl7aWYoKytuPjEwKXt3YXJuKGBTZWFyY2ggZGVwdGggbGltaXQgcmVhY2hlZCBmb3IgIiR7dGhpcy5fdHlwZX0iIHRyZWUuYCk7cmV0dXJuIG51bGx9Y29uc3Qgcz1hLmdldCgiS2lkcyIpO2lmKCFBcnJheS5pc0FycmF5KHMpKXJldHVybiBudWxsO2xldCByPTAsaT1zLmxlbmd0aC0xO2Zvcig7cjw9aTspe2NvbnN0IG49citpPj4xLG89dC5mZXRjaElmUmVmKHNbbl0pLGw9by5nZXQoIkxpbWl0cyIpO2lmKGU8dC5mZXRjaElmUmVmKGxbMF0pKWk9bi0xO2Vsc2V7aWYoIShlPnQuZmV0Y2hJZlJlZihsWzFdKSkpe2E9bzticmVha31yPW4rMX19aWYocj5pKXJldHVybiBudWxsfWNvbnN0IHM9YS5nZXQodGhpcy5fdHlwZSk7aWYoQXJyYXkuaXNBcnJheShzKSl7bGV0IGE9MCxuPXMubGVuZ3RoLTI7Zm9yKDthPD1uOyl7Y29uc3Qgcj1hK24+PjEsaT1yKygxJnIpLG89dC5mZXRjaElmUmVmKHNbaV0pO2lmKGU8byluPWktMjtlbHNle2lmKCEoZT5vKSlyZXR1cm4gc1tpKzFdO2E9aSsyfX19cmV0dXJuIG51bGx9Z2V0KGUpe3JldHVybiB0aGlzLnhyZWYuZmV0Y2hJZlJlZih0aGlzLmdldFJhdyhlKSl9fWNsYXNzIE5hbWVUcmVlIGV4dGVuZHMgTmFtZU9yTnVtYmVyVHJlZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwiTmFtZXMiKX19Y2xhc3MgTnVtYmVyVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk51bXMiKX19ZnVuY3Rpb24gY2xlYXJHbG9iYWxDYWNoZXMoKXshZnVuY3Rpb24gY2xlYXJQYXR0ZXJuQ2FjaGVzKCl7SmE/LmNsZWFyKCl9KCk7IWZ1bmN0aW9uIGNsZWFyUHJpbWl0aXZlQ2FjaGVzKCl7bGEuY2xlYXIoKTtmYS5jbGVhcigpO2NhLmNsZWFyKCl9KCk7IWZ1bmN0aW9uIGNsZWFyVW5pY29kZUNhY2hlcygpe3FuLmNsZWFyKCl9KCk7V2FzbUltYWdlLmNsZWFudXAoKX1jbGFzcyBGaWxlU3BlY3tjb25zdHJ1Y3RvcihlKXtpZihlIGluc3RhbmNlb2YgRGljdCl7dGhpcy5yb290PWU7ZS5oYXMoIlJGIikmJndhcm4oIlJlbGF0ZWQgZmlsZSBzcGVjaWZpY2F0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCIpfX1nZXQgZmlsZW5hbWUoKXtjb25zdCBlPUZpbGVTcGVjLnBpY2tQbGF0Zm9ybUl0ZW0odGhpcy5yb290KTtyZXR1cm4gZSYmInN0cmluZyI9PXR5cGVvZiBlP3N0cmluZ1RvUERGU3RyaW5nKGUsITApLnJlcGxhY2VBbGwoIlxcXFwiLCJcXCIpLnJlcGxhY2VBbGwoIlxcLyIsIi8iKS5yZXBsYWNlQWxsKCJcXCIsIi8iKToiIn1nZXQgZGVzY3JpcHRpb24oKXtjb25zdCBlPXRoaXMucm9vdD8uZ2V0KCJEZXNjIik7cmV0dXJuIGUmJiJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb1BERlN0cmluZyhlKToiIn1nZXQgc2VyaWFsaXphYmxlKCl7Y29uc3R7ZmlsZW5hbWU6ZSxkZXNjcmlwdGlvbjp0fT10aGlzO3JldHVybntyYXdGaWxlbmFtZTplLGZpbGVuYW1lOihhPWUsYS5zdWJzdHJpbmcoYS5sYXN0SW5kZXhPZigiLyIpKzEpKXx8InVubmFtZWQiLGRlc2NyaXB0aW9uOnR9O3ZhciBhfXN0YXRpYyBwaWNrUGxhdGZvcm1JdGVtKGUsdD0hMSl7aWYoZSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0IGEgb2ZbIlVGIiwiRiIsIlVuaXgiLCJNYWMiLCJET1MiXSlpZihlLmhhcyhhKSlyZXR1cm4gdD9lLmdldFJhdyhhKTplLmdldChhKTtyZXR1cm4gbnVsbH1zdGF0aWMgaGFzRW1iZWRkZWRGaWxlKGUpe3JldHVybiB0aGlzLnBpY2tQbGF0Zm9ybUl0ZW0oZS5nZXQoIkVGIikpaW5zdGFuY2VvZiBCYXNlU3RyZWFtfXN0YXRpYyByZWFkQ29udGVudChlKXtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMucGlja1BsYXRmb3JtSXRlbShlLmdldCgiRUYiKSk7aWYoISh0IGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpe3dhcm4oIkVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbiBwb2ludHMgdG8gbm9uLWV4aXN0aW5nL2ludmFsaWQgY29udGVudCIpO3JldHVybiBudWxsfXJldHVybiB0aGlzLnJlYWRTdHJlYW1Db250ZW50KHQpfXN0YXRpYyByZWFkU3RyZWFtQ29udGVudChlKXtjb25zdCB0PWUuZGljdD8ueHJlZj8uZW5jcnlwdDtpZihudWxsPT09dD8uZW5jcnlwdGlvbktleSl0aHJvdyBuZXcgUGFzc3dvcmRFeGNlcHRpb24oIk5vIHBhc3N3b3JkIGdpdmVuIixlYSk7cmV0dXJuIGUuZ2V0Qnl0ZXMoKX19Y29uc3QgS2k9MCxHaT0tMixWaT0tMywkaT0tNCxZaT0tNSxKaT0tNixRaT0tOTtmdW5jdGlvbiBpc1doaXRlc3BhY2UoZSx0KXtjb25zdCBhPWVbdF07cmV0dXJuIiAiPT09YXx8IlxuIj09PWF8fCJcciI9PT1hfHwiXHQiPT09YX1jbGFzcyBYTUxQYXJzZXJCYXNle3N0YXRpYyBnZXQgX2VudGl0eVJlZ2V4KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJfZW50aXR5UmVnZXgiLC8mKD86I3goW147Jl0rKXwjKFteOyZdKyl8KFteOyZdKykpOy9nKX1fcmVzb2x2ZUVudGl0aWVzKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoWE1MUGFyc2VyQmFzZS5fZW50aXR5UmVnZXgsKGUsdCxhLG4pPT57aWYodHx8YSl7Y29uc3Qgbj10P3BhcnNlSW50KHQsMTYpOnBhcnNlSW50KGEsMTApO3JldHVybiBuPj0wJiZuPD0xMTE0MTExP1N0cmluZy5mcm9tQ29kZVBvaW50KG4pOmV9c3dpdGNoKG4pe2Nhc2UibHQiOnJldHVybiI8IjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlInF1b3QiOnJldHVybiciJztjYXNlImFwb3MiOnJldHVybiInIn1yZXR1cm4gdGhpcy5vblJlc29sdmVFbnRpdHkobil9KX1fcGFyc2VDb250ZW50KGUsdCl7Y29uc3QgYT1bXTtsZXQgbj10O2Z1bmN0aW9uIHNraXBXcygpe2Zvcig7bjxlLmxlbmd0aCYmaXNXaGl0ZXNwYWNlKGUsbik7KSsrbn1mb3IoO248ZS5sZW5ndGgmJiFpc1doaXRlc3BhY2UoZSxuKSYmIj4iIT09ZVtuXSYmIi8iIT09ZVtuXTspKytuO2NvbnN0IHM9ZS5zdWJzdHJpbmcodCxuKTtza2lwV3MoKTtmb3IoO248ZS5sZW5ndGgmJiI+IiE9PWVbbl0mJiIvIiE9PWVbbl0mJiI/IiE9PWVbbl07KXtza2lwV3MoKTtsZXQgdD0iIixzPSIiO2Zvcig7bjxlLmxlbmd0aCYmIWlzV2hpdGVzcGFjZShlLG4pJiYiPSIhPT1lW25dOyl7dCs9ZVtuXTsrK259c2tpcFdzKCk7aWYoIj0iIT09ZVtuXSlyZXR1cm4gbnVsbDsrK247c2tpcFdzKCk7Y29uc3Qgcj1lW25dO2lmKCciJyE9PXImJiInIiE9PXIpcmV0dXJuIG51bGw7Y29uc3QgaT1lLmluZGV4T2YociwrK24pO2lmKGk8MClyZXR1cm4gbnVsbDtzPWUuc3Vic3RyaW5nKG4saSk7YS5wdXNoKHtuYW1lOnQsdmFsdWU6dGhpcy5fcmVzb2x2ZUVudGl0aWVzKHMpfSk7bj1pKzE7c2tpcFdzKCl9cmV0dXJue25hbWU6cyxhdHRyaWJ1dGVzOmEscGFyc2VkOm4tdH19X3BhcnNlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGUsdCl7bGV0IGE9dDtmb3IoO2E8ZS5sZW5ndGgmJiFpc1doaXRlc3BhY2UoZSxhKSYmIj4iIT09ZVthXSYmIj8iIT09ZVthXSYmIi8iIT09ZVthXTspKythO2NvbnN0IG49ZS5zdWJzdHJpbmcodCxhKTshZnVuY3Rpb24gc2tpcFdzKCl7Zm9yKDthPGUubGVuZ3RoJiZpc1doaXRlc3BhY2UoZSxhKTspKythfSgpO2NvbnN0IHM9YTtmb3IoO2E8ZS5sZW5ndGgmJigiPyIhPT1lW2FdfHwiPiIhPT1lW2ErMV0pOykrK2E7cmV0dXJue25hbWU6bix2YWx1ZTplLnN1YnN0cmluZyhzLGEpLHBhcnNlZDphLXR9fXBhcnNlWG1sKGUpe2xldCB0PTA7Zm9yKDt0PGUubGVuZ3RoOyl7bGV0IGE9dDtpZigiPCI9PT1lW3RdKXsrK2E7bGV0IHQ7c3dpdGNoKGVbYV0pe2Nhc2UiLyI6KythO3Q9ZS5pbmRleE9mKCI+IixhKTtpZih0PDApe3RoaXMub25FcnJvcihRaSk7cmV0dXJufXRoaXMub25FbmRFbGVtZW50KGUuc3Vic3RyaW5nKGEsdCkpO2E9dCsxO2JyZWFrO2Nhc2UiPyI6KythO2NvbnN0IG49dGhpcy5fcGFyc2VQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oZSxhKTtpZigiPz4iIT09ZS5zdWJzdHJpbmcoYStuLnBhcnNlZCxhK24ucGFyc2VkKzIpKXt0aGlzLm9uRXJyb3IoVmkpO3JldHVybn10aGlzLm9uUGkobi5uYW1lLG4udmFsdWUpO2ErPW4ucGFyc2VkKzI7YnJlYWs7Y2FzZSIhIjppZigiLS0iPT09ZS5zdWJzdHJpbmcoYSsxLGErMykpe3Q9ZS5pbmRleE9mKCItLVx4M2UiLGErMyk7aWYodDwwKXt0aGlzLm9uRXJyb3IoWWkpO3JldHVybn10aGlzLm9uQ29tbWVudChlLnN1YnN0cmluZyhhKzMsdCkpO2E9dCszfWVsc2UgaWYoIltDREFUQVsiPT09ZS5zdWJzdHJpbmcoYSsxLGErOCkpe3Q9ZS5pbmRleE9mKCJdXT4iLGErOCk7aWYodDwwKXt0aGlzLm9uRXJyb3IoR2kpO3JldHVybn10aGlzLm9uQ2RhdGEoZS5zdWJzdHJpbmcoYSs4LHQpKTthPXQrM31lbHNle2lmKCJET0NUWVBFIiE9PWUuc3Vic3RyaW5nKGErMSxhKzgpKXt0aGlzLm9uRXJyb3IoSmkpO3JldHVybn17Y29uc3Qgbj1lLmluZGV4T2YoIlsiLGErOCk7bGV0IHM9ITE7dD1lLmluZGV4T2YoIj4iLGErOCk7aWYodDwwKXt0aGlzLm9uRXJyb3IoJGkpO3JldHVybn1pZihuPjAmJnQ+bil7dD1lLmluZGV4T2YoIl0+IixhKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKCRpKTtyZXR1cm59cz0hMH1jb25zdCByPWUuc3Vic3RyaW5nKGErOCx0KyhzPzE6MCkpO3RoaXMub25Eb2N0eXBlKHIpO2E9dCsocz8yOjEpfX1icmVhaztkZWZhdWx0OmNvbnN0IHM9dGhpcy5fcGFyc2VDb250ZW50KGUsYSk7aWYobnVsbD09PXMpe3RoaXMub25FcnJvcihKaSk7cmV0dXJufWxldCByPSExO2lmKCIvPiI9PT1lLnN1YnN0cmluZyhhK3MucGFyc2VkLGErcy5wYXJzZWQrMikpcj0hMDtlbHNlIGlmKCI+IiE9PWUuc3Vic3RyaW5nKGErcy5wYXJzZWQsYStzLnBhcnNlZCsxKSl7dGhpcy5vbkVycm9yKFFpKTtyZXR1cm59dGhpcy5vbkJlZ2luRWxlbWVudChzLm5hbWUscy5hdHRyaWJ1dGVzLHIpO2ErPXMucGFyc2VkKyhyPzI6MSl9fWVsc2V7Zm9yKDthPGUubGVuZ3RoJiYiPCIhPT1lW2FdOylhKys7Y29uc3Qgbj1lLnN1YnN0cmluZyh0LGEpO3RoaXMub25UZXh0KHRoaXMuX3Jlc29sdmVFbnRpdGllcyhuKSl9dD1hfX1vblJlc29sdmVFbnRpdHkoZSl7cmV0dXJuYCYke2V9O2B9b25QaShlLHQpe31vbkNvbW1lbnQoZSl7fW9uQ2RhdGEoZSl7fW9uRG9jdHlwZShlKXt9b25UZXh0KGUpe31vbkJlZ2luRWxlbWVudChlLHQsYSl7fW9uRW5kRWxlbWVudChlKXt9b25FcnJvcihlKXt9fWNsYXNzIFNpbXBsZURPTU5vZGV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLm5vZGVOYW1lPWU7dGhpcy5ub2RlVmFsdWU9dDtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywicGFyZW50Tm9kZSIse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KX1nZXQgZmlyc3RDaGlsZCgpe3JldHVybiB0aGlzLmNoaWxkTm9kZXM/LlswXX1nZXQgbmV4dFNpYmxpbmcoKXtjb25zdCBlPXRoaXMucGFyZW50Tm9kZS5jaGlsZE5vZGVzO2lmKCFlKXJldHVybjtjb25zdCB0PWUuaW5kZXhPZih0aGlzKTtyZXR1cm4tMT09PXQ/dm9pZCAwOmVbdCsxXX1nZXQgdGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzP3RoaXMuY2hpbGROb2Rlcy5tYXAoZT0+ZS50ZXh0Q29udGVudCkuam9pbigiIik6dGhpcy5ub2RlVmFsdWV8fCIifWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzLmNoaWxkTm9kZXN8fFtdfWhhc0NoaWxkTm9kZXMoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzPy5sZW5ndGg+MH1zZWFyY2hOb2RlKGUsdCl7aWYodD49ZS5sZW5ndGgpcmV0dXJuIHRoaXM7Y29uc3QgYT1lW3RdO2lmKGEubmFtZS5zdGFydHNXaXRoKCIjIikmJnQ8ZS5sZW5ndGgtMSlyZXR1cm4gdGhpcy5zZWFyY2hOb2RlKGUsdCsxKTtjb25zdCBuPVtdO2xldCBzPXRoaXM7Zm9yKDs7KXtpZihhLm5hbWU9PT1zLm5vZGVOYW1lKXtpZigwIT09YS5wb3Mpe2lmKDA9PT1uLmxlbmd0aClyZXR1cm4gbnVsbDt7Y29uc3Rbcl09bi5wb3AoKTtsZXQgaT0wO2Zvcihjb25zdCBuIG9mIHIuY2hpbGROb2RlcylpZihhLm5hbWU9PT1uLm5vZGVOYW1lKXtpZihpPT09YS5wb3MpcmV0dXJuIG4uc2VhcmNoTm9kZShlLHQrMSk7aSsrfXJldHVybiBzLnNlYXJjaE5vZGUoZSx0KzEpfX17Y29uc3QgYT1zLnNlYXJjaE5vZGUoZSx0KzEpO2lmKG51bGwhPT1hKXJldHVybiBhfX1pZihzLmNoaWxkTm9kZXM/Lmxlbmd0aD4wKXtuLnB1c2goW3MsMF0pO3M9cy5jaGlsZE5vZGVzWzBdfWVsc2V7aWYoMD09PW4ubGVuZ3RoKXJldHVybiBudWxsO2Zvcig7MCE9PW4ubGVuZ3RoOyl7Y29uc3RbZSx0XT1uLnBvcCgpLGE9dCsxO2lmKGE8ZS5jaGlsZE5vZGVzLmxlbmd0aCl7bi5wdXNoKFtlLGFdKTtzPWUuY2hpbGROb2Rlc1thXTticmVha319aWYoMD09PW4ubGVuZ3RoKXJldHVybiBudWxsfX19ZHVtcChlKXtpZigiI3RleHQiIT09dGhpcy5ub2RlTmFtZSl7ZS5wdXNoKGA8JHt0aGlzLm5vZGVOYW1lfWApO2lmKHRoaXMuYXR0cmlidXRlcylmb3IoY29uc3QgdCBvZiB0aGlzLmF0dHJpYnV0ZXMpZS5wdXNoKGAgJHt0Lm5hbWV9PSIke2VuY29kZVRvWG1sU3RyaW5nKHQudmFsdWUpfSJgKTtpZih0aGlzLmhhc0NoaWxkTm9kZXMoKSl7ZS5wdXNoKCI+Iik7Zm9yKGNvbnN0IHQgb2YgdGhpcy5jaGlsZE5vZGVzKXQuZHVtcChlKTtlLnB1c2goYDwvJHt0aGlzLm5vZGVOYW1lfT5gKX1lbHNlIHRoaXMubm9kZVZhbHVlP2UucHVzaChgPiR7ZW5jb2RlVG9YbWxTdHJpbmcodGhpcy5ub2RlVmFsdWUpfTwvJHt0aGlzLm5vZGVOYW1lfT5gKTplLnB1c2goIi8+Iil9ZWxzZSBlLnB1c2goZW5jb2RlVG9YbWxTdHJpbmcodGhpcy5ub2RlVmFsdWUpKX19Y2xhc3MgU2ltcGxlWE1MUGFyc2VyIGV4dGVuZHMgWE1MUGFyc2VyQmFzZXtjb25zdHJ1Y3Rvcih7aGFzQXR0cmlidXRlczplPSExLGxvd2VyQ2FzZU5hbWU6dD0hMX0pe3N1cGVyKCk7dGhpcy5fY3VycmVudEZyYWdtZW50PW51bGw7dGhpcy5fc3RhY2s9bnVsbDt0aGlzLl9lcnJvckNvZGU9S2k7dGhpcy5faGFzQXR0cmlidXRlcz1lO3RoaXMuX2xvd2VyQ2FzZU5hbWU9dH1wYXJzZUZyb21TdHJpbmcoZSl7dGhpcy5fY3VycmVudEZyYWdtZW50PVtdO3RoaXMuX3N0YWNrPVtdO3RoaXMuX2Vycm9yQ29kZT1LaTt0aGlzLnBhcnNlWG1sKGUpO2lmKHRoaXMuX2Vycm9yQ29kZSE9PUtpKXJldHVybjtjb25zdFt0XT10aGlzLl9jdXJyZW50RnJhZ21lbnQ7cmV0dXJuIHQ/e2RvY3VtZW50RWxlbWVudDp0fTp2b2lkIDB9b25UZXh0KGUpe2lmKGZ1bmN0aW9uIGlzV2hpdGVzcGFjZVN0cmluZyhlKXtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0KyspaWYoIWlzV2hpdGVzcGFjZShlLHQpKXJldHVybiExO3JldHVybiEwfShlKSlyZXR1cm47Y29uc3QgdD1uZXcgU2ltcGxlRE9NTm9kZSgiI3RleHQiLGUpO3RoaXMuX2N1cnJlbnRGcmFnbWVudC5wdXNoKHQpfW9uQ2RhdGEoZSl7Y29uc3QgdD1uZXcgU2ltcGxlRE9NTm9kZSgiI3RleHQiLGUpO3RoaXMuX2N1cnJlbnRGcmFnbWVudC5wdXNoKHQpfW9uQmVnaW5FbGVtZW50KGUsdCxhKXt0aGlzLl9sb3dlckNhc2VOYW1lJiYoZT1lLnRvTG93ZXJDYXNlKCkpO2NvbnN0IG49bmV3IFNpbXBsZURPTU5vZGUoZSk7bi5jaGlsZE5vZGVzPVtdO3RoaXMuX2hhc0F0dHJpYnV0ZXMmJihuLmF0dHJpYnV0ZXM9dCk7dGhpcy5fY3VycmVudEZyYWdtZW50LnB1c2gobik7aWYoIWEpe3RoaXMuX3N0YWNrLnB1c2godGhpcy5fY3VycmVudEZyYWdtZW50KTt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9bi5jaGlsZE5vZGVzfX1vbkVuZEVsZW1lbnQoZSl7dGhpcy5fY3VycmVudEZyYWdtZW50PXRoaXMuX3N0YWNrLnBvcCgpfHxbXTtjb25zdCB0PXRoaXMuX2N1cnJlbnRGcmFnbWVudC5hdCgtMSk7aWYoIXQpcmV0dXJuIG51bGw7Zm9yKGNvbnN0IGUgb2YgdC5jaGlsZE5vZGVzKWUucGFyZW50Tm9kZT10O3JldHVybiB0fW9uRXJyb3IoZSl7dGhpcy5fZXJyb3JDb2RlPWV9fWNsYXNzIE1ldGFkYXRhUGFyc2Vye2NvbnN0cnVjdG9yKGUpe2U9dGhpcy5fcmVwYWlyKGUpO2NvbnN0IHQ9bmV3IFNpbXBsZVhNTFBhcnNlcih7bG93ZXJDYXNlTmFtZTohMH0pLnBhcnNlRnJvbVN0cmluZyhlKTt0aGlzLl9tZXRhZGF0YU1hcD1uZXcgTWFwO3RoaXMuX2RhdGE9ZTt0JiZ0aGlzLl9wYXJzZSh0KX1fcmVwYWlyKGUpe3JldHVybiBlLnJlcGxhY2UoL15bXjxdKy8sIiIpLnJlcGxhY2VBbGwoLz5cXDM3NlxcMzc3KFtePF0rKS9nLGZ1bmN0aW9uKGUsdCl7Y29uc3QgYT10LnJlcGxhY2VBbGwoL1xcKFswLTNdKShbMC03XSkoWzAtN10pL2csKGUsdCxhLG4pPT5TdHJpbmcuZnJvbUNoYXJDb2RlKDY0KnQrOCphKzEqbikpLnJlcGxhY2VBbGwoLyYoYW1wfGFwb3N8Z3R8bHR8cXVvdCk7L2csZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlImFwb3MiOnJldHVybiInIjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJsdCI6cmV0dXJuIjwiO2Nhc2UicXVvdCI6cmV0dXJuJyInfXRocm93IG5ldyBFcnJvcihgX3JlcGFpcjogJHt0fSBpc24ndCBkZWZpbmVkLmApfSksbj1bIj4iXTtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKz0yKXtjb25zdCB0PTI1NiphLmNoYXJDb2RlQXQoZSkrYS5jaGFyQ29kZUF0KGUrMSk7dD49MzImJnQ8MTI3JiY2MCE9PXQmJjYyIT09dCYmMzghPT10P24ucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTpuLnB1c2goIiYjeCIrKDY1NTM2K3QpLnRvU3RyaW5nKDE2KS5zdWJzdHJpbmcoMSkrIjsiKX1yZXR1cm4gbi5qb2luKCIiKX0pfV9nZXRTZXF1ZW5jZShlKXtjb25zdCB0PWUubm9kZU5hbWU7cmV0dXJuInJkZjpiYWciIT09dCYmInJkZjpzZXEiIT09dCYmInJkZjphbHQiIT09dD9udWxsOmUuY2hpbGROb2Rlcy5maWx0ZXIoZT0+InJkZjpsaSI9PT1lLm5vZGVOYW1lKX1fcGFyc2VBcnJheShlKXtpZighZS5oYXNDaGlsZE5vZGVzKCkpcmV0dXJuO2NvbnN0W3RdPWUuY2hpbGROb2RlcyxhPXRoaXMuX2dldFNlcXVlbmNlKHQpfHxbXTt0aGlzLl9tZXRhZGF0YU1hcC5zZXQoZS5ub2RlTmFtZSxhLm1hcChlPT5lLnRleHRDb250ZW50LnRyaW0oKSkpfV9wYXJzZShlKXtsZXQgdD1lLmRvY3VtZW50RWxlbWVudDtpZigicmRmOnJkZiIhPT10Lm5vZGVOYW1lKXt0PXQuZmlyc3RDaGlsZDtmb3IoO3QmJiJyZGY6cmRmIiE9PXQubm9kZU5hbWU7KXQ9dC5uZXh0U2libGluZ31pZih0JiYicmRmOnJkZiI9PT10Lm5vZGVOYW1lJiZ0Lmhhc0NoaWxkTm9kZXMoKSlmb3IoY29uc3QgZSBvZiB0LmNoaWxkTm9kZXMpaWYoInJkZjpkZXNjcmlwdGlvbiI9PT1lLm5vZGVOYW1lKWZvcihjb25zdCB0IG9mIGUuY2hpbGROb2Rlcyl7Y29uc3QgZT10Lm5vZGVOYW1lO3N3aXRjaChlKXtjYXNlIiN0ZXh0Ijpjb250aW51ZTtjYXNlImRjOmNyZWF0b3IiOmNhc2UiZGM6c3ViamVjdCI6dGhpcy5fcGFyc2VBcnJheSh0KTtjb250aW51ZX10aGlzLl9tZXRhZGF0YU1hcC5zZXQoZSx0LnRleHRDb250ZW50LnRyaW0oKSl9fWdldCBzZXJpYWxpemFibGUoKXtyZXR1cm57cGFyc2VkRGF0YTp0aGlzLl9tZXRhZGF0YU1hcCxyYXdEYXRhOnRoaXMuX2RhdGF9fX1mdW5jdGlvbiBnZXRTb3VuZEZvcm1hdChlKXtpZighZXx8ZS5oYXMoIkNPIikpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmdldCgiUiIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpfHx0PD0wKXJldHVybiBudWxsO2NvbnN0IGE9ZS5nZXQoIkMiKT8/MTtpZighTnVtYmVyLmlzSW50ZWdlcihhKXx8YTwxfHxhPjIpcmV0dXJuIG51bGw7Y29uc3Qgbj1lLmdldCgiQiIpPz84O2lmKDghPT1uJiYxNiE9PW4pcmV0dXJuIG51bGw7Y29uc3Qgcz1lLmdldCgiRSIpO2xldCByPSJSYXciO3ZvaWQgMCE9PXMmJihyPXMgaW5zdGFuY2VvZiBOYW1lP3MubmFtZTpudWxsKTtyZXR1cm4iUmF3IiE9PXImJiJTaWduZWQiIT09cj9udWxsOntjaGFubmVsczphLHNhbXBsZVJhdGU6dCxiaXRzUGVyU2FtcGxlOm4sZW5jb2Rpbmc6cn19Y29uc3QgWmk9W1siUm93U3BhbiIsInJvd1NwYW4iXSxbIkNvbFNwYW4iLCJjb2xTcGFuIl1dLGVvPTEsdG89Mixhbz0zLG5vPTQsc289NTtjbGFzcyBTdHJ1Y3RUcmVlUm9vdHtraWRSZWZUb1Bvc2l0aW9uPXZvaWQgMDtwYXJlbnRUcmVlPW51bGw7cm9sZU1hcD1uZXcgTWFwO3N0cnVjdFBhcmVudElkcz1udWxsO2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLnhyZWY9ZTt0aGlzLmRpY3Q9dDt0aGlzLnJlZj1hIGluc3RhbmNlb2YgUmVmP2E6bnVsbDtjb25zdCBuPXQuZ2V0KCJSb2xlTWFwIik7aWYobiBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0W2UsdF1vZiBuKXQgaW5zdGFuY2VvZiBOYW1lJiZ0aGlzLnJvbGVNYXAuc2V0KGUsdC5uYW1lKTtjb25zdCBzPXQuZ2V0UmF3KCJQYXJlbnRUcmVlIik7cyYmKHRoaXMucGFyZW50VHJlZT1uZXcgTnVtYmVyVHJlZShzLGUpKX1nZXRLaWRQb3NpdGlvbihlKXtpZih2b2lkIDA9PT10aGlzLmtpZFJlZlRvUG9zaXRpb24pe2NvbnN0IGU9dGhpcy5kaWN0LmdldCgiSyIpO2lmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHQ9dGhpcy5raWRSZWZUb1Bvc2l0aW9uPW5ldyBNYXA7Zm9yKGxldCBhPTAsbj1lLmxlbmd0aDthPG47YSsrKXtjb25zdCBuPWVbYV07biYmdC5zZXQobi50b1N0cmluZygpLGEpfX1lbHNlIHRoaXMua2lkUmVmVG9Qb3NpdGlvbj1lIGluc3RhbmNlb2YgRGljdD9uZXcgTWFwKFtbZS5vYmpJZCwwXV0pOmU/bnVsbDpuZXcgTWFwfXJldHVybiB0aGlzLmtpZFJlZlRvUG9zaXRpb24/dGhpcy5raWRSZWZUb1Bvc2l0aW9uLmdldChlKT8/TmFOOi0xfSNjdChlLHQsYSxuKXtlIGluc3RhbmNlb2YgUmVmJiYhKHQ8MCkmJih0aGlzLnN0cnVjdFBhcmVudElkcz8/PW5ldyBSZWZNYXApLmdldE9yUHV0Q29tcHV0ZWQoZSxtYWtlQXJyKS5wdXNoKFt0LGEsbl0pfWFkZEFubm90YXRpb25JZFRvUGFnZShlLHQsYSl7dGhpcy4jY3QoZSx0LG5vLGEgaW5zdGFuY2VvZiBSZWY/YS50b1N0cmluZygpOm51bGwpfXN0YXRpYyBhc3luYyBjYW5DcmVhdGVTdHJ1Y3R1cmVUcmVlKHtjYXRhbG9nUmVmOmUscGRmTWFuYWdlcjp0LG5ld0Fubm90YXRpb25zQnlQYWdlOmF9KXtpZighKGUgaW5zdGFuY2VvZiBSZWYpKXt3YXJuKCJDYW5ub3Qgc2F2ZSB0aGUgc3RydWN0IHRyZWU6IG5vIGNhdGFsb2cgcmVmZXJlbmNlLiIpO3JldHVybiExfWxldCBuPTAscz0hMDtmb3IoY29uc3RbZSxyXW9mIGEpe2NvbnN0e3JlZjphfT1hd2FpdCB0LmdldFBhZ2UoZSk7aWYoIShhIGluc3RhbmNlb2YgUmVmKSl7d2FybihgQ2Fubm90IHNhdmUgdGhlIHN0cnVjdCB0cmVlOiBwYWdlICR7ZX0gaGFzIG5vIHJlZi5gKTtzPSEwO2JyZWFrfWZvcihjb25zdCBlIG9mIHIpaWYoZS5hY2Nlc3NpYmlsaXR5RGF0YT8udHlwZSl7ZS5wYXJlbnRUcmVlSWQ9bisrO3M9ITF9fWlmKHMpe2Zvcihjb25zdCBlIG9mIGEudmFsdWVzKCkpZm9yKGNvbnN0IHQgb2YgZSlkZWxldGUgdC5wYXJlbnRUcmVlSWQ7cmV0dXJuITF9cmV0dXJuITB9c3RhdGljIGFzeW5jIGNyZWF0ZVN0cnVjdHVyZVRyZWUoe25ld0Fubm90YXRpb25zQnlQYWdlOmUseHJlZjp0LGNhdGFsb2dSZWY6YSxwZGZNYW5hZ2VyOm4sY2hhbmdlczpzfSl7Y29uc3Qgcj1hd2FpdCBuLmVuc3VyZUNhdGFsb2coImNsb25lRGljdCIpLGk9bmV3IFJlZk1hcDtpLnB1dChhLHIpO2NvbnN0IG89dC5nZXROZXdUZW1wb3JhcnlSZWYoKTtyLnNldCgiU3RydWN0VHJlZVJvb3QiLG8pO2NvbnN0IGw9bmV3IERpY3QodCk7bC5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJTdHJ1Y3RUcmVlUm9vdCIpKTtjb25zdCBmPXQuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7bC5zZXQoIlBhcmVudFRyZWUiLGYpO2NvbnN0IGM9W107bC5zZXQoIksiLGMpO2kucHV0KG8sbCk7Y29uc3QgaD1uZXcgRGljdCh0KSx1PVtdO2guc2V0KCJOdW1zIix1KTtjb25zdCBtPWF3YWl0IHRoaXMuI2h0KHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHN0cnVjdFRyZWVSb290UmVmOm8sc3RydWN0VHJlZVJvb3Q6bnVsbCxraWRzOmMsbnVtczp1LHhyZWY6dCxwZGZNYW5hZ2VyOm4sY2hhbmdlczpzLGNhY2hlOml9KTtsLnNldCgiUGFyZW50VHJlZU5leHRLZXkiLG0pO2kucHV0KGYsaCk7Zm9yKGNvbnN0W2UsdF1vZiBpLml0ZW1zKCkpcy5wdXQoZSx7ZGF0YTp0fSl9YXN5bmMgY2FuVXBkYXRlU3RydWN0VHJlZSh7cGRmTWFuYWdlcjplLG5ld0Fubm90YXRpb25zQnlQYWdlOnR9KXtpZighdGhpcy5yZWYpe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBubyByb290IHJlZmVyZW5jZS4iKTtyZXR1cm4hMX1sZXQgYT10aGlzLmRpY3QuZ2V0KCJQYXJlbnRUcmVlTmV4dEtleSIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHxhPDApe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBpbnZhbGlkIG5leHQga2V5LiIpO3JldHVybiExfWNvbnN0IG49dGhpcy5kaWN0LmdldCgiUGFyZW50VHJlZSIpO2lmKCEobiBpbnN0YW5jZW9mIERpY3QpKXt3YXJuKCJDYW5ub3QgdXBkYXRlIHRoZSBzdHJ1Y3QgdHJlZTogUGFyZW50VHJlZSBpc24ndCBhIGRpY3QuIik7cmV0dXJuITF9Y29uc3Qgcz1uLmdldCgiTnVtcyIpO2lmKCFBcnJheS5pc0FycmF5KHMpKXt3YXJuKCJDYW5ub3QgdXBkYXRlIHRoZSBzdHJ1Y3QgdHJlZTogbnVtcyBpc24ndCBhbiBhcnJheS4iKTtyZXR1cm4hMX1jb25zdCByPW5ldyBOdW1iZXJUcmVlKG4sdGhpcy54cmVmKTtmb3IoY29uc3QgYSBvZiB0LmtleXMoKSl7Y29uc3R7cGFnZURpY3Q6dH09YXdhaXQgZS5nZXRQYWdlKGEpO2lmKCF0LmhhcygiU3RydWN0UGFyZW50cyIpKWNvbnRpbnVlO2NvbnN0IG49dC5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcihuKXx8IUFycmF5LmlzQXJyYXkoci5nZXQobikpKXt3YXJuKGBDYW5ub3Qgc2F2ZSB0aGUgc3RydWN0IHRyZWU6IHBhZ2UgJHthfSBoYXMgYSB3cm9uZyBpZC5gKTtyZXR1cm4hMX19bGV0IGk9ITA7Zm9yKGNvbnN0W24sc11vZiB0KXtjb25zdHtwYWdlRGljdDp0fT1hd2FpdCBlLmdldFBhZ2Uobik7U3RydWN0VHJlZVJvb3QuI3V0KHtlbGVtZW50czpzLHhyZWY6dGhpcy54cmVmLHBhZ2VEaWN0OnQsbnVtYmVyVHJlZTpyfSk7Zm9yKGNvbnN0IGUgb2YgcylpZihlLmFjY2Vzc2liaWxpdHlEYXRhPy50eXBlKXtlLmFjY2Vzc2liaWxpdHlEYXRhLnN0cnVjdFBhcmVudD49MHx8KGUucGFyZW50VHJlZUlkPWErKyk7aT0hMX19aWYoaSl7Zm9yKGNvbnN0IGUgb2YgdC52YWx1ZXMoKSlmb3IoY29uc3QgdCBvZiBlKXtkZWxldGUgdC5wYXJlbnRUcmVlSWQ7ZGVsZXRlIHQuc3RydWN0VHJlZVBhcmVudH1yZXR1cm4hMX1yZXR1cm4hMH1hc3luYyB1cGRhdGVTdHJ1Y3R1cmVUcmVlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHBkZk1hbmFnZXI6dCxjaGFuZ2VzOmF9KXtjb25zdHtyZWY6bix4cmVmOnN9PXRoaXMscj10aGlzLmRpY3QuY2xvbmUoKSxpPW5ldyBSZWZNYXA7aS5wdXQobixyKTtsZXQgbyxsPXIuZ2V0UmF3KCJQYXJlbnRUcmVlIik7aWYobCBpbnN0YW5jZW9mIFJlZilvPXMuZmV0Y2gobCk7ZWxzZXtvPWw7bD1zLmdldE5ld1RlbXBvcmFyeVJlZigpO3Iuc2V0KCJQYXJlbnRUcmVlIixsKX1vPW8uY2xvbmUoKTtpLnB1dChsLG8pO2xldCBmPW8uZ2V0UmF3KCJOdW1zIiksYz1udWxsO2lmKGYgaW5zdGFuY2VvZiBSZWYpe2M9ZjtmPXMuZmV0Y2goYyl9Zj1mLnNsaWNlKCk7Y3x8by5zZXQoIk51bXMiLGYpO2NvbnN0IGg9YXdhaXQgU3RydWN0VHJlZVJvb3QuI2h0KHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHN0cnVjdFRyZWVSb290UmVmOm4sc3RydWN0VHJlZVJvb3Q6dGhpcyxraWRzOm51bGwsbnVtczpmLHhyZWY6cyxwZGZNYW5hZ2VyOnQsY2hhbmdlczphLGNhY2hlOml9KTtpZigtMSE9PWgpe3Iuc2V0KCJQYXJlbnRUcmVlTmV4dEtleSIsaCk7YyYmaS5wdXQoYyxmKTtmb3IoY29uc3RbZSx0XW9mIGkuaXRlbXMoKSlhLnB1dChlLHtkYXRhOnR9KX19c3RhdGljIGFzeW5jI2h0KHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHN0cnVjdFRyZWVSb290UmVmOnQsc3RydWN0VHJlZVJvb3Q6YSxraWRzOm4sbnVtczpzLHhyZWY6cixwZGZNYW5hZ2VyOmksY2hhbmdlczpvLGNhY2hlOmx9KXtjb25zdCBmPU5hbWUuZ2V0KCJPQkpSIik7bGV0IGMsaD0tMTtmb3IoY29uc3RbdSxtXW9mIGUpe2NvbnN0IGU9YXdhaXQgaS5nZXRQYWdlKHUpLHtyZWY6cH09ZSxkPXAgaW5zdGFuY2VvZiBSZWY7Zm9yKGNvbnN0e2FjY2Vzc2liaWxpdHlEYXRhOmkscmVmOmcscGFyZW50VHJlZUlkOmIsc3RydWN0VHJlZVBhcmVudDp3fW9mIG0pe2lmKCFpPy50eXBlKWNvbnRpbnVlO2NvbnN0e3N0cnVjdFBhcmVudDptfT1pO2lmKGEmJk51bWJlci5pc0ludGVnZXIobSkmJm0+PTApe2xldCB0PShjfHw9bmV3IE1hcCkuZ2V0KHUpO2lmKHZvaWQgMD09PXQpe3Q9bmV3IFN0cnVjdFRyZWVQYWdlKGEsZS5wYWdlRGljdCkuY29sbGVjdE9iamVjdHMocCk7Yy5zZXQodSx0KX1jb25zdCBuPXQ/LmdldChtKTtpZihuKXtjb25zdCBlPXIuZmV0Y2gobikuY2xvbmUoKTtTdHJ1Y3RUcmVlUm9vdC4jbXQoZSxpKTtvLnB1dChuLHtkYXRhOmV9KTtjb250aW51ZX19aD1NYXRoLm1heChoLGIpO2NvbnN0IGo9ci5nZXROZXdUZW1wb3JhcnlSZWYoKSxrPW5ldyBEaWN0KHIpO1N0cnVjdFRyZWVSb290LiNtdChrLGkpO2F3YWl0IHRoaXMuI3B0KHtzdHJ1Y3RUcmVlUGFyZW50OncsdGFnRGljdDprLG5ld1RhZ1JlZjpqLHN0cnVjdFRyZWVSb290UmVmOnQsZmFsbGJhY2tLaWRzOm4seHJlZjpyLGNhY2hlOmx9KTtjb25zdCB5PW5ldyBEaWN0KHIpO2suc2V0KCJLIix5KTt5LnNldCgiVHlwZSIsZik7ZCYmeS5zZXQoIlBnIixwKTt5LnNldCgiT2JqIixnKTtsLnB1dChqLGspO3MucHVzaChiLGopfX1yZXR1cm4gaCsxfXN0YXRpYyNtdChlLHt0eXBlOnQsdGl0bGU6YSxsYW5nOm4sYWx0OnMsZXhwYW5kZWQ6cixhY3R1YWxUZXh0Oml9KXtlLnNldCgiUyIsTmFtZS5nZXQodCkpO2EmJmUuc2V0KCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGEpKTtuJiZlLnNldCgiTGFuZyIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShuKSk7cyYmZS5zZXQoIkFsdCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShzKSk7ciYmZS5zZXQoIkUiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUocikpO2kmJmUuc2V0KCJBY3R1YWxUZXh0IixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGkpKX1zdGF0aWMjdXQoe2VsZW1lbnRzOmUseHJlZjp0LHBhZ2VEaWN0OmEsbnVtYmVyVHJlZTpufSl7Y29uc3Qgcz1uZXcgTWFwO2Zvcihjb25zdCB0IG9mIGUpaWYodC5zdHJ1Y3RUcmVlUGFyZW50SWQpe2NvbnN0IGU9cGFyc2VJbnQodC5zdHJ1Y3RUcmVlUGFyZW50SWQuc3BsaXQoIl9tYyIpWzFdLDEwKTtzLmdldE9ySW5zZXJ0Q29tcHV0ZWQoZSxtYWtlQXJyKS5wdXNoKHQpfWNvbnN0IHI9YS5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcihyKSlyZXR1cm47Y29uc3QgaT1uLmdldChyKSx1cGRhdGVFbGVtZW50PShlLGEsbik9Pntjb25zdCByPXMuZ2V0KGUpO2lmKHIpe2NvbnN0IGU9YS5nZXRSYXcoIlAiKSxzPXQuZmV0Y2hJZlJlZihlKTtpZihlIGluc3RhbmNlb2YgUmVmJiZzIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT17cmVmOm4sZGljdDphfTtmb3IoY29uc3QgdCBvZiByKXQuc3RydWN0VHJlZVBhcmVudD1lfXJldHVybiEwfXJldHVybiExfTtmb3IoY29uc3QgZSBvZiBpKXtpZighKGUgaW5zdGFuY2VvZiBSZWYpKWNvbnRpbnVlO2NvbnN0IGE9dC5mZXRjaChlKSxuPWEuZ2V0KCJLIik7aWYoTnVtYmVyLmlzSW50ZWdlcihuKSl1cGRhdGVFbGVtZW50KG4sYSxlKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkobikpZm9yKGxldCBzIG9mIG4pe3M9dC5mZXRjaElmUmVmKHMpO2lmKE51bWJlci5pc0ludGVnZXIocykmJnVwZGF0ZUVsZW1lbnQocyxhLGUpKWJyZWFrO2lmKCEocyBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2lmKCFpc05hbWUocy5nZXQoIlR5cGUiKSwiTUNSIikpYnJlYWs7Y29uc3Qgbj1zLmdldCgiTUNJRCIpO2lmKE51bWJlci5pc0ludGVnZXIobikmJnVwZGF0ZUVsZW1lbnQobixhLGUpKWJyZWFrfX19c3RhdGljIGFzeW5jI3B0KHtzdHJ1Y3RUcmVlUGFyZW50OmUsdGFnRGljdDp0LG5ld1RhZ1JlZjphLHN0cnVjdFRyZWVSb290UmVmOm4sZmFsbGJhY2tLaWRzOnMseHJlZjpyLGNhY2hlOml9KXtsZXQgbyxsPW51bGw7aWYoZSl7KHtyZWY6bH09ZSk7bz1lLmRpY3QuZ2V0UmF3KCJQIil8fG59ZWxzZSBvPW47dC5zZXQoIlAiLG8pO2NvbnN0IGY9ci5mZXRjaElmUmVmKG8pO2lmKCFmKXtzLnB1c2goYSk7cmV0dXJufWNvbnN0IGM9aS5nZXRPclB1dENvbXB1dGVkKG8sKCk9PmYuY2xvbmUoKSksaD1jLmdldFJhdygiSyIpO2xldCB1PWggaW5zdGFuY2VvZiBSZWY/aS5nZXQoaCk6bnVsbDtpZighdSl7dT1yLmZldGNoSWZSZWYoaCk7dT1BcnJheS5pc0FycmF5KHUpP3Uuc2xpY2UoKTpbaF07Y29uc3QgZT1yLmdldE5ld1RlbXBvcmFyeVJlZigpO2Muc2V0KCJLIixlKTtpLnB1dChlLHUpfWNvbnN0IG09dS5pbmRleE9mKGwpO3Uuc3BsaWNlKG0+PTA/bSsxOnUubGVuZ3RoLDAsYSl9fWNsYXNzIFN0cnVjdEVsZW1lbnROb2Rle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy50cmVlPWU7dGhpcy54cmVmPWUueHJlZjt0aGlzLmRpY3Q9dDt0aGlzLmtpZHM9W107dGhpcy5wYXJzZUtpZHMoKX1nZXQgcm9sZSgpe2NvbnN0IGU9dGhpcy5kaWN0LmdldCgiUyIpLHQ9ZSBpbnN0YW5jZW9mIE5hbWU/ZS5uYW1lOiIiLHtyb290OmF9PXRoaXMudHJlZTtyZXR1cm4gYS5yb2xlTWFwLmdldCh0KT8/dH1nZXQgbWF0aE1MKCl7bGV0IGU9dGhpcy5kaWN0LmdldCgiQUYiKXx8W107QXJyYXkuaXNBcnJheShlKXx8KGU9W2VdKTtmb3IobGV0IHQgb2YgZSl7dD10aGlzLnhyZWYuZmV0Y2hJZlJlZih0KTtpZighaXNEaWN0KHQsIkZpbGVzcGVjIil8fCFpc05hbWUodC5nZXQoIkFGUmVsYXRpb25zaGlwIiksIlN1cHBsZW1lbnQiKSljb250aW51ZTtjb25zdCBlPUZpbGVTcGVjLnBpY2tQbGF0Zm9ybUl0ZW0odC5nZXQoIkVGIikpO2lmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiZpc0RpY3QoZS5kaWN0LCJFbWJlZGRlZEZpbGUiKSYmaXNOYW1lKGUuZGljdC5nZXQoIlN1YnR5cGUiKSwiYXBwbGljYXRpb24vbWF0aG1sK3htbCIpKXJldHVybiBzdHJpbmdUb1VURjhTdHJpbmcoZS5nZXRTdHJpbmcoKSl9Zm9yKGNvbnN0IGUgb2YgdGhpcy5hdHRyaWJ1dGVzKWlmKGlzTmFtZShlLmdldCgiTyIpLCJNU0ZUX09mZmljZSIpKXtjb25zdCB0PWUuZ2V0KCJNU0ZUX01hdGhNTCIpO3JldHVybiB0P3N0cmluZ1RvUERGU3RyaW5nKHQpOm51bGx9cmV0dXJuIG51bGx9I2R0KGUsdCl7Y29uc3QgYT1bZV0sbj1uZXcgUmVmU2V0O2Zvcig7YS5sZW5ndGg+MDspe2lmKChlPWEucG9wKCkpaW5zdGFuY2VvZiBSZWYpe2lmKG4uaGFzKGUpKWNvbnRpbnVlO24ucHV0KGUpO2U9dGhpcy54cmVmLmZldGNoKGUpfWUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYoZT1lLmRpY3QpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KXQucHVzaChlKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MDt0LS0pTnVtYmVyLmlzSW50ZWdlcihlW3RdKXx8YS5wdXNoKGVbdF0pfX1nZXQgYXR0cmlidXRlcygpe2NvbnN0IGU9W10sdD10aGlzLmRpY3QuZ2V0QXJyYXkoIkMiKTtpZih2b2lkIDAhPT10KXtjb25zdCBhPXRoaXMudHJlZS5yb290RGljdD8uZ2V0KCJDbGFzc01hcCIpO2lmKGEgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdCBuIG9mIEFycmF5LmlzQXJyYXkodCk/dDpbdF0pbiBpbnN0YW5jZW9mIE5hbWUmJnRoaXMuI2R0KGEuZ2V0UmF3KG4ubmFtZSksZSl9dGhpcy4jZHQodGhpcy5kaWN0LmdldFJhdygiQSIpLGUpO3JldHVybiBzaGFkb3codGhpcywiYXR0cmlidXRlcyIsZSl9Z2V0IHRhYmxlQXR0cmlidXRlcygpe2NvbnN0e3JvbGU6ZX09dGhpcztpZigiVGFibGUiIT09ZSYmIlRIIiE9PWUmJiJURCIhPT1lKXJldHVybiBudWxsO2NvbnN0IHQ9bmV3IE1hcDtmb3IoY29uc3QgYSBvZiB0aGlzLmF0dHJpYnV0ZXMpaWYoaXNOYW1lKGEuZ2V0KCJPIiksIlRhYmxlIikpaWYoIlRhYmxlIiE9PWUpe2Zvcihjb25zdFtlLG5db2YgWmkpe2lmKCFhLmhhcyhlKSljb250aW51ZTtjb25zdCBzPWEuZ2V0KGUpO051bWJlci5pc0ludGVnZXIocykmJnM+MT90LnNldChuLHMpOnQuZGVsZXRlKG4pfWlmKGEuaGFzKCJIZWFkZXJzIikpe3QuZGVsZXRlKCJoZWFkZXJzIik7Y29uc3QgZT1hLmdldEFycmF5KCJIZWFkZXJzIik7aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3QgYT1lLmZpbHRlcihlPT4ic3RyaW5nIj09dHlwZW9mIGUpLm1hcChzdHJpbmdUb1BERlN0cmluZyk7YS5sZW5ndGg+MCYmdC5zZXQoImhlYWRlcnMiLGEpfX1pZigiVEgiPT09ZSYmYS5oYXMoIlNjb3BlIikpe3QuZGVsZXRlKCJzY29wZSIpO2NvbnN0IGU9YS5nZXQoIlNjb3BlIik7ZSBpbnN0YW5jZW9mIE5hbWUmJlsiUm93IiwiQ29sdW1uIiwiQm90aCJdLmluY2x1ZGVzKGUubmFtZSkmJnQuc2V0KCJzY29wZSIsZS5uYW1lKX1pZigiVEgiPT09ZSYmYS5oYXMoIlNob3J0Iikpe3QuZGVsZXRlKCJzaG9ydCIpO2NvbnN0IGU9YS5nZXQoIlNob3J0Iik7InN0cmluZyI9PXR5cGVvZiBlJiZlJiZ0LnNldCgic2hvcnQiLHN0cmluZ1RvUERGU3RyaW5nKGUpKX19ZWxzZSBpZihhLmhhcygiU3VtbWFyeSIpKXtjb25zdCBlPWEuZ2V0KCJTdW1tYXJ5Iik7InN0cmluZyI9PXR5cGVvZiBlJiZlP3Quc2V0KCJzdW1tYXJ5IixzdHJpbmdUb1BERlN0cmluZyhlKSk6dC5kZWxldGUoInN1bW1hcnkiKX1yZXR1cm4gdC5zaXplP3Q6bnVsbH1wYXJzZUtpZHMoKXtsZXQgZT1udWxsO2NvbnN0IHQ9dGhpcy5kaWN0LmdldFJhdygiUGciKTt0IGluc3RhbmNlb2YgUmVmJiYoZT10LnRvU3RyaW5nKCkpO2NvbnN0IGE9dGhpcy5kaWN0LmdldCgiSyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpZm9yKGNvbnN0IHQgb2YgYSl7Y29uc3QgYT10aGlzLnBhcnNlS2lkKGUsdGhpcy54cmVmLmZldGNoSWZSZWYodCkpO2EmJnRoaXMua2lkcy5wdXNoKGEpfWVsc2V7Y29uc3QgdD10aGlzLnBhcnNlS2lkKGUsYSk7dCYmdGhpcy5raWRzLnB1c2godCl9fXBhcnNlS2lkKGUsdCl7aWYoTnVtYmVyLmlzSW50ZWdlcih0KSlyZXR1cm4gdGhpcy50cmVlLnBhZ2VEaWN0Lm9iaklkIT09ZT9udWxsOm5ldyBTdHJ1Y3RFbGVtZW50KHt0eXBlOmVvLG1jaWQ6dCxwYWdlT2JqSWQ6ZX0pO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2NvbnN0IGE9dC5nZXRSYXcoIlBnIik7YSBpbnN0YW5jZW9mIFJlZiYmKGU9YS50b1N0cmluZygpKTtjb25zdCBuPXQuZ2V0KCJUeXBlIilpbnN0YW5jZW9mIE5hbWU/dC5nZXQoIlR5cGUiKS5uYW1lOm51bGw7aWYoIk1DUiI9PT1uKXtpZih0aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lKXJldHVybiBudWxsO2NvbnN0IGE9dC5nZXRSYXcoIlN0bSIpO3JldHVybiBuZXcgU3RydWN0RWxlbWVudCh7dHlwZTp0byxyZWZPYmpJZDphIGluc3RhbmNlb2YgUmVmP2EudG9TdHJpbmcoKTpudWxsLHBhZ2VPYmpJZDplLG1jaWQ6dC5nZXQoIk1DSUQiKX0pfWlmKCJPQkpSIj09PW4pe2lmKHRoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWUpcmV0dXJuIG51bGw7Y29uc3QgYT10LmdldFJhdygiT2JqIik7cmV0dXJuIG5ldyBTdHJ1Y3RFbGVtZW50KHt0eXBlOmFvLHJlZk9iaklkOmEgaW5zdGFuY2VvZiBSZWY/YS50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmV9KX1yZXR1cm4gbmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6c28sZGljdDp0fSl9fWNsYXNzIFN0cnVjdEVsZW1lbnR7Y29uc3RydWN0b3Ioe3R5cGU6ZSxkaWN0OnQ9bnVsbCxtY2lkOmE9bnVsbCxwYWdlT2JqSWQ6bj1udWxsLHJlZk9iaklkOnM9bnVsbH0pe3RoaXMudHlwZT1lO3RoaXMuZGljdD10O3RoaXMubWNpZD1hO3RoaXMucGFnZU9iaklkPW47dGhpcy5yZWZPYmpJZD1zO3RoaXMucGFyZW50Tm9kZT1udWxsfX1jbGFzcyBTdHJ1Y3RUcmVlUGFnZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMucm9vdD1lO3RoaXMueHJlZj1lPy54cmVmPz9udWxsO3RoaXMucm9vdERpY3Q9ZT8uZGljdD8/bnVsbDt0aGlzLnBhZ2VEaWN0PXQ7dGhpcy5ub2Rlcz1bXX1jb2xsZWN0T2JqZWN0cyhlKXtpZighKHRoaXMucm9vdCYmdGhpcy5yb290RGljdCYmZSBpbnN0YW5jZW9mIFJlZikpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLnJvb3REaWN0LmdldCgiUGFyZW50VHJlZSIpO2lmKCF0KXJldHVybiBudWxsO2NvbnN0IGE9dGhpcy5yb290LnN0cnVjdFBhcmVudElkcz8uZ2V0KGUpO2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49bmV3IE1hcCxzPW5ldyBOdW1iZXJUcmVlKHQsdGhpcy54cmVmKTtmb3IoY29uc3RbZV1vZiBhKXtjb25zdCB0PXMuZ2V0UmF3KGUpO3QgaW5zdGFuY2VvZiBSZWYmJm4uc2V0KGUsdCl9cmV0dXJuIG59cGFyc2UoZSl7aWYoISh0aGlzLnJvb3QmJnRoaXMucm9vdERpY3QmJmUgaW5zdGFuY2VvZiBSZWYpKXJldHVybjtjb25zdHtwYXJlbnRUcmVlOnR9PXRoaXMucm9vdDtpZighdClyZXR1cm47Y29uc3QgYT10aGlzLnBhZ2VEaWN0LmdldCgiU3RydWN0UGFyZW50cyIpLG49dGhpcy5yb290LnN0cnVjdFBhcmVudElkcz8uZ2V0KGUpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpJiYhbilyZXR1cm47Y29uc3Qgcz1uZXcgTWFwO2lmKE51bWJlci5pc0ludGVnZXIoYSkpe2NvbnN0IGU9dC5nZXQoYSk7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgdCBvZiBlKXQgaW5zdGFuY2VvZiBSZWYmJnRoaXMuYWRkTm9kZSh0aGlzLnhyZWYuZmV0Y2godCkscyl9aWYobilmb3IoY29uc3RbZSxhLHJdb2Ygbil7Y29uc3Qgbj10LmdldChlKTtpZighbiljb250aW51ZTtjb25zdCBpPXRoaXMuYWRkTm9kZSh0aGlzLnhyZWYuZmV0Y2hJZlJlZihuKSxzKTtpZihpJiZyKWZvcihjb25zdCBlIG9mIGkua2lkcyllLnR5cGU9PT1hbyYmZS5yZWZPYmpJZD09PXImJihlLnR5cGU9YSl9fWFkZE5vZGUoZSx0LGE9MCl7aWYoYT40MCl7d2FybigiU3RydWN0VHJlZSBNQVhfREVQVEggcmVhY2hlZC4iKTtyZXR1cm4gbnVsbH1pZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtpZih0LmhhcyhlKSlyZXR1cm4gdC5nZXQoZSk7Y29uc3Qgbj1uZXcgU3RydWN0RWxlbWVudE5vZGUodGhpcyxlKTt0LnNldChlLG4pO3N3aXRjaChuLnJvbGUpe2Nhc2UiTCI6Y2FzZSJMQm9keSI6Y2FzZSJMSSI6Y2FzZSJUYWJsZSI6Y2FzZSJUSGVhZCI6Y2FzZSJUQm9keSI6Y2FzZSJURm9vdCI6Y2FzZSJUUiI6Zm9yKGNvbnN0IGUgb2Ygbi5raWRzKWUudHlwZT09PXNvJiZ0aGlzLmFkZE5vZGUoZS5kaWN0LHQsYS0xKX1jb25zdCBzPWUuZ2V0KCJQIik7aWYoIShzIGluc3RhbmNlb2YgRGljdCl8fGlzTmFtZShzLmdldCgiVHlwZSIpLCJTdHJ1Y3RUcmVlUm9vdCIpKXt0aGlzLmFkZFRvcExldmVsTm9kZShlLG4pfHx0LmRlbGV0ZShlKTtyZXR1cm4gbn1jb25zdCByPXRoaXMuYWRkTm9kZShzLHQsYSsxKTtpZighcilyZXR1cm4gbjtsZXQgaT0hMTtmb3IoY29uc3QgdCBvZiByLmtpZHMpaWYodC50eXBlPT09c28mJnQuZGljdD09PWUpe3QucGFyZW50Tm9kZT1uO2k9ITB9aXx8dC5kZWxldGUoZSk7cmV0dXJuIG59YWRkVG9wTGV2ZWxOb2RlKGUsdCl7Y29uc3QgYT10aGlzLnJvb3QuZ2V0S2lkUG9zaXRpb24oZS5vYmpJZCk7aWYoaXNOYU4oYSkpcmV0dXJuITE7LTEhPT1hJiYodGhpcy5ub2Rlc1thXT10KTtyZXR1cm4hMH1nZXQgc2VyaWFsaXphYmxlKCl7ZnVuY3Rpb24gbm9kZVRvU2VyaWFsaXphYmxlKGUsdCxhPTApe2lmKGE+NDApe3dhcm4oIlN0cnVjdFRyZWUgdG9vIGRlZXAgdG8gYmUgZnVsbHkgc2VyaWFsaXplZC4iKTtyZXR1cm59Y29uc3Qgbj1PYmplY3QuY3JlYXRlKG51bGwpO24ucm9sZT1lLnJvbGU7bi5jaGlsZHJlbj1bXTt0LmNoaWxkcmVuLnB1c2gobik7bGV0IHM9ZS5kaWN0LmdldCgiQWx0Iik7InN0cmluZyIhPXR5cGVvZiBzJiYocz1lLmRpY3QuZ2V0KCJBY3R1YWxUZXh0IikpOyJzdHJpbmciPT10eXBlb2YgcyYmKG4uYWx0PXN0cmluZ1RvUERGU3RyaW5nKHMpKTtjb25zdCByPWUuZGljdC5nZXQoIklEIik7IlRIIj09PW4ucm9sZSYmInN0cmluZyI9PXR5cGVvZiByJiZyJiYobi5zdHJ1Y3RJZD1zdHJpbmdUb1BERlN0cmluZyhyKSk7ZS50YWJsZUF0dHJpYnV0ZXM/LmZvckVhY2goKGUsdCk9PntuW3RdPWV9KTtpZigiRm9ybXVsYSI9PT1uLnJvbGUpdHJ5e2NvbnN0e21hdGhNTDp0fT1lO3QmJihuLm1hdGhNTD10KX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBJZ25vcmluZyBtYXRoTUw6ICIke2V9Ii5gKX1sZXQgaT1udWxsLG89bnVsbDtmb3IoY29uc3QgdCBvZiBlLmF0dHJpYnV0ZXMpe2k9bG9va3VwTm9ybWFsUmVjdCh0LmdldEFycmF5KCJCQm94IiksaSk7Y29uc3QgZT10LmdldCgiV2lkdGgiKSxhPXQuZ2V0KCJIZWlnaHQiKTsibnVtYmVyIj09dHlwZW9mIGUmJmU+MCYmIm51bWJlciI9PXR5cGVvZiBhJiZhPjAmJihvPVswLDAsZSxhXSl9KGl8fG8pJiYobi5iYm94PWk/P28pO2NvbnN0IGw9ZS5kaWN0LmdldCgiTGFuZyIpOyJzdHJpbmciPT10eXBlb2YgbCYmKG4ubGFuZz1zdHJpbmdUb1BERlN0cmluZyhsKSk7Zm9yKGNvbnN0IHQgb2YgZS5raWRzKXtjb25zdCBlPXQudHlwZT09PXNvP3QucGFyZW50Tm9kZTpudWxsO2U/bm9kZVRvU2VyaWFsaXphYmxlKGUsbixhKzEpOnQudHlwZT09PWVvfHx0LnR5cGU9PT10bz9uLmNoaWxkcmVuLnB1c2goe3R5cGU6ImNvbnRlbnQiLGlkOmBwJHt0LnBhZ2VPYmpJZH1fbWMke3QubWNpZH1gfSk6dC50eXBlPT09YW8/bi5jaGlsZHJlbi5wdXNoKHt0eXBlOiJvYmplY3QiLGlkOnQucmVmT2JqSWR9KTp0LnR5cGU9PT1ubyYmbi5jaGlsZHJlbi5wdXNoKHt0eXBlOiJhbm5vdGF0aW9uIixpZDpgcGRmanNfaW50ZXJuYWxfaWRfJHt0LnJlZk9iaklkfWB9KX19Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO2UuY2hpbGRyZW49W107ZS5yb2xlPSJSb290Ijtmb3IoY29uc3QgdCBvZiB0aGlzLm5vZGVzKXQmJm5vZGVUb1NlcmlhbGl6YWJsZSh0LGUpO3JldHVybiBlfX1jb25zdCBybz1mdW5jdGlvbiBfaXNWYWxpZEV4cGxpY2l0RGVzdChlLHQsYSl7aWYoIUFycmF5LmlzQXJyYXkoYSl8fGEubGVuZ3RoPDIpcmV0dXJuITE7Y29uc3RbbixzLC4uLnJdPWE7aWYoIWUobikmJiFOdW1iZXIuaXNJbnRlZ2VyKG4pKXJldHVybiExO2lmKCF0KHMpKXJldHVybiExO2NvbnN0IGk9ci5sZW5ndGg7bGV0IG89ITA7c3dpdGNoKHMubmFtZSl7Y2FzZSJYWVoiOmlmKGk8Mnx8aT4zKXJldHVybiExO2JyZWFrO2Nhc2UiRml0IjpjYXNlIkZpdEIiOnJldHVybiAwPT09aTtjYXNlIkZpdEgiOmNhc2UiRml0QkgiOmNhc2UiRml0ViI6Y2FzZSJGaXRCViI6aWYoaT4xKXJldHVybiExO2JyZWFrO2Nhc2UiRml0UiI6aWYoNCE9PWkpcmV0dXJuITE7bz0hMTticmVhaztkZWZhdWx0OnJldHVybiExfWZvcihjb25zdCBlIG9mIHIpaWYoISgibnVtYmVyIj09dHlwZW9mIGV8fG8mJm51bGw9PT1lKSlyZXR1cm4hMTtyZXR1cm4hMH0uYmluZChudWxsLGU9PmUgaW5zdGFuY2VvZiBSZWYsaXNOYW1lKTtmdW5jdGlvbiBmZXRjaERlc3QoZSl7ZSBpbnN0YW5jZW9mIERpY3QmJihlPWUuZ2V0KCJEIikpO3JldHVybiBybyhlKT9lOm51bGx9ZnVuY3Rpb24gZmV0Y2hSZW1vdGVEZXN0KGUpe2xldCB0PWUuZ2V0KCJEIik7aWYodCl7dCBpbnN0YW5jZW9mIE5hbWUmJih0PXQubmFtZSk7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBzdHJpbmdUb1BERlN0cmluZyh0LCEwKTtpZihybyh0KSlyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCl9cmV0dXJuIG51bGx9Y2xhc3MgQ2F0YWxvZ3sjZ3Q9bnVsbDsjYnQ9bmV3IFJlZk1hcDsjd3Q9bmV3IE1hcDsjanQ9bmV3IFNldDsja3Q9bnVsbDtidWlsdEluQ01hcENhY2hlPW5ldyBNYXA7Zm9udENhY2hlPW5ldyBSZWZNYXA7Z2xvYmFsQ29sb3JTcGFjZUNhY2hlPW5ldyBHbG9iYWxDb2xvclNwYWNlQ2FjaGU7Z2xvYmFsSW1hZ2VDYWNoZT1uZXcgR2xvYmFsSW1hZ2VDYWNoZTtub25CbGVuZE1vZGVzU2V0PW5ldyBSZWZTZXQ7cGFnZURpY3RDYWNoZT1uZXcgUmVmTWFwO3BhZ2VJbmRleENhY2hlPW5ldyBSZWZNYXA7cGFnZUtpZHNDb3VudENhY2hlPW5ldyBSZWZNYXA7c3RhbmRhcmRGb250RGF0YUNhY2hlPW5ldyBNYXA7c3lzdGVtRm9udENhY2hlPW5ldyBNYXA7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnBkZk1hbmFnZXI9ZTt0aGlzLnhyZWY9dDt0aGlzLiNrdD10LmdldENhdGFsb2dPYmooKTtpZighKHRoaXMuI2t0IGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJDYXRhbG9nIG9iamVjdCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO3RoaXMudG9wbGV2ZWxQYWdlc0RpY3R9Y2xvbmVEaWN0KCl7cmV0dXJuIHRoaXMuI2t0LmNsb25lKCl9Z2V0QXR0YWNobWVudElkRm9yQW5ub3RhdGlvbihlLHQ9ITEpe2xldCBhPXRoaXMuI2J0LmdldChlKTtpZighYSl7Y29uc3QgdD1gYXR0YWNobWVudFJlZjoke2UudG9TdHJpbmcoKX1gO2E9dDtsZXQgbj0xO2Zvcig7dGhpcy4jd3QuaGFzKGEpfHx0aGlzLmF0dGFjaG1lbnRzPy5oYXMoYSk7KWE9YCR7dH0tJHtuKyt9YDt0aGlzLiNidC5wdXQoZSxhKTt0aGlzLiN3dC5zZXQoYSxlKX10JiZ0aGlzLiNqdC5hZGQoYSk7cmV0dXJuIGF9Z2V0IHZlcnNpb24oKXtjb25zdCBlPXRoaXMuI2t0LmdldCgiVmVyc2lvbiIpO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXtpZihwYS50ZXN0KGUubmFtZSkpcmV0dXJuIHNoYWRvdyh0aGlzLCJ2ZXJzaW9uIixlLm5hbWUpO3dhcm4oYEludmFsaWQgUERGIGNhdGFsb2cgdmVyc2lvbjogJHtlLm5hbWV9YCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJ2ZXJzaW9uIixudWxsKX1nZXQgbGFuZygpe2NvbnN0IGU9dGhpcy4ja3QuZ2V0KCJMYW5nIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJsYW5nIixlJiYic3RyaW5nIj09dHlwZW9mIGU/c3RyaW5nVG9QREZTdHJpbmcoZSk6bnVsbCl9Z2V0IG5lZWRzUmVuZGVyaW5nKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJuZWVkc1JlbmRlcmluZyIsITA9PT10aGlzLiNrdC5nZXQoIk5lZWRzUmVuZGVyaW5nIikpfWdldCBjb2xsZWN0aW9uKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLiNrdC5nZXQoIkNvbGxlY3Rpb24iKTt0IGluc3RhbmNlb2YgRGljdCYmdC5zaXplPjAmJihlPXQpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIkNhbm5vdCBmZXRjaCBDb2xsZWN0aW9uIGVudHJ5OyBhc3N1bWluZyBubyBjb2xsZWN0aW9uIGlzIHByZXNlbnQuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJjb2xsZWN0aW9uIixlKX1nZXQgYWNyb0Zvcm0oKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuI2t0LmdldCgiQWNyb0Zvcm0iKTt0IGluc3RhbmNlb2YgRGljdCYmdC5zaXplPjAmJihlPXQpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIkNhbm5vdCBmZXRjaCBBY3JvRm9ybSBlbnRyeTsgYXNzdW1pbmcgbm8gZm9ybXMgYXJlIHByZXNlbnQuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJhY3JvRm9ybSIsZSl9Z2V0IGFjcm9Gb3JtUmVmKCl7Y29uc3QgZT10aGlzLiNrdC5nZXRSYXcoIkFjcm9Gb3JtIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJhY3JvRm9ybVJlZiIsZSBpbnN0YW5jZW9mIFJlZj9lOm51bGwpfWdldCBtZXRhZGF0YSgpe2NvbnN0IGU9dGhpcy4ja3QuZ2V0UmF3KCJNZXRhZGF0YSIpO2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpcmV0dXJuIHNoYWRvdyh0aGlzLCJtZXRhZGF0YSIsbnVsbCk7bGV0IHQ9bnVsbDt0cnl7Y29uc3QgYT10aGlzLnhyZWYuZmV0Y2goZSwhdGhpcy54cmVmLmVuY3J5cHQ/LmVuY3J5cHRNZXRhZGF0YSk7aWYoYSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJmlzRGljdChhLmRpY3QsIk1ldGFkYXRhIikmJmlzTmFtZShhLmRpY3QuZ2V0KCJTdWJ0eXBlIiksIlhNTCIpKXtjb25zdCBlPXN0cmluZ1RvVVRGOFN0cmluZyhhLmdldFN0cmluZygpKTtlJiYodD1uZXcgTWV0YWRhdGFQYXJzZXIoZSkuc2VyaWFsaXphYmxlKX19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbyhgU2tpcHBpbmcgaW52YWxpZCBNZXRhZGF0YTogIiR7ZX0iLmApfXJldHVybiBzaGFkb3codGhpcywibWV0YWRhdGEiLHQpfWdldCBtYXJrSW5mbygpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy4jeXQoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBtYXJrIGluZm8uIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJtYXJrSW5mbyIsZSl9I3l0KCl7Y29uc3QgZT10aGlzLiNrdC5nZXQoIk1hcmtJbmZvIik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdCBhIG9mWyJNYXJrZWQiLCJVc2VyUHJvcGVydGllcyIsIlN1c3BlY3RzIl0pe2NvbnN0IG49ZS5nZXQoYSk7dC5zZXQoYSwhMD09PW4pfXJldHVybiB0fWdldCBoYXNTdHJ1Y3RUcmVlKCl7cmV0dXJuIHRoaXMuI2t0LmhhcygiU3RydWN0VHJlZVJvb3QiKX1nZXQgc3RydWN0VHJlZVJvb3QoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuI3F0KCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHJlYWQgdG8gc3RydWN0VHJlZVJvb3QgaW5mby4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInN0cnVjdFRyZWVSb290IixlKX0jcXQoKXtjb25zdCBlPXRoaXMuI2t0LmdldFJhdygiU3RydWN0VHJlZVJvb3QiKSx0PXRoaXMueHJlZi5mZXRjaElmUmVmKGUpO3JldHVybiB0IGluc3RhbmNlb2YgRGljdD9uZXcgU3RydWN0VHJlZVJvb3QodGhpcy54cmVmLHQsZSk6bnVsbH1nZXQgdG9wbGV2ZWxQYWdlc0RpY3QoKXtjb25zdCBlPXRoaXMuI2t0LmdldCgiUGFnZXMiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgdG9wLWxldmVsIHBhZ2VzIGRpY3Rpb25hcnkuIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJ0b3BsZXZlbFBhZ2VzRGljdCIsZSl9Z2V0IGRvY3VtZW50T3V0bGluZSgpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy4jdnQoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBkb2N1bWVudCBvdXRsaW5lLiIpfXJldHVybiBzaGFkb3codGhpcywiZG9jdW1lbnRPdXRsaW5lIixlKX0jdnQoZT17fSl7bGV0IHQ9dGhpcy4ja3QuZ2V0KCJPdXRsaW5lcyIpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO3Q9dC5nZXRSYXcoIkZpcnN0Iik7aWYoISh0IGluc3RhbmNlb2YgUmVmKSlyZXR1cm4gbnVsbDtjb25zdCBhPXtpdGVtczpbXX0sbj1be29iajp0LHBhcmVudDphfV0scz1uZXcgUmVmU2V0O3MucHV0KHQpO2NvbnN0IHI9dGhpcy54cmVmLGk9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO2Zvcig7bi5sZW5ndGg+MDspe2NvbnN0IGE9bi5zaGlmdCgpLG89ci5mZXRjaElmUmVmKGEub2JqKTtpZihudWxsPT09byljb250aW51ZTtvLmhhcygiVGl0bGUiKXx8d2FybigiSW52YWxpZCBvdXRsaW5lIGl0ZW0gZW5jb3VudGVyZWQuIik7Y29uc3QgbD17dXJsOm51bGwsZGVzdDpudWxsLGFjdGlvbjpudWxsfTtDYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0Om8scmVzdWx0T2JqOmwsZG9jQmFzZVVybDp0aGlzLmJhc2VVcmwsZG9jQXR0YWNobWVudHM6dGhpcy5hdHRhY2htZW50c30pO2NvbnN0IGY9by5nZXQoIlRpdGxlIiksYz1vLmdldCgiRiIpfHwwLGg9by5nZXRBcnJheSgiQyIpLHU9by5nZXQoIkNvdW50Iik7bGV0IG09aTshaXNOdW1iZXJBcnJheShoLDMpfHwwPT09aFswXSYmMD09PWhbMV0mJjA9PT1oWzJdfHwobT1Db2xvclNwYWNlVXRpbHMucmdiLmdldFJnYihoLDApKTtjb25zdCBwPXthY3Rpb246bC5hY3Rpb24sYXR0YWNobWVudElkOmwuYXR0YWNobWVudElkLGF0dGFjaG1lbnQ6bC5hdHRhY2htZW50LGRlc3Q6bC5kZXN0LHVybDpsLnVybCx1bnNhZmVVcmw6bC51bnNhZmVVcmwsbmV3V2luZG93OmwubmV3V2luZG93LHNldE9DR1N0YXRlOmwuc2V0T0NHU3RhdGUsdGl0bGU6InN0cmluZyI9PXR5cGVvZiBmP3N0cmluZ1RvUERGU3RyaW5nKGYpOiIiLGNvbG9yOm0sY291bnQ6TnVtYmVyLmlzSW50ZWdlcih1KT91OnZvaWQgMCxib2xkOiEhKDImYyksaXRhbGljOiEhKDEmYyksaXRlbXM6W119O2Uua2VlcFJhd0RpY3QmJihwLnJhd0RpY3Q9byk7YS5wYXJlbnQuaXRlbXMucHVzaChwKTt0PW8uZ2V0UmF3KCJGaXJzdCIpO2lmKHQgaW5zdGFuY2VvZiBSZWYmJiFzLmhhcyh0KSl7bi5wdXNoKHtvYmo6dCxwYXJlbnQ6cH0pO3MucHV0KHQpfXQ9by5nZXRSYXcoIk5leHQiKTtpZih0IGluc3RhbmNlb2YgUmVmJiYhcy5oYXModCkpe24ucHVzaCh7b2JqOnQscGFyZW50OmEucGFyZW50fSk7cy5wdXQodCl9fXJldHVybiBhLml0ZW1zLmxlbmd0aD4wP2EuaXRlbXM6bnVsbH1nZXQgZG9jdW1lbnRPdXRsaW5lRm9yRWRpdG9yKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLiN2dCh7a2VlcFJhd0RpY3Q6ITB9KX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBkb2N1bWVudCBvdXRsaW5lLiIpfXJldHVybiBzaGFkb3codGhpcywiZG9jdW1lbnRPdXRsaW5lRm9yRWRpdG9yIixlKX1nZXQgcGVybWlzc2lvbnMoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuI1N0KCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHRvIHJlYWQgcGVybWlzc2lvbnMuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJwZXJtaXNzaW9ucyIsZSl9I1N0KCl7Y29uc3QgZT10aGlzLnhyZWYudHJhaWxlci5nZXQoIkVuY3J5cHQiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtsZXQgdD1lLmdldCgiUCIpO2lmKCJudW1iZXIiIT10eXBlb2YgdClyZXR1cm4gbnVsbDt0Kz0yKiozMjtjb25zdCBhPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LnZhbHVlcyhrKSl0JmUmJmEuYWRkKGUpO3JldHVybiBhfWdldCBvcHRpb25hbENvbnRlbnRDb25maWcoKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuI2t0LmdldCgiT0NQcm9wZXJ0aWVzIik7aWYoIXQpcmV0dXJuIHNoYWRvdyh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IGE9dC5nZXQoIkQiKTtpZighYSlyZXR1cm4gc2hhZG93KHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3Qgbj10LmdldCgiT0NHcyIpO2lmKCFBcnJheS5pc0FycmF5KG4pKXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCBzPW5ldyBSZWZNYXA7Zm9yKGNvbnN0IGUgb2YgbillIGluc3RhbmNlb2YgUmVmJiYhcy5oYXMoZSkmJnMucHV0KGUsdGhpcy4jQXQoZSkpO2U9dGhpcy4jeHQoYSxzKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBVbmFibGUgdG8gcmVhZCBvcHRpb25hbCBjb250ZW50IGNvbmZpZzogJHtlfWApfXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixlKX0jQXQoZSl7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2goZSksYT17aWQ6ZS50b1N0cmluZygpLG5hbWU6bnVsbCxpbnRlbnQ6bnVsbCx1c2FnZTp7cHJpbnQ6bnVsbCx2aWV3Om51bGx9LHJiR3JvdXBzOltdfSxuPXQuZ2V0KCJOYW1lIik7InN0cmluZyI9PXR5cGVvZiBuJiYoYS5uYW1lPXN0cmluZ1RvUERGU3RyaW5nKG4pKTtsZXQgcz10LmdldEFycmF5KCJJbnRlbnQiKTtBcnJheS5pc0FycmF5KHMpfHwocz1bc10pO3MuZXZlcnkoZT0+ZSBpbnN0YW5jZW9mIE5hbWUpJiYoYS5pbnRlbnQ9cy5tYXAoZT0+ZS5uYW1lKSk7Y29uc3Qgcj10LmdldCgiVXNhZ2UiKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gYTtjb25zdCBpPWEudXNhZ2Usbz1yLmdldCgiUHJpbnQiKTtpZihvIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1vLmdldCgiUHJpbnRTdGF0ZSIpO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiT04iOmNhc2UiT0ZGIjppLnByaW50PXtwcmludFN0YXRlOmUubmFtZX19fWNvbnN0IGw9ci5nZXQoIlZpZXciKTtpZihsIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1sLmdldCgiVmlld1N0YXRlIik7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJPTiI6Y2FzZSJPRkYiOmkudmlldz17dmlld1N0YXRlOmUubmFtZX19fXJldHVybiBhfSN4dChlLHQpe2Z1bmN0aW9uIHBhcnNlT25PZmYoZSl7Y29uc3QgYT1bXTtpZihBcnJheS5pc0FycmF5KGUpKWZvcihjb25zdCBuIG9mIGUpbiBpbnN0YW5jZW9mIFJlZiYmdC5oYXMobikmJmEucHVzaChuLnRvU3RyaW5nKCkpO3JldHVybiBhfWZ1bmN0aW9uIHBhcnNlT3JkZXIoZSxhPTApe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiBudWxsO2NvbnN0IHM9W107Zm9yKGNvbnN0IHIgb2YgZSl7aWYociBpbnN0YW5jZW9mIFJlZiYmdC5oYXMocikpe24ucHV0KHIpO3MucHVzaChyLnRvU3RyaW5nKCkpO2NvbnRpbnVlfWNvbnN0IGU9cGFyc2VOZXN0ZWRPcmRlcihyLGEpO2UmJnMucHVzaChlKX1pZihhPjApcmV0dXJuIHM7Y29uc3Qgcj1bXTtmb3IoY29uc3RbZV1vZiB0Lml0ZW1zKCkpbi5oYXMoZSl8fHIucHVzaChlLnRvU3RyaW5nKCkpO3IubGVuZ3RoJiZzLnB1c2goe25hbWU6bnVsbCxvcmRlcjpyfSk7cmV0dXJuIHN9ZnVuY3Rpb24gcGFyc2VOZXN0ZWRPcmRlcihlLHQpe2lmKCsrdD5zKXt3YXJuKCJwYXJzZU5lc3RlZE9yZGVyIC0gcmVhY2hlZCBNQVhfTkVTVEVEX0xFVkVMUy4iKTtyZXR1cm4gbnVsbH1jb25zdCBuPWEuZmV0Y2hJZlJlZihlKTtpZighQXJyYXkuaXNBcnJheShuKSlyZXR1cm4gbnVsbDtjb25zdCByPWEuZmV0Y2hJZlJlZihuWzBdKTtpZigic3RyaW5nIiE9dHlwZW9mIHIpcmV0dXJuIG51bGw7Y29uc3QgaT1wYXJzZU9yZGVyKG4uc2xpY2UoMSksdCk7cmV0dXJuIGk/Lmxlbmd0aD97bmFtZTpzdHJpbmdUb1BERlN0cmluZyhyKSxvcmRlcjppfTpudWxsfWNvbnN0IGE9dGhpcy54cmVmLG49bmV3IFJlZlNldCxzPTEwOyFmdW5jdGlvbiBwYXJzZVJCR3JvdXBzKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IG4gb2YgZSl7Y29uc3QgZT1hLmZldGNoSWZSZWYobik7aWYoIUFycmF5LmlzQXJyYXkoZSl8fCFlLmxlbmd0aCljb250aW51ZTtjb25zdCBzPW5ldyBTZXQ7Zm9yKGNvbnN0IGEgb2YgZSlpZihhIGluc3RhbmNlb2YgUmVmJiZ0LmhhcyhhKSYmIXMuaGFzKGEudG9TdHJpbmcoKSkpe3MuYWRkKGEudG9TdHJpbmcoKSk7dC5nZXQoYSkucmJHcm91cHMucHVzaChzKX19fShlLmdldCgiUkJHcm91cHMiKSk7cmV0dXJue25hbWU6InN0cmluZyI9PXR5cGVvZiBlLmdldCgiTmFtZSIpP3N0cmluZ1RvUERGU3RyaW5nKGUuZ2V0KCJOYW1lIikpOm51bGwsY3JlYXRvcjoic3RyaW5nIj09dHlwZW9mIGUuZ2V0KCJDcmVhdG9yIik/c3RyaW5nVG9QREZTdHJpbmcoZS5nZXQoIkNyZWF0b3IiKSk6bnVsbCxiYXNlU3RhdGU6ZS5nZXQoIkJhc2VTdGF0ZSIpaW5zdGFuY2VvZiBOYW1lP2UuZ2V0KCJCYXNlU3RhdGUiKS5uYW1lOm51bGwsb246cGFyc2VPbk9mZihlLmdldCgiT04iKSksb2ZmOnBhcnNlT25PZmYoZS5nZXQoIk9GRiIpKSxvcmRlcjpwYXJzZU9yZGVyKGUuZ2V0KCJPcmRlciIpKSxncm91cHM6Wy4uLnRdfX1zZXRBY3R1YWxOdW1QYWdlcyhlPW51bGwpe3RoaXMuI2d0PWV9Z2V0IGhhc0FjdHVhbE51bVBhZ2VzKCl7cmV0dXJuIG51bGwhPT10aGlzLiNndH1nZXQgX3BhZ2VzQ291bnQoKXtjb25zdCBlPXRoaXMudG9wbGV2ZWxQYWdlc0RpY3QuZ2V0KCJDb3VudCIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZSBjb3VudCBpbiB0b3AtbGV2ZWwgcGFnZXMgZGljdGlvbmFyeSBpcyBub3QgYW4gaW50ZWdlci4iKTtyZXR1cm4gc2hhZG93KHRoaXMsIl9wYWdlc0NvdW50IixlKX1nZXQgbnVtUGFnZXMoKXtyZXR1cm4gdGhpcy4jZ3Q/P3RoaXMuX3BhZ2VzQ291bnR9Z2V0IGRlc3RpbmF0aW9ucygpe2NvbnN0IGU9bmV3IE1hcDtmb3IoY29uc3QgdCBvZiB0aGlzLiNDdCgpKWlmKHQgaW5zdGFuY2VvZiBOYW1lVHJlZSlmb3IoY29uc3RbYSxuXW9mIHQuZ2V0QWxsKCkpe2NvbnN0IHQ9ZmV0Y2hEZXN0KG4pO3QmJmUuc2V0KHN0cmluZ1RvUERGU3RyaW5nKGEsITApLHQpfWVsc2UgaWYodCBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0W2Esbl1vZiB0KXtjb25zdCB0PWZldGNoRGVzdChuKTt0JiZlLmdldE9ySW5zZXJ0KHN0cmluZ1RvUERGU3RyaW5nKGEsITApLHQpfXJldHVybiBzaGFkb3codGhpcywiZGVzdGluYXRpb25zIixlKX1nZXREZXN0aW5hdGlvbihlKXtpZihPYmplY3QuaGFzT3duKHRoaXMsImRlc3RpbmF0aW9ucyIpKXJldHVybiB0aGlzLmRlc3RpbmF0aW9ucy5nZXQoZSk/P251bGw7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jQ3QoKSlpZih0IGluc3RhbmNlb2YgTmFtZVRyZWV8fHQgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBhPWZldGNoRGVzdCh0LmdldChlKSk7aWYoYSlyZXR1cm4gYX1yZXR1cm4gdGhpcy5kZXN0aW5hdGlvbnMuZ2V0KGUpPz9udWxsfSNDdCgpe2NvbnN0IGU9dGhpcy4ja3QuZ2V0KCJOYW1lcyIpLHQ9W107ZT8uaGFzKCJEZXN0cyIpJiZ0LnB1c2gobmV3IE5hbWVUcmVlKGUuZ2V0UmF3KCJEZXN0cyIpLHRoaXMueHJlZikpO3RoaXMuI2t0LmhhcygiRGVzdHMiKSYmdC5wdXNoKHRoaXMuI2t0LmdldCgiRGVzdHMiKSk7cmV0dXJuIHR9Z2V0IHJhd1BhZ2VMYWJlbHMoKXtjb25zdCBlPXRoaXMuI2t0LmdldFJhdygiUGFnZUxhYmVscyIpO2lmKCFlKXJldHVybiBudWxsO3JldHVybiBuZXcgTnVtYmVyVHJlZShlLHRoaXMueHJlZikuZ2V0QWxsKCl9Z2V0IHBhZ2VMYWJlbHMoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuI0l0KCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHRvIHJlYWQgcGFnZSBsYWJlbHMuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJwYWdlTGFiZWxzIixlKX0jSXQoKXtjb25zdCBlPXRoaXMucmF3UGFnZUxhYmVscztpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBBcnJheSh0aGlzLm51bVBhZ2VzKTtsZXQgYT1udWxsLG49IiIscz0iIixyPTE7Zm9yKGxldCBpPTAsbz10aGlzLm51bVBhZ2VzO2k8bztpKyspe2NvbnN0IG89ZS5nZXQoaSk7aWYodm9pZCAwIT09byl7aWYoIShvIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlTGFiZWwgaXMgbm90IGEgZGljdGlvbmFyeS4iKTtpZihvLmhhcygiVHlwZSIpJiYhaXNOYW1lKG8uZ2V0KCJUeXBlIiksIlBhZ2VMYWJlbCIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCB0eXBlIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2lmKG8uaGFzKCJTIikpe2NvbnN0IGU9by5nZXQoIlMiKTtpZighKGUgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgc3R5bGUgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuIik7YT1lLm5hbWV9ZWxzZSBhPW51bGw7aWYoby5oYXMoIlAiKSl7Y29uc3QgZT1vLmdldCgiUCIpO2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgcHJlZml4IGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO249c3RyaW5nVG9QREZTdHJpbmcoZSl9ZWxzZSBuPSIiO2lmKG8uaGFzKCJTdCIpKXtjb25zdCBlPW8uZ2V0KCJTdCIpO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT49MSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHN0YXJ0IGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO3I9ZX1lbHNlIHI9MX1zd2l0Y2goYSl7Y2FzZSJEIjpzPXI7YnJlYWs7Y2FzZSJSIjpjYXNlInIiOnM9dG9Sb21hbk51bWVyYWxzKHIsInIiPT09YSk7YnJlYWs7Y2FzZSJBIjpjYXNlImEiOmNvbnN0IGU9MjYsdD1yLTE7cz1TdHJpbmcuZnJvbUNoYXJDb2RlKGEuY2hhckNvZGVBdCgwKSt0JWUpLnJlcGVhdChNYXRoLmZsb29yKHQvZSkrMSk7YnJlYWs7ZGVmYXVsdDppZihhKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBzdHlsZSAiJHthfSIgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuYCk7cz0iIn10W2ldPW4rcztyKyt9cmV0dXJuIHR9Z2V0IHBhZ2VMYXlvdXQoKXtjb25zdCBlPXRoaXMuI2t0LmdldCgiUGFnZUxheW91dCIpO2xldCB0PSIiO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiU2luZ2xlUGFnZSI6Y2FzZSJPbmVDb2x1bW4iOmNhc2UiVHdvQ29sdW1uTGVmdCI6Y2FzZSJUd29Db2x1bW5SaWdodCI6Y2FzZSJUd29QYWdlTGVmdCI6Y2FzZSJUd29QYWdlUmlnaHQiOnQ9ZS5uYW1lfXJldHVybiBzaGFkb3codGhpcywicGFnZUxheW91dCIsdCl9Z2V0IHBhZ2VNb2RlKCl7Y29uc3QgZT10aGlzLiNrdC5nZXQoIlBhZ2VNb2RlIik7bGV0IHQ9IlVzZU5vbmUiO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiVXNlTm9uZSI6Y2FzZSJVc2VPdXRsaW5lcyI6Y2FzZSJVc2VUaHVtYnMiOmNhc2UiRnVsbFNjcmVlbiI6Y2FzZSJVc2VPQyI6Y2FzZSJVc2VBdHRhY2htZW50cyI6dD1lLm5hbWV9cmV0dXJuIHNoYWRvdyh0aGlzLCJwYWdlTW9kZSIsdCl9Z2V0IHZpZXdlclByZWZlcmVuY2VzKCl7Y29uc3QgZT10aGlzLiNrdC5nZXQoIlZpZXdlclByZWZlcmVuY2VzIik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsbnVsbCk7bGV0IHQ9bnVsbDtmb3IoY29uc3RbYSxuXW9mIGUpe2xldCBlO3N3aXRjaChhKXtjYXNlIkhpZGVUb29sYmFyIjpjYXNlIkhpZGVNZW51YmFyIjpjYXNlIkhpZGVXaW5kb3dVSSI6Y2FzZSJGaXRXaW5kb3ciOmNhc2UiQ2VudGVyV2luZG93IjpjYXNlIkRpc3BsYXlEb2NUaXRsZSI6Y2FzZSJQaWNrVHJheUJ5UERGU2l6ZSI6ImJvb2xlYW4iPT10eXBlb2YgbiYmKGU9bik7YnJlYWs7Y2FzZSJOb25GdWxsU2NyZWVuUGFnZU1vZGUiOmlmKG4gaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChuLm5hbWUpe2Nhc2UiVXNlTm9uZSI6Y2FzZSJVc2VPdXRsaW5lcyI6Y2FzZSJVc2VUaHVtYnMiOmNhc2UiVXNlT0MiOmU9bi5uYW1lO2JyZWFrO2RlZmF1bHQ6ZT0iVXNlTm9uZSJ9YnJlYWs7Y2FzZSJEaXJlY3Rpb24iOmlmKG4gaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChuLm5hbWUpe2Nhc2UiTDJSIjpjYXNlIlIyTCI6ZT1uLm5hbWU7YnJlYWs7ZGVmYXVsdDplPSJMMlIifWJyZWFrO2Nhc2UiVmlld0FyZWEiOmNhc2UiVmlld0NsaXAiOmNhc2UiUHJpbnRBcmVhIjpjYXNlIlByaW50Q2xpcCI6aWYobiBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKG4ubmFtZSl7Y2FzZSJNZWRpYUJveCI6Y2FzZSJDcm9wQm94IjpjYXNlIkJsZWVkQm94IjpjYXNlIlRyaW1Cb3giOmNhc2UiQXJ0Qm94IjplPW4ubmFtZTticmVhaztkZWZhdWx0OmU9IkNyb3BCb3gifWJyZWFrO2Nhc2UiUHJpbnRTY2FsaW5nIjppZihuIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2gobi5uYW1lKXtjYXNlIk5vbmUiOmNhc2UiQXBwRGVmYXVsdCI6ZT1uLm5hbWU7YnJlYWs7ZGVmYXVsdDplPSJBcHBEZWZhdWx0In1icmVhaztjYXNlIkR1cGxleCI6aWYobiBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKG4ubmFtZSl7Y2FzZSJTaW1wbGV4IjpjYXNlIkR1cGxleEZsaXBTaG9ydEVkZ2UiOmNhc2UiRHVwbGV4RmxpcExvbmdFZGdlIjplPW4ubmFtZTticmVhaztkZWZhdWx0OmU9Ik5vbmUifWJyZWFrO2Nhc2UiUHJpbnRQYWdlUmFuZ2UiOkFycmF5LmlzQXJyYXkobikmJm4ubGVuZ3RoJTI9PTAmJm4uZXZlcnkoKGUsdCxhKT0+TnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wJiYoMD09PXR8fGU+PWFbdC0xXSkmJmU8PXRoaXMubnVtUGFnZXMpJiYoZT1uKTticmVhaztjYXNlIk51bUNvcGllcyI6TnVtYmVyLmlzSW50ZWdlcihuKSYmbj4wJiYoZT1uKTticmVhaztkZWZhdWx0Ondhcm4oYElnbm9yaW5nIG5vbi1zdGFuZGFyZCBrZXkgaW4gVmlld2VyUHJlZmVyZW5jZXM6ICR7YX0uYCk7Y29udGludWV9dm9pZCAwIT09ZT8odD8/PW5ldyBNYXApLnNldChhLGUpOndhcm4oYEJhZCB2YWx1ZSwgZm9yIGtleSAiJHthfSIsIGluIFZpZXdlclByZWZlcmVuY2VzOiAke259LmApfXJldHVybiBzaGFkb3codGhpcywidmlld2VyUHJlZmVyZW5jZXMiLHQpfWdldCBvcGVuQWN0aW9uKCl7Y29uc3QgZT10aGlzLiNrdC5nZXQoIk9wZW5BY3Rpb24iKSx0PW5ldyBNYXA7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGE9bmV3IERpY3QodGhpcy54cmVmKTthLnNldCgiQSIsZSk7Y29uc3Qgbj17dXJsOm51bGwsZGVzdDpudWxsLGFjdGlvbjpudWxsfTtDYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OmEscmVzdWx0T2JqOm59KTtBcnJheS5pc0FycmF5KG4uZGVzdCk/dC5zZXQoImRlc3QiLG4uZGVzdCk6bi5hY3Rpb24mJnQuc2V0KCJhY3Rpb24iLG4uYWN0aW9uKX1lbHNlIHJvKGUpJiZ0LnNldCgiZGVzdCIsZSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJvcGVuQWN0aW9uIix0LnNpemU/dDpudWxsKX1nZXQgYXR0YWNobWVudHMoKXtjb25zdCBlPXRoaXMuI2t0LmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2lmKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiRW1iZWRkZWRGaWxlcyIpKXtjb25zdCBhPW5ldyBOYW1lVHJlZShlLmdldFJhdygiRW1iZWRkZWRGaWxlcyIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2Usbl1vZiBhLmdldEFsbCgpKSh0Pz89bmV3IE1hcCkuc2V0KHN0cmluZ1RvUERGU3RyaW5nKGUsITApLG5ldyBGaWxlU3BlYyhuKS5zZXJpYWxpemFibGUpfXJldHVybiBzaGFkb3codGhpcywiYXR0YWNobWVudHMiLHQpfSNGdChlKXtjb25zdCB0PXRoaXMuI2t0LmdldCgiTmFtZXMiKTtpZih0IGluc3RhbmNlb2YgRGljdCYmdC5oYXMoIkVtYmVkZGVkRmlsZXMiKSl7Y29uc3QgYT1uZXcgTmFtZVRyZWUodC5nZXRSYXcoIkVtYmVkZGVkRmlsZXMiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFt0LG5db2YgYS5nZXRBbGwoKSlpZihzdHJpbmdUb1BERlN0cmluZyh0LCEwKT09PWUpcmV0dXJuIEZpbGVTcGVjLnJlYWRDb250ZW50KG4pfX1hdHRhY2htZW50Q29udGVudChlKXtjb25zdCB0PXRoaXMuI0Z0KGUpO2lmKHZvaWQgMCE9PXQpcmV0dXJuIHQ7Y29uc3QgYT10aGlzLiN3dC5nZXQoZSk7aWYoYSl7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2goYSk7aWYodCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2NvbnN0IGE9RmlsZVNwZWMucmVhZFN0cmVhbUNvbnRlbnQodCk7cmV0dXJuIHRoaXMuI2p0LmhhcyhlKT9mdW5jdGlvbiBzb3VuZFN0cmVhbVRvV2F2KGUsdCl7Y29uc3QgYT1nZXRTb3VuZEZvcm1hdChlLmRpY3QpO2lmKCFhKXJldHVybiBudWxsO2NvbnN0e2NoYW5uZWxzOm4sc2FtcGxlUmF0ZTpzLGJpdHNQZXJTYW1wbGU6cixlbmNvZGluZzppfT1hLG89bioocj4+MyksbD10Lmxlbmd0aC10Lmxlbmd0aCVvO2lmKDA9PT1sKXJldHVybiBudWxsO2NvbnN0IGY9bmV3IFVpbnQ4QXJyYXkoNDQrbCksYz1uZXcgRGF0YVZpZXcoZi5idWZmZXIpO2Yuc2V0KHN0cmluZ1RvQnl0ZXMoIlJJRkYiKSwwKTtjLnNldFVpbnQzMig0LDM2K2wsITApO2Yuc2V0KHN0cmluZ1RvQnl0ZXMoIldBVkUiKSw4KTtmLnNldChzdHJpbmdUb0J5dGVzKCJmbXQgIiksMTIpO2Muc2V0VWludDMyKDE2LDE2LCEwKTtjLnNldFVpbnQxNigyMCwxLCEwKTtjLnNldFVpbnQxNigyMixuLCEwKTtjLnNldFVpbnQzMigyNCxzLCEwKTtjLnNldFVpbnQzMigyOCxzKm8sITApO2Muc2V0VWludDE2KDMyLG8sITApO2Muc2V0VWludDE2KDM0LHIsITApO2Yuc2V0KHN0cmluZ1RvQnl0ZXMoImRhdGEiKSwzNik7Yy5zZXRVaW50MzIoNDAsbCwhMCk7aWYoMTY9PT1yKXtjb25zdCBlPSJTaWduZWQiPT09aTtmb3IobGV0IGE9MDthPGw7YSs9Mil7bGV0IG49dFthXTw8OHx0W2ErMV07ZT9uPj0zMjc2OCYmKG4tPTY1NTM2KTpuLT0zMjc2ODtjLnNldEludDE2KDQ0K2EsbiwhMCl9fWVsc2UgaWYoIlNpZ25lZCI9PT1pKWZvcihsZXQgZT0wO2U8bDtlKyspZls0NCtlXT10W2VdKzEyOCYyNTU7ZWxzZSBmLnNldCh0LnN1YmFycmF5KDAsbCksNDQpO3JldHVybiBmfSh0LGEpPz9hOmF9cmV0dXJuIHQgaW5zdGFuY2VvZiBEaWN0P0ZpbGVTcGVjLnJlYWRDb250ZW50KHQpOm51bGx9cmV0dXJuIG51bGx9Z2V0IHJhd0VtYmVkZGVkRmlsZXMoKXtjb25zdCBlPXRoaXMuI2t0LmdldCgiTmFtZXMiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiRW1iZWRkZWRGaWxlcyIpKSlyZXR1cm4gbnVsbDtyZXR1cm4gbmV3IE5hbWVUcmVlKGUuZ2V0UmF3KCJFbWJlZGRlZEZpbGVzIiksdGhpcy54cmVmKS5nZXRBbGwoITApfWdldCB4ZmFJbWFnZXMoKXtjb25zdCBlPXRoaXMuI2t0LmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2lmKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiWEZBSW1hZ2VzIikpe2NvbnN0IGE9bmV3IE5hbWVUcmVlKGUuZ2V0UmF3KCJYRkFJbWFnZXMiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLG5db2YgYS5nZXRBbGwoKSlpZihuIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7dD8/PW5ldyBNYXA7dC5zZXQoc3RyaW5nVG9QREZTdHJpbmcoZSwhMCksbi5nZXRCeXRlcygpKX19cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFJbWFnZXMiLHQpfSNUdCgpe2NvbnN0IGU9dGhpcy4ja3QuZ2V0KCJOYW1lcyIpO2xldCB0PW51bGw7ZnVuY3Rpb24gYXBwZW5kSWZKYXZhU2NyaXB0RGljdChlLGEpe2lmKCEoYSBpbnN0YW5jZW9mIERpY3QmJmlzTmFtZShhLmdldCgiUyIpLCJKYXZhU2NyaXB0IikpKXJldHVybjtsZXQgbj1hLmdldCgiSlMiKTtpZihuIGluc3RhbmNlb2YgQmFzZVN0cmVhbSluPW4uZ2V0U3RyaW5nKCk7ZWxzZSBpZigic3RyaW5nIiE9dHlwZW9mIG4pcmV0dXJuO249c3RyaW5nVG9QREZTdHJpbmcobiwhMCkucmVwbGFjZUFsbCgiXDAiLCIiKTtuJiYodD8/PW5ldyBNYXApLnNldChlLG4pfWlmKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiSmF2YVNjcmlwdCIpKXtjb25zdCB0PW5ldyBOYW1lVHJlZShlLmdldFJhdygiSmF2YVNjcmlwdCIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2UsYV1vZiB0LmdldEFsbCgpKWFwcGVuZElmSmF2YVNjcmlwdERpY3Qoc3RyaW5nVG9QREZTdHJpbmcoZSwhMCksYSl9Y29uc3QgYT10aGlzLiNrdC5nZXQoIk9wZW5BY3Rpb24iKTthJiZhcHBlbmRJZkphdmFTY3JpcHREaWN0KCJPcGVuQWN0aW9uIixhKTtyZXR1cm4gdH1nZXQganNBY3Rpb25zKCl7Y29uc3QgZT10aGlzLiNUdCgpO2xldCB0PWNvbGxlY3RBY3Rpb25zKHRoaXMueHJlZix0aGlzLiNrdCxsZSk7aWYoZSl7dD8/PW5ldyBNYXA7Zm9yKGNvbnN0W2Esbl1vZiBlKXQuZ2V0T3JJbnNlcnRDb21wdXRlZChhLG1ha2VBcnIpLnB1c2gobil9cmV0dXJuIHNoYWRvdyh0aGlzLCJqc0FjdGlvbnMiLHQpfWFzeW5jIGNsZWFudXAoZT0hMSl7Y2xlYXJHbG9iYWxDYWNoZXMoKTt0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZS5jbGVhcigpO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5jbGVhcihlKTt0aGlzLnBhZ2VLaWRzQ291bnRDYWNoZS5jbGVhcigpO3RoaXMucGFnZUluZGV4Q2FjaGUuY2xlYXIoKTt0aGlzLnBhZ2VEaWN0Q2FjaGUuY2xlYXIoKTt0aGlzLm5vbkJsZW5kTW9kZXNTZXQuY2xlYXIoKTtmb3IoY29uc3R7ZGljdDplfW9mIGF3YWl0IFByb21pc2UuYWxsKHRoaXMuZm9udENhY2hlKSlkZWxldGUgZS5jYWNoZUtleTt0aGlzLmZvbnRDYWNoZS5jbGVhcigpO3RoaXMuYnVpbHRJbkNNYXBDYWNoZS5jbGVhcigpO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLmNsZWFyKCk7dGhpcy5zeXN0ZW1Gb250Q2FjaGUuY2xlYXIoKX1hc3luYyBnZXRQYWdlRGljdChlKXtjb25zdCB0PVt0aGlzLnRvcGxldmVsUGFnZXNEaWN0XSxhPW5ldyBSZWZTZXQsbj10aGlzLiNrdC5nZXRSYXcoIlBhZ2VzIik7biBpbnN0YW5jZW9mIFJlZiYmYS5wdXQobik7Y29uc3Qgcz10aGlzLnhyZWYscj10aGlzLnBhZ2VLaWRzQ291bnRDYWNoZSxpPXRoaXMucGFnZUluZGV4Q2FjaGUsbz10aGlzLnBhZ2VEaWN0Q2FjaGU7bGV0IGw9MDtmb3IoO3QubGVuZ3RoOyl7Y29uc3Qgbj10LnBvcCgpO2lmKG4gaW5zdGFuY2VvZiBSZWYpe2NvbnN0IGY9ci5nZXQobik7aWYoZj49MCYmbCtmPD1lKXtsKz1mO2NvbnRpbnVlfWlmKGEuaGFzKG4pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIik7YS5wdXQobik7Y29uc3QgYz1hd2FpdChvLmdldChuKXx8cy5mZXRjaEFzeW5jKG4pKTtpZihjIGluc3RhbmNlb2YgRGljdCl7bGV0IHQ9Yy5nZXRSYXcoIlR5cGUiKTt0IGluc3RhbmNlb2YgUmVmJiYodD1hd2FpdCBzLmZldGNoQXN5bmModCkpO2lmKGlzTmFtZSh0LCJQYWdlIil8fCFjLmhhcygiS2lkcyIpKXtyLmhhcyhuKXx8ci5wdXQobiwxKTtpLmhhcyhuKXx8aS5wdXQobixsKTtpZihsPT09ZSlyZXR1cm5bYyxuXTtsKys7Y29udGludWV9fXQucHVzaChjKTtjb250aW51ZX1pZighKG4gaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWQgcmVmZXJlbmNlIHBvaW50cyB0byB3cm9uZyB0eXBlIG9mIG9iamVjdC4iKTtjb25zdHtvYmpJZDpmfT1uO2xldCBjPW4uZ2V0UmF3KCJDb3VudCIpO2MgaW5zdGFuY2VvZiBSZWYmJihjPWF3YWl0IHMuZmV0Y2hBc3luYyhjKSk7aWYoTnVtYmVyLmlzSW50ZWdlcihjKSYmYz49MCl7ZiYmIXIuaGFzKGYpJiZyLnB1dChmLGMpO2lmKGwrYzw9ZSl7bCs9Yztjb250aW51ZX19bGV0IGg9bi5nZXRSYXcoIktpZHMiKTtoIGluc3RhbmNlb2YgUmVmJiYoaD1hd2FpdCBzLmZldGNoQXN5bmMoaCkpO2lmKCFBcnJheS5pc0FycmF5KGgpKXtsZXQgdD1uLmdldFJhdygiVHlwZSIpO3QgaW5zdGFuY2VvZiBSZWYmJih0PWF3YWl0IHMuZmV0Y2hBc3luYyh0KSk7aWYoaXNOYW1lKHQsIlBhZ2UiKXx8IW4uaGFzKCJLaWRzIikpe2lmKGw9PT1lKXJldHVybltuLG51bGxdO2wrKztjb250aW51ZX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWRzIG9iamVjdCBpcyBub3QgYW4gYXJyYXkuIil9Zm9yKGxldCBlPWgubGVuZ3RoLTE7ZT49MDtlLS0pe2NvbnN0IGE9aFtlXTt0LnB1c2goYSk7bj09PXRoaXMudG9wbGV2ZWxQYWdlc0RpY3QmJmEgaW5zdGFuY2VvZiBSZWYmJiFvLmhhcyhhKSYmby5wdXQoYSxzLmZldGNoQXN5bmMoYSkpfX10aHJvdyBuZXcgRXJyb3IoYFBhZ2UgaW5kZXggJHtlfSBub3QgZm91bmQuYCl9YXN5bmMgZ2V0QWxsUGFnZURpY3RzKGU9ITEpe2NvbnN0e2lnbm9yZUVycm9yczp0fT10aGlzLnBkZk1hbmFnZXIuZXZhbHVhdG9yT3B0aW9ucyxhPVt7Y3VycmVudE5vZGU6dGhpcy50b3BsZXZlbFBhZ2VzRGljdCxwb3NJbktpZHM6MH1dLG49bmV3IFJlZlNldCxzPXRoaXMuI2t0LmdldFJhdygiUGFnZXMiKTtzIGluc3RhbmNlb2YgUmVmJiZuLnB1dChzKTtjb25zdCByPW5ldyBNYXAsaT10aGlzLnhyZWYsbz10aGlzLnBhZ2VJbmRleENhY2hlO2xldCBsPTA7ZnVuY3Rpb24gYWRkUGFnZURpY3QoZSx0KXt0JiYhby5oYXModCkmJm8ucHV0KHQsbCk7ci5zZXQobCsrLFtlLHRdKX1mdW5jdGlvbiBhZGRQYWdlRXJyb3IoYSl7aWYoYSBpbnN0YW5jZW9mIFhSZWZFbnRyeUV4Y2VwdGlvbiYmIWUpdGhyb3cgYTtpZihlJiZ0JiYwPT09bCl7d2FybihgZ2V0QWxsUGFnZURpY3RzIC0gU2tpcHBpbmcgaW52YWxpZCBmaXJzdCBwYWdlOiAiJHthfSIuYCk7YT1EaWN0LmVtcHR5fXIuc2V0KGwrKyxbYSxudWxsXSl9Zm9yKDthLmxlbmd0aD4wOyl7Y29uc3QgZT1hLmF0KC0xKSx7Y3VycmVudE5vZGU6dCxwb3NJbktpZHM6c309ZTtsZXQgcj10LmdldFJhdygiS2lkcyIpO2lmKHIgaW5zdGFuY2VvZiBSZWYpdHJ5e3I9YXdhaXQgaS5mZXRjaEFzeW5jKHIpfWNhdGNoKGUpe2FkZFBhZ2VFcnJvcihlKTticmVha31pZighQXJyYXkuaXNBcnJheShyKSl7bGV0IGU9dC5nZXRSYXcoIlR5cGUiKTtpZihlIGluc3RhbmNlb2YgUmVmKXRyeXtlPWF3YWl0IGkuZmV0Y2hBc3luYyhlKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9aWYoaXNOYW1lKGUsIlBhZ2UiKXx8IXQuaGFzKCJLaWRzIikpe2FkZFBhZ2VEaWN0KHQsbnVsbCk7YnJlYWt9YWRkUGFnZUVycm9yKG5ldyBGb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZHMgb2JqZWN0IGlzIG5vdCBhbiBhcnJheS4iKSk7YnJlYWt9aWYocz49ci5sZW5ndGgpe2EucG9wKCk7Y29udGludWV9Y29uc3Qgbz1yW3NdO2xldCBsO2lmKG8gaW5zdGFuY2VvZiBSZWYpe2lmKG4uaGFzKG8pKXthZGRQYWdlRXJyb3IobmV3IEZvcm1hdEVycm9yKCJQYWdlcyB0cmVlIGNvbnRhaW5zIGNpcmN1bGFyIHJlZmVyZW5jZS4iKSk7YnJlYWt9bi5wdXQobyk7dHJ5e2w9YXdhaXQgaS5mZXRjaEFzeW5jKG8pfWNhdGNoKGUpe2FkZFBhZ2VFcnJvcihlKTticmVha319ZWxzZSBsPW87aWYoIShsIGluc3RhbmNlb2YgRGljdCkpe2FkZFBhZ2VFcnJvcihuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWQgcmVmZXJlbmNlIHBvaW50cyB0byB3cm9uZyB0eXBlIG9mIG9iamVjdC4iKSk7YnJlYWt9bGV0IGY9bC5nZXRSYXcoIlR5cGUiKTtpZihmIGluc3RhbmNlb2YgUmVmKXRyeXtmPWF3YWl0IGkuZmV0Y2hBc3luYyhmKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9aXNOYW1lKGYsIlBhZ2UiKXx8IWwuaGFzKCJLaWRzIik/YWRkUGFnZURpY3QobCxvIGluc3RhbmNlb2YgUmVmP286bnVsbCk6YS5wdXNoKHtjdXJyZW50Tm9kZTpsLHBvc0luS2lkczowfSk7ZS5wb3NJbktpZHMrK31yZXR1cm4gcn1hc3luYyBnZXRQYWdlSW5kZXgoZSl7Y29uc3QgdD10aGlzLnBhZ2VJbmRleENhY2hlLmdldChlKTtpZih2b2lkIDAhPT10KXJldHVybiB0O2NvbnN0IGE9dGhpcy54cmVmO2xldCBuPTAscz1lO2NvbnN0IHI9bmV3IFJlZlNldDtyLnB1dChlKTtmb3IoOzspe2NvbnN0IHQ9YXdhaXQgYS5mZXRjaEFzeW5jKHMpO2lmKGlzUmVmc0VxdWFsKHMsZSkmJiFpc0RpY3QodCwiUGFnZSIpJiYhKHQgaW5zdGFuY2VvZiBEaWN0JiYhdC5oYXMoIlR5cGUiKSYmdC5oYXMoIkNvbnRlbnRzIikpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVGhlIHJlZmVyZW5jZSBkb2VzIG5vdCBwb2ludCB0byBhIC9QYWdlIGRpY3Rpb25hcnkuIik7aWYoIXQpYnJlYWs7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJOb2RlIG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IGk9dC5nZXRSYXcoIlBhcmVudCIpO2lmKGkgaW5zdGFuY2VvZiBSZWYpe2lmKHIuaGFzKGkpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIik7ci5wdXQoaSl9Y29uc3Qgbz1hd2FpdCB0LmdldEFzeW5jKCJQYXJlbnQiKTtpZighbylicmVhaztpZighKG8gaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhcmVudCBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtjb25zdCBsPWF3YWl0IG8uZ2V0QXN5bmMoIktpZHMiKTtpZighbClicmVhaztpZighQXJyYXkuaXNBcnJheShsKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIktpZHMgbXVzdCBiZSBhbiBhcnJheS4iKTtjb25zdCBmPVtdO2xldCBjPSExO2Zvcihjb25zdCBlIG9mIGwpe2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJLaWQgbXVzdCBiZSBhIHJlZmVyZW5jZS4iKTtpZihpc1JlZnNFcXVhbChlLHMpKXtjPSEwO2JyZWFrfWYucHVzaChhLmZldGNoQXN5bmMoZSkudGhlbihlPT57aWYoIShlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJLaWQgbm9kZSBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtpZihlLmhhcygiQ291bnQiKSl7Y29uc3QgdD1lLmdldCgiQ291bnQiKTtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpJiZ0Pj0wKXtuKz10O3JldHVybn10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkNvdW50IG11c3QgYmUgYSAocG9zaXRpdmUpIGludGVnZXIuIil9bisrfSkpfWlmKCFjKXRocm93IG5ldyBGb3JtYXRFcnJvcigiS2lkIHJlZmVyZW5jZSBub3QgZm91bmQgaW4gcGFyZW50J3Mga2lkcy4iKTthd2FpdCBQcm9taXNlLmFsbChmKTtzPWl9dGhpcy5wYWdlSW5kZXhDYWNoZS5wdXQoZSxuKTtyZXR1cm4gbn1nZXQgYmFzZVVybCgpe2NvbnN0IGU9dGhpcy4ja3QuZ2V0KCJVUkkiKTtpZihlIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgdD1lLmdldCgiQmFzZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7Y29uc3QgZT1jcmVhdGVWYWxpZEFic29sdXRlVXJsKHQsbnVsbCx7dHJ5Q29udmVydEVuY29kaW5nOiEwfSk7aWYoZSlyZXR1cm4gc2hhZG93KHRoaXMsImJhc2VVcmwiLGUuaHJlZil9fXJldHVybiBzaGFkb3codGhpcywiYmFzZVVybCIsdGhpcy5wZGZNYW5hZ2VyLmRvY0Jhc2VVcmwpfXN0YXRpYyNSdChlLHQpe2NvbnN0IGE9ZS5mZXRjaElmUmVmKHQpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2xldCBuPW51bGw7Y29uc3Qgcz1hLmdldFJhdygiUGciKTtzIGluc3RhbmNlb2YgUmVmJiYobj1zKTtpZighbil7Y29uc3Qgcz1bYV0scj1uZXcgUmVmU2V0O3IucHV0KHQpO2Zvcig7cy5sZW5ndGg+MCYmIW47KXtsZXQgdCxhPXMuc2hpZnQoKS5nZXRSYXcoIksiKTtpZihhIGluc3RhbmNlb2YgUmVmKXtpZihyLmhhcyhhKSljb250aW51ZTtyLnB1dChhKTthPWUuZmV0Y2goYSl9aWYoQXJyYXkuaXNBcnJheShhKSl0PWE7ZWxzZXtpZighYSljb250aW51ZTt0PVthXX1mb3IoY29uc3QgYSBvZiB0KXtpZihhIGluc3RhbmNlb2YgUmVmKXtpZihyLmhhcyhhKSljb250aW51ZTtyLnB1dChhKX1jb25zdCB0PWUuZmV0Y2hJZlJlZihhKTtpZighKHQgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtjb25zdCBpPXQuZ2V0UmF3KCJQZyIpO2lmKGkgaW5zdGFuY2VvZiBSZWYpe249aTticmVha31zLnB1c2godCl9fX1pZighbil7Y29uc3QgdD00MDtsZXQgcz1hO2ZvcihsZXQgYT0wO2E8dDthKyspe2NvbnN0IHQ9cy5nZXRSYXcoIlAiKTtpZighKHQgaW5zdGFuY2VvZiBSZWYpKWJyZWFrO2NvbnN0IGE9ZS5mZXRjaCh0KTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KXx8aXNOYW1lKGEuZ2V0KCJUeXBlIiksIlN0cnVjdFRyZWVSb290IikpYnJlYWs7Y29uc3Qgcj1hLmdldFJhdygiUGciKTtpZihyIGluc3RhbmNlb2YgUmVmKXtuPXI7YnJlYWt9cz1hfX1pZighbilyZXR1cm4gbnVsbDtsZXQgcj1udWxsLGk9bnVsbDtjb25zdCBvPWEuZ2V0KCJBIik7aWYobyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9bG9va3VwUmVjdChvLmdldEFycmF5KCJCQm94IiksbnVsbCk7aWYoZSl7cj1lWzBdO2k9ZVszXX19cmV0dXJuW24se25hbWU6IlhZWiJ9LHIsaSxudWxsXX1zdGF0aWMgcGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6ZSxyZXN1bHRPYmo6dCxkb2NCYXNlVXJsOmE9bnVsbCxkb2NBdHRhY2htZW50czpuPW51bGx9KXtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSl7d2FybigicGFyc2VEZXN0RGljdGlvbmFyeTogYGRlc3REaWN0YCBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtyZXR1cm59bGV0IHMscixpPWUuZ2V0KCJBIik7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpaWYoZS5oYXMoIkRlc3QiKSlpPWUuZ2V0KCJEZXN0Iik7ZWxzZXtpPWUuZ2V0KCJBQSIpO2kgaW5zdGFuY2VvZiBEaWN0JiYoaS5oYXMoIkQiKT9pPWkuZ2V0KCJEIik6aS5oYXMoIlUiKSYmKGk9aS5nZXQoIlUiKSkpfWlmKGkgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPWkuZ2V0KCJTIik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpe3dhcm4oInBhcnNlRGVzdERpY3Rpb25hcnk6IEludmFsaWQgdHlwZSBpbiBBY3Rpb24gZGljdGlvbmFyeS4iKTtyZXR1cm59Y29uc3QgYT1lLm5hbWU7c3dpdGNoKGEpe2Nhc2UiUmVzZXRGb3JtIjpjb25zdCBlPWkuZ2V0KCJGbGFncyIpLG89ISgxJigibnVtYmVyIj09dHlwZW9mIGU/ZTowKSksbD1bXSxmPVtdO2Zvcihjb25zdCBlIG9mIGkuZ2V0KCJGaWVsZHMiKXx8W10pZSBpbnN0YW5jZW9mIFJlZj9mLnB1c2goZS50b1N0cmluZygpKToic3RyaW5nIj09dHlwZW9mIGUmJmwucHVzaChzdHJpbmdUb1BERlN0cmluZyhlKSk7dC5yZXNldEZvcm09e2ZpZWxkczpsLHJlZnM6ZixpbmNsdWRlOm99O2JyZWFrO2Nhc2UiVVJJIjpzPWkuZ2V0KCJVUkkiKTtzIGluc3RhbmNlb2YgTmFtZSYmKHM9Ii8iK3MubmFtZSk7YnJlYWs7Y2FzZSJHb1RvIjpyPWkuZ2V0KCJEIik7YnJlYWs7Y2FzZSJMYXVuY2giOmNhc2UiR29Ub1IiOmNvbnN0IGM9aS5nZXQoIkYiKTtpZihjIGluc3RhbmNlb2YgRGljdClzPW5ldyBGaWxlU3BlYyhjKS5maWxlbmFtZTtlbHNle2lmKCJzdHJpbmciIT10eXBlb2YgYylicmVhaztzPWN9Y29uc3QgaD1mZXRjaFJlbW90ZURlc3QoaSk7aCYmKHM9cy5zcGxpdCgiIyIsMSlbMF0rIiMiK2gpO2NvbnN0IHU9aS5nZXQoIk5ld1dpbmRvdyIpOyJib29sZWFuIj09dHlwZW9mIHUmJih0Lm5ld1dpbmRvdz11KTticmVhaztjYXNlIkdvVG9FIjpjb25zdCBtPWkuZ2V0KCJUIik7bGV0IHA9bnVsbDtpZihtIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1tLmdldCgiUiIpLHQ9bS5nZXQoIk4iKTtpc05hbWUoZSwiQyIpJiYic3RyaW5nIj09dHlwZW9mIHQmJihwPXN0cmluZ1RvUERGU3RyaW5nKHQsITApKX1pZihuJiZwKXt0LmF0dGFjaG1lbnRJZD1wO3QuYXR0YWNobWVudD1uLmdldChwKTtjb25zdCBlPWZldGNoUmVtb3RlRGVzdChpKTtlJiYodC5hdHRhY2htZW50RGVzdD1lKX1lbHNlIHdhcm4oJ3BhcnNlRGVzdERpY3Rpb25hcnkgLSB1bmltcGxlbWVudGVkICJHb1RvRSIgYWN0aW9uLicpO2JyZWFrO2Nhc2UiTmFtZWQiOmNvbnN0IGQ9aS5nZXQoIk4iKTtkIGluc3RhbmNlb2YgTmFtZSYmKHQuYWN0aW9uPWQubmFtZSk7YnJlYWs7Y2FzZSJTZXRPQ0dTdGF0ZSI6Y29uc3QgZz1pLmdldCgiU3RhdGUiKSxiPWkuZ2V0KCJQcmVzZXJ2ZVJCIik7aWYoIUFycmF5LmlzQXJyYXkoZyl8fDA9PT1nLmxlbmd0aClicmVhaztjb25zdCB3PVtdO2Zvcihjb25zdCBlIG9mIGcpaWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJPTiI6Y2FzZSJPRkYiOmNhc2UiVG9nZ2xlIjp3LnB1c2goZS5uYW1lKX1lbHNlIGUgaW5zdGFuY2VvZiBSZWYmJncucHVzaChlLnRvU3RyaW5nKCkpO2lmKHcubGVuZ3RoIT09Zy5sZW5ndGgpYnJlYWs7dC5zZXRPQ0dTdGF0ZT17c3RhdGU6dyxwcmVzZXJ2ZVJCOiExIT09Yn07YnJlYWs7Y2FzZSJKYXZhU2NyaXB0Ijpjb25zdCBqPWkuZ2V0KCJKUyIpO2xldCBrO2ogaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2s9ai5nZXRTdHJpbmcoKToic3RyaW5nIj09dHlwZW9mIGomJihrPWopO2NvbnN0IHk9ayYmcmVjb3ZlckpzVVJMKHN0cmluZ1RvUERGU3RyaW5nKGssITApKTtpZih5KXtzPXkudXJsO3QubmV3V2luZG93PXkubmV3V2luZG93O2JyZWFrfWRlZmF1bHQ6aWYoIkphdmFTY3JpcHQiPT09YXx8IlN1Ym1pdEZvcm0iPT09YSlicmVhazt3YXJuKGBwYXJzZURlc3REaWN0aW9uYXJ5IC0gdW5zdXBwb3J0ZWQgYWN0aW9uOiAiJHthfSIuYCl9fWVsc2UgZS5oYXMoIkRlc3QiKSYmKHI9ZS5nZXQoIkRlc3QiKSk7aWYoInN0cmluZyI9PXR5cGVvZiBzKXtjb25zdCBlPWNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwocyxhLHthZGREZWZhdWx0UHJvdG9jb2w6ITAsdHJ5Q29udmVydEVuY29kaW5nOiEwfSk7ZSYmKHQudXJsPWUuaHJlZik7dC51bnNhZmVVcmw9c31pZihyKXtyIGluc3RhbmNlb2YgTmFtZSYmKHI9ci5uYW1lKTsic3RyaW5nIj09dHlwZW9mIHI/dC5kZXN0PXN0cmluZ1RvUERGU3RyaW5nKHIsITApOnJvKHIpJiYodC5kZXN0PXIpfWlmKCEodC5kZXN0fHx0LnVybHx8dC5hY3Rpb258fHQuYXR0YWNobWVudHx8dC5zZXRPQ0dTdGF0ZXx8dC5yZXNldEZvcm0pKXtjb25zdCBhPWUuZ2V0UmF3KCJTRSIpO2lmKGEgaW5zdGFuY2VvZiBSZWYpdHJ5e2NvbnN0IG49Q2F0YWxvZy4jUnQoZS54cmVmLGEpO24mJih0LmRlc3Q9bil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiU0UgcGFyc2luZyBmYWlsZWQuIil9fX19ZnVuY3Rpb24gY3JlYXRlSW1hZ2VEaWN0KGUsdCxhLG4pe2NvbnN0IHM9bmV3IERpY3QoZSk7cy5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO3Muc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiSW1hZ2UiKSk7cy5zZXQoIkJpdHNQZXJDb21wb25lbnQiLDgpO3Muc2V0SWZOYW1lKCJDb2xvclNwYWNlIixuKTtzLnNldCgiV2lkdGgiLHQpO3Muc2V0KCJIZWlnaHQiLGEpO3JldHVybiBzfWZ1bmN0aW9uIGNyZWF0ZVJhd0ltYWdlKGUsdCl7cmV0dXJuIG5ldyBTdHJlYW0oZSwwLGUubGVuZ3RoLHQpfWZ1bmN0aW9uIHBhZXRoUHJlZGljdG9yKGUsdCxhKXtjb25zdCBuPWUrdC1hLHM9TWF0aC5hYnMobi1lKSxyPU1hdGguYWJzKG4tdCksaT1NYXRoLmFicyhuLWEpO3JldHVybiBzPD1yJiZzPD1pP2U6cjw9aT90OmF9YXN5bmMgZnVuY3Rpb24gY3JlYXRlUE5HTGlrZUltYWdlKGUsdCxhLG4pe2NvbnN0IHM9ZS5sZW5ndGgvKHQqYSk7bGV0IHI7aWYoImZ1bmN0aW9uIj09dHlwZW9mIENvbXByZXNzaW9uU3RyZWFtKXRyeXtjb25zdCBuPWZ1bmN0aW9uIGFwcGx5UE5HT3B0aW11bUZpbHRlcihlLHQsYSxuKXtjb25zdCBzPXQqbixyPW5ldyBVaW50OEFycmF5KGEqKHMrMSkpLGk9W25ldyBVaW50OEFycmF5KHMpLG5ldyBVaW50OEFycmF5KHMpLG5ldyBVaW50OEFycmF5KHMpLG5ldyBVaW50OEFycmF5KHMpLG5ldyBVaW50OEFycmF5KHMpXTtmb3IobGV0IHQ9MDt0PGE7dCsrKXtjb25zdCBhPXQqcyxvPWEtcyxsPVswLDAsMCwwLDBdO2ZvcihsZXQgcj0wO3I8cztyKyspe2NvbnN0IHM9YStyLGY9ZVtzXSxjPXI+PW4/ZVtzLW5dOjAsaD10PjA/ZVtvK3JdOjAsdT10PjAmJnI+PW4/ZVtvK3Itbl06MDtpWzBdW3JdPWY7aVsxXVtyXT1mLWMmMjU1O2lbMl1bcl09Zi1oJjI1NTtpWzNdW3JdPWYtKGMraD4+MSkmMjU1O2lbNF1bcl09Zi1wYWV0aFByZWRpY3RvcihjLGgsdSkmMjU1O2ZvcihsZXQgZT0wO2U8NTtlKyspe2NvbnN0IHQ9aVtlXVtyXTtsW2VdKz10PDEyOD90OjI1Ni10fX1sZXQgZj0wO2ZvcihsZXQgZT0xO2U8NTtlKyspbFtlXTxsW2ZdJiYoZj1lKTtjb25zdCBjPXQqKHMrMSk7cltjXT1mO3Iuc2V0KGlbZl0sYysxKX1yZXR1cm4gcn0oZSx0LGEscyk7cj1hd2FpdCBhc3luYyBmdW5jdGlvbiBkZWZsYXRlKGUpe2NvbnN0IHQ9bmV3IENvbXByZXNzaW9uU3RyZWFtKCJkZWZsYXRlIiksYT10LndyaXRhYmxlLmdldFdyaXRlcigpLG49KGFzeW5jKCk9Pnt0cnl7YXdhaXQgYS5yZWFkeTthd2FpdCBhLndyaXRlKGUpO2F3YWl0IGEucmVhZHk7YXdhaXQgYS5jbG9zZSgpfWNhdGNoKGUpe2F3YWl0IGEuYWJvcnQoZSkuY2F0Y2goKCk9Pnt9KTt0aHJvdyBlfX0pKCksW3NdPWF3YWl0IFByb21pc2UuYWxsKFtuZXcgUmVzcG9uc2UodC5yZWFkYWJsZSkuYnl0ZXMoKSxuLnRoZW4oKCk9Pm51bGwpXSk7cmV0dXJuIHN9KG4pfWNhdGNoe31pZighcilyZXR1cm4gY3JlYXRlUmF3SW1hZ2UoZSxuKTtuLnNldElmTmFtZSgiRmlsdGVyIiwiRmxhdGVEZWNvZGUiKTtjb25zdCBpPW5ldyBEaWN0KG4ueHJlZik7aS5zZXQoIlByZWRpY3RvciIsMTUpO2kuc2V0KCJDb2x1bW5zIix0KTtpLnNldCgiQ29sb3JzIixzKTtpLnNldCgiQml0c1BlckNvbXBvbmVudCIsOCk7bi5zZXQoIkRlY29kZVBhcm1zIixpKTtyZXR1cm4gY3JlYXRlUmF3SW1hZ2UocixuKX1hc3luYyBmdW5jdGlvbiBjcmVhdGVJbWFnZShlLHQse2Nsb3NlQml0bWFwOmE9ITF9PXt9KXtjb25zdHt3aWR0aDpuLGhlaWdodDpzfT1lO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG4pfHwhTnVtYmVyLmlzSW50ZWdlcihzKXx8bjw9MHx8czw9MCl7YSYmZS5jbG9zZT8uKCk7dGhyb3cgbmV3IEVycm9yKGBjcmVhdGVJbWFnZTogaW52YWxpZCBiaXRtYXAgZGltZW5zaW9ucyAke259eCR7c31gKX1jb25zdCByPW5ldyBPZmZzY3JlZW5DYW52YXMobixzKSxpPXIuZ2V0Q29udGV4dCgiMmQiLHthbHBoYTohMCx3aWxsUmVhZEZyZXF1ZW50bHk6ITB9KTtsZXQgbzt0cnl7aS5kcmF3SW1hZ2UoZSwwLDApO289aS5nZXRJbWFnZURhdGEoMCwwLG4scykuZGF0YX1maW5hbGx5e2EmJmUuY2xvc2U/LigpfWNvbnN0IGw9bmV3IFVpbnQzMkFycmF5KG8uYnVmZmVyLG8uYnl0ZU9mZnNldCxvLmJ5dGVMZW5ndGg+PjIpLGY9RmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4sYz1mPzE2Nzc3MjE1OjQyOTQ5NjcwNDAsaD1uZXcgU2V0O2xldCB1PSExLG09ITA7Zm9yKGNvbnN0IGUgb2YgbCl7aWYoMjU1IT0oZj9lPj4+MjQ6MjU1JmUpKXt1PSEwO2JyZWFrfWlmKG0pe2guYWRkKChlJmMpPj4+MCk7aWYoaC5zaXplPjE2Mzg0KXttPSExO2guY2xlYXIoKX19fXUmJihtPSEwKTtjb25zdCBwPWNyZWF0ZUltYWdlRGljdCh0LG4scywiRGV2aWNlUkdCIik7bGV0IGQsZz1udWxsO2lmKG0pe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkobipzKjMpO2ZvcihsZXQgdD0wLGE9MCxuPW8ubGVuZ3RoO3Q8bjt0Kz00LGErPTMpe2VbYV09b1t0XTtlW2ErMV09b1t0KzFdO2VbYSsyXT1vW3QrMl19ZD1jcmVhdGVQTkdMaWtlSW1hZ2UoZSxuLHMscCk7Zz1jcmVhdGVSYXdJbWFnZShlLGNyZWF0ZUltYWdlRGljdCh0LG4scywiRGV2aWNlUkdCIikpfWVsc2V7cC5zZXRJZk5hbWUoIkZpbHRlciIsIkRDVERlY29kZSIpO2Q9ci5jb252ZXJ0VG9CbG9iKHt0eXBlOiJpbWFnZS9qcGVnIixxdWFsaXR5OjF9KS50aGVuKGU9PmUuYnl0ZXMoKSkudGhlbihlPT5jcmVhdGVSYXdJbWFnZShlLHApKX1sZXQgYj1Qcm9taXNlLnJlc29sdmUobnVsbCksdz1udWxsO2lmKHUpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkobC5sZW5ndGgpO2lmKGYpZm9yKGxldCB0PTAsYT1sLmxlbmd0aDt0PGE7dCsrKWVbdF09bFt0XT4+PjI0O2Vsc2UgZm9yKGxldCB0PTAsYT1sLmxlbmd0aDt0PGE7dCsrKWVbdF09MjU1JmxbdF07Y29uc3QgYT1jcmVhdGVJbWFnZURpY3QodCxuLHMsIkRldmljZUdyYXkiKSxyPWNyZWF0ZUltYWdlRGljdCh0LG4scywiRGV2aWNlR3JheSIpO2I9Y3JlYXRlUE5HTGlrZUltYWdlKGUsbixzLGEpO3c9Y3JlYXRlUmF3SW1hZ2UoZSxyKX1jb25zdFtqLGtdPWF3YWl0IFByb21pc2UuYWxsKFtkLGJdKTtyZXR1cm57aW1hZ2VTdHJlYW06aixpbWFnZVJlbmRlclN0cmVhbTpnLHNtYXNrU3RyZWFtOmssc21hc2tSZW5kZXJTdHJlYW06dyx3aWR0aDpuLGhlaWdodDpzfX1mdW5jdGlvbiBtYXlIYXZlQ2hpbGRyZW4oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBSZWZ8fGUgaW5zdGFuY2VvZiBEaWN0fHxlIGluc3RhbmNlb2YgQmFzZVN0cmVhbXx8QXJyYXkuaXNBcnJheShlKX1mdW5jdGlvbiBhZGRDaGlsZHJlbihlLHQpe2lmKGUgaW5zdGFuY2VvZiBEaWN0KWU9ZS5nZXRSYXdWYWx1ZXMoKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKWU9ZS5kaWN0LmdldFJhd1ZhbHVlcygpO2Vsc2UgaWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuO2Zvcihjb25zdCBhIG9mIGUpbWF5SGF2ZUNoaWxkcmVuKGEpJiZ0LnB1c2goYSl9Y2xhc3MgT2JqZWN0TG9hZGVye3JlZlNldD1uZXcgUmVmU2V0O2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmRpY3Q9ZTt0aGlzLmtleXM9dDt0aGlzLnhyZWY9YX1hc3luYyBsb2FkKCl7Y29uc3R7a2V5czplLGRpY3Q6dH09dGhpcyxhPVtdO2Zvcihjb25zdCBuIG9mIGUpe2NvbnN0IGU9dC5nZXRSYXcobik7dm9pZCAwIT09ZSYmYS5wdXNoKGUpfWF3YWl0IHRoaXMuI090KGEpO3RoaXMucmVmU2V0PW51bGx9YXN5bmMjT3QoZSl7Y29uc3QgdD1bXSxhPVtdO2Zvcig7ZS5sZW5ndGg7KXtsZXQgbj1lLnBvcCgpO2lmKG4gaW5zdGFuY2VvZiBSZWYpe2lmKHRoaXMucmVmU2V0LmhhcyhuKSljb250aW51ZTt0cnl7dGhpcy5yZWZTZXQucHV0KG4pO249dGhpcy54cmVmLmZldGNoKG4pfWNhdGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKSl7d2FybihgT2JqZWN0TG9hZGVyLiN3YWxrIC0gcmVxdWVzdGluZyBhbGwgZGF0YTogIiR7ZX0iLmApO2F3YWl0IHRoaXMueHJlZi5zdHJlYW0ubWFuYWdlci5yZXF1ZXN0QWxsQ2h1bmtzKCk7cmV0dXJufXQucHVzaChuKTthLnB1c2goe2JlZ2luOmUuYmVnaW4sZW5kOmUuZW5kfSl9fWlmKG4gaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBlPW4uZ2V0QmFzZVN0cmVhbXMoKTtpZihlKXtsZXQgcz0hMTtmb3IoY29uc3QgdCBvZiBlKWlmKCF0LmlzRGF0YUxvYWRlZCl7cz0hMDthLnB1c2goe2JlZ2luOnQuc3RhcnQsZW5kOnQuZW5kfSl9cyYmdC5wdXNoKG4pfX1hZGRDaGlsZHJlbihuLGUpfWlmKGEubGVuZ3RoKXthd2FpdCB0aGlzLnhyZWYuc3RyZWFtLm1hbmFnZXIucmVxdWVzdFJhbmdlcyhhKTtmb3IoY29uc3QgZSBvZiB0KWUgaW5zdGFuY2VvZiBSZWYmJnRoaXMucmVmU2V0LnJlbW92ZShlKTthd2FpdCB0aGlzLiNPdCh0KX19c3RhdGljIGFzeW5jIGxvYWQoZSx0LGEpe2lmKGEuc3RyZWFtLmlzRGF0YUxvYWRlZClyZXR1cm47Y29uc3Qgbj1uZXcgT2JqZWN0TG9hZGVyKGUsdCxhKTthd2FpdCBuLmxvYWQoKX19Y29uc3QgaW89U3ltYm9sKCksb289U3ltYm9sKCksbG89U3ltYm9sKCksZm89U3ltYm9sKCksY289U3ltYm9sKCksaG89U3ltYm9sKCksdW89U3ltYm9sKCksbW89U3ltYm9sKCkscG89U3ltYm9sKCksZ289U3ltYm9sKCJjb250ZW50IiksYm89U3ltYm9sKCJkYXRhIiksd289U3ltYm9sKCksam89U3ltYm9sKCJleHRyYSIpLGtvPVN5bWJvbCgpLHlvPVN5bWJvbCgpLHFvPVN5bWJvbCgpLHZvPVN5bWJvbCgpLFNvPVN5bWJvbCgpLEFvPVN5bWJvbCgpLHhvPVN5bWJvbCgpLENvPVN5bWJvbCgpLElvPVN5bWJvbCgpLEZvPVN5bWJvbCgpLFJvPVN5bWJvbCgpLE9vPVN5bWJvbCgpLEJvPVN5bWJvbCgpLERvPVN5bWJvbCgpLEhvPVN5bWJvbCgpLE1vPVN5bWJvbCgpLE5vPVN5bWJvbCgpLFBvPVN5bWJvbCgpLEVvPVN5bWJvbCgpLF9vPVN5bWJvbCgpLHpvPVN5bWJvbCgpLExvPVN5bWJvbCgpLFVvPVN5bWJvbCgpLFdvPVN5bWJvbCgpLFhvPVN5bWJvbCgpLEtvPVN5bWJvbCgpLEdvPVN5bWJvbCgpLFZvPVN5bWJvbCgpLCRvPVN5bWJvbCgpLFlvPVN5bWJvbCgpLEpvPVN5bWJvbCgpLFFvPVN5bWJvbCgpLFpvPVN5bWJvbCgibmFtZXNwYWNlSWQiKSxlbD1TeW1ib2woIm5vZGVOYW1lIiksdGw9U3ltYm9sKCksYWw9U3ltYm9sKCksbmw9U3ltYm9sKCksc2w9U3ltYm9sKCkscmw9U3ltYm9sKCksaWw9U3ltYm9sKCksb2w9U3ltYm9sKCksbGw9U3ltYm9sKCksZmw9U3ltYm9sKCJyb290IiksY2w9U3ltYm9sKCksaGw9U3ltYm9sKCksdWw9U3ltYm9sKCksbWw9U3ltYm9sKCkscGw9U3ltYm9sKCksZGw9U3ltYm9sKCksZ2w9U3ltYm9sKCksYmw9U3ltYm9sKCksd2w9U3ltYm9sKCksamw9U3ltYm9sKCksa2w9U3ltYm9sKCkseWw9U3ltYm9sKCJ1aWQiKSxxbD1TeW1ib2woKSx2bD17Y29uZmlnOntpZDowLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94Y2kvIil9LGNvbm5lY3Rpb25TZXQ6e2lkOjEsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1jb25uZWN0aW9uLXNldC8iKX0sZGF0YXNldHM6e2lkOjIsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLyIpfSxmb3JtOntpZDozLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZm9ybS8iKX0sbG9jYWxlU2V0OntpZDo0LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtbG9jYWxlLXNldC8iKX0scGRmOntpZDo1LGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hkcC9wZGYvIj09PWV9LHNpZ25hdHVyZTp7aWQ6NixjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI9PT1lfSxzb3VyY2VTZXQ6e2lkOjcsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1zb3VyY2Utc2V0LyIpfSxzdHlsZXNoZWV0OntpZDo4LGNoZWNrOmU9PiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iPT09ZX0sdGVtcGxhdGU6e2lkOjksY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS10ZW1wbGF0ZS8iKX0seGRjOntpZDoxMCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGRjLyIpfSx4ZHA6e2lkOjExLGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hkcC8iPT09ZX0seGZkZjp7aWQ6MTIsY2hlY2s6ZT0+Imh0dHA6Ly9ucy5hZG9iZS5jb20veGZkZi8iPT09ZX0seGh0bWw6e2lkOjEzLGNoZWNrOmU9PiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj09PWV9LHhtcG1ldGE6e2lkOjE0LGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3htcG1ldGEvIj09PWV9fSxTbD17cHQ6ZT0+ZSxjbTplPT5lLzIuNTQqNzIsbW06ZT0+ZS8yNS40KjcyLGluOmU9PjcyKmUscHg6ZT0+ZX0sQWw9LyhbKy1dP1xkK1wuP1xkKikoLiopLztmdW5jdGlvbiBzdHJpcFF1b3RlcyhlKXtyZXR1cm4gZS5zdGFydHNXaXRoKCInIil8fGUuc3RhcnRzV2l0aCgnIicpP2Uuc2xpY2UoMSwtMSk6ZX1mdW5jdGlvbiBnZXRJbnRlZ2VyKHtkYXRhOmUsZGVmYXVsdFZhbHVlOnQsdmFsaWRhdGU6YX0pe2lmKCFlKXJldHVybiB0O2U9ZS50cmltKCk7Y29uc3Qgbj1wYXJzZUludChlLDEwKTtyZXR1cm4haXNOYU4obikmJmEobik/bjp0fWZ1bmN0aW9uIGdldEZsb2F0KHtkYXRhOmUsZGVmYXVsdFZhbHVlOnQsdmFsaWRhdGU6YX0pe2lmKCFlKXJldHVybiB0O2U9ZS50cmltKCk7Y29uc3Qgbj1wYXJzZUZsb2F0KGUpO3JldHVybiFpc05hTihuKSYmYShuKT9uOnR9ZnVuY3Rpb24gZ2V0S2V5d29yZCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOmF9KXtyZXR1cm4gZSYmYShlPWUudHJpbSgpKT9lOnR9ZnVuY3Rpb24gZ2V0U3RyaW5nT3B0aW9uKGUsdCl7cmV0dXJuIGdldEtleXdvcmQoe2RhdGE6ZSxkZWZhdWx0VmFsdWU6dFswXSx2YWxpZGF0ZTplPT50LmluY2x1ZGVzKGUpfSl9ZnVuY3Rpb24gZ2V0TWVhc3VyZW1lbnQoZSx0PSIwIil7dHx8PSIwIjtpZighZSlyZXR1cm4gZ2V0TWVhc3VyZW1lbnQodCk7Y29uc3QgYT1lLnRyaW0oKS5tYXRjaChBbCk7aWYoIWEpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0WyxuLHNdPWEscj1wYXJzZUZsb2F0KG4pO2lmKGlzTmFOKHIpKXJldHVybiBnZXRNZWFzdXJlbWVudCh0KTtpZigwPT09cilyZXR1cm4gMDtjb25zdCBpPVNsW3NdO3JldHVybiBpP2kocik6cn1mdW5jdGlvbiBnZXRSYXRpbyhlKXtpZighZSlyZXR1cm57bnVtOjEsZGVuOjF9O2NvbnN0IHQ9ZS5zcGxpdCgiOiIsMikubWFwKGU9PnBhcnNlRmxvYXQoZS50cmltKCkpKS5maWx0ZXIoZT0+IWlzTmFOKGUpKTsxPT09dC5sZW5ndGgmJnQucHVzaCgxKTtpZigwPT09dC5sZW5ndGgpcmV0dXJue251bToxLGRlbjoxfTtjb25zdFthLG5dPXQ7cmV0dXJue251bTphLGRlbjpufX1mdW5jdGlvbiBnZXRSZWxldmFudChlKXtyZXR1cm4gZT9lLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKGU9Pih7ZXhjbHVkZWQ6Ii0iPT09ZVswXSx2aWV3bmFtZTplLnN1YnN0cmluZygxKX0pKTpbXX1jbGFzcyBIVE1MUmVzdWx0e3N0YXRpYyBnZXQgRkFJTFVSRSgpe3JldHVybiBzaGFkb3codGhpcywiRkFJTFVSRSIsbmV3IEhUTUxSZXN1bHQoITEsbnVsbCxudWxsLG51bGwpKX1zdGF0aWMgZ2V0IEVNUFRZKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJFTVBUWSIsbmV3IEhUTUxSZXN1bHQoITAsbnVsbCxudWxsLG51bGwpKX1jb25zdHJ1Y3RvcihlLHQsYSxuKXt0aGlzLnN1Y2Nlc3M9ZTt0aGlzLmh0bWw9dDt0aGlzLmJib3g9YTt0aGlzLmJyZWFrTm9kZT1ufWlzQnJlYWsoKXtyZXR1cm4hIXRoaXMuYnJlYWtOb2RlfXN0YXRpYyBicmVha05vZGUoZSl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCExLG51bGwsbnVsbCxlKX1zdGF0aWMgc3VjY2VzcyhlLHQ9bnVsbCl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCEwLGUsdCxudWxsKX19Y2xhc3MgRm9udEZpbmRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmZvbnRzPW5ldyBNYXA7dGhpcy5jYWNoZT1uZXcgTWFwO3RoaXMud2FybmVkPW5ldyBTZXQ7dGhpcy5kZWZhdWx0Rm9udD1udWxsO3RoaXMuYWRkKGUpfWFkZChlLHQ9bnVsbCl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmFkZFBkZkZvbnQodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXJ8fD1lLml0YWxpY3x8ZS5ib2xkfHxlLmJvbGRpdGFsaWM7aWYoIXR8fDA9PT10LnNpemUpcmV0dXJuO2NvbnN0IGE9dGhpcy5mb250cy5nZXQoIlBkZkpTLUZhbGxiYWNrLVBkZkpTLVhGQSIpO2Zvcihjb25zdCBlIG9mIHQpdGhpcy5mb250cy5zZXQoZSxhKX1hZGRQZGZGb250KGUpe2NvbnN0IHQ9ZS5jc3NGb250SW5mbyxhPXQuZm9udEZhbWlseSxuPXRoaXMuZm9udHMuZ2V0T3JJbnNlcnRDb21wdXRlZChhLG1ha2VPYmopO3RoaXMuZGVmYXVsdEZvbnQ/Pz1uO2xldCBzPSIiO2NvbnN0IHI9cGFyc2VGbG9hdCh0LmZvbnRXZWlnaHQpOzAhPT1wYXJzZUZsb2F0KHQuaXRhbGljQW5nbGUpP3M9cj49NzAwPyJib2xkaXRhbGljIjoiaXRhbGljIjpyPj03MDAmJihzPSJib2xkIik7aWYoIXMpeyhlLm5hbWUuaW5jbHVkZXMoIkJvbGQiKXx8ZS5wc05hbWU/LmluY2x1ZGVzKCJCb2xkIikpJiYocz0iYm9sZCIpOyhlLm5hbWUuaW5jbHVkZXMoIkl0YWxpYyIpfHxlLm5hbWUuZW5kc1dpdGgoIkl0Iil8fGUucHNOYW1lPy5pbmNsdWRlcygiSXRhbGljIil8fGUucHNOYW1lPy5lbmRzV2l0aCgiSXQiKSkmJihzKz0iaXRhbGljIil9c3x8PSJyZWd1bGFyIjtuW3NdPWV9Z2V0RGVmYXVsdCgpe3JldHVybiB0aGlzLmRlZmF1bHRGb250fWZpbmQoZSx0PSEwKXtsZXQgYT10aGlzLmZvbnRzLmdldChlKXx8dGhpcy5jYWNoZS5nZXQoZSk7aWYoYSlyZXR1cm4gYTtjb25zdCBuPS9bLFwtXyBdfGJvbGRpdGFsaWN8Ym9sZHxpdGFsaWN8cmVndWxhcnxpdC9naTtsZXQgcz1lLnJlcGxhY2VBbGwobiwiIik7YT10aGlzLmZvbnRzLmdldChzKTtpZihhKXt0aGlzLmNhY2hlLnNldChlLGEpO3JldHVybiBhfXM9cy50b0xvd2VyQ2FzZSgpO2NvbnN0IHI9W107Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLmZvbnRzKWUucmVwbGFjZUFsbChuLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocykmJnIucHVzaCh0KTtpZigwPT09ci5sZW5ndGgpZm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXIubmFtZT8ucmVwbGFjZUFsbChuLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocykmJnIucHVzaChlKTtpZigwPT09ci5sZW5ndGgpe3M9cy5yZXBsYWNlQWxsKC9wc210fG10L2dpLCIiKTtmb3IoY29uc3RbZSx0XW9mIHRoaXMuZm9udHMpZS5yZXBsYWNlQWxsKG4sIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChzKSYmci5wdXNoKHQpfWlmKDA9PT1yLmxlbmd0aClmb3IoY29uc3QgZSBvZiB0aGlzLmZvbnRzLnZhbHVlcygpKWUucmVndWxhci5uYW1lPy5yZXBsYWNlQWxsKG4sIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChzKSYmci5wdXNoKGUpO2lmKHIubGVuZ3RoPj0xKXsxIT09ci5sZW5ndGgmJnQmJndhcm4oYFhGQSAtIFRvbyBtYW55IGNob2ljZXMgdG8gZ3Vlc3MgdGhlIGNvcnJlY3QgZm9udDogJHtlfWApO3RoaXMuY2FjaGUuc2V0KGUsclswXSk7cmV0dXJuIHJbMF19aWYodCYmIXRoaXMud2FybmVkLmhhcyhlKSl7dGhpcy53YXJuZWQuYWRkKGUpO3dhcm4oYFhGQSAtIENhbm5vdCBmaW5kIHRoZSBmb250OiAke2V9YCl9cmV0dXJuIG51bGx9fWZ1bmN0aW9uIHNlbGVjdEZvbnQoZSx0KXtyZXR1cm4iaXRhbGljIj09PWUucG9zdHVyZT8iYm9sZCI9PT1lLndlaWdodD90LmJvbGRpdGFsaWM6dC5pdGFsaWM6ImJvbGQiPT09ZS53ZWlnaHQ/dC5ib2xkOnQucmVndWxhcn1jbGFzcyBGb250SW5mb3tjb25zdHJ1Y3RvcihlLHQsYSxuKXt0aGlzLmxpbmVIZWlnaHQ9YTt0aGlzLnBhcmFNYXJnaW49dHx8e3RvcDowLGJvdHRvbTowLGxlZnQ6MCxyaWdodDowfTtpZighZSl7W3RoaXMucGRmRm9udCx0aGlzLnhmYUZvbnRdPXRoaXMuZGVmYXVsdEZvbnQobik7cmV0dXJufXRoaXMueGZhRm9udD17dHlwZWZhY2U6ZS50eXBlZmFjZSxwb3N0dXJlOmUucG9zdHVyZSx3ZWlnaHQ6ZS53ZWlnaHQsc2l6ZTplLnNpemUsbGV0dGVyU3BhY2luZzplLmxldHRlclNwYWNpbmd9O2NvbnN0IHM9bi5maW5kKGUudHlwZWZhY2UpO2lmKHMpe3RoaXMucGRmRm9udD1zZWxlY3RGb250KGUscyk7dGhpcy5wZGZGb250fHwoW3RoaXMucGRmRm9udCx0aGlzLnhmYUZvbnRdPXRoaXMuZGVmYXVsdEZvbnQobikpfWVsc2VbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChuKX1kZWZhdWx0Rm9udChlKXtjb25zdCB0PWUuZmluZCgiSGVsdmV0aWNhIiwhMSl8fGUuZmluZCgiTXlyaWFkIFBybyIsITEpfHxlLmZpbmQoIkFyaWFsIiwhMSl8fGUuZ2V0RGVmYXVsdCgpO2lmKHQ/LnJlZ3VsYXIpe2NvbnN0IGU9dC5yZWd1bGFyO3JldHVybltlLHt0eXBlZmFjZTplLmNzc0ZvbnRJbmZvLmZvbnRGYW1pbHkscG9zdHVyZToibm9ybWFsIix3ZWlnaHQ6Im5vcm1hbCIsc2l6ZToxMCxsZXR0ZXJTcGFjaW5nOjB9XX1yZXR1cm5bbnVsbCx7dHlwZWZhY2U6IkNvdXJpZXIiLHBvc3R1cmU6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwiLHNpemU6MTAsbGV0dGVyU3BhY2luZzowfV19fWNsYXNzIEZvbnRTZWxlY3Rvcntjb25zdHJ1Y3RvcihlLHQsYSxuKXt0aGlzLmZvbnRGaW5kZXI9bjt0aGlzLnN0YWNrPVtuZXcgRm9udEluZm8oZSx0LGEsbildfXB1c2hEYXRhKGUsdCxhKXtjb25zdCBuPXRoaXMuc3RhY2suYXQoLTEpO2Zvcihjb25zdCB0IG9mWyJ0eXBlZmFjZSIsInBvc3R1cmUiLCJ3ZWlnaHQiLCJzaXplIiwibGV0dGVyU3BhY2luZyJdKWVbdF18fD1uLnhmYUZvbnRbdF07Zm9yKGNvbnN0IGUgb2ZbInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCJdKWlzTmFOKHRbZV0pJiYodFtlXT1uLnBhcmFNYXJnaW5bZV0pO2NvbnN0IHM9bmV3IEZvbnRJbmZvKGUsdCxhfHxuLmxpbmVIZWlnaHQsdGhpcy5mb250RmluZGVyKTtzLnBkZkZvbnR8fD1uLnBkZkZvbnQ7dGhpcy5zdGFjay5wdXNoKHMpfXBvcEZvbnQoKXt0aGlzLnN0YWNrLnBvcCgpfXRvcEZvbnQoKXtyZXR1cm4gdGhpcy5zdGFjay5hdCgtMSl9fWNsYXNzIFRleHRNZWFzdXJle2NvbnN0cnVjdG9yKGUsdCxhLG4pe3RoaXMuZ2x5cGhzPVtdO3RoaXMuZm9udFNlbGVjdG9yPW5ldyBGb250U2VsZWN0b3IoZSx0LGEsbik7dGhpcy5leHRyYUhlaWdodD0wfXB1c2hEYXRhKGUsdCxhKXt0aGlzLmZvbnRTZWxlY3Rvci5wdXNoRGF0YShlLHQsYSl9cG9wRm9udChlKXtyZXR1cm4gdGhpcy5mb250U2VsZWN0b3IucG9wRm9udCgpfWFkZFBhcmEoKXtjb25zdCBlPXRoaXMuZm9udFNlbGVjdG9yLnRvcEZvbnQoKTt0aGlzLmV4dHJhSGVpZ2h0Kz1lLnBhcmFNYXJnaW4udG9wK2UucGFyYU1hcmdpbi5ib3R0b219YWRkU3RyaW5nKGUpe2lmKCFlKXJldHVybjtjb25zdCB0PXRoaXMuZm9udFNlbGVjdG9yLnRvcEZvbnQoKSxhPXQueGZhRm9udC5zaXplO2lmKHQucGRmRm9udCl7Y29uc3Qgbj10LnhmYUZvbnQubGV0dGVyU3BhY2luZyxzPXQucGRmRm9udCxyPXMubGluZUhlaWdodHx8MS4yLGk9dC5saW5lSGVpZ2h0fHxNYXRoLm1heCgxLjIscikqYSxvPXItKHZvaWQgMD09PXMubGluZUdhcD8uMjpzLmxpbmVHYXApLGw9TWF0aC5tYXgoMSxvKSphLGY9YS8xZTMsYz1zLmRlZmF1bHRXaWR0aHx8cy5jaGFyc1RvR2x5cGhzKCIgIilbMF0ud2lkdGg7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvW1x1MjAyOVxuXS8pKXtjb25zdCBlPXMuZW5jb2RlU3RyaW5nKHQpLmpvaW4oIiIpLGE9cy5jaGFyc1RvR2x5cGhzKGUpO2Zvcihjb25zdCBlIG9mIGEpe2NvbnN0IHQ9ZS53aWR0aHx8Yzt0aGlzLmdseXBocy5wdXNoKFt0KmYrbixpLGwsZS51bmljb2RlLCExXSl9dGhpcy5nbHlwaHMucHVzaChbMCwwLDAsIlxuIiwhMF0pfXRoaXMuZ2x5cGhzLnBvcCgpO3JldHVybn1mb3IoY29uc3QgdCBvZiBlLnNwbGl0KC9bXHUyMDI5XG5dLykpe2Zvcihjb25zdCBlIG9mIHQuc3BsaXQoIiIpKXRoaXMuZ2x5cGhzLnB1c2goW2EsMS4yKmEsYSxlLCExXSk7dGhpcy5nbHlwaHMucHVzaChbMCwwLDAsIlxuIiwhMF0pfXRoaXMuZ2x5cGhzLnBvcCgpfWNvbXB1dGUoZSl7bGV0IHQ9LTEsYT0wLG49MCxzPTAscj0wLGk9MCxvPSExLGw9ITA7Zm9yKGxldCBmPTAsYz10aGlzLmdseXBocy5sZW5ndGg7ZjxjO2YrKyl7Y29uc3RbYyxoLHUsbSxwXT10aGlzLmdseXBoc1tmXSxkPSIgIj09PW0sZz1sP3U6aDtpZihwKXtuPU1hdGgubWF4KG4scik7cj0wO3MrPWk7aT1nO3Q9LTE7YT0wO2w9ITF9ZWxzZSBpZihkKWlmKHIrYz5lKXtuPU1hdGgubWF4KG4scik7cj0wO3MrPWk7aT1nO3Q9LTE7YT0wO289ITA7bD0hMX1lbHNle2k9TWF0aC5tYXgoZyxpKTthPXI7cis9Yzt0PWZ9ZWxzZSBpZihyK2M+ZSl7cys9aTtpPWc7aWYoLTEhPT10KXtmPXQ7bj1NYXRoLm1heChuLGEpO3I9MDt0PS0xO2E9MH1lbHNle249TWF0aC5tYXgobixyKTtyPWN9bz0hMDtsPSExfWVsc2V7cis9YztpPU1hdGgubWF4KGcsaSl9fW49TWF0aC5tYXgobixyKTtzKz1pK3RoaXMuZXh0cmFIZWlnaHQ7cmV0dXJue3dpZHRoOjEuMDIqbixoZWlnaHQ6cyxpc0Jyb2tlbjpvfX19Y29uc3QgeGw9L15bXi5bXSsvLENsPS9eW15cXV0rLyxJbD0wLEZsPTEsVGw9MixSbD0zLEJsPTQsRGw9bmV3IE1hcChbWyIkZGF0YSIsKGUsdCk9PmUuZGF0YXNldHM/ZS5kYXRhc2V0cy5kYXRhOmVdLFsiJHJlY29yZCIsKGUsdCk9PihlLmRhdGFzZXRzP2UuZGF0YXNldHMuZGF0YTplKVtPb10oKVswXV0sWyIkdGVtcGxhdGUiLChlLHQpPT5lLnRlbXBsYXRlXSxbIiRjb25uZWN0aW9uU2V0IiwoZSx0KT0+ZS5jb25uZWN0aW9uU2V0XSxbIiRmb3JtIiwoZSx0KT0+ZS5mb3JtXSxbIiRsYXlvdXQiLChlLHQpPT5lLmxheW91dF0sWyIkaG9zdCIsKGUsdCk9PmUuaG9zdF0sWyIkZGF0YVdpbmRvdyIsKGUsdCk9PmUuZGF0YVdpbmRvd10sWyIkZXZlbnQiLChlLHQpPT5lLmV2ZW50XSxbIiEiLChlLHQpPT5lLmRhdGFzZXRzXSxbIiR4ZmEiLChlLHQpPT5lXSxbInhmYSIsKGUsdCk9PmVdLFsiJCIsKGUsdCk9PnRdXSksSGw9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gcGFyc2VJbmRleChlKXtyZXR1cm4iKiI9PT0oZT1lLnRyaW0oKSk/MS8wOnBhcnNlSW50KGUsMTApfHwwfWZ1bmN0aW9uIHBhcnNlRXhwcmVzc2lvbihlLHQsYT0hMCl7bGV0IG49ZS5tYXRjaCh4bCk7aWYoIW4pcmV0dXJuIG51bGw7bGV0W3NdPW47Y29uc3Qgcj1be25hbWU6cyxjYWNoZU5hbWU6Ii4iK3MsaW5kZXg6MCxqczpudWxsLGZvcm1DYWxjOm51bGwsb3BlcmF0b3I6SWx9XTtsZXQgaT1zLmxlbmd0aDtmb3IoO2k8ZS5sZW5ndGg7KXtjb25zdCBvPWk7aWYoIlsiPT09ZS5jaGFyQXQoaSsrKSl7bj1lLnNsaWNlKGkpLm1hdGNoKENsKTtpZighbil7d2FybigiWEZBIC0gSW52YWxpZCBpbmRleCBpbiBTT00gZXhwcmVzc2lvbiIpO3JldHVybiBudWxsfXIuYXQoLTEpLmluZGV4PXBhcnNlSW5kZXgoblswXSk7aSs9blswXS5sZW5ndGgrMTtjb250aW51ZX1sZXQgbDtzd2l0Y2goZS5jaGFyQXQoaSkpe2Nhc2UiLiI6aWYoIXQpcmV0dXJuIG51bGw7aSsrO2w9Rmw7YnJlYWs7Y2FzZSIjIjppKys7bD1UbDticmVhaztjYXNlIlsiOmlmKGEpe3dhcm4oIlhGQSAtIFNPTSBleHByZXNzaW9uIGNvbnRhaW5zIGEgRm9ybUNhbGMgc3ViZXhwcmVzc2lvbiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGZvciBub3cuIik7cmV0dXJuIG51bGx9bD1SbDticmVhaztjYXNlIigiOmlmKGEpe3dhcm4oIlhGQSAtIFNPTSBleHByZXNzaW9uIGNvbnRhaW5zIGEgSmF2YVNjcmlwdCBzdWJleHByZXNzaW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdy4iKTtyZXR1cm4gbnVsbH1sPUJsO2JyZWFrO2RlZmF1bHQ6bD1JbH1uPWUuc2xpY2UoaSkubWF0Y2goeGwpO2lmKCFuKWJyZWFrO1tzXT1uO2krPXMubGVuZ3RoO3IucHVzaCh7bmFtZTpzLGNhY2hlTmFtZTplLnNsaWNlKG8saSksb3BlcmF0b3I6bCxpbmRleDowLGpzOm51bGwsZm9ybUNhbGM6bnVsbH0pfXJldHVybiByfWZ1bmN0aW9uIHNlYXJjaE5vZGUoZSx0LGEsbj0hMCxzPSEwKXtjb25zdCByPXBhcnNlRXhwcmVzc2lvbihhLG4pO2lmKCFyKXJldHVybiBudWxsO2NvbnN0IGk9RGwuZ2V0KHJbMF0ubmFtZSk7bGV0IG8sbD0wO2lmKGkpe289ITA7ZT1baShlLHQpXTtsPTF9ZWxzZXtvPW51bGw9PT10O2U9W3R8fGVdfWZvcihsZXQgYT1yLmxlbmd0aDtsPGE7bCsrKXtjb25zdHtuYW1lOmEsY2FjaGVOYW1lOm4sb3BlcmF0b3I6aSxpbmRleDpmfT1yW2xdLGM9W107Zm9yKGNvbnN0IHQgb2YgZSl7aWYoIXQuaXNYRkFPYmplY3QpY29udGludWU7bGV0IGUscjtpZihzKXtyPUhsLmdldE9ySW5zZXJ0Q29tcHV0ZWQodCxtYWtlTWFwKTtlPXIuZ2V0KG4pfWlmKCFlKXtzd2l0Y2goaSl7Y2FzZSBJbDplPXRbeG9dKGEsITEpO2JyZWFrO2Nhc2UgRmw6ZT10W3hvXShhLCEwKTticmVhaztjYXNlIFRsOmU9dFtBb10oYSk7ZT1lLmlzWEZBT2JqZWN0QXJyYXk/ZS5jaGlsZHJlbjpbZV19cyYmci5zZXQobixlKX1lLmxlbmd0aD4wJiZjLnB1c2goZSl9aWYoMD09PWMubGVuZ3RoJiYhbyYmMD09PWwpe2NvbnN0IGE9dFtNb10oKTtpZighKHQ9YSkpcmV0dXJuIG51bGw7bD0tMTtlPVt0XTtjb250aW51ZX1lPWlzRmluaXRlKGYpP2MuZmlsdGVyKGU9PmY8ZS5sZW5ndGgpLm1hcChlPT5lW2ZdKTpjLmZsYXQoKX1yZXR1cm4gMD09PWUubGVuZ3RoP251bGw6ZX1mdW5jdGlvbiBjcmVhdGVEYXRhTm9kZShlLHQsYSl7Y29uc3Qgbj1wYXJzZUV4cHJlc3Npb24oYSk7aWYoIW58fG4uc29tZShlPT5lLm9wZXJhdG9yPT09RmwpKXJldHVybiBudWxsO2NvbnN0IHM9RGwuZ2V0KG5bMF0ubmFtZSk7bGV0IHI9MDtpZihzKXtlPXMoZSx0KTtyPTF9ZWxzZSBlPXR8fGU7Zm9yKGxldCB0PW4ubGVuZ3RoO3I8dDtyKyspe2NvbnN0e25hbWU6dCxvcGVyYXRvcjphLGluZGV4OnN9PW5bcl07aWYoIWlzRmluaXRlKHMpKXtuW3JdLmluZGV4PTA7cmV0dXJuIGUuY3JlYXRlTm9kZXMobi5zbGljZShyKSl9bGV0IGk7c3dpdGNoKGEpe2Nhc2UgSWw6aT1lW3hvXSh0LCExKTticmVhaztjYXNlIEZsOmk9ZVt4b10odCwhMCk7YnJlYWs7Y2FzZSBUbDppPWVbQW9dKHQpO2k9aS5pc1hGQU9iamVjdEFycmF5P2kuY2hpbGRyZW46W2ldfWlmKDA9PT1pLmxlbmd0aClyZXR1cm4gZS5jcmVhdGVOb2RlcyhuLnNsaWNlKHIpKTtpZighKHM8aS5sZW5ndGgpKXtuW3JdLmluZGV4PXMtaS5sZW5ndGg7cmV0dXJuIGUuY3JlYXRlTm9kZXMobi5zbGljZShyKSl9e2NvbnN0IHQ9aVtzXTtpZighdC5pc1hGQU9iamVjdCl7d2FybigiWEZBIC0gQ2Fubm90IGNyZWF0ZSBhIG5vZGUuIik7cmV0dXJuIG51bGx9ZT10fX1yZXR1cm4gbnVsbH1jb25zdCBNbD1TeW1ib2woKSxObD1TeW1ib2woKSxQbD1TeW1ib2woKSxFbD1TeW1ib2woIl9jaGlsZHJlbiIpLF9sPVN5bWJvbCgpLHpsPVN5bWJvbCgpLExsPVN5bWJvbCgpLFdsPVN5bWJvbCgpLFhsPVN5bWJvbCgpLEtsPVN5bWJvbCgpLEdsPVN5bWJvbCgpLFZsPVN5bWJvbCgpLCRsPVN5bWJvbCgpLFlsPVN5bWJvbCgicGFyZW50IiksSmw9U3ltYm9sKCksUWw9U3ltYm9sKCksWmw9U3ltYm9sKCk7bGV0IGVmPTA7Y29uc3QgdGY9dmwuZGF0YXNldHMuaWQ7Y2xhc3MgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhPSExKXt0aGlzW1pvXT1lO3RoaXNbZWxdPXQ7dGhpc1tHbF09YTt0aGlzW1lsXT1udWxsO3RoaXNbRWxdPVtdO3RoaXNbeWxdPWAke3R9JHtlZisrfWA7dGhpc1tQb109bnVsbH1nZXQgaXNYRkFPYmplY3QoKXtyZXR1cm4hMH1nZXQgaXNYRkFPYmplY3RBcnJheSgpe3JldHVybiExfWNyZWF0ZU5vZGVzKGUpe2xldCB0PXRoaXMsYT1udWxsO2Zvcihjb25zdHtuYW1lOm4saW5kZXg6c31vZiBlKXtmb3IobGV0IGU9MCxyPWlzRmluaXRlKHMpP3M6MDtlPD1yO2UrKyl7Y29uc3QgZT10W1pvXT09PXRmPy0xOnRbWm9dO2E9bmV3IFhtbE9iamVjdChlLG4pO3RbbG9dKGEpfXQ9YX1yZXR1cm4gYX1bYWxdKGUpe2lmKCF0aGlzW0dsXXx8IXRoaXNbbmxdKGUpKXJldHVybiExO2NvbnN0IHQ9ZVtlbF0sYT10aGlzW3RdO2lmKCEoYSBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KSl7bnVsbCE9PWEmJnRoaXNbbGxdKGEpO3RoaXNbdF09ZTt0aGlzW2xvXShlKTtyZXR1cm4hMH1pZihhLnB1c2goZSkpe3RoaXNbbG9dKGUpO3JldHVybiEwfWxldCBuPSIiO3RoaXMuaWQ/bj1gIChpZDogJHt0aGlzLmlkfSlgOnRoaXMubmFtZSYmKG49YCAobmFtZTogJHt0aGlzLm5hbWV9ICR7dGhpcy5oLnZhbHVlfSlgKTt3YXJuKGBYRkEgLSBub2RlICIke3RoaXNbZWxdfSIke259IGhhcyBhbHJlYWR5IGVub3VnaCAiJHt0fSIhYCk7cmV0dXJuITF9W25sXShlKXtyZXR1cm4gT2JqZWN0Lmhhc093bih0aGlzLGVbZWxdKSYmZVtab109PT10aGlzW1pvXX1bR29dKCl7cmV0dXJuITF9W2lvXSgpe3JldHVybiExfVtVb10oKXtyZXR1cm4hMX1bV29dKCl7cmV0dXJuITF9W2lsXSgpe3RoaXMucGFyYSYmdGhpc1tOb10oKVtqb10ucGFyYVN0YWNrLnBvcCgpfVtvbF0oKXt0aGlzW05vXSgpW2pvXS5wYXJhU3RhY2sucHVzaCh0aGlzLnBhcmEpfVt1bF0oZSl7dGhpcy5pZCYmdGhpc1tab109PT12bC50ZW1wbGF0ZS5pZCYmZS5zZXQodGhpcy5pZCx0aGlzKX1bTm9dKCl7cmV0dXJuIHRoaXNbUG9dLnRlbXBsYXRlfVtWb10oKXtyZXR1cm4hMX1bJG9dKCl7cmV0dXJuITF9W2xvXShlKXtlW1lsXT10aGlzO3RoaXNbRWxdLnB1c2goZSk7IWVbUG9dJiZ0aGlzW1BvXSYmKGVbUG9dPXRoaXNbUG9dKX1bbGxdKGUpe2NvbnN0IHQ9dGhpc1tFbF0uaW5kZXhPZihlKTt0aGlzW0VsXS5zcGxpY2UodCwxKX1bRW9dKCl7cmV0dXJuIE9iamVjdC5oYXNPd24odGhpcywidmFsdWUiKX1bcGxdKGUpe31bc2xdKGUpe31ba29dKCl7fVtjb10oZSl7ZGVsZXRlIHRoaXNbR2xdO2lmKHRoaXNbdW9dKXtlLmNsZWFuKHRoaXNbdW9dKTtkZWxldGUgdGhpc1t1b119fVt6b10oZSl7cmV0dXJuIHRoaXNbRWxdLmluZGV4T2YoZSl9W0xvXShlLHQpe3RbWWxdPXRoaXM7dGhpc1tFbF0uc3BsaWNlKGUsMCx0KTshdFtQb10mJnRoaXNbUG9dJiYodFtQb109dGhpc1tQb10pfVtZb10oKXtyZXR1cm4hdGhpcy5uYW1lfVtRb10oKXtyZXR1cm4iIn1bZ2xdKCl7cmV0dXJuIDA9PT10aGlzW0VsXS5sZW5ndGg/dGhpc1tnb106dGhpc1tFbF0ubWFwKGU9PmVbZ2xdKCkpLmpvaW4oIiIpfWdldFtQbF0oKXtjb25zdCBlPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKTtpZighZS5fYXR0cmlidXRlcyl7Y29uc3QgdD1lLl9hdHRyaWJ1dGVzPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKG51bGw9PT10aGlzW2VdfHx0aGlzW2VdaW5zdGFuY2VvZiBYRkFPYmplY3R8fHRoaXNbZV1pbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KWJyZWFrO3QuYWRkKGUpfX1yZXR1cm4gc2hhZG93KHRoaXMsUGwsZS5fYXR0cmlidXRlcyl9W0tvXShlKXtsZXQgdD10aGlzO2Zvcig7dDspe2lmKHQ9PT1lKXJldHVybiEwO3Q9dFtNb10oKX1yZXR1cm4hMX1bTW9dKCl7cmV0dXJuIHRoaXNbWWxdfVtIb10oKXtyZXR1cm4gdGhpc1tNb10oKX1bd29dKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXNbZ29dJiYoZS4kY29udGVudD10aGlzW2dvXSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IGE9dGhpc1t0XTtudWxsIT09YSYmKGEgaW5zdGFuY2VvZiBYRkFPYmplY3Q/ZVt0XT1hW3dvXSgpOmEgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheT9hLmlzRW1wdHkoKXx8KGVbdF09YS5kdW1wKCkpOmVbdF09YSl9cmV0dXJuIGV9W2tsXSgpe3JldHVybiBudWxsfVt3bF0oKXtyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX0qW0JvXSgpe2Zvcihjb25zdCBlIG9mIHRoaXNbT29dKCkpeWllbGQgZX0qW1dsXShlLHQpe2Zvcihjb25zdCBhIG9mIHRoaXNbQm9dKCkpaWYoIWV8fHQ9PT1lLmhhcyhhW2VsXSkpe2NvbnN0IGU9dGhpc1tTb10oKSx0PWFbd2xdKGUpO3Quc3VjY2Vzc3x8KHRoaXNbam9dLmZhaWxpbmdOb2RlPWEpO3lpZWxkIHR9fVt5b10oKXtyZXR1cm4gbnVsbH1bb29dKGUsdCl7dGhpc1tqb10uY2hpbGRyZW4ucHVzaChlKX1bU29dKCl7fVtmb10oe2ZpbHRlcjplPW51bGwsaW5jbHVkZTp0PSEwfSl7aWYodGhpc1tqb10uZ2VuZXJhdG9yKXtjb25zdCBlPXRoaXNbU29dKCksdD10aGlzW2pvXS5mYWlsaW5nTm9kZVt3bF0oZSk7aWYoIXQuc3VjY2VzcylyZXR1cm4gdDt0Lmh0bWwmJnRoaXNbb29dKHQuaHRtbCx0LmJib3gpO2RlbGV0ZSB0aGlzW2pvXS5mYWlsaW5nTm9kZX1lbHNlIHRoaXNbam9dLmdlbmVyYXRvcj10aGlzW1dsXShlLHQpO2Zvcig7Oyl7Y29uc3QgZT10aGlzW2pvXS5nZW5lcmF0b3IubmV4dCgpO2lmKGUuZG9uZSlicmVhaztjb25zdCB0PWUudmFsdWU7aWYoIXQuc3VjY2VzcylyZXR1cm4gdDt0Lmh0bWwmJnRoaXNbb29dKHQuaHRtbCx0LmJib3gpfXRoaXNbam9dLmdlbmVyYXRvcj1udWxsO3JldHVybiBIVE1MUmVzdWx0LkVNUFRZfVttbF0oZSl7dGhpc1tRbF09bmV3IFNldChPYmplY3Qua2V5cyhlKSl9W0tsXShlKXtjb25zdCB0PXRoaXNbUGxdLGE9dGhpc1tRbF07cmV0dXJuIGUua2V5cygpLmZpbHRlcihlPT50LmhhcyhlKSYmIWEuaGFzKGUpKS50b0FycmF5KCl9W2NsXShlLHQ9bmV3IFNldCl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tFbF0pYVtKbF0oZSx0KX1bSmxdKGUsdCl7Y29uc3QgYT10aGlzW1hsXShlLHQpO2E/dGhpc1tNbF0oYSxlLHQpOnRoaXNbY2xdKGUsdCl9W1hsXShlLHQpe2NvbnN0e3VzZTphLHVzZWhyZWY6bn09dGhpcztpZighYSYmIW4pcmV0dXJuIG51bGw7bGV0IHM9bnVsbCxyPW51bGwsaT1udWxsLG89YTtpZihuKXtvPW47bi5zdGFydHNXaXRoKCIjc29tKCIpJiZuLmVuZHNXaXRoKCIpIik/cj1uLnNsaWNlKDUsLTEpOm4uc3RhcnRzV2l0aCgiLiNzb20oIikmJm4uZW5kc1dpdGgoIikiKT9yPW4uc2xpY2UoNiwtMSk6bi5zdGFydHNXaXRoKCIjIik/aT1uLnNsaWNlKDEpOm4uc3RhcnRzV2l0aCgiLiMiKSYmKGk9bi5zbGljZSgyKSl9ZWxzZSBhLnN0YXJ0c1dpdGgoIiMiKT9pPWEuc2xpY2UoMSk6cj1hO3RoaXMudXNlPXRoaXMudXNlaHJlZj0iIjtpZihpKXM9ZS5nZXQoaSk7ZWxzZXtzPXNlYXJjaE5vZGUoZS5nZXQoZmwpLHRoaXMsciwhMCwhMSk7cyYmPXNbMF19aWYoIXMpe3dhcm4oYFhGQSAtIEludmFsaWQgcHJvdG90eXBlIHJlZmVyZW5jZTogJHtvfS5gKTtyZXR1cm4gbnVsbH1pZihzW2VsXSE9PXRoaXNbZWxdKXt3YXJuKGBYRkEgLSBJbmNvbXBhdGlibGUgcHJvdG90eXBlOiAke3NbZWxdfSAhPT0gJHt0aGlzW2VsXX0uYCk7cmV0dXJuIG51bGx9aWYodC5oYXMocykpe3dhcm4oIlhGQSAtIEN5Y2xlIGRldGVjdGVkIGluIHByb3RvdHlwZXMgdXNlLiIpO3JldHVybiBudWxsfXQuYWRkKHMpO2NvbnN0IGw9c1tYbF0oZSx0KTtsJiZzW01sXShsLGUsdCk7c1tjbF0oZSx0KTt0LmRlbGV0ZShzKTtyZXR1cm4gc31bTWxdKGUsdCxhKXtpZihhLmhhcyhlKSl7d2FybigiWEZBIC0gQ3ljbGUgZGV0ZWN0ZWQgaW4gcHJvdG90eXBlcyB1c2UuIik7cmV0dXJufSF0aGlzW2dvXSYmZVtnb10mJih0aGlzW2dvXT1lW2dvXSk7bmV3IFNldChhKS5hZGQoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpc1tLbF0oZVtRbF0pKXt0aGlzW3RdPWVbdF07dGhpc1tRbF0mJnRoaXNbUWxdLmFkZCh0KX1mb3IoY29uc3QgbiBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYodGhpc1tQbF0uaGFzKG4pKWNvbnRpbnVlO2NvbnN0IHM9dGhpc1tuXSxyPWVbbl07aWYocyBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KXtmb3IoY29uc3QgZSBvZiBzW0VsXSllW0psXSh0LGEpO2ZvcihsZXQgbj1zW0VsXS5sZW5ndGgsaT1yW0VsXS5sZW5ndGg7bjxpO24rKyl7Y29uc3Qgcj1lW0VsXVtuXVttb10oKTtpZighcy5wdXNoKHIpKWJyZWFrO3JbWWxdPXRoaXM7dGhpc1tFbF0ucHVzaChyKTtyW0psXSh0LGEpfX1lbHNlIGlmKG51bGw9PT1zKXtpZihudWxsIT09cil7Y29uc3QgZT1yW21vXSgpO2VbWWxdPXRoaXM7dGhpc1tuXT1lO3RoaXNbRWxdLnB1c2goZSk7ZVtKbF0odCxhKX19ZWxzZXtzW2NsXSh0LGEpO3ImJnNbTWxdKHIsdCxhKX19fXN0YXRpY1tfbF0oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5tYXAoZT0+WEZBT2JqZWN0W19sXShlKSk6Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZT9PYmplY3QuYXNzaWduKHt9LGUpOmV9W21vXSgpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykpO2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModGhpcykpdHJ5e2VbdF09dGhpc1t0XX1jYXRjaHtzaGFkb3coZSx0LHRoaXNbdF0pfWVbeWxdPWAke2VbZWxdfSR7ZWYrK31gO2VbRWxdPVtdO2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZih0aGlzW1BsXS5oYXModCkpe2VbdF09WEZBT2JqZWN0W19sXSh0aGlzW3RdKTtjb250aW51ZX1jb25zdCBhPXRoaXNbdF07ZVt0XT1hIGluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXk/bmV3IFhGQU9iamVjdEFycmF5KGFbVmxdKTpudWxsfWZvcihjb25zdCB0IG9mIHRoaXNbRWxdKXtjb25zdCBhPXRbZWxdLG49dFttb10oKTtlW0VsXS5wdXNoKG4pO25bWWxdPWU7bnVsbD09PWVbYV0/ZVthXT1uOmVbYV1bRWxdLnB1c2gobil9cmV0dXJuIGV9W09vXShlPW51bGwpe3JldHVybiBlP3RoaXNbRWxdLmZpbHRlcih0PT50W2VsXT09PWUpOnRoaXNbRWxdfVtBb10oZSl7cmV0dXJuIHRoaXNbZV19W3hvXShlLHQsYT0hMCl7cmV0dXJuIEFycmF5LmZyb20odGhpc1tDb10oZSx0LGEpKX0qW0NvXShlLHQsYT0hMCl7aWYoInBhcmVudCIhPT1lKXtmb3IoY29uc3QgYSBvZiB0aGlzW0VsXSl7YVtlbF09PT1lJiYoeWllbGQgYSk7YS5uYW1lPT09ZSYmKHlpZWxkIGEpOyh0fHxhW1lvXSgpKSYmKHlpZWxkKmFbQ29dKGUsdCwhMSkpfWEmJnRoaXNbUGxdLmhhcyhlKSYmKHlpZWxkIG5ldyBYRkFBdHRyaWJ1dGUodGhpcyxlLHRoaXNbZV0pKX1lbHNlIHlpZWxkIHRoaXNbWWxdfX1jbGFzcyBYRkFPYmplY3RBcnJheXtjb25zdHJ1Y3RvcihlPTEvMCl7dGhpc1tWbF09ZTt0aGlzW0VsXT1bXX1nZXQgaXNYRkFPYmplY3QoKXtyZXR1cm4hMX1nZXQgaXNYRkFPYmplY3RBcnJheSgpe3JldHVybiEwfXB1c2goZSl7aWYodGhpc1tFbF0ubGVuZ3RoPD10aGlzW1ZsXSl7dGhpc1tFbF0ucHVzaChlKTtyZXR1cm4hMH13YXJuKGBYRkEgLSBub2RlICIke2VbZWxdfSIgYWNjZXB0cyBubyBtb3JlIHRoYW4gJHt0aGlzW1ZsXX0gY2hpbGRyZW5gKTtyZXR1cm4hMX1pc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzW0VsXS5sZW5ndGh9ZHVtcCgpe3JldHVybiAxPT09dGhpc1tFbF0ubGVuZ3RoP3RoaXNbRWxdWzBdW3dvXSgpOnRoaXNbRWxdLm1hcChlPT5lW3dvXSgpKX1bbW9dKCl7Y29uc3QgZT1uZXcgWEZBT2JqZWN0QXJyYXkodGhpc1tWbF0pO2VbRWxdPXRoaXNbRWxdLm1hcChlPT5lW21vXSgpKTtyZXR1cm4gZX1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpc1tFbF19Y2xlYXIoKXt0aGlzW0VsXS5sZW5ndGg9MH19Y2xhc3MgWEZBQXR0cmlidXRle2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzW1lsXT1lO3RoaXNbZWxdPXQ7dGhpc1tnb109YTt0aGlzW3BvXT0hMTt0aGlzW3lsXT0iYXR0cmlidXRlIitlZisrfVtNb10oKXtyZXR1cm4gdGhpc1tZbF19W1hvXSgpe3JldHVybiEwfVtJb10oKXtyZXR1cm4gdGhpc1tnb10udHJpbSgpfVtwbF0oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW2dvXT1lLnRvU3RyaW5nKCl9W2dsXSgpe3JldHVybiB0aGlzW2dvXX1bS29dKGUpe3JldHVybiB0aGlzW1lsXT09PWV8fHRoaXNbWWxdW0tvXShlKX19Y2xhc3MgWG1sT2JqZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhPXt9KXtzdXBlcihlLHQpO3RoaXNbZ29dPSIiO3RoaXNbemxdPW51bGw7aWYoIiN0ZXh0IiE9PXQpe2NvbnN0IGU9bmV3IE1hcDt0aGlzW05sXT1lO2Zvcihjb25zdFt0LG5db2YgT2JqZWN0LmVudHJpZXMoYSkpZS5zZXQodCxuZXcgWEZBQXR0cmlidXRlKHRoaXMsdCxuKSk7aWYoT2JqZWN0Lmhhc093bihhLHRsKSl7Y29uc3QgZT1hW3RsXS54ZmEuZGF0YU5vZGU7dm9pZCAwIT09ZSYmKCJkYXRhR3JvdXAiPT09ZT90aGlzW3psXT0hMToiZGF0YVZhbHVlIj09PWUmJih0aGlzW3psXT0hMCkpfX10aGlzW3BvXT0hMX1bamxdKGUpe2NvbnN0IHQ9dGhpc1tlbF07aWYoIiN0ZXh0Ij09PXQpe2UucHVzaChlbmNvZGVUb1htbFN0cmluZyh0aGlzW2dvXSkpO3JldHVybn1jb25zdCBhPXV0ZjhTdHJpbmdUb1N0cmluZyh0KSxuPXRoaXNbWm9dPT09dGY/InhmYToiOiIiO2UucHVzaChgPCR7bn0ke2F9YCk7Zm9yKGNvbnN0W3QsYV1vZiB0aGlzW05sXSl7Y29uc3Qgbj11dGY4U3RyaW5nVG9TdHJpbmcodCk7ZS5wdXNoKGAgJHtufT0iJHtlbmNvZGVUb1htbFN0cmluZyhhW2dvXSl9ImApfW51bGwhPT10aGlzW3psXSYmKHRoaXNbemxdP2UucHVzaCgnIHhmYTpkYXRhTm9kZT0iZGF0YVZhbHVlIicpOmUucHVzaCgnIHhmYTpkYXRhTm9kZT0iZGF0YUdyb3VwIicpKTtpZih0aGlzW2dvXXx8MCE9PXRoaXNbRWxdLmxlbmd0aCl7ZS5wdXNoKCI+Iik7aWYodGhpc1tnb10pInN0cmluZyI9PXR5cGVvZiB0aGlzW2dvXT9lLnB1c2goZW5jb2RlVG9YbWxTdHJpbmcodGhpc1tnb10pKTp0aGlzW2dvXVtqbF0oZSk7ZWxzZSBmb3IoY29uc3QgdCBvZiB0aGlzW0VsXSl0W2psXShlKTtlLnB1c2goYDwvJHtufSR7YX0+YCl9ZWxzZSBlLnB1c2goIi8+Iil9W2FsXShlKXtpZih0aGlzW2dvXSl7Y29uc3QgZT1uZXcgWG1sT2JqZWN0KHRoaXNbWm9dLCIjdGV4dCIpO3RoaXNbbG9dKGUpO2VbZ29dPXRoaXNbZ29dO3RoaXNbZ29dPSIifXRoaXNbbG9dKGUpO3JldHVybiEwfVtzbF0oZSl7dGhpc1tnb10rPWV9W2tvXSgpe2lmKHRoaXNbZ29dJiZ0aGlzW0VsXS5sZW5ndGg+MCl7Y29uc3QgZT1uZXcgWG1sT2JqZWN0KHRoaXNbWm9dLCIjdGV4dCIpO3RoaXNbbG9dKGUpO2VbZ29dPXRoaXNbZ29dO2RlbGV0ZSB0aGlzW2dvXX19W3dsXSgpe3JldHVybiIjdGV4dCI9PT10aGlzW2VsXT9IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6IiN0ZXh0Iix2YWx1ZTp0aGlzW2dvXX0pOkhUTUxSZXN1bHQuRU1QVFl9W3ZvXSgpe3JldHVybiB0aGlzW05sXX1bQW9dKGUpe2NvbnN0IHQ9dGhpc1tObF0uZ2V0KGUpO3JldHVybiB2b2lkIDAhPT10P3Q6dGhpc1tPb10oZSl9KltDb10oZSx0KXtjb25zdCBhPXRoaXNbTmxdLmdldChlKTthJiYoeWllbGQgYSk7Zm9yKGNvbnN0IGEgb2YgdGhpc1tFbF0pe2FbZWxdPT09ZSYmKHlpZWxkIGEpO3QmJih5aWVsZCphW0NvXShlLHQpKX19Kltxb10oZSx0KXtjb25zdCBhPXRoaXNbTmxdLmdldChlKTshYXx8dCYmYVtwb118fCh5aWVsZCBhKTtmb3IoY29uc3QgYSBvZiB0aGlzW0VsXSl5aWVsZCphW3FvXShlLHQpfSpbUm9dKGUsdCxhKXtmb3IoY29uc3QgbiBvZiB0aGlzW0VsXSl7bltlbF0hPT1lfHxhJiZuW3BvXXx8KHlpZWxkIG4pO3QmJih5aWVsZCpuW1JvXShlLHQsYSkpfX1bWG9dKCl7cmV0dXJuIG51bGw9PT10aGlzW3psXT8wPT09dGhpc1tFbF0ubGVuZ3RofHx0aGlzW0VsXVswXVtab109PT12bC54aHRtbC5pZDp0aGlzW3psXX1bSW9dKCl7cmV0dXJuIG51bGw9PT10aGlzW3psXT8wPT09dGhpc1tFbF0ubGVuZ3RoP3RoaXNbZ29dLnRyaW0oKTp0aGlzW0VsXVswXVtab109PT12bC54aHRtbC5pZD90aGlzW0VsXVswXVtnbF0oKS50cmltKCk6bnVsbDp0aGlzW2dvXS50cmltKCl9W3BsXShlKXtlPWUudmFsdWV8fCIiO3RoaXNbZ29dPWUudG9TdHJpbmcoKX1bd29dKGU9ITEpe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtlJiYodC4kbnM9dGhpc1tab10pO3RoaXNbZ29dJiYodC4kY29udGVudD10aGlzW2dvXSk7dC4kbmFtZT10aGlzW2VsXTt0LmNoaWxkcmVuPVtdO2Zvcihjb25zdCBhIG9mIHRoaXNbRWxdKXQuY2hpbGRyZW4ucHVzaChhW3dvXShlKSk7dC5hdHRyaWJ1dGVzPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W2UsYV1vZiB0aGlzW05sXSl0LmF0dHJpYnV0ZXNbZV09YVtnb107cmV0dXJuIHR9fWNsYXNzIENvbnRlbnRPYmplY3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpO3RoaXNbZ29dPSIifVtzbF0oZSl7dGhpc1tnb10rPWV9W2tvXSgpe319Y2xhc3MgT3B0aW9uT2JqZWN0IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoZSx0KTt0aGlzWyRsXT1hfVtrb10oKXt0aGlzW2dvXT1nZXRLZXl3b3JkKHtkYXRhOnRoaXNbZ29dLGRlZmF1bHRWYWx1ZTp0aGlzWyRsXVswXSx2YWxpZGF0ZTplPT50aGlzWyRsXS5pbmNsdWRlcyhlKX0pfVtjb10oZSl7c3VwZXJbY29dKGUpO2RlbGV0ZSB0aGlzWyRsXX19Y2xhc3MgU3RyaW5nT2JqZWN0IGV4dGVuZHMgQ29udGVudE9iamVjdHtba29dKCl7dGhpc1tnb109dGhpc1tnb10udHJpbSgpfX1jbGFzcyBJbnRlZ2VyT2JqZWN0IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlLHQsYSxuKXtzdXBlcihlLHQpO3RoaXNbTGxdPWE7dGhpc1tabF09bn1ba29dKCl7dGhpc1tnb109Z2V0SW50ZWdlcih7ZGF0YTp0aGlzW2dvXSxkZWZhdWx0VmFsdWU6dGhpc1tMbF0sdmFsaWRhdGU6dGhpc1tabF19KX1bY29dKGUpe3N1cGVyW2NvXShlKTtkZWxldGUgdGhpc1tMbF07ZGVsZXRlIHRoaXNbWmxdfX1jbGFzcyBPcHRpb24wMSBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsMCxlPT4xPT09ZSl9fWNsYXNzIE9wdGlvbjEwIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwxLGU9PjA9PT1lKX19ZnVuY3Rpb24gbWVhc3VyZVRvU3RyaW5nKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT8iMHB4IjpOdW1iZXIuaXNJbnRlZ2VyKGUpP2Ake2V9cHhgOmAke2UudG9GaXhlZCgyKX1weGB9Y29uc3QgYWY9e2FuY2hvclR5cGUoZSx0KXtjb25zdCBhPWVbSG9dKCk7aWYoYSYmKCFhLmxheW91dHx8InBvc2l0aW9uIj09PWEubGF5b3V0KSl7InRyYW5zZm9ybSJpbiB0fHwodC50cmFuc2Zvcm09IiIpO3N3aXRjaChlLmFuY2hvclR5cGUpe2Nhc2UiYm90dG9tQ2VudGVyIjp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtNTAlLCAtMTAwJSkiO2JyZWFrO2Nhc2UiYm90dG9tTGVmdCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoMCwtMTAwJSkiO2JyZWFrO2Nhc2UiYm90dG9tUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLC0xMDAlKSI7YnJlYWs7Y2FzZSJtaWRkbGVDZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsLTUwJSkiO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoMCwtNTAlKSI7YnJlYWs7Y2FzZSJtaWRkbGVSaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsLTUwJSkiO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtNTAlLDApIjticmVhaztjYXNlInRvcFJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwwKSJ9fX0sZGltZW5zaW9ucyhlLHQpe2NvbnN0IGE9ZVtIb10oKTtsZXQgbj1lLnc7Y29uc3Qgcz1lLmg7aWYoYS5sYXlvdXQ/LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgdD1hW2pvXSxzPWUuY29sU3BhbjtsZXQgcjtpZigtMT09PXMpe3I9TWF0aC5zdW1QcmVjaXNlKHQuY29sdW1uV2lkdGhzLnNsaWNlKHQuY3VycmVudENvbHVtbikpO3QuY3VycmVudENvbHVtbj0wfWVsc2V7cj1NYXRoLnN1bVByZWNpc2UodC5jb2x1bW5XaWR0aHMuc2xpY2UodC5jdXJyZW50Q29sdW1uLHQuY3VycmVudENvbHVtbitzKSk7dC5jdXJyZW50Q29sdW1uPSh0LmN1cnJlbnRDb2x1bW4rZS5jb2xTcGFuKSV0LmNvbHVtbldpZHRocy5sZW5ndGh9aXNOYU4ocil8fChuPWUudz1yKX10LndpZHRoPSIiIT09bj9tZWFzdXJlVG9TdHJpbmcobik6ImF1dG8iO3QuaGVpZ2h0PSIiIT09cz9tZWFzdXJlVG9TdHJpbmcocyk6ImF1dG8ifSxwb3NpdGlvbihlLHQpe2NvbnN0IGE9ZVtIb10oKTtpZighYT8ubGF5b3V0fHwicG9zaXRpb24iPT09YS5sYXlvdXQpe3QucG9zaXRpb249ImFic29sdXRlIjt0LmxlZnQ9bWVhc3VyZVRvU3RyaW5nKGUueCk7dC50b3A9bWVhc3VyZVRvU3RyaW5nKGUueSl9fSxyb3RhdGUoZSx0KXtpZihlLnJvdGF0ZSl7InRyYW5zZm9ybSJpbiB0fHwodC50cmFuc2Zvcm09IiIpO3QudHJhbnNmb3JtKz1gcm90YXRlKC0ke2Uucm90YXRlfWRlZylgO3QudHJhbnNmb3JtT3JpZ2luPSJ0b3AgbGVmdCJ9fSxwcmVzZW5jZShlLHQpe3N3aXRjaChlLnByZXNlbmNlKXtjYXNlImludmlzaWJsZSI6dC52aXNpYmlsaXR5PSJoaWRkZW4iO2JyZWFrO2Nhc2UiaGlkZGVuIjpjYXNlImluYWN0aXZlIjp0LmRpc3BsYXk9Im5vbmUifX0saEFsaWduKGUsdCl7aWYoInBhcmEiPT09ZVtlbF0pc3dpdGNoKGUuaEFsaWduKXtjYXNlImp1c3RpZnlBbGwiOnQudGV4dEFsaWduPSJqdXN0aWZ5LWFsbCI7YnJlYWs7Y2FzZSJyYWRpeCI6dC50ZXh0QWxpZ249ImxlZnQiO2JyZWFrO2RlZmF1bHQ6dC50ZXh0QWxpZ249ZS5oQWxpZ259ZWxzZSBzd2l0Y2goZS5oQWxpZ24pe2Nhc2UibGVmdCI6dC5hbGlnblNlbGY9InN0YXJ0IjticmVhaztjYXNlImNlbnRlciI6dC5hbGlnblNlbGY9ImNlbnRlciI7YnJlYWs7Y2FzZSJyaWdodCI6dC5hbGlnblNlbGY9ImVuZCJ9fSxtYXJnaW4oZSx0KXtlLm1hcmdpbiYmKHQubWFyZ2luPWUubWFyZ2luW2tsXSgpLm1hcmdpbil9fTtmdW5jdGlvbiBzZXRNaW5NYXhEaW1lbnNpb25zKGUsdCl7aWYoInBvc2l0aW9uIj09PWVbSG9dKCkubGF5b3V0KXtlLm1pblc+MCYmKHQubWluV2lkdGg9bWVhc3VyZVRvU3RyaW5nKGUubWluVykpO2UubWF4Vz4wJiYodC5tYXhXaWR0aD1tZWFzdXJlVG9TdHJpbmcoZS5tYXhXKSk7ZS5taW5IPjAmJih0Lm1pbkhlaWdodD1tZWFzdXJlVG9TdHJpbmcoZS5taW5IKSk7ZS5tYXhIPjAmJih0Lm1heEhlaWdodD1tZWFzdXJlVG9TdHJpbmcoZS5tYXhIKSl9fWZ1bmN0aW9uIGxheW91dFRleHQoZSx0LGEsbixzLHIpe2NvbnN0IGk9bmV3IFRleHRNZWFzdXJlKHQsYSxuLHMpOyJzdHJpbmciPT10eXBlb2YgZT9pLmFkZFN0cmluZyhlKTplW3JsXShpKTtyZXR1cm4gaS5jb21wdXRlKHIpfWZ1bmN0aW9uIGxheW91dE5vZGUoZSx0KXtsZXQgYT1udWxsLG49bnVsbCxzPSExO2lmKCghZS53fHwhZS5oKSYmZS52YWx1ZSl7bGV0IHI9MCxpPTA7aWYoZS5tYXJnaW4pe3I9ZS5tYXJnaW4ubGVmdEluc2V0K2UubWFyZ2luLnJpZ2h0SW5zZXQ7aT1lLm1hcmdpbi50b3BJbnNldCtlLm1hcmdpbi5ib3R0b21JbnNldH1sZXQgbz1udWxsLGw9bnVsbDtpZihlLnBhcmEpe2w9T2JqZWN0LmNyZWF0ZShudWxsKTtvPSIiPT09ZS5wYXJhLmxpbmVIZWlnaHQ/bnVsbDplLnBhcmEubGluZUhlaWdodDtsLnRvcD0iIj09PWUucGFyYS5zcGFjZUFib3ZlPzA6ZS5wYXJhLnNwYWNlQWJvdmU7bC5ib3R0b209IiI9PT1lLnBhcmEuc3BhY2VCZWxvdz8wOmUucGFyYS5zcGFjZUJlbG93O2wubGVmdD0iIj09PWUucGFyYS5tYXJnaW5MZWZ0PzA6ZS5wYXJhLm1hcmdpbkxlZnQ7bC5yaWdodD0iIj09PWUucGFyYS5tYXJnaW5SaWdodD8wOmUucGFyYS5tYXJnaW5SaWdodH1sZXQgZj1lLmZvbnQ7aWYoIWYpe2NvbnN0IHQ9ZVtOb10oKTtsZXQgYT1lW01vXSgpO2Zvcig7YSYmYSE9PXQ7KXtpZihhLmZvbnQpe2Y9YS5mb250O2JyZWFrfWE9YVtNb10oKX19Y29uc3QgYz0oZS53fHx0LndpZHRoKS1yLGg9ZVtQb10uZm9udEZpbmRlcjtpZihlLnZhbHVlLmV4RGF0YSYmZS52YWx1ZS5leERhdGFbZ29dJiYidGV4dC9odG1sIj09PWUudmFsdWUuZXhEYXRhLmNvbnRlbnRUeXBlKXtjb25zdCB0PWxheW91dFRleHQoZS52YWx1ZS5leERhdGFbZ29dLGYsbCxvLGgsYyk7bj10LndpZHRoO2E9dC5oZWlnaHQ7cz10LmlzQnJva2VufWVsc2V7Y29uc3QgdD1lLnZhbHVlW2dsXSgpO2lmKHQpe2NvbnN0IGU9bGF5b3V0VGV4dCh0LGYsbCxvLGgsYyk7bj1lLndpZHRoO2E9ZS5oZWlnaHQ7cz1lLmlzQnJva2VufX1udWxsPT09bnx8ZS53fHwobis9cik7bnVsbD09PWF8fGUuaHx8KGErPWkpfXJldHVybnt3Om4saDphLGlzQnJva2VuOnN9fWZ1bmN0aW9uIGNvbXB1dGVCYm94KGUsdCxhKXtsZXQgbjtpZigiIiE9PWUudyYmIiIhPT1lLmgpbj1bZS54LGUueSxlLncsZS5oXTtlbHNle2lmKCFhKXJldHVybiBudWxsO2xldCBzPWUudztpZigiIj09PXMpe2lmKDA9PT1lLm1heFcpe2NvbnN0IHQ9ZVtIb10oKTtzPSJwb3NpdGlvbiI9PT10LmxheW91dCYmIiIhPT10Lnc/MDplLm1pbld9ZWxzZSBzPU1hdGgubWluKGUubWF4VyxhLndpZHRoKTt0LmF0dHJpYnV0ZXMuc3R5bGUud2lkdGg9bWVhc3VyZVRvU3RyaW5nKHMpfWxldCByPWUuaDtpZigiIj09PXIpe2lmKDA9PT1lLm1heEgpe2NvbnN0IHQ9ZVtIb10oKTtyPSJwb3NpdGlvbiI9PT10LmxheW91dCYmIiIhPT10Lmg/MDplLm1pbkh9ZWxzZSByPU1hdGgubWluKGUubWF4SCxhLmhlaWdodCk7dC5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcocil9bj1bZS54LGUueSxzLHJdfXJldHVybiBufWZ1bmN0aW9uIGZpeERpbWVuc2lvbnMoZSl7Y29uc3QgdD1lW0hvXSgpO2lmKHQubGF5b3V0Py5pbmNsdWRlcygicm93Iikpe2NvbnN0IGE9dFtqb10sbj1lLmNvbFNwYW47bGV0IHM7cz0tMT09PW4/TWF0aC5zdW1QcmVjaXNlKGEuY29sdW1uV2lkdGhzLnNsaWNlKGEuY3VycmVudENvbHVtbikpOk1hdGguc3VtUHJlY2lzZShhLmNvbHVtbldpZHRocy5zbGljZShhLmN1cnJlbnRDb2x1bW4sYS5jdXJyZW50Q29sdW1uK24pKTtpc05hTihzKXx8KGUudz1zKX10LmxheW91dCYmInBvc2l0aW9uIiE9PXQubGF5b3V0JiYoZS54PWUueT0wKTsidGFibGUiPT09ZS5sYXlvdXQmJiIiPT09ZS53JiZBcnJheS5pc0FycmF5KGUuY29sdW1uV2lkdGhzKSYmKGUudz1NYXRoLnN1bVByZWNpc2UoZS5jb2x1bW5XaWR0aHMpKX1mdW5jdGlvbiBsYXlvdXRDbGFzcyhlKXtzd2l0Y2goZS5sYXlvdXQpe2Nhc2UicG9zaXRpb24iOmRlZmF1bHQ6cmV0dXJuInhmYVBvc2l0aW9uIjtjYXNlImxyLXRiIjpyZXR1cm4ieGZhTHJUYiI7Y2FzZSJybC1yb3ciOnJldHVybiJ4ZmFSbFJvdyI7Y2FzZSJybC10YiI6cmV0dXJuInhmYVJsVGIiO2Nhc2Uicm93IjpyZXR1cm4ieGZhUm93IjtjYXNlInRhYmxlIjpyZXR1cm4ieGZhVGFibGUiO2Nhc2UidGIiOnJldHVybiJ4ZmFUYiJ9fWZ1bmN0aW9uIHRvU3R5bGUoZSwuLi50KXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0IG4gb2YgdCl7Y29uc3QgdD1lW25dO2lmKG51bGwhPT10KWlmKE9iamVjdC5oYXNPd24oYWYsbikpYWZbbl0oZSxhKTtlbHNlIGlmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3Qpe2NvbnN0IGU9dFtrbF0oKTtlP09iamVjdC5hc3NpZ24oYSxlKTp3YXJuKGAoREVCVUcpIC0gWEZBIC0gc3R5bGUgZm9yICR7bn0gbm90IGltcGxlbWVudGVkIHlldGApfX1yZXR1cm4gYX1mdW5jdGlvbiBjcmVhdGVXcmFwcGVyKGUsdCl7Y29uc3R7YXR0cmlidXRlczphfT10LHtzdHlsZTpufT1hLHM9e25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFXcmFwcGVyIl0sc3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sY2hpbGRyZW46W119O2EuY2xhc3MucHVzaCgieGZhV3JhcHBlZCIpO2lmKGUuYm9yZGVyKXtjb25zdHt3aWR0aHM6YSxpbnNldHM6cn09ZS5ib3JkZXJbam9dO2xldCBpLG8sbD1yWzBdLGY9clszXTtjb25zdCBjPXJbMF0rclsyXSxoPXJbMV0rclszXTtzd2l0Y2goZS5ib3JkZXIuaGFuZCl7Y2FzZSJldmVuIjpsLT1hWzBdLzI7Zi09YVszXS8yO2k9YGNhbGMoMTAwJSArICR7KGFbMV0rYVszXSkvMi1ofXB4KWA7bz1gY2FsYygxMDAlICsgJHsoYVswXSthWzJdKS8yLWN9cHgpYDticmVhaztjYXNlImxlZnQiOmwtPWFbMF07Zi09YVszXTtpPWBjYWxjKDEwMCUgKyAke2FbMV0rYVszXS1ofXB4KWA7bz1gY2FsYygxMDAlICsgJHthWzBdK2FbMl0tY31weClgO2JyZWFrO2Nhc2UicmlnaHQiOmk9aD9gY2FsYygxMDAlIC0gJHtofXB4KWA6IjEwMCUiO289Yz9gY2FsYygxMDAlIC0gJHtjfXB4KWA6IjEwMCUifWNvbnN0IHU9WyJ4ZmFCb3JkZXIiXTtpc1ByaW50T25seShlLmJvcmRlcikmJnUucHVzaCgieGZhUHJpbnRPbmx5Iik7Y29uc3QgbT17bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczp1LHN0eWxlOnt0b3A6YCR7bH1weGAsbGVmdDpgJHtmfXB4YCx3aWR0aDppLGhlaWdodDpvfX0sY2hpbGRyZW46W119O2Zvcihjb25zdCBlIG9mWyJib3JkZXIiLCJib3JkZXJXaWR0aCIsImJvcmRlckNvbG9yIiwiYm9yZGVyUmFkaXVzIiwiYm9yZGVyU3R5bGUiXSlpZih2b2lkIDAhPT1uW2VdKXttLmF0dHJpYnV0ZXMuc3R5bGVbZV09bltlXTtkZWxldGUgbltlXX1zLmNoaWxkcmVuLnB1c2gobSx0KX1lbHNlIHMuY2hpbGRyZW4ucHVzaCh0KTtmb3IoY29uc3QgZSBvZlsiYmFja2dyb3VuZCIsImJhY2tncm91bmRDbGlwIiwidG9wIiwibGVmdCIsIndpZHRoIiwiaGVpZ2h0IiwibWluV2lkdGgiLCJtaW5IZWlnaHQiLCJtYXhXaWR0aCIsIm1heEhlaWdodCIsInRyYW5zZm9ybSIsInRyYW5zZm9ybU9yaWdpbiIsInZpc2liaWxpdHkiXSlpZih2b2lkIDAhPT1uW2VdKXtzLmF0dHJpYnV0ZXMuc3R5bGVbZV09bltlXTtkZWxldGUgbltlXX1zLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIj09PW4ucG9zaXRpb24/ImFic29sdXRlIjoicmVsYXRpdmUiO2RlbGV0ZSBuLnBvc2l0aW9uO2lmKG4uYWxpZ25TZWxmKXtzLmF0dHJpYnV0ZXMuc3R5bGUuYWxpZ25TZWxmPW4uYWxpZ25TZWxmO2RlbGV0ZSBuLmFsaWduU2VsZn1yZXR1cm4gc31mdW5jdGlvbiBmaXhUZXh0SW5kZW50KGUpe2NvbnN0IHQ9Z2V0TWVhc3VyZW1lbnQoZS50ZXh0SW5kZW50LCIwcHgiKTtpZih0Pj0wKXJldHVybjtjb25zdCBhPSJwYWRkaW5nIisoImxlZnQiPT09KCJyaWdodCI9PT1lLnRleHRBbGlnbj8icmlnaHQiOiJsZWZ0Iik/IkxlZnQiOiJSaWdodCIpLG49Z2V0TWVhc3VyZW1lbnQoZVthXSwiMHB4Iik7ZVthXT1uLXQrInB4In1mdW5jdGlvbiBzZXRBY2Nlc3MoZSx0KXtzd2l0Y2goZS5hY2Nlc3Mpe2Nhc2Uibm9uSW50ZXJhY3RpdmUiOnQucHVzaCgieGZhTm9uSW50ZXJhY3RpdmUiKTticmVhaztjYXNlInJlYWRPbmx5Ijp0LnB1c2goInhmYVJlYWRPbmx5Iik7YnJlYWs7Y2FzZSJwcm90ZWN0ZWQiOnQucHVzaCgieGZhRGlzYWJsZWQiKX19ZnVuY3Rpb24gaXNQcmludE9ubHkoZSl7cmV0dXJuIGUucmVsZXZhbnQubGVuZ3RoPjAmJiFlLnJlbGV2YW50WzBdLmV4Y2x1ZGVkJiYicHJpbnQiPT09ZS5yZWxldmFudFswXS52aWV3bmFtZX1mdW5jdGlvbiBnZXRDdXJyZW50UGFyYShlKXtjb25zdCB0PWVbTm9dKClbam9dLnBhcmFTdGFjaztyZXR1cm4gdC5sZW5ndGg/dC5hdCgtMSk6bnVsbH1mdW5jdGlvbiBzZXRQYXJhKGUsdCxhKXtpZihhLmF0dHJpYnV0ZXMuY2xhc3M/LmluY2x1ZGVzKCJ4ZmFSaWNoIikpe2lmKHQpeyIiPT09ZS5oJiYodC5oZWlnaHQ9ImF1dG8iKTsiIj09PWUudyYmKHQud2lkdGg9ImF1dG8iKX1jb25zdCBuPWdldEN1cnJlbnRQYXJhKGUpO2lmKG4pe2NvbnN0IGU9YS5hdHRyaWJ1dGVzLnN0eWxlO2UuZGlzcGxheT0iZmxleCI7ZS5mbGV4RGlyZWN0aW9uPSJjb2x1bW4iO3N3aXRjaChuLnZBbGlnbil7Y2FzZSJ0b3AiOmUuanVzdGlmeUNvbnRlbnQ9InN0YXJ0IjticmVhaztjYXNlImJvdHRvbSI6ZS5qdXN0aWZ5Q29udGVudD0iZW5kIjticmVhaztjYXNlIm1pZGRsZSI6ZS5qdXN0aWZ5Q29udGVudD0iY2VudGVyIn1jb25zdCB0PW5ba2xdKCk7Zm9yKGNvbnN0W2Esbl1vZiBPYmplY3QuZW50cmllcyh0KSlhIGluIGV8fChlW2FdPW4pfX19ZnVuY3Rpb24gc2V0Rm9udEZhbWlseShlLHQsYSxuKXtpZighYSl7ZGVsZXRlIG4uZm9udEZhbWlseTtyZXR1cm59Y29uc3Qgcz1zdHJpcFF1b3RlcyhlLnR5cGVmYWNlKTtuLmZvbnRGYW1pbHk9c2VyaWFsaXplRm9udEZhbWlseShzKTtjb25zdCByPWEuZmluZChzKTtpZihyKXtjb25zdHtmb250RmFtaWx5OmF9PXIucmVndWxhci5jc3NGb250SW5mbzthIT09cyYmKG4uZm9udEZhbWlseT1zZXJpYWxpemVGb250RmFtaWx5KGEpKTtjb25zdCBpPWdldEN1cnJlbnRQYXJhKHQpO2lmKGkmJiIiIT09aS5saW5lSGVpZ2h0KXJldHVybjtpZihuLmxpbmVIZWlnaHQpcmV0dXJuO2NvbnN0IG89c2VsZWN0Rm9udChlLHIpO28mJihuLmxpbmVIZWlnaHQ9TWF0aC5tYXgoMS4yLG8ubGluZUhlaWdodCkpfX1mdW5jdGlvbiBmaXhVUkwoZSl7Y29uc3QgdD1jcmVhdGVWYWxpZEFic29sdXRlVXJsKGUsbnVsbCx7YWRkRGVmYXVsdFByb3RvY29sOiEwLHRyeUNvbnZlcnRFbmNvZGluZzohMH0pO3JldHVybiB0P3QuaHJlZjpudWxsfWZ1bmN0aW9uIGNyZWF0ZUxpbmUoZSx0KXtyZXR1cm57bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbImxyLXRiIj09PWUubGF5b3V0PyJ4ZmFMciI6InhmYVJsIl19LGNoaWxkcmVuOnR9fWZ1bmN0aW9uIGZsdXNoSFRNTChlKXtpZighZVtqb10pcmV0dXJuIG51bGw7Y29uc3QgdD17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmVbam9dLmF0dHJpYnV0ZXMsY2hpbGRyZW46ZVtqb10uY2hpbGRyZW59O2lmKGVbam9dLmZhaWxpbmdOb2RlKXtjb25zdCBhPWVbam9dLmZhaWxpbmdOb2RlW3lvXSgpO2EmJihlLmxheW91dC5lbmRzV2l0aCgiLXRiIik/dC5jaGlsZHJlbi5wdXNoKGNyZWF0ZUxpbmUoZSxbYV0pKTp0LmNoaWxkcmVuLnB1c2goYSkpfXJldHVybiAwPT09dC5jaGlsZHJlbi5sZW5ndGg/bnVsbDp0fWZ1bmN0aW9uIGFkZEhUTUwoZSx0LGEpe2NvbnN0IG49ZVtqb10scz1uLmF2YWlsYWJsZVNwYWNlLFtyLGksbyxsXT1hO3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6bi53aWR0aD1NYXRoLm1heChuLndpZHRoLHIrbyk7bi5oZWlnaHQ9TWF0aC5tYXgobi5oZWlnaHQsaStsKTtuLmNoaWxkcmVuLnB1c2godCk7YnJlYWs7Y2FzZSJsci10YiI6Y2FzZSJybC10YiI6aWYoIW4ubGluZXx8MT09PW4uYXR0ZW1wdCl7bi5saW5lPWNyZWF0ZUxpbmUoZSxbXSk7bi5jaGlsZHJlbi5wdXNoKG4ubGluZSk7bi5udW1iZXJJbkxpbmU9MH1uLm51bWJlckluTGluZSs9MTtuLmxpbmUuY2hpbGRyZW4ucHVzaCh0KTtpZigwPT09bi5hdHRlbXB0KXtuLmN1cnJlbnRXaWR0aCs9bztuLmhlaWdodD1NYXRoLm1heChuLmhlaWdodCxuLnByZXZIZWlnaHQrbCl9ZWxzZXtuLmN1cnJlbnRXaWR0aD1vO24ucHJldkhlaWdodD1uLmhlaWdodDtuLmhlaWdodCs9bDtuLmF0dGVtcHQ9MH1uLndpZHRoPU1hdGgubWF4KG4ud2lkdGgsbi5jdXJyZW50V2lkdGgpO2JyZWFrO2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6e24uY2hpbGRyZW4ucHVzaCh0KTtuLndpZHRoKz1vO24uaGVpZ2h0PU1hdGgubWF4KG4uaGVpZ2h0LGwpO2NvbnN0IGU9bWVhc3VyZVRvU3RyaW5nKG4uaGVpZ2h0KTtmb3IoY29uc3QgdCBvZiBuLmNoaWxkcmVuKXQuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9ZTticmVha31jYXNlInRhYmxlIjpjYXNlInRiIjpuLndpZHRoPU1hdGhDbGFtcChvLG4ud2lkdGgscy53aWR0aCk7bi5oZWlnaHQrPWw7bi5jaGlsZHJlbi5wdXNoKHQpfX1mdW5jdGlvbiBnZXRBdmFpbGFibGVTcGFjZShlKXtjb25zdCB0PWVbam9dLmF2YWlsYWJsZVNwYWNlLGE9ZS5tYXJnaW4/ZS5tYXJnaW4udG9wSW5zZXQrZS5tYXJnaW4uYm90dG9tSW5zZXQ6MCxuPWUubWFyZ2luP2UubWFyZ2luLmxlZnRJbnNldCtlLm1hcmdpbi5yaWdodEluc2V0OjA7c3dpdGNoKGUubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PWVbam9dLmF0dGVtcHQ/e3dpZHRoOnQud2lkdGgtbi1lW2pvXS5jdXJyZW50V2lkdGgsaGVpZ2h0OnQuaGVpZ2h0LWEtZVtqb10ucHJldkhlaWdodH06e3dpZHRoOnQud2lkdGgtbixoZWlnaHQ6dC5oZWlnaHQtYS1lW2pvXS5oZWlnaHR9O2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6cmV0dXJue3dpZHRoOk1hdGguc3VtUHJlY2lzZShlW2pvXS5jb2x1bW5XaWR0aHMuc2xpY2UoZVtqb10uY3VycmVudENvbHVtbikpLGhlaWdodDp0LmhlaWdodC1ufTtjYXNlInRhYmxlIjpjYXNlInRiIjpyZXR1cm57d2lkdGg6dC53aWR0aC1uLGhlaWdodDp0LmhlaWdodC1hLWVbam9dLmhlaWdodH07ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gY2hlY2tEaW1lbnNpb25zKGUsdCl7aWYobnVsbD09PWVbTm9dKClbam9dLmZpcnN0VW5zcGxpdHRhYmxlfHwwPT09ZS53fHwwPT09ZS5oKXJldHVybiEwO2NvbnN0IGE9ZVtIb10oKSxuPWFbam9dPy5hdHRlbXB0fHwwLFsscyxyLGldPWZ1bmN0aW9uIGdldFRyYW5zZm9ybWVkQkJveChlKXtsZXQgdCxhLG49IiI9PT1lLnc/TmFOOmUudyxzPSIiPT09ZS5oP05hTjplLmgsW3IsaV09WzAsMF07c3dpdGNoKGUuYW5jaG9yVHlwZXx8IiIpe2Nhc2UiYm90dG9tQ2VudGVyIjpbcixpXT1bbi8yLHNdO2JyZWFrO2Nhc2UiYm90dG9tTGVmdCI6W3IsaV09WzAsc107YnJlYWs7Y2FzZSJib3R0b21SaWdodCI6W3IsaV09W24sc107YnJlYWs7Y2FzZSJtaWRkbGVDZW50ZXIiOltyLGldPVtuLzIscy8yXTticmVhaztjYXNlIm1pZGRsZUxlZnQiOltyLGldPVswLHMvMl07YnJlYWs7Y2FzZSJtaWRkbGVSaWdodCI6W3IsaV09W24scy8yXTticmVhaztjYXNlInRvcENlbnRlciI6W3IsaV09W24vMiwwXTticmVhaztjYXNlInRvcFJpZ2h0IjpbcixpXT1bbiwwXX1zd2l0Y2goZS5yb3RhdGV8fDApe2Nhc2UgMDpbdCxhXT1bLXIsLWldO2JyZWFrO2Nhc2UgOTA6W3QsYV09Wy1pLHJdO1tuLHNdPVtzLC1uXTticmVhaztjYXNlIDE4MDpbdCxhXT1bcixpXTtbbixzXT1bLW4sLXNdO2JyZWFrO2Nhc2UgMjcwOlt0LGFdPVtpLC1yXTtbbixzXT1bLXMsbl19cmV0dXJuW2UueCt0K01hdGgubWluKDAsbiksZS55K2ErTWF0aC5taW4oMCxzKSxNYXRoLmFicyhuKSxNYXRoLmFicyhzKV19KGUpO3N3aXRjaChhLmxheW91dCl7Y2FzZSJsci10YiI6Y2FzZSJybC10YiI6cmV0dXJuIDA9PT1uP2VbTm9dKClbam9dLm5vTGF5b3V0RmFpbHVyZT8iIiE9PWUudz9NYXRoLnJvdW5kKHItdC53aWR0aCk8PTI6dC53aWR0aD4yOiEoIiIhPT1lLmgmJk1hdGgucm91bmQoaS10LmhlaWdodCk+MikmJigiIiE9PWUudz9NYXRoLnJvdW5kKHItdC53aWR0aCk8PTJ8fDA9PT1hW2pvXS5udW1iZXJJbkxpbmUmJnQuaGVpZ2h0PjI6dC53aWR0aD4yKTohIWVbTm9dKClbam9dLm5vTGF5b3V0RmFpbHVyZXx8ISgiIiE9PWUuaCYmTWF0aC5yb3VuZChpLXQuaGVpZ2h0KT4yKSYmKCgiIj09PWUud3x8TWF0aC5yb3VuZChyLXQud2lkdGgpPD0yfHwhYVskb10oKSkmJnQuaGVpZ2h0PjIpO2Nhc2UidGFibGUiOmNhc2UidGIiOnJldHVybiEhZVtOb10oKVtqb10ubm9MYXlvdXRGYWlsdXJlfHwoIiI9PT1lLmh8fGVbVm9dKCk/KCIiPT09ZS53fHxNYXRoLnJvdW5kKHItdC53aWR0aCk8PTJ8fCFhWyRvXSgpKSYmdC5oZWlnaHQ+MjpNYXRoLnJvdW5kKGktdC5oZWlnaHQpPD0yKTtjYXNlInBvc2l0aW9uIjppZihlW05vXSgpW2pvXS5ub0xheW91dEZhaWx1cmV8fCIiPT09ZS5ofHxNYXRoLnJvdW5kKGkrcy10LmhlaWdodCk8PTIpcmV0dXJuITA7cmV0dXJuIGkrcz5lW05vXSgpW2pvXS5jdXJyZW50Q29udGVudEFyZWEuaDtjYXNlInJsLXJvdyI6Y2FzZSJyb3ciOnJldHVybiEhZVtOb10oKVtqb10ubm9MYXlvdXRGYWlsdXJlfHwoIiI9PT1lLmh8fE1hdGgucm91bmQoaS10LmhlaWdodCk8PTIpO2RlZmF1bHQ6cmV0dXJuITB9fWNvbnN0IG5mPXZsLnRlbXBsYXRlLmlkLHNmPS9eSChcZCspJC8scmY9bmV3IFNldChbImltYWdlL2dpZiIsImltYWdlL2pwZWciLCJpbWFnZS9qcGciLCJpbWFnZS9wanBlZyIsImltYWdlL3BuZyIsImltYWdlL2FwbmciLCJpbWFnZS94LXBuZyIsImltYWdlL2JtcCIsImltYWdlL3gtbXMtYm1wIiwiaW1hZ2UvdGlmZiIsImltYWdlL3RpZiIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdKSxvZj1bW1s2Niw3N10sImltYWdlL2JtcCJdLFtbMjU1LDIxNiwyNTVdLCJpbWFnZS9qcGVnIl0sW1s3Myw3Myw0MiwwXSwiaW1hZ2UvdGlmZiJdLFtbNzcsNzcsMCw0Ml0sImltYWdlL3RpZmYiXSxbWzcxLDczLDcwLDU2LDU3LDk3XSwiaW1hZ2UvZ2lmIl0sW1sxMzcsODAsNzgsNzEsMTMsMTAsMjYsMTBdLCJpbWFnZS9wbmciXV07ZnVuY3Rpb24gZ2V0Qm9yZGVyRGltcyhlKXtpZighZXx8IWUuYm9yZGVyKXJldHVybnt3OjAsaDowfTtjb25zdCB0PWUuYm9yZGVyW0ZvXSgpO3JldHVybiB0P3t3OnQud2lkdGhzWzBdK3Qud2lkdGhzWzJdK3QuaW5zZXRzWzBdK3QuaW5zZXRzWzJdLGg6dC53aWR0aHNbMV0rdC53aWR0aHNbM10rdC5pbnNldHNbMV0rdC5pbnNldHNbM119Ont3OjAsaDowfX1mdW5jdGlvbiBoYXNNYXJnaW4oZSl7cmV0dXJuIGUubWFyZ2luJiYoZS5tYXJnaW4udG9wSW5zZXR8fGUubWFyZ2luLnJpZ2h0SW5zZXR8fGUubWFyZ2luLmJvdHRvbUluc2V0fHxlLm1hcmdpbi5sZWZ0SW5zZXQpfWZ1bmN0aW9uIF9zZXRWYWx1ZShlLHQpe2lmKCFlLnZhbHVlKXtjb25zdCB0PW5ldyBWYWx1ZSh7fSk7ZVtsb10odCk7ZS52YWx1ZT10fWUudmFsdWVbcGxdKHQpfWZ1bmN0aW9uKmdldENvbnRhaW5lZENoaWxkcmVuKGUpe2Zvcihjb25zdCB0IG9mIGVbT29dKCkpdCBpbnN0YW5jZW9mIFN1YmZvcm1TZXQ/eWllbGQqdFtCb10oKTp5aWVsZCB0fWZ1bmN0aW9uIGlzUmVxdWlyZWQoZSl7cmV0dXJuImVycm9yIj09PWUudmFsaWRhdGU/Lm51bGxUZXN0fWZ1bmN0aW9uIHNldFRhYkluZGV4KGUpe2Zvcig7ZTspe2lmKCFlLnRyYXZlcnNhbCl7ZVtkbF09ZVtNb10oKVtkbF07cmV0dXJufWlmKGVbZGxdKXJldHVybjtsZXQgdD1udWxsO2Zvcihjb25zdCBhIG9mIGUudHJhdmVyc2FsW09vXSgpKWlmKCJuZXh0Ij09PWEub3BlcmF0aW9uKXt0PWE7YnJlYWt9aWYoIXR8fCF0LnJlZil7ZVtkbF09ZVtNb10oKVtkbF07cmV0dXJufWNvbnN0IGE9ZVtOb10oKTtlW2RsXT0rK2FbZGxdO2NvbnN0IG49YVtobF0odC5yZWYsZSk7aWYoIW4pcmV0dXJuO2U9blswXX19ZnVuY3Rpb24gYXBwbHlBc3Npc3QoZSx0KXtjb25zdCBhPWUuYXNzaXN0O2lmKGEpe2NvbnN0IGU9YVt3bF0oKTtlJiYodC50aXRsZT1lKTtjb25zdCBuPWEucm9sZS5tYXRjaChzZik7aWYobil7Y29uc3QgZT0iaGVhZGluZyIsYT1uWzFdO3Qucm9sZT1lO3RbImFyaWEtbGV2ZWwiXT1hfX1pZigidGFibGUiPT09ZS5sYXlvdXQpdC5yb2xlPSJ0YWJsZSI7ZWxzZSBpZigicm93Ij09PWUubGF5b3V0KXQucm9sZT0icm93IjtlbHNle2NvbnN0IGE9ZVtNb10oKTsicm93Ij09PWEubGF5b3V0JiYodC5yb2xlPSJUSCI9PT1hLmFzc2lzdD8ucm9sZT8iY29sdW1uaGVhZGVyIjoiY2VsbCIpfX1mdW5jdGlvbiBhcmlhTGFiZWwoZSl7aWYoIWUuYXNzaXN0KXJldHVybiBudWxsO2NvbnN0IHQ9ZS5hc3Npc3Q7cmV0dXJuIHQuc3BlYWsmJiIiIT09dC5zcGVha1tnb10/dC5zcGVha1tnb106dC50b29sVGlwP3QudG9vbFRpcFtnb106bnVsbH1mdW5jdGlvbiB2YWx1ZVRvSHRtbChlKXtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LGNoaWxkcmVuOlt7bmFtZToic3BhbiIsYXR0cmlidXRlczp7c3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sdmFsdWU6ZX1dfSl9ZnVuY3Rpb24gc2V0Rmlyc3RVbnNwbGl0dGFibGUoZSl7Y29uc3QgdD1lW05vXSgpO2lmKG51bGw9PT10W2pvXS5maXJzdFVuc3BsaXR0YWJsZSl7dFtqb10uZmlyc3RVbnNwbGl0dGFibGU9ZTt0W2pvXS5ub0xheW91dEZhaWx1cmU9ITB9fWZ1bmN0aW9uIHVuc2V0Rmlyc3RVbnNwbGl0dGFibGUoZSl7Y29uc3QgdD1lW05vXSgpO3Rbam9dLmZpcnN0VW5zcGxpdHRhYmxlPT09ZSYmKHRbam9dLm5vTGF5b3V0RmFpbHVyZT0hMSl9ZnVuY3Rpb24gaGFuZGxlQnJlYWsoZSl7aWYoZVtqb10pcmV0dXJuITE7ZVtqb109T2JqZWN0LmNyZWF0ZShudWxsKTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpcmV0dXJuITE7Y29uc3QgdD1lW05vXSgpO2xldCBhPW51bGw7aWYoZS50YXJnZXQpe2E9dFtobF0oZS50YXJnZXQsZVtNb10oKSk7aWYoIWEpcmV0dXJuITE7YT1hWzBdfWNvbnN0e2N1cnJlbnRQYWdlQXJlYTpuLGN1cnJlbnRDb250ZW50QXJlYTpzfT10W2pvXTtpZigicGFnZUFyZWEiPT09ZS50YXJnZXRUeXBlKXthIGluc3RhbmNlb2YgUGFnZUFyZWF8fChhPW51bGwpO2lmKGUuc3RhcnROZXcpe2Vbam9dLnRhcmdldD1hfHxuO3JldHVybiEwfWlmKGEmJmEhPT1uKXtlW2pvXS50YXJnZXQ9YTtyZXR1cm4hMH1yZXR1cm4hMX1hIGluc3RhbmNlb2YgQ29udGVudEFyZWF8fChhPW51bGwpO2NvbnN0IHI9YSYmYVtNb10oKTtsZXQgaSxvPXI7aWYoZS5zdGFydE5ldylpZihhKXtjb25zdCBlPXIuY29udGVudEFyZWEuY2hpbGRyZW4sdD1lLmluZGV4T2Yocyksbj1lLmluZGV4T2YoYSk7LTEhPT10JiZ0PG4mJihvPW51bGwpO2k9bi0xfWVsc2UgaT1uLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2Yocyk7ZWxzZXtpZighYXx8YT09PXMpcmV0dXJuITE7aT1yLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YoYSktMTtvPXI9PT1uP251bGw6cn1lW2pvXS50YXJnZXQ9bztlW2pvXS5pbmRleD1pO3JldHVybiEwfWZ1bmN0aW9uIGhhbmRsZU92ZXJmbG93KGUsdCxhKXtjb25zdCBuPWVbTm9dKCkscz1uW2pvXS5ub0xheW91dEZhaWx1cmUscj10W0hvXTt0W0hvXT0oKT0+ZTtuW2pvXS5ub0xheW91dEZhaWx1cmU9ITA7Y29uc3QgaT10W3dsXShhKTtlW29vXShpLmh0bWwsaS5iYm94KTtuW2pvXS5ub0xheW91dEZhaWx1cmU9czt0W0hvXT1yfWNsYXNzIEFwcGVhcmFuY2VGaWx0ZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImFwcGVhcmFuY2VGaWx0ZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEFyYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwiYXJjIiwhMCk7dGhpcy5jaXJjdWxhcj1nZXRJbnRlZ2VyKHtkYXRhOmUuY2lyY3VsYXIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnN0YXJ0QW5nbGU9Z2V0RmxvYXQoe2RhdGE6ZS5zdGFydEFuZ2xlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5zd2VlcEFuZ2xlPWdldEZsb2F0KHtkYXRhOmUuc3dlZXBBbmdsZSxkZWZhdWx0VmFsdWU6MzYwLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsO3RoaXMuZmlsbD1udWxsfVt3bF0oKXtjb25zdCBlPXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLHQ9ZVtrbF0oKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZT9PYmplY3QuYXNzaWduKGEsdGhpcy5maWxsW2tsXSgpKTphLmZpbGw9InRyYW5zcGFyZW50IjthLnN0cm9rZVdpZHRoPW1lYXN1cmVUb1N0cmluZygidmlzaWJsZSI9PT1lLnByZXNlbmNlP2UudGhpY2tuZXNzOjApO2Euc3Ryb2tlPXQuY29sb3I7bGV0IG47Y29uc3Qgcz17eG1sbnM6cixzdHlsZTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsb3ZlcmZsb3c6InZpc2libGUifX07aWYoMzYwPT09dGhpcy5zd2VlcEFuZ2xlKW49e25hbWU6ImVsbGlwc2UiLGF0dHJpYnV0ZXM6e3htbG5zOnIsY3g6IjUwJSIsY3k6IjUwJSIscng6IjUwJSIscnk6IjUwJSIsc3R5bGU6YX19O2Vsc2V7Y29uc3QgZT10aGlzLnN0YXJ0QW5nbGUqTWF0aC5QSS8xODAsdD10aGlzLnN3ZWVwQW5nbGUqTWF0aC5QSS8xODAsaT10aGlzLnN3ZWVwQW5nbGU+MTgwPzE6MCxbbyxsLGYsY109WzUwKigxK01hdGguY29zKGUpKSw1MCooMS1NYXRoLnNpbihlKSksNTAqKDErTWF0aC5jb3MoZSt0KSksNTAqKDEtTWF0aC5zaW4oZSt0KSldO249e25hbWU6InBhdGgiLGF0dHJpYnV0ZXM6e3htbG5zOnIsZDpgTSAke299ICR7bH0gQSA1MCA1MCAwICR7aX0gMCAke2Z9ICR7Y31gLHZlY3RvckVmZmVjdDoibm9uLXNjYWxpbmctc3Ryb2tlIixzdHlsZTphfX07T2JqZWN0LmFzc2lnbihzLHt2aWV3Qm94OiIwIDAgMTAwIDEwMCIscHJlc2VydmVBc3BlY3RSYXRpbzoibm9uZSJ9KX1jb25zdCBpPXtuYW1lOiJzdmciLGNoaWxkcmVuOltuXSxhdHRyaWJ1dGVzOnN9O2lmKGhhc01hcmdpbih0aGlzW01vXSgpW01vXSgpKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W2ldfSk7aS5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhpKX19Y2xhc3MgQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwiYXJlYSIsITApO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9KltCb10oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bWW9dKCl7cmV0dXJuITB9W1dvXSgpe3JldHVybiEwfVtvb10oZSx0KXtjb25zdFthLG4scyxyXT10O3RoaXNbam9dLndpZHRoPU1hdGgubWF4KHRoaXNbam9dLndpZHRoLGErcyk7dGhpc1tqb10uaGVpZ2h0PU1hdGgubWF4KHRoaXNbam9dLmhlaWdodCxuK3IpO3RoaXNbam9dLmNoaWxkcmVuLnB1c2goZSl9W1NvXSgpe3JldHVybiB0aGlzW2pvXS5hdmFpbGFibGVTcGFjZX1bd2xdKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJwb3NpdGlvbiIpLGE9e3N0eWxlOnQsaWQ6dGhpc1t5bF0sY2xhc3M6WyJ4ZmFBcmVhIl19O2lzUHJpbnRPbmx5KHRoaXMpJiZhLmNsYXNzLnB1c2goInhmYVByaW50T25seSIpO3RoaXMubmFtZSYmKGEueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IG49W107dGhpc1tqb109e2NoaWxkcmVuOm4sd2lkdGg6MCxoZWlnaHQ6MCxhdmFpbGFibGVTcGFjZTplfTtjb25zdCBzPXRoaXNbZm9dKHtmaWx0ZXI6bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZmllbGQiLCJleGNsR3JvdXAiLCJzdWJmb3JtIiwic3ViZm9ybVNldCJdKSxpbmNsdWRlOiEwfSk7aWYoIXMuc3VjY2Vzcyl7aWYocy5pc0JyZWFrKCkpcmV0dXJuIHM7ZGVsZXRlIHRoaXNbam9dO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9dC53aWR0aD1tZWFzdXJlVG9TdHJpbmcodGhpc1tqb10ud2lkdGgpO3QuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzW2pvXS5oZWlnaHQpO2NvbnN0IHI9e25hbWU6ImRpdiIsYXR0cmlidXRlczphLGNoaWxkcmVuOm59LGk9W3RoaXMueCx0aGlzLnksdGhpc1tqb10ud2lkdGgsdGhpc1tqb10uaGVpZ2h0XTtkZWxldGUgdGhpc1tqb107cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhyLGkpfX1jbGFzcyBBc3Npc3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImFzc2lzdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yb2xlPWUucm9sZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3BlYWs9bnVsbDt0aGlzLnRvb2xUaXA9bnVsbH1bd2xdKCl7cmV0dXJuIHRoaXMudG9vbFRpcD8uW2dvXXx8bnVsbH19Y2xhc3MgQmFyY29kZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwiYmFyY29kZSIsITApO3RoaXMuY2hhckVuY29kaW5nPWdldEtleXdvcmQoe2RhdGE6ZS5jaGFyRW5jb2Rpbmc/ZS5jaGFyRW5jb2RpbmcudG9Mb3dlckNhc2UoKToiIixkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+WyJ1dGYtOCIsImJpZy1maXZlIiwiZm9udHNwZWNpZmljIiwiZ2JrIiwiZ2ItMTgwMzAiLCJnYi0yMzEyIiwia3NjLTU2MDEiLCJub25lIiwic2hpZnQtamlzIiwidWNzLTIiLCJ1dGYtMTYiXS5pbmNsdWRlcyhlKXx8ZS5tYXRjaCgvaXNvLTg4NTktXGR7Mn0vKX0pO3RoaXMuY2hlY2tzdW09Z2V0U3RyaW5nT3B0aW9uKGUuY2hlY2tzdW0sWyJub25lIiwiMW1vZDEwIiwiMW1vZDEwXzFtb2QxMSIsIjJtb2QxMCIsImF1dG8iXSk7dGhpcy5kYXRhQ29sdW1uQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLmRhdGFDb2x1bW5Db3VudCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZGF0YUxlbmd0aD1nZXRJbnRlZ2VyKHtkYXRhOmUuZGF0YUxlbmd0aCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZGF0YVByZXA9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YVByZXAsWyJub25lIiwiZmxhdGVDb21wcmVzcyJdKTt0aGlzLmRhdGFSb3dDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUuZGF0YVJvd0NvdW50LGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5lbmRDaGFyPWUuZW5kQ2hhcnx8IiI7dGhpcy5lcnJvckNvcnJlY3Rpb25MZXZlbD1nZXRJbnRlZ2VyKHtkYXRhOmUuZXJyb3JDb3JyZWN0aW9uTGV2ZWwsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTAmJmU8PTh9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubW9kdWxlSGVpZ2h0PWdldE1lYXN1cmVtZW50KGUubW9kdWxlSGVpZ2h0LCI1bW0iKTt0aGlzLm1vZHVsZVdpZHRoPWdldE1lYXN1cmVtZW50KGUubW9kdWxlV2lkdGgsIjAuMjVtbSIpO3RoaXMucHJpbnRDaGVja0RpZ2l0PWdldEludGVnZXIoe2RhdGE6ZS5wcmludENoZWNrRGlnaXQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnJvd0NvbHVtblJhdGlvPWdldFJhdGlvKGUucm93Q29sdW1uUmF0aW8pO3RoaXMuc3RhcnRDaGFyPWUuc3RhcnRDaGFyfHwiIjt0aGlzLnRleHRMb2NhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS50ZXh0TG9jYXRpb24sWyJiZWxvdyIsImFib3ZlIiwiYWJvdmVFbWJlZGRlZCIsImJlbG93RW1iZWRkZWQiLCJub25lIl0pO3RoaXMudHJ1bmNhdGU9Z2V0SW50ZWdlcih7ZGF0YTplLnRydW5jYXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGU/ZS50eXBlLnRvTG93ZXJDYXNlKCk6IiIsWyJhenRlYyIsImNvZGFiYXIiLCJjb2RlMm9mNWluZHVzdHJpYWwiLCJjb2RlMm9mNWludGVybGVhdmVkIiwiY29kZTJvZjVtYXRyaXgiLCJjb2RlMm9mNXN0YW5kYXJkIiwiY29kZTNvZjkiLCJjb2RlM29mOWV4dGVuZGVkIiwiY29kZTExIiwiY29kZTQ5IiwiY29kZTkzIiwiY29kZTEyOCIsImNvZGUxMjhhIiwiY29kZTEyOGIiLCJjb2RlMTI4YyIsImNvZGUxMjhzc2NjIiwiZGF0YW1hdHJpeCIsImVhbjgiLCJlYW44YWRkMiIsImVhbjhhZGQ1IiwiZWFuMTMiLCJlYW4xM2FkZDIiLCJlYW4xM2FkZDUiLCJlYW4xM3B3Y2QiLCJmaW0iLCJsb2dtYXJzIiwibWF4aWNvZGUiLCJtc2kiLCJwZGY0MTciLCJwZGY0MTdtYWNybyIsInBsZXNzZXkiLCJwb3N0YXVzY3VzdDIiLCJwb3N0YXVzY3VzdDMiLCJwb3N0YXVzcmVwbHlwYWlkIiwicG9zdGF1c3N0YW5kYXJkIiwicG9zdHVrcm00c2NjIiwicG9zdHVzZHBiYyIsInBvc3R1c2ltYiIsInBvc3R1c3N0YW5kYXJkIiwicG9zdHVzNXppcCIsInFyY29kZSIsInJmaWQiLCJyc3MxNCIsInJzczE0ZXhwYW5kZWQiLCJyc3MxNGxpbWl0ZWQiLCJyc3MxNHN0YWNrZWQiLCJyc3MxNHN0YWNrZWRvbW5pIiwicnNzMTR0cnVuY2F0ZWQiLCJ0ZWxlcGVuIiwidWNjMTI4IiwidWNjMTI4cmFuZG9tIiwidWNjMTI4c3NjYyIsInVwY2EiLCJ1cGNhYWRkMiIsInVwY2FhZGQ1IiwidXBjYXB3Y2QiLCJ1cGNlIiwidXBjZWFkZDIiLCJ1cGNlYWRkNSIsInVwY2VhbjIiLCJ1cGNlYW41IiwidXBzbWF4aWNvZGUiXSk7dGhpcy51cHNNb2RlPWdldFN0cmluZ09wdGlvbihlLnVwc01vZGUsWyJ1c0NhcnJpZXIiLCJpbnRlcm5hdGlvbmFsQ2FycmllciIsInNlY3VyZVN5bWJvbCIsInN0YW5kYXJkU3ltYm9sIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLndpZGVOYXJyb3dSYXRpbz1nZXRSYXRpbyhlLndpZGVOYXJyb3dSYXRpbyk7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgQmluZCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwiYmluZCIsITApO3RoaXMubWF0Y2g9Z2V0U3RyaW5nT3B0aW9uKGUubWF0Y2gsWyJvbmNlIiwiZGF0YVJlZiIsImdsb2JhbCIsIm5vbmUiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBCaW5kSXRlbXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImJpbmRJdGVtcyIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMubGFiZWxSZWY9ZS5sYWJlbFJlZnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudmFsdWVSZWY9ZS52YWx1ZVJlZnx8IiJ9fWNsYXNzIEJvb2tlbmQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImJvb2tlbmQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEJvb2xlYW5FbGVtZW50IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImJvb2xlYW4iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bd2xdKGUpe3JldHVybiB2YWx1ZVRvSHRtbCgxPT09dGhpc1tnb10/IjEiOiIwIil9fWNsYXNzIEJvcmRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwiYm9yZGVyIiwhMCk7dGhpcy5icmVhaz1nZXRTdHJpbmdPcHRpb24oZS5icmVhayxbImNsb3NlIiwib3BlbiJdKTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5maWxsPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bRm9dKCl7aWYoIXRoaXNbam9dKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5zbGljZSgpO2lmKGUubGVuZ3RoPDQpe2NvbnN0IHQ9ZS5hdCgtMSl8fG5ldyBFZGdlKHt9KTtmb3IobGV0IGE9ZS5sZW5ndGg7YTw0O2ErKyllLnB1c2godCl9Y29uc3QgdD1lLm1hcChlPT5lLnRoaWNrbmVzcyksYT1bMCwwLDAsMF07aWYodGhpcy5tYXJnaW4pe2FbMF09dGhpcy5tYXJnaW4udG9wSW5zZXQ7YVsxXT10aGlzLm1hcmdpbi5yaWdodEluc2V0O2FbMl09dGhpcy5tYXJnaW4uYm90dG9tSW5zZXQ7YVszXT10aGlzLm1hcmdpbi5sZWZ0SW5zZXR9dGhpc1tqb109e3dpZHRoczp0LGluc2V0czphLGVkZ2VzOmV9fXJldHVybiB0aGlzW2pvXX1ba2xdKCl7Y29uc3R7ZWRnZXM6ZX09dGhpc1tGb10oKSx0PWUubWFwKGU9Pntjb25zdCB0PWVba2xdKCk7dC5jb2xvcnx8PSIjMDAwMDAwIjtyZXR1cm4gdH0pLGE9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLm1hcmdpbiYmT2JqZWN0LmFzc2lnbihhLHRoaXMubWFyZ2luW2tsXSgpKTsidmlzaWJsZSI9PT10aGlzLmZpbGw/LnByZXNlbmNlJiZPYmplY3QuYXNzaWduKGEsdGhpcy5maWxsW2tsXSgpKTtpZih0aGlzLmNvcm5lci5jaGlsZHJlbi5zb21lKGU9PjAhPT1lLnJhZGl1cykpe2NvbnN0IGU9dGhpcy5jb3JuZXIuY2hpbGRyZW4ubWFwKGU9PmVba2xdKCkpO2lmKDI9PT1lLmxlbmd0aHx8Mz09PWUubGVuZ3RoKXtjb25zdCB0PWUuYXQoLTEpO2ZvcihsZXQgYT1lLmxlbmd0aDthPDQ7YSsrKWUucHVzaCh0KX1hLmJvcmRlclJhZGl1cz1lLm1hcChlPT5lLnJhZGl1cykuam9pbigiICIpfXN3aXRjaCh0aGlzLnByZXNlbmNlKXtjYXNlImludmlzaWJsZSI6Y2FzZSJoaWRkZW4iOmEuYm9yZGVyU3R5bGU9IiI7YnJlYWs7Y2FzZSJpbmFjdGl2ZSI6YS5ib3JkZXJTdHlsZT0ibm9uZSI7YnJlYWs7ZGVmYXVsdDphLmJvcmRlclN0eWxlPXQubWFwKGU9PmUuc3R5bGUpLmpvaW4oIiAiKX1hLmJvcmRlcldpZHRoPXQubWFwKGU9PmUud2lkdGgpLmpvaW4oIiAiKTthLmJvcmRlckNvbG9yPXQubWFwKGU9PmUuY29sb3IpLmpvaW4oIiAiKTtyZXR1cm4gYX19Y2xhc3MgQnJlYWsgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImJyZWFrIiwhMCk7dGhpcy5hZnRlcj1nZXRTdHJpbmdPcHRpb24oZS5hZnRlcixbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIiwicGFnZUV2ZW4iLCJwYWdlT2RkIl0pO3RoaXMuYWZ0ZXJUYXJnZXQ9ZS5hZnRlclRhcmdldHx8IiI7dGhpcy5iZWZvcmU9Z2V0U3RyaW5nT3B0aW9uKGUuYmVmb3JlLFsiYXV0byIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiLCJwYWdlRXZlbiIsInBhZ2VPZGQiXSk7dGhpcy5iZWZvcmVUYXJnZXQ9ZS5iZWZvcmVUYXJnZXR8fCIiO3RoaXMuYm9va2VuZExlYWRlcj1lLmJvb2tlbmRMZWFkZXJ8fCIiO3RoaXMuYm9va2VuZFRyYWlsZXI9ZS5ib29rZW5kVHJhaWxlcnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm92ZXJmbG93TGVhZGVyPWUub3ZlcmZsb3dMZWFkZXJ8fCIiO3RoaXMub3ZlcmZsb3dUYXJnZXQ9ZS5vdmVyZmxvd1RhcmdldHx8IiI7dGhpcy5vdmVyZmxvd1RyYWlsZXI9ZS5vdmVyZmxvd1RyYWlsZXJ8fCIiO3RoaXMuc3RhcnROZXc9Z2V0SW50ZWdlcih7ZGF0YTplLnN0YXJ0TmV3LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9fWNsYXNzIEJyZWFrQWZ0ZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImJyZWFrQWZ0ZXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnN0YXJ0TmV3PWdldEludGVnZXIoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRhcmdldFR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudGFyZ2V0VHlwZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIl0pO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnNjcmlwdD1udWxsfX1jbGFzcyBCcmVha0JlZm9yZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwiYnJlYWtCZWZvcmUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnN0YXJ0TmV3PWdldEludGVnZXIoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRhcmdldFR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudGFyZ2V0VHlwZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIl0pO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnNjcmlwdD1udWxsfVt3bF0oZSl7dGhpc1tqb109e307cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX19Y2xhc3MgQnV0dG9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJidXR0b24iLCEwKTt0aGlzLmhpZ2hsaWdodD1nZXRTdHJpbmdPcHRpb24oZS5oaWdobGlnaHQsWyJpbnZlcnRlZCIsIm5vbmUiLCJvdXRsaW5lIiwicHVzaCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVt3bF0oZSl7Y29uc3QgdD10aGlzW01vXSgpW01vXSgpLGE9e25hbWU6ImJ1dHRvbiIsYXR0cmlidXRlczp7aWQ6dGhpc1t5bF0sY2xhc3M6WyJ4ZmFCdXR0b24iXSxzdHlsZTp7fX0sY2hpbGRyZW46W119O2Zvcihjb25zdCBlIG9mIHQuZXZlbnQuY2hpbGRyZW4pe2lmKCJjbGljayIhPT1lLmFjdGl2aXR5fHwhZS5zY3JpcHQpY29udGludWU7Y29uc3QgdD1yZWNvdmVySnNVUkwoZS5zY3JpcHRbZ29dKTtpZighdCljb250aW51ZTtjb25zdCBuPWZpeFVSTCh0LnVybCk7biYmYS5jaGlsZHJlbi5wdXNoKHtuYW1lOiJhIixhdHRyaWJ1dGVzOntpZDoibGluayIrdGhpc1t5bF0saHJlZjpuLG5ld1dpbmRvdzp0Lm5ld1dpbmRvdyxjbGFzczpbInhmYUxpbmsiXSxzdHlsZTp7fX0sY2hpbGRyZW46W119KX1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGEpfX1jbGFzcyBDYWxjdWxhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImNhbGN1bGF0ZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVycmlkZT1nZXRTdHJpbmdPcHRpb24oZS5vdmVycmlkZSxbImRpc2FibGVkIiwiZXJyb3IiLCJpZ25vcmUiLCJ3YXJuaW5nIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWVzc2FnZT1udWxsO3RoaXMuc2NyaXB0PW51bGx9fWNsYXNzIENhcHRpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImNhcHRpb24iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGxhY2VtZW50PWdldFN0cmluZ09wdGlvbihlLnBsYWNlbWVudCxbImxlZnQiLCJib3R0b20iLCJpbmxpbmUiLCJyaWdodCIsInRvcCJdKTt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVzZXJ2ZT1NYXRoLmNlaWwoZ2V0TWVhc3VyZW1lbnQoZS5yZXNlcnZlKSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnZhbHVlPW51bGx9W3BsXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bRm9dKGUpe2lmKCF0aGlzW2pvXSl7bGV0e3dpZHRoOnQsaGVpZ2h0OmF9PWU7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOmNhc2UiaW5saW5lIjp0PXRoaXMucmVzZXJ2ZTw9MD90OnRoaXMucmVzZXJ2ZTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOmE9dGhpcy5yZXNlcnZlPD0wP2E6dGhpcy5yZXNlcnZlfXRoaXNbam9dPWxheW91dE5vZGUodGhpcyx7d2lkdGg6dCxoZWlnaHQ6YX0pfXJldHVybiB0aGlzW2pvXX1bd2xdKGUpe2lmKCF0aGlzLnZhbHVlKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO3RoaXNbb2xdKCk7Y29uc3QgdD10aGlzLnZhbHVlW3dsXShlKS5odG1sO2lmKCF0KXt0aGlzW2lsXSgpO3JldHVybiBIVE1MUmVzdWx0LkVNUFRZfWNvbnN0IGE9dGhpcy5yZXNlcnZlO2lmKHRoaXMucmVzZXJ2ZTw9MCl7Y29uc3R7dzp0LGg6YX09dGhpc1tGb10oZSk7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOmNhc2UiaW5saW5lIjp0aGlzLnJlc2VydmU9dDticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOnRoaXMucmVzZXJ2ZT1hfX1jb25zdCBuPVtdOyJzdHJpbmciPT10eXBlb2YgdD9uLnB1c2goe25hbWU6IiN0ZXh0Iix2YWx1ZTp0fSk6bi5wdXNoKHQpO2NvbnN0IHM9dG9TdHlsZSh0aGlzLCJmb250IiwibWFyZ2luIiwidmlzaWJpbGl0eSIpO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0Ijp0aGlzLnJlc2VydmU+MCYmKHMud2lkdGg9bWVhc3VyZVRvU3RyaW5nKHRoaXMucmVzZXJ2ZSkpO2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6dGhpcy5yZXNlcnZlPjAmJihzLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5yZXNlcnZlKSl9c2V0UGFyYSh0aGlzLG51bGwsdCk7dGhpc1tpbF0oKTt0aGlzLnJlc2VydmU9YTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOnMsY2xhc3M6WyJ4ZmFDYXB0aW9uIl19LGNoaWxkcmVuOm59KX19Y2xhc3MgQ2VydGlmaWNhdGUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImNlcnRpZmljYXRlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIENlcnRpZmljYXRlcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwiY2VydGlmaWNhdGVzIiwhMCk7dGhpcy5jcmVkZW50aWFsU2VydmVyUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmNyZWRlbnRpYWxTZXJ2ZXJQb2xpY3ksWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51cmw9ZS51cmx8fCIiO3RoaXMudXJsUG9saWN5PWUudXJsUG9saWN5fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNyeXB0aW9uPW51bGw7dGhpcy5pc3N1ZXJzPW51bGw7dGhpcy5rZXlVc2FnZT1udWxsO3RoaXMub2lkcz1udWxsO3RoaXMuc2lnbmluZz1udWxsO3RoaXMuc3ViamVjdEROcz1udWxsfX1jbGFzcyBDaGVja0J1dHRvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwiY2hlY2tCdXR0b24iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWFyaz1nZXRTdHJpbmdPcHRpb24oZS5tYXJrLFsiZGVmYXVsdCIsImNoZWNrIiwiY2lyY2xlIiwiY3Jvc3MiLCJkaWFtb25kIiwic3F1YXJlIiwic3RhciJdKTt0aGlzLnNoYXBlPWdldFN0cmluZ09wdGlvbihlLnNoYXBlLFsic3F1YXJlIiwicm91bmQiXSk7dGhpcy5zaXplPWdldE1lYXN1cmVtZW50KGUuc2l6ZSwiMTBwdCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bd2xdKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJtYXJnaW4iKSxhPW1lYXN1cmVUb1N0cmluZyh0aGlzLnNpemUpO3Qud2lkdGg9dC5oZWlnaHQ9YTtsZXQgbixzLHI7Y29uc3QgaT10aGlzW01vXSgpW01vXSgpLG89aS5pdGVtcy5jaGlsZHJlbi5sZW5ndGgmJmkuaXRlbXMuY2hpbGRyZW5bMF1bd2xdKCkuaHRtbHx8W10sbD17b246KHZvaWQgMCE9PW9bMF0/b1swXToib24iKS50b1N0cmluZygpLG9mZjoodm9pZCAwIT09b1sxXT9vWzFdOiJvZmYiKS50b1N0cmluZygpfSxmPShpLnZhbHVlPy5bZ2xdKCl8fCJvZmYiKT09PWwub258fHZvaWQgMCxjPWlbSG9dKCksaD1pW3lsXTtsZXQgdTtpZihjIGluc3RhbmNlb2YgRXhjbEdyb3VwKXtyPWNbeWxdO249InJhZGlvIjtzPSJ4ZmFSYWRpbyI7dT1jW2JvXT8uW3lsXXx8Y1t5bF19ZWxzZXtuPSJjaGVja2JveCI7cz0ieGZhQ2hlY2tib3giO3U9aVtib10/Llt5bF18fGlbeWxdfWNvbnN0IG09e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOntjbGFzczpbc10sc3R5bGU6dCxmaWVsZElkOmgsZGF0YUlkOnUsdHlwZTpuLGNoZWNrZWQ6Zix4ZmFPbjpsLm9uLHhmYU9mZjpsLm9mZiwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGkpLCJhcmlhLXJlcXVpcmVkIjohMX19O3ImJihtLmF0dHJpYnV0ZXMubmFtZT1yKTtpZihpc1JlcXVpcmVkKGkpKXttLmF0dHJpYnV0ZXNbImFyaWEtcmVxdWlyZWQiXT0hMDttLmF0dHJpYnV0ZXMucmVxdWlyZWQ9ITB9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W21dfSl9fWNsYXNzIENob2ljZUxpc3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImNob2ljZUxpc3QiLCEwKTt0aGlzLmNvbW1pdE9uPWdldFN0cmluZ09wdGlvbihlLmNvbW1pdE9uLFsic2VsZWN0IiwiZXhpdCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3Blbj1nZXRTdHJpbmdPcHRpb24oZS5vcGVuLFsidXNlckNvbnRyb2wiLCJhbHdheXMiLCJtdWx0aVNlbGVjdCIsIm9uRW50cnkiXSk7dGhpcy50ZXh0RW50cnk9Z2V0SW50ZWdlcih7ZGF0YTplLnRleHRFbnRyeSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bd2xdKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJib3JkZXIiLCJtYXJnaW4iKSxhPXRoaXNbTW9dKClbTW9dKCksbj17Zm9udFNpemU6YGNhbGMoJHthLmZvbnQ/LnNpemV8fDEwfXB4ICogdmFyKC0tdG90YWwtc2NhbGUtZmFjdG9yKSlgfSxzPVtdO2lmKGEuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoPjApe2NvbnN0IGU9YS5pdGVtcztsZXQgdD0wLHI9MDtpZigyPT09ZS5jaGlsZHJlbi5sZW5ndGgpe3Q9ZS5jaGlsZHJlblswXS5zYXZlO3I9MS10fWNvbnN0IGk9ZS5jaGlsZHJlblt0XVt3bF0oKS5odG1sLG89ZS5jaGlsZHJlbltyXVt3bF0oKS5odG1sO2xldCBsPSExO2NvbnN0IGY9YS52YWx1ZT8uW2dsXSgpfHwiIjtmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9e25hbWU6Im9wdGlvbiIsYXR0cmlidXRlczp7dmFsdWU6b1tlXXx8aVtlXSxzdHlsZTpufSx2YWx1ZTppW2VdfTtvW2VdPT09ZiYmKHQuYXR0cmlidXRlcy5zZWxlY3RlZD1sPSEwKTtzLnB1c2godCl9bHx8cy5zcGxpY2UoMCwwLHtuYW1lOiJvcHRpb24iLGF0dHJpYnV0ZXM6e2hpZGRlbjohMCxzZWxlY3RlZDohMH0sdmFsdWU6IiAifSl9Y29uc3Qgcj17Y2xhc3M6WyJ4ZmFTZWxlY3QiXSxmaWVsZElkOmFbeWxdLGRhdGFJZDphW2JvXT8uW3lsXXx8YVt5bF0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGEpLCJhcmlhLXJlcXVpcmVkIjohMX07aWYoaXNSZXF1aXJlZChhKSl7clsiYXJpYS1yZXF1aXJlZCJdPSEwO3IucmVxdWlyZWQ9ITB9Im11bHRpU2VsZWN0Ij09PXRoaXMub3BlbiYmKHIubXVsdGlwbGU9ITApO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlt7bmFtZToic2VsZWN0IixjaGlsZHJlbjpzLGF0dHJpYnV0ZXM6cn1dfSl9fWNsYXNzIENvbG9yIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJjb2xvciIsITApO3RoaXMuY1NwYWNlPWdldFN0cmluZ09wdGlvbihlLmNTcGFjZSxbIlNSR0IiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy52YWx1ZT1lLnZhbHVlP2Z1bmN0aW9uIGdldENvbG9yKGUsdD1bMCwwLDBdKXtsZXRbYSxuLHNdPXQ7aWYoIWUpcmV0dXJue3I6YSxnOm4sYjpzfTtjb25zdCByPWUuc3BsaXQoIiwiLDMpLm1hcChlPT57ZT1wYXJzZUludChlLnRyaW0oKSwxMCk7cmV0dXJuIGlzTmFOKGUpPzA6TWF0aENsYW1wKGUsMCwyNTUpfSk7aWYoci5sZW5ndGg8MylyZXR1cm57cjphLGc6bixiOnN9O1thLG4sc109cjtyZXR1cm57cjphLGc6bixiOnN9fShlLnZhbHVlKToiIjt0aGlzLmV4dHJhcz1udWxsfVtFb10oKXtyZXR1cm4hMX1ba2xdKCl7cmV0dXJuIHRoaXMudmFsdWU/VXRpbC5tYWtlSGV4Q29sb3IodGhpcy52YWx1ZS5yLHRoaXMudmFsdWUuZyx0aGlzLnZhbHVlLmIpOm51bGx9fWNsYXNzIENvbWIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImNvbWIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubnVtYmVyT2ZDZWxscz1nZXRJbnRlZ2VyKHtkYXRhOmUubnVtYmVyT2ZDZWxscyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBDb25uZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJjb25uZWN0IiwhMCk7dGhpcy5jb25uZWN0aW9uPWUuY29ubmVjdGlvbnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy51c2FnZT1nZXRTdHJpbmdPcHRpb24oZS51c2FnZSxbImV4cG9ydEFuZEltcG9ydCIsImV4cG9ydE9ubHkiLCJpbXBvcnRPbmx5Il0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnBpY3R1cmU9bnVsbH19Y2xhc3MgQ29udGVudEFyZWEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImNvbnRlbnRBcmVhIiwhMCk7dGhpcy5oPWdldE1lYXN1cmVtZW50KGUuaCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9Z2V0TWVhc3VyZW1lbnQoZS53KTt0aGlzLng9Z2V0TWVhc3VyZW1lbnQoZS54LCIwcHQiKTt0aGlzLnk9Z2V0TWVhc3VyZW1lbnQoZS55LCIwcHQiKTt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVt3bF0oZSl7Y29uc3QgdD17bGVmdDptZWFzdXJlVG9TdHJpbmcodGhpcy54KSx0b3A6bWVhc3VyZVRvU3RyaW5nKHRoaXMueSksd2lkdGg6bWVhc3VyZVRvU3RyaW5nKHRoaXMudyksaGVpZ2h0Om1lYXN1cmVUb1N0cmluZyh0aGlzLmgpfSxhPVsieGZhQ29udGVudGFyZWEiXTtpc1ByaW50T25seSh0aGlzKSYmYS5wdXNoKCJ4ZmFQcmludE9ubHkiKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdLGF0dHJpYnV0ZXM6e3N0eWxlOnQsY2xhc3M6YSxpZDp0aGlzW3lsXX19KX19Y2xhc3MgQ29ybmVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJjb3JuZXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW52ZXJ0ZWQ9Z2V0SW50ZWdlcih7ZGF0YTplLmludmVydGVkLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5qb2luPWdldFN0cmluZ09wdGlvbihlLmpvaW4sWyJzcXVhcmUiLCJyb3VuZCJdKTt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmFkaXVzPWdldE1lYXN1cmVtZW50KGUucmFkaXVzKTt0aGlzLnN0cm9rZT1nZXRTdHJpbmdPcHRpb24oZS5zdHJva2UsWyJzb2xpZCIsImRhc2hEb3QiLCJkYXNoRG90RG90IiwiZGFzaGVkIiwiZG90dGVkIiwiZW1ib3NzZWQiLCJldGNoZWQiLCJsb3dlcmVkIiwicmFpc2VkIl0pO3RoaXMudGhpY2tuZXNzPWdldE1lYXN1cmVtZW50KGUudGhpY2tuZXNzLCIwLjVwdCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1ba2xdKCl7Y29uc3QgZT10b1N0eWxlKHRoaXMsInZpc2liaWxpdHkiKTtlLnJhZGl1cz1tZWFzdXJlVG9TdHJpbmcoInNxdWFyZSI9PT10aGlzLmpvaW4/MDp0aGlzLnJhZGl1cyk7cmV0dXJuIGV9fWNsYXNzIERhdGVFbGVtZW50IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwiZGF0ZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtrb10oKXtjb25zdCBlPXRoaXNbZ29dLnRyaW0oKTt0aGlzW2dvXT1lP25ldyBEYXRlKGUpOm51bGx9W3dsXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tnb10/dGhpc1tnb10udG9TdHJpbmcoKToiIil9fWNsYXNzIERhdGVUaW1lIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwiZGF0ZVRpbWUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1ba29dKCl7Y29uc3QgZT10aGlzW2dvXS50cmltKCk7dGhpc1tnb109ZT9uZXcgRGF0ZShlKTpudWxsfVt3bF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbZ29dP3RoaXNbZ29dLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBEYXRlVGltZUVkaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImRhdGVUaW1lRWRpdCIsITApO3RoaXMuaFNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5waWNrZXI9Z2V0U3RyaW5nT3B0aW9uKGUucGlja2VyLFsiaG9zdCIsIm5vbmUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jb21iPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVt3bF0oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsImJvcmRlciIsImZvbnQiLCJtYXJnaW4iKSxhPXRoaXNbTW9dKClbTW9dKCksbj17bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e3R5cGU6InRleHQiLGZpZWxkSWQ6YVt5bF0sZGF0YUlkOmFbYm9dPy5beWxdfHxhW3lsXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChhKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtpZihpc1JlcXVpcmVkKGEpKXtuLmF0dHJpYnV0ZXNbImFyaWEtcmVxdWlyZWQiXT0hMDtuLmF0dHJpYnV0ZXMucmVxdWlyZWQ9ITB9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W25dfSl9fWNsYXNzIERlY2ltYWwgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJkZWNpbWFsIik7dGhpcy5mcmFjRGlnaXRzPWdldEludGVnZXIoe2RhdGE6ZS5mcmFjRGlnaXRzLGRlZmF1bHRWYWx1ZToyLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWREaWdpdHM9Z2V0SW50ZWdlcih7ZGF0YTplLmxlYWREaWdpdHMsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtrb10oKXtjb25zdCBlPXBhcnNlRmxvYXQodGhpc1tnb10udHJpbSgpKTt0aGlzW2dvXT1pc05hTihlKT9udWxsOmV9W3dsXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbZ29dP3RoaXNbZ29dLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBEZWZhdWx0VWkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImRlZmF1bHRVaSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9fWNsYXNzIERlc2MgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImRlc2MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIERpZ2VzdE1ldGhvZCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwiZGlnZXN0TWV0aG9kIixbIiIsIlNIQTEiLCJTSEEyNTYiLCJTSEE1MTIiLCJSSVBFTUQxNjAiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIERpZ2VzdE1ldGhvZHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImRpZ2VzdE1ldGhvZHMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5kaWdlc3RNZXRob2Q9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBEcmF3IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJkcmF3IiwhMCk7dGhpcy5hbmNob3JUeXBlPWdldFN0cmluZ09wdGlvbihlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPWdldEludGVnZXIoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/Z2V0TWVhc3VyZW1lbnQoZS5oKToiIjt0aGlzLmhBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sb2NhbGU9ZS5sb2NhbGV8fCIiO3RoaXMubWF4SD1nZXRNZWFzdXJlbWVudChlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz1nZXRNZWFzdXJlbWVudChlLm1heFcsIjBwdCIpO3RoaXMubWluSD1nZXRNZWFzdXJlbWVudChlLm1pbkgsIjBwdCIpO3RoaXMubWluVz1nZXRNZWFzdXJlbWVudChlLm1pblcsIjBwdCIpO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnJvdGF0ZT1nZXRJbnRlZ2VyKHtkYXRhOmUucm90YXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmUlOTA9PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWUudz9nZXRNZWFzdXJlbWVudChlLncpOiIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuYXNzaXN0PW51bGw7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNhcHRpb249bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZm9udD1udWxsO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnVpPW51bGw7dGhpcy52YWx1ZT1udWxsO3RoaXMuc2V0UHJvcGVydHk9bmV3IFhGQU9iamVjdEFycmF5fVtwbF0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3dsXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2ZpeERpbWVuc2lvbnModGhpcyk7dGhpc1tvbF0oKTtjb25zdCB0PXRoaXMudyxhPXRoaXMuaCx7dzpuLGg6cyxpc0Jyb2tlbjpyfT1sYXlvdXROb2RlKHRoaXMsZSk7aWYobiYmIiI9PT10aGlzLncpe2lmKHImJnRoaXNbSG9dKClbJG9dKCkpe3RoaXNbaWxdKCk7cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX10aGlzLnc9bn1zJiYiIj09PXRoaXMuaCYmKHRoaXMuaD1zKTtzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighY2hlY2tEaW1lbnNpb25zKHRoaXMsZSkpe3RoaXMudz10O3RoaXMuaD1hO3RoaXNbaWxdKCk7cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX11bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2NvbnN0IGk9dG9TdHlsZSh0aGlzLCJmb250IiwiaEFsaWduIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwiYm9yZGVyIiwibWFyZ2luIik7c2V0TWluTWF4RGltZW5zaW9ucyh0aGlzLGkpO2lmKGkubWFyZ2luKXtpLnBhZGRpbmc9aS5tYXJnaW47ZGVsZXRlIGkubWFyZ2lufWNvbnN0IG89WyJ4ZmFEcmF3Il07dGhpcy5mb250JiZvLnB1c2goInhmYUZvbnQiKTtpc1ByaW50T25seSh0aGlzKSYmby5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBsPXtzdHlsZTppLGlkOnRoaXNbeWxdLGNsYXNzOm99O3RoaXMubmFtZSYmKGwueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IGY9e25hbWU6ImRpdiIsYXR0cmlidXRlczpsLGNoaWxkcmVuOltdfTthcHBseUFzc2lzdCh0aGlzLGwpO2NvbnN0IGM9Y29tcHV0ZUJib3godGhpcyxmLGUpLGg9dGhpcy52YWx1ZT90aGlzLnZhbHVlW3dsXShlKS5odG1sOm51bGw7aWYobnVsbD09PWgpe3RoaXMudz10O3RoaXMuaD1hO3RoaXNbaWxdKCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsZiksYyl9Zi5jaGlsZHJlbi5wdXNoKGgpO3NldFBhcmEodGhpcyxpLGgpO3RoaXMudz10O3RoaXMuaD1hO3RoaXNbaWxdKCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsZiksYyl9fWNsYXNzIEVkZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImVkZ2UiLCEwKTt0aGlzLmNhcD1nZXRTdHJpbmdPcHRpb24oZS5jYXAsWyJzcXVhcmUiLCJidXR0Iiwicm91bmQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMuc3Ryb2tlPWdldFN0cmluZ09wdGlvbihlLnN0cm9rZSxbInNvbGlkIiwiZGFzaERvdCIsImRhc2hEb3REb3QiLCJkYXNoZWQiLCJkb3R0ZWQiLCJlbWJvc3NlZCIsImV0Y2hlZCIsImxvd2VyZWQiLCJyYWlzZWQiXSk7dGhpcy50aGlja25lc3M9Z2V0TWVhc3VyZW1lbnQoZS50aGlja25lc3MsIjAuNXB0Iik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtrbF0oKXtjb25zdCBlPXRvU3R5bGUodGhpcywidmlzaWJpbGl0eSIpO09iamVjdC5hc3NpZ24oZSx7bGluZWNhcDp0aGlzLmNhcCx3aWR0aDptZWFzdXJlVG9TdHJpbmcodGhpcy50aGlja25lc3MpLGNvbG9yOnRoaXMuY29sb3I/dGhpcy5jb2xvcltrbF0oKToiIzAwMDAwMCIsc3R5bGU6IiJ9KTtpZigidmlzaWJsZSIhPT10aGlzLnByZXNlbmNlKWUuc3R5bGU9Im5vbmUiO2Vsc2Ugc3dpdGNoKHRoaXMuc3Ryb2tlKXtjYXNlInNvbGlkIjplLnN0eWxlPSJzb2xpZCI7YnJlYWs7Y2FzZSJkYXNoRG90IjpjYXNlImRhc2hEb3REb3QiOmNhc2UiZGFzaGVkIjplLnN0eWxlPSJkYXNoZWQiO2JyZWFrO2Nhc2UiZG90dGVkIjplLnN0eWxlPSJkb3R0ZWQiO2JyZWFrO2Nhc2UiZW1ib3NzZWQiOmUuc3R5bGU9InJpZGdlIjticmVhaztjYXNlImV0Y2hlZCI6ZS5zdHlsZT0iZ3Jvb3ZlIjticmVhaztjYXNlImxvd2VyZWQiOmUuc3R5bGU9Imluc2V0IjticmVhaztjYXNlInJhaXNlZCI6ZS5zdHlsZT0ib3V0c2V0In1yZXR1cm4gZX19Y2xhc3MgRW5jb2RpbmcgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImVuY29kaW5nIixbImFkYmUueDUwOS5yc2Ffc2hhMSIsImFkYmUucGtjczcuZGV0YWNoZWQiLCJhZGJlLnBrY3M3LnNoYTEiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVuY29kaW5ncyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwiZW5jb2RpbmdzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZW5jb2Rpbmc9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBFbmNyeXB0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJlbmNyeXB0IiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jZXJ0aWZpY2F0ZT1udWxsfX1jbGFzcyBFbmNyeXB0RGF0YSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwiZW5jcnlwdERhdGEiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPWdldFN0cmluZ09wdGlvbihlLm9wZXJhdGlvbixbImVuY3J5cHQiLCJkZWNyeXB0Il0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGx9fWNsYXNzIEVuY3J5cHRpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImVuY3J5cHRpb24iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVuY3J5cHRpb25NZXRob2QgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImVuY3J5cHRpb25NZXRob2QiLFsiIiwiQUVTMjU2LUNCQyIsIlRSSVBMRURFUy1DQkMiLCJBRVMxMjgtQ0JDIiwiQUVTMTkyLUNCQyJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRW5jcnlwdGlvbk1ldGhvZHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImVuY3J5cHRpb25NZXRob2RzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZW5jcnlwdGlvbk1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEV2ZW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJldmVudCIsITApO3RoaXMuYWN0aXZpdHk9Z2V0U3RyaW5nT3B0aW9uKGUuYWN0aXZpdHksWyJjbGljayIsImNoYW5nZSIsImRvY0Nsb3NlIiwiZG9jUmVhZHkiLCJlbnRlciIsImV4aXQiLCJmdWxsIiwiaW5kZXhDaGFuZ2UiLCJpbml0aWFsaXplIiwibW91c2VEb3duIiwibW91c2VFbnRlciIsIm1vdXNlRXhpdCIsIm1vdXNlVXAiLCJwb3N0RXhlY3V0ZSIsInBvc3RPcGVuIiwicG9zdFByaW50IiwicG9zdFNhdmUiLCJwb3N0U2lnbiIsInBvc3RTdWJtaXQiLCJwcmVFeGVjdXRlIiwicHJlT3BlbiIsInByZVByaW50IiwicHJlU2F2ZSIsInByZVNpZ24iLCJwcmVTdWJtaXQiLCJyZWFkeSIsInZhbGlkYXRpb25TdGF0ZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGlzdGVuPWdldFN0cmluZ09wdGlvbihlLmxpc3RlbixbInJlZk9ubHkiLCJyZWZBbmREZXNjZW5kZW50cyJdKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5lbmNyeXB0RGF0YT1udWxsO3RoaXMuZXhlY3V0ZT1udWxsO3RoaXMuc2NyaXB0PW51bGw7dGhpcy5zaWduRGF0YT1udWxsO3RoaXMuc3VibWl0PW51bGx9fWNsYXNzIEV4RGF0YSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImV4RGF0YSIpO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5ocmVmPWUuaHJlZnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1heExlbmd0aD1nZXRJbnRlZ2VyKHtkYXRhOmUubWF4TGVuZ3RoLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0tMX0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnRyYW5zZmVyRW5jb2Rpbmc9Z2V0U3RyaW5nT3B0aW9uKGUudHJhbnNmZXJFbmNvZGluZyxbIm5vbmUiLCJiYXNlNjQiLCJwYWNrYWdlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bVW9dKCl7cmV0dXJuInRleHQvaHRtbCI9PT10aGlzLmNvbnRlbnRUeXBlfVthbF0oZSl7aWYoInRleHQvaHRtbCI9PT10aGlzLmNvbnRlbnRUeXBlJiZlW1pvXT09PXZsLnhodG1sLmlkKXt0aGlzW2dvXT1lO3JldHVybiEwfWlmKCJ0ZXh0L3htbCI9PT10aGlzLmNvbnRlbnRUeXBlKXt0aGlzW2dvXT1lO3JldHVybiEwfXJldHVybiExfVt3bF0oZSl7cmV0dXJuInRleHQvaHRtbCI9PT10aGlzLmNvbnRlbnRUeXBlJiZ0aGlzW2dvXT90aGlzW2dvXVt3bF0oZSk6SFRNTFJlc3VsdC5FTVBUWX19Y2xhc3MgRXhPYmplY3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImV4T2JqZWN0IiwhMCk7dGhpcy5hcmNoaXZlPWUuYXJjaGl2ZXx8IiI7dGhpcy5jbGFzc0lkPWUuY2xhc3NJZHx8IiI7dGhpcy5jb2RlQmFzZT1lLmNvZGVCYXNlfHwiIjt0aGlzLmNvZGVUeXBlPWUuY29kZVR5cGV8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBFeGNsR3JvdXAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImV4Y2xHcm91cCIsITApO3RoaXMuYWNjZXNzPWdldFN0cmluZ09wdGlvbihlLmFjY2VzcyxbIm9wZW4iLCJub25JbnRlcmFjdGl2ZSIsInByb3RlY3RlZCIsInJlYWRPbmx5Il0pO3RoaXMuYWNjZXNzS2V5PWUuYWNjZXNzS2V5fHwiIjt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxheW91dD1nZXRTdHJpbmdPcHRpb24oZS5sYXlvdXQsWyJwb3NpdGlvbiIsImxyLXRiIiwicmwtcm93IiwicmwtdGIiLCJyb3ciLCJ0YWJsZSIsInRiIl0pO3RoaXMubWF4SD1nZXRNZWFzdXJlbWVudChlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz1nZXRNZWFzdXJlbWVudChlLm1heFcsIjBwdCIpO3RoaXMubWluSD1nZXRNZWFzdXJlbWVudChlLm1pbkgsIjBwdCIpO3RoaXMubWluVz1nZXRNZWFzdXJlbWVudChlLm1pblcsIjBwdCIpO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWUudz9nZXRNZWFzdXJlbWVudChlLncpOiIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuYXNzaXN0PW51bGw7dGhpcy5iaW5kPW51bGw7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuY2FwdGlvbj1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnRyYXZlcnNhbD1udWxsO3RoaXMudmFsaWRhdGU9bnVsbDt0aGlzLmNvbm5lY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2V0UHJvcGVydHk9bmV3IFhGQU9iamVjdEFycmF5fVtXb10oKXtyZXR1cm4hMH1bRW9dKCl7cmV0dXJuITB9W3BsXShlKXtmb3IoY29uc3QgdCBvZiB0aGlzLmZpZWxkLmNoaWxkcmVuKXtpZighdC52YWx1ZSl7Y29uc3QgZT1uZXcgVmFsdWUoe30pO3RbbG9dKGUpO3QudmFsdWU9ZX10LnZhbHVlW3BsXShlKX19WyRvXSgpe3JldHVybiB0aGlzLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjA9PT10aGlzW2pvXS5hdHRlbXB0JiZ0aGlzW2pvXS5udW1iZXJJbkxpbmU+MHx8dGhpc1tNb10oKVskb10oKX1bVm9dKCl7Y29uc3QgZT10aGlzW0hvXSgpO2lmKCFlW1ZvXSgpKXJldHVybiExO2lmKHZvaWQgMCE9PXRoaXNbam9dLl9pc1NwbGl0dGFibGUpcmV0dXJuIHRoaXNbam9dLl9pc1NwbGl0dGFibGU7aWYoInBvc2l0aW9uIj09PXRoaXMubGF5b3V0fHx0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe3RoaXNbam9dLl9pc1NwbGl0dGFibGU9ITE7cmV0dXJuITF9aWYoZS5sYXlvdXQ/LmVuZHNXaXRoKCItdGIiKSYmMCE9PWVbam9dLm51bWJlckluTGluZSlyZXR1cm4hMTt0aGlzW2pvXS5faXNTcGxpdHRhYmxlPSEwO3JldHVybiEwfVt5b10oKXtyZXR1cm4gZmx1c2hIVE1MKHRoaXMpfVtvb10oZSx0KXthZGRIVE1MKHRoaXMsZSx0KX1bU29dKCl7cmV0dXJuIGdldEF2YWlsYWJsZVNwYWNlKHRoaXMpfVt3bF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZXx8MD09PXRoaXMuaHx8MD09PXRoaXMudylyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtmaXhEaW1lbnNpb25zKHRoaXMpO2NvbnN0IHQ9W10sYT17aWQ6dGhpc1t5bF0sY2xhc3M6W119O3NldEFjY2Vzcyh0aGlzLGEuY2xhc3MpO3RoaXNbam9dfHw9T2JqZWN0LmNyZWF0ZShudWxsKTtPYmplY3QuYXNzaWduKHRoaXNbam9dLHtjaGlsZHJlbjp0LGF0dHJpYnV0ZXM6YSxhdHRlbXB0OjAsbGluZTpudWxsLG51bWJlckluTGluZTowLGF2YWlsYWJsZVNwYWNlOnt3aWR0aDpNYXRoLm1pbih0aGlzLnd8fDEvMCxlLndpZHRoKSxoZWlnaHQ6TWF0aC5taW4odGhpcy5ofHwxLzAsZS5oZWlnaHQpfSx3aWR0aDowLGhlaWdodDowLHByZXZIZWlnaHQ6MCxjdXJyZW50V2lkdGg6MH0pO2NvbnN0IG49dGhpc1tWb10oKTtufHxzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighY2hlY2tEaW1lbnNpb25zKHRoaXMsZSkpcmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRTtjb25zdCBzPW5ldyBTZXQoWyJmaWVsZCJdKTtpZih0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe2NvbnN0IGU9dGhpc1tIb10oKS5jb2x1bW5XaWR0aHM7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpc1tqb10uY29sdW1uV2lkdGhzPWU7dGhpc1tqb10uY3VycmVudENvbHVtbj0wfX1jb25zdCByPXRvU3R5bGUodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksaT1bInhmYUV4Y2xncm91cCJdLG89bGF5b3V0Q2xhc3ModGhpcyk7byYmaS5wdXNoKG8pO2lzUHJpbnRPbmx5KHRoaXMpJiZpLnB1c2goInhmYVByaW50T25seSIpO2Euc3R5bGU9cjthLmNsYXNzPWk7dGhpcy5uYW1lJiYoYS54ZmFOYW1lPXRoaXMubmFtZSk7dGhpc1tvbF0oKTtjb25zdCBsPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LGY9bD8yOjE7Zm9yKDt0aGlzW2pvXS5hdHRlbXB0PGY7dGhpc1tqb10uYXR0ZW1wdCsrKXtsJiYxPT09dGhpc1tqb10uYXR0ZW1wdCYmKHRoaXNbam9dLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbZm9dKHtmaWx0ZXI6cyxpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXt0aGlzW2lsXSgpO3JldHVybiBlfWlmKGwmJjA9PT10aGlzW2pvXS5hdHRlbXB0JiYwPT09dGhpc1tqb10ubnVtYmVySW5MaW5lJiYhdGhpc1tOb10oKVtqb10ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW2pvXS5hdHRlbXB0PWY7YnJlYWt9fXRoaXNbaWxdKCk7bnx8dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZih0aGlzW2pvXS5hdHRlbXB0PT09Zil7bnx8ZGVsZXRlIHRoaXNbam9dO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9bGV0IGM9MCxoPTA7aWYodGhpcy5tYXJnaW4pe2M9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7aD10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldH1jb25zdCB1PU1hdGgubWF4KHRoaXNbam9dLndpZHRoK2MsdGhpcy53fHwwKSxtPU1hdGgubWF4KHRoaXNbam9dLmhlaWdodCtoLHRoaXMuaHx8MCkscD1bdGhpcy54LHRoaXMueSx1LG1dOyIiPT09dGhpcy53JiYoci53aWR0aD1tZWFzdXJlVG9TdHJpbmcodSkpOyIiPT09dGhpcy5oJiYoci5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKG0pKTtjb25zdCBkPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6YSxjaGlsZHJlbjp0fTthcHBseUFzc2lzdCh0aGlzLGEpO2RlbGV0ZSB0aGlzW2pvXTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxkKSxwKX19Y2xhc3MgRXhlY3V0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwiZXhlY3V0ZSIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMuZXhlY3V0ZVR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuZXhlY3V0ZVR5cGUsWyJpbXBvcnQiLCJyZW1lcmdlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5ydW5BdD1nZXRTdHJpbmdPcHRpb24oZS5ydW5BdCxbImNsaWVudCIsImJvdGgiLCJzZXJ2ZXIiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFeHRyYXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImV4dHJhcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4dHJhcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZpZWxkIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJmaWVsZCIsITApO3RoaXMuYWNjZXNzPWdldFN0cmluZ09wdGlvbihlLmFjY2VzcyxbIm9wZW4iLCJub25JbnRlcmFjdGl2ZSIsInByb3RlY3RlZCIsInJlYWRPbmx5Il0pO3RoaXMuYWNjZXNzS2V5PWUuYWNjZXNzS2V5fHwiIjt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxvY2FsZT1lLmxvY2FsZXx8IiI7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucm90YXRlPWdldEludGVnZXIoe2RhdGE6ZS5yb3RhdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZSU5MD09MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmZvcm1hdD1udWxsO3RoaXMuaXRlbXM9bmV3IFhGQU9iamVjdEFycmF5KDIpO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnVpPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLmJpbmRJdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb25uZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheX1bV29dKCl7cmV0dXJuITB9W3BsXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bd2xdKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKCF0aGlzLnVpKXt0aGlzLnVpPW5ldyBVaSh7fSk7dGhpcy51aVtQb109dGhpc1tQb107dGhpc1tsb10odGhpcy51aSk7bGV0IGU7c3dpdGNoKHRoaXMuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoKXtjYXNlIDA6ZT1uZXcgVGV4dEVkaXQoe30pO3RoaXMudWkudGV4dEVkaXQ9ZTticmVhaztjYXNlIDE6ZT1uZXcgQ2hlY2tCdXR0b24oe30pO3RoaXMudWkuY2hlY2tCdXR0b249ZTticmVhaztjYXNlIDI6ZT1uZXcgQ2hvaWNlTGlzdCh7fSk7dGhpcy51aS5jaG9pY2VMaXN0PWV9dGhpcy51aVtsb10oZSl9aWYoIXRoaXMudWl8fCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2V8fDA9PT10aGlzLmh8fDA9PT10aGlzLncpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7dGhpcy5jYXB0aW9uJiZkZWxldGUgdGhpcy5jYXB0aW9uW2pvXTt0aGlzW29sXSgpO2NvbnN0IHQ9dGhpcy5jYXB0aW9uP3RoaXMuY2FwdGlvblt3bF0oZSkuaHRtbDpudWxsLGE9dGhpcy53LG49dGhpcy5oO2xldCBzPTAscj0wO2lmKHRoaXMubWFyZ2luKXtzPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O3I9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IGk9bnVsbDtpZigiIj09PXRoaXMud3x8IiI9PT10aGlzLmgpe2xldCB0PW51bGwsYT1udWxsLG49MCxvPTA7aWYodGhpcy51aS5jaGVja0J1dHRvbiluPW89dGhpcy51aS5jaGVja0J1dHRvbi5zaXplO2Vsc2V7Y29uc3R7dzp0LGg6YX09bGF5b3V0Tm9kZSh0aGlzLGUpO2lmKG51bGwhPT10KXtuPXQ7bz1hfWVsc2Ugbz1mdW5jdGlvbiBmb250c19nZXRNZXRyaWNzKGUsdD0hMSl7bGV0IGE9bnVsbDtpZihlKXtjb25zdCB0PXN0cmlwUXVvdGVzKGUudHlwZWZhY2UpLG49ZVtQb10uZm9udEZpbmRlci5maW5kKHQpO2E9c2VsZWN0Rm9udChlLG4pfWlmKCFhKXJldHVybntsaW5lSGVpZ2h0OjEyLGxpbmVHYXA6MixsaW5lTm9HYXA6MTB9O2NvbnN0IG49ZS5zaXplfHwxMCxzPWEubGluZUhlaWdodD9NYXRoLm1heCh0PzA6MS4yLGEubGluZUhlaWdodCk6MS4yLHI9dm9pZCAwPT09YS5saW5lR2FwPy4yOmEubGluZUdhcDtyZXR1cm57bGluZUhlaWdodDpzKm4sbGluZUdhcDpyKm4sbGluZU5vR2FwOk1hdGgubWF4KDEscy1yKSpufX0odGhpcy5mb250LCEwKS5saW5lTm9HYXB9aT1nZXRCb3JkZXJEaW1zKHRoaXMudWlbRm9dKCkpO24rPWkudztvKz1pLmg7aWYodGhpcy5jYXB0aW9uKXtjb25zdHt3OnMsaDpyLGlzQnJva2VuOml9PXRoaXMuY2FwdGlvbltGb10oZSk7aWYoaSYmdGhpc1tIb10oKVskb10oKSl7dGhpc1tpbF0oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXQ9czthPXI7c3dpdGNoKHRoaXMuY2FwdGlvbi5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnQrPW47YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjphKz1vfX1lbHNle3Q9bjthPW99aWYodCYmIiI9PT10aGlzLncpe3QrPXM7dGhpcy53PU1hdGgubWluKHRoaXMubWF4Vzw9MD8xLzA6dGhpcy5tYXhXLHRoaXMubWluVysxPHQ/dDp0aGlzLm1pblcpfWlmKGEmJiIiPT09dGhpcy5oKXthKz1yO3RoaXMuaD1NYXRoLm1pbih0aGlzLm1heEg8PTA/MS8wOnRoaXMubWF4SCx0aGlzLm1pbkgrMTxhP2E6dGhpcy5taW5IKX19dGhpc1tpbF0oKTtmaXhEaW1lbnNpb25zKHRoaXMpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSl7dGhpcy53PWE7dGhpcy5oPW47dGhpc1tpbF0oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3Qgbz10b1N0eWxlKHRoaXMsImZvbnQiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwicHJlc2VuY2UiLCJtYXJnaW4iLCJoQWxpZ24iKTtzZXRNaW5NYXhEaW1lbnNpb25zKHRoaXMsbyk7Y29uc3QgbD1bInhmYUZpZWxkIl07dGhpcy5mb250JiZsLnB1c2goInhmYUZvbnQiKTtpc1ByaW50T25seSh0aGlzKSYmbC5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBmPXtzdHlsZTpvLGlkOnRoaXNbeWxdLGNsYXNzOmx9O2lmKG8ubWFyZ2luKXtvLnBhZGRpbmc9by5tYXJnaW47ZGVsZXRlIG8ubWFyZ2lufXNldEFjY2Vzcyh0aGlzLGwpO3RoaXMubmFtZSYmKGYueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IGM9W10saD17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmYsY2hpbGRyZW46Y307YXBwbHlBc3Npc3QodGhpcyxmKTtjb25zdCB1PXRoaXMuYm9yZGVyP3RoaXMuYm9yZGVyW2tsXSgpOm51bGwsbT1jb21wdXRlQmJveCh0aGlzLGgsZSkscD10aGlzLnVpW3dsXSgpLmh0bWw7aWYoIXApe09iamVjdC5hc3NpZ24obyx1KTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxoKSxtKX10aGlzW2RsXSYmKHAuY2hpbGRyZW4/LlswXT9wLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMudGFiaW5kZXg9dGhpc1tkbF06cC5hdHRyaWJ1dGVzLnRhYmluZGV4PXRoaXNbZGxdKTtwLmF0dHJpYnV0ZXMuc3R5bGV8fD1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBkPW51bGw7aWYodGhpcy51aS5idXR0b24pezE9PT1wLmNoaWxkcmVuLmxlbmd0aCYmKFtkXT1wLmNoaWxkcmVuLnNwbGljZSgwLDEpKTtPYmplY3QuYXNzaWduKHAuYXR0cmlidXRlcy5zdHlsZSx1KX1lbHNlIE9iamVjdC5hc3NpZ24obyx1KTtjLnB1c2gocCk7aWYodGhpcy52YWx1ZSlpZih0aGlzLnVpLmltYWdlRWRpdClwLmNoaWxkcmVuLnB1c2godGhpcy52YWx1ZVt3bF0oKS5odG1sKTtlbHNlIGlmKCF0aGlzLnVpLmJ1dHRvbil7bGV0IGU9IiI7aWYodGhpcy52YWx1ZS5leERhdGEpZT10aGlzLnZhbHVlLmV4RGF0YVtnbF0oKTtlbHNlIGlmKHRoaXMudmFsdWUudGV4dCllPXRoaXMudmFsdWUudGV4dFtGb10oKTtlbHNle2NvbnN0IHQ9dGhpcy52YWx1ZVt3bF0oKS5odG1sO251bGwhPT10JiYoZT10LmNoaWxkcmVuWzBdLnZhbHVlKX10aGlzLnVpLnRleHRFZGl0JiZ0aGlzLnZhbHVlLnRleHQ/Lm1heENoYXJzJiYocC5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLm1heExlbmd0aD10aGlzLnZhbHVlLnRleHQubWF4Q2hhcnMpO2lmKGUpe2lmKHRoaXMudWkubnVtZXJpY0VkaXQpe2U9cGFyc2VGbG9hdChlKTtlPWlzTmFOKGUpPyIiOmUudG9TdHJpbmcoKX0idGV4dGFyZWEiPT09cC5jaGlsZHJlblswXS5uYW1lP3AuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy50ZXh0Q29udGVudD1lOnAuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy52YWx1ZT1lfX1pZighdGhpcy51aS5pbWFnZUVkaXQmJnAuY2hpbGRyZW4/LlswXSYmdGhpcy5oKXtpfHw9Z2V0Qm9yZGVyRGltcyh0aGlzLnVpW0ZvXSgpKTtpZih0aGlzLmNhcHRpb24mJlsidG9wIiwiYm90dG9tIl0uaW5jbHVkZXModGhpcy5jYXB0aW9uLnBsYWNlbWVudCkpe2xldCB0PXRoaXMuY2FwdGlvbi5yZXNlcnZlO3Q8PTAmJih0PXRoaXMuY2FwdGlvbltGb10oZSkuaCk7Y29uc3QgYT10aGlzLmgtdC1yLWkuaDtwLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMuc3R5bGUuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhhKX1lbHNlIHAuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9IjEwMCUifWQmJnAuY2hpbGRyZW4ucHVzaChkKTtpZighdCl7cC5hdHRyaWJ1dGVzLmNsYXNzJiZwLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhTGVmdCIpO3RoaXMudz1hO3RoaXMuaD1uO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLGgpLG0pfWlmKHRoaXMudWkuYnV0dG9uKXtvLnBhZGRpbmcmJmRlbGV0ZSBvLnBhZGRpbmc7ImRpdiI9PT10Lm5hbWUmJih0Lm5hbWU9InNwYW4iKTtwLmNoaWxkcmVuLnB1c2godCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhoLG0pfXRoaXMudWkuY2hlY2tCdXR0b24mJih0LmF0dHJpYnV0ZXMuY2xhc3NbMF09InhmYUNhcHRpb25Gb3JDaGVja0J1dHRvbiIpO3AuYXR0cmlidXRlcy5jbGFzc3x8PVtdO3AuY2hpbGRyZW4uc3BsaWNlKDAsMCx0KTtzd2l0Y2godGhpcy5jYXB0aW9uLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlImlubGluZSI6cC5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYUxlZnQiKTticmVhaztjYXNlInJpZ2h0IjpwLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhUmlnaHQiKTticmVhaztjYXNlInRvcCI6cC5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYVRvcCIpO2JyZWFrO2Nhc2UiYm90dG9tIjpwLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhQm90dG9tIil9dGhpcy53PWE7dGhpcy5oPW47cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsaCksbSl9fWNsYXNzIEZpbGwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImZpbGwiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubGluZWFyPW51bGw7dGhpcy5wYXR0ZXJuPW51bGw7dGhpcy5yYWRpYWw9bnVsbDt0aGlzLnNvbGlkPW51bGw7dGhpcy5zdGlwcGxlPW51bGx9W2tsXSgpe2NvbnN0IGU9dGhpc1tNb10oKSx0PWVbTW9dKClbTW9dKCksYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBuPSJjb2xvciIscz1uO2lmKGUgaW5zdGFuY2VvZiBCb3JkZXIpe249ImJhY2tncm91bmQtY29sb3IiO3M9ImJhY2tncm91bmQiO3QgaW5zdGFuY2VvZiBVaSYmKGEuYmFja2dyb3VuZENvbG9yPSJ3aGl0ZSIpfWlmKGUgaW5zdGFuY2VvZiBSZWN0YW5nbGV8fGUgaW5zdGFuY2VvZiBBcmMpe249cz0iZmlsbCI7YS5maWxsPSJ3aGl0ZSJ9Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJleHRyYXMiPT09ZXx8ImNvbG9yIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKCEodCBpbnN0YW5jZW9mIFhGQU9iamVjdCkpY29udGludWU7Y29uc3Qgcj10W2tsXSh0aGlzLmNvbG9yKTtyJiYoYVtyLnN0YXJ0c1dpdGgoIiMiKT9uOnNdPXIpO3JldHVybiBhfWlmKHRoaXMuY29sb3I/LnZhbHVlKXtjb25zdCBlPXRoaXMuY29sb3Jba2xdKCk7YVtlLnN0YXJ0c1dpdGgoIiMiKT9uOnNdPWV9cmV0dXJuIGF9fWNsYXNzIEZpbHRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwiZmlsdGVyIiwhMCk7dGhpcy5hZGRSZXZvY2F0aW9uSW5mbz1nZXRTdHJpbmdPcHRpb24oZS5hZGRSZXZvY2F0aW9uSW5mbyxbIiIsInJlcXVpcmVkIiwib3B0aW9uYWwiLCJub25lIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudmVyc2lvbj1nZXRJbnRlZ2VyKHtkYXRhOnRoaXMudmVyc2lvbixkZWZhdWx0VmFsdWU6NSx2YWxpZGF0ZTplPT5lPj0xJiZlPD01fSk7dGhpcy5hcHBlYXJhbmNlRmlsdGVyPW51bGw7dGhpcy5jZXJ0aWZpY2F0ZXM9bnVsbDt0aGlzLmRpZ2VzdE1ldGhvZHM9bnVsbDt0aGlzLmVuY29kaW5ncz1udWxsO3RoaXMuZW5jcnlwdGlvbk1ldGhvZHM9bnVsbDt0aGlzLmhhbmRsZXI9bnVsbDt0aGlzLmxvY2tEb2N1bWVudD1udWxsO3RoaXMubWRwPW51bGw7dGhpcy5yZWFzb25zPW51bGw7dGhpcy50aW1lU3RhbXA9bnVsbH19Y2xhc3MgRmxvYXQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJmbG9hdCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtrb10oKXtjb25zdCBlPXBhcnNlRmxvYXQodGhpc1tnb10udHJpbSgpKTt0aGlzW2dvXT1pc05hTihlKT9udWxsOmV9W3dsXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbZ29dP3RoaXNbZ29dLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyB0ZW1wbGF0ZV9Gb250IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJmb250IiwhMCk7dGhpcy5iYXNlbGluZVNoaWZ0PWdldE1lYXN1cmVtZW50KGUuYmFzZWxpbmVTaGlmdCk7dGhpcy5mb250SG9yaXpvbnRhbFNjYWxlPWdldEZsb2F0KHtkYXRhOmUuZm9udEhvcml6b250YWxTY2FsZSxkZWZhdWx0VmFsdWU6MTAwLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmZvbnRWZXJ0aWNhbFNjYWxlPWdldEZsb2F0KHtkYXRhOmUuZm9udFZlcnRpY2FsU2NhbGUsZGVmYXVsdFZhbHVlOjEwMCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmtlcm5pbmdNb2RlPWdldFN0cmluZ09wdGlvbihlLmtlcm5pbmdNb2RlLFsibm9uZSIsInBhaXIiXSk7dGhpcy5sZXR0ZXJTcGFjaW5nPWdldE1lYXN1cmVtZW50KGUubGV0dGVyU3BhY2luZywiMCIpO3RoaXMubGluZVRocm91Z2g9Z2V0SW50ZWdlcih7ZGF0YTplLmxpbmVUaHJvdWdoLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMubGluZVRocm91Z2hQZXJpb2Q9Z2V0U3RyaW5nT3B0aW9uKGUubGluZVRocm91Z2hQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pO3RoaXMub3ZlcmxpbmU9Z2V0SW50ZWdlcih7ZGF0YTplLm92ZXJsaW5lLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMub3ZlcmxpbmVQZXJpb2Q9Z2V0U3RyaW5nT3B0aW9uKGUub3ZlcmxpbmVQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pO3RoaXMucG9zdHVyZT1nZXRTdHJpbmdPcHRpb24oZS5wb3N0dXJlLFsibm9ybWFsIiwiaXRhbGljIl0pO3RoaXMuc2l6ZT1nZXRNZWFzdXJlbWVudChlLnNpemUsIjEwcHQiKTt0aGlzLnR5cGVmYWNlPWUudHlwZWZhY2V8fCJDb3VyaWVyIjt0aGlzLnVuZGVybGluZT1nZXRJbnRlZ2VyKHtkYXRhOmUudW5kZXJsaW5lLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMudW5kZXJsaW5lUGVyaW9kPWdldFN0cmluZ09wdGlvbihlLnVuZGVybGluZVBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMud2VpZ2h0PWdldFN0cmluZ09wdGlvbihlLndlaWdodCxbIm5vcm1hbCIsImJvbGQiXSk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbGw9bnVsbH1bY29dKGUpe3N1cGVyW2NvXShlKTt0aGlzW1BvXS51c2VkVHlwZWZhY2VzLmFkZCh0aGlzLnR5cGVmYWNlKX1ba2xdKCl7Y29uc3QgZT10b1N0eWxlKHRoaXMsImZpbGwiKSx0PWUuY29sb3I7aWYodClpZigiIzAwMDAwMCI9PT10KWRlbGV0ZSBlLmNvbG9yO2Vsc2UgaWYoIXQuc3RhcnRzV2l0aCgiIyIpKXtlLmJhY2tncm91bmQ9dDtlLmJhY2tncm91bmRDbGlwPSJ0ZXh0IjtlLmNvbG9yPSJ0cmFuc3BhcmVudCJ9dGhpcy5iYXNlbGluZVNoaWZ0JiYoZS52ZXJ0aWNhbEFsaWduPW1lYXN1cmVUb1N0cmluZyh0aGlzLmJhc2VsaW5lU2hpZnQpKTtlLmZvbnRLZXJuaW5nPSJub25lIj09PXRoaXMua2VybmluZ01vZGU/Im5vbmUiOiJub3JtYWwiO2UubGV0dGVyU3BhY2luZz1tZWFzdXJlVG9TdHJpbmcodGhpcy5sZXR0ZXJTcGFjaW5nKTtpZigwIT09dGhpcy5saW5lVGhyb3VnaCl7ZS50ZXh0RGVjb3JhdGlvbj0ibGluZS10aHJvdWdoIjsyPT09dGhpcy5saW5lVGhyb3VnaCYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9aWYoMCE9PXRoaXMub3ZlcmxpbmUpe2UudGV4dERlY29yYXRpb249Im92ZXJsaW5lIjsyPT09dGhpcy5vdmVybGluZSYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9ZS5mb250U3R5bGU9dGhpcy5wb3N0dXJlO2UuZm9udFNpemU9bWVhc3VyZVRvU3RyaW5nKC45OSp0aGlzLnNpemUpO3NldEZvbnRGYW1pbHkodGhpcyx0aGlzLHRoaXNbUG9dLmZvbnRGaW5kZXIsZSk7aWYoMCE9PXRoaXMudW5kZXJsaW5lKXtlLnRleHREZWNvcmF0aW9uPSJ1bmRlcmxpbmUiOzI9PT10aGlzLnVuZGVybGluZSYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9ZS5mb250V2VpZ2h0PXRoaXMud2VpZ2h0O3JldHVybiBlfX1jbGFzcyBGb3JtYXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImZvcm1hdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIEhhbmRsZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImhhbmRsZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEh5cGhlbmF0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJoeXBoZW5hdGlvbiIpO3RoaXMuZXhjbHVkZUFsbENhcHM9Z2V0SW50ZWdlcih7ZGF0YTplLmV4Y2x1ZGVBbGxDYXBzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5leGNsdWRlSW5pdGlhbENhcD1nZXRJbnRlZ2VyKHtkYXRhOmUuZXhjbHVkZUluaXRpYWxDYXAsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmh5cGhlbmF0ZT1nZXRJbnRlZ2VyKHtkYXRhOmUuaHlwaGVuYXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnB1c2hDaGFyYWN0ZXJDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUucHVzaENoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTozLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnJlbWFpbkNoYXJhY3RlckNvdW50PWdldEludGVnZXIoe2RhdGE6ZS5yZW1haW5DaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Myx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMud29yZENoYXJhY3RlckNvdW50PWdldEludGVnZXIoe2RhdGE6ZS53b3JkQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjcsdmFsaWRhdGU6ZT0+ZT49MH0pfX1jbGFzcyBJbWFnZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwiaW1hZ2UiKTt0aGlzLmFzcGVjdD1nZXRTdHJpbmdPcHRpb24oZS5hc3BlY3QsWyJmaXQiLCJhY3R1YWwiLCJoZWlnaHQiLCJub25lIiwid2lkdGgiXSk7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmhyZWY9ZS5ocmVmfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudHJhbnNmZXJFbmNvZGluZz1nZXRTdHJpbmdPcHRpb24oZS50cmFuc2ZlckVuY29kaW5nLFsiYmFzZTY0Iiwibm9uZSIsInBhY2thZ2UiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVt3bF0oKXtpZih0aGlzLmNvbnRlbnRUeXBlJiYhcmYuaGFzKHRoaXMuY29udGVudFR5cGUudG9Mb3dlckNhc2UoKSkpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7bGV0IGU9dGhpc1tQb10uaW1hZ2VzPy5nZXQodGhpcy5ocmVmKTtpZighZSYmKHRoaXMuaHJlZnx8IXRoaXNbZ29dKSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtlfHwiYmFzZTY0IiE9PXRoaXMudHJhbnNmZXJFbmNvZGluZ3x8KGU9VWludDhBcnJheS5mcm9tQmFzZTY0KHRoaXNbZ29dKSk7aWYoIWUpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7aWYoIXRoaXMuY29udGVudFR5cGUpe2Zvcihjb25zdFt0LGFdb2Ygb2YpaWYoZS5sZW5ndGg+dC5sZW5ndGgmJnQuZXZlcnkoKHQsYSk9PnQ9PT1lW2FdKSl7dGhpcy5jb250ZW50VHlwZT1hO2JyZWFrfWlmKCF0aGlzLmNvbnRlbnRUeXBlKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZfWNvbnN0IHQ9bmV3IEJsb2IoW2VdLHt0eXBlOnRoaXMuY29udGVudFR5cGV9KTtsZXQgYTtzd2l0Y2godGhpcy5hc3BlY3Qpe2Nhc2UiZml0IjpjYXNlImFjdHVhbCI6YnJlYWs7Y2FzZSJoZWlnaHQiOmE9e2hlaWdodDoiMTAwJSIsb2JqZWN0Rml0OiJmaWxsIn07YnJlYWs7Y2FzZSJub25lIjphPXt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifTticmVhaztjYXNlIndpZHRoIjphPXt3aWR0aDoiMTAwJSIsb2JqZWN0Rml0OiJmaWxsIn19Y29uc3Qgbj10aGlzW01vXSgpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImltZyIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFJbWFnZSJdLHN0eWxlOmEsc3JjOlVSTC5jcmVhdGVPYmplY3RVUkwodCksYWx0Om4/YXJpYUxhYmVsKG5bTW9dKCkpOm51bGx9fSl9fWNsYXNzIEltYWdlRWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwiaW1hZ2VFZGl0IiwhMCk7dGhpcy5kYXRhPWdldFN0cmluZ09wdGlvbihlLmRhdGEsWyJsaW5rIiwiZW1iZWQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3dsXShlKXtyZXR1cm4iZW1iZWQiPT09dGhpcy5kYXRhP0hUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXSxhdHRyaWJ1dGVzOnt9fSk6SFRNTFJlc3VsdC5FTVBUWX19Y2xhc3MgSW50ZWdlciBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImludGVnZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1ba29dKCl7Y29uc3QgZT1wYXJzZUludCh0aGlzW2dvXS50cmltKCksMTApO3RoaXNbZ29dPWlzTmFOKGUpP251bGw6ZX1bd2xdKGUpe3JldHVybiB2YWx1ZVRvSHRtbChudWxsIT09dGhpc1tnb10/dGhpc1tnb10udG9TdHJpbmcoKToiIil9fWNsYXNzIElzc3VlcnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImlzc3VlcnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEl0ZW1zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJpdGVtcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy5zYXZlPWdldEludGVnZXIoe2RhdGE6ZS5zYXZlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheX1bd2xdKCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgdCBvZiB0aGlzW09vXSgpKWUucHVzaCh0W2dsXSgpKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGUpfX1jbGFzcyBLZWVwIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJrZWVwIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjtjb25zdCB0PVsibm9uZSIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiXTt0aGlzLmludGFjdD1nZXRTdHJpbmdPcHRpb24oZS5pbnRhY3QsdCk7dGhpcy5uZXh0PWdldFN0cmluZ09wdGlvbihlLm5leHQsdCk7dGhpcy5wcmV2aW91cz1nZXRTdHJpbmdPcHRpb24oZS5wcmV2aW91cyx0KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgS2V5VXNhZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImtleVVzYWdlIik7Y29uc3QgdD1bIiIsInllcyIsIm5vIl07dGhpcy5jcmxTaWduPWdldFN0cmluZ09wdGlvbihlLmNybFNpZ24sdCk7dGhpcy5kYXRhRW5jaXBoZXJtZW50PWdldFN0cmluZ09wdGlvbihlLmRhdGFFbmNpcGhlcm1lbnQsdCk7dGhpcy5kZWNpcGhlck9ubHk9Z2V0U3RyaW5nT3B0aW9uKGUuZGVjaXBoZXJPbmx5LHQpO3RoaXMuZGlnaXRhbFNpZ25hdHVyZT1nZXRTdHJpbmdPcHRpb24oZS5kaWdpdGFsU2lnbmF0dXJlLHQpO3RoaXMuZW5jaXBoZXJPbmx5PWdldFN0cmluZ09wdGlvbihlLmVuY2lwaGVyT25seSx0KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMua2V5QWdyZWVtZW50PWdldFN0cmluZ09wdGlvbihlLmtleUFncmVlbWVudCx0KTt0aGlzLmtleUNlcnRTaWduPWdldFN0cmluZ09wdGlvbihlLmtleUNlcnRTaWduLHQpO3RoaXMua2V5RW5jaXBoZXJtZW50PWdldFN0cmluZ09wdGlvbihlLmtleUVuY2lwaGVybWVudCx0KTt0aGlzLm5vblJlcHVkaWF0aW9uPWdldFN0cmluZ09wdGlvbihlLm5vblJlcHVkaWF0aW9uLHQpO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIExpbmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsImxpbmUiLCEwKTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnNsb3BlPWdldFN0cmluZ09wdGlvbihlLnNsb3BlLFsiXFwiLCIvIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmVkZ2U9bnVsbH1bd2xdKCl7Y29uc3QgZT10aGlzW01vXSgpW01vXSgpLHQ9dGhpcy5lZGdlfHxuZXcgRWRnZSh7fSksYT10W2tsXSgpLG49T2JqZWN0LmNyZWF0ZShudWxsKSxzPSJ2aXNpYmxlIj09PXQucHJlc2VuY2U/dC50aGlja25lc3M6MDtuLnN0cm9rZVdpZHRoPW1lYXN1cmVUb1N0cmluZyhzKTtuLnN0cm9rZT1hLmNvbG9yO2xldCBpLG8sbCxmLGM9IjEwMCUiLGg9IjEwMCUiO2lmKGUudzw9cyl7W2ksbyxsLGZdPVsiNTAlIiwwLCI1MCUiLCIxMDAlIl07Yz1uLnN0cm9rZVdpZHRofWVsc2UgaWYoZS5oPD1zKXtbaSxvLGwsZl09WzAsIjUwJSIsIjEwMCUiLCI1MCUiXTtoPW4uc3Ryb2tlV2lkdGh9ZWxzZSJcXCI9PT10aGlzLnNsb3BlP1tpLG8sbCxmXT1bMCwwLCIxMDAlIiwiMTAwJSJdOltpLG8sbCxmXT1bMCwiMTAwJSIsIjEwMCUiLDBdO2NvbnN0IHU9e25hbWU6InN2ZyIsY2hpbGRyZW46W3tuYW1lOiJsaW5lIixhdHRyaWJ1dGVzOnt4bWxuczpyLHgxOmkseTE6byx4MjpsLHkyOmYsc3R5bGU6bn19XSxhdHRyaWJ1dGVzOnt4bWxuczpyLHdpZHRoOmMsaGVpZ2h0Omgsc3R5bGU6e292ZXJmbG93OiJ2aXNpYmxlIn19fTtpZihoYXNNYXJnaW4oZSkpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTp7ZGlzcGxheToiaW5saW5lIix3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn19LGNoaWxkcmVuOlt1XX0pO3UuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3ModSl9fWNsYXNzIExpbmVhciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwibGluZWFyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbInRvUmlnaHQiLCJ0b0JvdHRvbSIsInRvTGVmdCIsInRvVG9wIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1ba2xdKGUpe2U9ZT9lW2tsXSgpOiIjRkZGRkZGIjtyZXR1cm5gbGluZWFyLWdyYWRpZW50KCR7dGhpcy50eXBlLnJlcGxhY2UoLyhbUkJMVF0pLywiICQxIikudG9Mb3dlckNhc2UoKX0sICR7ZX0sICR7dGhpcy5jb2xvcj90aGlzLmNvbG9yW2tsXSgpOiIjMDAwMDAwIn0pYH19Y2xhc3MgTG9ja0RvY3VtZW50IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwibG9ja0RvY3VtZW50Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtrb10oKXt0aGlzW2dvXT1nZXRTdHJpbmdPcHRpb24odGhpc1tnb10sWyJhdXRvIiwiMCIsIjEiXSl9fWNsYXNzIE1hbmlmZXN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJtYW5pZmVzdCIsITApO3RoaXMuYWN0aW9uPWdldFN0cmluZ09wdGlvbihlLmFjdGlvbixbImluY2x1ZGUiLCJhbGwiLCJleGNsdWRlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5yZWY9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBNYXJnaW4gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsIm1hcmdpbiIsITApO3RoaXMuYm90dG9tSW5zZXQ9Z2V0TWVhc3VyZW1lbnQoZS5ib3R0b21JbnNldCwiMCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWZ0SW5zZXQ9Z2V0TWVhc3VyZW1lbnQoZS5sZWZ0SW5zZXQsIjAiKTt0aGlzLnJpZ2h0SW5zZXQ9Z2V0TWVhc3VyZW1lbnQoZS5yaWdodEluc2V0LCIwIik7dGhpcy50b3BJbnNldD1nZXRNZWFzdXJlbWVudChlLnRvcEluc2V0LCIwIik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W2tsXSgpe3JldHVybnttYXJnaW46bWVhc3VyZVRvU3RyaW5nKHRoaXMudG9wSW5zZXQpKyIgIittZWFzdXJlVG9TdHJpbmcodGhpcy5yaWdodEluc2V0KSsiICIrbWVhc3VyZVRvU3RyaW5nKHRoaXMuYm90dG9tSW5zZXQpKyIgIittZWFzdXJlVG9TdHJpbmcodGhpcy5sZWZ0SW5zZXQpfX19Y2xhc3MgTWRwIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJtZHAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGVybWlzc2lvbnM9Z2V0SW50ZWdlcih7ZGF0YTplLnBlcm1pc3Npb25zLGRlZmF1bHRWYWx1ZToyLHZhbGlkYXRlOmU9PjE9PT1lfHwzPT09ZX0pO3RoaXMuc2lnbmF0dXJlVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5zaWduYXR1cmVUeXBlLFsiZmlsbGVyIiwiYXV0aG9yIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgTWVkaXVtIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJtZWRpdW0iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW1hZ2luZ0JCb3g9ZnVuY3Rpb24gZ2V0QkJveChlKXtjb25zdCB0PS0xO2lmKCFlKXJldHVybnt4OnQseTp0LHdpZHRoOnQsaGVpZ2h0OnR9O2NvbnN0IGE9ZS5zcGxpdCgiLCIsNCkubWFwKGU9PmdldE1lYXN1cmVtZW50KGUudHJpbSgpLCItMSIpKTtpZihhLmxlbmd0aDw0fHxhWzJdPDB8fGFbM108MClyZXR1cm57eDp0LHk6dCx3aWR0aDp0LGhlaWdodDp0fTtjb25zdFtuLHMscixpXT1hO3JldHVybnt4Om4seTpzLHdpZHRoOnIsaGVpZ2h0Oml9fShlLmltYWdpbmdCQm94KTt0aGlzLmxvbmc9Z2V0TWVhc3VyZW1lbnQoZS5sb25nKTt0aGlzLm9yaWVudGF0aW9uPWdldFN0cmluZ09wdGlvbihlLm9yaWVudGF0aW9uLFsicG9ydHJhaXQiLCJsYW5kc2NhcGUiXSk7dGhpcy5zaG9ydD1nZXRNZWFzdXJlbWVudChlLnNob3J0KTt0aGlzLnN0b2NrPWUuc3RvY2t8fCIiO3RoaXMudHJheUluPWdldFN0cmluZ09wdGlvbihlLnRyYXlJbixbImF1dG8iLCJkZWxlZ2F0ZSIsInBhZ2VGcm9udCJdKTt0aGlzLnRyYXlPdXQ9Z2V0U3RyaW5nT3B0aW9uKGUudHJheU91dCxbImF1dG8iLCJkZWxlZ2F0ZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE1lc3NhZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsIm1lc3NhZ2UiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBOdW1lcmljRWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwibnVtZXJpY0VkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY29tYj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bd2xdKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJib3JkZXIiLCJmb250IiwibWFyZ2luIiksYT10aGlzW01vXSgpW01vXSgpLG49e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixmaWVsZElkOmFbeWxdLGRhdGFJZDphW2JvXT8uW3lsXXx8YVt5bF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChhKSl7bi5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7bi5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOltuXX0pfX1jbGFzcyBPY2N1ciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwib2NjdXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW5pdGlhbD0iIiE9PWUuaW5pdGlhbD9nZXRJbnRlZ2VyKHtkYXRhOmUuaW5pdGlhbCxkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+ITB9KToiIjt0aGlzLm1heD0iIiE9PWUubWF4P2dldEludGVnZXIoe2RhdGE6ZS5tYXgsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5taW49IiIhPT1lLm1pbj9nZXRJbnRlZ2VyKHtkYXRhOmUubWluLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W2NvXSgpe2NvbnN0IGU9dGhpc1tNb10oKSx0PXRoaXMubWluOyIiPT09dGhpcy5taW4mJih0aGlzLm1pbj1lIGluc3RhbmNlb2YgUGFnZUFyZWF8fGUgaW5zdGFuY2VvZiBQYWdlU2V0PzA6MSk7IiI9PT10aGlzLm1heCYmKHRoaXMubWF4PSIiPT09dD9lIGluc3RhbmNlb2YgUGFnZUFyZWF8fGUgaW5zdGFuY2VvZiBQYWdlU2V0Py0xOjE6dGhpcy5taW4pOy0xIT09dGhpcy5tYXgmJnRoaXMubWF4PHRoaXMubWluJiYodGhpcy5tYXg9dGhpcy5taW4pOyIiPT09dGhpcy5pbml0aWFsJiYodGhpcy5pbml0aWFsPWUgaW5zdGFuY2VvZiBUZW1wbGF0ZT8xOnRoaXMubWluKX19Y2xhc3MgT2lkIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJvaWQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgT2lkcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwib2lkcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLm9pZD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE92ZXJmbG93IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJvdmVyZmxvdyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W0ZvXSgpe2lmKCF0aGlzW2pvXSl7Y29uc3QgZT10aGlzW01vXSgpLHQ9dGhpc1tOb10oKSxhPXRbaGxdKHRoaXMudGFyZ2V0LGUpLG49dFtobF0odGhpcy5sZWFkZXIsZSkscz10W2hsXSh0aGlzLnRyYWlsZXIsZSk7dGhpc1tqb109e3RhcmdldDphPy5bMF18fG51bGwsbGVhZGVyOm4/LlswXXx8bnVsbCx0cmFpbGVyOnM/LlswXXx8bnVsbCxhZGRMZWFkZXI6ITEsYWRkVHJhaWxlcjohMX19cmV0dXJuIHRoaXNbam9dfX1jbGFzcyBQYWdlQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwicGFnZUFyZWEiLCEwKTt0aGlzLmJsYW5rT3JOb3RCbGFuaz1nZXRTdHJpbmdPcHRpb24oZS5ibGFua09yTm90QmxhbmssWyJhbnkiLCJibGFuayIsIm5vdEJsYW5rIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbml0aWFsTnVtYmVyPWdldEludGVnZXIoe2RhdGE6ZS5pbml0aWFsTnVtYmVyLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5udW1iZXJlZD1nZXRJbnRlZ2VyKHtkYXRhOmUubnVtYmVyZWQsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm9kZE9yRXZlbj1nZXRTdHJpbmdPcHRpb24oZS5vZGRPckV2ZW4sWyJhbnkiLCJldmVuIiwib2RkIl0pO3RoaXMucGFnZVBvc2l0aW9uPWdldFN0cmluZ09wdGlvbihlLnBhZ2VQb3NpdGlvbixbImFueSIsImZpcnN0IiwibGFzdCIsIm9ubHkiLCJyZXN0Il0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZWRpdW09bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbnRlbnRBcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5fVtKb10oKXtpZighdGhpc1tqb10pe3RoaXNbam9dPXtudW1iZXJPZlVzZTowfTtyZXR1cm4hMH1yZXR1cm4hdGhpcy5vY2N1cnx8LTE9PT10aGlzLm9jY3VyLm1heHx8dGhpc1tqb10ubnVtYmVyT2ZVc2U8dGhpcy5vY2N1ci5tYXh9W2hvXSgpe2RlbGV0ZSB0aGlzW2pvXX1bRG9dKCl7dGhpc1tqb118fD17bnVtYmVyT2ZVc2U6MH07Y29uc3QgZT10aGlzW01vXSgpO2lmKCJvcmRlcmVkT2NjdXJyZW5jZSI9PT1lLnJlbGF0aW9uJiZ0aGlzW0pvXSgpKXt0aGlzW2pvXS5udW1iZXJPZlVzZSs9MTtyZXR1cm4gdGhpc31yZXR1cm4gZVtEb10oKX1bU29dKCl7cmV0dXJuIHRoaXNbam9dLnNwYWNlfHx7d2lkdGg6MCxoZWlnaHQ6MH19W3dsXSgpe3RoaXNbam9dfHw9e251bWJlck9mVXNlOjF9O2NvbnN0IGU9W107dGhpc1tqb10uY2hpbGRyZW49ZTtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7aWYodGhpcy5tZWRpdW0mJnRoaXMubWVkaXVtLnNob3J0JiZ0aGlzLm1lZGl1bS5sb25nKXt0LndpZHRoPW1lYXN1cmVUb1N0cmluZyh0aGlzLm1lZGl1bS5zaG9ydCk7dC5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMubWVkaXVtLmxvbmcpO3RoaXNbam9dLnNwYWNlPXt3aWR0aDp0aGlzLm1lZGl1bS5zaG9ydCxoZWlnaHQ6dGhpcy5tZWRpdW0ubG9uZ307aWYoImxhbmRzY2FwZSI9PT10aGlzLm1lZGl1bS5vcmllbnRhdGlvbil7Y29uc3QgZT10LndpZHRoO3Qud2lkdGg9dC5oZWlnaHQ7dC5oZWlnaHQ9ZTt0aGlzW2pvXS5zcGFjZT17d2lkdGg6dGhpcy5tZWRpdW0ubG9uZyxoZWlnaHQ6dGhpcy5tZWRpdW0uc2hvcnR9fX1lbHNlIHdhcm4oIlhGQSAtIE5vIG1lZGl1bSBzcGVjaWZpZWQgaW4gcGFnZUFyZWE6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3RoaXNbZm9dKHtmaWx0ZXI6bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZmllbGQiLCJzdWJmb3JtIl0pLGluY2x1ZGU6ITB9KTt0aGlzW2ZvXSh7ZmlsdGVyOm5ldyBTZXQoWyJjb250ZW50QXJlYSJdKSxpbmNsdWRlOiEwfSk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjplLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUGFnZSJdLGlkOnRoaXNbeWxdLHN0eWxlOnQseGZhTmFtZTp0aGlzLm5hbWV9fSl9fWNsYXNzIFBhZ2VTZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsInBhZ2VTZXQiLCEwKTt0aGlzLmR1cGxleEltcG9zaXRpb249Z2V0U3RyaW5nT3B0aW9uKGUuZHVwbGV4SW1wb3NpdGlvbixbImxvbmdFZGdlIiwic2hvcnRFZGdlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yZWxhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5yZWxhdGlvbixbIm9yZGVyZWRPY2N1cnJlbmNlIiwiZHVwbGV4UGFnaW5hdGVkIiwic2ltcGxleFBhZ2luYXRlZCJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLnBhZ2VBcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VTZXQ9bmV3IFhGQU9iamVjdEFycmF5fVtob10oKXtmb3IoY29uc3QgZSBvZiB0aGlzLnBhZ2VBcmVhLmNoaWxkcmVuKWVbaG9dKCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5wYWdlU2V0LmNoaWxkcmVuKWVbaG9dKCl9W0pvXSgpe3JldHVybiF0aGlzLm9jY3VyfHwtMT09PXRoaXMub2NjdXIubWF4fHx0aGlzW2pvXS5udW1iZXJPZlVzZTx0aGlzLm9jY3VyLm1heH1bRG9dKCl7dGhpc1tqb118fD17bnVtYmVyT2ZVc2U6MSxwYWdlSW5kZXg6LTEscGFnZVNldEluZGV4Oi0xfTtpZigib3JkZXJlZE9jY3VycmVuY2UiPT09dGhpcy5yZWxhdGlvbil7aWYodGhpc1tqb10ucGFnZUluZGV4KzE8dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5sZW5ndGgpe3RoaXNbam9dLnBhZ2VJbmRleCs9MTtyZXR1cm4gdGhpcy5wYWdlQXJlYS5jaGlsZHJlblt0aGlzW2pvXS5wYWdlSW5kZXhdW0RvXSgpfWlmKHRoaXNbam9dLnBhZ2VTZXRJbmRleCsxPHRoaXMucGFnZVNldC5jaGlsZHJlbi5sZW5ndGgpe3RoaXNbam9dLnBhZ2VTZXRJbmRleCs9MTtyZXR1cm4gdGhpcy5wYWdlU2V0LmNoaWxkcmVuW3RoaXNbam9dLnBhZ2VTZXRJbmRleF1bRG9dKCl9aWYodGhpc1tKb10oKSl7dGhpc1tqb10ubnVtYmVyT2ZVc2UrPTE7dGhpc1tqb10ucGFnZUluZGV4PS0xO3RoaXNbam9dLnBhZ2VTZXRJbmRleD0tMTtyZXR1cm4gdGhpc1tEb10oKX1jb25zdCBlPXRoaXNbTW9dKCk7aWYoZSBpbnN0YW5jZW9mIFBhZ2VTZXQpcmV0dXJuIGVbRG9dKCk7dGhpc1tob10oKTtyZXR1cm4gdGhpc1tEb10oKX1jb25zdCBlPXRoaXNbTm9dKClbam9dLnBhZ2VOdW1iZXIsdD1lJTI9PTA/ImV2ZW4iOiJvZGQiLGE9MD09PWU/ImZpcnN0IjoicmVzdCI7bGV0IG49dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKGU9PmUub2RkT3JFdmVuPT09dCYmZS5wYWdlUG9zaXRpb249PT1hKTtpZihuKXJldHVybiBuO249dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKGU9PiJhbnkiPT09ZS5vZGRPckV2ZW4mJmUucGFnZVBvc2l0aW9uPT09YSk7aWYobilyZXR1cm4gbjtuPXRoaXMucGFnZUFyZWEuY2hpbGRyZW4uZmluZChlPT4iYW55Ij09PWUub2RkT3JFdmVuJiYiYW55Ij09PWUucGFnZVBvc2l0aW9uKTtyZXR1cm4gbj8/dGhpcy5wYWdlQXJlYS5jaGlsZHJlblswXX19Y2xhc3MgUGFyYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwicGFyYSIsITApO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxpbmVIZWlnaHQ9ZS5saW5lSGVpZ2h0P2dldE1lYXN1cmVtZW50KGUubGluZUhlaWdodCwiMHB0Iik6IiI7dGhpcy5tYXJnaW5MZWZ0PWUubWFyZ2luTGVmdD9nZXRNZWFzdXJlbWVudChlLm1hcmdpbkxlZnQsIjBwdCIpOiIiO3RoaXMubWFyZ2luUmlnaHQ9ZS5tYXJnaW5SaWdodD9nZXRNZWFzdXJlbWVudChlLm1hcmdpblJpZ2h0LCIwcHQiKToiIjt0aGlzLm9ycGhhbnM9Z2V0SW50ZWdlcih7ZGF0YTplLm9ycGhhbnMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMucHJlc2VydmU9ZS5wcmVzZXJ2ZXx8IiI7dGhpcy5yYWRpeE9mZnNldD1lLnJhZGl4T2Zmc2V0P2dldE1lYXN1cmVtZW50KGUucmFkaXhPZmZzZXQsIjBwdCIpOiIiO3RoaXMuc3BhY2VBYm92ZT1lLnNwYWNlQWJvdmU/Z2V0TWVhc3VyZW1lbnQoZS5zcGFjZUFib3ZlLCIwcHQiKToiIjt0aGlzLnNwYWNlQmVsb3c9ZS5zcGFjZUJlbG93P2dldE1lYXN1cmVtZW50KGUuc3BhY2VCZWxvdywiMHB0Iik6IiI7dGhpcy50YWJEZWZhdWx0PWUudGFiRGVmYXVsdD9nZXRNZWFzdXJlbWVudCh0aGlzLnRhYkRlZmF1bHQpOiIiO3RoaXMudGFiU3RvcHM9KGUudGFiU3RvcHN8fCIiKS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcCgoZSx0KT0+dCUyPT0xP2dldE1lYXN1cmVtZW50KGUpOmUpO3RoaXMudGV4dEluZGVudD1lLnRleHRJbmRlbnQ/Z2V0TWVhc3VyZW1lbnQoZS50ZXh0SW5kZW50LCIwcHQiKToiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy52QWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUudkFsaWduLFsidG9wIiwiYm90dG9tIiwibWlkZGxlIl0pO3RoaXMud2lkb3dzPWdldEludGVnZXIoe2RhdGE6ZS53aWRvd3MsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuaHlwaGVuYXRpb249bnVsbH1ba2xdKCl7Y29uc3QgZT10b1N0eWxlKHRoaXMsImhBbGlnbiIpOyIiIT09dGhpcy5tYXJnaW5MZWZ0JiYoZS5wYWRkaW5nTGVmdD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tYXJnaW5MZWZ0KSk7IiIhPT10aGlzLm1hcmdpblJpZ2h0JiYoZS5wYWRkaW5nUmlnaHQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMubWFyZ2luUmlnaHQpKTsiIiE9PXRoaXMuc3BhY2VBYm92ZSYmKGUucGFkZGluZ1RvcD1tZWFzdXJlVG9TdHJpbmcodGhpcy5zcGFjZUFib3ZlKSk7IiIhPT10aGlzLnNwYWNlQmVsb3cmJihlLnBhZGRpbmdCb3R0b209bWVhc3VyZVRvU3RyaW5nKHRoaXMuc3BhY2VCZWxvdykpO2lmKCIiIT09dGhpcy50ZXh0SW5kZW50KXtlLnRleHRJbmRlbnQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMudGV4dEluZGVudCk7Zml4VGV4dEluZGVudChlKX10aGlzLmxpbmVIZWlnaHQ+MCYmKGUubGluZUhlaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5saW5lSGVpZ2h0KSk7IiIhPT10aGlzLnRhYkRlZmF1bHQmJihlLnRhYlNpemU9bWVhc3VyZVRvU3RyaW5nKHRoaXMudGFiRGVmYXVsdCkpO3RoaXMudGFiU3RvcHMubGVuZ3RoO3RoaXMuaHlwaGVuYXRhdGlvbiYmT2JqZWN0LmFzc2lnbihlLHRoaXMuaHlwaGVuYXRhdGlvbltrbF0oKSk7cmV0dXJuIGV9fWNsYXNzIFBhc3N3b3JkRWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwicGFzc3dvcmRFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBhc3N3b3JkQ2hhcj1lLnBhc3N3b3JkQ2hhcnx8IioiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH19Y2xhc3MgdGVtcGxhdGVfUGF0dGVybiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwicGF0dGVybiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJjcm9zc0hhdGNoIiwiY3Jvc3NEaWFnb25hbCIsImRpYWdvbmFsTGVmdCIsImRpYWdvbmFsUmlnaHQiLCJob3Jpem9udGFsIiwidmVydGljYWwiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtrbF0oZSl7ZT1lP2Vba2xdKCk6IiNGRkZGRkYiO2NvbnN0IHQ9dGhpcy5jb2xvcj90aGlzLmNvbG9yW2tsXSgpOiIjMDAwMDAwIixhPSJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50IixuPWAke2V9LCR7ZX0gNXB4LCR7dH0gNXB4LCR7dH0gMTBweGA7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZSJjcm9zc0hhdGNoIjpyZXR1cm5gJHthfSh0byB0b3AsJHtufSkgJHthfSh0byByaWdodCwke259KWA7Y2FzZSJjcm9zc0RpYWdvbmFsIjpyZXR1cm5gJHthfSg0NWRlZywke259KSAke2F9KC00NWRlZywke259KWA7Y2FzZSJkaWFnb25hbExlZnQiOnJldHVybmAke2F9KDQ1ZGVnLCR7bn0pYDtjYXNlImRpYWdvbmFsUmlnaHQiOnJldHVybmAke2F9KC00NWRlZywke259KWA7Y2FzZSJob3Jpem9udGFsIjpyZXR1cm5gJHthfSh0byB0b3AsJHtufSlgO2Nhc2UidmVydGljYWwiOnJldHVybmAke2F9KHRvIHJpZ2h0LCR7bn0pYH1yZXR1cm4iIn19Y2xhc3MgUGljdHVyZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwicGljdHVyZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBQcm90byBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwicHJvdG8iLCEwKTt0aGlzLmFwcGVhcmFuY2VGaWx0ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYXJjPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYXNzaXN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJhcmNvZGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYmluZEl0ZW1zPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJvb2tlbmQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ib3JkZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWs9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtBZnRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0JlZm9yZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5idXR0b249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2FsY3VsYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNhcHRpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2VydGlmaWNhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2VydGlmaWNhdGVzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNoZWNrQnV0dG9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNob2ljZUxpc3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29sb3I9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29tYj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb25uZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbnRlbnRBcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvcm5lcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lRWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlZmF1bHRVaT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZXNjPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRpZ2VzdE1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kaWdlc3RNZXRob2RzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZWRnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNvZGluZz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNvZGluZ3M9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0aW9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHRpb25NZXRob2Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdGlvbk1ldGhvZHM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leGVjdXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4dHJhcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWxsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpbHRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mb250PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZvcm1hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5oYW5kbGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmh5cGhlbmF0aW9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlRWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmlzc3VlcnM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaXRlbXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMua2VlcD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5rZXlVc2FnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5saW5lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxpbmVhcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5sb2NrRG9jdW1lbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWFuaWZlc3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWFyZ2luPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1kcD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tZWRpdW09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWVzc2FnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5udW1lcmljRWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5vY2N1cj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5vaWQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMub2lkcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5vdmVyZmxvdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYWdlQXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYWdlU2V0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhcmE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFzc3dvcmRFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhdHRlcm49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGljdHVyZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yYWRpYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVhc29uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnJlYXNvbnM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVjdGFuZ2xlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnJlZj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zY3JpcHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2V0UHJvcGVydHk9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2lnbkRhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmF0dXJlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNpZ25pbmc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc29saWQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3BlYWs9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3RpcHBsZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViamVjdEROPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmplY3RETnM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3VibWl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dEVkaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lU3RhbXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudG9vbFRpcD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudHJhdmVyc2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudWk9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudmFsaWRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudmFsdWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudmFyaWFibGVzPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgUmFkaWFsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJyYWRpYWwiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsidG9FZGdlIiwidG9DZW50ZXIiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtrbF0oZSl7ZT1lP2Vba2xdKCk6IiNGRkZGRkYiO2NvbnN0IHQ9dGhpcy5jb2xvcj90aGlzLmNvbG9yW2tsXSgpOiIjMDAwMDAwIjtyZXR1cm5gcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCBjZW50ZXIsICR7InRvRWRnZSI9PT10aGlzLnR5cGU/YCR7ZX0sJHt0fWA6YCR7dH0sJHtlfWB9KWB9fWNsYXNzIFJlYXNvbiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwicmVhc29uIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFJlYXNvbnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsInJlYXNvbnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5yZWFzb249bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBSZWN0YW5nbGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsInJlY3RhbmdsZSIsITApO3RoaXMuaGFuZD1nZXRTdHJpbmdPcHRpb24oZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvcm5lcj1uZXcgWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5lZGdlPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmZpbGw9bnVsbH1bd2xdKCl7Y29uc3QgZT10aGlzLmVkZ2UuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuZWRnZS5jaGlsZHJlblswXTpuZXcgRWRnZSh7fSksdD1lW2tsXSgpLGE9T2JqZWN0LmNyZWF0ZShudWxsKTsidmlzaWJsZSI9PT10aGlzLmZpbGw/LnByZXNlbmNlP09iamVjdC5hc3NpZ24oYSx0aGlzLmZpbGxba2xdKCkpOmEuZmlsbD0idHJhbnNwYXJlbnQiO2Euc3Ryb2tlV2lkdGg9bWVhc3VyZVRvU3RyaW5nKCJ2aXNpYmxlIj09PWUucHJlc2VuY2U/ZS50aGlja25lc3M6MCk7YS5zdHJva2U9dC5jb2xvcjtjb25zdCBuPSh0aGlzLmNvcm5lci5jaGlsZHJlbi5sZW5ndGg/dGhpcy5jb3JuZXIuY2hpbGRyZW5bMF06bmV3IENvcm5lcih7fSkpW2tsXSgpLHM9e25hbWU6InN2ZyIsY2hpbGRyZW46W3tuYW1lOiJyZWN0IixhdHRyaWJ1dGVzOnt4bWxuczpyLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLHg6MCx5OjAscng6bi5yYWRpdXMscnk6bi5yYWRpdXMsc3R5bGU6YX19XSxhdHRyaWJ1dGVzOnt4bWxuczpyLHN0eWxlOntvdmVyZmxvdzoidmlzaWJsZSJ9LHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX07aWYoaGFzTWFyZ2luKHRoaXNbTW9dKClbTW9dKCkpKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7c3R5bGU6e2Rpc3BsYXk6ImlubGluZSIsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fSxjaGlsZHJlbjpbc119KTtzLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHMpfX1jbGFzcyBSZWZFbGVtZW50IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJyZWYiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU2NyaXB0IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJzY3JpcHQiKTt0aGlzLmJpbmRpbmc9ZS5iaW5kaW5nfHwiIjt0aGlzLmNvbnRlbnRUeXBlPWUuY29udGVudFR5cGV8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5ydW5BdD1nZXRTdHJpbmdPcHRpb24oZS5ydW5BdCxbImNsaWVudCIsImJvdGgiLCJzZXJ2ZXIiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTZXRQcm9wZXJ0eSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwic2V0UHJvcGVydHkiKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIifX1jbGFzcyBTaWduRGF0YSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwic2lnbkRhdGEiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPWdldFN0cmluZ09wdGlvbihlLm9wZXJhdGlvbixbInNpZ24iLCJjbGVhciIsInZlcmlmeSJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmZpbHRlcj1udWxsO3RoaXMubWFuaWZlc3Q9bnVsbH19Y2xhc3MgU2lnbmF0dXJlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJzaWduYXR1cmUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsiUERGMS4zIiwiUERGMS42Il0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGw7dGhpcy5tYXJnaW49bnVsbH19Y2xhc3MgU2lnbmluZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwic2lnbmluZyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgU29saWQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsInNvbGlkIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1ba2xdKGUpe3JldHVybiBlP2Vba2xdKCk6IiNGRkZGRkYifX1jbGFzcyBTcGVhayBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwic3BlYWsiKTt0aGlzLmRpc2FibGU9Z2V0SW50ZWdlcih7ZGF0YTplLmRpc2FibGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJpb3JpdHk9Z2V0U3RyaW5nT3B0aW9uKGUucHJpb3JpdHksWyJjdXN0b20iLCJjYXB0aW9uIiwibmFtZSIsInRvb2xUaXAiXSk7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU3RpcHBsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwic3RpcHBsZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yYXRlPWdldEludGVnZXIoe2RhdGE6ZS5yYXRlLGRlZmF1bHRWYWx1ZTo1MCx2YWxpZGF0ZTplPT5lPj0wJiZlPD0xMDB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W2tsXShlKXtjb25zdCB0PXRoaXMucmF0ZS8xMDA7cmV0dXJuIFV0aWwubWFrZUhleENvbG9yKE1hdGgucm91bmQoZS52YWx1ZS5yKigxLXQpK3RoaXMudmFsdWUucip0KSxNYXRoLnJvdW5kKGUudmFsdWUuZyooMS10KSt0aGlzLnZhbHVlLmcqdCksTWF0aC5yb3VuZChlLnZhbHVlLmIqKDEtdCkrdGhpcy52YWx1ZS5iKnQpKX19Y2xhc3MgU3ViZm9ybSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwic3ViZm9ybSIsITApO3RoaXMuYWNjZXNzPWdldFN0cmluZ09wdGlvbihlLmFjY2VzcyxbIm9wZW4iLCJub25JbnRlcmFjdGl2ZSIsInByb3RlY3RlZCIsInJlYWRPbmx5Il0pO3RoaXMuYWxsb3dNYWNybz1nZXRJbnRlZ2VyKHtkYXRhOmUuYWxsb3dNYWNybyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuYW5jaG9yVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmNvbHVtbldpZHRocz0oZS5jb2x1bW5XaWR0aHN8fCIiKS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcChlPT4iLTEiPT09ZT8tMTpnZXRNZWFzdXJlbWVudChlKSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxheW91dD1nZXRTdHJpbmdPcHRpb24oZS5sYXlvdXQsWyJwb3NpdGlvbiIsImxyLXRiIiwicmwtcm93IiwicmwtdGIiLCJyb3ciLCJ0YWJsZSIsInRiIl0pO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9Z2V0TWVhc3VyZW1lbnQoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9Z2V0TWVhc3VyZW1lbnQoZS5tYXhXLCIwcHQiKTt0aGlzLm1lcmdlTW9kZT1nZXRTdHJpbmdPcHRpb24oZS5tZXJnZU1vZGUsWyJjb25zdW1lRGF0YSIsIm1hdGNoVGVtcGxhdGUiXSk7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucmVzdG9yZVN0YXRlPWdldFN0cmluZ09wdGlvbihlLnJlc3RvcmVTdGF0ZSxbIm1hbnVhbCIsImF1dG8iXSk7dGhpcy5zY29wZT1nZXRTdHJpbmdPcHRpb24oZS5zY29wZSxbIm5hbWUiLCJub25lIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvb2tlbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuYnJlYWs9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5vdmVyZmxvdz1udWxsO3RoaXMucGFnZVNldD1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFyaWFibGVzPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQWZ0ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtCZWZvcmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29ubmVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kcmF3PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wcm90bz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IFhGQU9iamVjdEFycmF5fVtIb10oKXtjb25zdCBlPXRoaXNbTW9dKCk7cmV0dXJuIGUgaW5zdGFuY2VvZiBTdWJmb3JtU2V0P2VbSG9dKCk6ZX1bV29dKCl7cmV0dXJuITB9WyRvXSgpe3JldHVybiB0aGlzLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjA9PT10aGlzW2pvXS5hdHRlbXB0JiZ0aGlzW2pvXS5udW1iZXJJbkxpbmU+MHx8dGhpc1tNb10oKVskb10oKX0qW0JvXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVt5b10oKXtyZXR1cm4gZmx1c2hIVE1MKHRoaXMpfVtvb10oZSx0KXthZGRIVE1MKHRoaXMsZSx0KX1bU29dKCl7cmV0dXJuIGdldEF2YWlsYWJsZVNwYWNlKHRoaXMpfVtWb10oKXtjb25zdCBlPXRoaXNbSG9dKCk7aWYoIWVbVm9dKCkpcmV0dXJuITE7aWYodm9pZCAwIT09dGhpc1tqb10uX2lzU3BsaXR0YWJsZSlyZXR1cm4gdGhpc1tqb10uX2lzU3BsaXR0YWJsZTtpZigicG9zaXRpb24iPT09dGhpcy5sYXlvdXR8fHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7dGhpc1tqb10uX2lzU3BsaXR0YWJsZT0hMTtyZXR1cm4hMX1pZih0aGlzLmtlZXAmJiJub25lIiE9PXRoaXMua2VlcC5pbnRhY3Qpe3RoaXNbam9dLl9pc1NwbGl0dGFibGU9ITE7cmV0dXJuITF9aWYoZS5sYXlvdXQ/LmVuZHNXaXRoKCItdGIiKSYmMCE9PWVbam9dLm51bWJlckluTGluZSlyZXR1cm4hMTt0aGlzW2pvXS5faXNTcGxpdHRhYmxlPSEwO3JldHVybiEwfVt3bF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYodGhpcy5icmVhayl7aWYoImF1dG8iIT09dGhpcy5icmVhay5hZnRlcnx8IiIhPT10aGlzLmJyZWFrLmFmdGVyVGFyZ2V0KXtjb25zdCBlPW5ldyBCcmVha0FmdGVyKHt0YXJnZXRUeXBlOnRoaXMuYnJlYWsuYWZ0ZXIsdGFyZ2V0OnRoaXMuYnJlYWsuYWZ0ZXJUYXJnZXQsc3RhcnROZXc6dGhpcy5icmVhay5zdGFydE5ldy50b1N0cmluZygpfSk7ZVtQb109dGhpc1tQb107dGhpc1tsb10oZSk7dGhpcy5icmVha0FmdGVyLnB1c2goZSl9aWYoImF1dG8iIT09dGhpcy5icmVhay5iZWZvcmV8fCIiIT09dGhpcy5icmVhay5iZWZvcmVUYXJnZXQpe2NvbnN0IGU9bmV3IEJyZWFrQmVmb3JlKHt0YXJnZXRUeXBlOnRoaXMuYnJlYWsuYmVmb3JlLHRhcmdldDp0aGlzLmJyZWFrLmJlZm9yZVRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW1BvXT10aGlzW1BvXTt0aGlzW2xvXShlKTt0aGlzLmJyZWFrQmVmb3JlLnB1c2goZSl9aWYoIiIhPT10aGlzLmJyZWFrLm92ZXJmbG93VGFyZ2V0KXtjb25zdCBlPW5ldyBPdmVyZmxvdyh7dGFyZ2V0OnRoaXMuYnJlYWsub3ZlcmZsb3dUYXJnZXQsbGVhZGVyOnRoaXMuYnJlYWsub3ZlcmZsb3dMZWFkZXIsdHJhaWxlcjp0aGlzLmJyZWFrLm92ZXJmbG93VHJhaWxlcn0pO2VbUG9dPXRoaXNbUG9dO3RoaXNbbG9dKGUpO3RoaXMub3ZlcmZsb3cucHVzaChlKX10aGlzW2xsXSh0aGlzLmJyZWFrKTt0aGlzLmJyZWFrPW51bGx9aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTsodGhpcy5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+MXx8dGhpcy5icmVha0FmdGVyLmNoaWxkcmVuLmxlbmd0aD4xKSYmd2FybigiWEZBIC0gU2V2ZXJhbCBicmVha0JlZm9yZSBvciBicmVha0FmdGVyIGluIHN1YmZvcm1zOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTtpZih0aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7Y29uc3QgZT10aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO2lmKGhhbmRsZUJyZWFrKGUpKXJldHVybiBIVE1MUmVzdWx0LmJyZWFrTm9kZShlKX1pZih0aGlzW2pvXT8uYWZ0ZXJCcmVha0FmdGVyKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2ZpeERpbWVuc2lvbnModGhpcyk7Y29uc3QgdD1bXSxhPXtpZDp0aGlzW3lsXSxjbGFzczpbXX07c2V0QWNjZXNzKHRoaXMsYS5jbGFzcyk7dGhpc1tqb118fD1PYmplY3QuY3JlYXRlKG51bGwpO09iamVjdC5hc3NpZ24odGhpc1tqb10se2NoaWxkcmVuOnQsbGluZTpudWxsLGF0dHJpYnV0ZXM6YSxhdHRlbXB0OjAsbnVtYmVySW5MaW5lOjAsYXZhaWxhYmxlU3BhY2U6e3dpZHRoOk1hdGgubWluKHRoaXMud3x8MS8wLGUud2lkdGgpLGhlaWdodDpNYXRoLm1pbih0aGlzLmh8fDEvMCxlLmhlaWdodCl9LHdpZHRoOjAsaGVpZ2h0OjAscHJldkhlaWdodDowLGN1cnJlbnRXaWR0aDowfSk7Y29uc3Qgbj10aGlzW05vXSgpLHM9bltqb10ubm9MYXlvdXRGYWlsdXJlLHI9dGhpc1tWb10oKTtyfHxzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighY2hlY2tEaW1lbnNpb25zKHRoaXMsZSkpcmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRTtjb25zdCBpPW5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImV4Y2xHcm91cCIsImZpZWxkIiwic3ViZm9ybSIsInN1YmZvcm1TZXQiXSk7aWYodGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXtjb25zdCBlPXRoaXNbSG9dKCkuY29sdW1uV2lkdGhzO2lmKEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPjApe3RoaXNbam9dLmNvbHVtbldpZHRocz1lO3RoaXNbam9dLmN1cnJlbnRDb2x1bW49MH19Y29uc3Qgbz10b1N0eWxlKHRoaXMsImFuY2hvclR5cGUiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJwcmVzZW5jZSIsImJvcmRlciIsIm1hcmdpbiIsImhBbGlnbiIpLGw9WyJ4ZmFTdWJmb3JtIl0sZj1sYXlvdXRDbGFzcyh0aGlzKTtmJiZsLnB1c2goZik7YS5zdHlsZT1vO2EuY2xhc3M9bDt0aGlzLm5hbWUmJihhLnhmYU5hbWU9dGhpcy5uYW1lKTtpZih0aGlzLm92ZXJmbG93KXtjb25zdCB0PXRoaXMub3ZlcmZsb3dbRm9dKCk7aWYodC5hZGRMZWFkZXIpe3QuYWRkTGVhZGVyPSExO2hhbmRsZU92ZXJmbG93KHRoaXMsdC5sZWFkZXIsZSl9fXRoaXNbb2xdKCk7Y29uc3QgYz0ibHItdGIiPT09dGhpcy5sYXlvdXR8fCJybC10YiI9PT10aGlzLmxheW91dCxoPWM/MjoxO2Zvcig7dGhpc1tqb10uYXR0ZW1wdDxoO3RoaXNbam9dLmF0dGVtcHQrKyl7YyYmMT09PXRoaXNbam9dLmF0dGVtcHQmJih0aGlzW2pvXS5udW1iZXJJbkxpbmU9MCk7Y29uc3QgZT10aGlzW2ZvXSh7ZmlsdGVyOmksaW5jbHVkZTohMH0pO2lmKGUuc3VjY2VzcylicmVhaztpZihlLmlzQnJlYWsoKSl7dGhpc1tpbF0oKTtyZXR1cm4gZX1pZihjJiYwPT09dGhpc1tqb10uYXR0ZW1wdCYmMD09PXRoaXNbam9dLm51bWJlckluTGluZSYmIW5bam9dLm5vTGF5b3V0RmFpbHVyZSl7dGhpc1tqb10uYXR0ZW1wdD1oO2JyZWFrfX10aGlzW2lsXSgpO3J8fHVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7bltqb10ubm9MYXlvdXRGYWlsdXJlPXM7aWYodGhpc1tqb10uYXR0ZW1wdD09PWgpe3RoaXMub3ZlcmZsb3cmJih0aGlzW05vXSgpW2pvXS5vdmVyZmxvd05vZGU9dGhpcy5vdmVyZmxvdyk7cnx8ZGVsZXRlIHRoaXNbam9dO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9aWYodGhpcy5vdmVyZmxvdyl7Y29uc3QgdD10aGlzLm92ZXJmbG93W0ZvXSgpO2lmKHQuYWRkVHJhaWxlcil7dC5hZGRUcmFpbGVyPSExO2hhbmRsZU92ZXJmbG93KHRoaXMsdC50cmFpbGVyLGUpfX1sZXQgdT0wLG09MDtpZih0aGlzLm1hcmdpbil7dT10aGlzLm1hcmdpbi5sZWZ0SW5zZXQrdGhpcy5tYXJnaW4ucmlnaHRJbnNldDttPXRoaXMubWFyZ2luLnRvcEluc2V0K3RoaXMubWFyZ2luLmJvdHRvbUluc2V0fWNvbnN0IHA9TWF0aC5tYXgodGhpc1tqb10ud2lkdGgrdSx0aGlzLnd8fDApLGQ9TWF0aC5tYXgodGhpc1tqb10uaGVpZ2h0K20sdGhpcy5ofHwwKSxnPVt0aGlzLngsdGhpcy55LHAsZF07IiI9PT10aGlzLncmJihvLndpZHRoPW1lYXN1cmVUb1N0cmluZyhwKSk7IiI9PT10aGlzLmgmJihvLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcoZCkpO2lmKCgiMHB4Ij09PW8ud2lkdGh8fCIwcHgiPT09by5oZWlnaHQpJiYwPT09dC5sZW5ndGgpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7Y29uc3QgYj17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmEsY2hpbGRyZW46dH07YXBwbHlBc3Npc3QodGhpcyxhKTtjb25zdCB3PUhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsYiksZyk7aWYodGhpcy5icmVha0FmdGVyLmNoaWxkcmVuLmxlbmd0aD49MSl7Y29uc3QgZT10aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW5bMF07aWYoaGFuZGxlQnJlYWsoZSkpe3RoaXNbam9dLmFmdGVyQnJlYWtBZnRlcj13O3JldHVybiBIVE1MUmVzdWx0LmJyZWFrTm9kZShlKX19ZGVsZXRlIHRoaXNbam9dO3JldHVybiB3fX1jbGFzcyBTdWJmb3JtU2V0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJzdWJmb3JtU2V0IiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPWdldFN0cmluZ09wdGlvbihlLnJlbGF0aW9uLFsib3JkZXJlZCIsImNob2ljZSIsInVub3JkZXJlZCJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2tlbmQ9bnVsbDt0aGlzLmJyZWFrPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5vdmVyZmxvdz1udWxsO3RoaXMuYnJlYWtBZnRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0JlZm9yZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IFhGQU9iamVjdEFycmF5fSpbQm9dKCl7eWllbGQqZ2V0Q29udGFpbmVkQ2hpbGRyZW4odGhpcyl9W0hvXSgpe2xldCBlPXRoaXNbTW9dKCk7Zm9yKDshKGUgaW5zdGFuY2VvZiBTdWJmb3JtKTspZT1lW01vXSgpO3JldHVybiBlfVtXb10oKXtyZXR1cm4hMH19Y2xhc3MgU3ViamVjdEROIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwic3ViamVjdEROIik7dGhpcy5kZWxpbWl0ZXI9ZS5kZWxpbWl0ZXJ8fCIsIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1ba29dKCl7dGhpc1tnb109bmV3IE1hcCh0aGlzW2dvXS5zcGxpdCh0aGlzLmRlbGltaXRlcikubWFwKGU9PnsoZT1lLnNwbGl0KCI9IiwyKSlbMF09ZVswXS50cmltKCk7cmV0dXJuIGV9KSl9fWNsYXNzIFN1YmplY3RETnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsInN1YmplY3RETnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zdWJqZWN0RE49bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBTdWJtaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsInN1Ym1pdCIsITApO3RoaXMuZW1iZWRQREY9Z2V0SW50ZWdlcih7ZGF0YTplLmVtYmVkUERGLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5mb3JtYXQ9Z2V0U3RyaW5nT3B0aW9uKGUuZm9ybWF0LFsieGRwIiwiZm9ybWRhdGEiLCJwZGYiLCJ1cmxlbmNvZGVkIiwieGZkIiwieG1sIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudGV4dEVuY29kaW5nPWdldEtleXdvcmQoe2RhdGE6ZS50ZXh0RW5jb2Rpbmc/ZS50ZXh0RW5jb2RpbmcudG9Mb3dlckNhc2UoKToiIixkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+WyJ1dGYtOCIsImJpZy1maXZlIiwiZm9udHNwZWNpZmljIiwiZ2JrIiwiZ2ItMTgwMzAiLCJnYi0yMzEyIiwia3NjLTU2MDEiLCJub25lIiwic2hpZnQtamlzIiwidWNzLTIiLCJ1dGYtMTYiXS5pbmNsdWRlcyhlKXx8ZS5tYXRjaCgvaXNvLTg4NTktXGR7Mn0vKX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnhkcENvbnRlbnQ9ZS54ZHBDb250ZW50fHwiIjt0aGlzLmVuY3J5cHQ9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNpZ25EYXRhPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgVGVtcGxhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsInRlbXBsYXRlIiwhMCk7dGhpcy5iYXNlUHJvZmlsZT1nZXRTdHJpbmdPcHRpb24oZS5iYXNlUHJvZmlsZSxbImZ1bGwiLCJpbnRlcmFjdGl2ZUZvcm1zIl0pO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheX1ba29dKCl7MD09PXRoaXMuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGgmJndhcm4oIlhGQSAtIE5vIHN1YmZvcm1zIGluIHRlbXBsYXRlIG5vZGUuIik7dGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MiYmd2FybigiWEZBIC0gU2V2ZXJhbCBzdWJmb3JtcyBpbiB0ZW1wbGF0ZSBub2RlOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTt0aGlzW2RsXT01ZTN9W1ZvXSgpe3JldHVybiEwfVtobF0oZSx0KXtyZXR1cm4gZS5zdGFydHNXaXRoKCIjIik/W3RoaXNbX29dLmdldChlLnNsaWNlKDEpKV06c2VhcmNoTm9kZSh0aGlzLHQsZSwhMCwhMCl9KltibF0oKXtpZighdGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aClyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdfSk7dGhpc1tqb109e292ZXJmbG93Tm9kZTpudWxsLGZpcnN0VW5zcGxpdHRhYmxlOm51bGwsY3VycmVudENvbnRlbnRBcmVhOm51bGwsY3VycmVudFBhZ2VBcmVhOm51bGwsbm9MYXlvdXRGYWlsdXJlOiExLHBhZ2VOdW1iZXI6MSxwYWdlUG9zaXRpb246ImZpcnN0IixvZGRPckV2ZW46Im9kZCIsYmxhbmtPck5vdEJsYW5rOiJub25CbGFuayIscGFyYVN0YWNrOltdfTtjb25zdCBlPXRoaXMuc3ViZm9ybS5jaGlsZHJlblswXTtlLnBhZ2VTZXRbaG9dKCk7Y29uc3QgdD1lLnBhZ2VTZXQucGFnZUFyZWEuY2hpbGRyZW4sYT17bmFtZToiZGl2IixjaGlsZHJlbjpbXX07bGV0IG49bnVsbCxzPW51bGwscj1udWxsO2lmKGUuYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPj0xKXtzPWUuYnJlYWtCZWZvcmUuY2hpbGRyZW5bMF07cj1zLnRhcmdldH1lbHNlIGlmKGUuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTEmJmUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe3M9ZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO3I9cy50YXJnZXR9ZWxzZSBpZihlLmJyZWFrPy5iZWZvcmVUYXJnZXQpe3M9ZS5icmVhaztyPXMuYmVmb3JlVGFyZ2V0fWVsc2UgaWYoZS5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MSYmZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrPy5iZWZvcmVUYXJnZXQpe3M9ZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrO3I9cy5iZWZvcmVUYXJnZXR9aWYocyl7Y29uc3QgZT10aGlzW2hsXShyLHNbTW9dKCkpO2lmKGUgaW5zdGFuY2VvZiBQYWdlQXJlYSl7bj1lO3Nbam9dPXt9fX1ufHw9dFswXTtuW2pvXT17bnVtYmVyT2ZVc2U6MX07Y29uc3QgaT1uW01vXSgpO2lbam9dPXtudW1iZXJPZlVzZToxLHBhZ2VJbmRleDppLnBhZ2VBcmVhLmNoaWxkcmVuLmluZGV4T2YobikscGFnZVNldEluZGV4OjB9O2xldCBvLGw9bnVsbCxmPW51bGwsYz0hMCxoPTAsdT0wO2Zvcig7Oyl7aWYoYyloPTA7ZWxzZXthLmNoaWxkcmVuLnBvcCgpO2lmKDM9PT0rK2gpe3dhcm4oIlhGQSAtIFNvbWV0aGluZyBnb2VzIHdyb25nOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTtyZXR1cm4gYX19bz1udWxsO3RoaXNbam9dLmN1cnJlbnRQYWdlQXJlYT1uO2NvbnN0IHQ9blt3bF0oKS5odG1sO2EuY2hpbGRyZW4ucHVzaCh0KTtpZihsKXt0aGlzW2pvXS5ub0xheW91dEZhaWx1cmU9ITA7dC5jaGlsZHJlbi5wdXNoKGxbd2xdKG5bam9dLnNwYWNlKS5odG1sKTtsPW51bGx9aWYoZil7dGhpc1tqb10ubm9MYXlvdXRGYWlsdXJlPSEwO3QuY2hpbGRyZW4ucHVzaChmW3dsXShuW2pvXS5zcGFjZSkuaHRtbCk7Zj1udWxsfWNvbnN0IHM9bi5jb250ZW50QXJlYS5jaGlsZHJlbixyPXQuY2hpbGRyZW4uZmlsdGVyKGU9PmUuYXR0cmlidXRlcy5jbGFzcy5pbmNsdWRlcygieGZhQ29udGVudGFyZWEiKSk7Yz0hMTt0aGlzW2pvXS5maXJzdFVuc3BsaXR0YWJsZT1udWxsO3RoaXNbam9dLm5vTGF5b3V0RmFpbHVyZT0hMTtjb25zdCBmbHVzaD10PT57Y29uc3QgYT1lW3lvXSgpO2lmKGEpe2N8fD1hLmNoaWxkcmVuPy5sZW5ndGg+MDtyW3RdLmNoaWxkcmVuLnB1c2goYSl9fTtmb3IobGV0IHQ9dSxuPXMubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49dGhpc1tqb10uY3VycmVudENvbnRlbnRBcmVhPXNbdF0saT17d2lkdGg6bi53LGhlaWdodDpuLmh9O3U9MDtpZihsKXtyW3RdLmNoaWxkcmVuLnB1c2gobFt3bF0oaSkuaHRtbCk7bD1udWxsfWlmKGYpe3JbdF0uY2hpbGRyZW4ucHVzaChmW3dsXShpKS5odG1sKTtmPW51bGx9Y29uc3QgaD1lW3dsXShpKTtpZihoLnN1Y2Nlc3Mpe2lmKGguaHRtbCl7Y3x8PWguaHRtbC5jaGlsZHJlbj8ubGVuZ3RoPjA7clt0XS5jaGlsZHJlbi5wdXNoKGguaHRtbCl9ZWxzZSFjJiZhLmNoaWxkcmVuLmxlbmd0aD4xJiZhLmNoaWxkcmVuLnBvcCgpO3JldHVybiBhfWlmKGguaXNCcmVhaygpKXtjb25zdCBlPWguYnJlYWtOb2RlO2ZsdXNoKHQpO2lmKCJhdXRvIj09PWUudGFyZ2V0VHlwZSljb250aW51ZTtpZihlLmxlYWRlcil7bD10aGlzW2hsXShlLmxlYWRlcixlW01vXSgpKTtsPWw/bFswXTpudWxsfWlmKGUudHJhaWxlcil7Zj10aGlzW2hsXShlLnRyYWlsZXIsZVtNb10oKSk7Zj1mP2ZbMF06bnVsbH1pZigicGFnZUFyZWEiPT09ZS50YXJnZXRUeXBlKXtvPWVbam9dLnRhcmdldDt0PTEvMH1lbHNlIGlmKGVbam9dLnRhcmdldCl7bz1lW2pvXS50YXJnZXQ7dT1lW2pvXS5pbmRleCsxO3Q9MS8wfWVsc2UgdD1lW2pvXS5pbmRleDtjb250aW51ZX1pZih0aGlzW2pvXS5vdmVyZmxvd05vZGUpe2NvbnN0IGU9dGhpc1tqb10ub3ZlcmZsb3dOb2RlO3RoaXNbam9dLm92ZXJmbG93Tm9kZT1udWxsO2NvbnN0IGE9ZVtGb10oKSxuPWEudGFyZ2V0O2EuYWRkTGVhZGVyPW51bGwhPT1hLmxlYWRlcjthLmFkZFRyYWlsZXI9bnVsbCE9PWEudHJhaWxlcjtmbHVzaCh0KTtjb25zdCByPXQ7dD0xLzA7aWYobiBpbnN0YW5jZW9mIFBhZ2VBcmVhKW89bjtlbHNlIGlmKG4gaW5zdGFuY2VvZiBDb250ZW50QXJlYSl7Y29uc3QgZT1zLmluZGV4T2Yobik7aWYoLTEhPT1lKWU+cj90PWUtMTp1PWU7ZWxzZXtvPW5bTW9dKCk7dT1vLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2Yobil9fWNvbnRpbnVlfWZsdXNoKHQpfXRoaXNbam9dLnBhZ2VOdW1iZXIrPTE7byYmKG9bSm9dKCk/b1tqb10ubnVtYmVyT2ZVc2UrPTE6bz1udWxsKTtuPW98fG5bRG9dKCk7eWllbGQgbnVsbH19fWNsYXNzIFRleHQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJ0ZXh0Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1heENoYXJzPWdldEludGVnZXIoe2RhdGE6ZS5tYXhDaGFycyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1baW9dKCl7cmV0dXJuITB9W2FsXShlKXtpZihlW1pvXT09PXZsLnhodG1sLmlkKXt0aGlzW2dvXT1lO3JldHVybiEwfXdhcm4oYFhGQSAtIEludmFsaWQgY29udGVudCBpbiBUZXh0OiAke2VbZWxdfS5gKTtyZXR1cm4hMX1bc2xdKGUpe3RoaXNbZ29daW5zdGFuY2VvZiBYRkFPYmplY3R8fHN1cGVyW3NsXShlKX1ba29dKCl7InN0cmluZyI9PXR5cGVvZiB0aGlzW2dvXSYmKHRoaXNbZ29dPXRoaXNbZ29dLnJlcGxhY2VBbGwoIlxyXG4iLCJcbiIpKX1bRm9dKCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0aGlzW2dvXT90aGlzW2dvXS5zcGxpdCgvW1x1MjAyOVx1MjAyOFxuXS8pLmZpbHRlcihCb29sZWFuKS5qb2luKCJcbiIpOnRoaXNbZ29dW2dsXSgpfVt3bF0oZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0aGlzW2dvXSl7Y29uc3QgZT12YWx1ZVRvSHRtbCh0aGlzW2dvXSkuaHRtbDtpZih0aGlzW2dvXS5pbmNsdWRlcygiXHUyMDI5Iikpe2UubmFtZT0iZGl2IjtlLmNoaWxkcmVuPVtdO3RoaXNbZ29dLnNwbGl0KCJcdTIwMjkiKS5tYXAoZT0+ZS5zcGxpdCgvW1x1MjAyOFxuXS8pLmZsYXRNYXAoZT0+W3tuYW1lOiJzcGFuIix2YWx1ZTplfSx7bmFtZToiYnIifV0pKS5mb3JFYWNoKHQ9PntlLmNoaWxkcmVuLnB1c2goe25hbWU6InAiLGNoaWxkcmVuOnR9KX0pfWVsc2UgaWYoL1tcdTIwMjhcbl0vLnRlc3QodGhpc1tnb10pKXtlLm5hbWU9ImRpdiI7ZS5jaGlsZHJlbj1bXTt0aGlzW2dvXS5zcGxpdCgvW1x1MjAyOFxuXS8pLmZvckVhY2godD0+e2UuY2hpbGRyZW4ucHVzaCh7bmFtZToic3BhbiIsdmFsdWU6dH0se25hbWU6ImJyIn0pfSl9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhlKX1yZXR1cm4gdGhpc1tnb11bd2xdKGUpfX1jbGFzcyBUZXh0RWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwidGV4dEVkaXQiLCEwKTt0aGlzLmFsbG93UmljaFRleHQ9Z2V0SW50ZWdlcih7ZGF0YTplLmFsbG93UmljaFRleHQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmhTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubXVsdGlMaW5lPWdldEludGVnZXIoe2RhdGE6ZS5tdWx0aUxpbmUsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PjA9PT1lfHwxPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUudlNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY29tYj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bd2xdKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJib3JkZXIiLCJmb250IiwibWFyZ2luIik7bGV0IGE7Y29uc3Qgbj10aGlzW01vXSgpW01vXSgpOyIiPT09dGhpcy5tdWx0aUxpbmUmJih0aGlzLm11bHRpTGluZT1uIGluc3RhbmNlb2YgRHJhdz8xOjApO2E9MT09PXRoaXMubXVsdGlMaW5lP3tuYW1lOiJ0ZXh0YXJlYSIsYXR0cmlidXRlczp7ZGF0YUlkOm5bYm9dPy5beWxdfHxuW3lsXSxmaWVsZElkOm5beWxdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKG4pLCJhcmlhLXJlcXVpcmVkIjohMX19OntuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZGF0YUlkOm5bYm9dPy5beWxdfHxuW3lsXSxmaWVsZElkOm5beWxdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKG4pLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQobikpe2EuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO2EuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbYV19KX19Y2xhc3MgVGltZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwidGltZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtrb10oKXtjb25zdCBlPXRoaXNbZ29dLnRyaW0oKTt0aGlzW2dvXT1lP25ldyBEYXRlKGUpOm51bGx9W3dsXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tnb10/dGhpc1tnb10udG9TdHJpbmcoKToiIil9fWNsYXNzIFRpbWVTdGFtcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwidGltZVN0YW1wIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnNlcnZlcj1lLnNlcnZlcnx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgVG9vbFRpcCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwidG9vbFRpcCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgVHJhdmVyc2FsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJ0cmF2ZXJzYWwiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMudHJhdmVyc2U9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBUcmF2ZXJzZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwidHJhdmVyc2UiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPWdldFN0cmluZ09wdGlvbihlLm9wZXJhdGlvbixbIm5leHQiLCJiYWNrIiwiZG93biIsImZpcnN0IiwibGVmdCIsInJpZ2h0IiwidXAiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMuc2NyaXB0PW51bGx9Z2V0IG5hbWUoKXtyZXR1cm4gdGhpcy5vcGVyYXRpb259W1lvXSgpe3JldHVybiExfX1jbGFzcyBVaSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwidWkiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMuYmFyY29kZT1udWxsO3RoaXMuYnV0dG9uPW51bGw7dGhpcy5jaGVja0J1dHRvbj1udWxsO3RoaXMuY2hvaWNlTGlzdD1udWxsO3RoaXMuZGF0ZVRpbWVFZGl0PW51bGw7dGhpcy5kZWZhdWx0VWk9bnVsbDt0aGlzLmltYWdlRWRpdD1udWxsO3RoaXMubnVtZXJpY0VkaXQ9bnVsbDt0aGlzLnBhc3N3b3JkRWRpdD1udWxsO3RoaXMuc2lnbmF0dXJlPW51bGw7dGhpcy50ZXh0RWRpdD1udWxsfVtGb10oKXtpZih2b2lkIDA9PT10aGlzW2pvXSl7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJleHRyYXMiPT09ZXx8InBpY3R1cmUiPT09ZSljb250aW51ZTtjb25zdCB0PXRoaXNbZV07aWYodCBpbnN0YW5jZW9mIFhGQU9iamVjdCl7dGhpc1tqb109dDtyZXR1cm4gdH19dGhpc1tqb109bnVsbH1yZXR1cm4gdGhpc1tqb119W3dsXShlKXtjb25zdCB0PXRoaXNbRm9dKCk7cmV0dXJuIHQ/dFt3bF0oZSk6SFRNTFJlc3VsdC5FTVBUWX19Y2xhc3MgVmFsaWRhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobmYsInZhbGlkYXRlIiwhMCk7dGhpcy5mb3JtYXRUZXN0PWdldFN0cmluZ09wdGlvbihlLmZvcm1hdFRlc3QsWyJ3YXJuaW5nIiwiZGlzYWJsZWQiLCJlcnJvciJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubnVsbFRlc3Q9Z2V0U3RyaW5nT3B0aW9uKGUubnVsbFRlc3QsWyJkaXNhYmxlZCIsImVycm9yIiwid2FybmluZyJdKTt0aGlzLnNjcmlwdFRlc3Q9Z2V0U3RyaW5nT3B0aW9uKGUuc2NyaXB0VGVzdCxbImVycm9yIiwiZGlzYWJsZWQiLCJ3YXJuaW5nIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWVzc2FnZT1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMuc2NyaXB0PW51bGx9fWNsYXNzIFZhbHVlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5mLCJ2YWx1ZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVycmlkZT1nZXRJbnRlZ2VyKHtkYXRhOmUub3ZlcnJpZGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmFyYz1udWxsO3RoaXMuYm9vbGVhbj1udWxsO3RoaXMuZGF0ZT1udWxsO3RoaXMuZGF0ZVRpbWU9bnVsbDt0aGlzLmRlY2ltYWw9bnVsbDt0aGlzLmV4RGF0YT1udWxsO3RoaXMuZmxvYXQ9bnVsbDt0aGlzLmltYWdlPW51bGw7dGhpcy5pbnRlZ2VyPW51bGw7dGhpcy5saW5lPW51bGw7dGhpcy5yZWN0YW5nbGU9bnVsbDt0aGlzLnRleHQ9bnVsbDt0aGlzLnRpbWU9bnVsbH1bcGxdKGUpe2NvbnN0IHQ9dGhpc1tNb10oKTtpZih0IGluc3RhbmNlb2YgRmllbGQmJnQudWk/LmltYWdlRWRpdCl7aWYoIXRoaXMuaW1hZ2Upe3RoaXMuaW1hZ2U9bmV3IEltYWdlKHt9KTt0aGlzW2xvXSh0aGlzLmltYWdlKX10aGlzLmltYWdlW2dvXT1lW2dvXTtyZXR1cm59Y29uc3QgYT1lW2VsXTtpZihudWxsPT09dGhpc1thXSl7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IHQ9dGhpc1tlXTtpZih0IGluc3RhbmNlb2YgWEZBT2JqZWN0KXt0aGlzW2VdPW51bGw7dGhpc1tsbF0odCl9fXRoaXNbZVtlbF1dPWU7dGhpc1tsb10oZSl9ZWxzZSB0aGlzW2FdW2dvXT1lW2dvXX1bZ2xdKCl7aWYodGhpcy5leERhdGEpcmV0dXJuInN0cmluZyI9PXR5cGVvZiB0aGlzLmV4RGF0YVtnb10/dGhpcy5leERhdGFbZ29dLnRyaW0oKTp0aGlzLmV4RGF0YVtnb11bZ2xdKCkudHJpbSgpO2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiaW1hZ2UiPT09ZSljb250aW51ZTtjb25zdCB0PXRoaXNbZV07aWYodCBpbnN0YW5jZW9mIFhGQU9iamVjdClyZXR1cm4odFtnb118fCIiKS50b1N0cmluZygpLnRyaW0oKX1yZXR1cm4gbnVsbH1bd2xdKGUpe2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtjb25zdCBhPXRoaXNbdF07aWYoYSBpbnN0YW5jZW9mIFhGQU9iamVjdClyZXR1cm4gYVt3bF0oZSl9cmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIFZhcmlhYmxlcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwidmFyaWFibGVzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tYW5pZmVzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zY3JpcHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheX1bWW9dKCl7cmV0dXJuITB9fWNsYXNzIFRlbXBsYXRlTmFtZXNwYWNle3N0YXRpY1txbF0oZSx0KXtpZihPYmplY3QuaGFzT3duKFRlbXBsYXRlTmFtZXNwYWNlLGUpKXtjb25zdCBhPVRlbXBsYXRlTmFtZXNwYWNlW2VdKHQpO2FbbWxdKHQpO3JldHVybiBhfX1zdGF0aWMgYXBwZWFyYW5jZUZpbHRlcihlKXtyZXR1cm4gbmV3IEFwcGVhcmFuY2VGaWx0ZXIoZSl9c3RhdGljIGFyYyhlKXtyZXR1cm4gbmV3IEFyYyhlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IEFyZWEoZSl9c3RhdGljIGFzc2lzdChlKXtyZXR1cm4gbmV3IEFzc2lzdChlKX1zdGF0aWMgYmFyY29kZShlKXtyZXR1cm4gbmV3IEJhcmNvZGUoZSl9c3RhdGljIGJpbmQoZSl7cmV0dXJuIG5ldyBCaW5kKGUpfXN0YXRpYyBiaW5kSXRlbXMoZSl7cmV0dXJuIG5ldyBCaW5kSXRlbXMoZSl9c3RhdGljIGJvb2tlbmQoZSl7cmV0dXJuIG5ldyBCb29rZW5kKGUpfXN0YXRpYyBib29sZWFuKGUpe3JldHVybiBuZXcgQm9vbGVhbkVsZW1lbnQoZSl9c3RhdGljIGJvcmRlcihlKXtyZXR1cm4gbmV3IEJvcmRlcihlKX1zdGF0aWMgYnJlYWsoZSl7cmV0dXJuIG5ldyBCcmVhayhlKX1zdGF0aWMgYnJlYWtBZnRlcihlKXtyZXR1cm4gbmV3IEJyZWFrQWZ0ZXIoZSl9c3RhdGljIGJyZWFrQmVmb3JlKGUpe3JldHVybiBuZXcgQnJlYWtCZWZvcmUoZSl9c3RhdGljIGJ1dHRvbihlKXtyZXR1cm4gbmV3IEJ1dHRvbihlKX1zdGF0aWMgY2FsY3VsYXRlKGUpe3JldHVybiBuZXcgQ2FsY3VsYXRlKGUpfXN0YXRpYyBjYXB0aW9uKGUpe3JldHVybiBuZXcgQ2FwdGlvbihlKX1zdGF0aWMgY2VydGlmaWNhdGUoZSl7cmV0dXJuIG5ldyBDZXJ0aWZpY2F0ZShlKX1zdGF0aWMgY2VydGlmaWNhdGVzKGUpe3JldHVybiBuZXcgQ2VydGlmaWNhdGVzKGUpfXN0YXRpYyBjaGVja0J1dHRvbihlKXtyZXR1cm4gbmV3IENoZWNrQnV0dG9uKGUpfXN0YXRpYyBjaG9pY2VMaXN0KGUpe3JldHVybiBuZXcgQ2hvaWNlTGlzdChlKX1zdGF0aWMgY29sb3IoZSl7cmV0dXJuIG5ldyBDb2xvcihlKX1zdGF0aWMgY29tYihlKXtyZXR1cm4gbmV3IENvbWIoZSl9c3RhdGljIGNvbm5lY3QoZSl7cmV0dXJuIG5ldyBDb25uZWN0KGUpfXN0YXRpYyBjb250ZW50QXJlYShlKXtyZXR1cm4gbmV3IENvbnRlbnRBcmVhKGUpfXN0YXRpYyBjb3JuZXIoZSl7cmV0dXJuIG5ldyBDb3JuZXIoZSl9c3RhdGljIGRhdGUoZSl7cmV0dXJuIG5ldyBEYXRlRWxlbWVudChlKX1zdGF0aWMgZGF0ZVRpbWUoZSl7cmV0dXJuIG5ldyBEYXRlVGltZShlKX1zdGF0aWMgZGF0ZVRpbWVFZGl0KGUpe3JldHVybiBuZXcgRGF0ZVRpbWVFZGl0KGUpfXN0YXRpYyBkZWNpbWFsKGUpe3JldHVybiBuZXcgRGVjaW1hbChlKX1zdGF0aWMgZGVmYXVsdFVpKGUpe3JldHVybiBuZXcgRGVmYXVsdFVpKGUpfXN0YXRpYyBkZXNjKGUpe3JldHVybiBuZXcgRGVzYyhlKX1zdGF0aWMgZGlnZXN0TWV0aG9kKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kKGUpfXN0YXRpYyBkaWdlc3RNZXRob2RzKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kcyhlKX1zdGF0aWMgZHJhdyhlKXtyZXR1cm4gbmV3IERyYXcoZSl9c3RhdGljIGVkZ2UoZSl7cmV0dXJuIG5ldyBFZGdlKGUpfXN0YXRpYyBlbmNvZGluZyhlKXtyZXR1cm4gbmV3IEVuY29kaW5nKGUpfXN0YXRpYyBlbmNvZGluZ3MoZSl7cmV0dXJuIG5ldyBFbmNvZGluZ3MoZSl9c3RhdGljIGVuY3J5cHQoZSl7cmV0dXJuIG5ldyBFbmNyeXB0KGUpfXN0YXRpYyBlbmNyeXB0RGF0YShlKXtyZXR1cm4gbmV3IEVuY3J5cHREYXRhKGUpfXN0YXRpYyBlbmNyeXB0aW9uKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbihlKX1zdGF0aWMgZW5jcnlwdGlvbk1ldGhvZChlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb25NZXRob2QoZSl9c3RhdGljIGVuY3J5cHRpb25NZXRob2RzKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbk1ldGhvZHMoZSl9c3RhdGljIGV2ZW50KGUpe3JldHVybiBuZXcgRXZlbnQoZSl9c3RhdGljIGV4RGF0YShlKXtyZXR1cm4gbmV3IEV4RGF0YShlKX1zdGF0aWMgZXhPYmplY3QoZSl7cmV0dXJuIG5ldyBFeE9iamVjdChlKX1zdGF0aWMgZXhjbEdyb3VwKGUpe3JldHVybiBuZXcgRXhjbEdyb3VwKGUpfXN0YXRpYyBleGVjdXRlKGUpe3JldHVybiBuZXcgRXhlY3V0ZShlKX1zdGF0aWMgZXh0cmFzKGUpe3JldHVybiBuZXcgRXh0cmFzKGUpfXN0YXRpYyBmaWVsZChlKXtyZXR1cm4gbmV3IEZpZWxkKGUpfXN0YXRpYyBmaWxsKGUpe3JldHVybiBuZXcgRmlsbChlKX1zdGF0aWMgZmlsdGVyKGUpe3JldHVybiBuZXcgRmlsdGVyKGUpfXN0YXRpYyBmbG9hdChlKXtyZXR1cm4gbmV3IEZsb2F0KGUpfXN0YXRpYyBmb250KGUpe3JldHVybiBuZXcgdGVtcGxhdGVfRm9udChlKX1zdGF0aWMgZm9ybWF0KGUpe3JldHVybiBuZXcgRm9ybWF0KGUpfXN0YXRpYyBoYW5kbGVyKGUpe3JldHVybiBuZXcgSGFuZGxlcihlKX1zdGF0aWMgaHlwaGVuYXRpb24oZSl7cmV0dXJuIG5ldyBIeXBoZW5hdGlvbihlKX1zdGF0aWMgaW1hZ2UoZSl7cmV0dXJuIG5ldyBJbWFnZShlKX1zdGF0aWMgaW1hZ2VFZGl0KGUpe3JldHVybiBuZXcgSW1hZ2VFZGl0KGUpfXN0YXRpYyBpbnRlZ2VyKGUpe3JldHVybiBuZXcgSW50ZWdlcihlKX1zdGF0aWMgaXNzdWVycyhlKXtyZXR1cm4gbmV3IElzc3VlcnMoZSl9c3RhdGljIGl0ZW1zKGUpe3JldHVybiBuZXcgSXRlbXMoZSl9c3RhdGljIGtlZXAoZSl7cmV0dXJuIG5ldyBLZWVwKGUpfXN0YXRpYyBrZXlVc2FnZShlKXtyZXR1cm4gbmV3IEtleVVzYWdlKGUpfXN0YXRpYyBsaW5lKGUpe3JldHVybiBuZXcgTGluZShlKX1zdGF0aWMgbGluZWFyKGUpe3JldHVybiBuZXcgTGluZWFyKGUpfXN0YXRpYyBsb2NrRG9jdW1lbnQoZSl7cmV0dXJuIG5ldyBMb2NrRG9jdW1lbnQoZSl9c3RhdGljIG1hbmlmZXN0KGUpe3JldHVybiBuZXcgTWFuaWZlc3QoZSl9c3RhdGljIG1hcmdpbihlKXtyZXR1cm4gbmV3IE1hcmdpbihlKX1zdGF0aWMgbWRwKGUpe3JldHVybiBuZXcgTWRwKGUpfXN0YXRpYyBtZWRpdW0oZSl7cmV0dXJuIG5ldyBNZWRpdW0oZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyBNZXNzYWdlKGUpfXN0YXRpYyBudW1lcmljRWRpdChlKXtyZXR1cm4gbmV3IE51bWVyaWNFZGl0KGUpfXN0YXRpYyBvY2N1cihlKXtyZXR1cm4gbmV3IE9jY3VyKGUpfXN0YXRpYyBvaWQoZSl7cmV0dXJuIG5ldyBPaWQoZSl9c3RhdGljIG9pZHMoZSl7cmV0dXJuIG5ldyBPaWRzKGUpfXN0YXRpYyBvdmVyZmxvdyhlKXtyZXR1cm4gbmV3IE92ZXJmbG93KGUpfXN0YXRpYyBwYWdlQXJlYShlKXtyZXR1cm4gbmV3IFBhZ2VBcmVhKGUpfXN0YXRpYyBwYWdlU2V0KGUpe3JldHVybiBuZXcgUGFnZVNldChlKX1zdGF0aWMgcGFyYShlKXtyZXR1cm4gbmV3IFBhcmEoZSl9c3RhdGljIHBhc3N3b3JkRWRpdChlKXtyZXR1cm4gbmV3IFBhc3N3b3JkRWRpdChlKX1zdGF0aWMgcGF0dGVybihlKXtyZXR1cm4gbmV3IHRlbXBsYXRlX1BhdHRlcm4oZSl9c3RhdGljIHBpY3R1cmUoZSl7cmV0dXJuIG5ldyBQaWN0dXJlKGUpfXN0YXRpYyBwcm90byhlKXtyZXR1cm4gbmV3IFByb3RvKGUpfXN0YXRpYyByYWRpYWwoZSl7cmV0dXJuIG5ldyBSYWRpYWwoZSl9c3RhdGljIHJlYXNvbihlKXtyZXR1cm4gbmV3IFJlYXNvbihlKX1zdGF0aWMgcmVhc29ucyhlKXtyZXR1cm4gbmV3IFJlYXNvbnMoZSl9c3RhdGljIHJlY3RhbmdsZShlKXtyZXR1cm4gbmV3IFJlY3RhbmdsZShlKX1zdGF0aWMgcmVmKGUpe3JldHVybiBuZXcgUmVmRWxlbWVudChlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgU2NyaXB0KGUpfXN0YXRpYyBzZXRQcm9wZXJ0eShlKXtyZXR1cm4gbmV3IFNldFByb3BlcnR5KGUpfXN0YXRpYyBzaWduRGF0YShlKXtyZXR1cm4gbmV3IFNpZ25EYXRhKGUpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBTaWduYXR1cmUoZSl9c3RhdGljIHNpZ25pbmcoZSl7cmV0dXJuIG5ldyBTaWduaW5nKGUpfXN0YXRpYyBzb2xpZChlKXtyZXR1cm4gbmV3IFNvbGlkKGUpfXN0YXRpYyBzcGVhayhlKXtyZXR1cm4gbmV3IFNwZWFrKGUpfXN0YXRpYyBzdGlwcGxlKGUpe3JldHVybiBuZXcgU3RpcHBsZShlKX1zdGF0aWMgc3ViZm9ybShlKXtyZXR1cm4gbmV3IFN1YmZvcm0oZSl9c3RhdGljIHN1YmZvcm1TZXQoZSl7cmV0dXJuIG5ldyBTdWJmb3JtU2V0KGUpfXN0YXRpYyBzdWJqZWN0RE4oZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE4oZSl9c3RhdGljIHN1YmplY3RETnMoZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE5zKGUpfXN0YXRpYyBzdWJtaXQoZSl7cmV0dXJuIG5ldyBTdWJtaXQoZSl9c3RhdGljIHRlbXBsYXRlKGUpe3JldHVybiBuZXcgVGVtcGxhdGUoZSl9c3RhdGljIHRleHQoZSl7cmV0dXJuIG5ldyBUZXh0KGUpfXN0YXRpYyB0ZXh0RWRpdChlKXtyZXR1cm4gbmV3IFRleHRFZGl0KGUpfXN0YXRpYyB0aW1lKGUpe3JldHVybiBuZXcgVGltZShlKX1zdGF0aWMgdGltZVN0YW1wKGUpe3JldHVybiBuZXcgVGltZVN0YW1wKGUpfXN0YXRpYyB0b29sVGlwKGUpe3JldHVybiBuZXcgVG9vbFRpcChlKX1zdGF0aWMgdHJhdmVyc2FsKGUpe3JldHVybiBuZXcgVHJhdmVyc2FsKGUpfXN0YXRpYyB0cmF2ZXJzZShlKXtyZXR1cm4gbmV3IFRyYXZlcnNlKGUpfXN0YXRpYyB1aShlKXtyZXR1cm4gbmV3IFVpKGUpfXN0YXRpYyB2YWxpZGF0ZShlKXtyZXR1cm4gbmV3IFZhbGlkYXRlKGUpfXN0YXRpYyB2YWx1ZShlKXtyZXR1cm4gbmV3IFZhbHVlKGUpfXN0YXRpYyB2YXJpYWJsZXMoZSl7cmV0dXJuIG5ldyBWYXJpYWJsZXMoZSl9fWNvbnN0IGxmPXZsLmRhdGFzZXRzLmlkO2Z1bmN0aW9uIGNyZWF0ZVRleHQoZSl7Y29uc3QgdD1uZXcgVGV4dCh7fSk7dFtnb109ZTtyZXR1cm4gdH1jbGFzcyBCaW5kZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5yb290PWU7dGhpcy5kYXRhc2V0cz1lLmRhdGFzZXRzO3RoaXMuZGF0YT1lLmRhdGFzZXRzPy5kYXRhfHxuZXcgWG1sT2JqZWN0KGxmLCJkYXRhIik7dGhpcy5lbXB0eU1lcmdlPTA9PT10aGlzLmRhdGFbT29dKCkubGVuZ3RoO3RoaXMucm9vdC5mb3JtPXRoaXMuZm9ybT1lLnRlbXBsYXRlW21vXSgpfV9pc0NvbnN1bWVEYXRhKCl7cmV0dXJuIXRoaXMuZW1wdHlNZXJnZSYmdGhpcy5fbWVyZ2VNb2RlfV9pc01hdGNoVGVtcGxhdGUoKXtyZXR1cm4hdGhpcy5faXNDb25zdW1lRGF0YSgpfWJpbmQoKXt0aGlzLl9iaW5kRWxlbWVudCh0aGlzLmZvcm0sdGhpcy5kYXRhKTtyZXR1cm4gdGhpcy5mb3JtfWdldERhdGEoKXtyZXR1cm4gdGhpcy5kYXRhfV9iaW5kVmFsdWUoZSx0LGEpe2VbYm9dPXQ7aWYoZVtFb10oKSlpZih0W1hvXSgpKXtjb25zdCBhPXRbSW9dKCk7ZVtwbF0oY3JlYXRlVGV4dChhKSl9ZWxzZSBpZihlIGluc3RhbmNlb2YgRmllbGQmJiJtdWx0aVNlbGVjdCI9PT1lLnVpPy5jaG9pY2VMaXN0Py5vcGVuKXtjb25zdCBhPXRbT29dKCkubWFwKGU9PmVbZ29dLnRyaW0oKSkuam9pbigiXG4iKTtlW3BsXShjcmVhdGVUZXh0KGEpKX1lbHNlIHRoaXMuX2lzQ29uc3VtZURhdGEoKSYmd2FybigiWEZBIC0gTm9kZXMgaGF2ZW4ndCB0aGUgc2FtZSB0eXBlLiIpO2Vsc2UhdFtYb10oKXx8dGhpcy5faXNNYXRjaFRlbXBsYXRlKCk/dGhpcy5fYmluZEVsZW1lbnQoZSx0KTp3YXJuKCJYRkEgLSBOb2RlcyBoYXZlbid0IHRoZSBzYW1lIHR5cGUuIil9X2ZpbmREYXRhQnlOYW1lVG9Db25zdW1lKGUsdCxhLG4pe2lmKCFlKXJldHVybiBudWxsO2xldCBzLHI7Zm9yKGxldCBuPTA7bjwzO24rKyl7cz1hW1JvXShlLCExLCEwKTtmb3IoOzspe3I9cy5uZXh0KCkudmFsdWU7aWYoIXIpYnJlYWs7aWYodD09PXJbWG9dKCkpcmV0dXJuIHJ9aWYoYVtab109PT1sZiYmImRhdGEiPT09YVtlbF0pYnJlYWs7YT1hW01vXSgpfWlmKCFuKXJldHVybiBudWxsO3M9dGhpcy5kYXRhW1JvXShlLCEwLCExKTtyPXMubmV4dCgpLnZhbHVlO2lmKHIpcmV0dXJuIHI7cz10aGlzLmRhdGFbcW9dKGUsITApO3I9cy5uZXh0KCkudmFsdWU7cmV0dXJuIHI/LltYb10oKT9yOm51bGx9X3NldFByb3BlcnRpZXMoZSx0KXtpZihPYmplY3QuaGFzT3duKGUsInNldFByb3BlcnR5IikpZm9yKGNvbnN0e3JlZjphLHRhcmdldDpuLGNvbm5lY3Rpb246c31vZiBlLnNldFByb3BlcnR5LmNoaWxkcmVuKXtpZihzKWNvbnRpbnVlO2lmKCFhKWNvbnRpbnVlO2NvbnN0IHI9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxhLCExLCExKTtpZighcil7d2FybihgWEZBIC0gSW52YWxpZCByZWZlcmVuY2U6ICR7YX0uYCk7Y29udGludWV9Y29uc3RbaV09cjtpZighaVtLb10odGhpcy5kYXRhKSl7d2FybigiWEZBIC0gSW52YWxpZCBub2RlOiBtdXN0IGJlIGEgZGF0YSBub2RlLiIpO2NvbnRpbnVlfWNvbnN0IG89c2VhcmNoTm9kZSh0aGlzLnJvb3QsZSxuLCExLCExKTtpZighbyl7d2FybihgWEZBIC0gSW52YWxpZCB0YXJnZXQ6ICR7bn0uYCk7Y29udGludWV9Y29uc3RbbF09bztpZighbFtLb10oZSkpe3dhcm4oIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBtdXN0IGJlIGEgcHJvcGVydHkgb3Igc3VicHJvcGVydHkuIik7Y29udGludWV9Y29uc3QgZj1sW01vXSgpO2lmKGwgaW5zdGFuY2VvZiBTZXRQcm9wZXJ0eXx8ZiBpbnN0YW5jZW9mIFNldFByb3BlcnR5KXt3YXJuKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogY2Fubm90IGJlIGEgc2V0UHJvcGVydHkgb3Igb25lIG9mIGl0cyBwcm9wZXJ0aWVzLiIpO2NvbnRpbnVlfWlmKGwgaW5zdGFuY2VvZiBCaW5kSXRlbXN8fGYgaW5zdGFuY2VvZiBCaW5kSXRlbXMpe3dhcm4oIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBjYW5ub3QgYmUgYSBiaW5kSXRlbXMgb3Igb25lIG9mIGl0cyBwcm9wZXJ0aWVzLiIpO2NvbnRpbnVlfWNvbnN0IGM9aVtnbF0oKSxoPWxbZWxdO2lmKGwgaW5zdGFuY2VvZiBYRkFBdHRyaWJ1dGUpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtlW2hdPWM7Y29uc3QgdD1SZWZsZWN0LmNvbnN0cnVjdChPYmplY3QuZ2V0UHJvdG90eXBlT2YoZikuY29uc3RydWN0b3IsW2VdKTtmW2hdPXRbaF07Y29udGludWV9aWYoT2JqZWN0Lmhhc093bihsLGdvKSl7bFtib109aTtsW2dvXT1jO2xba29dKCl9ZWxzZSB3YXJuKCJYRkEgLSBJbnZhbGlkIG5vZGUgdG8gdXNlIGluIHNldFByb3BlcnR5Iil9fV9iaW5kSXRlbXMoZSx0KXtpZighT2JqZWN0Lmhhc093bihlLCJpdGVtcyIpfHwhT2JqZWN0Lmhhc093bihlLCJiaW5kSXRlbXMiKXx8ZS5iaW5kSXRlbXMuaXNFbXB0eSgpKXJldHVybjtmb3IoY29uc3QgdCBvZiBlLml0ZW1zLmNoaWxkcmVuKWVbbGxdKHQpO2UuaXRlbXMuY2xlYXIoKTtjb25zdCBhPW5ldyBJdGVtcyh7fSksbj1uZXcgSXRlbXMoe30pO2VbbG9dKGEpO2UuaXRlbXMucHVzaChhKTtlW2xvXShuKTtlLml0ZW1zLnB1c2gobik7Zm9yKGNvbnN0e3JlZjpzLGxhYmVsUmVmOnIsdmFsdWVSZWY6aSxjb25uZWN0aW9uOm99b2YgZS5iaW5kSXRlbXMuY2hpbGRyZW4pe2lmKG8pY29udGludWU7aWYoIXMpY29udGludWU7Y29uc3QgZT1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LHMsITEsITEpO2lmKGUpZm9yKGNvbnN0IHQgb2YgZSl7aWYoIXRbS29dKHRoaXMuZGF0YXNldHMpKXt3YXJuKGBYRkEgLSBJbnZhbGlkIHJlZiAoJHtzfSk6IG11c3QgYmUgYSBkYXRhc2V0cyBjaGlsZC5gKTtjb250aW51ZX1jb25zdCBlPXNlYXJjaE5vZGUodGhpcy5yb290LHQsciwhMCwhMSk7aWYoIWUpe3dhcm4oYFhGQSAtIEludmFsaWQgbGFiZWw6ICR7cn0uYCk7Y29udGludWV9Y29uc3Rbb109ZTtpZighb1tLb10odGhpcy5kYXRhc2V0cykpe3dhcm4oIlhGQSAtIEludmFsaWQgbGFiZWw6IG11c3QgYmUgYSBkYXRhc2V0cyBjaGlsZC4iKTtjb250aW51ZX1jb25zdCBsPXNlYXJjaE5vZGUodGhpcy5yb290LHQsaSwhMCwhMSk7aWYoIWwpe3dhcm4oYFhGQSAtIEludmFsaWQgdmFsdWU6ICR7aX0uYCk7Y29udGludWV9Y29uc3RbZl09bDtpZighZltLb10odGhpcy5kYXRhc2V0cykpe3dhcm4oIlhGQSAtIEludmFsaWQgdmFsdWU6IG11c3QgYmUgYSBkYXRhc2V0cyBjaGlsZC4iKTtjb250aW51ZX1jb25zdCBjPWNyZWF0ZVRleHQob1tnbF0oKSksaD1jcmVhdGVUZXh0KGZbZ2xdKCkpO2FbbG9dKGMpO2EudGV4dC5wdXNoKGMpO25bbG9dKGgpO24udGV4dC5wdXNoKGgpfWVsc2Ugd2FybihgWEZBIC0gSW52YWxpZCByZWZlcmVuY2U6ICR7c30uYCl9fV9iaW5kT2NjdXJyZW5jZXMoZSx0LGEpe2xldCBuO2lmKHQubGVuZ3RoPjEpe249ZVttb10oKTtuW2xsXShuLm9jY3VyKTtuLm9jY3VyPW51bGx9dGhpcy5fYmluZFZhbHVlKGUsdFswXSxhKTt0aGlzLl9zZXRQcm9wZXJ0aWVzKGUsdFswXSk7dGhpcy5fYmluZEl0ZW1zKGUsdFswXSk7aWYoMT09PXQubGVuZ3RoKXJldHVybjtjb25zdCBzPWVbTW9dKCkscj1lW2VsXSxpPXNbem9dKGUpO2ZvcihsZXQgZT0xLG89dC5sZW5ndGg7ZTxvO2UrKyl7Y29uc3Qgbz10W2VdLGw9blttb10oKTtzW3JdLnB1c2gobCk7c1tMb10oaStlLGwpO3RoaXMuX2JpbmRWYWx1ZShsLG8sYSk7dGhpcy5fc2V0UHJvcGVydGllcyhsLG8pO3RoaXMuX2JpbmRJdGVtcyhsLG8pfX1fY3JlYXRlT2NjdXJyZW5jZXMoZSl7aWYoIXRoaXMuZW1wdHlNZXJnZSlyZXR1cm47Y29uc3R7b2NjdXI6dH09ZTtpZighdHx8dC5pbml0aWFsPD0xKXJldHVybjtjb25zdCBhPWVbTW9dKCksbj1lW2VsXTtpZighKGFbbl1pbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KSlyZXR1cm47bGV0IHM7cz1lLm5hbWU/YVtuXS5jaGlsZHJlbi5maWx0ZXIodD0+dC5uYW1lPT09ZS5uYW1lKS5sZW5ndGg6YVtuXS5jaGlsZHJlbi5sZW5ndGg7Y29uc3Qgcj1hW3pvXShlKSsxLGk9dC5pbml0aWFsLXM7aWYoaSl7Y29uc3QgdD1lW21vXSgpO3RbbGxdKHQub2NjdXIpO3Qub2NjdXI9bnVsbDthW25dLnB1c2godCk7YVtMb10ocix0KTtmb3IobGV0IGU9MTtlPGk7ZSsrKXtjb25zdCBzPXRbbW9dKCk7YVtuXS5wdXNoKHMpO2FbTG9dKHIrZSxzKX19fV9nZXRPY2N1ckluZm8oZSl7Y29uc3R7bmFtZTp0LG9jY3VyOmF9PWU7aWYoIWF8fCF0KXJldHVyblsxLDFdO2NvbnN0IG49LTE9PT1hLm1heD8xLzA6YS5tYXg7cmV0dXJuW2EubWluLG5dfV9zZXRBbmRCaW5kKGUsdCl7dGhpcy5fc2V0UHJvcGVydGllcyhlLHQpO3RoaXMuX2JpbmRJdGVtcyhlLHQpO3RoaXMuX2JpbmRFbGVtZW50KGUsdCl9X2JpbmRFbGVtZW50KGUsdCl7Y29uc3QgYT1bXTt0aGlzLl9jcmVhdGVPY2N1cnJlbmNlcyhlKTtmb3IoY29uc3QgbiBvZiBlW09vXSgpKXtpZihuW2JvXSljb250aW51ZTtpZih2b2lkIDA9PT10aGlzLl9tZXJnZU1vZGUmJiJzdWJmb3JtIj09PW5bZWxdKXt0aGlzLl9tZXJnZU1vZGU9ImNvbnN1bWVEYXRhIj09PW4ubWVyZ2VNb2RlO2NvbnN0IGU9dFtPb10oKTtpZihlLmxlbmd0aD4wKXRoaXMuX2JpbmRPY2N1cnJlbmNlcyhuLFtlWzBdXSxudWxsKTtlbHNlIGlmKHRoaXMuZW1wdHlNZXJnZSl7Y29uc3QgZT10W1pvXT09PWxmPy0xOnRbWm9dLGE9bltib109bmV3IFhtbE9iamVjdChlLG4ubmFtZXx8InJvb3QiKTt0W2xvXShhKTt0aGlzLl9iaW5kRWxlbWVudChuLGEpfWNvbnRpbnVlfWlmKCFuW1dvXSgpKWNvbnRpbnVlO2xldCBlPSExLHM9bnVsbCxyPW51bGwsaT1udWxsO2lmKG4uYmluZCl7c3dpdGNoKG4uYmluZC5tYXRjaCl7Y2FzZSJub25lIjp0aGlzLl9zZXRBbmRCaW5kKG4sdCk7Y29udGludWU7Y2FzZSJnbG9iYWwiOmU9ITA7YnJlYWs7Y2FzZSJkYXRhUmVmIjppZighbi5iaW5kLnJlZil7d2FybihgWEZBIC0gcmVmIGlzIGVtcHR5IGluIG5vZGUgJHtuW2VsXX0uYCk7dGhpcy5fc2V0QW5kQmluZChuLHQpO2NvbnRpbnVlfXI9bi5iaW5kLnJlZn1uLmJpbmQucGljdHVyZSYmKHM9bi5iaW5kLnBpY3R1cmVbZ29dKX1jb25zdFtvLGxdPXRoaXMuX2dldE9jY3VySW5mbyhuKTtpZihyKXtpPXNlYXJjaE5vZGUodGhpcy5yb290LHQsciwhMCwhMSk7aWYobnVsbD09PWkpe2k9Y3JlYXRlRGF0YU5vZGUodGhpcy5kYXRhLHQscik7aWYoIWkpY29udGludWU7dGhpcy5faXNDb25zdW1lRGF0YSgpJiYoaVtwb109ITApO3RoaXMuX3NldEFuZEJpbmQobixpKTtjb250aW51ZX10aGlzLl9pc0NvbnN1bWVEYXRhKCkmJihpPWkuZmlsdGVyKGU9PiFlW3BvXSkpO2kubGVuZ3RoPmw/aT1pLnNsaWNlKDAsbCk6MD09PWkubGVuZ3RoJiYoaT1udWxsKTtpJiZ0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJmkuZm9yRWFjaChlPT57ZVtwb109ITB9KX1lbHNle2lmKCFuLm5hbWUpe3RoaXMuX3NldEFuZEJpbmQobix0KTtjb250aW51ZX1pZih0aGlzLl9pc0NvbnN1bWVEYXRhKCkpe2NvbnN0IGE9W107Zm9yKDthLmxlbmd0aDxsOyl7Y29uc3Qgcz10aGlzLl9maW5kRGF0YUJ5TmFtZVRvQ29uc3VtZShuLm5hbWUsbltFb10oKSx0LGUpO2lmKCFzKWJyZWFrO3NbcG9dPSEwO2EucHVzaChzKX1pPWEubGVuZ3RoPjA/YTpudWxsfWVsc2V7aT10W1JvXShuLm5hbWUsITEsdGhpcy5lbXB0eU1lcmdlKS5uZXh0KCkudmFsdWU7aWYoIWkpe2lmKDA9PT1vKXthLnB1c2gobik7Y29udGludWV9Y29uc3QgZT10W1pvXT09PWxmPy0xOnRbWm9dO2k9bltib109bmV3IFhtbE9iamVjdChlLG4ubmFtZSk7dGhpcy5lbXB0eU1lcmdlJiYoaVtwb109ITApO3RbbG9dKGkpO3RoaXMuX3NldEFuZEJpbmQobixpKTtjb250aW51ZX10aGlzLmVtcHR5TWVyZ2UmJihpW3BvXT0hMCk7aT1baV19fWk/dGhpcy5fYmluZE9jY3VycmVuY2VzKG4saSxzKTpvPjA/dGhpcy5fc2V0QW5kQmluZChuLHQpOmEucHVzaChuKX1hLmZvckVhY2goZT0+ZVtNb10oKVtsbF0oZSkpfX1jbGFzcyBEYXRhSGFuZGxlcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZGF0YT10O3RoaXMuZGF0YXNldD1lLmRhdGFzZXRzfHxudWxsfXNlcmlhbGl6ZShlKXtjb25zdCB0PVtbLTEsdGhpcy5kYXRhW09vXSgpXV07Zm9yKDt0Lmxlbmd0aD4wOyl7Y29uc3QgYT10LmF0KC0xKSxbbixzXT1hO2lmKG4rMT09PXMubGVuZ3RoKXt0LnBvcCgpO2NvbnRpbnVlfWNvbnN0IHI9c1srK2FbMF1dLGk9ZS5nZXQoclt5bF0pO2lmKGkpcltwbF0oaSk7ZWxzZXtjb25zdCB0PXJbdm9dKCk7Zm9yKGNvbnN0IGEgb2YgdC52YWx1ZXMoKSl7Y29uc3QgdD1lLmdldChhW3lsXSk7aWYodCl7YVtwbF0odCk7YnJlYWt9fX1jb25zdCBvPXJbT29dKCk7by5sZW5ndGg+MCYmdC5wdXNoKFstMSxvXSl9Y29uc3QgYT1bJzx4ZmE6ZGF0YXNldHMgeG1sbnM6eGZhPSJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLzEuMC8iPiddO2lmKHRoaXMuZGF0YXNldClmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGFzZXRbT29dKCkpImRhdGEiIT09ZVtlbF0mJmVbamxdKGEpO3RoaXMuZGF0YVtqbF0oYSk7YS5wdXNoKCI8L3hmYTpkYXRhc2V0cz4iKTtyZXR1cm4gYS5qb2luKCIiKX19Y29uc3QgZmY9dmwuY29uZmlnLmlkO2NsYXNzIEFjcm9iYXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImFjcm9iYXQiLCEwKTt0aGlzLmFjcm9iYXQ3PW51bGw7dGhpcy5hdXRvU2F2ZT1udWxsO3RoaXMuY29tbW9uPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXM9bnVsbDt0aGlzLnN1Ym1pdFVybD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEFjcm9iYXQ3IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJhY3JvYmF0NyIsITApO3RoaXMuZHluYW1pY1JlbmRlcj1udWxsfX1jbGFzcyBBREJFX0pTQ29uc29sZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiQURCRV9KU0NvbnNvbGUiLFsiZGVsZWdhdGUiLCJFbmFibGUiLCJEaXNhYmxlIl0pfX1jbGFzcyBBREJFX0pTRGVidWdnZXIgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsIkFEQkVfSlNEZWJ1Z2dlciIsWyJkZWxlZ2F0ZSIsIkVuYWJsZSIsIkRpc2FibGUiXSl9fWNsYXNzIEFkZFNpbGVudFByaW50IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImFkZFNpbGVudFByaW50Iil9fWNsYXNzIEFkZFZpZXdlclByZWZlcmVuY2VzIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImFkZFZpZXdlclByZWZlcmVuY2VzIil9fWNsYXNzIEFkanVzdERhdGEgZXh0ZW5kcyBPcHRpb24xMHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiYWRqdXN0RGF0YSIpfX1jbGFzcyBBZG9iZUV4dGVuc2lvbkxldmVsIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiYWRvYmVFeHRlbnNpb25MZXZlbCIsMCxlPT5lPj0xJiZlPD04KX19Y2xhc3MgQWdlbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImFnZW50IiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuY29tbW9uPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgQWx3YXlzRW1iZWQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJhbHdheXNFbWJlZCIpfX1jbGFzcyBBbWQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImFtZCIpfX1jbGFzcyBjb25maWdfQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiYXJlYSIpO3RoaXMubGV2ZWw9Z2V0SW50ZWdlcih7ZGF0YTplLmxldmVsLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTEmJmU8PTN9KTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbIiIsImJhcmNvZGUiLCJjb3JlaW5pdCIsImRldmljZURyaXZlciIsImZvbnQiLCJnZW5lcmFsIiwibGF5b3V0IiwibWVyZ2UiLCJzY3JpcHQiLCJzaWduYXR1cmUiLCJzb3VyY2VTZXQiLCJ0ZW1wbGF0ZUNhY2hlIl0pfX1jbGFzcyBBdHRyaWJ1dGVzIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJhdHRyaWJ1dGVzIixbInByZXNlcnZlIiwiZGVsZWdhdGUiLCJpZ25vcmUiXSl9fWNsYXNzIEF1dG9TYXZlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJhdXRvU2F2ZSIsWyJkaXNhYmxlZCIsImVuYWJsZWQiXSl9fWNsYXNzIEJhc2UgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImJhc2UiKX19Y2xhc3MgQmF0Y2hPdXRwdXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImJhdGNoT3V0cHV0Iik7dGhpcy5mb3JtYXQ9Z2V0U3RyaW5nT3B0aW9uKGUuZm9ybWF0LFsibm9uZSIsImNvbmNhdCIsInppcCIsInppcENvbXByZXNzIl0pfX1jbGFzcyBCZWhhdmlvck92ZXJyaWRlIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiYmVoYXZpb3JPdmVycmlkZSIpfVtrb10oKXt0aGlzW2dvXT1uZXcgTWFwKHRoaXNbZ29dLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKGU9PmUuaW5jbHVkZXMoIjoiKSkubWFwKGU9PmUuc3BsaXQoIjoiLDIpKSl9fWNsYXNzIENhY2hlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJjYWNoZSIsITApO3RoaXMudGVtcGxhdGVDYWNoZT1udWxsfX1jbGFzcyBDaGFuZ2UgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiY2hhbmdlIil9fWNsYXNzIENvbW1vbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiY29tbW9uIiwhMCk7dGhpcy5kYXRhPW51bGw7dGhpcy5sb2NhbGU9bnVsbDt0aGlzLmxvY2FsZVNldD1udWxsO3RoaXMubWVzc2FnaW5nPW51bGw7dGhpcy5zdXBwcmVzc0Jhbm5lcj1udWxsO3RoaXMudGVtcGxhdGU9bnVsbDt0aGlzLnZhbGlkYXRpb25NZXNzYWdpbmc9bnVsbDt0aGlzLnZlcnNpb25Db250cm9sPW51bGw7dGhpcy5sb2c9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBDb21wcmVzcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiY29tcHJlc3MiKTt0aGlzLnNjb3BlPWdldFN0cmluZ09wdGlvbihlLnNjb3BlLFsiaW1hZ2VPbmx5IiwiZG9jdW1lbnQiXSl9fWNsYXNzIENvbXByZXNzTG9naWNhbFN0cnVjdHVyZSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJjb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUiKX19Y2xhc3MgQ29tcHJlc3NPYmplY3RTdHJlYW0gZXh0ZW5kcyBPcHRpb24xMHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiY29tcHJlc3NPYmplY3RTdHJlYW0iKX19Y2xhc3MgQ29tcHJlc3Npb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImNvbXByZXNzaW9uIiwhMCk7dGhpcy5jb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmU9bnVsbDt0aGlzLmNvbXByZXNzT2JqZWN0U3RyZWFtPW51bGw7dGhpcy5sZXZlbD1udWxsO3RoaXMudHlwZT1udWxsfX1jbGFzcyBDb25maWcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImNvbmZpZyIsITApO3RoaXMuYWNyb2JhdD1udWxsO3RoaXMucHJlc2VudD1udWxsO3RoaXMudHJhY2U9bnVsbDt0aGlzLmFnZW50PW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgQ29uZm9ybWFuY2UgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImNvbmZvcm1hbmNlIixbIkEiLCJCIl0pfX1jbGFzcyBDb250ZW50Q29weSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJjb250ZW50Q29weSIpfX1jbGFzcyBDb3BpZXMgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJjb3BpZXMiLDEsZT0+ZT49MSl9fWNsYXNzIENyZWF0b3IgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImNyZWF0b3IiKX19Y2xhc3MgQ3VycmVudFBhZ2UgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJjdXJyZW50UGFnZSIsMCxlPT5lPj0wKX19Y2xhc3MgRGF0YSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiZGF0YSIsITApO3RoaXMuYWRqdXN0RGF0YT1udWxsO3RoaXMuYXR0cmlidXRlcz1udWxsO3RoaXMuaW5jcmVtZW50YWxMb2FkPW51bGw7dGhpcy5vdXRwdXRYU0w9bnVsbDt0aGlzLnJhbmdlPW51bGw7dGhpcy5yZWNvcmQ9bnVsbDt0aGlzLnN0YXJ0Tm9kZT1udWxsO3RoaXMudXJpPW51bGw7dGhpcy53aW5kb3c9bnVsbDt0aGlzLnhzbD1udWxsO3RoaXMuZXhjbHVkZU5TPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRyYW5zZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIERlYnVnIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJkZWJ1ZyIsITApO3RoaXMudXJpPW51bGx9fWNsYXNzIERlZmF1bHRUeXBlZmFjZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImRlZmF1bHRUeXBlZmFjZSIpO3RoaXMud3JpdGluZ1NjcmlwdD1nZXRTdHJpbmdPcHRpb24oZS53cml0aW5nU2NyaXB0LFsiKiIsIkFyYWJpYyIsIkN5cmlsbGljIiwiRWFzdEV1cm9wZWFuUm9tYW4iLCJHcmVlayIsIkhlYnJldyIsIkphcGFuZXNlIiwiS29yZWFuIiwiUm9tYW4iLCJTaW1wbGlmaWVkQ2hpbmVzZSIsIlRoYWkiLCJUcmFkaXRpb25hbENoaW5lc2UiLCJWaWV0bmFtZXNlIl0pfX1jbGFzcyBEZXN0aW5hdGlvbiBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiZGVzdGluYXRpb24iLFsicGRmIiwicGNsIiwicHMiLCJ3ZWJDbGllbnQiLCJ6cGwiXSl9fWNsYXNzIERvY3VtZW50QXNzZW1ibHkgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiZG9jdW1lbnRBc3NlbWJseSIpfX1jbGFzcyBEcml2ZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImRyaXZlciIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgRHVwbGV4T3B0aW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJkdXBsZXhPcHRpb24iLFsic2ltcGxleCIsImR1cGxleEZsaXBMb25nRWRnZSIsImR1cGxleEZsaXBTaG9ydEVkZ2UiXSl9fWNsYXNzIER5bmFtaWNSZW5kZXIgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImR5bmFtaWNSZW5kZXIiLFsiZm9yYmlkZGVuIiwicmVxdWlyZWQiXSl9fWNsYXNzIEVtYmVkIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImVtYmVkIil9fWNsYXNzIGNvbmZpZ19FbmNyeXB0IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImVuY3J5cHQiKX19Y2xhc3MgY29uZmlnX0VuY3J5cHRpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImVuY3J5cHRpb24iLCEwKTt0aGlzLmVuY3J5cHQ9bnVsbDt0aGlzLmVuY3J5cHRpb25MZXZlbD1udWxsO3RoaXMucGVybWlzc2lvbnM9bnVsbH19Y2xhc3MgRW5jcnlwdGlvbkxldmVsIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJlbmNyeXB0aW9uTGV2ZWwiLFsiNDBiaXQiLCIxMjhiaXQiXSl9fWNsYXNzIEVuZm9yY2UgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImVuZm9yY2UiKX19Y2xhc3MgRXF1YXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJlcXVhdGUiKTt0aGlzLmZvcmNlPWdldEludGVnZXIoe2RhdGE6ZS5mb3JjZSxkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT4wPT09ZX0pO3RoaXMuZnJvbT1lLmZyb218fCIiO3RoaXMudG89ZS50b3x8IiJ9fWNsYXNzIEVxdWF0ZVJhbmdlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJlcXVhdGVSYW5nZSIpO3RoaXMuZnJvbT1lLmZyb218fCIiO3RoaXMudG89ZS50b3x8IiI7dGhpcy5fdW5pY29kZVJhbmdlPWUudW5pY29kZVJhbmdlfHwiIn1nZXQgdW5pY29kZVJhbmdlKCl7Y29uc3QgZT1bXSx0PS9VXCsoWzAtOWEtZkEtRl0rKS8sYT10aGlzLl91bmljb2RlUmFuZ2U7Zm9yKGxldCBuIG9mIGEuc3BsaXQoIiwiKS5tYXAoZT0+ZS50cmltKCkpLmZpbHRlcihCb29sZWFuKSl7bj1uLnNwbGl0KCItIiwyKS5tYXAoZT0+e2NvbnN0IGE9ZS5tYXRjaCh0KTtyZXR1cm4gYT9wYXJzZUludChhWzFdLDE2KTowfSk7MT09PW4ubGVuZ3RoJiZuLnB1c2goblswXSk7ZS5wdXNoKG4pfXJldHVybiBzaGFkb3codGhpcywidW5pY29kZVJhbmdlIixlKX19Y2xhc3MgRXhjbHVkZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImV4Y2x1ZGUiKX1ba29dKCl7dGhpc1tnb109dGhpc1tnb10udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoZT0+ZSYmWyJjYWxjdWxhdGUiLCJjbG9zZSIsImVudGVyIiwiZXhpdCIsImluaXRpYWxpemUiLCJyZWFkeSIsInZhbGlkYXRlIl0uaW5jbHVkZXMoZSkpfX1jbGFzcyBFeGNsdWRlTlMgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImV4Y2x1ZGVOUyIpfX1jbGFzcyBGbGlwTGFiZWwgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImZsaXBMYWJlbCIsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBjb25maWdfRm9udEluZm8gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImZvbnRJbmZvIiwhMCk7dGhpcy5lbWJlZD1udWxsO3RoaXMubWFwPW51bGw7dGhpcy5zdWJzZXRCZWxvdz1udWxsO3RoaXMuYWx3YXlzRW1iZWQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVmYXVsdFR5cGVmYWNlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm5ldmVyRW1iZWQ9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBGb3JtRmllbGRGaWxsaW5nIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImZvcm1GaWVsZEZpbGxpbmciKX19Y2xhc3MgR3JvdXBQYXJlbnQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImdyb3VwUGFyZW50Iil9fWNsYXNzIElmRW1wdHkgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImlmRW1wdHkiLFsiZGF0YVZhbHVlIiwiZGF0YUdyb3VwIiwiaWdub3JlIiwicmVtb3ZlIl0pfX1jbGFzcyBJbmNsdWRlWERQQ29udGVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiaW5jbHVkZVhEUENvbnRlbnQiKX19Y2xhc3MgSW5jcmVtZW50YWxMb2FkIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJpbmNyZW1lbnRhbExvYWQiLFsibm9uZSIsImZvcndhcmRPbmx5Il0pfX1jbGFzcyBJbmNyZW1lbnRhbE1lcmdlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImluY3JlbWVudGFsTWVyZ2UiKX19Y2xhc3MgSW50ZXJhY3RpdmUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiaW50ZXJhY3RpdmUiKX19Y2xhc3MgSm9nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJqb2ciLFsidXNlUHJpbnRlclNldHRpbmciLCJub25lIiwicGFnZVNldCJdKX19Y2xhc3MgTGFiZWxQcmludGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJsYWJlbFByaW50ZXIiLCEwKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbInpwbCIsImRwbCIsImlwbCIsInRjcGwiXSk7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZmxpcExhYmVsPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIExheW91dCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwibGF5b3V0IixbInBhZ2luYXRlIiwicGFuZWwiXSl9fWNsYXNzIExldmVsIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwibGV2ZWwiLDAsZT0+ZT4wKX19Y2xhc3MgTGluZWFyaXplZCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJsaW5lYXJpemVkIil9fWNsYXNzIExvY2FsZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwibG9jYWxlIil9fWNsYXNzIExvY2FsZVNldCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwibG9jYWxlU2V0Iil9fWNsYXNzIExvZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwibG9nIiwhMCk7dGhpcy5tb2RlPW51bGw7dGhpcy50aHJlc2hvbGQ9bnVsbDt0aGlzLnRvPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgTWFwRWxlbWVudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwibWFwIiwhMCk7dGhpcy5lcXVhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXF1YXRlUmFuZ2U9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBNZWRpdW1JbmZvIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJtZWRpdW1JbmZvIiwhMCk7dGhpcy5tYXA9bnVsbH19Y2xhc3MgY29uZmlnX01lc3NhZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsIm1lc3NhZ2UiLCEwKTt0aGlzLm1zZ0lkPW51bGw7dGhpcy5zZXZlcml0eT1udWxsfX1jbGFzcyBNZXNzYWdpbmcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsIm1lc3NhZ2luZyIsITApO3RoaXMubWVzc2FnZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1vZGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsIm1vZGUiLFsiYXBwZW5kIiwib3ZlcndyaXRlIl0pfX1jbGFzcyBNb2RpZnlBbm5vdHMgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwibW9kaWZ5QW5ub3RzIil9fWNsYXNzIE1zZ0lkIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwibXNnSWQiLDEsZT0+ZT49MSl9fWNsYXNzIE5hbWVBdHRyIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJuYW1lQXR0ciIpfX1jbGFzcyBOZXZlckVtYmVkIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwibmV2ZXJFbWJlZCIpfX1jbGFzcyBOdW1iZXJPZkNvcGllcyBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsIm51bWJlck9mQ29waWVzIixudWxsLGU9PmU+PTImJmU8PTUpfX1jbGFzcyBPcGVuQWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJvcGVuQWN0aW9uIiwhMCk7dGhpcy5kZXN0aW5hdGlvbj1udWxsfX1jbGFzcyBPdXRwdXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsIm91dHB1dCIsITApO3RoaXMudG89bnVsbDt0aGlzLnR5cGU9bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBPdXRwdXRCaW4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsIm91dHB1dEJpbiIpfX1jbGFzcyBPdXRwdXRYU0wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsIm91dHB1dFhTTCIsITApO3RoaXMudXJpPW51bGx9fWNsYXNzIE92ZXJwcmludCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwib3ZlcnByaW50IixbIm5vbmUiLCJib3RoIiwiZHJhdyIsImZpZWxkIl0pfX1jbGFzcyBQYWNrZXRzIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJwYWNrZXRzIil9W2tvXSgpeyIqIiE9PXRoaXNbZ29dJiYodGhpc1tnb109dGhpc1tnb10udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoZT0+WyJjb25maWciLCJkYXRhc2V0cyIsInRlbXBsYXRlIiwieGZkZiIsInhzbHQiXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBQYWdlT2Zmc2V0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJwYWdlT2Zmc2V0Iik7dGhpcy54PWdldEludGVnZXIoe2RhdGE6ZS54LGRlZmF1bHRWYWx1ZToidXNlWERDU2V0dGluZyIsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLnk9Z2V0SW50ZWdlcih7ZGF0YTplLnksZGVmYXVsdFZhbHVlOiJ1c2VYRENTZXR0aW5nIix2YWxpZGF0ZTplPT4hMH0pfX1jbGFzcyBQYWdlUmFuZ2UgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInBhZ2VSYW5nZSIpfVtrb10oKXtjb25zdCBlPXRoaXNbZ29dLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKGU9PnBhcnNlSW50KGUsMTApKSx0PVtdO2ZvcihsZXQgYT0wLG49ZS5sZW5ndGg7YTxuO2ErPTIpdC5wdXNoKGUuc2xpY2UoYSxhKzIpKTt0aGlzW2dvXT10fX1jbGFzcyBQYWdpbmF0aW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJwYWdpbmF0aW9uIixbInNpbXBsZXgiLCJkdXBsZXhTaG9ydEVkZ2UiLCJkdXBsZXhMb25nRWRnZSJdKX19Y2xhc3MgUGFnaW5hdGlvbk92ZXJyaWRlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJwYWdpbmF0aW9uT3ZlcnJpZGUiLFsibm9uZSIsImZvcmNlRHVwbGV4IiwiZm9yY2VEdXBsZXhMb25nRWRnZSIsImZvcmNlRHVwbGV4U2hvcnRFZGdlIiwiZm9yY2VTaW1wbGV4Il0pfX1jbGFzcyBQYXJ0IGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwicGFydCIsMSxlPT4hMSl9fWNsYXNzIFBjbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwicGNsIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmpvZz1udWxsO3RoaXMubWVkaXVtSW5mbz1udWxsO3RoaXMub3V0cHV0QmluPW51bGw7dGhpcy5wYWdlT2Zmc2V0PW51bGw7dGhpcy5zdGFwbGU9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBQZGYgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInBkZiIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYWRvYmVFeHRlbnNpb25MZXZlbD1udWxsO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmNvbXByZXNzaW9uPW51bGw7dGhpcy5jcmVhdG9yPW51bGw7dGhpcy5lbmNyeXB0aW9uPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMuaW50ZXJhY3RpdmU9bnVsbDt0aGlzLmxpbmVhcml6ZWQ9bnVsbDt0aGlzLm9wZW5BY3Rpb249bnVsbDt0aGlzLnBkZmE9bnVsbDt0aGlzLnByb2R1Y2VyPW51bGw7dGhpcy5yZW5kZXJQb2xpY3k9bnVsbDt0aGlzLnNjcmlwdE1vZGVsPW51bGw7dGhpcy5zaWxlbnRQcmludD1udWxsO3RoaXMuc3VibWl0Rm9ybWF0PW51bGw7dGhpcy50YWdnZWQ9bnVsbDt0aGlzLnZlcnNpb249bnVsbDt0aGlzLnZpZXdlclByZWZlcmVuY2VzPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUGRmYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwicGRmYSIsITApO3RoaXMuYW1kPW51bGw7dGhpcy5jb25mb3JtYW5jZT1udWxsO3RoaXMuaW5jbHVkZVhEUENvbnRlbnQ9bnVsbDt0aGlzLnBhcnQ9bnVsbH19Y2xhc3MgUGVybWlzc2lvbnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInBlcm1pc3Npb25zIiwhMCk7dGhpcy5hY2Nlc3NpYmxlQ29udGVudD1udWxsO3RoaXMuY2hhbmdlPW51bGw7dGhpcy5jb250ZW50Q29weT1udWxsO3RoaXMuZG9jdW1lbnRBc3NlbWJseT1udWxsO3RoaXMuZm9ybUZpZWxkRmlsbGluZz1udWxsO3RoaXMubW9kaWZ5QW5ub3RzPW51bGw7dGhpcy5wbGFpbnRleHRNZXRhZGF0YT1udWxsO3RoaXMucHJpbnQ9bnVsbDt0aGlzLnByaW50SGlnaFF1YWxpdHk9bnVsbH19Y2xhc3MgUGlja1RyYXlCeVBERlNpemUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwicGlja1RyYXlCeVBERlNpemUiKX19Y2xhc3MgY29uZmlnX1BpY3R1cmUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInBpY3R1cmUiKX19Y2xhc3MgUGxhaW50ZXh0TWV0YWRhdGEgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwicGxhaW50ZXh0TWV0YWRhdGEiKX19Y2xhc3MgUHJlc2VuY2UgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInByZXNlbmNlIixbInByZXNlcnZlIiwiZGlzc29sdmUiLCJkaXNzb2x2ZVN0cnVjdHVyZSIsImlnbm9yZSIsInJlbW92ZSJdKX19Y2xhc3MgUHJlc2VudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwicHJlc2VudCIsITApO3RoaXMuYmVoYXZpb3JPdmVycmlkZT1udWxsO3RoaXMuY2FjaGU9bnVsbDt0aGlzLmNvbW1vbj1udWxsO3RoaXMuY29waWVzPW51bGw7dGhpcy5kZXN0aW5hdGlvbj1udWxsO3RoaXMuaW5jcmVtZW50YWxNZXJnZT1udWxsO3RoaXMubGF5b3V0PW51bGw7dGhpcy5vdXRwdXQ9bnVsbDt0aGlzLm92ZXJwcmludD1udWxsO3RoaXMucGFnaW5hdGlvbj1udWxsO3RoaXMucGFnaW5hdGlvbk92ZXJyaWRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy54ZHA9bnVsbDt0aGlzLmRyaXZlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5sYWJlbFByaW50ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGNsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBkZj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJtaXRVcmw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMud2ViQ2xpZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnpwbD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFByaW50IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInByaW50Iil9fWNsYXNzIFByaW50SGlnaFF1YWxpdHkgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwicHJpbnRIaWdoUXVhbGl0eSIpfX1jbGFzcyBQcmludFNjYWxpbmcgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInByaW50U2NhbGluZyIsWyJhcHBkZWZhdWx0Iiwibm9TY2FsaW5nIl0pfX1jbGFzcyBQcmludGVyTmFtZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwicHJpbnRlck5hbWUiKX19Y2xhc3MgUHJvZHVjZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInByb2R1Y2VyIil9fWNsYXNzIFBzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJwcyIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy5qb2c9bnVsbDt0aGlzLm1lZGl1bUluZm89bnVsbDt0aGlzLm91dHB1dEJpbj1udWxsO3RoaXMuc3RhcGxlPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUmFuZ2UgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJyYW5nZSIpfVtrb10oKXt0aGlzW2dvXT10aGlzW2dvXS5zcGxpdCgiLCIsMikubWFwKGU9PmUuc3BsaXQoIi0iKS5tYXAoZT0+cGFyc2VJbnQoZS50cmltKCksMTApKSkuZmlsdGVyKGU9PmUuZXZlcnkoZT0+IWlzTmFOKGUpKSkubWFwKGU9PnsxPT09ZS5sZW5ndGgmJmUucHVzaChlWzBdKTtyZXR1cm4gZX0pfX1jbGFzcyBSZWNvcmQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJyZWNvcmQiKX1ba29dKCl7dGhpc1tnb109dGhpc1tnb10udHJpbSgpO2NvbnN0IGU9cGFyc2VJbnQodGhpc1tnb10sMTApOyFpc05hTihlKSYmZT49MCYmKHRoaXNbZ29dPWUpfX1jbGFzcyBSZWxldmFudCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInJlbGV2YW50Iil9W2tvXSgpe3RoaXNbZ29dPXRoaXNbZ29dLnRyaW0oKS5zcGxpdCgvXHMrLyl9fWNsYXNzIFJlbmFtZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInJlbmFtZSIpfVtrb10oKXt0aGlzW2dvXT10aGlzW2dvXS50cmltKCk7KHRoaXNbZ29dLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgieG1sIil8fC9bXHB7TH1fXVtccHtMfVxkLl9ccHtNfS1dKi91LnRlc3QodGhpc1tnb10pKSYmd2FybigiWEZBIC0gUmVuYW1lOiBpbnZhbGlkIFhGQSBuYW1lIil9fWNsYXNzIFJlbmRlclBvbGljeSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwicmVuZGVyUG9saWN5IixbInNlcnZlciIsImNsaWVudCJdKX19Y2xhc3MgUnVuU2NyaXB0cyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwicnVuU2NyaXB0cyIsWyJib3RoIiwiY2xpZW50Iiwibm9uZSIsInNlcnZlciJdKX19Y2xhc3MgY29uZmlnX1NjcmlwdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwic2NyaXB0IiwhMCk7dGhpcy5jdXJyZW50UGFnZT1udWxsO3RoaXMuZXhjbHVkZT1udWxsO3RoaXMucnVuU2NyaXB0cz1udWxsfX1jbGFzcyBTY3JpcHRNb2RlbCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwic2NyaXB0TW9kZWwiLFsiWEZBIiwibm9uZSJdKX19Y2xhc3MgU2V2ZXJpdHkgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInNldmVyaXR5IixbImlnbm9yZSIsImVycm9yIiwiaW5mb3JtYXRpb24iLCJ0cmFjZSIsIndhcm5pbmciXSl9fWNsYXNzIFNpbGVudFByaW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJzaWxlbnRQcmludCIsITApO3RoaXMuYWRkU2lsZW50UHJpbnQ9bnVsbDt0aGlzLnByaW50ZXJOYW1lPW51bGx9fWNsYXNzIFN0YXBsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwic3RhcGxlIik7dGhpcy5tb2RlPWdldFN0cmluZ09wdGlvbihlLm1vZGUsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBTdGFydE5vZGUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInN0YXJ0Tm9kZSIpfX1jbGFzcyBTdGFydFBhZ2UgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJzdGFydFBhZ2UiLDAsZT0+ITApfX1jbGFzcyBTdWJtaXRGb3JtYXQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInN1Ym1pdEZvcm1hdCIsWyJodG1sIiwiZGVsZWdhdGUiLCJmZGYiLCJ4bWwiLCJwZGYiXSl9fWNsYXNzIFN1Ym1pdFVybCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwic3VibWl0VXJsIil9fWNsYXNzIFN1YnNldEJlbG93IGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwic3Vic2V0QmVsb3ciLDEwMCxlPT5lPj0wJiZlPD0xMDApfX1jbGFzcyBTdXBwcmVzc0Jhbm5lciBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJzdXBwcmVzc0Jhbm5lciIpfX1jbGFzcyBUYWdnZWQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwidGFnZ2VkIil9fWNsYXNzIGNvbmZpZ19UZW1wbGF0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwidGVtcGxhdGUiLCEwKTt0aGlzLmJhc2U9bnVsbDt0aGlzLnJlbGV2YW50PW51bGw7dGhpcy5zdGFydFBhZ2U9bnVsbDt0aGlzLnVyaT1udWxsO3RoaXMueHNsPW51bGx9fWNsYXNzIFRocmVzaG9sZCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwidGhyZXNob2xkIixbInRyYWNlIiwiZXJyb3IiLCJpbmZvcm1hdGlvbiIsIndhcm5pbmciXSl9fWNsYXNzIFRvIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJ0byIsWyJudWxsIiwibWVtb3J5Iiwic3RkZXJyIiwic3Rkb3V0Iiwic3lzdGVtIiwidXJpIl0pfX1jbGFzcyBUZW1wbGF0ZUNhY2hlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJ0ZW1wbGF0ZUNhY2hlIik7dGhpcy5tYXhFbnRyaWVzPWdldEludGVnZXIoe2RhdGE6ZS5tYXhFbnRyaWVzLGRlZmF1bHRWYWx1ZTo1LHZhbGlkYXRlOmU9PmU+PTB9KX19Y2xhc3MgVHJhY2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInRyYWNlIiwhMCk7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgVHJhbnNmb3JtIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJ0cmFuc2Zvcm0iLCEwKTt0aGlzLmdyb3VwUGFyZW50PW51bGw7dGhpcy5pZkVtcHR5PW51bGw7dGhpcy5uYW1lQXR0cj1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMucHJlc2VuY2U9bnVsbDt0aGlzLnJlbmFtZT1udWxsO3RoaXMud2hpdGVzcGFjZT1udWxsfX1jbGFzcyBUeXBlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJ0eXBlIixbIm5vbmUiLCJhc2NpaTg1IiwiYXNjaWlIZXgiLCJjY2l0dGZheCIsImZsYXRlIiwibHp3IiwicnVuTGVuZ3RoIiwibmF0aXZlIiwieGRwIiwibWVyZ2VkWERQIl0pfX1jbGFzcyBVcmkgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInVyaSIpfX1jbGFzcyBjb25maWdfVmFsaWRhdGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInZhbGlkYXRlIixbInByZVN1Ym1pdCIsInByZVByaW50IiwicHJlRXhlY3V0ZSIsInByZVNhdmUiXSl9fWNsYXNzIFZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwidmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMiKX1ba29dKCl7dGhpc1tnb109dGhpc1tnb10udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoZT0+WyJkb2NSZWFkeSIsInBvc3RTaWduIl0uaW5jbHVkZXMoZSkpfX1jbGFzcyBWYWxpZGF0aW9uTWVzc2FnaW5nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJ2YWxpZGF0aW9uTWVzc2FnaW5nIixbImFsbE1lc3NhZ2VzSW5kaXZpZHVhbGx5IiwiYWxsTWVzc2FnZXNUb2dldGhlciIsImZpcnN0TWVzc2FnZU9ubHkiLCJub01lc3NhZ2VzIl0pfX1jbGFzcyBWZXJzaW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJ2ZXJzaW9uIixbIjEuNyIsIjEuNiIsIjEuNSIsIjEuNCIsIjEuMyIsIjEuMiJdKX19Y2xhc3MgVmVyc2lvbkNvbnRyb2wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsIlZlcnNpb25Db250cm9sIik7dGhpcy5vdXRwdXRCZWxvdz1nZXRTdHJpbmdPcHRpb24oZS5vdXRwdXRCZWxvdyxbIndhcm4iLCJlcnJvciIsInVwZGF0ZSJdKTt0aGlzLnNvdXJjZUFib3ZlPWdldFN0cmluZ09wdGlvbihlLnNvdXJjZUFib3ZlLFsid2FybiIsImVycm9yIl0pO3RoaXMuc291cmNlQmVsb3c9Z2V0U3RyaW5nT3B0aW9uKGUuc291cmNlQmVsb3csWyJ1cGRhdGUiLCJtYWludGFpbiJdKX19Y2xhc3MgVmlld2VyUHJlZmVyZW5jZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInZpZXdlclByZWZlcmVuY2VzIiwhMCk7dGhpcy5BREJFX0pTQ29uc29sZT1udWxsO3RoaXMuQURCRV9KU0RlYnVnZ2VyPW51bGw7dGhpcy5hZGRWaWV3ZXJQcmVmZXJlbmNlcz1udWxsO3RoaXMuZHVwbGV4T3B0aW9uPW51bGw7dGhpcy5lbmZvcmNlPW51bGw7dGhpcy5udW1iZXJPZkNvcGllcz1udWxsO3RoaXMucGFnZVJhbmdlPW51bGw7dGhpcy5waWNrVHJheUJ5UERGU2l6ZT1udWxsO3RoaXMucHJpbnRTY2FsaW5nPW51bGx9fWNsYXNzIFdlYkNsaWVudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwid2ViQ2xpZW50IiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBXaGl0ZXNwYWNlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJ3aGl0ZXNwYWNlIixbInByZXNlcnZlIiwibHRyaW0iLCJub3JtYWxpemUiLCJydHJpbSIsInRyaW0iXSl9fWNsYXNzIFdpbmRvdyBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsIndpbmRvdyIpfVtrb10oKXtjb25zdCBlPXRoaXNbZ29dLnNwbGl0KCIsIiwyKS5tYXAoZT0+cGFyc2VJbnQoZS50cmltKCksMTApKTtpZihlLnNvbWUoZT0+aXNOYU4oZSkpKXRoaXNbZ29dPVswLDBdO2Vsc2V7MT09PWUubGVuZ3RoJiZlLnB1c2goZVswXSk7dGhpc1tnb109ZX19fWNsYXNzIFhkYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwieGRjIiwhMCk7dGhpcy51cmk9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMueHNsPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgWGRwIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJ4ZHAiLCEwKTt0aGlzLnBhY2tldHM9bnVsbH19Y2xhc3MgWHNsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJ4c2wiLCEwKTt0aGlzLmRlYnVnPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgWnBsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJ6cGwiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZmxpcExhYmVsPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIENvbmZpZ05hbWVzcGFjZXtzdGF0aWNbcWxdKGUsdCl7cmV0dXJuIE9iamVjdC5oYXNPd24oQ29uZmlnTmFtZXNwYWNlLGUpP0NvbmZpZ05hbWVzcGFjZVtlXSh0KTp2b2lkIDB9c3RhdGljIGFjcm9iYXQoZSl7cmV0dXJuIG5ldyBBY3JvYmF0KGUpfXN0YXRpYyBhY3JvYmF0NyhlKXtyZXR1cm4gbmV3IEFjcm9iYXQ3KGUpfXN0YXRpYyBBREJFX0pTQ29uc29sZShlKXtyZXR1cm4gbmV3IEFEQkVfSlNDb25zb2xlKGUpfXN0YXRpYyBBREJFX0pTRGVidWdnZXIoZSl7cmV0dXJuIG5ldyBBREJFX0pTRGVidWdnZXIoZSl9c3RhdGljIGFkZFNpbGVudFByaW50KGUpe3JldHVybiBuZXcgQWRkU2lsZW50UHJpbnQoZSl9c3RhdGljIGFkZFZpZXdlclByZWZlcmVuY2VzKGUpe3JldHVybiBuZXcgQWRkVmlld2VyUHJlZmVyZW5jZXMoZSl9c3RhdGljIGFkanVzdERhdGEoZSl7cmV0dXJuIG5ldyBBZGp1c3REYXRhKGUpfXN0YXRpYyBhZG9iZUV4dGVuc2lvbkxldmVsKGUpe3JldHVybiBuZXcgQWRvYmVFeHRlbnNpb25MZXZlbChlKX1zdGF0aWMgYWdlbnQoZSl7cmV0dXJuIG5ldyBBZ2VudChlKX1zdGF0aWMgYWx3YXlzRW1iZWQoZSl7cmV0dXJuIG5ldyBBbHdheXNFbWJlZChlKX1zdGF0aWMgYW1kKGUpe3JldHVybiBuZXcgQW1kKGUpfXN0YXRpYyBhcmVhKGUpe3JldHVybiBuZXcgY29uZmlnX0FyZWEoZSl9c3RhdGljIGF0dHJpYnV0ZXMoZSl7cmV0dXJuIG5ldyBBdHRyaWJ1dGVzKGUpfXN0YXRpYyBhdXRvU2F2ZShlKXtyZXR1cm4gbmV3IEF1dG9TYXZlKGUpfXN0YXRpYyBiYXNlKGUpe3JldHVybiBuZXcgQmFzZShlKX1zdGF0aWMgYmF0Y2hPdXRwdXQoZSl7cmV0dXJuIG5ldyBCYXRjaE91dHB1dChlKX1zdGF0aWMgYmVoYXZpb3JPdmVycmlkZShlKXtyZXR1cm4gbmV3IEJlaGF2aW9yT3ZlcnJpZGUoZSl9c3RhdGljIGNhY2hlKGUpe3JldHVybiBuZXcgQ2FjaGUoZSl9c3RhdGljIGNoYW5nZShlKXtyZXR1cm4gbmV3IENoYW5nZShlKX1zdGF0aWMgY29tbW9uKGUpe3JldHVybiBuZXcgQ29tbW9uKGUpfXN0YXRpYyBjb21wcmVzcyhlKXtyZXR1cm4gbmV3IENvbXByZXNzKGUpfXN0YXRpYyBjb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUoZSl7cmV0dXJuIG5ldyBDb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUoZSl9c3RhdGljIGNvbXByZXNzT2JqZWN0U3RyZWFtKGUpe3JldHVybiBuZXcgQ29tcHJlc3NPYmplY3RTdHJlYW0oZSl9c3RhdGljIGNvbXByZXNzaW9uKGUpe3JldHVybiBuZXcgQ29tcHJlc3Npb24oZSl9c3RhdGljIGNvbmZpZyhlKXtyZXR1cm4gbmV3IENvbmZpZyhlKX1zdGF0aWMgY29uZm9ybWFuY2UoZSl7cmV0dXJuIG5ldyBDb25mb3JtYW5jZShlKX1zdGF0aWMgY29udGVudENvcHkoZSl7cmV0dXJuIG5ldyBDb250ZW50Q29weShlKX1zdGF0aWMgY29waWVzKGUpe3JldHVybiBuZXcgQ29waWVzKGUpfXN0YXRpYyBjcmVhdG9yKGUpe3JldHVybiBuZXcgQ3JlYXRvcihlKX1zdGF0aWMgY3VycmVudFBhZ2UoZSl7cmV0dXJuIG5ldyBDdXJyZW50UGFnZShlKX1zdGF0aWMgZGF0YShlKXtyZXR1cm4gbmV3IERhdGEoZSl9c3RhdGljIGRlYnVnKGUpe3JldHVybiBuZXcgRGVidWcoZSl9c3RhdGljIGRlZmF1bHRUeXBlZmFjZShlKXtyZXR1cm4gbmV3IERlZmF1bHRUeXBlZmFjZShlKX1zdGF0aWMgZGVzdGluYXRpb24oZSl7cmV0dXJuIG5ldyBEZXN0aW5hdGlvbihlKX1zdGF0aWMgZG9jdW1lbnRBc3NlbWJseShlKXtyZXR1cm4gbmV3IERvY3VtZW50QXNzZW1ibHkoZSl9c3RhdGljIGRyaXZlcihlKXtyZXR1cm4gbmV3IERyaXZlcihlKX1zdGF0aWMgZHVwbGV4T3B0aW9uKGUpe3JldHVybiBuZXcgRHVwbGV4T3B0aW9uKGUpfXN0YXRpYyBkeW5hbWljUmVuZGVyKGUpe3JldHVybiBuZXcgRHluYW1pY1JlbmRlcihlKX1zdGF0aWMgZW1iZWQoZSl7cmV0dXJuIG5ldyBFbWJlZChlKX1zdGF0aWMgZW5jcnlwdChlKXtyZXR1cm4gbmV3IGNvbmZpZ19FbmNyeXB0KGUpfXN0YXRpYyBlbmNyeXB0aW9uKGUpe3JldHVybiBuZXcgY29uZmlnX0VuY3J5cHRpb24oZSl9c3RhdGljIGVuY3J5cHRpb25MZXZlbChlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb25MZXZlbChlKX1zdGF0aWMgZW5mb3JjZShlKXtyZXR1cm4gbmV3IEVuZm9yY2UoZSl9c3RhdGljIGVxdWF0ZShlKXtyZXR1cm4gbmV3IEVxdWF0ZShlKX1zdGF0aWMgZXF1YXRlUmFuZ2UoZSl7cmV0dXJuIG5ldyBFcXVhdGVSYW5nZShlKX1zdGF0aWMgZXhjbHVkZShlKXtyZXR1cm4gbmV3IEV4Y2x1ZGUoZSl9c3RhdGljIGV4Y2x1ZGVOUyhlKXtyZXR1cm4gbmV3IEV4Y2x1ZGVOUyhlKX1zdGF0aWMgZmxpcExhYmVsKGUpe3JldHVybiBuZXcgRmxpcExhYmVsKGUpfXN0YXRpYyBmb250SW5mbyhlKXtyZXR1cm4gbmV3IGNvbmZpZ19Gb250SW5mbyhlKX1zdGF0aWMgZm9ybUZpZWxkRmlsbGluZyhlKXtyZXR1cm4gbmV3IEZvcm1GaWVsZEZpbGxpbmcoZSl9c3RhdGljIGdyb3VwUGFyZW50KGUpe3JldHVybiBuZXcgR3JvdXBQYXJlbnQoZSl9c3RhdGljIGlmRW1wdHkoZSl7cmV0dXJuIG5ldyBJZkVtcHR5KGUpfXN0YXRpYyBpbmNsdWRlWERQQ29udGVudChlKXtyZXR1cm4gbmV3IEluY2x1ZGVYRFBDb250ZW50KGUpfXN0YXRpYyBpbmNyZW1lbnRhbExvYWQoZSl7cmV0dXJuIG5ldyBJbmNyZW1lbnRhbExvYWQoZSl9c3RhdGljIGluY3JlbWVudGFsTWVyZ2UoZSl7cmV0dXJuIG5ldyBJbmNyZW1lbnRhbE1lcmdlKGUpfXN0YXRpYyBpbnRlcmFjdGl2ZShlKXtyZXR1cm4gbmV3IEludGVyYWN0aXZlKGUpfXN0YXRpYyBqb2coZSl7cmV0dXJuIG5ldyBKb2coZSl9c3RhdGljIGxhYmVsUHJpbnRlcihlKXtyZXR1cm4gbmV3IExhYmVsUHJpbnRlcihlKX1zdGF0aWMgbGF5b3V0KGUpe3JldHVybiBuZXcgTGF5b3V0KGUpfXN0YXRpYyBsZXZlbChlKXtyZXR1cm4gbmV3IExldmVsKGUpfXN0YXRpYyBsaW5lYXJpemVkKGUpe3JldHVybiBuZXcgTGluZWFyaXplZChlKX1zdGF0aWMgbG9jYWxlKGUpe3JldHVybiBuZXcgTG9jYWxlKGUpfXN0YXRpYyBsb2NhbGVTZXQoZSl7cmV0dXJuIG5ldyBMb2NhbGVTZXQoZSl9c3RhdGljIGxvZyhlKXtyZXR1cm4gbmV3IExvZyhlKX1zdGF0aWMgbWFwKGUpe3JldHVybiBuZXcgTWFwRWxlbWVudChlKX1zdGF0aWMgbWVkaXVtSW5mbyhlKXtyZXR1cm4gbmV3IE1lZGl1bUluZm8oZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyBjb25maWdfTWVzc2FnZShlKX1zdGF0aWMgbWVzc2FnaW5nKGUpe3JldHVybiBuZXcgTWVzc2FnaW5nKGUpfXN0YXRpYyBtb2RlKGUpe3JldHVybiBuZXcgTW9kZShlKX1zdGF0aWMgbW9kaWZ5QW5ub3RzKGUpe3JldHVybiBuZXcgTW9kaWZ5QW5ub3RzKGUpfXN0YXRpYyBtc2dJZChlKXtyZXR1cm4gbmV3IE1zZ0lkKGUpfXN0YXRpYyBuYW1lQXR0cihlKXtyZXR1cm4gbmV3IE5hbWVBdHRyKGUpfXN0YXRpYyBuZXZlckVtYmVkKGUpe3JldHVybiBuZXcgTmV2ZXJFbWJlZChlKX1zdGF0aWMgbnVtYmVyT2ZDb3BpZXMoZSl7cmV0dXJuIG5ldyBOdW1iZXJPZkNvcGllcyhlKX1zdGF0aWMgb3BlbkFjdGlvbihlKXtyZXR1cm4gbmV3IE9wZW5BY3Rpb24oZSl9c3RhdGljIG91dHB1dChlKXtyZXR1cm4gbmV3IE91dHB1dChlKX1zdGF0aWMgb3V0cHV0QmluKGUpe3JldHVybiBuZXcgT3V0cHV0QmluKGUpfXN0YXRpYyBvdXRwdXRYU0woZSl7cmV0dXJuIG5ldyBPdXRwdXRYU0woZSl9c3RhdGljIG92ZXJwcmludChlKXtyZXR1cm4gbmV3IE92ZXJwcmludChlKX1zdGF0aWMgcGFja2V0cyhlKXtyZXR1cm4gbmV3IFBhY2tldHMoZSl9c3RhdGljIHBhZ2VPZmZzZXQoZSl7cmV0dXJuIG5ldyBQYWdlT2Zmc2V0KGUpfXN0YXRpYyBwYWdlUmFuZ2UoZSl7cmV0dXJuIG5ldyBQYWdlUmFuZ2UoZSl9c3RhdGljIHBhZ2luYXRpb24oZSl7cmV0dXJuIG5ldyBQYWdpbmF0aW9uKGUpfXN0YXRpYyBwYWdpbmF0aW9uT3ZlcnJpZGUoZSl7cmV0dXJuIG5ldyBQYWdpbmF0aW9uT3ZlcnJpZGUoZSl9c3RhdGljIHBhcnQoZSl7cmV0dXJuIG5ldyBQYXJ0KGUpfXN0YXRpYyBwY2woZSl7cmV0dXJuIG5ldyBQY2woZSl9c3RhdGljIHBkZihlKXtyZXR1cm4gbmV3IFBkZihlKX1zdGF0aWMgcGRmYShlKXtyZXR1cm4gbmV3IFBkZmEoZSl9c3RhdGljIHBlcm1pc3Npb25zKGUpe3JldHVybiBuZXcgUGVybWlzc2lvbnMoZSl9c3RhdGljIHBpY2tUcmF5QnlQREZTaXplKGUpe3JldHVybiBuZXcgUGlja1RyYXlCeVBERlNpemUoZSl9c3RhdGljIHBpY3R1cmUoZSl7cmV0dXJuIG5ldyBjb25maWdfUGljdHVyZShlKX1zdGF0aWMgcGxhaW50ZXh0TWV0YWRhdGEoZSl7cmV0dXJuIG5ldyBQbGFpbnRleHRNZXRhZGF0YShlKX1zdGF0aWMgcHJlc2VuY2UoZSl7cmV0dXJuIG5ldyBQcmVzZW5jZShlKX1zdGF0aWMgcHJlc2VudChlKXtyZXR1cm4gbmV3IFByZXNlbnQoZSl9c3RhdGljIHByaW50KGUpe3JldHVybiBuZXcgUHJpbnQoZSl9c3RhdGljIHByaW50SGlnaFF1YWxpdHkoZSl7cmV0dXJuIG5ldyBQcmludEhpZ2hRdWFsaXR5KGUpfXN0YXRpYyBwcmludFNjYWxpbmcoZSl7cmV0dXJuIG5ldyBQcmludFNjYWxpbmcoZSl9c3RhdGljIHByaW50ZXJOYW1lKGUpe3JldHVybiBuZXcgUHJpbnRlck5hbWUoZSl9c3RhdGljIHByb2R1Y2VyKGUpe3JldHVybiBuZXcgUHJvZHVjZXIoZSl9c3RhdGljIHBzKGUpe3JldHVybiBuZXcgUHMoZSl9c3RhdGljIHJhbmdlKGUpe3JldHVybiBuZXcgUmFuZ2UoZSl9c3RhdGljIHJlY29yZChlKXtyZXR1cm4gbmV3IFJlY29yZChlKX1zdGF0aWMgcmVsZXZhbnQoZSl7cmV0dXJuIG5ldyBSZWxldmFudChlKX1zdGF0aWMgcmVuYW1lKGUpe3JldHVybiBuZXcgUmVuYW1lKGUpfXN0YXRpYyByZW5kZXJQb2xpY3koZSl7cmV0dXJuIG5ldyBSZW5kZXJQb2xpY3koZSl9c3RhdGljIHJ1blNjcmlwdHMoZSl7cmV0dXJuIG5ldyBSdW5TY3JpcHRzKGUpfXN0YXRpYyBzY3JpcHQoZSl7cmV0dXJuIG5ldyBjb25maWdfU2NyaXB0KGUpfXN0YXRpYyBzY3JpcHRNb2RlbChlKXtyZXR1cm4gbmV3IFNjcmlwdE1vZGVsKGUpfXN0YXRpYyBzZXZlcml0eShlKXtyZXR1cm4gbmV3IFNldmVyaXR5KGUpfXN0YXRpYyBzaWxlbnRQcmludChlKXtyZXR1cm4gbmV3IFNpbGVudFByaW50KGUpfXN0YXRpYyBzdGFwbGUoZSl7cmV0dXJuIG5ldyBTdGFwbGUoZSl9c3RhdGljIHN0YXJ0Tm9kZShlKXtyZXR1cm4gbmV3IFN0YXJ0Tm9kZShlKX1zdGF0aWMgc3RhcnRQYWdlKGUpe3JldHVybiBuZXcgU3RhcnRQYWdlKGUpfXN0YXRpYyBzdWJtaXRGb3JtYXQoZSl7cmV0dXJuIG5ldyBTdWJtaXRGb3JtYXQoZSl9c3RhdGljIHN1Ym1pdFVybChlKXtyZXR1cm4gbmV3IFN1Ym1pdFVybChlKX1zdGF0aWMgc3Vic2V0QmVsb3coZSl7cmV0dXJuIG5ldyBTdWJzZXRCZWxvdyhlKX1zdGF0aWMgc3VwcHJlc3NCYW5uZXIoZSl7cmV0dXJuIG5ldyBTdXBwcmVzc0Jhbm5lcihlKX1zdGF0aWMgdGFnZ2VkKGUpe3JldHVybiBuZXcgVGFnZ2VkKGUpfXN0YXRpYyB0ZW1wbGF0ZShlKXtyZXR1cm4gbmV3IGNvbmZpZ19UZW1wbGF0ZShlKX1zdGF0aWMgdGVtcGxhdGVDYWNoZShlKXtyZXR1cm4gbmV3IFRlbXBsYXRlQ2FjaGUoZSl9c3RhdGljIHRocmVzaG9sZChlKXtyZXR1cm4gbmV3IFRocmVzaG9sZChlKX1zdGF0aWMgdG8oZSl7cmV0dXJuIG5ldyBUbyhlKX1zdGF0aWMgdHJhY2UoZSl7cmV0dXJuIG5ldyBUcmFjZShlKX1zdGF0aWMgdHJhbnNmb3JtKGUpe3JldHVybiBuZXcgVHJhbnNmb3JtKGUpfXN0YXRpYyB0eXBlKGUpe3JldHVybiBuZXcgVHlwZShlKX1zdGF0aWMgdXJpKGUpe3JldHVybiBuZXcgVXJpKGUpfXN0YXRpYyB2YWxpZGF0ZShlKXtyZXR1cm4gbmV3IGNvbmZpZ19WYWxpZGF0ZShlKX1zdGF0aWMgdmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMoZSl7cmV0dXJuIG5ldyBWYWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyhlKX1zdGF0aWMgdmFsaWRhdGlvbk1lc3NhZ2luZyhlKXtyZXR1cm4gbmV3IFZhbGlkYXRpb25NZXNzYWdpbmcoZSl9c3RhdGljIHZlcnNpb24oZSl7cmV0dXJuIG5ldyBWZXJzaW9uKGUpfXN0YXRpYyB2ZXJzaW9uQ29udHJvbChlKXtyZXR1cm4gbmV3IFZlcnNpb25Db250cm9sKGUpfXN0YXRpYyB2aWV3ZXJQcmVmZXJlbmNlcyhlKXtyZXR1cm4gbmV3IFZpZXdlclByZWZlcmVuY2VzKGUpfXN0YXRpYyB3ZWJDbGllbnQoZSl7cmV0dXJuIG5ldyBXZWJDbGllbnQoZSl9c3RhdGljIHdoaXRlc3BhY2UoZSl7cmV0dXJuIG5ldyBXaGl0ZXNwYWNlKGUpfXN0YXRpYyB3aW5kb3coZSl7cmV0dXJuIG5ldyBXaW5kb3coZSl9c3RhdGljIHhkYyhlKXtyZXR1cm4gbmV3IFhkYyhlKX1zdGF0aWMgeGRwKGUpe3JldHVybiBuZXcgWGRwKGUpfXN0YXRpYyB4c2woZSl7cmV0dXJuIG5ldyBYc2woZSl9c3RhdGljIHpwbChlKXtyZXR1cm4gbmV3IFpwbChlKX19Y29uc3QgY2Y9dmwuY29ubmVjdGlvblNldC5pZDtjbGFzcyBDb25uZWN0aW9uU2V0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGNmLCJjb25uZWN0aW9uU2V0IiwhMCk7dGhpcy53c2RsQ29ubmVjdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy54bWxDb25uZWN0aW9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnhzZENvbm5lY3Rpb249bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBFZmZlY3RpdmVJbnB1dFBvbGljeSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjZiwiZWZmZWN0aXZlSW5wdXRQb2xpY3kiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRWZmZWN0aXZlT3V0cHV0UG9saWN5IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGNmLCJlZmZlY3RpdmVPdXRwdXRQb2xpY3kiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgT3BlcmF0aW9uIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGNmLCJvcGVyYXRpb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW5wdXQ9ZS5pbnB1dHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5vdXRwdXQ9ZS5vdXRwdXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUm9vdEVsZW1lbnQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoY2YsInJvb3RFbGVtZW50Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNvYXBBY3Rpb24gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoY2YsInNvYXBBY3Rpb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU29hcEFkZHJlc3MgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoY2YsInNvYXBBZGRyZXNzIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIGNvbm5lY3Rpb25fc2V0X1VyaSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjZiwidXJpIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFdzZGxBZGRyZXNzIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGNmLCJ3c2RsQWRkcmVzcyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBXc2RsQ29ubmVjdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjZiwid3NkbENvbm5lY3Rpb24iLCEwKTt0aGlzLmRhdGFEZXNjcmlwdGlvbj1lLmRhdGFEZXNjcmlwdGlvbnx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5lZmZlY3RpdmVJbnB1dFBvbGljeT1udWxsO3RoaXMuZWZmZWN0aXZlT3V0cHV0UG9saWN5PW51bGw7dGhpcy5vcGVyYXRpb249bnVsbDt0aGlzLnNvYXBBY3Rpb249bnVsbDt0aGlzLnNvYXBBZGRyZXNzPW51bGw7dGhpcy53c2RsQWRkcmVzcz1udWxsfX1jbGFzcyBYbWxDb25uZWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGNmLCJ4bWxDb25uZWN0aW9uIiwhMCk7dGhpcy5kYXRhRGVzY3JpcHRpb249ZS5kYXRhRGVzY3JpcHRpb258fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXJpPW51bGx9fWNsYXNzIFhzZENvbm5lY3Rpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoY2YsInhzZENvbm5lY3Rpb24iLCEwKTt0aGlzLmRhdGFEZXNjcmlwdGlvbj1lLmRhdGFEZXNjcmlwdGlvbnx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yb290RWxlbWVudD1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIENvbm5lY3Rpb25TZXROYW1lc3BhY2V7c3RhdGljW3FsXShlLHQpe3JldHVybiBPYmplY3QuaGFzT3duKENvbm5lY3Rpb25TZXROYW1lc3BhY2UsZSk/Q29ubmVjdGlvblNldE5hbWVzcGFjZVtlXSh0KTp2b2lkIDB9c3RhdGljIGNvbm5lY3Rpb25TZXQoZSl7cmV0dXJuIG5ldyBDb25uZWN0aW9uU2V0KGUpfXN0YXRpYyBlZmZlY3RpdmVJbnB1dFBvbGljeShlKXtyZXR1cm4gbmV3IEVmZmVjdGl2ZUlucHV0UG9saWN5KGUpfXN0YXRpYyBlZmZlY3RpdmVPdXRwdXRQb2xpY3koZSl7cmV0dXJuIG5ldyBFZmZlY3RpdmVPdXRwdXRQb2xpY3koZSl9c3RhdGljIG9wZXJhdGlvbihlKXtyZXR1cm4gbmV3IE9wZXJhdGlvbihlKX1zdGF0aWMgcm9vdEVsZW1lbnQoZSl7cmV0dXJuIG5ldyBSb290RWxlbWVudChlKX1zdGF0aWMgc29hcEFjdGlvbihlKXtyZXR1cm4gbmV3IFNvYXBBY3Rpb24oZSl9c3RhdGljIHNvYXBBZGRyZXNzKGUpe3JldHVybiBuZXcgU29hcEFkZHJlc3MoZSl9c3RhdGljIHVyaShlKXtyZXR1cm4gbmV3IGNvbm5lY3Rpb25fc2V0X1VyaShlKX1zdGF0aWMgd3NkbEFkZHJlc3MoZSl7cmV0dXJuIG5ldyBXc2RsQWRkcmVzcyhlKX1zdGF0aWMgd3NkbENvbm5lY3Rpb24oZSl7cmV0dXJuIG5ldyBXc2RsQ29ubmVjdGlvbihlKX1zdGF0aWMgeG1sQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFhtbENvbm5lY3Rpb24oZSl9c3RhdGljIHhzZENvbm5lY3Rpb24oZSl7cmV0dXJuIG5ldyBYc2RDb25uZWN0aW9uKGUpfX1jb25zdCBoZj12bC5kYXRhc2V0cy5pZDtjbGFzcyBkYXRhc2V0c19EYXRhIGV4dGVuZHMgWG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGhmLCJkYXRhIixlKX1bR29dKCl7cmV0dXJuITB9fWNsYXNzIERhdGFzZXRzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGhmLCJkYXRhc2V0cyIsITApO3RoaXMuZGF0YT1udWxsO3RoaXMuU2lnbmF0dXJlPW51bGx9W2FsXShlKXtjb25zdCB0PWVbZWxdOygiZGF0YSI9PT10JiZlW1pvXT09PWhmfHwiU2lnbmF0dXJlIj09PXQmJmVbWm9dPT09dmwuc2lnbmF0dXJlLmlkKSYmKHRoaXNbdF09ZSk7dGhpc1tsb10oZSl9fWNsYXNzIERhdGFzZXRzTmFtZXNwYWNle3N0YXRpY1txbF0oZSx0KXtyZXR1cm4gT2JqZWN0Lmhhc093bihEYXRhc2V0c05hbWVzcGFjZSxlKT9EYXRhc2V0c05hbWVzcGFjZVtlXSh0KTp2b2lkIDB9c3RhdGljIGRhdGFzZXRzKGUpe3JldHVybiBuZXcgRGF0YXNldHMoZSl9c3RhdGljIGRhdGEoZSl7cmV0dXJuIG5ldyBkYXRhc2V0c19EYXRhKGUpfX1jb25zdCB1Zj12bC5sb2NhbGVTZXQuaWQ7Y2xhc3MgQ2FsZW5kYXJTeW1ib2xzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJjYWxlbmRhclN5bWJvbHMiLCEwKTt0aGlzLm5hbWU9ImdyZWdvcmlhbiI7dGhpcy5kYXlOYW1lcz1uZXcgWEZBT2JqZWN0QXJyYXkoMik7dGhpcy5lcmFOYW1lcz1udWxsO3RoaXMubWVyaWRpZW1OYW1lcz1udWxsO3RoaXMubW9udGhOYW1lcz1uZXcgWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIEN1cnJlbmN5U3ltYm9sIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJjdXJyZW5jeVN5bWJvbCIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsic3ltYm9sIiwiaXNvbmFtZSIsImRlY2ltYWwiXSl9fWNsYXNzIEN1cnJlbmN5U3ltYm9scyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih1ZiwiY3VycmVuY3lTeW1ib2xzIiwhMCk7dGhpcy5jdXJyZW5jeVN5bWJvbD1uZXcgWEZBT2JqZWN0QXJyYXkoMyl9fWNsYXNzIERhdGVQYXR0ZXJuIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJkYXRlUGF0dGVybiIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgRGF0ZVBhdHRlcm5zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJkYXRlUGF0dGVybnMiLCEwKTt0aGlzLmRhdGVQYXR0ZXJuPW5ldyBYRkFPYmplY3RBcnJheSg0KX19Y2xhc3MgRGF0ZVRpbWVTeW1ib2xzIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih1ZiwiZGF0ZVRpbWVTeW1ib2xzIil9fWNsYXNzIERheSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih1ZiwiZGF5Iil9fWNsYXNzIERheU5hbWVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJkYXlOYW1lcyIsITApO3RoaXMuYWJicj1nZXRJbnRlZ2VyKHtkYXRhOmUuYWJicixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuZGF5PW5ldyBYRkFPYmplY3RBcnJheSg3KX19Y2xhc3MgRXJhIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJlcmEiKX19Y2xhc3MgRXJhTmFtZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodWYsImVyYU5hbWVzIiwhMCk7dGhpcy5lcmE9bmV3IFhGQU9iamVjdEFycmF5KDIpfX1jbGFzcyBsb2NhbGVfc2V0X0xvY2FsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih1ZiwibG9jYWxlIiwhMCk7dGhpcy5kZXNjPWUuZGVzY3x8IiI7dGhpcy5uYW1lPSJpc29uYW1lIjt0aGlzLmNhbGVuZGFyU3ltYm9scz1udWxsO3RoaXMuY3VycmVuY3lTeW1ib2xzPW51bGw7dGhpcy5kYXRlUGF0dGVybnM9bnVsbDt0aGlzLmRhdGVUaW1lU3ltYm9scz1udWxsO3RoaXMubnVtYmVyUGF0dGVybnM9bnVsbDt0aGlzLm51bWJlclN5bWJvbHM9bnVsbDt0aGlzLnRpbWVQYXR0ZXJucz1udWxsO3RoaXMudHlwZUZhY2VzPW51bGx9fWNsYXNzIGxvY2FsZV9zZXRfTG9jYWxlU2V0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJsb2NhbGVTZXQiLCEwKTt0aGlzLmxvY2FsZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1lcmlkaWVtIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJtZXJpZGllbSIpfX1jbGFzcyBNZXJpZGllbU5hbWVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJtZXJpZGllbU5hbWVzIiwhMCk7dGhpcy5tZXJpZGllbT1uZXcgWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIE1vbnRoIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJtb250aCIpfX1jbGFzcyBNb250aE5hbWVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJtb250aE5hbWVzIiwhMCk7dGhpcy5hYmJyPWdldEludGVnZXIoe2RhdGE6ZS5hYmJyLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5tb250aD1uZXcgWEZBT2JqZWN0QXJyYXkoMTIpfX1jbGFzcyBOdW1iZXJQYXR0ZXJuIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJudW1iZXJQYXR0ZXJuIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBOdW1iZXJQYXR0ZXJucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih1ZiwibnVtYmVyUGF0dGVybnMiLCEwKTt0aGlzLm51bWJlclBhdHRlcm49bmV3IFhGQU9iamVjdEFycmF5KDQpfX1jbGFzcyBOdW1iZXJTeW1ib2wgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodWYsIm51bWJlclN5bWJvbCIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiZGVjaW1hbCIsImdyb3VwaW5nIiwicGVyY2VudCIsIm1pbnVzIiwiemVybyJdKX19Y2xhc3MgTnVtYmVyU3ltYm9scyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih1ZiwibnVtYmVyU3ltYm9scyIsITApO3RoaXMubnVtYmVyU3ltYm9sPW5ldyBYRkFPYmplY3RBcnJheSg1KX19Y2xhc3MgVGltZVBhdHRlcm4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodWYsInRpbWVQYXR0ZXJuIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBUaW1lUGF0dGVybnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodWYsInRpbWVQYXR0ZXJucyIsITApO3RoaXMudGltZVBhdHRlcm49bmV3IFhGQU9iamVjdEFycmF5KDQpfX1jbGFzcyBUeXBlRmFjZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih1ZiwidHlwZUZhY2UiLCEwKTt0aGlzLm5hbWU9IiJ8ZS5uYW1lfX1jbGFzcyBUeXBlRmFjZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodWYsInR5cGVGYWNlcyIsITApO3RoaXMudHlwZUZhY2U9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBMb2NhbGVTZXROYW1lc3BhY2V7c3RhdGljW3FsXShlLHQpe3JldHVybiBPYmplY3QuaGFzT3duKExvY2FsZVNldE5hbWVzcGFjZSxlKT9Mb2NhbGVTZXROYW1lc3BhY2VbZV0odCk6dm9pZCAwfXN0YXRpYyBjYWxlbmRhclN5bWJvbHMoZSl7cmV0dXJuIG5ldyBDYWxlbmRhclN5bWJvbHMoZSl9c3RhdGljIGN1cnJlbmN5U3ltYm9sKGUpe3JldHVybiBuZXcgQ3VycmVuY3lTeW1ib2woZSl9c3RhdGljIGN1cnJlbmN5U3ltYm9scyhlKXtyZXR1cm4gbmV3IEN1cnJlbmN5U3ltYm9scyhlKX1zdGF0aWMgZGF0ZVBhdHRlcm4oZSl7cmV0dXJuIG5ldyBEYXRlUGF0dGVybihlKX1zdGF0aWMgZGF0ZVBhdHRlcm5zKGUpe3JldHVybiBuZXcgRGF0ZVBhdHRlcm5zKGUpfXN0YXRpYyBkYXRlVGltZVN5bWJvbHMoZSl7cmV0dXJuIG5ldyBEYXRlVGltZVN5bWJvbHMoZSl9c3RhdGljIGRheShlKXtyZXR1cm4gbmV3IERheShlKX1zdGF0aWMgZGF5TmFtZXMoZSl7cmV0dXJuIG5ldyBEYXlOYW1lcyhlKX1zdGF0aWMgZXJhKGUpe3JldHVybiBuZXcgRXJhKGUpfXN0YXRpYyBlcmFOYW1lcyhlKXtyZXR1cm4gbmV3IEVyYU5hbWVzKGUpfXN0YXRpYyBsb2NhbGUoZSl7cmV0dXJuIG5ldyBsb2NhbGVfc2V0X0xvY2FsZShlKX1zdGF0aWMgbG9jYWxlU2V0KGUpe3JldHVybiBuZXcgbG9jYWxlX3NldF9Mb2NhbGVTZXQoZSl9c3RhdGljIG1lcmlkaWVtKGUpe3JldHVybiBuZXcgTWVyaWRpZW0oZSl9c3RhdGljIG1lcmlkaWVtTmFtZXMoZSl7cmV0dXJuIG5ldyBNZXJpZGllbU5hbWVzKGUpfXN0YXRpYyBtb250aChlKXtyZXR1cm4gbmV3IE1vbnRoKGUpfXN0YXRpYyBtb250aE5hbWVzKGUpe3JldHVybiBuZXcgTW9udGhOYW1lcyhlKX1zdGF0aWMgbnVtYmVyUGF0dGVybihlKXtyZXR1cm4gbmV3IE51bWJlclBhdHRlcm4oZSl9c3RhdGljIG51bWJlclBhdHRlcm5zKGUpe3JldHVybiBuZXcgTnVtYmVyUGF0dGVybnMoZSl9c3RhdGljIG51bWJlclN5bWJvbChlKXtyZXR1cm4gbmV3IE51bWJlclN5bWJvbChlKX1zdGF0aWMgbnVtYmVyU3ltYm9scyhlKXtyZXR1cm4gbmV3IE51bWJlclN5bWJvbHMoZSl9c3RhdGljIHRpbWVQYXR0ZXJuKGUpe3JldHVybiBuZXcgVGltZVBhdHRlcm4oZSl9c3RhdGljIHRpbWVQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IFRpbWVQYXR0ZXJucyhlKX1zdGF0aWMgdHlwZUZhY2UoZSl7cmV0dXJuIG5ldyBUeXBlRmFjZShlKX1zdGF0aWMgdHlwZUZhY2VzKGUpe3JldHVybiBuZXcgVHlwZUZhY2VzKGUpfX1jb25zdCBtZj12bC5zaWduYXR1cmUuaWQ7Y2xhc3Mgc2lnbmF0dXJlX1NpZ25hdHVyZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihtZiwic2lnbmF0dXJlIiwhMCl9fWNsYXNzIFNpZ25hdHVyZU5hbWVzcGFjZXtzdGF0aWNbcWxdKGUsdCl7cmV0dXJuIE9iamVjdC5oYXNPd24oU2lnbmF0dXJlTmFtZXNwYWNlLGUpP1NpZ25hdHVyZU5hbWVzcGFjZVtlXSh0KTp2b2lkIDB9c3RhdGljIHNpZ25hdHVyZShlKXtyZXR1cm4gbmV3IHNpZ25hdHVyZV9TaWduYXR1cmUoZSl9fWNvbnN0IHBmPXZsLnN0eWxlc2hlZXQuaWQ7Y2xhc3MgU3R5bGVzaGVldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihwZiwic3R5bGVzaGVldCIsITApfX1jbGFzcyBTdHlsZXNoZWV0TmFtZXNwYWNle3N0YXRpY1txbF0oZSx0KXtyZXR1cm4gT2JqZWN0Lmhhc093bihTdHlsZXNoZWV0TmFtZXNwYWNlLGUpP1N0eWxlc2hlZXROYW1lc3BhY2VbZV0odCk6dm9pZCAwfXN0YXRpYyBzdHlsZXNoZWV0KGUpe3JldHVybiBuZXcgU3R5bGVzaGVldChlKX19Y29uc3QgZGY9dmwueGRwLmlkO2NsYXNzIHhkcF9YZHAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZGYsInhkcCIsITApO3RoaXMudXVpZD1lLnV1aWR8fCIiO3RoaXMudGltZVN0YW1wPWUudGltZVN0YW1wfHwiIjt0aGlzLmNvbmZpZz1udWxsO3RoaXMuY29ubmVjdGlvblNldD1udWxsO3RoaXMuZGF0YXNldHM9bnVsbDt0aGlzLmxvY2FsZVNldD1udWxsO3RoaXMuc3R5bGVzaGVldD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZW1wbGF0ZT1udWxsfVtubF0oZSl7Y29uc3QgdD12bFtlW2VsXV07cmV0dXJuIHQmJmVbWm9dPT09dC5pZH19Y2xhc3MgWGRwTmFtZXNwYWNle3N0YXRpY1txbF0oZSx0KXtyZXR1cm4gT2JqZWN0Lmhhc093bihYZHBOYW1lc3BhY2UsZSk/WGRwTmFtZXNwYWNlW2VdKHQpOnZvaWQgMH1zdGF0aWMgeGRwKGUpe3JldHVybiBuZXcgeGRwX1hkcChlKX19Y29uc3QgZ2Y9dmwueGh0bWwuaWQsYmY9U3ltYm9sKCksd2Y9bmV3IFNldChbImNvbG9yIiwiZm9udCIsImZvbnQtZmFtaWx5IiwiZm9udC1zaXplIiwiZm9udC1zdHJldGNoIiwiZm9udC1zdHlsZSIsImZvbnQtd2VpZ2h0IiwibWFyZ2luIiwibWFyZ2luLWJvdHRvbSIsIm1hcmdpbi1sZWZ0IiwibWFyZ2luLXJpZ2h0IiwibWFyZ2luLXRvcCIsImxldHRlci1zcGFjaW5nIiwibGluZS1oZWlnaHQiLCJvcnBoYW5zIiwicGFnZS1icmVhay1hZnRlciIsInBhZ2UtYnJlYWstYmVmb3JlIiwicGFnZS1icmVhay1pbnNpZGUiLCJ0YWItaW50ZXJ2YWwiLCJ0YWItc3RvcCIsInRleHQtYWxpZ24iLCJ0ZXh0LWRlY29yYXRpb24iLCJ0ZXh0LWluZGVudCIsInZlcnRpY2FsLWFsaWduIiwid2lkb3dzIiwia2VybmluZy1tb2RlIiwieGZhLWZvbnQtaG9yaXpvbnRhbC1zY2FsZSIsInhmYS1mb250LXZlcnRpY2FsLXNjYWxlIiwieGZhLXNwYWNlcnVuIiwieGZhLXRhYi1zdG9wcyJdKSxqZj1uZXcgTWFwKFtbInBhZ2UtYnJlYWstYWZ0ZXIiLCJicmVha0FmdGVyIl0sWyJwYWdlLWJyZWFrLWJlZm9yZSIsImJyZWFrQmVmb3JlIl0sWyJwYWdlLWJyZWFrLWluc2lkZSIsImJyZWFrSW5zaWRlIl0sWyJrZXJuaW5nLW1vZGUiLGU9PiJub25lIj09PWU/Im5vbmUiOiJub3JtYWwiXSxbInhmYS1mb250LWhvcml6b250YWwtc2NhbGUiLGU9PmBzY2FsZVgoJHtNYXRoLm1heCgwLHBhcnNlSW50KGUsMTApLzEwMCkudG9GaXhlZCgyKX0pYF0sWyJ4ZmEtZm9udC12ZXJ0aWNhbC1zY2FsZSIsZT0+YHNjYWxlWSgke01hdGgubWF4KDAscGFyc2VJbnQoZSwxMCkvMTAwKS50b0ZpeGVkKDIpfSlgXSxbInhmYS1zcGFjZXJ1biIsIiJdLFsieGZhLXRhYi1zdG9wcyIsIiJdLFsiZm9udC1zaXplIiwoZSx0KT0+bWVhc3VyZVRvU3RyaW5nKC45OSooZT10LmZvbnRTaXplPU1hdGguYWJzKGdldE1lYXN1cmVtZW50KGUpKSkpXSxbImxldHRlci1zcGFjaW5nIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbImxpbmUtaGVpZ2h0IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbiIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJtYXJnaW4tYm90dG9tIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi1sZWZ0IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi1yaWdodCIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJtYXJnaW4tdG9wIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbInRleHQtaW5kZW50IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbImZvbnQtZmFtaWx5IixlPT5lXSxbInZlcnRpY2FsLWFsaWduIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXV0pLGtmPS9ccysvZyx5Zj0vW1xyXG5dKy9nLHFmPS9cclxuPy9nO2Z1bmN0aW9uIG1hcFN0eWxlKGUsdCxhKXtjb25zdCBuPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoIWUpcmV0dXJuIG47Y29uc3Qgcz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFt0LGFdb2YgZS5zcGxpdCgiOyIpLm1hcChlPT5lLnNwbGl0KCI6IiwyKSkpe2NvbnN0IGU9amYuZ2V0KHQpO2lmKCIiPT09ZSljb250aW51ZTtsZXQgcj1hO2UmJihyPSJzdHJpbmciPT10eXBlb2YgZT9lOmUoYSxzKSk7dC5lbmRzV2l0aCgic2NhbGUiKT9uLnRyYW5zZm9ybT1uLnRyYW5zZm9ybT9gJHtuW3RdfSAke3J9YDpyOm5bdC5yZXBsYWNlQWxsKC8tKFthLXpdKS9naSwoZSx0KT0+dC50b1VwcGVyQ2FzZSgpKV09cn1uLmZvbnRGYW1pbHkmJnNldEZvbnRGYW1pbHkoe3R5cGVmYWNlOm4uZm9udEZhbWlseSx3ZWlnaHQ6bi5mb250V2VpZ2h0fHwibm9ybWFsIixwb3N0dXJlOm4uZm9udFN0eWxlfHwibm9ybWFsIixzaXplOnMuZm9udFNpemV8fDB9LHQsdFtQb10uZm9udEZpbmRlcixuKTtpZihhJiZuLnZlcnRpY2FsQWxpZ24mJiIwcHgiIT09bi52ZXJ0aWNhbEFsaWduJiZuLmZvbnRTaXplKXtjb25zdCBlPS41ODMsdD0uMzMzLGE9Z2V0TWVhc3VyZW1lbnQobi5mb250U2l6ZSk7bi5mb250U2l6ZT1tZWFzdXJlVG9TdHJpbmcoYSplKTtuLnZlcnRpY2FsQWxpZ249bWVhc3VyZVRvU3RyaW5nKE1hdGguc2lnbihnZXRNZWFzdXJlbWVudChuLnZlcnRpY2FsQWxpZ24pKSphKnQpfWEmJm4uZm9udFNpemUmJihuLmZvbnRTaXplPWBjYWxjKCR7bi5mb250U2l6ZX0gKiB2YXIoLS10b3RhbC1zY2FsZS1mYWN0b3IpKWApO2ZpeFRleHRJbmRlbnQobik7cmV0dXJuIG59Y29uc3QgdmY9bmV3IFNldChbImJvZHkiLCJodG1sIl0pO2NsYXNzIFhodG1sT2JqZWN0IGV4dGVuZHMgWG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZ2YsdCk7dGhpc1tiZl09ITE7dGhpcy5zdHlsZT1lLnN0eWxlfHwiIn1bY29dKGUpe3N1cGVyW2NvXShlKTt0aGlzLnN0eWxlPWZ1bmN0aW9uIGNoZWNrU3R5bGUoZSl7cmV0dXJuIGUuc3R5bGU/ZS5zdHlsZS5zcGxpdCgiOyIpLmZpbHRlcihlPT4hIWUudHJpbSgpKS5tYXAoZT0+ZS5zcGxpdCgiOiIsMikubWFwKGU9PmUudHJpbSgpKSkuZmlsdGVyKChbdCxhXSk9PnsiZm9udC1mYW1pbHkiPT09dCYmZVtQb10udXNlZFR5cGVmYWNlcy5hZGQoYSk7cmV0dXJuIHdmLmhhcyh0KX0pLm1hcChlPT5lLmpvaW4oIjoiKSkuam9pbigiOyIpOiIifSh0aGlzKX1baW9dKCl7cmV0dXJuIXZmLmhhcyh0aGlzW2VsXSl9W3NsXShlLHQ9ITEpe2lmKHQpdGhpc1tiZl09ITA7ZWxzZXtlPWUucmVwbGFjZUFsbCh5ZiwiIik7dGhpcy5zdHlsZS5pbmNsdWRlcygieGZhLXNwYWNlcnVuOnllcyIpfHwoZT1lLnJlcGxhY2VBbGwoa2YsIiAiKSl9ZSYmKHRoaXNbZ29dKz1lKX1bcmxdKGUsdD0hMCl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpLG49e3RvcDpOYU4sYm90dG9tOk5hTixsZWZ0Ok5hTixyaWdodDpOYU59O2xldCBzPW51bGw7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLnN0eWxlLnNwbGl0KCI7IikubWFwKGU9PmUuc3BsaXQoIjoiLDIpKSlzd2l0Y2goZSl7Y2FzZSJmb250LWZhbWlseSI6YS50eXBlZmFjZT1zdHJpcFF1b3Rlcyh0KTticmVhaztjYXNlImZvbnQtc2l6ZSI6YS5zaXplPWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UiZm9udC13ZWlnaHQiOmEud2VpZ2h0PXQ7YnJlYWs7Y2FzZSJmb250LXN0eWxlIjphLnBvc3R1cmU9dDticmVhaztjYXNlImxldHRlci1zcGFjaW5nIjphLmxldHRlclNwYWNpbmc9Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJtYXJnaW4iOmNvbnN0IGU9dC5zcGxpdCgvIFx0LykubWFwKGdldE1lYXN1cmVtZW50KTtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMTpuLnRvcD1uLmJvdHRvbT1uLmxlZnQ9bi5yaWdodD1lWzBdO2JyZWFrO2Nhc2UgMjpuLnRvcD1uLmJvdHRvbT1lWzBdO24ubGVmdD1uLnJpZ2h0PWVbMV07YnJlYWs7Y2FzZSAzOm4udG9wPWVbMF07bi5ib3R0b209ZVsyXTtuLmxlZnQ9bi5yaWdodD1lWzFdO2JyZWFrO2Nhc2UgNDpuLnRvcD1lWzBdO24ubGVmdD1lWzFdO24uYm90dG9tPWVbMl07bi5yaWdodD1lWzNdfWJyZWFrO2Nhc2UibWFyZ2luLXRvcCI6bi50b3A9Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJtYXJnaW4tYm90dG9tIjpuLmJvdHRvbT1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlIm1hcmdpbi1sZWZ0IjpuLmxlZnQ9Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJtYXJnaW4tcmlnaHQiOm4ucmlnaHQ9Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJsaW5lLWhlaWdodCI6cz1nZXRNZWFzdXJlbWVudCh0KX1lLnB1c2hEYXRhKGEsbixzKTtpZih0aGlzW2dvXSllLmFkZFN0cmluZyh0aGlzW2dvXSk7ZWxzZSBmb3IoY29uc3QgdCBvZiB0aGlzW09vXSgpKSIjdGV4dCIhPT10W2VsXT90W3JsXShlKTplLmFkZFN0cmluZyh0W2dvXSk7dCYmZS5wb3BGb250KCl9W3dsXShlKXtjb25zdCB0PVtdO3RoaXNbam9dPXtjaGlsZHJlbjp0fTt0aGlzW2ZvXSh7fSk7aWYoMD09PXQubGVuZ3RoJiYhdGhpc1tnb10pcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7bGV0IGE7YT10aGlzW2JmXT90aGlzW2dvXT90aGlzW2dvXS5yZXBsYWNlQWxsKHFmLCJcbiIpOnZvaWQgMDp0aGlzW2dvXXx8dm9pZCAwO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6dGhpc1tlbF0sYXR0cmlidXRlczp7aHJlZjp0aGlzLmhyZWYsc3R5bGU6bWFwU3R5bGUodGhpcy5zdHlsZSx0aGlzLHRoaXNbYmZdKX0sY2hpbGRyZW46dCx2YWx1ZTphfSl9fWNsYXNzIEEgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJhIik7dGhpcy5ocmVmPWZpeFVSTChlLmhyZWYpfHwiIn19Y2xhc3MgQiBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImIiKX1bcmxdKGUpe2UucHVzaEZvbnQoe3dlaWdodDoiYm9sZCJ9KTtzdXBlcltybF0oZSk7ZS5wb3BGb250KCl9fWNsYXNzIEJvZHkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJib2R5Iil9W3dsXShlKXtjb25zdCB0PXN1cGVyW3dsXShlKSx7aHRtbDphfT10O2lmKCFhKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2EubmFtZT0iZGl2IjthLmF0dHJpYnV0ZXMuY2xhc3M9WyJ4ZmFSaWNoIl07cmV0dXJuIHR9fWNsYXNzIEJyIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYnIiKX1bZ2xdKCl7cmV0dXJuIlxuIn1bcmxdKGUpe2UuYWRkU3RyaW5nKCJcbiIpfVt3bF0oZSl7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiYnIifSl9fWNsYXNzIEh0bWwgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJodG1sIil9W3dsXShlKXtjb25zdCB0PVtdO3RoaXNbam9dPXtjaGlsZHJlbjp0fTt0aGlzW2ZvXSh7fSk7aWYoMD09PXQubGVuZ3RoKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFSaWNoIl0sc3R5bGU6e319LHZhbHVlOnRoaXNbZ29dfHwiIn0pO2lmKDE9PT10Lmxlbmd0aCl7Y29uc3QgZT10WzBdO2lmKGUuYXR0cmlidXRlcz8uY2xhc3MuaW5jbHVkZXMoInhmYVJpY2giKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGUpfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFSaWNoIl0sc3R5bGU6e319LGNoaWxkcmVuOnR9KX19Y2xhc3MgSSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImkiKX1bcmxdKGUpe2UucHVzaEZvbnQoe3Bvc3R1cmU6Iml0YWxpYyJ9KTtzdXBlcltybF0oZSk7ZS5wb3BGb250KCl9fWNsYXNzIExpIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwibGkiKX19Y2xhc3MgT2wgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJvbCIpfX1jbGFzcyBQIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwicCIpfVtybF0oZSl7c3VwZXJbcmxdKGUsITEpO2UuYWRkU3RyaW5nKCJcbiIpO2UuYWRkUGFyYSgpO2UucG9wRm9udCgpfVtnbF0oKXtyZXR1cm4gdGhpc1tNb10oKVtPb10oKS5hdCgtMSk9PT10aGlzP3N1cGVyW2dsXSgpOnN1cGVyW2dsXSgpKyJcbiJ9fWNsYXNzIFNwYW4gZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzcGFuIil9fWNsYXNzIFN1YiBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInN1YiIpfX1jbGFzcyBTdXAgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzdXAiKX19Y2xhc3MgVWwgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJ1bCIpfX1jbGFzcyBYaHRtbE5hbWVzcGFjZXtzdGF0aWNbcWxdKGUsdCl7cmV0dXJuIE9iamVjdC5oYXNPd24oWGh0bWxOYW1lc3BhY2UsZSk/WGh0bWxOYW1lc3BhY2VbZV0odCk6dm9pZCAwfXN0YXRpYyBhKGUpe3JldHVybiBuZXcgQShlKX1zdGF0aWMgYihlKXtyZXR1cm4gbmV3IEIoZSl9c3RhdGljIGJvZHkoZSl7cmV0dXJuIG5ldyBCb2R5KGUpfXN0YXRpYyBicihlKXtyZXR1cm4gbmV3IEJyKGUpfXN0YXRpYyBodG1sKGUpe3JldHVybiBuZXcgSHRtbChlKX1zdGF0aWMgaShlKXtyZXR1cm4gbmV3IEkoZSl9c3RhdGljIGxpKGUpe3JldHVybiBuZXcgTGkoZSl9c3RhdGljIG9sKGUpe3JldHVybiBuZXcgT2woZSl9c3RhdGljIHAoZSl7cmV0dXJuIG5ldyBQKGUpfXN0YXRpYyBzcGFuKGUpe3JldHVybiBuZXcgU3BhbihlKX1zdGF0aWMgc3ViKGUpe3JldHVybiBuZXcgU3ViKGUpfXN0YXRpYyBzdXAoZSl7cmV0dXJuIG5ldyBTdXAoZSl9c3RhdGljIHVsKGUpe3JldHVybiBuZXcgVWwoZSl9fWNvbnN0IFNmPXtjb25maWc6Q29uZmlnTmFtZXNwYWNlLGNvbm5lY3Rpb246Q29ubmVjdGlvblNldE5hbWVzcGFjZSxkYXRhc2V0czpEYXRhc2V0c05hbWVzcGFjZSxsb2NhbGVTZXQ6TG9jYWxlU2V0TmFtZXNwYWNlLHNpZ25hdHVyZTpTaWduYXR1cmVOYW1lc3BhY2Usc3R5bGVzaGVldDpTdHlsZXNoZWV0TmFtZXNwYWNlLHRlbXBsYXRlOlRlbXBsYXRlTmFtZXNwYWNlLHhkcDpYZHBOYW1lc3BhY2UseGh0bWw6WGh0bWxOYW1lc3BhY2V9O2NsYXNzIFVua25vd25OYW1lc3BhY2V7Y29uc3RydWN0b3IoZSl7dGhpcy5uYW1lc3BhY2VJZD1lfVtxbF0oZSx0KXtyZXR1cm4gbmV3IFhtbE9iamVjdCh0aGlzLm5hbWVzcGFjZUlkLGUsdCl9fWNsYXNzIFJvb3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoLTEsInJvb3QiLE9iamVjdC5jcmVhdGUobnVsbCkpO3RoaXMuZWxlbWVudD1udWxsO3RoaXNbX29dPWV9W2FsXShlKXt0aGlzLmVsZW1lbnQ9ZTtyZXR1cm4hMH1ba29dKCl7c3VwZXJba29dKCk7aWYodGhpcy5lbGVtZW50LnRlbXBsYXRlIGluc3RhbmNlb2YgVGVtcGxhdGUpe3RoaXNbX29dLnNldChmbCx0aGlzLmVsZW1lbnQpO3RoaXMuZWxlbWVudC50ZW1wbGF0ZVtjbF0odGhpc1tfb10pO3RoaXMuZWxlbWVudC50ZW1wbGF0ZVtfb109dGhpc1tfb119fX1jbGFzcyBFbXB0eSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC0xLCIiLE9iamVjdC5jcmVhdGUobnVsbCkpfVthbF0oZSl7cmV0dXJuITF9fWNsYXNzIEJ1aWxkZXJ7Y29uc3RydWN0b3IoZT1udWxsKXt0aGlzLl9uYW1lc3BhY2VTdGFjaz1bXTt0aGlzLl9uc0Fnbm9zdGljTGV2ZWw9MDt0aGlzLl9uYW1lc3BhY2VQcmVmaXhlcz1uZXcgTWFwO3RoaXMuX25hbWVzcGFjZXM9bmV3IE1hcDt0aGlzLl9uZXh0TnNJZD1NYXRoLm1heCguLi5PYmplY3QudmFsdWVzKHZsKS5tYXAoKHtpZDplfSk9PmUpKTt0aGlzLl9jdXJyZW50TmFtZXNwYWNlPWV8fG5ldyBVbmtub3duTmFtZXNwYWNlKCsrdGhpcy5fbmV4dE5zSWQpfWJ1aWxkUm9vdChlKXtyZXR1cm4gbmV3IFJvb3QoZSl9YnVpbGQoe25zUHJlZml4OmUsbmFtZTp0LGF0dHJpYnV0ZXM6YSxuYW1lc3BhY2U6bixwcmVmaXhlczpzfSl7Y29uc3Qgcj1udWxsIT09bjtpZihyKXt0aGlzLl9uYW1lc3BhY2VTdGFjay5wdXNoKHRoaXMuX2N1cnJlbnROYW1lc3BhY2UpO3RoaXMuX2N1cnJlbnROYW1lc3BhY2U9dGhpcy5fc2VhcmNoTmFtZXNwYWNlKG4pfXMmJnRoaXMuX2FkZE5hbWVzcGFjZVByZWZpeChzKTtpZihPYmplY3QuaGFzT3duKGEsdGwpKXtjb25zdCBlPVNmLmRhdGFzZXRzLHQ9YVt0bF07bGV0IG49bnVsbDtmb3IoY29uc3RbYSxzXW9mIE9iamVjdC5lbnRyaWVzKHQpKXtpZih0aGlzLl9nZXROYW1lc3BhY2VUb1VzZShhKT09PWUpe249e3hmYTpzfTticmVha319bj9hW3RsXT1uOmRlbGV0ZSBhW3RsXX1jb25zdCBpPXRoaXMuX2dldE5hbWVzcGFjZVRvVXNlKGUpLG89aT8uW3FsXSh0LGEpfHxuZXcgRW1wdHk7b1tHb10oKSYmdGhpcy5fbnNBZ25vc3RpY0xldmVsKys7KHJ8fHN8fG9bR29dKCkpJiYob1t1b109e2hhc05hbWVzcGFjZTpyLHByZWZpeGVzOnMsbnNBZ25vc3RpYzpvW0dvXSgpfSk7cmV0dXJuIG99aXNOc0Fnbm9zdGljKCl7cmV0dXJuIHRoaXMuX25zQWdub3N0aWNMZXZlbD4wfV9zZWFyY2hOYW1lc3BhY2UoZSl7bGV0IHQ9dGhpcy5fbmFtZXNwYWNlcy5nZXQoZSk7aWYodClyZXR1cm4gdDtmb3IoY29uc3RbYSx7Y2hlY2s6bn1db2YgT2JqZWN0LmVudHJpZXModmwpKWlmKG4oZSkpe3Q9U2ZbYV07aWYodCl7dGhpcy5fbmFtZXNwYWNlcy5zZXQoZSx0KTtyZXR1cm4gdH1icmVha310PW5ldyBVbmtub3duTmFtZXNwYWNlKCsrdGhpcy5fbmV4dE5zSWQpO3RoaXMuX25hbWVzcGFjZXMuc2V0KGUsdCk7cmV0dXJuIHR9X2FkZE5hbWVzcGFjZVByZWZpeChlKXtmb3IoY29uc3R7cHJlZml4OnQsdmFsdWU6YX1vZiBlKXtjb25zdCBlPXRoaXMuX3NlYXJjaE5hbWVzcGFjZShhKTt0aGlzLl9uYW1lc3BhY2VQcmVmaXhlcy5nZXRPckluc2VydENvbXB1dGVkKHQsbWFrZUFycikucHVzaChlKX19X2dldE5hbWVzcGFjZVRvVXNlKGUpe2lmKCFlKXJldHVybiB0aGlzLl9jdXJyZW50TmFtZXNwYWNlO2NvbnN0IHQ9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpO2lmKHQ/Lmxlbmd0aD4wKXJldHVybiB0LmF0KC0xKTt3YXJuKGBVbmtub3duIG5hbWVzcGFjZSBwcmVmaXg6ICR7ZX0uYCk7cmV0dXJuIG51bGx9Y2xlYW4oZSl7Y29uc3R7aGFzTmFtZXNwYWNlOnQscHJlZml4ZXM6YSxuc0Fnbm9zdGljOm59PWU7dCYmKHRoaXMuX2N1cnJlbnROYW1lc3BhY2U9dGhpcy5fbmFtZXNwYWNlU3RhY2sucG9wKCkpO2E/LmZvckVhY2goKHtwcmVmaXg6ZX0pPT57dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpLnBvcCgpfSk7biYmdGhpcy5fbnNBZ25vc3RpY0xldmVsLS19fWNsYXNzIFhGQVBhcnNlciBleHRlbmRzIFhNTFBhcnNlckJhc2V7Y29uc3RydWN0b3IoZT1udWxsLHQ9ITEpe3N1cGVyKCk7dGhpcy5fYnVpbGRlcj1uZXcgQnVpbGRlcihlKTt0aGlzLl9zdGFjaz1bXTt0aGlzLl9nbG9iYWxEYXRhPXt1c2VkVHlwZWZhY2VzOm5ldyBTZXR9O3RoaXMuX2lkcz1uZXcgTWFwO3RoaXMuX2N1cnJlbnQ9dGhpcy5fYnVpbGRlci5idWlsZFJvb3QodGhpcy5faWRzKTt0aGlzLl9lcnJvckNvZGU9S2k7dGhpcy5fd2hpdGVSZWdleD0vXlxzKyQvO3RoaXMuX25ic3BzPS9ceGEwKy9nO3RoaXMuX3JpY2hUZXh0PXR9cGFyc2UoZSl7dGhpcy5wYXJzZVhtbChlKTtpZih0aGlzLl9lcnJvckNvZGU9PT1LaSl7dGhpcy5fY3VycmVudFtrb10oKTtyZXR1cm4gdGhpcy5fY3VycmVudC5lbGVtZW50fX1vblRleHQoZSl7ZT1lLnJlcGxhY2UodGhpcy5fbmJzcHMsZT0+ZS5zbGljZSgxKSsiICIpO3RoaXMuX3JpY2hUZXh0fHx0aGlzLl9jdXJyZW50W2lvXSgpP3RoaXMuX2N1cnJlbnRbc2xdKGUsdGhpcy5fcmljaFRleHQpOnRoaXMuX3doaXRlUmVnZXgudGVzdChlKXx8dGhpcy5fY3VycmVudFtzbF0oZS50cmltKCkpfW9uQ2RhdGEoZSl7dGhpcy5fY3VycmVudFtzbF0oZSl9X21rQXR0cmlidXRlcyhlLHQpe2xldCBhPW51bGwsbj1udWxsO2NvbnN0IHM9T2JqZWN0LmNyZWF0ZSh7fSk7Zm9yKGNvbnN0e25hbWU6cix2YWx1ZTppfW9mIGUpaWYoInhtbG5zIj09PXIpYT93YXJuKGBYRkEgLSBtdWx0aXBsZSBuYW1lc3BhY2UgZGVmaW5pdGlvbiBpbiA8JHt0fT5gKTphPWk7ZWxzZSBpZihyLnN0YXJ0c1dpdGgoInhtbG5zOiIpKXtjb25zdCBlPXIuc3Vic3RyaW5nKDYpO24/Pz1bXTtuLnB1c2goe3ByZWZpeDplLHZhbHVlOml9KX1lbHNle2NvbnN0IGU9ci5pbmRleE9mKCI6Iik7aWYoLTE9PT1lKXNbcl09aTtlbHNle2NvbnN0IHQ9c1t0bF0/Pz1PYmplY3QuY3JlYXRlKG51bGwpLFthLG5dPVtyLnNsaWNlKDAsZSksci5zbGljZShlKzEpXTsodFthXXx8PU9iamVjdC5jcmVhdGUobnVsbCkpW25dPWl9fXJldHVyblthLG4sc119X2dldE5hbWVBbmRQcmVmaXgoZSx0KXtjb25zdCBhPWUuaW5kZXhPZigiOiIpO3JldHVybi0xPT09YT9bZSxudWxsXTpbZS5zdWJzdHJpbmcoYSsxKSx0PyIiOmUuc3Vic3RyaW5nKDAsYSldfW9uQmVnaW5FbGVtZW50KGUsdCxhKXtjb25zdFtuLHMscl09dGhpcy5fbWtBdHRyaWJ1dGVzKHQsZSksW2ksb109dGhpcy5fZ2V0TmFtZUFuZFByZWZpeChlLHRoaXMuX2J1aWxkZXIuaXNOc0Fnbm9zdGljKCkpLGw9dGhpcy5fYnVpbGRlci5idWlsZCh7bnNQcmVmaXg6byxuYW1lOmksYXR0cmlidXRlczpyLG5hbWVzcGFjZTpuLHByZWZpeGVzOnN9KTtsW1BvXT10aGlzLl9nbG9iYWxEYXRhO2lmKGEpe2xba29dKCk7dGhpcy5fY3VycmVudFthbF0obCkmJmxbdWxdKHRoaXMuX2lkcyk7bFtjb10odGhpcy5fYnVpbGRlcil9ZWxzZXt0aGlzLl9zdGFjay5wdXNoKHRoaXMuX2N1cnJlbnQpO3RoaXMuX2N1cnJlbnQ9bH19b25FbmRFbGVtZW50KGUpe2NvbnN0IHQ9dGhpcy5fY3VycmVudDtpZih0W1VvXSgpJiYic3RyaW5nIj09dHlwZW9mIHRbZ29dKXtjb25zdCBlPW5ldyBYRkFQYXJzZXI7ZS5fZ2xvYmFsRGF0YT10aGlzLl9nbG9iYWxEYXRhO2NvbnN0IGE9ZS5wYXJzZSh0W2dvXSk7dFtnb109bnVsbDt0W2FsXShhKX10W2tvXSgpO3RoaXMuX2N1cnJlbnQ9dGhpcy5fc3RhY2sucG9wKCk7dGhpcy5fY3VycmVudFthbF0odCkmJnRbdWxdKHRoaXMuX2lkcyk7dFtjb10odGhpcy5fYnVpbGRlcil9b25FcnJvcihlKXt0aGlzLl9lcnJvckNvZGU9ZX19Y2xhc3MgWEZBRmFjdG9yeXtjb25zdHJ1Y3RvcihlKXt0cnl7dGhpcy5yb290PShuZXcgWEZBUGFyc2VyKS5wYXJzZShYRkFGYWN0b3J5Ll9jcmVhdGVEb2N1bWVudChlKSk7Y29uc3QgdD1uZXcgQmluZGVyKHRoaXMucm9vdCk7dGhpcy5mb3JtPXQuYmluZCgpO3RoaXMuZGF0YUhhbmRsZXI9bmV3IERhdGFIYW5kbGVyKHRoaXMucm9vdCx0LmdldERhdGEoKSk7dGhpcy5mb3JtW1BvXS50ZW1wbGF0ZT10aGlzLmZvcm19Y2F0Y2goZSl7d2FybihgWEZBIC0gYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHBhcnNpbmcgYW5kIGJpbmRpbmc6ICR7ZX1gKX19aXNWYWxpZCgpe3JldHVybiEoIXRoaXMucm9vdHx8IXRoaXMuZm9ybSl9X2NyZWF0ZVBhZ2VzSGVscGVyKCl7Y29uc3QgZT10aGlzLmZvcm1bYmxdKCk7cmV0dXJuIG5ldyBQcm9taXNlKCh0LGEpPT57Y29uc3QgbmV4dEl0ZXJhdGlvbj0oKT0+e3RyeXtjb25zdCBhPWUubmV4dCgpO2EuZG9uZT90KGEudmFsdWUpOnNldFRpbWVvdXQobmV4dEl0ZXJhdGlvbiwwKX1jYXRjaChlKXthKGUpfX07c2V0VGltZW91dChuZXh0SXRlcmF0aW9uLDApfSl9YXN5bmMgX2NyZWF0ZVBhZ2VzKCl7dHJ5e3RoaXMucGFnZXM9YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXNIZWxwZXIoKTt0aGlzLmRpbXM9dGhpcy5wYWdlcy5jaGlsZHJlbi5tYXAoZT0+e2NvbnN0e3dpZHRoOnQsaGVpZ2h0OmF9PWUuYXR0cmlidXRlcy5zdHlsZTtyZXR1cm5bMCwwLHBhcnNlSW50KHQsMTApLHBhcnNlSW50KGEsMTApXX0pfWNhdGNoKGUpe3dhcm4oYFhGQSAtIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBsYXlvdXQ6ICR7ZX1gKX19Z2V0Qm91bmRpbmdCb3goZSl7cmV0dXJuIHRoaXMuZGltc1tlXX1hc3luYyBnZXROdW1QYWdlcygpe3RoaXMucGFnZXN8fGF3YWl0IHRoaXMuX2NyZWF0ZVBhZ2VzKCk7cmV0dXJuIHRoaXMuZGltcy5sZW5ndGh9c2V0SW1hZ2VzKGUpe3RoaXMuZm9ybVtQb10uaW1hZ2VzPWV9c2V0Rm9udHMoZSl7dGhpcy5mb3JtW1BvXS5mb250RmluZGVyPW5ldyBGb250RmluZGVyKGUpO2NvbnN0IHQ9W107Zm9yKGxldCBlIG9mIHRoaXMuZm9ybVtQb10udXNlZFR5cGVmYWNlcyl7ZT1zdHJpcFF1b3RlcyhlKTt0aGlzLmZvcm1bUG9dLmZvbnRGaW5kZXIuZmluZChlKXx8dC5wdXNoKGUpfXJldHVybiB0Lmxlbmd0aD4wP3Q6bnVsbH1hcHBlbmRGb250cyhlLHQpe3RoaXMuZm9ybVtQb10uZm9udEZpbmRlci5hZGQoZSx0KX1hc3luYyBnZXRQYWdlcygpe3RoaXMucGFnZXN8fGF3YWl0IHRoaXMuX2NyZWF0ZVBhZ2VzKCk7Y29uc3QgZT10aGlzLnBhZ2VzO3RoaXMucGFnZXM9bnVsbDtyZXR1cm4gZX1zZXJpYWxpemVEYXRhKGUpe3JldHVybiB0aGlzLmRhdGFIYW5kbGVyLnNlcmlhbGl6ZShlKX1zdGF0aWMgX2NyZWF0ZURvY3VtZW50KGUpe3JldHVybiBlLmdldCgiL3hkcDp4ZHAiKT9lLnZhbHVlcygpLmpvaW4oIiIpOmUuZ2V0KCJ4ZHA6eGRwIil9c3RhdGljIGdldFJpY2hUZXh0QXNIdG1sKGUpe2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e2xldCB0PW5ldyBYRkFQYXJzZXIoWGh0bWxOYW1lc3BhY2UsITApLnBhcnNlKGUpO2lmKCFbImJvZHkiLCJ4aHRtbCJdLmluY2x1ZGVzKHRbZWxdKSl7Y29uc3QgZT1YaHRtbE5hbWVzcGFjZS5ib2R5KHt9KTtlW2xvXSh0KTt0PWV9Y29uc3QgYT10W3dsXSgpO2lmKCFhLnN1Y2Nlc3MpcmV0dXJuIG51bGw7Y29uc3R7aHRtbDpufT1hLHthdHRyaWJ1dGVzOnN9PW47aWYocyl7cy5jbGFzcyYmPXMuY2xhc3MuZmlsdGVyKGU9PiFlLnN0YXJ0c1dpdGgoInhmYSIpKTtzLmRpcj0iYXV0byJ9cmV0dXJue2h0bWw6bixzdHI6dFtnbF0oKX19Y2F0Y2goZSl7d2FybihgWEZBIC0gYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHBhcnNpbmcgb2YgcmljaCB0ZXh0OiAke2V9YCl9cmV0dXJuIG51bGx9fWNsYXNzIEFubm90YXRpb25GYWN0b3J5e3N0YXRpYyBjcmVhdGVHbG9iYWxzKGUpe3JldHVybiBQcm9taXNlLmFsbChbZS5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybSIpLGUuZW5zdXJlRG9jKCJ4ZmFEYXRhc2V0cyIpLGUuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKSxlLmVuc3VyZUNhdGFsb2coImJhc2VVcmwiKSxlLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIiksZS5lbnN1cmVDYXRhbG9nKCJnbG9iYWxDb2xvclNwYWNlQ2FjaGUiKV0pLnRoZW4oKFt0LGEsbixzLHIsaV0pPT4oe3BkZk1hbmFnZXI6ZSxjYXRhbG9nOmUucGRmRG9jdW1lbnQuY2F0YWxvZyxhY3JvRm9ybTp0IGluc3RhbmNlb2YgRGljdD90OkRpY3QuZW1wdHkseGZhRGF0YXNldHM6YSxzdHJ1Y3RUcmVlUm9vdDpuLGJhc2VVcmw6cyxhdHRhY2htZW50czpyLGdsb2JhbENvbG9yU3BhY2VDYWNoZTppfSksZT0+e3dhcm4oYGNyZWF0ZUdsb2JhbHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pfXN0YXRpYyBhc3luYyBjcmVhdGUoZSx0LGEsbixzLHIsaSxvKXtjb25zdCBsPXM/YXdhaXQgdGhpcy5fZ2V0UGFnZUluZGV4KGUsdCxhLnBkZk1hbmFnZXIpOm51bGw7cmV0dXJuIGEucGRmTWFuYWdlci5lbnN1cmUodGhpcywiX2NyZWF0ZSIsW2UsdCxhLG4scyxyLGksbCxvXSl9c3RhdGljIF9jcmVhdGUoZSx0LGEsbixzPSExLHI9bnVsbCxpPW51bGwsbz1udWxsLGw9bnVsbCl7Y29uc3QgZj1lLmZldGNoSWZSZWYodCk7aWYoIShmIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2xldCBjPWYuZ2V0KCJTdWJ0eXBlIik7Yz1jIGluc3RhbmNlb2YgTmFtZT9jLm5hbWU6bnVsbDtpZihpJiYhaS5oYXMoUltjPy50b1VwcGVyQ2FzZSgpXSkpcmV0dXJuIG51bGw7Y29uc3R7YWNyb0Zvcm06aCxwZGZNYW5hZ2VyOnV9PWEsbT10IGluc3RhbmNlb2YgUmVmP3QudG9TdHJpbmcoKTpgYW5ub3RfJHtuLmNyZWF0ZU9iaklkKCl9YCxwPXt4cmVmOmUscmVmOnQsZGljdDpmLHN1YnR5cGU6YyxpZDptLGFubm90YXRpb25HbG9iYWxzOmEsY29sbGVjdEZpZWxkczpzLG9ycGhhbkZpZWxkczpyLG5lZWRBcHBlYXJhbmNlczohcyYmITA9PT1oLmdldCgiTmVlZEFwcGVhcmFuY2VzIikscGFnZUluZGV4Om8sZXZhbHVhdG9yT3B0aW9uczp1LmV2YWx1YXRvck9wdGlvbnMscGFnZVJlZjpsfTtzd2l0Y2goYyl7Y2FzZSJMaW5rIjpyZXR1cm4gbmV3IExpbmtBbm5vdGF0aW9uKHApO2Nhc2UiVGV4dCI6cmV0dXJuIG5ldyBUZXh0QW5ub3RhdGlvbihwKTtjYXNlIldpZGdldCI6bGV0IGU9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDpmLGtleToiRlQifSk7ZT1lIGluc3RhbmNlb2YgTmFtZT9lLm5hbWU6bnVsbDtzd2l0Y2goZSl7Y2FzZSJUeCI6cmV0dXJuIG5ldyBUZXh0V2lkZ2V0QW5ub3RhdGlvbihwKTtjYXNlIkJ0biI6cmV0dXJuIG5ldyBCdXR0b25XaWRnZXRBbm5vdGF0aW9uKHApO2Nhc2UiQ2giOnJldHVybiBuZXcgQ2hvaWNlV2lkZ2V0QW5ub3RhdGlvbihwKTtjYXNlIlNpZyI6cmV0dXJuIG5ldyBTaWduYXR1cmVXaWRnZXRBbm5vdGF0aW9uKHApfXdhcm4oYFVuaW1wbGVtZW50ZWQgd2lkZ2V0IGZpZWxkIHR5cGUgIiR7ZX0iLCBmYWxsaW5nIGJhY2sgdG8gYmFzZSBmaWVsZCB0eXBlLmApO3JldHVybiBuZXcgV2lkZ2V0QW5ub3RhdGlvbihwKTtjYXNlIlBvcHVwIjpyZXR1cm4gbmV3IFBvcHVwQW5ub3RhdGlvbihwKTtjYXNlIkZyZWVUZXh0IjpyZXR1cm4gbmV3IEZyZWVUZXh0QW5ub3RhdGlvbihwKTtjYXNlIkxpbmUiOnJldHVybiBuZXcgTGluZUFubm90YXRpb24ocCk7Y2FzZSJTcXVhcmUiOnJldHVybiBuZXcgU3F1YXJlQW5ub3RhdGlvbihwKTtjYXNlIkNpcmNsZSI6cmV0dXJuIG5ldyBDaXJjbGVBbm5vdGF0aW9uKHApO2Nhc2UiUG9seUxpbmUiOnJldHVybiBuZXcgUG9seWxpbmVBbm5vdGF0aW9uKHApO2Nhc2UiUG9seWdvbiI6cmV0dXJuIG5ldyBQb2x5Z29uQW5ub3RhdGlvbihwKTtjYXNlIkNhcmV0IjpyZXR1cm4gbmV3IENhcmV0QW5ub3RhdGlvbihwKTtjYXNlIkluayI6cmV0dXJuIG5ldyBJbmtBbm5vdGF0aW9uKHApO2Nhc2UiSGlnaGxpZ2h0IjpyZXR1cm4gbmV3IEhpZ2hsaWdodEFubm90YXRpb24ocCk7Y2FzZSJVbmRlcmxpbmUiOnJldHVybiBuZXcgVW5kZXJsaW5lQW5ub3RhdGlvbihwKTtjYXNlIlNxdWlnZ2x5IjpyZXR1cm4gbmV3IFNxdWlnZ2x5QW5ub3RhdGlvbihwKTtjYXNlIlN0cmlrZU91dCI6cmV0dXJuIG5ldyBTdHJpa2VPdXRBbm5vdGF0aW9uKHApO2Nhc2UiU3RhbXAiOnJldHVybiBuZXcgU3RhbXBBbm5vdGF0aW9uKHApO2Nhc2UiRmlsZUF0dGFjaG1lbnQiOnJldHVybiBuZXcgRmlsZUF0dGFjaG1lbnRBbm5vdGF0aW9uKHApO2Nhc2UiUmljaE1lZGlhIjpyZXR1cm4gbmV3IFJpY2hNZWRpYUFubm90YXRpb24ocCk7Y2FzZSJTY3JlZW4iOnJldHVybiBuZXcgU2NyZWVuQW5ub3RhdGlvbihwKTtjYXNlIlNvdW5kIjpyZXR1cm4gbmV3IFNvdW5kQW5ub3RhdGlvbihwKTtkZWZhdWx0OnN8fHdhcm4oYz9gVW5pbXBsZW1lbnRlZCBhbm5vdGF0aW9uIHR5cGUgIiR7Y30iLCBmYWxsaW5nIGJhY2sgdG8gYmFzZSBhbm5vdGF0aW9uLmA6IkFubm90YXRpb24gaXMgbWlzc2luZyB0aGUgcmVxdWlyZWQgL1N1YnR5cGUuIik7cmV0dXJuIG5ldyBBbm5vdGF0aW9uKHApfX1zdGF0aWMgYXN5bmMgX2dldFBhZ2VJbmRleChlLHQsYSl7dHJ5e2NvbnN0IG49YXdhaXQgZS5mZXRjaElmUmVmQXN5bmModCk7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuLTE7Y29uc3Qgcz1uLmdldFJhdygiUCIpO2lmKHMgaW5zdGFuY2VvZiBSZWYpdHJ5e3JldHVybiBhd2FpdCBhLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW3NdKX1jYXRjaChlKXtpbmZvKGBfZ2V0UGFnZUluZGV4IC0tIG5vdCBhIHZhbGlkIHBhZ2UgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYobi5oYXMoIktpZHMiKSlyZXR1cm4tMTtjb25zdCByPWF3YWl0IGEuZW5zdXJlRG9jKCJudW1QYWdlcyIpO2ZvcihsZXQgZT0wO2U8cjtlKyspe2NvbnN0IG49YXdhaXQgYS5nZXRQYWdlKGUpLHM9YXdhaXQgYS5lbnN1cmUobiwiYW5ub3RhdGlvbnMiKTtmb3IoY29uc3QgYSBvZiBzKWlmKGEgaW5zdGFuY2VvZiBSZWYmJmlzUmVmc0VxdWFsKGEsdCkpcmV0dXJuIGV9fWNhdGNoKGUpe3dhcm4oYF9nZXRQYWdlSW5kZXg6ICIke2V9Ii5gKX1yZXR1cm4tMX1zdGF0aWMgZ2VuZXJhdGVJbWFnZXMoZSx0LGEpe2lmKCFhKXt3YXJuKCJnZW5lcmF0ZUltYWdlczogT2Zmc2NyZWVuQ2FudmFzIGlzIG5vdCBzdXBwb3J0ZWQsIGNhbm5vdCBzYXZlIG9yIHByaW50IHNvbWUgYW5ub3RhdGlvbnMgd2l0aCBpbWFnZXMuIik7cmV0dXJuIG51bGx9bGV0IG47Zm9yKGNvbnN0e2JpdG1hcElkOmEsYml0bWFwOnN9b2YgZSlpZihzKXtufHw9bmV3IE1hcDtuLnNldChhLGNyZWF0ZUltYWdlKHMsdCkpfXJldHVybiBufXN0YXRpYyBnZXRQcmludERhdGEoZSl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQ6IGdldFByaW50RGF0YSIpfXN0YXRpYyBhc3luYyBzYXZlTmV3QW5ub3RhdGlvbnMoZSx0LGEsbixzLHIpe2xldCBpO2NvbnN0IG89W10se2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmx9PWUub3B0aW9ucztmb3IoY29uc3QgZiBvZiBuKWlmKCFmLmRlbGV0ZWQpc3dpdGNoKGYuYW5ub3RhdGlvblR5cGUpe2Nhc2UgZDppZighZi5hcHBlYXJhbmNlUmVmJiYhaSl7Y29uc3QgZT1uZXcgRGljdCh0KTtlLnNldElmTmFtZSgiQmFzZUZvbnQiLCJIZWx2ZXRpY2EiKTtlLnNldElmTmFtZSgiVHlwZSIsIkZvbnQiKTtlLnNldElmTmFtZSgiU3VidHlwZSIsIlR5cGUxIik7ZS5zZXRJZk5hbWUoIkVuY29kaW5nIiwiV2luQW5zaUVuY29kaW5nIik7aT10LmdldE5ld1RlbXBvcmFyeVJlZigpO3IucHV0KGkse2RhdGE6ZX0pfW8ucHVzaChGcmVlVGV4dEFubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbih0LGYscix7ZXZhbHVhdG9yOmUsdGFzazphLGJhc2VGb250UmVmOml9KSk7YnJlYWs7Y2FzZSBnOmYucXVhZFBvaW50cz9vLnB1c2goSGlnaGxpZ2h0QW5ub3RhdGlvbi5jcmVhdGVOZXdBbm5vdGF0aW9uKHQsZixyKSk6by5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbih0LGYscikpO2JyZWFrO2Nhc2UgdzpvLnB1c2goSW5rQW5ub3RhdGlvbi5jcmVhdGVOZXdBbm5vdGF0aW9uKHQsZixyKSk7YnJlYWs7Y2FzZSBiOmNvbnN0IG49bD9hd2FpdChzPy5nZXQoZi5iaXRtYXBJZCkpOm51bGw7aWYobj8uaW1hZ2VTdHJlYW0pe2NvbnN0e2ltYWdlU3RyZWFtOmUsc21hc2tTdHJlYW06YX09bjtpZihhKXtjb25zdCBuPXQuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7ci5wdXQobix7ZGF0YTphfSk7ZS5kaWN0LnNldCgiU01hc2siLG4pfWNvbnN0IHM9bi5pbWFnZVJlZj10LmdldE5ld1RlbXBvcmFyeVJlZigpO3IucHV0KHMse2RhdGE6ZX0pO24uaW1hZ2VTdHJlYW09bnVsbDtuLmltYWdlUmVuZGVyU3RyZWFtPW51bGw7bi5zbWFza1N0cmVhbT1udWxsO24uc21hc2tSZW5kZXJTdHJlYW09bnVsbH1vLnB1c2goU3RhbXBBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24odCxmLHIse2ltYWdlOm59KSk7YnJlYWs7Y2FzZSBqOm8ucHVzaChTdGFtcEFubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbih0LGYscix7fSkpfXJldHVybnthbm5vdGF0aW9uczooYXdhaXQgUHJvbWlzZS5hbGwobykpLmZsYXQoKX19c3RhdGljIGFzeW5jIHByaW50TmV3QW5ub3RhdGlvbnMoZSx0LGEsbixzKXtpZighbilyZXR1cm4gbnVsbDtjb25zdHtvcHRpb25zOnIseHJlZjppfT10LG89W107Zm9yKGNvbnN0IGwgb2YgbilpZighbC5kZWxldGVkKXN3aXRjaChsLmFubm90YXRpb25UeXBlKXtjYXNlIGQ6by5wdXNoKEZyZWVUZXh0QW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxpLGwse2V2YWx1YXRvcjp0LHRhc2s6YSxldmFsdWF0b3JPcHRpb25zOnJ9KSk7YnJlYWs7Y2FzZSBnOmwucXVhZFBvaW50cz9vLnB1c2goSGlnaGxpZ2h0QW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxpLGwse2V2YWx1YXRvck9wdGlvbnM6cn0pKTpvLnB1c2goSW5rQW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxpLGwse2V2YWx1YXRvck9wdGlvbnM6cn0pKTticmVhaztjYXNlIHc6by5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsaSxsLHtldmFsdWF0b3JPcHRpb25zOnJ9KSk7YnJlYWs7Y2FzZSBiOmNvbnN0IG49ci5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD9hd2FpdChzPy5nZXQobC5iaXRtYXBJZCkpOm51bGw7aWYobj8uaW1hZ2VTdHJlYW0pe2NvbnN0e2ltYWdlU3RyZWFtOmUsaW1hZ2VSZW5kZXJTdHJlYW06dCxzbWFza1N0cmVhbTphLHNtYXNrUmVuZGVyU3RyZWFtOnN9PW4scj10fHxuZXcgSnBlZ1N0cmVhbShlLGUubGVuZ3RoKTsoYXx8cykmJnIuZGljdC5zZXQoIlNNYXNrIixzfHxhKTtuLmltYWdlUmVmPXI7bi5pbWFnZVN0cmVhbT1udWxsO24uaW1hZ2VSZW5kZXJTdHJlYW09bnVsbDtuLnNtYXNrU3RyZWFtPW51bGw7bi5zbWFza1JlbmRlclN0cmVhbT1udWxsfW8ucHVzaChTdGFtcEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsaSxsLHtpbWFnZTpuLGV2YWx1YXRvck9wdGlvbnM6cn0pKTticmVhaztjYXNlIGo6by5wdXNoKFN0YW1wQW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxpLGwse2V2YWx1YXRvck9wdGlvbnM6cn0pKX1yZXR1cm4gUHJvbWlzZS5hbGwobyl9fWZ1bmN0aW9uIGdldFJnYkNvbG9yKGUsdD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMykpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiB0O2NvbnN0IGE9dHx8bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBudWxsO2Nhc2UgMTpDb2xvclNwYWNlVXRpbHMuZ3JheS5nZXRSZ2JJdGVtKGUsMCxhLDApO3JldHVybiBhO2Nhc2UgMzpDb2xvclNwYWNlVXRpbHMucmdiLmdldFJnYkl0ZW0oZSwwLGEsMCk7cmV0dXJuIGE7Y2FzZSA0OkNvbG9yU3BhY2VVdGlscy5jbXlrLmdldFJnYkl0ZW0oZSwwLGEsMCk7cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gZ2V0UGRmQ29sb3JBcnJheShlLHQ9bnVsbCl7cmV0dXJuIGUmJkFycmF5LmZyb20oZSxlPT5lLzI1NSl8fHR9ZnVuY3Rpb24gZ2V0UXVhZFBvaW50cyhlLHQpe2NvbnN0IGE9ZS5nZXRBcnJheSgiUXVhZFBvaW50cyIpO2lmKCFpc051bWJlckFycmF5KGEsbnVsbCl8fDA9PT1hLmxlbmd0aHx8YS5sZW5ndGglOD4wKXJldHVybiBudWxsO2NvbnN0IG49bmV3IEZsb2F0MzJBcnJheShhLmxlbmd0aCk7Zm9yKGxldCBlPTAscz1hLmxlbmd0aDtlPHM7ZSs9OCl7Y29uc3RbcyxyLGksbyxsLGYsYyxoXT1hLnNsaWNlKGUsZSs4KSx1PU1hdGgubWluKHMsaSxsLGMpLG09TWF0aC5tYXgocyxpLGwsYykscD1NYXRoLm1pbihyLG8sZixoKSxkPU1hdGgubWF4KHIsbyxmLGgpO2lmKG51bGwhPT10JiYodTx0WzBdfHxtPnRbMl18fHA8dFsxXXx8ZD50WzNdKSlyZXR1cm4gbnVsbDtuLnNldChbdSxkLG0sZCx1LHAsbSxwXSxlKX1yZXR1cm4gbn1mdW5jdGlvbiBnZXRUcmFuc2Zvcm1NYXRyaXgoZSx0LG4pe2NvbnN0IHM9YS5zbGljZSgpO1V0aWwuYXhpYWxBbGlnbmVkQm91bmRpbmdCb3godCxuLHMpO2NvbnN0W3IsaSxvLGxdPXM7aWYocj09PW98fGk9PT1sKXJldHVyblsxLDAsMCwxLGVbMF0sZVsxXV07Y29uc3QgZj0oZVsyXS1lWzBdKS8oby1yKSxjPShlWzNdLWVbMV0pLyhsLWkpO3JldHVybltmLDAsMCxjLGVbMF0tcipmLGVbMV0taSpjXX1mdW5jdGlvbiB3cml0ZUxpbmVUb0N1cnZlVG9BcHBlYXJhbmNlKGUsdCxhPSExKXt0LnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVs0XSl9ICR7bnVtYmVyVG9TdHJpbmcoZVs1XSl9IG1gKTtmb3IobGV0IGE9NixuPWUubGVuZ3RoO2E8bjthKz02KWlmKGlzTmFOKGVbYV0pKXQucHVzaChgJHtudW1iZXJUb1N0cmluZyhlW2ErNF0pfSAke251bWJlclRvU3RyaW5nKGVbYSs1XSl9IGxgKTtlbHNle2NvbnN0IG49ZS5zbGljZShhLGErNik7dC5wdXNoKGAke24ubWFwKG51bWJlclRvU3RyaW5nKS5qb2luKCIgIil9IGNgKX1hJiY2PT09ZS5sZW5ndGgmJnQucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzRdKX0gJHtudW1iZXJUb1N0cmluZyhlWzVdKX0gbGApfWNsYXNzIEFubm90YXRpb257YXBwZWFyYW5jZT1udWxsO19vYz12b2lkIDA7Y29uc3RydWN0b3IoZSl7Y29uc3R7YW5ub3RhdGlvbkdsb2JhbHM6dCxkaWN0OmEsb3JwaGFuRmllbGRzOm4scmVmOnMsc3VidHlwZTpyLHhyZWY6aX09ZSxvPW4/LmdldChzKTtvJiZhLnNldCgiUGFyZW50IixvKTt0aGlzLnNldFRpdGxlKGEuZ2V0KCJUIikpO3RoaXMuc2V0Q29udGVudHMoYS5nZXQoIkNvbnRlbnRzIikpO3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZShhLmdldCgiTSIpKTt0aGlzLnNldEZsYWdzKGEuZ2V0KCJGIikpO3RoaXMuc2V0UmVjdGFuZ2xlKGEuZ2V0QXJyYXkoIlJlY3QiKSk7dGhpcy5zZXRDb2xvcihhLmdldEFycmF5KCJDIikpO3RoaXMuc2V0Qm9yZGVyU3R5bGUoYSk7dGhpcy5zZXRBcHBlYXJhbmNlKGEpO3RoaXMuI0J0KGksYSk7Y29uc3QgbD1hLmdldCgiTUsiKTt0aGlzLnNldEJvcmRlckFuZEJhY2tncm91bmRDb2xvcnMobCk7dGhpcy5zZXRSb3RhdGlvbihsLGEpO3RoaXMucmVmPWUucmVmIGluc3RhbmNlb2YgUmVmP2UucmVmOm51bGw7dGhpcy5fc3RyZWFtcz1bXTt0aGlzLmFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmFwcGVhcmFuY2UpO2NvbnN0IGY9ISEodGhpcy5mbGFncyZVKSxjPSEhKHRoaXMuZmxhZ3MmVyk7dGhpcy5kYXRhPXthbm5vdGF0aW9uVHlwZTpSW3I/LnRvVXBwZXJDYXNlKCldLGFubm90YXRpb25GbGFnczp0aGlzLmZsYWdzLGJvcmRlclN0eWxlOnRoaXMuYm9yZGVyU3R5bGUsY29sb3I6dGhpcy5jb2xvcixiYWNrZ3JvdW5kQ29sb3I6dGhpcy5iYWNrZ3JvdW5kQ29sb3IsYm9yZGVyQ29sb3I6dGhpcy5ib3JkZXJDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLGNvbnRlbnRzT2JqOnRoaXMuX2NvbnRlbnRzLGhhc0FwcGVhcmFuY2U6ISF0aGlzLmFwcGVhcmFuY2UsaWQ6ZS5pZCxtb2RpZmljYXRpb25EYXRlOnRoaXMubW9kaWZpY2F0aW9uRGF0ZSxvYzp0aGlzLl9vYyxyZWN0OnRoaXMucmVjdGFuZ2xlLHN1YnR5cGU6cixoYXNPd25DYW52YXM6ITEsbm9Sb3RhdGU6ISEodGhpcy5mbGFncyZ6KSxub0hUTUw6ZiYmYyxpc0VkaXRhYmxlOiExLHN0cnVjdFBhcmVudDotMX07aWYodC5zdHJ1Y3RUcmVlUm9vdCl7bGV0IG49YS5nZXQoIlN0cnVjdFBhcmVudCIpO3RoaXMuZGF0YS5zdHJ1Y3RQYXJlbnQ9bj1OdW1iZXIuaXNJbnRlZ2VyKG4pJiZuPj0wP246LTE7dC5zdHJ1Y3RUcmVlUm9vdC5hZGRBbm5vdGF0aW9uSWRUb1BhZ2UoZS5wYWdlUmVmLG4sdGhpcy5yZWYpfWlmKGUuY29sbGVjdEZpZWxkcyl7Y29uc3QgdD1hLmdldCgiS2lkcyIpO2lmKEFycmF5LmlzQXJyYXkodCkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IGEgb2YgdClhIGluc3RhbmNlb2YgUmVmJiZlLnB1c2goYS50b1N0cmluZygpKTswIT09ZS5sZW5ndGgmJih0aGlzLmRhdGEua2lkSWRzPWUpfXRoaXMuZGF0YS5hY3Rpb25zPWNvbGxlY3RBY3Rpb25zKGksYSxvZSk7dGhpcy5kYXRhLmZpZWxkTmFtZT10aGlzLl9jb25zdHJ1Y3RGaWVsZE5hbWUoYSk7dGhpcy5kYXRhLnBhZ2VJbmRleD1lLnBhZ2VJbmRleH1jb25zdCBoPWEuZ2V0KCJJVCIpO2ggaW5zdGFuY2VvZiBOYW1lJiYodGhpcy5kYXRhLml0PWgubmFtZSk7dGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ9ZS5ldmFsdWF0b3JPcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9bnVsbDt0aGlzLl9uZWVkQXBwZWFyYW5jZXM9ITF9X2dldE9wZXJhdG9yTGlzdE5vQXBwZWFyYW5jZSgpe3JldHVybntvcExpc3Q6bmV3IE9wZXJhdG9yTGlzdCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fV9oYXNGbGFnKGUsdCl7cmV0dXJuISEoZSZ0KX1fYnVpbGRGbGFncyhlLHQpe2xldHtmbGFnczphfT10aGlzO2lmKHZvaWQgMD09PWUpe2lmKHZvaWQgMD09PXQpcmV0dXJuO3JldHVybiB0P2Emfl86YSZ+RXxffWlmKGUpe2F8PV87cmV0dXJuIHQ/YSZ+THxFOmEmfkV8TH1hJj1+KEV8TCk7cmV0dXJuIHQ/YSZ+XzphfF99X2lzVmlld2FibGUoZSl7cmV0dXJuIXRoaXMuX2hhc0ZsYWcoZSxOKSYmIXRoaXMuX2hhc0ZsYWcoZSxMKX1faXNQcmludGFibGUoZSl7cmV0dXJuIHRoaXMuX2hhc0ZsYWcoZSxfKSYmIXRoaXMuX2hhc0ZsYWcoZSxFKSYmIXRoaXMuX2hhc0ZsYWcoZSxOKX1tdXN0QmVWaWV3ZWQoZSx0KXtjb25zdCBhPWU/LmdldCh0aGlzLmRhdGEuaWQpPy5ub1ZpZXc7cmV0dXJuIHZvaWQgMCE9PWE/IWE6dGhpcy52aWV3YWJsZSYmIXRoaXMuX2hhc0ZsYWcodGhpcy5mbGFncyxFKX1tdXN0QmVQcmludGVkKGUpe2NvbnN0IHQ9ZT8uZ2V0KHRoaXMuZGF0YS5pZCk/Lm5vUHJpbnQ7cmV0dXJuIHZvaWQgMCE9PXQ/IXQ6dGhpcy5wcmludGFibGV9bXVzdEJlVmlld2VkV2hlbkVkaXRpbmcoZSx0PW51bGwpe3JldHVybiBlPyF0aGlzLmRhdGEuaXNFZGl0YWJsZTohdD8uaGFzKHRoaXMuZGF0YS5pZCl9Z2V0IHZpZXdhYmxlKCl7cmV0dXJuIG51bGwhPT10aGlzLmRhdGEucXVhZFBvaW50cyYmKDA9PT10aGlzLmZsYWdzfHx0aGlzLl9pc1ZpZXdhYmxlKHRoaXMuZmxhZ3MpKX1nZXQgcHJpbnRhYmxlKCl7cmV0dXJuIG51bGwhPT10aGlzLmRhdGEucXVhZFBvaW50cyYmMCE9PXRoaXMuZmxhZ3MmJnRoaXMuX2lzUHJpbnRhYmxlKHRoaXMuZmxhZ3MpfV9wYXJzZVN0cmluZ0hlbHBlcihlKXtjb25zdCB0PSJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb1BERlN0cmluZyhlKToiIjtyZXR1cm57c3RyOnQsZGlyOnQmJiJydGwiPT09YmlkaSh0KS5kaXI/InJ0bCI6Imx0ciJ9fXNldERlZmF1bHRBcHBlYXJhbmNlKGUpe2NvbnN0e2RpY3Q6dCxhbm5vdGF0aW9uR2xvYmFsczphfT1lLG49Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiREEifSl8fGEuYWNyb0Zvcm0uZ2V0KCJEQSIpO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSJzdHJpbmciPT10eXBlb2Ygbj9uOiIiO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9cGFyc2VEZWZhdWx0QXBwZWFyYW5jZSh0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSl9c2V0VGl0bGUoZSl7dGhpcy5fdGl0bGU9dGhpcy5fcGFyc2VTdHJpbmdIZWxwZXIoZSl9c2V0Q29udGVudHMoZSl7dGhpcy5fY29udGVudHM9dGhpcy5fcGFyc2VTdHJpbmdIZWxwZXIoZSl9c2V0TW9kaWZpY2F0aW9uRGF0ZShlKXt0aGlzLm1vZGlmaWNhdGlvbkRhdGU9InN0cmluZyI9PXR5cGVvZiBlP2U6bnVsbH1zZXRGbGFncyhlKXt0aGlzLmZsYWdzPU51bWJlci5pc0ludGVnZXIoZSkmJmU+MD9lOjA7dGhpcy5mbGFncyZOJiYiQW5ub3RhdGlvbiIhPT10aGlzLmNvbnN0cnVjdG9yLm5hbWUmJih0aGlzLmZsYWdzXj1OKX1oYXNGbGFnKGUpe3JldHVybiB0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsZSl9c2V0UmVjdGFuZ2xlKGUpe3RoaXMucmVjdGFuZ2xlPWxvb2t1cE5vcm1hbFJlY3QoZSxbMCwwLDAsMF0pfXNldENvbG9yKGUpe3RoaXMuY29sb3I9Z2V0UmdiQ29sb3IoZSl9c2V0TGluZUVuZGluZ3MoZSl7dGhpcy5saW5lRW5kaW5ncz1bIk5vbmUiLCJOb25lIl07aWYoQXJyYXkuaXNBcnJheShlKSYmMj09PWUubGVuZ3RoKWZvcihsZXQgdD0wO3Q8Mjt0Kyspe2NvbnN0IGE9ZVt0XTtpZihhIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goYS5uYW1lKXtjYXNlIk5vbmUiOmNvbnRpbnVlO2Nhc2UiU3F1YXJlIjpjYXNlIkNpcmNsZSI6Y2FzZSJEaWFtb25kIjpjYXNlIk9wZW5BcnJvdyI6Y2FzZSJDbG9zZWRBcnJvdyI6Y2FzZSJCdXR0IjpjYXNlIlJPcGVuQXJyb3ciOmNhc2UiUkNsb3NlZEFycm93IjpjYXNlIlNsYXNoIjp0aGlzLmxpbmVFbmRpbmdzW3RdPWEubmFtZTtjb250aW51ZX13YXJuKGBJZ25vcmluZyBpbnZhbGlkIGxpbmVFbmRpbmc6ICR7YX1gKX19c2V0Um90YXRpb24oZSx0KXt0aGlzLnJvdGF0aW9uPTA7bGV0IGE9ZSBpbnN0YW5jZW9mIERpY3Q/ZS5nZXQoIlIiKXx8MDp0LmdldCgiUm90YXRlIil8fDA7aWYoTnVtYmVyLmlzSW50ZWdlcihhKSYmMCE9PWEpe2ElPTM2MDthPDAmJihhKz0zNjApO2ElOTA9PTAmJih0aGlzLnJvdGF0aW9uPWEpfX1zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKGUpe2lmKGUgaW5zdGFuY2VvZiBEaWN0KXt0aGlzLmJvcmRlckNvbG9yPWdldFJnYkNvbG9yKGUuZ2V0QXJyYXkoIkJDIiksbnVsbCk7dGhpcy5iYWNrZ3JvdW5kQ29sb3I9Z2V0UmdiQ29sb3IoZS5nZXRBcnJheSgiQkciKSxudWxsKX1lbHNlIHRoaXMuYm9yZGVyQ29sb3I9dGhpcy5iYWNrZ3JvdW5kQ29sb3I9bnVsbH1zZXRCb3JkZXJTdHlsZShlKXt0aGlzLmJvcmRlclN0eWxlPW5ldyBBbm5vdGF0aW9uQm9yZGVyU3R5bGU7aWYoZSBpbnN0YW5jZW9mIERpY3QpaWYoZS5oYXMoIkJTIikpe2NvbnN0IHQ9ZS5nZXQoIkJTIik7aWYodCBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9dC5nZXQoIlR5cGUiKTtpZighZXx8aXNOYW1lKGUsIkJvcmRlciIpKXt0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKHQuZ2V0KCJXIiksdGhpcy5yZWN0YW5nbGUpO3RoaXMuYm9yZGVyU3R5bGUuc2V0U3R5bGUodC5nZXQoIlMiKSk7dGhpcy5ib3JkZXJTdHlsZS5zZXREYXNoQXJyYXkodC5nZXRBcnJheSgiRCIpKX19fWVsc2UgaWYoZS5oYXMoIkJvcmRlciIpKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkJvcmRlciIpO2lmKEFycmF5LmlzQXJyYXkodCkpaWYodC5sZW5ndGg+PTMpe3RoaXMuYm9yZGVyU3R5bGUuc2V0SG9yaXpvbnRhbENvcm5lclJhZGl1cyh0WzBdKTt0aGlzLmJvcmRlclN0eWxlLnNldFZlcnRpY2FsQ29ybmVyUmFkaXVzKHRbMV0pO3RoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgodFsyXSx0aGlzLnJlY3RhbmdsZSk7ND09PXQubGVuZ3RoJiZ0aGlzLmJvcmRlclN0eWxlLnNldERhc2hBcnJheSh0WzNdLCEwKX1lbHNlIDA9PT10Lmxlbmd0aCYmdGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCgwKX1lbHNlIHRoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgoMCl9c2V0QXBwZWFyYW5jZShlKXtjb25zdCB0PWUuZ2V0KCJBUCIpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBhPXQuZ2V0KCJOIik7aWYoYSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe3RoaXMuYXBwZWFyYW5jZT1hO3JldHVybn1pZighKGEgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3Qgbj1lLmdldCgiQVMiKTtpZighKG4gaW5zdGFuY2VvZiBOYW1lKSlyZXR1cm47Y29uc3Qgcz1hLmdldChuLm5hbWUpO3MgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYodGhpcy5hcHBlYXJhbmNlPXMpfSNCdChlLHQpe2lmKHQuaGFzKCJPQyIpKXRyeXt0aGlzLl9vYz1wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyhlLHQuZ2V0KCJPQyIpLG51bGwpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYCNzZXRPcHRpb25hbENvbnRlbnQ6ICR7ZX1gKX19YXN5bmMgbG9hZFJlc291cmNlcyhlLHQpe2NvbnN0IGE9YXdhaXQgdC5kaWN0LmdldEFzeW5jKCJSZXNvdXJjZXMiKTthJiZhd2FpdCBPYmplY3RMb2FkZXIubG9hZChhLGUsYS54cmVmKTtyZXR1cm4gYX1nZXQgX293bkNhbnZhc1JlcXVpcmVzRm9ybXMoKXtyZXR1cm4hMX1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGEsbil7Y29uc3R7aGFzT3duQ2FudmFzOnMsaWQ6cixyZWN0Oml9PXRoaXMuZGF0YTtsZXQgbD10aGlzLmFwcGVhcmFuY2U7Y29uc3QgZj0hIShzJiZhJm8mJighdGhpcy5fb3duQ2FudmFzUmVxdWlyZXNGb3Jtc3x8YSZjKSk7aWYoZiYmKDA9PT10aGlzLndpZHRofHwwPT09dGhpcy5oZWlnaHQpKXt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSExO3JldHVybiB0aGlzLl9nZXRPcGVyYXRvckxpc3ROb0FwcGVhcmFuY2UoKX1pZighbCl7aWYoIWYpcmV0dXJuIHRoaXMuX2dldE9wZXJhdG9yTGlzdE5vQXBwZWFyYW5jZSgpO2w9bmV3IFN0cmluZ1N0cmVhbSgiIixuZXcgRGljdCl9Y29uc3QgaD1sLmRpY3QsdT1hd2FpdCB0aGlzLmxvYWRSZXNvdXJjZXMoYmEsbCksbT1sb29rdXBSZWN0KGguZ2V0QXJyYXkoIkJCb3giKSxbMCwwLHRoaXMud2lkdGgsdGhpcy5oZWlnaHRdKSxwPWxvb2t1cE1hdHJpeChoLmdldEFycmF5KCJNYXRyaXgiKSxnYSksZD1nZXRUcmFuc2Zvcm1NYXRyaXgoaSxtLHApLGc9bmV3IE9wZXJhdG9yTGlzdCxiPXRoaXMuX29jO3ZvaWQgMCE9PWImJmcuYWRkT3AoQ3QsWyJPQyIsYl0pO2cuYWRkT3AoSHQsW3IsaSxkLHAsZl0pO2F3YWl0IGUuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06bCx0YXNrOnQscmVzb3VyY2VzOnUsb3BlcmF0b3JMaXN0OmcsZmFsbGJhY2tGb250RGljdDp0aGlzLl9mYWxsYmFja0ZvbnREaWN0fSk7Zy5hZGRPcChNdCxbXSk7dm9pZCAwIT09YiYmZy5hZGRPcChJdCxbXSk7dGhpcy5yZXNldCgpO3JldHVybntvcExpc3Q6ZyxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6Zn19YXN5bmMgc2F2ZShlLHQsYSxuKXtyZXR1cm4gbnVsbH1nZXQgb3ZlcmxheXNUZXh0Q29udGVudCgpe3JldHVybiExfWdldCBoYXNUZXh0Q29udGVudCgpe3JldHVybiExfWFzeW5jIGV4dHJhY3RUZXh0Q29udGVudChlLHQsYSl7aWYoIXRoaXMuYXBwZWFyYW5jZSlyZXR1cm47Y29uc3Qgbj1hd2FpdCB0aGlzLmxvYWRSZXNvdXJjZXMod2EsdGhpcy5hcHBlYXJhbmNlKSxzPVtdLHI9W107bGV0IGk9MS8wLG89MS8wLGw9bnVsbDtjb25zdCBmPXtkZXNpcmVkU2l6ZTpNYXRoLkluZmluaXR5LHJlYWR5OiEwLGVucXVldWUoZSx0KXtmb3IoY29uc3QgdCBvZiBlLml0ZW1zKWlmKHZvaWQgMCE9PXQuc3RyKXtpPU1hdGgubWluKGksdC50cmFuc2Zvcm1bNF0pO289TWF0aC5taW4obyx0LnRyYW5zZm9ybVs1XSk7ci5wdXNoKHQuc3RyKTtpZih0Lmhhc0VPTCl7cy5wdXNoKHIuam9pbigiIikudHJpbUVuZCgpKTtyLmxlbmd0aD0wfX19fTthd2FpdCBlLmdldFRleHRDb250ZW50KHtzdHJlYW06dGhpcy5hcHBlYXJhbmNlLHRhc2s6dCxyZXNvdXJjZXM6bixpbmNsdWRlTWFya2VkQ29udGVudDohMCxrZWVwV2hpdGVTcGFjZTohMCxzaW5rOmYsdmlld0JveDphfSk7dGhpcy5yZXNldCgpO2khPT0xLzAmJihsPVtpLG9dKTtyLmxlbmd0aCYmcy5wdXNoKHIuam9pbigiIikudHJpbUVuZCgpKTtpZihzLmxlbmd0aD4xfHxzWzBdKXtjb25zdCBlPXRoaXMuYXBwZWFyYW5jZS5kaWN0LHQ9bG9va3VwUmVjdChlLmdldEFycmF5KCJCQm94IiksbnVsbCksYT1sb29rdXBNYXRyaXgoZS5nZXRBcnJheSgiTWF0cml4IiksbnVsbCk7dGhpcy5kYXRhLnRleHRQb3NpdGlvbj10aGlzLl90cmFuc2Zvcm1Qb2ludChsLHQsYSk7dGhpcy5kYXRhLnRleHRDb250ZW50PXN9fV90cmFuc2Zvcm1Qb2ludChlLHQsYSl7Y29uc3R7cmVjdDpufT10aGlzLmRhdGE7dHx8PVswLDAsMSwxXTthfHw9WzEsMCwwLDEsMCwwXTtjb25zdCBzPWdldFRyYW5zZm9ybU1hdHJpeChuLHQsYSk7c1s0XS09blswXTtzWzVdLT1uWzFdO2NvbnN0IHI9ZS5zbGljZSgpO1V0aWwuYXBwbHlUcmFuc2Zvcm0ocixzKTtVdGlsLmFwcGx5VHJhbnNmb3JtKHIsYSk7cmV0dXJuIHJ9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gdGhpcy5kYXRhLmtpZElkcz97aWQ6dGhpcy5kYXRhLmlkLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMsbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcix0eXBlOiIiLGtpZElkczp0aGlzLmRhdGEua2lkSWRzLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxyb3RhdGlvbjp0aGlzLnJvdGF0aW9ufTpudWxsfXJlc2V0KCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fc3RyZWFtcyllLnJlc2V0KCl9X2NvbnN0cnVjdEZpZWxkTmFtZShlKXtpZighZS5oYXMoIlQiKSYmIWUuaGFzKCJQYXJlbnQiKSl7d2FybigiVW5rbm93biBmaWVsZCBuYW1lLCBmYWxsaW5nIGJhY2sgdG8gZW1wdHkgZmllbGQgbmFtZS4iKTtyZXR1cm4iIn1pZighZS5oYXMoIlBhcmVudCIpKXJldHVybiBzdHJpbmdUb1BERlN0cmluZyhlLmdldCgiVCIpKTtjb25zdCB0PVtdO2UuaGFzKCJUIikmJnQudW5zaGlmdChzdHJpbmdUb1BERlN0cmluZyhlLmdldCgiVCIpKSk7bGV0IGE9ZTtjb25zdCBuPW5ldyBSZWZTZXQ7ZS5vYmpJZCYmbi5wdXQoZS5vYmpJZCk7Zm9yKDthLmhhcygiUGFyZW50Iik7KXthPWEuZ2V0KCJQYXJlbnQiKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KXx8YS5vYmpJZCYmbi5oYXMoYS5vYmpJZCkpYnJlYWs7YS5vYmpJZCYmbi5wdXQoYS5vYmpJZCk7YS5oYXMoIlQiKSYmdC51bnNoaWZ0KHN0cmluZ1RvUERGU3RyaW5nKGEuZ2V0KCJUIikpKX1yZXR1cm4gdC5qb2luKCIuIil9X2dldEF0dGFjaG1lbnRJZChlLHQsYSxuPSExKXtpZihlIGluc3RhbmNlb2YgRGljdCl7dCBpbnN0YW5jZW9mIFJlZnx8KHQ9RmlsZVNwZWMucGlja1BsYXRmb3JtSXRlbShlLmdldCgiRUYiKSwhMCkpO3JldHVybiB0IGluc3RhbmNlb2YgUmVmP2EuY2F0YWxvZy5nZXRBdHRhY2htZW50SWRGb3JBbm5vdGF0aW9uKHQsbik6dm9pZCAwfX1nZXQgd2lkdGgoKXtyZXR1cm4gdGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF19Z2V0IGhlaWdodCgpe3JldHVybiB0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXX19Y2xhc3MgQW5ub3RhdGlvbkJvcmRlclN0eWxle3dpZHRoPTE7cmF3V2lkdGg9MTtzdHlsZT1hZTtkYXNoQXJyYXk9WzNdO2hvcml6b250YWxDb3JuZXJSYWRpdXM9MDt2ZXJ0aWNhbENvcm5lclJhZGl1cz0wO3NldFdpZHRoKGUsdD1bMCwwLDAsMF0pe2lmKGUgaW5zdGFuY2VvZiBOYW1lKXRoaXMud2lkdGg9MDtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgZSl7aWYoZT4wKXt0aGlzLnJhd1dpZHRoPWU7Y29uc3QgYT0odFsyXS10WzBdKS8yLG49KHRbM10tdFsxXSkvMjtpZihhPjAmJm4+MCYmKGU+YXx8ZT5uKSl7d2FybihgQW5ub3RhdGlvbkJvcmRlclN0eWxlLnNldFdpZHRoIC0gaWdub3Jpbmcgd2lkdGg6ICR7ZX1gKTtlPTF9fXRoaXMud2lkdGg9ZX19c2V0U3R5bGUoZSl7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJTIjp0aGlzLnN0eWxlPWFlO2JyZWFrO2Nhc2UiRCI6dGhpcy5zdHlsZT1uZTticmVhaztjYXNlIkIiOnRoaXMuc3R5bGU9c2U7YnJlYWs7Y2FzZSJJIjp0aGlzLnN0eWxlPXJlO2JyZWFrO2Nhc2UiVSI6dGhpcy5zdHlsZT1pZX19c2V0RGFzaEFycmF5KGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSl7bGV0IGE9ITAsbj0hMDtmb3IoY29uc3QgdCBvZiBlKXtpZighKCt0Pj0wKSl7YT0hMTticmVha310PjAmJihuPSExKX1pZigwPT09ZS5sZW5ndGh8fGEmJiFuKXt0aGlzLmRhc2hBcnJheT1lO3QmJnRoaXMuc2V0U3R5bGUoTmFtZS5nZXQoIkQiKSl9ZWxzZSB0aGlzLndpZHRoPTB9ZWxzZSBlJiYodGhpcy53aWR0aD0wKX1zZXRIb3Jpem9udGFsQ29ybmVyUmFkaXVzKGUpe051bWJlci5pc0ludGVnZXIoZSkmJih0aGlzLmhvcml6b250YWxDb3JuZXJSYWRpdXM9ZSl9c2V0VmVydGljYWxDb3JuZXJSYWRpdXMoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHRoaXMudmVydGljYWxDb3JuZXJSYWRpdXM9ZSl9fWNsYXNzIE1hcmt1cEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZTtpZih0LmhhcygiSVJUIikpe2NvbnN0IGU9dC5nZXRSYXcoIklSVCIpO3RoaXMuZGF0YS5pblJlcGx5VG89ZSBpbnN0YW5jZW9mIFJlZj9lLnRvU3RyaW5nKCk6bnVsbDtjb25zdCBhPXQuZ2V0KCJSVCIpO3RoaXMuZGF0YS5yZXBseVR5cGU9YSBpbnN0YW5jZW9mIE5hbWU/YS5uYW1lOkR9bGV0IGE9bnVsbDtpZih0aGlzLmRhdGEucmVwbHlUeXBlPT09Tyl7Y29uc3QgZT10LmdldCgiSVJUIik7dGhpcy5zZXRUaXRsZShlLmdldCgiVCIpKTt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDb250ZW50cyhlLmdldCgiQ29udGVudHMiKSk7dGhpcy5kYXRhLmNvbnRlbnRzT2JqPXRoaXMuX2NvbnRlbnRzO2lmKGUuaGFzKCJDcmVhdGlvbkRhdGUiKSl7dGhpcy5zZXRDcmVhdGlvbkRhdGUoZS5nZXQoIkNyZWF0aW9uRGF0ZSIpKTt0aGlzLmRhdGEuY3JlYXRpb25EYXRlPXRoaXMuY3JlYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT1udWxsO2lmKGUuaGFzKCJNIikpe3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZShlLmdldCgiTSIpKTt0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT10aGlzLm1vZGlmaWNhdGlvbkRhdGV9ZWxzZSB0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT1udWxsO2E9ZS5nZXRSYXcoIlBvcHVwIik7aWYoZS5oYXMoIkMiKSl7dGhpcy5zZXRDb2xvcihlLmdldEFycmF5KCJDIikpO3RoaXMuZGF0YS5jb2xvcj10aGlzLmNvbG9yfWVsc2UgdGhpcy5kYXRhLmNvbG9yPW51bGx9ZWxzZXt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDcmVhdGlvbkRhdGUodC5nZXQoIkNyZWF0aW9uRGF0ZSIpKTt0aGlzLmRhdGEuY3JlYXRpb25EYXRlPXRoaXMuY3JlYXRpb25EYXRlO2E9dC5nZXRSYXcoIlBvcHVwIik7dC5oYXMoIkMiKXx8KHRoaXMuZGF0YS5jb2xvcj1udWxsKX10aGlzLmRhdGEucG9wdXBSZWY9YSBpbnN0YW5jZW9mIFJlZj9hLnRvU3RyaW5nKCk6bnVsbDt0LmhhcygiUkMiKSYmKHRoaXMuZGF0YS5yaWNoVGV4dD1YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKHQuZ2V0KCJSQyIpKSl9c2V0Q3JlYXRpb25EYXRlKGUpe3RoaXMuY3JlYXRpb25EYXRlPSJzdHJpbmciPT10eXBlb2YgZT9lOm51bGx9X3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmUsZXh0cmE6YSxzdHJva2VDb2xvcjpuLGZpbGxDb2xvcjpzLGJsZW5kTW9kZTpyLHN0cm9rZUFscGhhOmksZmlsbEFscGhhOm8scG9pbnRzQ2FsbGJhY2s6bH0pe2NvbnN0IGY9dGhpcy5kYXRhLnJlY3Q9dC5zbGljZSgpLGM9WyJxIl07YSYmYy5wdXNoKGEpO24mJmMucHVzaChgJHtuWzBdfSAke25bMV19ICR7blsyXX0gUkdgKTtzJiZjLnB1c2goYCR7c1swXX0gJHtzWzFdfSAke3NbMl19IHJnYCk7Y29uc3QgaD10aGlzLmRhdGEucXVhZFBvaW50c3x8RmxvYXQzMkFycmF5LmZyb20oW3RoaXMucmVjdGFuZ2xlWzBdLHRoaXMucmVjdGFuZ2xlWzNdLHRoaXMucmVjdGFuZ2xlWzJdLHRoaXMucmVjdGFuZ2xlWzNdLHRoaXMucmVjdGFuZ2xlWzBdLHRoaXMucmVjdGFuZ2xlWzFdLHRoaXMucmVjdGFuZ2xlWzJdLHRoaXMucmVjdGFuZ2xlWzFdXSk7Zm9yKGxldCBlPTAsdD1oLmxlbmd0aDtlPHQ7ZSs9OCl7Y29uc3QgdD1sKGMsaC5zdWJhcnJheShlLGUrOCkpO1V0aWwucmVjdEJvdW5kaW5nQm94KC4uLnQsZil9Yy5wdXNoKCJRIik7Y29uc3QgdT1uZXcgRGljdChlKSxtPW5ldyBEaWN0KGUpO20uc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRm9ybSIpO2NvbnN0IHA9bmV3IFN0cmluZ1N0cmVhbShjLmpvaW4oIiAiKSxtKTt1LnNldCgiRm0wIixwKTtjb25zdCBkPW5ldyBEaWN0KGUpO3ImJmQuc2V0SWZOYW1lKCJCTSIscik7ZC5zZXRJZk51bWJlcigiQ0EiLGkpO2Quc2V0SWZOdW1iZXIoImNhIixvKTtjb25zdCBnPW5ldyBEaWN0KGUpO2cuc2V0KCJHUzAiLGQpO2NvbnN0IGI9bmV3IERpY3QoZSk7Yi5zZXQoIkV4dEdTdGF0ZSIsZyk7Yi5zZXQoIlhPYmplY3QiLHUpO2NvbnN0IHc9bmV3IERpY3QoZSk7dy5zZXQoIlJlc291cmNlcyIsYik7dy5zZXQoIkJCb3giLGYpO3RoaXMuYXBwZWFyYW5jZT1uZXcgU3RyaW5nU3RyZWFtKCIvR1MwIGdzIC9GbTAgRG8iLHcpO3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmFwcGVhcmFuY2UscCl9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0Fubm90YXRpb24oZSx0LGEsbil7Y29uc3Qgcz10LnJlZnx8PWUuZ2V0TmV3VGVtcG9yYXJ5UmVmKCkscj1hd2FpdCB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0odCxlLG4pO2xldCBpPXQuYXBwZWFyYW5jZVJlZj8/bnVsbDtyJiZhLnB1dChpPWUuZ2V0TmV3VGVtcG9yYXJ5UmVmKCkse2RhdGE6cn0pO2NvbnN0IG89dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7YXBSZWY6aX0pO051bWJlci5pc0ludGVnZXIodC5wYXJlbnRUcmVlSWQpJiZvLnNldCgiU3RydWN0UGFyZW50Iix0LnBhcmVudFRyZWVJZCk7YS5wdXQocyx7ZGF0YTpvfSk7Y29uc3QgbD17cmVmOnN9LHtwb3B1cDpmfT10O2lmKGYpe2lmKGYuZGVsZXRlZCl7by5kZWxldGUoIlBvcHVwIik7by5kZWxldGUoIkNvbnRlbnRzIik7by5kZWxldGUoIlJDIik7cmV0dXJuIGx9Y29uc3QgdD1mLnJlZnx8PWUuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7Zi5wYXJlbnQ9cztjb25zdCBuPVBvcHVwQW5ub3RhdGlvbi5jcmVhdGVOZXdEaWN0KGYsZSk7YS5wdXQodCx7ZGF0YTpufSk7by5zZXRJZkRlZmluZWQoIkNvbnRlbnRzIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGYuY29udGVudHMpKTtvLnNldCgiUG9wdXAiLHQpO3JldHVybltsLHtyZWY6dH1dfXJldHVybiBsfXN0YXRpYyBhc3luYyBjcmVhdGVOZXdQcmludEFubm90YXRpb24oZSx0LGEsbil7Y29uc3Qgcz1hd2FpdCB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oYSx0LG4pLHI9dGhpcy5jcmVhdGVOZXdEaWN0KGEsdCxzP3thcDpzfTp7fSksaT1uZXcgdGhpcy5wcm90b3R5cGUuY29uc3RydWN0b3Ioe2RpY3Q6cix4cmVmOnQsYW5ub3RhdGlvbkdsb2JhbHM6ZSxldmFsdWF0b3JPcHRpb25zOm4uZXZhbHVhdG9yT3B0aW9uc30pO2EucmVmJiYoaS5yZWY9aS5yZWZUb1JlcGxhY2U9YS5yZWYpO3JldHVybiBpfX1jbGFzcyBXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphLGFubm90YXRpb25HbG9iYWxzOm59PWUscz10aGlzLmRhdGE7dGhpcy5fbmVlZEFwcGVhcmFuY2VzPWUubmVlZEFwcGVhcmFuY2VzO3ZvaWQgMD09PXMuZmllbGROYW1lJiYocy5maWVsZE5hbWU9dGhpcy5fY29uc3RydWN0RmllbGROYW1lKHQpKTt2b2lkIDA9PT1zLmFjdGlvbnMmJihzLmFjdGlvbnM9Y29sbGVjdEFjdGlvbnMoYSx0LG9lKSk7bGV0IHI9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiViIsZ2V0QXJyYXk6ITB9KTtzLmZpZWxkVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKHIpO2NvbnN0IGk9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiRFYiLGdldEFycmF5OiEwfSk7cy5kZWZhdWx0RmllbGRWYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUoaSk7aWYodm9pZCAwPT09ciYmbi54ZmFEYXRhc2V0cyl7Y29uc3QgZT10aGlzLl90aXRsZS5zdHI7aWYoZSl7dGhpcy5faGFzVmFsdWVGcm9tWEZBPSEwO3MuZmllbGRWYWx1ZT1yPW4ueGZhRGF0YXNldHMuZ2V0VmFsdWUoZSl9fXZvaWQgMD09PXImJm51bGwhPT1zLmRlZmF1bHRGaWVsZFZhbHVlJiYocy5maWVsZFZhbHVlPXMuZGVmYXVsdEZpZWxkVmFsdWUpO3MuYWx0ZXJuYXRpdmVUZXh0PXN0cmluZ1RvUERGU3RyaW5nKHQuZ2V0KCJUVSIpfHwiIik7dGhpcy5zZXREZWZhdWx0QXBwZWFyYW5jZShlKTtzLmhhc0FwcGVhcmFuY2V8fD10aGlzLl9uZWVkQXBwZWFyYW5jZXMmJnZvaWQgMCE9PXMuZmllbGRWYWx1ZSYmbnVsbCE9PXMuZmllbGRWYWx1ZTtjb25zdCBvPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkZUIn0pO3MuZmllbGRUeXBlPW8gaW5zdGFuY2VvZiBOYW1lP28ubmFtZTpudWxsO2NvbnN0IGw9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiRFIifSksZj1uLmFjcm9Gb3JtLmdldCgiRFIiKSxjPXRoaXMuYXBwZWFyYW5jZT8uZGljdC5nZXQoIlJlc291cmNlcyIpO3RoaXMuX2ZpZWxkUmVzb3VyY2VzPXtsb2NhbFJlc291cmNlczpsLGFjcm9Gb3JtUmVzb3VyY2VzOmYsYXBwZWFyYW5jZVJlc291cmNlczpjLG1lcmdlZFJlc291cmNlczpEaWN0Lm1lcmdlKHt4cmVmOmEsZGljdEFycmF5OltsLGMsZl0sbWVyZ2VTdWJEaWN0czohMH0pfTtzLmZpZWxkRmxhZ3M9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiRmYifSk7KCFOdW1iZXIuaXNJbnRlZ2VyKHMuZmllbGRGbGFncyl8fHMuZmllbGRGbGFnczwwKSYmKHMuZmllbGRGbGFncz0wKTtzLnBhc3N3b3JkPXRoaXMuaGFzRmllbGRGbGFnKFYpO3MucmVhZE9ubHk9dGhpcy5oYXNGaWVsZEZsYWcoWCk7cy5yZXF1aXJlZD10aGlzLmhhc0ZpZWxkRmxhZyhLKTtzLmhpZGRlbj10aGlzLl9oYXNGbGFnKHMuYW5ub3RhdGlvbkZsYWdzLEUpfHx0aGlzLl9oYXNGbGFnKHMuYW5ub3RhdGlvbkZsYWdzLEwpfV9kZWNvZGVGb3JtVmFsdWUoZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3QgdD1lLm1hcChlPT50aGlzLl9kZWNvZGVGb3JtVmFsdWUoZSkpLmZpbHRlcihlPT5udWxsIT09ZSk7cmV0dXJuIHQubGVuZ3RoPjA/dDpudWxsfXJldHVybiBlIGluc3RhbmNlb2YgTmFtZT9lLm5hbWU6InN0cmluZyI9PXR5cGVvZiBlP3N0cmluZ1RvUERGU3RyaW5nKGUpOm51bGx9aGFzRmllbGRGbGFnKGUpe3JldHVybiEhKHRoaXMuZGF0YS5maWVsZEZsYWdzJmUpfV9pc1ZpZXdhYmxlKGUpe3JldHVybiEwfW11c3RCZVZpZXdlZChlLHQpe3JldHVybiB0P3RoaXMudmlld2FibGU6c3VwZXIubXVzdEJlVmlld2VkKGUsdCkmJiF0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsTCl9Z2V0Um90YXRpb25NYXRyaXgoZSl7bGV0IHQ9ZT8uZ2V0KHRoaXMuZGF0YS5pZCk/LnJvdGF0aW9uO3ZvaWQgMD09PXQmJih0PXRoaXMucm90YXRpb24pO3JldHVybiAwPT09dD9nYTpnZXRSb3RhdGlvbk1hdHJpeCh0LHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpfWdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhlKXtsZXQgdD1lPy5nZXQodGhpcy5kYXRhLmlkKT8ucm90YXRpb247dm9pZCAwPT09dCYmKHQ9dGhpcy5yb3RhdGlvbik7aWYoIXRoaXMuYmFja2dyb3VuZENvbG9yJiYhdGhpcy5ib3JkZXJDb2xvcilyZXR1cm4iIjtjb25zdCBhPTA9PT10fHwxODA9PT10P2AwIDAgJHt0aGlzLndpZHRofSAke3RoaXMuaGVpZ2h0fSByZWA6YDAgMCAke3RoaXMuaGVpZ2h0fSAke3RoaXMud2lkdGh9IHJlYDtsZXQgbj0iIjt0aGlzLmJhY2tncm91bmRDb2xvciYmKG49YCR7Z2V0UGRmQ29sb3IodGhpcy5iYWNrZ3JvdW5kQ29sb3IsITApfSAke2F9IGYgYCk7aWYodGhpcy5ib3JkZXJDb2xvcil7bis9YCR7dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MX0gdyAke2dldFBkZkNvbG9yKHRoaXMuYm9yZGVyQ29sb3IsITEpfSAke2F9IFMgYH1yZXR1cm4gbn1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGEsbil7aWYoYSZjJiYhKHRoaXMgaW5zdGFuY2VvZiBTaWduYXR1cmVXaWRnZXRBbm5vdGF0aW9uKSYmIXRoaXMuZGF0YS5ub0hUTUwmJiF0aGlzLmRhdGEuaGFzT3duQ2FudmFzKXtjb25zdCBlPXRoaXMuX2dldE9wZXJhdG9yTGlzdE5vQXBwZWFyYW5jZSgpO2Uuc2VwYXJhdGVGb3JtPSEwO3JldHVybiBlfWlmKCF0aGlzLl9oYXNUZXh0KXJldHVybiBzdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LGEsbik7Y29uc3Qgcz0hISh0aGlzLmRhdGEuaGFzT3duQ2FudmFzJiZhJm8pO2lmKHMmJigwPT09dGhpcy53aWR0aHx8MD09PXRoaXMuaGVpZ2h0KSl7dGhpcy5kYXRhLmhhc093bkNhbnZhcz0hMTtyZXR1cm4gdGhpcy5fZ2V0T3BlcmF0b3JMaXN0Tm9BcHBlYXJhbmNlKCl9Y29uc3Qgcj1hd2FpdCB0aGlzLl9nZXRBcHBlYXJhbmNlKGUsdCxhLG4pO2lmKHRoaXMuYXBwZWFyYW5jZSYmbnVsbD09PXIpcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsYSxuKTtjb25zdCBpPW5ldyBPcGVyYXRvckxpc3Q7aWYoIXRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlfHxudWxsPT09cilyZXR1cm57b3BMaXN0Omksc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfTtjb25zdCBsPVswLDAsdGhpcy53aWR0aCx0aGlzLmhlaWdodF0sZj1nZXRUcmFuc2Zvcm1NYXRyaXgodGhpcy5kYXRhLnJlY3QsbCxbMSwwLDAsMSwwLDBdKSxoPXRoaXMuX29jO3ZvaWQgMCE9PWgmJmkuYWRkT3AoQ3QsWyJPQyIsaF0pO2kuYWRkT3AoSHQsW3RoaXMuZGF0YS5pZCx0aGlzLmRhdGEucmVjdCxmLHRoaXMuZ2V0Um90YXRpb25NYXRyaXgobiksc10pO2NvbnN0IHU9bmV3IFN0cmluZ1N0cmVhbShyKTthd2FpdCBlLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnUsdGFzazp0LHJlc291cmNlczp0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMsb3BlcmF0b3JMaXN0Oml9KTtpLmFkZE9wKE10LFtdKTt2b2lkIDAhPT1oJiZpLmFkZE9wKEl0LFtdKTtyZXR1cm57b3BMaXN0Omksc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOnN9fV9nZXRNS0RpY3QoZSl7Y29uc3QgdD1uZXcgRGljdChudWxsKTtlJiZ0LnNldCgiUiIsZSk7dC5zZXRJZkFycmF5KCJCQyIsZ2V0UGRmQ29sb3JBcnJheSh0aGlzLmJvcmRlckNvbG9yKSk7dC5zZXRJZkFycmF5KCJCRyIsZ2V0UGRmQ29sb3JBcnJheSh0aGlzLmJhY2tncm91bmRDb2xvcikpO3JldHVybiB0LnNpemU+MD90Om51bGx9YW1lbmRTYXZlZERpY3QoZSx0KXt9c2V0VmFsdWUoZSx0LGEsbil7Y29uc3R7ZGljdDpzLHJlZjpyfT1mdW5jdGlvbiBnZXRQYXJlbnRUb1VwZGF0ZShlLHQsYSl7Y29uc3Qgbj1uZXcgUmVmU2V0LHM9ZSxyPXtkaWN0Om51bGwscmVmOm51bGx9O2Zvcig7ZSBpbnN0YW5jZW9mIERpY3QmJiFuLmhhcyh0KTspe24ucHV0KHQpO2lmKGUuaGFzKCJUIikpYnJlYWs7aWYoISgodD1lLmdldFJhdygiUGFyZW50IikpaW5zdGFuY2VvZiBSZWYpKXJldHVybiByO2U9YS5mZXRjaCh0KX1pZihlIGluc3RhbmNlb2YgRGljdCYmZSE9PXMpe3IuZGljdD1lO3IucmVmPXR9cmV0dXJuIHJ9KGUsdGhpcy5yZWYsYSk7aWYocyl7aWYoIW4uaGFzKHIpKXtjb25zdCBlPXMuY2xvbmUoKTtlLnNldCgiViIsdCk7bi5wdXQocix7ZGF0YTplfSk7cmV0dXJuIGV9fWVsc2UgZS5zZXQoIlYiLHQpO3JldHVybiBudWxsfWFzeW5jIHNhdmUoZSx0LGEsbil7Y29uc3Qgcz1hPy5nZXQodGhpcy5kYXRhLmlkKSxyPXRoaXMuX2J1aWxkRmxhZ3Mocz8ubm9WaWV3LHM/Lm5vUHJpbnQpO2xldCBpPXM/LnZhbHVlLG89cz8ucm90YXRpb247aWYoaT09PXRoaXMuZGF0YS5maWVsZFZhbHVlfHx2b2lkIDA9PT1pKXtpZighdGhpcy5faGFzVmFsdWVGcm9tWEZBJiZ2b2lkIDA9PT1vJiZ2b2lkIDA9PT1yKXJldHVybjtpfHw9dGhpcy5kYXRhLmZpZWxkVmFsdWV9aWYodm9pZCAwPT09byYmIXRoaXMuX2hhc1ZhbHVlRnJvbVhGQSYmQXJyYXkuaXNBcnJheShpKSYmQXJyYXkuaXNBcnJheSh0aGlzLmRhdGEuZmllbGRWYWx1ZSkmJmlzQXJyYXlFcXVhbChpLHRoaXMuZGF0YS5maWVsZFZhbHVlKSYmdm9pZCAwPT09cilyZXR1cm47dm9pZCAwPT09byYmKG89dGhpcy5yb3RhdGlvbik7bGV0IGw9bnVsbDtpZighdGhpcy5fbmVlZEFwcGVhcmFuY2VzKXtsPWF3YWl0IHRoaXMuX2dldEFwcGVhcmFuY2UoZSx0LGYsYSk7aWYobnVsbD09PWwmJnZvaWQgMD09PXIpcmV0dXJufWxldCBjPSExO2lmKGw/Lm5lZWRBcHBlYXJhbmNlcyl7Yz0hMDtsPW51bGx9Y29uc3R7eHJlZjpofT1lLHU9aC5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKHUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3QgbT1uZXcgRGljdChoKTtmb3IoY29uc3RbZSx0XW9mIHUuZ2V0UmF3RW50cmllcygpKSJBUCIhPT1lJiZtLnNldChlLHQpO2lmKHZvaWQgMCE9PXIpe20uc2V0KCJGIixyKTtpZihudWxsPT09bCYmIWMpe2NvbnN0IGU9dS5nZXRSYXcoIkFQIik7ZSYmbS5zZXQoIkFQIixlKX19Y29uc3QgcD17cGF0aDp0aGlzLmRhdGEuZmllbGROYW1lLHZhbHVlOml9LGQ9dGhpcy5zZXRWYWx1ZShtLEFycmF5LmlzQXJyYXkoaSk/aS5tYXAoc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRSk6c3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShpKSxoLG4pO3RoaXMuYW1lbmRTYXZlZERpY3QoYSxkfHxtKTtjb25zdCBnPXRoaXMuX2dldE1LRGljdChvKTtnJiZtLnNldCgiTUsiLGcpO24ucHV0KHRoaXMucmVmLHtkYXRhOm0seGZhOnAsbmVlZEFwcGVhcmFuY2VzOmN9KTtpZihudWxsIT09bCl7Y29uc3QgZT1oLmdldE5ld1RlbXBvcmFyeVJlZigpLHQ9bmV3IERpY3QoaCk7bS5zZXQoIkFQIix0KTt0LnNldCgiTiIsZSk7Y29uc3Qgcz10aGlzLl9nZXRTYXZlRmllbGRSZXNvdXJjZXMoaCkscj1uZXcgRGljdChoKTtyLnNldElmTmFtZSgiU3VidHlwZSIsIkZvcm0iKTtyLnNldCgiUmVzb3VyY2VzIixzKTtjb25zdCBpPW8lMTgwPT0wP1swLDAsdGhpcy53aWR0aCx0aGlzLmhlaWdodF06WzAsMCx0aGlzLmhlaWdodCx0aGlzLndpZHRoXTtyLnNldCgiQkJveCIsaSk7Y29uc3QgZj1uZXcgU3RyaW5nU3RyZWFtKGwsciksYz10aGlzLmdldFJvdGF0aW9uTWF0cml4KGEpO2MhPT1nYSYmci5zZXQoIk1hdHJpeCIsYyk7bi5wdXQoZSx7ZGF0YTpmLHhmYTpudWxsLG5lZWRBcHBlYXJhbmNlczohMX0pfW0uc2V0KCJNIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKX1hc3luYyBfZ2V0QXBwZWFyYW5jZShlLHQsYSxuKXtpZih0aGlzLmRhdGEucGFzc3dvcmQpcmV0dXJuIG51bGw7Y29uc3Qgcj1uPy5nZXQodGhpcy5kYXRhLmlkKTtsZXQgaSxvO2lmKHIpe2k9ci5mb3JtYXR0ZWRWYWx1ZXx8ci52YWx1ZTtvPXIucm90YXRpb259aWYodm9pZCAwPT09byYmdm9pZCAwPT09aSYmIXRoaXMuX25lZWRBcHBlYXJhbmNlcyYmKCF0aGlzLl9oYXNWYWx1ZUZyb21YRkF8fHRoaXMuYXBwZWFyYW5jZSkpcmV0dXJuIG51bGw7Y29uc3QgbD10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhuKTtpZih2b2lkIDA9PT1pKXtpPXRoaXMuZGF0YS5maWVsZFZhbHVlO2lmKCFpKXJldHVybmAvVHggQk1DIHEgJHtsfVEgRU1DYH1BcnJheS5pc0FycmF5KGkpJiYxPT09aS5sZW5ndGgmJihpPWlbMF0pO2Fzc2VydCgic3RyaW5nIj09dHlwZW9mIGksIkV4cGVjdGVkIGB2YWx1ZWAgdG8gYmUgYSBzdHJpbmcuIik7aT1pLnRyaW1FbmQoKTtpZih0aGlzLmRhdGEuY29tYm8pe2NvbnN0IGU9dGhpcy5kYXRhLm9wdGlvbnMuZmluZCgoe2V4cG9ydFZhbHVlOmV9KT0+aT09PWUpO2k9ZT8uZGlzcGxheVZhbHVlfHxpfWlmKCIiPT09aSlyZXR1cm5gL1R4IEJNQyBxICR7bH1RIEVNQ2A7dm9pZCAwPT09byYmKG89dGhpcy5yb3RhdGlvbik7bGV0IGMsaD0tMTtpZih0aGlzLmRhdGEubXVsdGlMaW5lKXtjPWkuc3BsaXQoL1xyXG4/fFxuLykubWFwKGU9PmUubm9ybWFsaXplKCJORkMiKSk7aD1jLmxlbmd0aH1lbHNlIGM9W2kucmVwbGFjZSgvXHJcbj98XG4vLCIiKS5ub3JtYWxpemUoIk5GQyIpXTtsZXR7d2lkdGg6dSxoZWlnaHQ6bX09dGhpczs5MCE9PW8mJjI3MCE9PW98fChbdSxtXT1bbSx1XSk7dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fCh0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPXBhcnNlRGVmYXVsdEFwcGVhcmFuY2UodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9Ii9IZWx2ZXRpY2EgMCBUZiAwIGciKSk7aWYoIXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udFNpemUmJih1PD00fHxtPD0yKSlyZXR1cm5gL1R4IEJNQyBxICR7bH1RIEVNQ2A7bGV0IHAsZCxnLGI9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzKTtjb25zdCB3PVtdO2xldCBqPSExO2Zvcihjb25zdCBlIG9mIGMpe2NvbnN0IHQ9Yi5lbmNvZGVTdHJpbmcoZSk7dC5sZW5ndGg+MSYmKGo9ITApO3cucHVzaCh0LmpvaW4oIiIpKX1pZihqJiZhJmYpcmV0dXJue25lZWRBcHBlYXJhbmNlczohMH07aWYoaiYmdGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpe2NvbnN0IGE9dGhpcy5kYXRhLmNvbWI/Im1vbm9zcGFjZSI6InNhbnMtc2VyaWYiLG49bmV3IEZha2VVbmljb2RlRm9udChlLnhyZWYsYSkscz1uLmNyZWF0ZUZvbnRSZXNvdXJjZXMoYy5qb2luKCIiKSkscj1zLmdldFJhdygiRm9udCIpO2lmKHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcy5oYXMoIkZvbnQiKSl7Y29uc3QgZT10aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMuZ2V0KCJGb250Iik7Zm9yKGNvbnN0W3QsYV1vZiByLmdldFJhd0VudHJpZXMoKSllLnNldCh0LGEpfWVsc2UgdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLnNldCgiRm9udCIscik7Y29uc3Qgbz1uLmZvbnROYW1lLm5hbWU7Yj1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShlLHQse2ZvbnROYW1lOm8sZm9udFNpemU6MH0scyk7Zm9yKGxldCBlPTAsdD13Lmxlbmd0aDtlPHQ7ZSsrKXdbZV09c3RyaW5nVG9VVEYxNlN0cmluZyhjW2VdKTtjb25zdCBsPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhKTt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnRTaXplPTA7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250TmFtZT1vO1twLGQsZ109dGhpcy5fY29tcHV0ZUZvbnRTaXplKG0tMix1LTQsaSxiLGgpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9bH1lbHNle3RoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfHx3YXJuKCJfZ2V0QXBwZWFyYW5jZTogT2Zmc2NyZWVuQ2FudmFzIGlzIG5vdCBzdXBwb3J0ZWQsIGFubm90YXRpb24gbWF5IG5vdCByZW5kZXIgY29ycmVjdGx5LiIpO1twLGQsZ109dGhpcy5fY29tcHV0ZUZvbnRTaXplKG0tMix1LTQsaSxiLGgpfWxldCBrPWIuZGVzY2VudDtrPWlzTmFOKGspP3MqZzpNYXRoLm1heChzKmcsTWF0aC5hYnMoaykqZCk7Y29uc3QgeT1NYXRoLm1pbihNYXRoLmZsb29yKChtLWQpLzIpLDEpLHE9dGhpcy5kYXRhLnRleHRBbGlnbm1lbnQ7bGV0e2FzY2VudDp2LGRlc2NlbnQ6U309YjtpZihpc05hTih2KXx8aXNOYU4oUyl8fCF2JiYhUyl7dj0xO1M9LjM1fWVsc2UgUz1NYXRoLmFicyhTKTtjb25zdCB4PShtLSh2K1MpKmQpLzIrUypkO2lmKHRoaXMuZGF0YS5tdWx0aUxpbmUpcmV0dXJuIHRoaXMuX2dldE11bHRpbGluZUFwcGVhcmFuY2UocCx3LGIsZCx1LG0scSwyLHksayxnLG4pO2lmKHRoaXMuZGF0YS5jb21iKXJldHVybiB0aGlzLl9nZXRDb21iQXBwZWFyYW5jZShwLGIsd1swXSxkLHUseCxxLCJydGwiPT09YmlkaShjWzBdKS5kaXIsbik7Y29uc3QgQz14O2lmKDA9PT1xfHxxPjIpcmV0dXJuYC9UeCBCTUMgcSAke2x9QlQgYCtwK2AgMSAwIDAgMSAke251bWJlclRvU3RyaW5nKDIpfSAke251bWJlclRvU3RyaW5nKEMpfSBUbSAoJHtlc2NhcGVTdHJpbmcod1swXSl9KSBUaiBFVCBRIEVNQ2A7cmV0dXJuYC9UeCBCTUMgcSAke2x9QlQgYCtwK2AgMSAwIDAgMSAwIDAgVG0gJHt0aGlzLl9yZW5kZXJUZXh0KHdbMF0sYixkLHUscSx7c2hpZnQ6MH0sMixDKX0gRVQgUSBFTUNgfXN0YXRpYyBhc3luYyBfZ2V0Rm9udERhdGEoZSx0LGEsbil7Y29uc3Qgcz1uZXcgT3BlcmF0b3JMaXN0LHI9e2ZvbnQ6bnVsbCxjbG9uZSgpe3JldHVybiB0aGlzfX0se2ZvbnROYW1lOmksZm9udFNpemU6b309YTthd2FpdCBlLmhhbmRsZVNldEZvbnQobixbaSYmTmFtZS5nZXQoaSksb10sbnVsbCxzLHQscixudWxsKTtyZXR1cm4gci5mb250fV9nZXRUZXh0V2lkdGgoZSx0KXtyZXR1cm4gTWF0aC5zdW1QcmVjaXNlKHQuY2hhcnNUb0dseXBocyhlKS5tYXAoZT0+ZS53aWR0aCkpLzFlM31fY29tcHV0ZUZvbnRTaXplKGUsdCxhLG4scyl7bGV0e2ZvbnRTaXplOnJ9PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7Y29uc3QgaT0xLjM1KihyfHwxMik7bGV0IG89TWF0aC5yb3VuZChlL2kpO2lmKCFyKXtjb25zdCByb3VuZFdpdGhUd29EaWdpdHM9ZT0+TWF0aC5mbG9vcigxMDAqZSkvMTAwO2lmKC0xPT09cyl7Y29uc3Qgcz10aGlzLl9nZXRUZXh0V2lkdGgoYSxuKTtyPXJvdW5kV2l0aFR3b0RpZ2l0cyhNYXRoLm1pbihlLzEuMzUsdC9zKSk7bz0xfWVsc2V7Y29uc3QgaT1hLnNwbGl0KC9cclxuP3xcbi8pLGw9W107Zm9yKGNvbnN0IGUgb2YgaSl7Y29uc3QgdD1uLmVuY29kZVN0cmluZyhlKS5qb2luKCIiKSxhPW4uY2hhcnNUb0dseXBocyh0KSxzPW4uZ2V0Q2hhclBvc2l0aW9ucyh0KTtsLnB1c2goe2xpbmU6dCxnbHlwaHM6YSxwb3NpdGlvbnM6c30pfWNvbnN0IGlzVG9vQmlnPWE9PntsZXQgcz0wO2Zvcihjb25zdCByIG9mIGwpe3MrPXRoaXMuX3NwbGl0TGluZShudWxsLG4sYSx0LHIpLmxlbmd0aCphO2lmKHM+ZSlyZXR1cm4hMH1yZXR1cm4hMX07bz1NYXRoLm1heChvLHMpO2NvbnN0IGdldEZvbnRTaXplPXQ9PnJvdW5kV2l0aFR3b0RpZ2l0cyhlL3QvMS4zNSk7aWYoZT4wJiZpc1Rvb0JpZyhnZXRGb250U2l6ZShvKSkpe2xldCBlPW8sdD0yKm87Zm9yKDtpc1Rvb0JpZyhnZXRGb250U2l6ZSh0KSk7KXtlPXQ7dCo9Mn1mb3IoO3QtZT4xOyl7Y29uc3QgYT1NYXRoLmZsb29yKChlK3QpLzIpO2lzVG9vQmlnKGdldEZvbnRTaXplKGEpKT9lPWE6dD1hfW89dH1yPWdldEZvbnRTaXplKG8pfWNvbnN0e2ZvbnROYW1lOmksZm9udENvbG9yOmx9PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9ZnVuY3Rpb24gY3JlYXRlRGVmYXVsdEFwcGVhcmFuY2Uoe2ZvbnRTaXplOmUsZm9udE5hbWU6dCxmb250Q29sb3I6YX0pe3JldHVybmAvJHtlc2NhcGVQREZOYW1lKHQpfSAke2V9IFRmICR7Z2V0UGRmQ29sb3IoYSwhMCl9YH0oe2ZvbnRTaXplOnIsZm9udE5hbWU6aSxmb250Q29sb3I6bH0pfXJldHVyblt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSxyLGUvb119X3JlbmRlclRleHQoZSx0LGEsbixzLHIsaSxvKXtsZXQgbDtpZigxPT09cyl7bD0obi10aGlzLl9nZXRUZXh0V2lkdGgoZSx0KSphKS8yfWVsc2UgaWYoMj09PXMpe2w9bi10aGlzLl9nZXRUZXh0V2lkdGgoZSx0KSphLWl9ZWxzZSBsPWk7Y29uc3QgZj1udW1iZXJUb1N0cmluZyhsLXIuc2hpZnQpO3Iuc2hpZnQ9bDtyZXR1cm5gJHtmfSAke289bnVtYmVyVG9TdHJpbmcobyl9IFRkICgke2VzY2FwZVN0cmluZyhlKX0pIFRqYH1fZ2V0U2F2ZUZpZWxkUmVzb3VyY2VzKGUpe2NvbnN0e2xvY2FsUmVzb3VyY2VzOnQsYXBwZWFyYW5jZVJlc291cmNlczphLGFjcm9Gb3JtUmVzb3VyY2VzOm59PXRoaXMuX2ZpZWxkUmVzb3VyY2VzLHM9dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT8uZm9udE5hbWU7aWYoIXMpcmV0dXJuIHR8fERpY3QuZW1wdHk7Zm9yKGNvbnN0IGUgb2ZbdCxhXSlpZihlIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgdD1lLmdldCgiRm9udCIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0JiZ0LmhhcyhzKSlyZXR1cm4gZX1pZihuIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgYT1uLmdldCgiRm9udCIpO2lmKGEgaW5zdGFuY2VvZiBEaWN0JiZhLmhhcyhzKSl7Y29uc3Qgbj1uZXcgRGljdChlKTtuLnNldChzLGEuZ2V0UmF3KHMpKTtjb25zdCByPW5ldyBEaWN0KGUpO3Iuc2V0KCJGb250IixuKTtyZXR1cm4gRGljdC5tZXJnZSh7eHJlZjplLGRpY3RBcnJheTpbcix0XSxtZXJnZVN1YkRpY3RzOiEwfSl9fXJldHVybiB0fHxEaWN0LmVtcHR5fWdldEZpZWxkT2JqZWN0KCl7cmV0dXJuIG51bGx9fWNsYXNzIFRleHRXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHthbm5vdGF0aW9uR2xvYmFsczp0LGRpY3Q6YX09ZTtpZihhLmhhcygiUE1EIikpe3RoaXMuZmxhZ3N8PUU7dGhpcy5kYXRhLmhpZGRlbj0hMDt3YXJuKCJCYXJjb2RlcyBhcmUgbm90IHN1cHBvcnRlZCIpfXRoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLnJlYWRPbmx5JiYhdGhpcy5kYXRhLm5vSFRNTDt0aGlzLl9oYXNUZXh0PSEwOyJzdHJpbmciIT10eXBlb2YgdGhpcy5kYXRhLmZpZWxkVmFsdWUmJih0aGlzLmRhdGEuZmllbGRWYWx1ZT0iIik7Y29uc3QgZ2V0QWxpZ25tZW50PWU9Pk51bWJlci5pc0ludGVnZXIoZSkmJmU+PTAmJmU8PTI/ZTpudWxsO3RoaXMuZGF0YS50ZXh0QWxpZ25tZW50PWdldEFsaWdubWVudChnZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OmEsa2V5OiJRIn0pKT8/Z2V0QWxpZ25tZW50KHQuYWNyb0Zvcm0uZ2V0KCJRIikpPz9udWxsO2xldCBuPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6YSxrZXk6Ik1heExlbiJ9KTsoIU51bWJlci5pc0ludGVnZXIobil8fG48MCkmJihuPTApO3RoaXMuZGF0YS5tYXhMZW49bjt0aGlzLmRhdGEubXVsdGlMaW5lPXRoaXMuaGFzRmllbGRGbGFnKEcpO3RoaXMuZGF0YS5jb21iPXRoaXMuaGFzRmllbGRGbGFnKHRlKSYmIXRoaXMuZGF0YS5tdWx0aUxpbmUmJiF0aGlzLmRhdGEucGFzc3dvcmQmJiF0aGlzLmhhc0ZpZWxkRmxhZyhRKSYmMCE9PXRoaXMuZGF0YS5tYXhMZW47dGhpcy5kYXRhLmRvTm90U2Nyb2xsPXRoaXMuaGFzRmllbGRGbGFnKGVlKTtjb25zdHthY3Rpb25zOnN9PXRoaXMuZGF0YTtpZighcylyZXR1cm47Y29uc3Qgcj0vXkFGKERhdGV8VGltZSlfKD86S2V5c3Ryb2tlfEZvcm1hdCkoPzpFeCk/XChbJyJdPyhbXiciXSspWyciXT9cKTskLztsZXQgaT0hMTtjb25zdCBvPXMuZ2V0KCJGb3JtYXQiKSxsPXMuZ2V0KCJLZXlzdHJva2UiKTsoMT09PW8/Lmxlbmd0aCYmMT09PWw/Lmxlbmd0aCYmci50ZXN0KG9bMF0pJiZyLnRlc3QobFswXSl8fDA9PT1vPy5sZW5ndGgmJjE9PT1sPy5sZW5ndGgmJnIudGVzdChsWzBdKXx8MD09PWw/Lmxlbmd0aCYmMT09PW8/Lmxlbmd0aCYmci50ZXN0KG9bMF0pKSYmKGk9ITApO2NvbnN0IGY9W107byYmZi5wdXNoKC4uLm8pO2wmJmYucHVzaCguLi5sKTtpZihpKXtzLmRlbGV0ZSgiS2V5c3Ryb2tlIik7cy5zZXQoIkZvcm1hdCIsZil9Zm9yKGNvbnN0IGUgb2YgZil7Y29uc3QgdD1lLm1hdGNoKHIpO2lmKCF0KWNvbnRpbnVlO2NvbnN0IGE9IkRhdGUiPT09dFsxXTtsZXQgbj10WzJdO2NvbnN0IHM9cGFyc2VJbnQobiwxMCk7aXNOYU4ocyl8fE1hdGguZmxvb3IoTWF0aC5sb2cxMChzKSkrMSE9PXRbMl0ubGVuZ3RofHwobj0oYT9XaTpYaSlbc10/P24pO3RoaXMuZGF0YS5kYXRldGltZUZvcm1hdD1uO2lmKCFpKWJyZWFrO2lmKGEpe2lmKC9ISHxNTXxzc3xoLy50ZXN0KG4pKXt0aGlzLmRhdGEuZGF0ZXRpbWVUeXBlPSJkYXRldGltZS1sb2NhbCI7dGhpcy5kYXRhLnRpbWVTdGVwPS9zcy8udGVzdChuKT8xOjYwfWVsc2UgdGhpcy5kYXRhLmRhdGV0aW1lVHlwZT0iZGF0ZSI7YnJlYWt9dGhpcy5kYXRhLmRhdGV0aW1lVHlwZT0idGltZSI7dGhpcy5kYXRhLnRpbWVTdGVwPS9zcy8udGVzdChuKT8xOjYwO2JyZWFrfX1nZXQgaGFzVGV4dENvbnRlbnQoKXtyZXR1cm4hIXRoaXMuYXBwZWFyYW5jZSYmIXRoaXMuX25lZWRBcHBlYXJhbmNlc31fZ2V0Q29tYkFwcGVhcmFuY2UoZSx0LGEsbixzLHIsaSxvLGwpe2NvbnN0IGY9cy90aGlzLmRhdGEubWF4TGVuLGM9dGhpcy5nZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQXBwZWFyYW5jZXMobCksaD10LmdldENoYXJQb3NpdGlvbnMoYSkubWFwKChbZSxzXSk9Pntjb25zdCByPWEuc3Vic3RyaW5nKGUscyk7cmV0dXJue2dseXBoOnIsd2lkdGg6dGhpcy5fZ2V0VGV4dFdpZHRoKHIsdCkqbn19KTtvJiZoLnJldmVyc2UoKTtjb25zdCB1PWYqaC5sZW5ndGg7bGV0IG09MDsxPT09aT9tKz1NYXRoLmZsb29yKChzLXUpLygyKmYpKSpmOjI9PT1pJiYobSs9cy11KTtjb25zdCBwPVtdO2xldCBkPTA7Zm9yKGxldCBlPTAsdD1oLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdHtnbHlwaDp0LHdpZHRoOmF9PWhbZV0sbj0wPT09ZT8oZi1hKS8yOmYrKGQtYSkvMjtwLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcobil9IDAgVGQgKCR7ZXNjYXBlU3RyaW5nKHQpfSkgVGpgKTtkPWF9Y29uc3QgZz1wLmpvaW4oIiAiKTtyZXR1cm5gL1R4IEJNQyBxICR7Y31CVCBgK2UrYCAxIDAgMCAxICR7bnVtYmVyVG9TdHJpbmcobSl9ICR7bnVtYmVyVG9TdHJpbmcocil9IFRtICR7Z30gRVQgUSBFTUNgfV9nZXRNdWx0aWxpbmVBcHBlYXJhbmNlKGUsdCxhLG4scyxyLGksbyxsLGYsYyxoKXtjb25zdCB1PVtdLG09cy0yKm8scD17c2hpZnQ6MH07Zm9yKGxldCBlPTAscj10Lmxlbmd0aDtlPHI7ZSsrKXtjb25zdCByPXRbZV0saD10aGlzLl9zcGxpdExpbmUocixhLG4sbSk7Zm9yKGxldCB0PTAscj1oLmxlbmd0aDt0PHI7dCsrKXtjb25zdCByPWhbdF0sbT0wPT09ZSYmMD09PXQ/LWwtKGMtZik6LWM7dS5wdXNoKHRoaXMuX3JlbmRlclRleHQocixhLG4scyxpLHAsbyxtKSl9fWNvbnN0IGQ9dGhpcy5nZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQXBwZWFyYW5jZXMoaCksZz11LmpvaW4oIlxuIik7cmV0dXJuYC9UeCBCTUMgcSAke2R9QlQgYCtlK2AgMSAwIDAgMSAwICR7bnVtYmVyVG9TdHJpbmcocil9IFRtICR7Z30gRVQgUSBFTUNgfV9zcGxpdExpbmUoZSx0LGEsbixzPXt9KXtlPXMubGluZXx8ZTtjb25zdCByPXMuZ2x5cGhzfHx0LmNoYXJzVG9HbHlwaHMoZSk7aWYoci5sZW5ndGg8PTEpcmV0dXJuW2VdO2NvbnN0IGk9cy5wb3NpdGlvbnN8fHQuZ2V0Q2hhclBvc2l0aW9ucyhlKSxvPWEvMWUzLGw9W107bGV0IGY9LTEsYz0tMSxoPS0xLHU9MCxtPTA7Zm9yKGxldCB0PTAsYT1yLmxlbmd0aDt0PGE7dCsrKXtjb25zdFthLHNdPWlbdF0scD1yW3RdLGQ9cC53aWR0aCpvO2lmKCIgIj09PXAudW5pY29kZSlpZihtK2Q+bil7bC5wdXNoKGUuc3Vic3RyaW5nKHUsYSkpO3U9YTttPWQ7Zj0tMTtoPS0xfWVsc2V7bSs9ZDtmPWE7Yz1zO2g9dH1lbHNlIGlmKG0rZD5uKWlmKC0xIT09Zil7bC5wdXNoKGUuc3Vic3RyaW5nKHUsYykpO3U9Yzt0PWgrMTtmPS0xO209MH1lbHNle2wucHVzaChlLnN1YnN0cmluZyh1LGEpKTt1PWE7bT1kfWVsc2UgbSs9ZH11PGUubGVuZ3RoJiZsLnB1c2goZS5zdWJzdHJpbmcodSkpO3JldHVybiBsfWFzeW5jIGV4dHJhY3RUZXh0Q29udGVudChlLHQsYSl7YXdhaXQgc3VwZXIuZXh0cmFjdFRleHRDb250ZW50KGUsdCxhKTtjb25zdCBuPXRoaXMuZGF0YS50ZXh0Q29udGVudDtpZighbilyZXR1cm47Y29uc3Qgcz1uLmpvaW4oIlxuIik7aWYocz09PXRoaXMuZGF0YS5maWVsZFZhbHVlKXJldHVybjtjb25zdCByPXMucmVwbGFjZUFsbCgvKFsuKis/XiR7fSgpfFtcXVxcXSl8KFxzKykvZywoZSx0KT0+dD9gXFwke3R9YDoiXFxzKyIpO25ldyBSZWdFeHAoYF5cXHMqJHtyfVxccyokYCkudGVzdCh0aGlzLmRhdGEuZmllbGRWYWx1ZSkmJih0aGlzLmRhdGEudGV4dENvbnRlbnQ9dGhpcy5kYXRhLmZpZWxkVmFsdWUuc3BsaXQoIlxuIikpfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZSxkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlfHwiIixtdWx0aWxpbmU6dGhpcy5kYXRhLm11bHRpTGluZSxwYXNzd29yZDp0aGlzLmRhdGEucGFzc3dvcmQsY2hhckxpbWl0OnRoaXMuZGF0YS5tYXhMZW4sY29tYjp0aGlzLmRhdGEuY29tYixlZGl0YWJsZTohdGhpcy5kYXRhLnJlYWRPbmx5LGhpZGRlbjp0aGlzLmRhdGEuaGlkZGVuLG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxyZWN0OnRoaXMuZGF0YS5yZWN0LGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLGRhdGV0aW1lRm9ybWF0OnRoaXMuZGF0YS5kYXRldGltZUZvcm1hdCxoYXNEYXRldGltZUhUTUw6ISF0aGlzLmRhdGEuZGF0ZXRpbWVUeXBlLHR5cGU6InRleHQifX19Y2xhc3MgQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1udWxsO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1udWxsO2NvbnN0IHQ9dGhpcy5oYXNGaWVsZEZsYWcoJCksYT10aGlzLmhhc0ZpZWxkRmxhZyhZKTt0aGlzLmRhdGEuY2hlY2tCb3g9IXQmJiFhO3RoaXMuZGF0YS5yYWRpb0J1dHRvbj10JiYhYTt0aGlzLmRhdGEucHVzaEJ1dHRvbj1hO3RoaXMuZGF0YS5pc1Rvb2x0aXBPbmx5PSExO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9ITA7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEuY2hlY2tCb3g/dGhpcy5fcHJvY2Vzc0NoZWNrQm94KGUpOnRoaXMuZGF0YS5yYWRpb0J1dHRvbj90aGlzLl9wcm9jZXNzUmFkaW9CdXR0b24oZSk6dGhpcy5kYXRhLnB1c2hCdXR0b24/dGhpcy5fcHJvY2Vzc1B1c2hCdXR0b24oZSk6d2FybigiSW52YWxpZCBmaWVsZCBmbGFncyBmb3IgYnV0dG9uIHdpZGdldCBhbm5vdGF0aW9uIil9Z2V0IF9vd25DYW52YXNSZXF1aXJlc0Zvcm1zKCl7cmV0dXJuIHRoaXMuZGF0YS5jaGVja0JveHx8dGhpcy5kYXRhLnJhZGlvQnV0dG9ufSNEdChlLHQsYSxuLHMscil7aWYoIXIpcmV0dXJuIHRoaXMuX2dldE9wZXJhdG9yTGlzdE5vQXBwZWFyYW5jZSgpO2NvbnN0IGk9dGhpcy5hcHBlYXJhbmNlLG89bG9va3VwTWF0cml4KHIuZGljdC5nZXRBcnJheSgiTWF0cml4IiksZ2EpO3MmJnIuZGljdC5zZXQoIk1hdHJpeCIsdGhpcy5nZXRSb3RhdGlvbk1hdHJpeChuKSk7dGhpcy5hcHBlYXJhbmNlPXI7Y29uc3QgbD1zdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LGEsbik7dGhpcy5hcHBlYXJhbmNlPWk7ci5kaWN0LnNldCgiTWF0cml4IixvKTtyZXR1cm4gbH1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGEsbil7aWYodGhpcy5kYXRhLnB1c2hCdXR0b24pcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsYSwhMSxuKTtpZihhJm8mJmEmYyYmKHRoaXMuZGF0YS5jaGVja0JveHx8dGhpcy5kYXRhLnJhZGlvQnV0dG9uKSl7Y29uc3Qgc2V0Q2FudmFzTmFtZT0oZSx0KT0+e2NvbnN0IGE9ZS5mbkFycmF5LmluZGV4T2YoSHQpOy0xIT09YSYmZS5hcmdzQXJyYXlbYV0ucHVzaCh0KX0scz1hd2FpdCB0aGlzLiNEdChlLHQsYSxuLG51bGwsdGhpcy5jaGVja2VkQXBwZWFyYW5jZSk7c2V0Q2FudmFzTmFtZShzLm9wTGlzdCwiY2hlY2tlZCIpO2NvbnN0IHI9YXdhaXQgdGhpcy4jRHQoZSx0LGEsbixudWxsLHRoaXMudW5jaGVja2VkQXBwZWFyYW5jZSk7c2V0Q2FudmFzTmFtZShyLm9wTGlzdCwidW5jaGVja2VkIik7cy5vcExpc3QuYWRkT3BMaXN0KHIub3BMaXN0KTtzLnNlcGFyYXRlRm9ybXx8PXIuc2VwYXJhdGVGb3JtO3Muc2VwYXJhdGVDYW52YXN8fD1yLnNlcGFyYXRlQ2FudmFzO3JldHVybiBzfWxldCBzPW51bGwscj1udWxsO2lmKG4pe2NvbnN0IGU9bi5nZXQodGhpcy5kYXRhLmlkKTtzPWU/ZS52YWx1ZTpudWxsO3I9ZT9lLnJvdGF0aW9uOm51bGx9aWYobnVsbD09PXMmJnRoaXMuYXBwZWFyYW5jZSlyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4pO3M/Pz10aGlzLmRhdGEuY2hlY2tCb3g/dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuZXhwb3J0VmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuYnV0dG9uVmFsdWU7cmV0dXJuIHRoaXMuI0R0KGUsdCxhLG4scixzP3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U6dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlKX1hc3luYyBzYXZlKGUsdCxhLG4pe3RoaXMuZGF0YS5jaGVja0JveD90aGlzLl9zYXZlQ2hlY2tib3goZSx0LGEsbik6dGhpcy5kYXRhLnJhZGlvQnV0dG9uJiZ0aGlzLl9zYXZlUmFkaW9CdXR0b24oZSx0LGEsbil9YXN5bmMgX3NhdmVDaGVja2JveChlLHQsYSxuKXtpZighYSlyZXR1cm47Y29uc3Qgcz1hLmdldCh0aGlzLmRhdGEuaWQpLHI9dGhpcy5fYnVpbGRGbGFncyhzPy5ub1ZpZXcscz8ubm9QcmludCk7bGV0IGk9cz8ucm90YXRpb24sbz1zPy52YWx1ZTtpZih2b2lkIDA9PT1pJiZ2b2lkIDA9PT1yKXtpZih2b2lkIDA9PT1vKXJldHVybjtpZih0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZT09PW8pcmV0dXJufWxldCBsPWUueHJlZi5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKGwgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47bD1sLmNsb25lKCk7dm9pZCAwPT09aSYmKGk9dGhpcy5yb3RhdGlvbik7dm9pZCAwPT09byYmKG89dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuZXhwb3J0VmFsdWUpO2NvbnN0IGY9e3BhdGg6dGhpcy5kYXRhLmZpZWxkTmFtZSx2YWx1ZTpvP3RoaXMuZGF0YS5leHBvcnRWYWx1ZToiIn0sYz1OYW1lLmdldChvP3RoaXMuX29uU3RhdGVOYW1lOiJPZmYiKTt0aGlzLnNldFZhbHVlKGwsYyxlLnhyZWYsbik7bC5zZXQoIkFTIixjKTtsLnNldCgiTSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7dm9pZCAwIT09ciYmbC5zZXQoIkYiLHIpO2NvbnN0IGg9dGhpcy5fZ2V0TUtEaWN0KGkpO2gmJmwuc2V0KCJNSyIsaCk7bi5wdXQodGhpcy5yZWYse2RhdGE6bCx4ZmE6ZixuZWVkQXBwZWFyYW5jZXM6ITF9KX1hc3luYyBfc2F2ZVJhZGlvQnV0dG9uKGUsdCxhLG4pe2lmKCFhKXJldHVybjtjb25zdCBzPWEuZ2V0KHRoaXMuZGF0YS5pZCkscj10aGlzLl9idWlsZEZsYWdzKHM/Lm5vVmlldyxzPy5ub1ByaW50KTtsZXQgaT1zPy5yb3RhdGlvbixvPXM/LnZhbHVlO2lmKHZvaWQgMD09PWkmJnZvaWQgMD09PXIpe2lmKHZvaWQgMD09PW8pcmV0dXJuO2lmKHRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmJ1dHRvblZhbHVlPT09bylyZXR1cm59bGV0IGw9ZS54cmVmLmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEobCBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtsPWwuY2xvbmUoKTt2b2lkIDA9PT1vJiYobz10aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7dm9pZCAwPT09aSYmKGk9dGhpcy5yb3RhdGlvbik7Y29uc3QgZj17cGF0aDp0aGlzLmRhdGEuZmllbGROYW1lLHZhbHVlOm8/dGhpcy5kYXRhLmJ1dHRvblZhbHVlOiIifSxjPU5hbWUuZ2V0KG8/dGhpcy5fb25TdGF0ZU5hbWU6Ik9mZiIpO28mJnRoaXMuc2V0VmFsdWUobCxjLGUueHJlZixuKTtsLnNldCgiQVMiLGMpO2wuc2V0KCJNIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTt2b2lkIDAhPT1yJiZsLnNldCgiRiIscik7Y29uc3QgaD10aGlzLl9nZXRNS0RpY3QoaSk7aCYmbC5zZXQoIk1LIixoKTtuLnB1dCh0aGlzLnJlZix7ZGF0YTpsLHhmYTpmLG5lZWRBcHBlYXJhbmNlczohMX0pfV9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSx0KXtjb25zdHt3aWR0aDphLGhlaWdodDpufT10aGlzLHM9WzAsMCxhLG5dLHI9LjgqTWF0aC5taW4oYSxuKTtsZXQgaSxvO2lmKCJjaGVjayI9PT10KXtpPXt3aWR0aDouNzU1KnIsaGVpZ2h0Oi43MDUqcn07bz0iMyJ9ZWxzZSBpZigiZGlzYyI9PT10KXtpPXt3aWR0aDouNzkxKnIsaGVpZ2h0Oi43MDUqcn07bz0ibCJ9ZWxzZSB1bnJlYWNoYWJsZShgX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZSAtIHVuc3VwcG9ydGVkIHR5cGU6ICR7dH1gKTtjb25zdCBsPWBxIEJUIC9QZGZKc1phRGIgJHtyfSBUZiAwIGcgJHtudW1iZXJUb1N0cmluZygoYS1pLndpZHRoKS8yKX0gJHtudW1iZXJUb1N0cmluZygobi1pLmhlaWdodCkvMil9IFRkICgke299KSBUaiBFVCBRYCxmPW5ldyBEaWN0KGUueHJlZik7Zi5zZXQoIkZvcm1UeXBlIiwxKTtmLnNldElmTmFtZSgiU3VidHlwZSIsIkZvcm0iKTtmLnNldElmTmFtZSgiVHlwZSIsIlhPYmplY3QiKTtmLnNldCgiQkJveCIscyk7Zi5zZXQoIk1hdHJpeCIsWzEsMCwwLDEsMCwwXSk7Zi5zZXQoIkxlbmd0aCIsbC5sZW5ndGgpO2NvbnN0IGM9bmV3IERpY3QoZS54cmVmKSxoPW5ldyBEaWN0KGUueHJlZik7aC5zZXQoIlBkZkpzWmFEYiIsdGhpcy5mYWxsYmFja0ZvbnREaWN0KTtjLnNldCgiRm9udCIsaCk7Zi5zZXQoIlJlc291cmNlcyIsYyk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1uZXcgU3RyaW5nU3RyZWFtKGwsZik7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpfV9nZXRPblN0YXRlTmFtZShlKXtjb25zdCB0PWUuZ2V0KCJBUCIpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2NvbnN0IGE9dC5nZXQoIk4iKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtmb3IoY29uc3QgZSBvZiBhLmdldEtleXMoKSlpZigiT2ZmIiE9PWUpcmV0dXJuIGU7cmV0dXJuIG51bGx9X2dldEV4cG9ydFZhbHVlRm9yT3B0SW5kZXgoZSx0LGEpe2lmKE51bWJlci5pc0ludGVnZXIoZSkmJmU+PTAmJmU8dC5sZW5ndGgpe2NvbnN0IG49dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGEuZmV0Y2hJZlJlZih0W2VdKSk7aWYoInN0cmluZyI9PXR5cGVvZiBuKXJldHVybiBufXJldHVybiBudWxsfV9nZXRPcHRJbmZvKGUsdCxhLG4pe2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiBudWxsO2NvbnN0IHM9bmV3IE1hcDtsZXQgcj1udWxsO2NvbnN0IGk9ZS5nZXQoIlBhcmVudCIpLG89aSBpbnN0YW5jZW9mIERpY3Q/aS5nZXQoIktpZHMiKTpudWxsO2lmKEFycmF5LmlzQXJyYXkobykpZm9yKGxldCB0PTAsaT1NYXRoLm1pbihvLmxlbmd0aCxhLmxlbmd0aCk7dDxpO3QrKyl7Y29uc3QgYT1vW3RdO2EgaW5zdGFuY2VvZiBSZWYmJmlzUmVmc0VxdWFsKGEsdGhpcy5yZWYpJiYocj10KTtjb25zdCBpPW4uZmV0Y2hJZlJlZihhKTtpZighKGkgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtpPT09ZSYmKHI9dCk7Y29uc3QgbD10aGlzLl9nZXRPblN0YXRlTmFtZShpKTsic3RyaW5nIiE9dHlwZW9mIGx8fHMuaGFzKGwpfHxzLnNldChsLHQpfWVsc2UgaWYoMT09PWEubGVuZ3RoJiYic3RyaW5nIj09dHlwZW9mIHQpe3I9MDtzLnNldCh0LDApfXJldHVybntjdXJyZW50SW5kZXg6cixvcHQ6YSxzdGF0ZVRvSW5kZXg6c319X2dldEV4cG9ydFZhbHVlKGUsdCxhKXtpZighdHx8InN0cmluZyIhPXR5cGVvZiBlfHwiT2ZmIj09PWUpcmV0dXJuIGU7aWYoZT09PXRoaXMuX29uU3RhdGVOYW1lKXtjb25zdCBlPXRoaXMuX2dldEV4cG9ydFZhbHVlRm9yT3B0SW5kZXgodC5jdXJyZW50SW5kZXgsdC5vcHQsYSk7aWYobnVsbCE9PWUpcmV0dXJuIGV9aWYodC5zdGF0ZVRvSW5kZXguaGFzKGUpKXtjb25zdCBuPXRoaXMuX2dldEV4cG9ydFZhbHVlRm9yT3B0SW5kZXgodC5zdGF0ZVRvSW5kZXguZ2V0KGUpLHQub3B0LGEpO2lmKG51bGwhPT1uKXJldHVybiBufWNvbnN0IG49cGFyc2VJbnQoZSwxMCk7cmV0dXJuIE51bWJlci5pc0ludGVnZXIobikmJlN0cmluZyhuKT09PWUmJnRoaXMuX2dldEV4cG9ydFZhbHVlRm9yT3B0SW5kZXgobix0Lm9wdCxhKXx8ZX1fcHJvY2Vzc0NoZWNrQm94KGUpe2NvbnN0IHQ9ZS5kaWN0LmdldCgiQVAiKTtsZXQgYT10IGluc3RhbmNlb2YgRGljdD90LmdldCgiTiIpOm51bGw7YSBpbnN0YW5jZW9mIERpY3R8fChhPW51bGwpO2NvbnN0IG49dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUuZGljdC5nZXQoIkFTIikpOyJzdHJpbmciPT10eXBlb2YgbiYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPW4pO2NvbnN0IHM9bnVsbCE9PXRoaXMuZGF0YS5maWVsZFZhbHVlJiYiT2ZmIiE9PXRoaXMuZGF0YS5maWVsZFZhbHVlP3RoaXMuZGF0YS5maWVsZFZhbHVlOiJZZXMiLHI9YT9bLi4uYS5nZXRLZXlzKCldOltdO2lmKDA9PT1yLmxlbmd0aClyLnB1c2goIk9mZiIscyk7ZWxzZSBpZigxPT09ci5sZW5ndGgpIk9mZiI9PT1yWzBdP3IucHVzaChzKTpyLnVuc2hpZnQoIk9mZiIpO2Vsc2UgaWYoci5pbmNsdWRlcyhzKSl7ci5sZW5ndGg9MDtyLnB1c2goIk9mZiIscyl9ZWxzZXtjb25zdCBlPXIuZmluZChlPT4iT2ZmIiE9PWUpO3IubGVuZ3RoPTA7ci5wdXNoKCJPZmYiLGUpfWNvbnN0IGk9clsxXTt0aGlzLl9vblN0YXRlTmFtZT1pO2NvbnN0IG89Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDplLmRpY3Qsa2V5OiJPcHQifSksbD10aGlzLl9nZXRPcHRJbmZvKGUuZGljdCxpLG8sZS54cmVmKTt0aGlzLmRhdGEuZXhwb3J0VmFsdWU9dGhpcy5fZ2V0RXhwb3J0VmFsdWUoaSxsLGUueHJlZik7ci5pbmNsdWRlcyh0aGlzLmRhdGEuZmllbGRWYWx1ZSl8fHRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlfHwodGhpcy5kYXRhLmZpZWxkVmFsdWU9Ik9mZiIpO3RoaXMuZGF0YS5maWVsZFZhbHVlPXRoaXMuX2dldEV4cG9ydFZhbHVlKHRoaXMuZGF0YS5maWVsZFZhbHVlLGwsZS54cmVmKTt0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWU9dGhpcy5fZ2V0RXhwb3J0VmFsdWUodGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlLGwsZS54cmVmKTtjb25zdCBmPWE/LmdldChpKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPWYgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2Y6bnVsbDtjb25zdCBjPWE/LmdldCgiT2ZmIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPWMgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2M6bnVsbDt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlP3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKTp0aGlzLl9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSwiY2hlY2siKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0O251bGw9PT10aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUmJih0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWU9Ik9mZiIpfV9wcm9jZXNzUmFkaW9CdXR0b24oZSl7dGhpcy5kYXRhLmJ1dHRvblZhbHVlPW51bGw7Y29uc3QgdD1lLmRpY3QuZ2V0KCJQYXJlbnQiKTtpZih0IGluc3RhbmNlb2YgRGljdCl7dGhpcy5wYXJlbnQ9ZS5kaWN0LmdldFJhdygiUGFyZW50Iik7Y29uc3QgYT10LmdldCgiViIpO2EgaW5zdGFuY2VvZiBOYW1lJiYodGhpcy5kYXRhLmZpZWxkVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGEpKX1jb25zdCBhPWUuZGljdC5nZXQoIkFQIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IG49YS5nZXQoIk4iKTtpZighKG4gaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47bGV0IHM9bnVsbDtmb3IoY29uc3QgZSBvZiBuLmdldEtleXMoKSlpZigiT2ZmIiE9PWUpe3M9ZTticmVha310aGlzLl9vblN0YXRlTmFtZT1zO2NvbnN0IHI9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDplLmRpY3Qsa2V5OiJPcHQifSksaT10aGlzLl9nZXRPcHRJbmZvKGUuZGljdCxzLHIsZS54cmVmKTt0aGlzLmRhdGEuYnV0dG9uVmFsdWU9dGhpcy5fZ2V0RXhwb3J0VmFsdWUocyxpLGUueHJlZik7dGhpcy5kYXRhLmZpZWxkVmFsdWU9dGhpcy5fZ2V0RXhwb3J0VmFsdWUodGhpcy5kYXRhLmZpZWxkVmFsdWUsaSxlLnhyZWYpO3RoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZT10aGlzLl9nZXRFeHBvcnRWYWx1ZSh0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUsaSxlLnhyZWYpO2NvbnN0IG89bi5nZXQocyk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1vIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9vOm51bGw7Y29uc3QgbD1uLmdldCgiT2ZmIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPWwgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2w6bnVsbDt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlP3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKTp0aGlzLl9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSwiZGlzYyIpO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZSYmdGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMudW5jaGVja2VkQXBwZWFyYW5jZSk7dGhpcy5fZmFsbGJhY2tGb250RGljdD10aGlzLmZhbGxiYWNrRm9udERpY3Q7bnVsbD09PXRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZSYmKHRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZT0iT2ZmIil9X3Byb2Nlc3NQdXNoQnV0dG9uKGUpe2NvbnN0e2RpY3Q6dCxhbm5vdGF0aW9uR2xvYmFsczphfT1lO2lmKHQuaGFzKCJBIil8fHQuaGFzKCJBQSIpfHx0aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KXt0aGlzLmRhdGEuaXNUb29sdGlwT25seT0hdC5oYXMoIkEiKSYmIXQuaGFzKCJBQSIpO0NhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6dCxyZXN1bHRPYmo6dGhpcy5kYXRhLGRvY0Jhc2VVcmw6YS5iYXNlVXJsLGRvY0F0dGFjaG1lbnRzOmEuYXR0YWNobWVudHN9KX1lbHNlIHdhcm4oIlB1c2ggYnV0dG9ucyB3aXRob3V0IGFjdGlvbiBkaWN0aW9uYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQiKX1nZXRGaWVsZE9iamVjdCgpe2xldCBlLHQ9ImJ1dHRvbiI7aWYodGhpcy5kYXRhLmNoZWNrQm94KXt0PSJjaGVja2JveCI7ZT10aGlzLmRhdGEuZXhwb3J0VmFsdWV9ZWxzZSBpZih0aGlzLmRhdGEucmFkaW9CdXR0b24pe3Q9InJhZGlvYnV0dG9uIjtlPXRoaXMuZGF0YS5idXR0b25WYWx1ZX1yZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwiT2ZmIixkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlLGV4cG9ydFZhbHVlczplLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZTp0fX1nZXQgZmFsbGJhY2tGb250RGljdCgpe2NvbnN0IGU9bmV3IERpY3Q7ZS5zZXRJZk5hbWUoIkJhc2VGb250IiwiWmFwZkRpbmdiYXRzIik7ZS5zZXRJZk5hbWUoIlR5cGUiLCJGYWxsYmFja1R5cGUiKTtlLnNldElmTmFtZSgiU3VidHlwZSIsIkZhbGxiYWNrVHlwZSIpO2Uuc2V0SWZOYW1lKCJFbmNvZGluZyIsIlphcGZEaW5nYmF0c0VuY29kaW5nIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJmYWxsYmFja0ZvbnREaWN0IixlKX19Y2xhc3MgQ2hvaWNlV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTt0aGlzLmluZGljZXM9dC5nZXRBcnJheSgiSSIpO3RoaXMuaGFzSW5kaWNlcz1BcnJheS5pc0FycmF5KHRoaXMuaW5kaWNlcykmJnRoaXMuaW5kaWNlcy5sZW5ndGg+MDt0aGlzLmRhdGEub3B0aW9ucz1bXTtjb25zdCBuPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6Ik9wdCJ9KTtpZihBcnJheS5pc0FycmF5KG4pKWZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1hLmZldGNoSWZSZWYobltlXSkscz1BcnJheS5pc0FycmF5KHQpO3RoaXMuZGF0YS5vcHRpb25zW2VdPXtleHBvcnRWYWx1ZTp0aGlzLl9kZWNvZGVGb3JtVmFsdWUocz9hLmZldGNoSWZSZWYodFswXSk6dCksZGlzcGxheVZhbHVlOnRoaXMuX2RlY29kZUZvcm1WYWx1ZShzP2EuZmV0Y2hJZlJlZih0WzFdKTp0KX19aWYodGhpcy5oYXNJbmRpY2VzKXt0aGlzLmRhdGEuZmllbGRWYWx1ZT1bXTtjb25zdCBlPXRoaXMuZGF0YS5vcHRpb25zLmxlbmd0aDtmb3IoY29uc3QgdCBvZiB0aGlzLmluZGljZXMpTnVtYmVyLmlzSW50ZWdlcih0KSYmdD49MCYmdDxlJiZ0aGlzLmRhdGEuZmllbGRWYWx1ZS5wdXNoKHRoaXMuZGF0YS5vcHRpb25zW3RdLmV4cG9ydFZhbHVlKX1lbHNlInN0cmluZyI9PXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZT90aGlzLmRhdGEuZmllbGRWYWx1ZT1bdGhpcy5kYXRhLmZpZWxkVmFsdWVdOnRoaXMuZGF0YS5maWVsZFZhbHVlfHw9W107MD09PXRoaXMuZGF0YS5vcHRpb25zLmxlbmd0aCYmdGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoPjAmJih0aGlzLmRhdGEub3B0aW9ucz10aGlzLmRhdGEuZmllbGRWYWx1ZS5tYXAoZT0+KHtleHBvcnRWYWx1ZTplLGRpc3BsYXlWYWx1ZTplfSkpKTt0aGlzLmRhdGEuY29tYm89dGhpcy5oYXNGaWVsZEZsYWcoSik7dGhpcy5kYXRhLm11bHRpU2VsZWN0PXRoaXMuaGFzRmllbGRGbGFnKFopO3RoaXMuX2hhc1RleHQ9ITB9Z2V0RmllbGRPYmplY3QoKXtjb25zdCBlPXRoaXMuZGF0YS5jb21ibz8iY29tYm9ib3giOiJsaXN0Ym94Iix0PXRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aD4wP3RoaXMuZGF0YS5maWVsZFZhbHVlWzBdOm51bGw7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTp0LGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxudW1JdGVtczp0aGlzLmRhdGEuZmllbGRWYWx1ZS5sZW5ndGgsbXVsdGlwbGVTZWxlY3Rpb246dGhpcy5kYXRhLm11bHRpU2VsZWN0LGhpZGRlbjp0aGlzLmRhdGEuaGlkZGVuLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMsaXRlbXM6dGhpcy5kYXRhLm9wdGlvbnMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLHR5cGU6ZX19YW1lbmRTYXZlZERpY3QoZSx0KXtpZighdGhpcy5oYXNJbmRpY2VzKXJldHVybjtsZXQgYT1lPy5nZXQodGhpcy5kYXRhLmlkKT8udmFsdWU7QXJyYXkuaXNBcnJheShhKXx8KGE9W2FdKTtjb25zdCBuPVtdLHtvcHRpb25zOnN9PXRoaXMuZGF0YTtmb3IobGV0IGU9MCx0PTAscj1zLmxlbmd0aDtlPHI7ZSsrKWlmKHNbZV0uZXhwb3J0VmFsdWU9PT1hW3RdKXtuLnB1c2goZSk7dCs9MX10LnNldCgiSSIsbil9YXN5bmMgX2dldEFwcGVhcmFuY2UoZSx0LGEsbil7aWYodGhpcy5kYXRhLmNvbWJvKXJldHVybiBzdXBlci5fZ2V0QXBwZWFyYW5jZShlLHQsYSxuKTtsZXQgcyxyO2NvbnN0IGk9bj8uZ2V0KHRoaXMuZGF0YS5pZCk7aWYoaSl7cj1pLnJvdGF0aW9uO3M9aS52YWx1ZX1pZih2b2lkIDA9PT1yJiZ2b2lkIDA9PT1zJiYhdGhpcy5fbmVlZEFwcGVhcmFuY2VzKXJldHVybiBudWxsO3ZvaWQgMD09PXM/cz10aGlzLmRhdGEuZmllbGRWYWx1ZTpBcnJheS5pc0FycmF5KHMpfHwocz1bc10pO2xldHt3aWR0aDpvLGhlaWdodDpsfT10aGlzOzkwIT09ciYmMjcwIT09cnx8KFtvLGxdPVtsLG9dKTtjb25zdCBmPXRoaXMuZGF0YS5vcHRpb25zLmxlbmd0aCxjPVtdO2ZvcihsZXQgZT0wO2U8ZjtlKyspe2NvbnN0e2V4cG9ydFZhbHVlOnR9PXRoaXMuZGF0YS5vcHRpb25zW2VdO3MuaW5jbHVkZXModCkmJmMucHVzaChlKX10aGlzLl9kZWZhdWx0QXBwZWFyYW5jZXx8KHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9cGFyc2VEZWZhdWx0QXBwZWFyYW5jZSh0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT0iL0hlbHZldGljYSAwIFRmIDAgZyIpKTtjb25zdCBoPWF3YWl0IFdpZGdldEFubm90YXRpb24uX2dldEZvbnREYXRhKGUsdCx0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcyk7bGV0IHUse2ZvbnRTaXplOm19PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7aWYobSl1PXRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlO2Vsc2V7Y29uc3QgZT0obC0xKS9mO2xldCB0LGE9LTE7Zm9yKGNvbnN0e2Rpc3BsYXlWYWx1ZTplfW9mIHRoaXMuZGF0YS5vcHRpb25zKXtjb25zdCBuPXRoaXMuX2dldFRleHRXaWR0aChlLGgpO2lmKG4+YSl7YT1uO3Q9ZX19W3UsbV09dGhpcy5fY29tcHV0ZUZvbnRTaXplKGUsby00LHQsaCwtMSl9Y29uc3QgcD0xLjM1Km0sZD0ocC1tKS8yLGc9TWF0aC5mbG9vcihsL3ApO2xldCBiPTA7aWYoYy5sZW5ndGg+MCl7Y29uc3QgZT1NYXRoLm1pbiguLi5jKTtiPU1hdGhDbGFtcChNYXRoLm1heCguLi5jKS1nKzEsMCxlKX1jb25zdCB3PU1hdGgubWluKGIrZysxLGYpLGo9WyIvVHggQk1DIHEiLGAxIDEgJHtvfSAke2x9IHJlIFcgbmBdO2lmKGMubGVuZ3RoKXtqLnB1c2goIjAuNjAwMDA2IDAuNzU2ODY2IDAuODU0OTA0IHJnIik7Zm9yKGNvbnN0IGUgb2YgYyliPD1lJiZlPHcmJmoucHVzaChgMSAke2wtKGUtYisxKSpwfSAke299ICR7cH0gcmUgZmApfWoucHVzaCgiQlQiLHUsYDEgMCAwIDEgMCAke2x9IFRtYCk7Y29uc3Qgaz17c2hpZnQ6MH07Zm9yKGxldCBlPWI7ZTx3O2UrKyl7Y29uc3R7ZGlzcGxheVZhbHVlOnR9PXRoaXMuZGF0YS5vcHRpb25zW2VdLGE9ZT09PWI/ZDowO2oucHVzaCh0aGlzLl9yZW5kZXJUZXh0KHQsaCxtLG8sMCxrLDIsLXArYSkpfWoucHVzaCgiRVQgUSBFTUMiKTtyZXR1cm4gai5qb2luKCJcbiIpfX1jbGFzcyBTaWduYXR1cmVXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntfaGFzVmFsdWVGcm9tWEZBPSExO2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5maWVsZFZhbHVlPW51bGw7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hdGhpcy5kYXRhLmhhc093bkNhbnZhc31nZXRGaWVsZE9iamVjdCgpe3JldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6bnVsbCxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsdHlwZToic2lnbmF0dXJlIn19fWNsYXNzIFRleHRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEubm9Sb3RhdGU9ITA7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTtjb25zdHtkaWN0OnR9PWU7aWYodGhpcy5kYXRhLmhhc0FwcGVhcmFuY2UpdGhpcy5kYXRhLm5hbWU9Ik5vSWNvbiI7ZWxzZXt0aGlzLmRhdGEucmVjdFsxXT10aGlzLmRhdGEucmVjdFszXS0yMjt0aGlzLmRhdGEucmVjdFsyXT10aGlzLmRhdGEucmVjdFswXSsyMjt0aGlzLmRhdGEubmFtZT10LmhhcygiTmFtZSIpP3QuZ2V0KCJOYW1lIikubmFtZToiTm90ZSJ9aWYodC5oYXMoIlN0YXRlIikpe3RoaXMuZGF0YS5zdGF0ZT10LmdldCgiU3RhdGUiKXx8bnVsbDt0aGlzLmRhdGEuc3RhdGVNb2RlbD10LmdldCgiU3RhdGVNb2RlbCIpfHxudWxsfWVsc2V7dGhpcy5kYXRhLnN0YXRlPW51bGw7dGhpcy5kYXRhLnN0YXRlTW9kZWw9bnVsbH19fWNsYXNzIExpbmtBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQsYW5ub3RhdGlvbkdsb2JhbHM6YX09ZTt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0IG49Z2V0UXVhZFBvaW50cyh0LHRoaXMucmVjdGFuZ2xlKTtuJiYodGhpcy5kYXRhLnF1YWRQb2ludHM9bik7dGhpcy5kYXRhLmJvcmRlckNvbG9yfHw9dGhpcy5kYXRhLmNvbG9yO0NhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6dCxyZXN1bHRPYmo6dGhpcy5kYXRhLGRvY0Jhc2VVcmw6YS5iYXNlVXJsLGRvY0F0dGFjaG1lbnRzOmEuYXR0YWNobWVudHN9KX1nZXQgb3ZlcmxheXNUZXh0Q29udGVudCgpe3JldHVybiEwfX1jbGFzcyBQb3B1cEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZTt0aGlzLmRhdGEubm9IVE1MPSExOzAhPT10aGlzLndpZHRoJiYwIT09dGhpcy5oZWlnaHR8fCh0aGlzLmRhdGEucmVjdD1udWxsKTtsZXQgYT10LmdldCgiUGFyZW50Iik7aWYoIWEpe3dhcm4oIlBvcHVwIGFubm90YXRpb24gaGFzIGEgbWlzc2luZyBvciBpbnZhbGlkIHBhcmVudCBhbm5vdGF0aW9uLiIpO3JldHVybn10aGlzLmRhdGEucGFyZW50UmVjdD1sb29rdXBOb3JtYWxSZWN0KGEuZ2V0QXJyYXkoIlJlY3QiKSxudWxsKTt0aGlzLmRhdGEuY3JlYXRpb25EYXRlPWEuZ2V0KCJDcmVhdGlvbkRhdGUiKXx8IiI7aXNOYW1lKGEuZ2V0KCJSVCIpLE8pJiYoYT1hLmdldCgiSVJUIikpO2lmKGEuaGFzKCJNIikpe3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZShhLmdldCgiTSIpKTt0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT10aGlzLm1vZGlmaWNhdGlvbkRhdGV9ZWxzZSB0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT1udWxsO2lmKGEuaGFzKCJDIikpe3RoaXMuc2V0Q29sb3IoYS5nZXRBcnJheSgiQyIpKTt0aGlzLmRhdGEuY29sb3I9dGhpcy5jb2xvcn1lbHNlIHRoaXMuZGF0YS5jb2xvcj1udWxsO2lmKCF0aGlzLnZpZXdhYmxlKXtjb25zdCBlPWEuZ2V0KCJGIik7dGhpcy5faXNWaWV3YWJsZShlKSYmdGhpcy5zZXRGbGFncyhlKX10aGlzLnNldFRpdGxlKGEuZ2V0KCJUIikpO3RoaXMuZGF0YS50aXRsZU9iaj10aGlzLl90aXRsZTt0aGlzLnNldENvbnRlbnRzKGEuZ2V0KCJDb250ZW50cyIpKTt0aGlzLmRhdGEuY29udGVudHNPYmo9dGhpcy5fY29udGVudHM7YS5oYXMoIlJDIikmJih0aGlzLmRhdGEucmljaFRleHQ9WEZBRmFjdG9yeS5nZXRSaWNoVGV4dEFzSHRtbChhLmdldCgiUkMiKSkpO3RoaXMuZGF0YS5vcGVuPSEhdC5nZXQoIk9wZW4iKX1zdGF0aWMgY3JlYXRlTmV3RGljdChlLHQsYSl7Y29uc3R7b2xkQW5ub3RhdGlvbjpuLHJlY3Q6cyxwYXJlbnQ6cn09ZSxpPW58fG5ldyBEaWN0KHQpO2kuc2V0SWZOb3RFeGlzdHMoIlR5cGUiLE5hbWUuZ2V0KCJBbm5vdCIpKTtpLnNldElmTm90RXhpc3RzKCJTdWJ0eXBlIixOYW1lLmdldCgiUG9wdXAiKSk7aS5zZXRJZk5vdEV4aXN0cygiT3BlbiIsITEpO2kuc2V0SWZBcnJheSgiUmVjdCIscyk7aS5zZXQoIlBhcmVudCIscik7cmV0dXJuIGl9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LGEpe3JldHVybiBudWxsfX1jbGFzcyBGcmVlVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5pc0VkaXRhYmxlPSF0aGlzLmRhdGEubm9IVE1MO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3R7YW5ub3RhdGlvbkdsb2JhbHM6dCx4cmVmOmF9PWU7dGhpcy5zZXREZWZhdWx0QXBwZWFyYW5jZShlKTt0aGlzLl9oYXNBcHBlYXJhbmNlPSEhdGhpcy5hcHBlYXJhbmNlO2lmKHRoaXMuX2hhc0FwcGVhcmFuY2Upe2NvbnN0e2ZvbnRDb2xvcjplLGZvbnRTaXplOm59PWZ1bmN0aW9uIHBhcnNlQXBwZWFyYW5jZVN0cmVhbShlLHQsYSl7cmV0dXJuIG5ldyBBcHBlYXJhbmNlU3RyZWFtRXZhbHVhdG9yKGUsdCxhKS5wYXJzZSgpfSh0aGlzLmFwcGVhcmFuY2UsYSx0Lmdsb2JhbENvbG9yU3BhY2VDYWNoZSk7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250Q29sb3I9ZTt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnRTaXplPW58fDEwfWVsc2V7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZXx8PTEwO2NvbnN0e2ZvbnRDb2xvcjp0LGZvbnRTaXplOm59PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7aWYodGhpcy5fY29udGVudHMuc3RyKXt0aGlzLmRhdGEudGV4dENvbnRlbnQ9dGhpcy5fY29udGVudHMuc3RyLnNwbGl0KC9cclxuP3xcbi8pLm1hcChlPT5lLnRyaW1FbmQoKSk7Y29uc3R7Y29vcmRzOmUsYmJveDp0LG1hdHJpeDphfT1GYWtlVW5pY29kZUZvbnQuZ2V0Rmlyc3RQb3NpdGlvbkluZm8odGhpcy5yZWN0YW5nbGUsdGhpcy5yb3RhdGlvbixuKTt0aGlzLmRhdGEudGV4dFBvc2l0aW9uPXRoaXMuX3RyYW5zZm9ybVBvaW50KGUsdCxhKX1pZih0aGlzLl9pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3Qgcz1lLmRpY3QuZ2V0KCJDQSIpLHI9bmV3IEZha2VVbmljb2RlRm9udChhLCJzYW5zLXNlcmlmIik7dGhpcy5hcHBlYXJhbmNlPXIuY3JlYXRlQXBwZWFyYW5jZSh0aGlzLl9jb250ZW50cy5zdHIsdGhpcy5yZWN0YW5nbGUsdGhpcy5yb3RhdGlvbixuLHQscyk7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSl9ZWxzZSB3YXJuKCJGcmVlVGV4dEFubm90YXRpb246IE9mZnNjcmVlbkNhbnZhcyBpcyBub3Qgc3VwcG9ydGVkLCBhbm5vdGF0aW9uIG1heSBub3QgcmVuZGVyIGNvcnJlY3RseS4iKX19Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuIHRoaXMuX2hhc0FwcGVhcmFuY2V9c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHthcFJlZjphLGFwOm59KXtjb25zdHtjb2xvcjpzLGRhdGU6cixmb250U2l6ZTppLG9sZEFubm90YXRpb246byxyZWN0Omwscm90YXRpb246Zix1c2VyOmMsdmFsdWU6aH09ZSx1PW98fG5ldyBEaWN0KHQpO3Uuc2V0SWZOb3RFeGlzdHMoIlR5cGUiLE5hbWUuZ2V0KCJBbm5vdCIpKTt1LnNldElmTm90RXhpc3RzKCJTdWJ0eXBlIixOYW1lLmdldCgiRnJlZVRleHQiKSk7dS5zZXQobz8iTSI6IkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKHIpfWApO28mJnUuZGVsZXRlKCJSQyIpO3Uuc2V0SWZBcnJheSgiUmVjdCIsbCk7Y29uc3QgbT1gL0hlbHYgJHtpfSBUZiAke2dldFBkZkNvbG9yKHMsITApfWA7dS5zZXQoIkRBIixtKTt1LnNldElmRGVmaW5lZCgiQ29udGVudHMiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUoaCkpO3Uuc2V0SWZOb3RFeGlzdHMoIkYiLDQpO3Uuc2V0SWZOb3RFeGlzdHMoIkJvcmRlciIsWzAsMCwwXSk7dS5zZXRJZk51bWJlcigiUm90YXRlIixmKTt1LnNldElmRGVmaW5lZCgiVCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShjKSk7aWYoYXx8bil7Y29uc3QgZT1uZXcgRGljdCh0KTt1LnNldCgiQVAiLGUpO2Uuc2V0KCJOIixhfHxuKX1yZXR1cm4gdX1zdGF0aWMgZ2V0UHJpbnREYXRhKHtjb2xvcjplLGZvbnRTaXplOnQscmVjdDphLHJvdGF0aW9uOm4sdmFsdWU6c30pe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkOiBnZXRQcmludERhdGEiKX1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsYSl7Y29uc3R7YmFzZUZvbnRSZWY6bixldmFsdWF0b3I6cyx0YXNrOnJ9PWEse2NvbG9yOmksZm9udFNpemU6byxyZWN0Omwscm90YXRpb246Zix2YWx1ZTpjfT1lO2lmKCFpKXJldHVybiBudWxsO2NvbnN0IGg9bmV3IERpY3QodCksdT1uZXcgRGljdCh0KTtpZihuKXUuc2V0KCJIZWx2IixuKTtlbHNle2NvbnN0IGU9bmV3IERpY3QodCk7ZS5zZXRJZk5hbWUoIkJhc2VGb250IiwiSGVsdmV0aWNhIik7ZS5zZXRJZk5hbWUoIlR5cGUiLCJGb250Iik7ZS5zZXRJZk5hbWUoIlN1YnR5cGUiLCJUeXBlMSIpO2Uuc2V0SWZOYW1lKCJFbmNvZGluZyIsIldpbkFuc2lFbmNvZGluZyIpO3Uuc2V0KCJIZWx2IixlKX1oLnNldCgiRm9udCIsdSk7Y29uc3QgbT1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShzLHIse2ZvbnROYW1lOiJIZWx2Iixmb250U2l6ZTpvfSxoKSxbcCxkLGcsYl09bDtsZXQgdz1nLXAsaj1iLWQ7ZiUxODAhPTAmJihbdyxqXT1baix3XSk7Y29uc3Qgaz1jLnNwbGl0KCJcbiIpLHk9by8xZTM7bGV0IHE9LTEvMDtjb25zdCB2PVtdO2ZvcihsZXQgZSBvZiBrKXtjb25zdCB0PW0uZW5jb2RlU3RyaW5nKGUpO2lmKHQubGVuZ3RoPjEpcmV0dXJuIG51bGw7ZT10LmpvaW4oIiIpO3YucHVzaChlKTtsZXQgYT0wO2NvbnN0IG49bS5jaGFyc1RvR2x5cGhzKGUpO2Zvcihjb25zdCBlIG9mIG4pYSs9ZS53aWR0aCp5O3E9TWF0aC5tYXgocSxhKX1jb25zdCBTPXE+dz93L3E6MTtsZXQgeD0xO2NvbnN0IEM9MS4zNSpvLEY9MSpvLFQ9QyprLmxlbmd0aDtUPmomJih4PWovVCk7Y29uc3QgUj1vKk1hdGgubWluKFMseCk7bGV0IE8sRCxIO3N3aXRjaChmKXtjYXNlIDA6SD1bMSwwLDAsMV07RD1bbFswXSxsWzFdLHcsal07Tz1bbFswXSxsWzNdLUZdO2JyZWFrO2Nhc2UgOTA6SD1bMCwxLC0xLDBdO0Q9W2xbMV0sLWxbMl0sdyxqXTtPPVtsWzFdLC1sWzBdLUZdO2JyZWFrO2Nhc2UgMTgwOkg9Wy0xLDAsMCwtMV07RD1bLWxbMl0sLWxbM10sdyxqXTtPPVstbFsyXSwtbFsxXS1GXTticmVhaztjYXNlIDI3MDpIPVswLC0xLDEsMF07RD1bLWxbM10sbFswXSx3LGpdO089Wy1sWzNdLGxbMl0tRl19Y29uc3QgTT1bInEiLGAke0guam9pbigiICIpfSAwIDAgY21gLGAke0Quam9pbigiICIpfSByZSBXIG5gLCJCVCIsYCR7Z2V0UGRmQ29sb3IoaSwhMCl9YCxgMCBUYyAvSGVsdiAke251bWJlclRvU3RyaW5nKFIpfSBUZmBdO00ucHVzaChgJHtPLmpvaW4oIiAiKX0gVGQgKCR7ZXNjYXBlU3RyaW5nKHZbMF0pfSkgVGpgKTtjb25zdCBOPW51bWJlclRvU3RyaW5nKEMpO2ZvcihsZXQgZT0xLHQ9di5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD12W2VdO00ucHVzaChgMCAtJHtOfSBUZCAoJHtlc2NhcGVTdHJpbmcodCl9KSBUamApfU0ucHVzaCgiRVQiLCJRIik7Y29uc3QgRT1NLmpvaW4oIlxuIiksXz1uZXcgRGljdCh0KTtfLnNldCgiRm9ybVR5cGUiLDEpO18uc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRm9ybSIpO18uc2V0SWZOYW1lKCJUeXBlIiwiWE9iamVjdCIpO18uc2V0KCJCQm94IixsKTtfLnNldCgiUmVzb3VyY2VzIixoKTtfLnNldCgiTWF0cml4IixbMSwwLDAsMSwtbFswXSwtbFsxXV0pO3JldHVybiBuZXcgU3RyaW5nU3RyZWFtKEUsXyl9fWNsYXNzIExpbmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphfT1lO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3Qgbj1sb29rdXBSZWN0KHQuZ2V0QXJyYXkoIkwiKSxbMCwwLDAsMF0pO3RoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXM9VXRpbC5ub3JtYWxpemVSZWN0KG4pO3RoaXMuc2V0TGluZUVuZGluZ3ModC5nZXRBcnJheSgiTEUiKSk7dGhpcy5kYXRhLmxpbmVFbmRpbmdzPXRoaXMubGluZUVuZGluZ3M7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT1nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IsWzAsMCwwXSkscz10LmdldCgiQ0EiKSxyPWdldFBkZkNvbG9yQXJyYXkoZ2V0UmdiQ29sb3IodC5nZXRBcnJheSgiSUMiKSxudWxsKSksaT1yP3M6bnVsbCxvPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEsbD0yKm8sZj1bdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1swXS1sLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMV0tbCx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzJdK2wsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1szXStsXTtVdGlsLmludGVyc2VjdCh0aGlzLnJlY3RhbmdsZSxmKXx8KHRoaXMucmVjdGFuZ2xlPWYpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmEsZXh0cmE6YCR7b30gd2Asc3Ryb2tlQ29sb3I6ZSxmaWxsQ29sb3I6cixzdHJva2VBbHBoYTpzLGZpbGxBbHBoYTppLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke25bMF19ICR7blsxXX0gbWAsYCR7blsyXX0gJHtuWzNdfSBsYCwiUyIpO3JldHVyblt0WzBdLW8sdFs3XS1vLHRbMl0rbyx0WzNdK29dfX0pfX19Y2xhc3MgU3F1YXJlQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yLFswLDAsMF0pLG49dC5nZXQoIkNBIikscz1nZXRQZGZDb2xvckFycmF5KGdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCkpLHI9cz9uOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFzKXJldHVybjt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGV4dHJhOmAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh9IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOnMsc3Ryb2tlQWxwaGE6bixmaWxsQWxwaGE6cixwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGE9dFs0XSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsbj10WzVdK3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixyPXRbNl0tdFs0XS10aGlzLmJvcmRlclN0eWxlLndpZHRoLGk9dFszXS10WzddLXRoaXMuYm9yZGVyU3R5bGUud2lkdGg7ZS5wdXNoKGAke2F9ICR7bn0gJHtyfSAke2l9IHJlYCk7cz9lLnB1c2goIkIiKTplLnB1c2goIlMiKTtyZXR1cm5bdFswXSx0WzddLHRbMl0sdFszXV19fSl9fX1jbGFzcyBDaXJjbGVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphfT1lO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yLFswLDAsMF0pLG49dC5nZXQoIkNBIikscz1nZXRQZGZDb2xvckFycmF5KGdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCkpLHI9cz9uOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFzKXJldHVybjtjb25zdCBpPTQvMypNYXRoLnRhbihNYXRoLlBJLzgpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmEsZXh0cmE6YCR7dGhpcy5ib3JkZXJTdHlsZS53aWR0aH0gd2Asc3Ryb2tlQ29sb3I6ZSxmaWxsQ29sb3I6cyxzdHJva2VBbHBoYTpuLGZpbGxBbHBoYTpyLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgYT10WzBdK3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixuPXRbMV0tdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLHI9dFs2XS10aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsbz10WzddK3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixsPWErKHItYSkvMixmPW4rKG8tbikvMixjPShyLWEpLzIqaSxoPShvLW4pLzIqaTtlLnB1c2goYCR7bH0gJHtvfSBtYCxgJHtsK2N9ICR7b30gJHtyfSAke2YraH0gJHtyfSAke2Z9IGNgLGAke3J9ICR7Zi1ofSAke2wrY30gJHtufSAke2x9ICR7bn0gY2AsYCR7bC1jfSAke259ICR7YX0gJHtmLWh9ICR7YX0gJHtmfSBjYCxgJHthfSAke2YraH0gJHtsLWN9ICR7b30gJHtsfSAke299IGNgLCJoIik7cz9lLnB1c2goIkIiKTplLnB1c2goIlMiKTtyZXR1cm5bdFswXSx0WzddLHRbMl0sdFszXV19fSl9fX1jbGFzcyBQb2x5bGluZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6YSx4cmVmOm59PWU7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEudmVydGljZXM9bnVsbDtpZighKHRoaXMgaW5zdGFuY2VvZiBQb2x5Z29uQW5ub3RhdGlvbikpe3RoaXMuc2V0TGluZUVuZGluZ3MoYS5nZXRBcnJheSgiTEUiKSk7dGhpcy5kYXRhLmxpbmVFbmRpbmdzPXRoaXMubGluZUVuZGluZ3N9Y29uc3Qgcz1hLmdldEFycmF5KCJWZXJ0aWNlcyIpO2lmKCFpc051bWJlckFycmF5KHMsbnVsbCkpcmV0dXJuO2NvbnN0IHI9dGhpcy5kYXRhLnZlcnRpY2VzPUZsb2F0MzJBcnJheS5mcm9tKHMpO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yLFswLDAsMF0pLHM9YS5nZXQoIkNBIik7bGV0IGksbz1nZXRSZ2JDb2xvcihhLmdldEFycmF5KCJJQyIpLG51bGwpO28mJj1nZXRQZGZDb2xvckFycmF5KG8pO2k9bz90aGlzLmNvbG9yP28uZXZlcnkoKHQsYSk9PnQ9PT1lW2FdKT8iZiI6IkIiOiJmIjoiUyI7Y29uc3QgbD10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLGY9MipsLGM9dC5zbGljZSgpO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrPTIpVXRpbC5yZWN0Qm91bmRpbmdCb3gocltlXS1mLHJbZSsxXS1mLHJbZV0rZixyW2UrMV0rZixjKTtVdGlsLmludGVyc2VjdCh0aGlzLnJlY3RhbmdsZSxjKXx8KHRoaXMucmVjdGFuZ2xlPWMpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOm4sZXh0cmE6YCR7bH0gd2Asc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTpzLGZpbGxDb2xvcjpvLGZpbGxBbHBoYTpvP3M6bnVsbCxwb2ludHNDYWxsYmFjazooZSx0KT0+e2ZvcihsZXQgdD0wLGE9ci5sZW5ndGg7dDxhO3QrPTIpZS5wdXNoKGAke3JbdF19ICR7clt0KzFdfSAkezA9PT10PyJtIjoibCJ9YCk7ZS5wdXNoKGkpO3JldHVyblt0WzBdLHRbN10sdFsyXSx0WzNdXX19KX19fWNsYXNzIFBvbHlnb25Bbm5vdGF0aW9uIGV4dGVuZHMgUG9seWxpbmVBbm5vdGF0aW9ue31jbGFzcyBDYXJldEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue31jbGFzcyBJbmtBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0e2RpY3Q6YSx4cmVmOm59PWU7dGhpcy5kYXRhLmlua0xpc3RzPVtdO3RoaXMuZGF0YS5pc0VkaXRhYmxlPSF0aGlzLmRhdGEubm9IVE1MO3RoaXMuZGF0YS5ub0hUTUw9ITE7dGhpcy5kYXRhLm9wYWNpdHk9YS5nZXQoIkNBIil8fDE7Y29uc3Qgcz1hLmdldEFycmF5KCJJbmtMaXN0Iik7aWYoQXJyYXkuaXNBcnJheShzKSl7Zm9yKGNvbnN0IGUgb2Ygcyl7aWYoIUFycmF5LmlzQXJyYXkoZSkpY29udGludWU7Y29uc3QgdD1uZXcgRmxvYXQzMkFycmF5KGUubGVuZ3RoKTt0aGlzLmRhdGEuaW5rTGlzdHMucHVzaCh0KTtmb3IobGV0IGE9MCxzPWUubGVuZ3RoO2E8czthKz0yKXtjb25zdCBzPW4uZmV0Y2hJZlJlZihlW2FdKSxyPW4uZmV0Y2hJZlJlZihlW2ErMV0pO2lmKCJudW1iZXIiPT10eXBlb2YgcyYmIm51bWJlciI9PXR5cGVvZiByKXt0W2FdPXM7dFthKzFdPXJ9fX1pZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPWdldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcixbMCwwLDBdKSxzPWEuZ2V0KCJDQSIpLHI9dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MSxpPTIqcixvPXQuc2xpY2UoKTtmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGEuaW5rTGlzdHMpZm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCs9MilVdGlsLnJlY3RCb3VuZGluZ0JveChlW3RdLWksZVt0KzFdLWksZVt0XStpLGVbdCsxXStpLG8pO1V0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLG8pfHwodGhpcy5yZWN0YW5nbGU9byk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6bixleHRyYTpgJHtyfSB3YCxzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOnMscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntmb3IoY29uc3QgdCBvZiB0aGlzLmRhdGEuaW5rTGlzdHMpe2ZvcihsZXQgYT0wLG49dC5sZW5ndGg7YTxuO2ErPTIpZS5wdXNoKGAke3RbYV19ICR7dFthKzFdfSAkezA9PT1hPyJtIjoibCJ9YCk7ZS5wdXNoKCJTIil9cmV0dXJuW3RbMF0sdFs3XSx0WzJdLHRbM11dfX0pfX19c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHthcFJlZjphLGFwOm59KXtjb25zdHtvbGRBbm5vdGF0aW9uOnMsY29sb3I6cixkYXRlOmksb3BhY2l0eTpvLHBhdGhzOmwsb3V0bGluZXM6ZixyZWN0OmMscm90YXRpb246aCx0aGlja25lc3M6dSx1c2VyOm19PWUscD1zfHxuZXcgRGljdCh0KTtwLnNldElmTm90RXhpc3RzKCJUeXBlIixOYW1lLmdldCgiQW5ub3QiKSk7cC5zZXRJZk5vdEV4aXN0cygiU3VidHlwZSIsTmFtZS5nZXQoIkluayIpKTtwLnNldChzPyJNIjoiQ3JlYXRpb25EYXRlIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoaSl9YCk7cC5zZXRJZkFycmF5KCJSZWN0IixjKTtwLnNldElmQXJyYXkoIklua0xpc3QiLGY/LnBvaW50c3x8bD8ucG9pbnRzKTtwLnNldElmTm90RXhpc3RzKCJGIiw0KTtwLnNldElmTnVtYmVyKCJSb3RhdGUiLGgpO3Auc2V0SWZEZWZpbmVkKCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKG0pKTtmJiZwLnNldElmTmFtZSgiSVQiLCJJbmtIaWdobGlnaHQiKTtpZih1PjApe2NvbnN0IGU9bmV3IERpY3QodCk7cC5zZXQoIkJTIixlKTtlLnNldCgiVyIsdSl9cC5zZXRJZkFycmF5KCJDIixnZXRQZGZDb2xvckFycmF5KHIpKTtwLnNldElmTnVtYmVyKCJDQSIsbyk7aWYobnx8YSl7Y29uc3QgZT1uZXcgRGljdCh0KTtwLnNldCgiQVAiLGUpO2Uuc2V0KCJOIixhfHxuKX1yZXR1cm4gcH1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsYSl7aWYoZS5vdXRsaW5lcylyZXR1cm4gdGhpcy5jcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtRm9ySGlnaGxpZ2h0KGUsdCxhKTtjb25zdHtjb2xvcjpuLHJlY3Q6cyxwYXRoczpyLHRoaWNrbmVzczppLG9wYWNpdHk6b309ZTtpZighbilyZXR1cm4gbnVsbDtjb25zdCBsPVtgJHtpfSB3IDEgSiAxIGpgLGAke2dldFBkZkNvbG9yKG4sITEpfWBdOzEhPT1vJiZsLnB1c2goIi9SMCBncyIpO2Zvcihjb25zdCBlIG9mIHIubGluZXMpd3JpdGVMaW5lVG9DdXJ2ZVRvQXBwZWFyYW5jZShlLGwsITApO2wucHVzaCgiUyIpO2NvbnN0IGY9bC5qb2luKCJcbiIpLGM9bmV3IERpY3QodCk7Yy5zZXQoIkZvcm1UeXBlIiwxKTtjLnNldElmTmFtZSgiU3VidHlwZSIsIkZvcm0iKTtjLnNldElmTmFtZSgiVHlwZSIsIlhPYmplY3QiKTtjLnNldCgiQkJveCIscyk7Yy5zZXQoIkxlbmd0aCIsZi5sZW5ndGgpO2lmKDEhPT1vKXtjb25zdCBlPW5ldyBEaWN0KHQpLGE9bmV3IERpY3QodCksbj1uZXcgRGljdCh0KTtuLnNldCgiQ0EiLG8pO24uc2V0SWZOYW1lKCJUeXBlIiwiRXh0R1N0YXRlIik7YS5zZXQoIlIwIixuKTtlLnNldCgiRXh0R1N0YXRlIixhKTtjLnNldCgiUmVzb3VyY2VzIixlKX1yZXR1cm4gbmV3IFN0cmluZ1N0cmVhbShmLGMpfXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtRm9ySGlnaGxpZ2h0KGUsdCxhKXtjb25zdHtjb2xvcjpuLHJlY3Q6cyxvdXRsaW5lczp7b3V0bGluZTpyfSxvcGFjaXR5Oml9PWU7aWYoIW4pcmV0dXJuIG51bGw7Y29uc3Qgbz1bYCR7Z2V0UGRmQ29sb3IobiwhMCl9YCwiL1IwIGdzIl07d3JpdGVMaW5lVG9DdXJ2ZVRvQXBwZWFyYW5jZShyLG8pO28ucHVzaCgiaCBmIik7Y29uc3QgbD1vLmpvaW4oIlxuIiksZj1uZXcgRGljdCh0KTtmLnNldCgiRm9ybVR5cGUiLDEpO2Yuc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRm9ybSIpO2Yuc2V0SWZOYW1lKCJUeXBlIiwiWE9iamVjdCIpO2Yuc2V0KCJCQm94IixzKTtmLnNldCgiTGVuZ3RoIixsLmxlbmd0aCk7Y29uc3QgYz1uZXcgRGljdCh0KSxoPW5ldyBEaWN0KHQpO2Muc2V0KCJFeHRHU3RhdGUiLGgpO2Yuc2V0KCJSZXNvdXJjZXMiLGMpO2NvbnN0IHU9bmV3IERpY3QodCk7aC5zZXQoIlIwIix1KTt1LnNldElmTmFtZSgiQk0iLCJNdWx0aXBseSIpO2lmKDEhPT1pKXt1LnNldCgiY2EiLGkpO3Uuc2V0SWZOYW1lKCJUeXBlIiwiRXh0R1N0YXRlIil9cmV0dXJuIG5ldyBTdHJpbmdTdHJlYW0obCxmKX19Y2xhc3MgSGlnaGxpZ2h0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTt0aGlzLmRhdGEuaXNFZGl0YWJsZT0hdGhpcy5kYXRhLm5vSFRNTDt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5vcGFjaXR5PXQuZ2V0KCJDQSIpfHwxO2lmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPWdldFF1YWRQb2ludHModCxudWxsKSl7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT1nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IsWzEsMSwwXSksbj10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGZpbGxDb2xvcjplLGJsZW5kTW9kZToiTXVsdGlwbHkiLGZpbGxBbHBoYTpuLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbMF19ICR7dFsxXX0gbWAsYCR7dFsyXX0gJHt0WzNdfSBsYCxgJHt0WzZdfSAke3RbN119IGxgLGAke3RbNF19ICR7dFs1XX0gbGAsImYiKTtyZXR1cm5bdFswXSx0WzddLHRbMl0sdFszXV19fSl9fWVsc2UgdGhpcy5kYXRhLnBvcHVwUmVmPW51bGx9Z2V0IG92ZXJsYXlzVGV4dENvbnRlbnQoKXtyZXR1cm4hMH1zdGF0aWMgY3JlYXRlTmV3RGljdChlLHQse2FwUmVmOmEsYXA6bn0pe2NvbnN0e2NvbG9yOnMsZGF0ZTpyLG9sZEFubm90YXRpb246aSxvcGFjaXR5Om8scmVjdDpsLHJvdGF0aW9uOmYsdXNlcjpjLHF1YWRQb2ludHM6aH09ZSx1PWl8fG5ldyBEaWN0KHQpO3Uuc2V0SWZOb3RFeGlzdHMoIlR5cGUiLE5hbWUuZ2V0KCJBbm5vdCIpKTt1LnNldElmTm90RXhpc3RzKCJTdWJ0eXBlIixOYW1lLmdldCgiSGlnaGxpZ2h0IikpO3Uuc2V0KGk/Ik0iOiJDcmVhdGlvbkRhdGUiLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZShyKX1gKTt1LnNldElmQXJyYXkoIlJlY3QiLGwpO3Uuc2V0SWZOb3RFeGlzdHMoIkYiLDQpO3Uuc2V0SWZOb3RFeGlzdHMoIkJvcmRlciIsWzAsMCwwXSk7dS5zZXRJZk51bWJlcigiUm90YXRlIixmKTt1LnNldElmQXJyYXkoIlF1YWRQb2ludHMiLGgpO3Uuc2V0SWZBcnJheSgiQyIsZ2V0UGRmQ29sb3JBcnJheShzKSk7dS5zZXRJZk51bWJlcigiQ0EiLG8pO3Uuc2V0SWZEZWZpbmVkKCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGMpKTtpZihhfHxuKXtjb25zdCBlPW5ldyBEaWN0KHQpO3Uuc2V0KCJBUCIsZSk7ZS5zZXQoIk4iLGF8fG4pfXJldHVybiB1fXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGUsdCxhKXtjb25zdHtjb2xvcjpuLHJlY3Q6cyxvdXRsaW5lczpyLG9wYWNpdHk6aX09ZTtpZighbilyZXR1cm4gbnVsbDtjb25zdCBvPVtgJHtnZXRQZGZDb2xvcihuLCEwKX1gLCIvUjAgZ3MiXSxsPVtdO2Zvcihjb25zdCBlIG9mIHIpe2wubGVuZ3RoPTA7bC5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbMF0pfSAke251bWJlclRvU3RyaW5nKGVbMV0pfSBtYCk7Zm9yKGxldCB0PTIsYT1lLmxlbmd0aDt0PGE7dCs9MilsLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVt0XSl9ICR7bnVtYmVyVG9TdHJpbmcoZVt0KzFdKX0gbGApO2wucHVzaCgiaCIpO28ucHVzaChsLmpvaW4oIlxuIikpfW8ucHVzaCgiZioiKTtjb25zdCBmPW8uam9pbigiXG4iKSxjPW5ldyBEaWN0KHQpO2Muc2V0KCJGb3JtVHlwZSIsMSk7Yy5zZXRJZk5hbWUoIlN1YnR5cGUiLCJGb3JtIik7Yy5zZXRJZk5hbWUoIlR5cGUiLCJYT2JqZWN0Iik7Yy5zZXQoIkJCb3giLHMpO2Muc2V0KCJMZW5ndGgiLGYubGVuZ3RoKTtjb25zdCBoPW5ldyBEaWN0KHQpLHU9bmV3IERpY3QodCk7aC5zZXQoIkV4dEdTdGF0ZSIsdSk7Yy5zZXQoIlJlc291cmNlcyIsaCk7Y29uc3QgbT1uZXcgRGljdCh0KTt1LnNldCgiUjAiLG0pO20uc2V0SWZOYW1lKCJCTSIsIk11bHRpcGx5Iik7aWYoMSE9PWkpe20uc2V0KCJjYSIsaSk7bS5zZXRJZk5hbWUoIlR5cGUiLCJFeHRHU3RhdGUiKX1yZXR1cm4gbmV3IFN0cmluZ1N0cmVhbShmLGMpfX1jbGFzcyBVbmRlcmxpbmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphfT1lO2lmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPWdldFF1YWRQb2ludHModCxudWxsKSl7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT1nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IsWzAsMCwwXSksbj10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGV4dHJhOiJbXSAwIGQgMC41NzEgdyIsc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTpuLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbNF19ICR7dFs1XSsxLjN9IG1gLGAke3RbNl19ICR7dFs3XSsxLjN9IGxgLCJTIik7cmV0dXJuW3RbMF0sdFs3XSx0WzJdLHRbM11dfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfWdldCBvdmVybGF5c1RleHRDb250ZW50KCl7cmV0dXJuITB9fWNsYXNzIFNxdWlnZ2x5QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yLFswLDAsMF0pLG49dC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6YSxleHRyYToiW10gMCBkIDEgdyIsc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTpuLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgYT0odFsxXS10WzVdKS82O2xldCBuPWEscz10WzRdO2NvbnN0IHI9dFs1XSxpPXRbNl07ZS5wdXNoKGAke3N9ICR7citufSBtYCk7ZG97cys9MjtuPTA9PT1uP2E6MDtlLnB1c2goYCR7c30gJHtyK259IGxgKX13aGlsZShzPGkpO2UucHVzaCgiUyIpO3JldHVyblt0WzRdLHItMiphLGkscisyKmFdfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfWdldCBvdmVybGF5c1RleHRDb250ZW50KCl7cmV0dXJuITB9fWNsYXNzIFN0cmlrZU91dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWU7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyh0LG51bGwpKXtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPWdldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcixbMCwwLDBdKSxuPXQuZ2V0KCJDQSIpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmEsZXh0cmE6IltdIDAgZCAxIHciLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6bixwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaCgodFswXSt0WzRdKS8yKyIgIisodFsxXSt0WzVdKS8yKyIgbSIsKHRbMl0rdFs2XSkvMisiICIrKHRbM10rdFs3XSkvMisiIGwiLCJTIik7cmV0dXJuW3RbMF0sdFs3XSx0WzJdLHRbM11dfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfWdldCBvdmVybGF5c1RleHRDb250ZW50KCl7cmV0dXJuITB9fWNsYXNzIFN0YW1wQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257I0h0PW51bGw7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLmlzRWRpdGFibGU9IXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5kYXRhLm5vSFRNTD0hMX1tdXN0QmVWaWV3ZWRXaGVuRWRpdGluZyhlLHQ9bnVsbCl7aWYoZSl7aWYoIXRoaXMuZGF0YS5pc0VkaXRhYmxlKXJldHVybiEwO3RoaXMuI0h0Pz89dGhpcy5kYXRhLmhhc093bkNhbnZhczt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSEwO3JldHVybiEwfWlmKG51bGwhPT10aGlzLiNIdCl7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLiNIdDt0aGlzLiNIdD1udWxsfXJldHVybiF0Py5oYXModGhpcy5kYXRhLmlkKX1zdGF0aWMgY3JlYXRlTmV3RGljdChlLHQse2FwUmVmOmEsYXA6bn0pe2NvbnN0e2RhdGU6cyxvbGRBbm5vdGF0aW9uOnIscmVjdDppLHJvdGF0aW9uOm8sdXNlcjpsfT1lLGY9cnx8bmV3IERpY3QodCk7Zi5zZXRJZk5vdEV4aXN0cygiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO2Yuc2V0SWZOb3RFeGlzdHMoIlN1YnR5cGUiLE5hbWUuZ2V0KCJTdGFtcCIpKTtmLnNldChyPyJNIjoiQ3JlYXRpb25EYXRlIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUocyl9YCk7Zi5zZXRJZkFycmF5KCJSZWN0IixpKTtmLnNldElmTm90RXhpc3RzKCJGIiw0KTtmLnNldElmTm90RXhpc3RzKCJCb3JkZXIiLFswLDAsMF0pO2Yuc2V0SWZOdW1iZXIoIlJvdGF0ZSIsbyk7Zi5zZXRJZkRlZmluZWQoIlQiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUobCkpO2lmKGF8fG4pe2NvbnN0IGU9bmV3IERpY3QodCk7Zi5zZXQoIkFQIixlKTtlLnNldCgiTiIsYXx8bil9cmV0dXJuIGZ9c3RhdGljIGFzeW5jI010KGUsdCl7Y29uc3R7YXJlQ29udG91cnM6YSxjb2xvcjpuLHJlY3Q6cyxsaW5lczpyLHRoaWNrbmVzczppfT1lO2lmKCFuKXJldHVybiBudWxsO2NvbnN0IG89W2Ake2l9IHcgMSBKIDEgamAsYCR7Z2V0UGRmQ29sb3IobixhKX1gXTtmb3IoY29uc3QgZSBvZiByKXdyaXRlTGluZVRvQ3VydmVUb0FwcGVhcmFuY2UoZSxvLCEwKTtvLnB1c2goYT8iRiI6IlMiKTtjb25zdCBsPW8uam9pbigiXG4iKSxmPW5ldyBEaWN0KHQpO2Yuc2V0KCJGb3JtVHlwZSIsMSk7Zi5zZXRJZk5hbWUoIlN1YnR5cGUiLCJGb3JtIik7Zi5zZXRJZk5hbWUoIlR5cGUiLCJYT2JqZWN0Iik7Zi5zZXQoIkJCb3giLHMpO2Yuc2V0KCJMZW5ndGgiLGwubGVuZ3RoKTtyZXR1cm4gbmV3IFN0cmluZ1N0cmVhbShsLGYpfXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGUsdCxhKXtpZihlLm9sZEFubm90YXRpb24pcmV0dXJuIG51bGw7aWYoZS5pc1NpZ25hdHVyZSlyZXR1cm4gdGhpcy4jTXQoZSx0KTtjb25zdHtyb3RhdGlvbjpufT1lLHtpbWFnZVJlZjpzLHdpZHRoOnIsaGVpZ2h0Oml9PWEuaW1hZ2Usbz1uZXcgRGljdCh0KSxsPW5ldyBEaWN0KHQpO28uc2V0KCJYT2JqZWN0IixsKTtsLnNldCgiSW0wIixzKTtjb25zdCBmPWBxICR7cn0gMCAwICR7aX0gMCAwIGNtIC9JbTAgRG8gUWAsYz1uZXcgRGljdCh0KTtjLnNldCgiRm9ybVR5cGUiLDEpO2Muc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRm9ybSIpO2Muc2V0SWZOYW1lKCJUeXBlIiwiWE9iamVjdCIpO2Muc2V0KCJCQm94IixbMCwwLHIsaV0pO2Muc2V0KCJSZXNvdXJjZXMiLG8pO2lmKG4pe2NvbnN0IGU9Z2V0Um90YXRpb25NYXRyaXgobixyLGkpO2Muc2V0KCJNYXRyaXgiLGUpfXJldHVybiBuZXcgU3RyaW5nU3RyZWFtKGYsYyl9fWNsYXNzIEZpbGVBdHRhY2htZW50QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7YW5ub3RhdGlvbkdsb2JhbHM6dCxkaWN0OmF9PWUsbj1hLmdldCgiRlMiKTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5maWxlSWQ9dGhpcy5fZ2V0QXR0YWNobWVudElkKG4sYS5nZXRSYXcoIkZTIiksdCk7dGhpcy5kYXRhLmZpbGU9bmV3IEZpbGVTcGVjKG4pLnNlcmlhbGl6YWJsZTtjb25zdCBzPWEuZ2V0KCJOYW1lIik7dGhpcy5kYXRhLm5hbWU9cyBpbnN0YW5jZW9mIE5hbWU/c3RyaW5nVG9QREZTdHJpbmcocy5uYW1lKToiUHVzaFBpbiI7Y29uc3Qgcj1hLmdldCgiY2EiKTt0aGlzLmRhdGEuZmlsbEFscGhhPSJudW1iZXIiPT10eXBlb2YgciYmcj49MCYmcjw9MT9yOm51bGx9fWNsYXNzIE1lZGlhQW5ub3RhdGlvbiBleHRlbmRzIEFubm90YXRpb257c3RhdGljI050PS9eKD86dmlkZW98YXVkaW8pXC9bYS16MC05XVtcdyEjJCZeListXXswLDEyNn0kL2k7c3RhdGljI1B0PS9eKD86dmlkZW98YXVkaW8pXC9bYS16MC05XVtcdyEjJCZeListXXswLDEyNn0oPzogKjsgKlthLXowLTldW1x3ISMkJl4uKy1dezAsMTI2fSAqPSAqKD86Wy0hIyQlJicqKy5eXHg2MHt8fX5cd10rfCIoPzpbXHgyMFx4MjFceDIzLVx4NWJceDVkLVx4N2VdfFxcW1x4MjAtXHg3ZV0pKiIpKSogKiQvaTtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEubm9IVE1MPSEwfV9zZXRNZWRpYURhdGEoe2Fzc2V0UmVmOmUsYXNzZXREaWN0OnQsZmlsZW5hbWU6YSxjb250ZW50VHlwZTpuLHdyYXBTb3VuZDpzPSExfSxyKXt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5yaWNoTWVkaWE9e2ZpbGVJZDp0aGlzLl9nZXRBdHRhY2htZW50SWQodCxlLHIscyksZmlsZW5hbWU6YSxjb250ZW50VHlwZTpufX1zdGF0aWMgX2dldENvbnRlbnRUeXBlKGUsdCxhPW51bGwsbj0hMSl7aWYoInN0cmluZyI9PXR5cGVvZiBhJiYobj9NZWRpYUFubm90YXRpb24uI050Ok1lZGlhQW5ub3RhdGlvbi4jUHQpLnRlc3QoYSkpcmV0dXJuIGE7Y29uc3Qgcz1GaWxlU3BlYy5waWNrUGxhdGZvcm1JdGVtKGUuZ2V0KCJFRiIpKSxyPXMgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP3MuZGljdD8uZ2V0KCJTdWJ0eXBlIik6bnVsbDtpZihyIGluc3RhbmNlb2YgTmFtZSYmTWVkaWFBbm5vdGF0aW9uLiNOdC50ZXN0KHIubmFtZSkpcmV0dXJuIHIubmFtZTtjb25zdCBpPXQubGFzdEluZGV4T2YoIi4iKSsxO3N3aXRjaChpPjAmJnQuc3Vic3RyaW5nKGkpLnRvTG93ZXJDYXNlKCkpe2Nhc2UibXA0IjpjYXNlIm00diI6cmV0dXJuInZpZGVvL21wNCI7Y2FzZSJ3ZWJtIjpyZXR1cm4idmlkZW8vd2VibSI7Y2FzZSJvZ3YiOnJldHVybiJ2aWRlby9vZ2ciO2Nhc2UibW92IjpyZXR1cm4idmlkZW8vcXVpY2t0aW1lIjtjYXNlIm1wMyI6cmV0dXJuImF1ZGlvL21wZWciO2Nhc2UibTRhIjpyZXR1cm4iYXVkaW8vbXA0IjtjYXNlIndhdiI6cmV0dXJuImF1ZGlvL3dhdiI7Y2FzZSJvZ2EiOmNhc2Uib2dnIjpyZXR1cm4iYXVkaW8vb2dnIjtkZWZhdWx0OnJldHVybiBudWxsfX19Y2xhc3MgUmljaE1lZGlhQW5ub3RhdGlvbiBleHRlbmRzIE1lZGlhQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphLGFubm90YXRpb25HbG9iYWxzOm59PWUscz10LmdldCgiUmljaE1lZGlhQ29udGVudCIpO2lmKCEocyBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCByPVJpY2hNZWRpYUFubm90YXRpb24uI0V0KHMsYSk7cj90aGlzLl9zZXRNZWRpYURhdGEocixuKTp3YXJuKCJSaWNoTWVkaWEgYW5ub3RhdGlvbiBoYXMgbm8gcGxheWFibGUgYXNzZXQuIil9c3RhdGljI0V0KGUsdCl7Y29uc3QgYT1lLmdldCgiQ29uZmlndXJhdGlvbnMiKTtpZighQXJyYXkuaXNBcnJheShhKSlyZXR1cm4gbnVsbDtmb3IoY29uc3QgZSBvZiBhKXtjb25zdCBhPXQuZmV0Y2hJZlJlZihlKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtjb25zdCBuPWEuZ2V0KCJJbnN0YW5jZXMiKTtpZihBcnJheS5pc0FycmF5KG4pKWZvcihjb25zdCBlIG9mIG4pe2NvbnN0IGE9dC5mZXRjaElmUmVmKGUpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2lmKGlzTmFtZShhLmdldCgiU3VidHlwZSIpLCJGbGFzaCIpKWNvbnRpbnVlO2NvbnN0IG49YS5nZXRSYXcoIkFzc2V0Iikscz10LmZldGNoSWZSZWYobik7aWYoIShzIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7aWYoIUZpbGVTcGVjLmhhc0VtYmVkZGVkRmlsZShzKSljb250aW51ZTtjb25zdHtmaWxlbmFtZTpyfT1uZXcgRmlsZVNwZWMocykuc2VyaWFsaXphYmxlLGk9TWVkaWFBbm5vdGF0aW9uLl9nZXRDb250ZW50VHlwZShzLHIpO2lmKGkpcmV0dXJue2Fzc2V0UmVmOm4gaW5zdGFuY2VvZiBSZWY/bjpudWxsLGFzc2V0RGljdDpzLGZpbGVuYW1lOnIsY29udGVudFR5cGU6aX19fXJldHVybiBudWxsfX1jbGFzcyBTY3JlZW5Bbm5vdGF0aW9uIGV4dGVuZHMgTWVkaWFBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmEsYW5ub3RhdGlvbkdsb2JhbHM6bn09ZSxzPVNjcmVlbkFubm90YXRpb24uI0V0KHQsYSk7cyYmdGhpcy5fc2V0TWVkaWFEYXRhKHMsbil9c3RhdGljI0V0KGUsdCl7Zm9yKGNvbnN0IGEgb2YgdGhpcy4jX3QoZSkpe2NvbnN0IGU9dGhpcy4jenQoYS5nZXQoIlIiKSx0LG5ldyBSZWZTZXQpO2lmKGUpcmV0dXJuIGV9cmV0dXJuIG51bGx9c3RhdGljKiNfdChlKXtjb25zdCB0PWUuZ2V0KCJBIik7dGhpcy4jTHQodCkmJih5aWVsZCB0KTtjb25zdCBhPWUuZ2V0KCJBQSIpO2lmKGEgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFssZV1vZiBhKXRoaXMuI0x0KGUpJiYoeWllbGQgZSl9c3RhdGljI0x0KGUpe2lmKCEoZSBpbnN0YW5jZW9mIERpY3QmJmlzTmFtZShlLmdldCgiUyIpLCJSZW5kaXRpb24iKSkpcmV0dXJuITE7Y29uc3QgdD1lLmdldCgiT1AiKTtyZXR1cm4gdm9pZCAwPT09dHx8dD09PUh8fHQ9PT1NfXN0YXRpYyN6dChlLHQsYSl7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7Y29uc3Qgbj1lLmdldCgiUyIpO2lmKGlzTmFtZShuLCJNUiIpKXJldHVybiB0aGlzLiNVdChlLmdldCgiQyIpLHQpO2lmKGlzTmFtZShuLCJTUiIpKXtjb25zdCBuPWUuZ2V0KCJSIik7aWYoQXJyYXkuaXNBcnJheShuKSlmb3IoY29uc3QgZSBvZiBuKXtpZihlIGluc3RhbmNlb2YgUmVmKXtpZihhLmhhcyhlKSljb250aW51ZTthLnB1dChlKX1jb25zdCBuPXRoaXMuI3p0KHQuZmV0Y2hJZlJlZihlKSx0LGEpO2lmKG4pcmV0dXJuIG59fXJldHVybiBudWxsfXN0YXRpYyNVdChlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIERpY3QmJmlzTmFtZShlLmdldCgiUyIpLCJNQ0QiKSkpcmV0dXJuIG51bGw7Y29uc3QgYT1lLmdldFJhdygiRCIpLG49dC5mZXRjaElmUmVmKGEpLHM9ZS5nZXQoIkNUIik7bGV0IHIsaSxvPSJzdHJpbmciPT10eXBlb2Ygcz9zOm51bGwsbD0hMTtpZihuIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7cj1uLmRpY3Q7Y29uc3QgdD1lLmdldCgiTiIpO2k9InN0cmluZyI9PXR5cGVvZiB0P3N0cmluZ1RvUERGU3RyaW5nKHQpOiIiO2lmKCFvKXtjb25zdCBlPW4uZGljdC5nZXQoIlN1YnR5cGUiKTtpZihlIGluc3RhbmNlb2YgTmFtZSl7bz1lLm5hbWU7bD0hMH19fWVsc2V7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7aWYoIUZpbGVTcGVjLmhhc0VtYmVkZGVkRmlsZShuKSlyZXR1cm4gbnVsbDtyPW47KHtmaWxlbmFtZTppfT1uZXcgRmlsZVNwZWMobikuc2VyaWFsaXphYmxlKX1jb25zdCBmPU1lZGlhQW5ub3RhdGlvbi5fZ2V0Q29udGVudFR5cGUocixpLG8sbCk7cmV0dXJuIGY/e2Fzc2V0UmVmOmEgaW5zdGFuY2VvZiBSZWY/YTpudWxsLGFzc2V0RGljdDpyLGZpbGVuYW1lOmksY29udGVudFR5cGU6Zn06bnVsbH19Y2xhc3MgU291bmRBbm5vdGF0aW9uIGV4dGVuZHMgTWVkaWFBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmEsYW5ub3RhdGlvbkdsb2JhbHM6bn09ZSxzPXQuZ2V0UmF3KCJTb3VuZCIpO2lmKCEocyBpbnN0YW5jZW9mIFJlZikpcmV0dXJuO2xldCByO3RyeXtyPWEuZmV0Y2gocyl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgU291bmRBbm5vdGF0aW9uOiAiJHtlfSIuYCk7cmV0dXJufXIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiZnZXRTb3VuZEZvcm1hdChyLmRpY3QpJiZ0aGlzLl9zZXRNZWRpYURhdGEoe2Fzc2V0UmVmOnMsYXNzZXREaWN0OnIuZGljdCxmaWxlbmFtZToic291bmQud2F2Iixjb250ZW50VHlwZToiYXVkaW8vd2F2Iix3cmFwU291bmQ6ITB9LG4pfX1jb25zdCBBZj17Z2V0IHIoKXtyZXR1cm4gc2hhZG93KHRoaXMsInIiLG5ldyBVaW50OEFycmF5KFs3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNywxMiwxNywyMiw3LDEyLDE3LDIyLDUsOSwxNCwyMCw1LDksMTQsMjAsNSw5LDE0LDIwLDUsOSwxNCwyMCw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDYsMTAsMTUsMjEsNiwxMCwxNSwyMSw2LDEwLDE1LDIxLDYsMTAsMTUsMjFdKSl9LGdldCBrKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJrIixuZXcgSW50MzJBcnJheShbLTY4MDg3NjkzNiwtMzg5NTY0NTg2LDYwNjEwNTgxOSwtMTA0NDUyNTMzMCwtMTc2NDE4ODk3LDEyMDAwODA0MjYsLTE0NzMyMzEzNDEsLTQ1NzA1OTgzLDE3NzAwMzU0MTYsLTE5NTg0MTQ0MTcsLTQyMDYzLC0xOTkwNDA0MTYyLDE4MDQ2MDM2ODIsLTQwMzQxMTAxLC0xNTAyMDAyMjkwLDEyMzY1MzUzMjksLTE2NTc5NjUxMCwtMTA2OTUwMTYzMiw2NDM3MTc3MTMsLTM3Mzg5NzMwMiwtNzAxNTU4NjkxLDM4MDE2MDgzLC02NjA0NzgzMzUsLTQwNTUzNzg0OCw1Njg0NDY0MzgsLTEwMTk4MDM2OTAsLTE4NzM2Mzk2MSwxMTYzNTMxNTAxLC0xNDQ0NjgxNDY3LC01MTQwMzc4NCwxNzM1MzI4NDczLC0xOTI2NjA3NzM0LC0zNzg1NTgsLTIwMjI1NzQ0NjMsMTgzOTAzMDU2MiwtMzUzMDk1NTYsLTE1MzA5OTIwNjAsMTI3Mjg5MzM1MywtMTU1NDk3NjMyLC0xMDk0NzMwNjQwLDY4MTI3OTE3NCwtMzU4NTM3MjIyLC03MjI1MjE5NzksNzYwMjkxODksLTY0MDM2NDQ4NywtNDIxODE1ODM1LDUzMDc0MjUyMCwtOTk1MzM4NjUxLC0xOTg2MzA4NDQsMTEyNjg5MTQxNSwtMTQxNjM1NDkwNSwtNTc0MzQwNTUsMTcwMDQ4NTU3MSwtMTg5NDk4NjYwNiwtMTA1MTUyMywtMjA1NDkyMjc5OSwxODczMzEzMzU5LC0zMDYxMTc0NCwtMTU2MDE5ODM4MCwxMzA5MTUxNjQ5LC0xNDU1MjMwNzAsLTExMjAyMTAzNzksNzE4Nzg3MjU5LC0zNDM0ODU1NTFdKSl9fTtmdW5jdGlvbiBjYWxjdWxhdGVNRDUoZSx0LGEpe2xldCBuPTE3MzI1ODQxOTMscz0tMjcxNzMzODc5LHI9LTE3MzI1ODQxOTQsaT0yNzE3MzM4Nzg7Y29uc3Qgbz1hKzcyJi02NCxsPW5ldyBVaW50OEFycmF5KG8pO2xldCBmLGM7Zm9yKGY9MDtmPGE7KytmKWxbZl09ZVt0KytdO2xbZisrXT0xMjg7Y29uc3QgaD1vLTg7ZjxoJiYoZj1oKTtsW2YrK109YTw8MyYyNTU7bFtmKytdPWE+PjUmMjU1O2xbZisrXT1hPj4xMyYyNTU7bFtmKytdPWE+PjIxJjI1NTtsW2YrK109YT4+PjI5JjI1NTtmKz0zO2NvbnN0IHU9bmV3IEludDMyQXJyYXkoMTYpLHtrOm0scjpwfT1BZjtmb3IoZj0wO2Y8bzspe2ZvcihjPTA7YzwxNjsrK2MsZis9NCl1W2NdPWxbZl18bFtmKzFdPDw4fGxbZisyXTw8MTZ8bFtmKzNdPDwyNDtsZXQgZSx0LGE9bixvPXMsaD1yLGQ9aTtmb3IoYz0wO2M8NjQ7KytjKXtpZihjPDE2KXtlPW8maHx+byZkO3Q9Y31lbHNlIGlmKGM8MzIpe2U9ZCZvfH5kJmg7dD01KmMrMSYxNX1lbHNlIGlmKGM8NDgpe2U9b15oXmQ7dD0zKmMrNSYxNX1lbHNle2U9aF4ob3x+ZCk7dD03KmMmMTV9Y29uc3Qgbj1kLHM9YStlK21bY10rdVt0XXwwLHI9cFtjXTtkPWg7aD1vO289bysoczw8cnxzPj4+MzItcil8MDthPW59bj1uK2F8MDtzPXMrb3wwO3I9citofDA7aT1pK2R8MH1yZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzI1NSZuLG4+PjgmMjU1LG4+PjE2JjI1NSxuPj4+MjQmMjU1LDI1NSZzLHM+PjgmMjU1LHM+PjE2JjI1NSxzPj4+MjQmMjU1LDI1NSZyLHI+PjgmMjU1LHI+PjE2JjI1NSxyPj4+MjQmMjU1LDI1NSZpLGk+PjgmMjU1LGk+PjE2JjI1NSxpPj4+MjQmMjU1XSl9ZnVuY3Rpb24gZGVjb2RlU3RyaW5nKGUpe3RyeXtyZXR1cm4gc3RyaW5nVG9VVEY4U3RyaW5nKGUpfWNhdGNoKHQpe3dhcm4oYFVURi04IGRlY29kaW5nIGZhaWxlZDogIiR7dH0iLmApO3JldHVybiBlfX1jbGFzcyBEYXRhc2V0WE1MUGFyc2VyIGV4dGVuZHMgU2ltcGxlWE1MUGFyc2Vye25vZGU9bnVsbDtvbkVuZEVsZW1lbnQoZSl7Y29uc3QgdD1zdXBlci5vbkVuZEVsZW1lbnQoZSk7aWYodCYmInhmYTpkYXRhc2V0cyI9PT1lKXt0aGlzLm5vZGU9dDt0aHJvdyBuZXcgRXJyb3IoIkFib3J0aW5nIERhdGFzZXRYTUxQYXJzZXIuIil9fX1jbGFzcyBEYXRhc2V0UmVhZGVye2NvbnN0cnVjdG9yKGUpe2lmKGUuZGF0YXNldHMpdGhpcy5ub2RlPW5ldyBTaW1wbGVYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KS5wYXJzZUZyb21TdHJpbmcoZS5kYXRhc2V0cykuZG9jdW1lbnRFbGVtZW50O2Vsc2V7Y29uc3QgdD1uZXcgRGF0YXNldFhNTFBhcnNlcih7aGFzQXR0cmlidXRlczohMH0pO3RyeXt0LnBhcnNlRnJvbVN0cmluZyhlWyJ4ZHA6eGRwIl0pfWNhdGNoe310aGlzLm5vZGU9dC5ub2RlfX1nZXRWYWx1ZShlKXtpZighdGhpcy5ub2RlfHwhZSlyZXR1cm4iIjtjb25zdCB0PXRoaXMubm9kZS5zZWFyY2hOb2RlKHBhcnNlWEZBUGF0aChlKSwwKTtpZighdClyZXR1cm4iIjtjb25zdCBhPXQuZmlyc3RDaGlsZDtyZXR1cm4idmFsdWUiPT09YT8ubm9kZU5hbWU/dC5jaGlsZHJlbi5tYXAoZT0+ZGVjb2RlU3RyaW5nKGUudGV4dENvbnRlbnQpKTpkZWNvZGVTdHJpbmcodC50ZXh0Q29udGVudCl9fWNsYXNzIFNpbmdsZUludGVyc2VjdG9yeyNXdDttaW5YPTEvMDttaW5ZPTEvMDttYXhYPS0xLzA7bWF4WT0tMS8wOyNYdD1udWxsOyNLdD1bXTsjR3Q9W107I1Z0PS0xOyMkdD0hMTtjb25zdHJ1Y3RvcihlKXt0aGlzLiNXdD1lO2NvbnN0IHQ9ZS5kYXRhLnF1YWRQb2ludHM7aWYodCl7Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGE7ZSs9OCl7dGhpcy5taW5YPU1hdGgubWluKHRoaXMubWluWCx0W2VdKTt0aGlzLm1heFg9TWF0aC5tYXgodGhpcy5tYXhYLHRbZSsyXSk7dGhpcy5taW5ZPU1hdGgubWluKHRoaXMubWluWSx0W2UrNV0pO3RoaXMubWF4WT1NYXRoLm1heCh0aGlzLm1heFksdFtlKzFdKX10Lmxlbmd0aD44JiYodGhpcy4jWHQ9dCl9ZWxzZVt0aGlzLm1pblgsdGhpcy5taW5ZLHRoaXMubWF4WCx0aGlzLm1heFldPWUuZGF0YS5yZWN0fSNZdChlLHQpe2lmKHRoaXMubWluWD49ZXx8dGhpcy5tYXhYPD1lfHx0aGlzLm1pblk+PXR8fHRoaXMubWF4WTw9dClyZXR1cm4hMTtjb25zdCBhPXRoaXMuI1h0O2lmKCFhKXJldHVybiEwO2lmKHRoaXMuI1Z0Pj0wKXtjb25zdCBuPXRoaXMuI1Z0O2lmKCEoYVtuXT49ZXx8YVtuKzJdPD1lfHxhW24rNV0+PXR8fGFbbisxXTw9dCkpcmV0dXJuITA7dGhpcy4jVnQ9LTF9Zm9yKGxldCBuPTAscz1hLmxlbmd0aDtuPHM7bis9OClpZighKGFbbl0+PWV8fGFbbisyXTw9ZXx8YVtuKzVdPj10fHxhW24rMV08PXQpKXt0aGlzLiNWdD1uO3JldHVybiEwfXJldHVybiExfWFkZEdseXBoKGUsdCxhKXtpZighdGhpcy4jWXQoZSx0KSl7dGhpcy5kaXNhYmxlRXh0cmFDaGFycygpO3JldHVybiExfWlmKHRoaXMuI0d0Lmxlbmd0aD4wKXt0aGlzLiNLdC5wdXNoKHRoaXMuI0d0LmpvaW4oIiIpKTt0aGlzLiNHdC5sZW5ndGg9MH10aGlzLiNLdC5wdXNoKGEpO3RoaXMuIyR0PSEwO3JldHVybiEwfWFkZEV4dHJhQ2hhcihlKXt0aGlzLiMkdCYmdGhpcy4jR3QucHVzaChlKX1kaXNhYmxlRXh0cmFDaGFycygpe2lmKHRoaXMuIyR0KXt0aGlzLiMkdD0hMTt0aGlzLiNHdC5sZW5ndGg9MH19c2V0VGV4dCgpe3RoaXMuI1d0LmRhdGEub3ZlcmxhaWRUZXh0PXRoaXMuI0t0LmpvaW4oIiIpfX1jb25zdCB4Zj02NDtjbGFzcyBJbnRlcnNlY3RvcnsjSnQ9W107I1F0PVtdOyNadDsjZWE7I3RhOyNhYTsjbmE7I3NhO2NvbnN0cnVjdG9yKGUpe2xldCB0PTEvMCxhPTEvMCxuPS0xLzAscz0tMS8wO2NvbnN0IHI9dGhpcy4jSnQ7Zm9yKGNvbnN0IGkgb2YgZSl7aWYoIWkuZGF0YS5xdWFkUG9pbnRzJiYhaS5kYXRhLnJlY3QpY29udGludWU7Y29uc3QgZT1uZXcgU2luZ2xlSW50ZXJzZWN0b3IoaSk7ci5wdXNoKGUpO3Q9TWF0aC5taW4odCxlLm1pblgpO2E9TWF0aC5taW4oYSxlLm1pblkpO249TWF0aC5tYXgobixlLm1heFgpO3M9TWF0aC5tYXgocyxlLm1heFkpfXRoaXMuI1p0PXQ7dGhpcy4jdGE9YTt0aGlzLiNlYT1uO3RoaXMuI2FhPXM7dGhpcy4jbmE9NjMvKG4tdCk7dGhpcy4jc2E9NjMvKHMtYSk7Zm9yKGNvbnN0IGUgb2Ygcil7Y29uc3QgdD10aGlzLiNyYShlLm1pblgsZS5taW5ZKSxhPXRoaXMuI3JhKGUubWF4WCxlLm1heFkpLG49KGEtdCkleGYscz1NYXRoLmZsb29yKChhLXQpL3hmKTtmb3IobGV0IGE9dDthPD10K3MqeGY7YSs9eGYpZm9yKGxldCB0PTA7dDw9bjt0KyspKHRoaXMuI1F0W2ErdF0/Pz1bXSkucHVzaChlKX19I3JhKGUsdCl7cmV0dXJuIE1hdGguZmxvb3IoKGUtdGhpcy4jWnQpKnRoaXMuI25hKStNYXRoLmZsb29yKCh0LXRoaXMuI3RhKSp0aGlzLiNzYSkqeGZ9YWRkR2x5cGgoZSx0LGEsbil7Y29uc3Qgcz1lWzRdK3QvMixyPWVbNV0rYS8yO2lmKHM8dGhpcy4jWnR8fHI8dGhpcy4jdGF8fHM+dGhpcy4jZWF8fHI+dGhpcy4jYWEpcmV0dXJuO2NvbnN0IGk9dGhpcy4jUXRbdGhpcy4jcmEocyxyKV07aWYoaSlmb3IoY29uc3QgZSBvZiBpKWUuYWRkR2x5cGgocyxyLG4pfWFkZEV4dHJhQ2hhcihlKXtmb3IoY29uc3QgdCBvZiB0aGlzLiNKdCl0LmFkZEV4dHJhQ2hhcihlKX1zZXRUZXh0KCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy4jSnQpZS5zZXRUZXh0KCl9fWNsYXNzIFdvcmQ2NHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuaGlnaD0wfGU7dGhpcy5sb3c9MHx0fWFuZChlKXt0aGlzLmhpZ2gmPWUuaGlnaDt0aGlzLmxvdyY9ZS5sb3d9eG9yKGUpe3RoaXMuaGlnaF49ZS5oaWdoO3RoaXMubG93Xj1lLmxvd31zaGlmdFJpZ2h0KGUpe3RoaXMubG93PXRoaXMubG93Pj4+ZXx0aGlzLmhpZ2g8PDMyLWU7dGhpcy5oaWdoPXRoaXMuaGlnaD4+PmV8MH1yb3RhdGVSaWdodChlKXtsZXQgdCxhO2lmKDMyJmUpe2E9dGhpcy5sb3c7dD10aGlzLmhpZ2h9ZWxzZXt0PXRoaXMubG93O2E9dGhpcy5oaWdofWUmPTMxO3RoaXMubG93PXQ+Pj5lfGE8PDMyLWU7dGhpcy5oaWdoPWE+Pj5lfHQ8PDMyLWV9bm90KCl7dGhpcy5oaWdoPX50aGlzLmhpZ2g7dGhpcy5sb3c9fnRoaXMubG93fWFkZChlKXtjb25zdCB0PSh0aGlzLmxvdz4+PjApKyhlLmxvdz4+PjApO2xldCBhPSh0aGlzLmhpZ2g+Pj4wKSsoZS5oaWdoPj4+MCk7dD40Mjk0OTY3Mjk1JiYoYSs9MSk7dGhpcy5sb3c9MHx0O3RoaXMuaGlnaD0wfGF9Y29weVRvKGUsdCl7ZVt0XT10aGlzLmhpZ2g+Pj4yNCYyNTU7ZVt0KzFdPXRoaXMuaGlnaD4+MTYmMjU1O2VbdCsyXT10aGlzLmhpZ2g+PjgmMjU1O2VbdCszXT0yNTUmdGhpcy5oaWdoO2VbdCs0XT10aGlzLmxvdz4+PjI0JjI1NTtlW3QrNV09dGhpcy5sb3c+PjE2JjI1NTtlW3QrNl09dGhpcy5sb3c+PjgmMjU1O2VbdCs3XT0yNTUmdGhpcy5sb3d9YXNzaWduKGUpe3RoaXMuaGlnaD1lLmhpZ2g7dGhpcy5sb3c9ZS5sb3d9fWNvbnN0IENmPXtnZXQgaygpe3JldHVybiBzaGFkb3codGhpcywiayIsW25ldyBXb3JkNjQoMTExNjM1MjQwOCwzNjA5NzY3NDU4KSxuZXcgV29yZDY0KDE4OTk0NDc0NDEsNjAyODkxNzI1KSxuZXcgV29yZDY0KDMwNDkzMjM0NzEsMzk2NDQ4NDM5OSksbmV3IFdvcmQ2NCgzOTIxMDA5NTczLDIxNzMyOTU1NDgpLG5ldyBXb3JkNjQoOTYxOTg3MTYzLDQwODE2Mjg0NzIpLG5ldyBXb3JkNjQoMTUwODk3MDk5MywzMDUzODM0MjY1KSxuZXcgV29yZDY0KDI0NTM2MzU3NDgsMjkzNzY3MTU3OSksbmV3IFdvcmQ2NCgyODcwNzYzMjIxLDM2NjQ2MDk1NjApLG5ldyBXb3JkNjQoMzYyNDM4MTA4MCwyNzM0ODgzMzk0KSxuZXcgV29yZDY0KDMxMDU5ODQwMSwxMTY0OTk2NTQyKSxuZXcgV29yZDY0KDYwNzIyNTI3OCwxMzIzNjEwNzY0KSxuZXcgV29yZDY0KDE0MjY4ODE5ODcsMzU5MDMwNDk5NCksbmV3IFdvcmQ2NCgxOTI1MDc4Mzg4LDQwNjgxODIzODMpLG5ldyBXb3JkNjQoMjE2MjA3ODIwNiw5OTEzMzYxMTMpLG5ldyBXb3JkNjQoMjYxNDg4ODEwMyw2MzM4MDMzMTcpLG5ldyBXb3JkNjQoMzI0ODIyMjU4MCwzNDc5Nzc0ODY4KSxuZXcgV29yZDY0KDM4MzUzOTA0MDEsMjY2NjYxMzQ1OCksbmV3IFdvcmQ2NCg0MDIyMjI0Nzc0LDk0NDcxMTEzOSksbmV3IFdvcmQ2NCgyNjQzNDcwNzgsMjM0MTI2Mjc3MyksbmV3IFdvcmQ2NCg2MDQ4MDc2MjgsMjAwNzgwMDkzMyksbmV3IFdvcmQ2NCg3NzAyNTU5ODMsMTQ5NTk5MDkwMSksbmV3IFdvcmQ2NCgxMjQ5MTUwMTIyLDE4NTY0MzEyMzUpLG5ldyBXb3JkNjQoMTU1NTA4MTY5MiwzMTc1MjE4MTMyKSxuZXcgV29yZDY0KDE5OTYwNjQ5ODYsMjE5ODk1MDgzNyksbmV3IFdvcmQ2NCgyNTU0MjIwODgyLDM5OTk3MTkzMzkpLG5ldyBXb3JkNjQoMjgyMTgzNDM0OSw3NjY3ODQwMTYpLG5ldyBXb3JkNjQoMjk1Mjk5NjgwOCwyNTY2NTk0ODc5KSxuZXcgV29yZDY0KDMyMTAzMTM2NzEsMzIwMzMzNzk1NiksbmV3IFdvcmQ2NCgzMzM2NTcxODkxLDEwMzQ0NTcwMjYpLG5ldyBXb3JkNjQoMzU4NDUyODcxMSwyNDY2OTQ4OTAxKSxuZXcgV29yZDY0KDExMzkyNjk5MywzNzU4MzI2MzgzKSxuZXcgV29yZDY0KDMzODI0MTg5NSwxNjg3MTc5MzYpLG5ldyBXb3JkNjQoNjY2MzA3MjA1LDExODgxNzk5NjQpLG5ldyBXb3JkNjQoNzczNTI5OTEyLDE1NDYwNDU3MzQpLG5ldyBXb3JkNjQoMTI5NDc1NzM3MiwxNTIyODA1NDg1KSxuZXcgV29yZDY0KDEzOTYxODIyOTEsMjY0MzgzMzgyMyksbmV3IFdvcmQ2NCgxNjk1MTgzNzAwLDIzNDM1MjczOTApLG5ldyBXb3JkNjQoMTk4NjY2MTA1MSwxMDE0NDc3NDgwKSxuZXcgV29yZDY0KDIxNzcwMjYzNTAsMTIwNjc1OTE0MiksbmV3IFdvcmQ2NCgyNDU2OTU2MDM3LDM0NDA3NzYyNyksbmV3IFdvcmQ2NCgyNzMwNDg1OTIxLDEyOTA4NjM0NjApLG5ldyBXb3JkNjQoMjgyMDMwMjQxMSwzMTU4NDU0MjczKSxuZXcgV29yZDY0KDMyNTk3MzA4MDAsMzUwNTk1MjY1NyksbmV3IFdvcmQ2NCgzMzQ1NzY0NzcxLDEwNjIxNzAwOCksbmV3IFdvcmQ2NCgzNTE2MDY1ODE3LDM2MDYwMDgzNDQpLG5ldyBXb3JkNjQoMzYwMDM1MjgwNCwxNDMyNzI1Nzc2KSxuZXcgV29yZDY0KDQwOTQ1NzE5MDksMTQ2NzAzMTU5NCksbmV3IFdvcmQ2NCgyNzU0MjMzNDQsODUxMTY5NzIwKSxuZXcgV29yZDY0KDQzMDIyNzczNCwzMTAwODIzNzUyKSxuZXcgV29yZDY0KDUwNjk0ODYxNiwxMzYzMjU4MTk1KSxuZXcgV29yZDY0KDY1OTA2MDU1NiwzNzUwNjg1NTkzKSxuZXcgV29yZDY0KDg4Mzk5Nzg3NywzNzg1MDUwMjgwKSxuZXcgV29yZDY0KDk1ODEzOTU3MSwzMzE4MzA3NDI3KSxuZXcgV29yZDY0KDEzMjI4MjIyMTgsMzgxMjcyMzQwMyksbmV3IFdvcmQ2NCgxNTM3MDAyMDYzLDIwMDMwMzQ5OTUpLG5ldyBXb3JkNjQoMTc0Nzg3Mzc3OSwzNjAyMDM2ODk5KSxuZXcgV29yZDY0KDE5NTU1NjIyMjIsMTU3NTk5MDAxMiksbmV3IFdvcmQ2NCgyMDI0MTA0ODE1LDExMjU1OTI5MjgpLG5ldyBXb3JkNjQoMjIyNzczMDQ1MiwyNzE2OTA0MzA2KSxuZXcgV29yZDY0KDIzNjE4NTI0MjQsNDQyNzc2MDQ0KSxuZXcgV29yZDY0KDI0Mjg0MzY0NzQsNTkzNjk4MzQ0KSxuZXcgV29yZDY0KDI3NTY3MzQxODcsMzczMzExMDI0OSksbmV3IFdvcmQ2NCgzMjA0MDMxNDc5LDI5OTkzNTE1NzMpLG5ldyBXb3JkNjQoMzMyOTMyNTI5OCwzODE1OTIwNDI3KSxuZXcgV29yZDY0KDMzOTE1Njk2MTQsMzkyODM4MzkwMCksbmV3IFdvcmQ2NCgzNTE1MjY3MjcxLDU2NjI4MDcxMSksbmV3IFdvcmQ2NCgzOTQwMTg3NjA2LDM0NTQwNjk1MzQpLG5ldyBXb3JkNjQoNDExODYzMDI3MSw0MDAwMjM5OTkyKSxuZXcgV29yZDY0KDExNjQxODQ3NCwxOTE0MTM4NTU0KSxuZXcgV29yZDY0KDE3NDI5MjQyMSwyNzMxMDU1MjcwKSxuZXcgV29yZDY0KDI4OTM4MDM1NiwzMjAzOTkzMDA2KSxuZXcgV29yZDY0KDQ2MDM5MzI2OSwzMjA2MjAzMTUpLG5ldyBXb3JkNjQoNjg1NDcxNzMzLDU4NzQ5NjgzNiksbmV3IFdvcmQ2NCg4NTIxNDI5NzEsMTA4Njc5Mjg1MSksbmV3IFdvcmQ2NCgxMDE3MDM2Mjk4LDM2NTU0MzEwMCksbmV3IFdvcmQ2NCgxMTI2MDAwNTgwLDI2MTgyOTc2NzYpLG5ldyBXb3JkNjQoMTI4ODAzMzQ3MCwzNDA5ODU1MTU4KSxuZXcgV29yZDY0KDE1MDE1MDU5NDgsNDIzNDUwOTg2NiksbmV3IFdvcmQ2NCgxNjA3MTY3OTE1LDk4NzE2NzQ2OCksbmV3IFdvcmQ2NCgxODE2NDAyMzE2LDEyNDYxODk1OTEpXSl9fTtmdW5jdGlvbiBjaChlLHQsYSxuLHMpe2UuYXNzaWduKHQpO2UuYW5kKGEpO3MuYXNzaWduKHQpO3Mubm90KCk7cy5hbmQobik7ZS54b3Iocyl9ZnVuY3Rpb24gbWFqKGUsdCxhLG4scyl7ZS5hc3NpZ24odCk7ZS5hbmQoYSk7cy5hc3NpZ24odCk7cy5hbmQobik7ZS54b3Iocyk7cy5hc3NpZ24oYSk7cy5hbmQobik7ZS54b3Iocyl9ZnVuY3Rpb24gc2lnbWEoZSx0LGEpe2UuYXNzaWduKHQpO2Uucm90YXRlUmlnaHQoMjgpO2EuYXNzaWduKHQpO2Eucm90YXRlUmlnaHQoMzQpO2UueG9yKGEpO2EuYXNzaWduKHQpO2Eucm90YXRlUmlnaHQoMzkpO2UueG9yKGEpfWZ1bmN0aW9uIHNpZ21hUHJpbWUoZSx0LGEpe2UuYXNzaWduKHQpO2Uucm90YXRlUmlnaHQoMTQpO2EuYXNzaWduKHQpO2Eucm90YXRlUmlnaHQoMTgpO2UueG9yKGEpO2EuYXNzaWduKHQpO2Eucm90YXRlUmlnaHQoNDEpO2UueG9yKGEpfWZ1bmN0aW9uIGxpdHRsZVNpZ21hKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDEpO2EuYXNzaWduKHQpO2Eucm90YXRlUmlnaHQoOCk7ZS54b3IoYSk7YS5hc3NpZ24odCk7YS5zaGlmdFJpZ2h0KDcpO2UueG9yKGEpfWZ1bmN0aW9uIGxpdHRsZVNpZ21hUHJpbWUoZSx0LGEpe2UuYXNzaWduKHQpO2Uucm90YXRlUmlnaHQoMTkpO2EuYXNzaWduKHQpO2Eucm90YXRlUmlnaHQoNjEpO2UueG9yKGEpO2EuYXNzaWduKHQpO2Euc2hpZnRSaWdodCg2KTtlLnhvcihhKX1mdW5jdGlvbiBjYWxjdWxhdGVTSEE1MTIoZSx0LGEsbj0hMSl7bGV0IHMscixpLG8sbCxmLGMsaDtpZihuKXtzPW5ldyBXb3JkNjQoMzQxODA3MDM2NSwzMjM4MzcxMDMyKTtyPW5ldyBXb3JkNjQoMTY1NDI3MDI1MCw5MTQxNTA2NjMpO2k9bmV3IFdvcmQ2NCgyNDM4NTI5MzcwLDgxMjcwMjk5OSk7bz1uZXcgV29yZDY0KDM1NTQ2MjM2MCw0MTQ0OTEyNjk3KTtsPW5ldyBXb3JkNjQoMTczMTQwNTQxNSw0MjkwNzc1ODU3KTtmPW5ldyBXb3JkNjQoMjM5NDE4MDIzMSwxNzUwNjAzMDI1KTtjPW5ldyBXb3JkNjQoMzY3NTAwODUyNSwxNjk0MDc2ODM5KTtoPW5ldyBXb3JkNjQoMTIwMzA2MjgxMywzMjA0MDc1NDI4KX1lbHNle3M9bmV3IFdvcmQ2NCgxNzc5MDMzNzAzLDQwODkyMzU3MjApO3I9bmV3IFdvcmQ2NCgzMTQ0MTM0Mjc3LDIyMjc4NzM1OTUpO2k9bmV3IFdvcmQ2NCgxMDEzOTA0MjQyLDQyNzExNzU3MjMpO289bmV3IFdvcmQ2NCgyNzczNDgwNzYyLDE1OTU3NTAxMjkpO2w9bmV3IFdvcmQ2NCgxMzU5ODkzMTE5LDI5MTc1NjUxMzcpO2Y9bmV3IFdvcmQ2NCgyNjAwODIyOTI0LDcyNTUxMTE5OSk7Yz1uZXcgV29yZDY0KDUyODczNDYzNSw0MjE1Mzg5NTQ3KTtoPW5ldyBXb3JkNjQoMTU0MTQ1OTIyNSwzMjcwMzMyMDkpfWNvbnN0IHU9MTI4Kk1hdGguY2VpbCgoYSsxNykvMTI4KSxtPW5ldyBVaW50OEFycmF5KHUpO2xldCBwLGQ7Zm9yKHA9MDtwPGE7KytwKW1bcF09ZVt0KytdO21bcCsrXT0xMjg7Y29uc3QgZz11LTE2O3A8ZyYmKHA9Zyk7cCs9MTE7bVtwKytdPWE+Pj4yOSYyNTU7bVtwKytdPWE+PjIxJjI1NTttW3ArK109YT4+MTMmMjU1O21bcCsrXT1hPj41JjI1NTttW3ArK109YTw8MyYyNTU7Y29uc3QgYj1uZXcgQXJyYXkoODApO2ZvcihwPTA7cDw4MDtwKyspYltwXT1uZXcgV29yZDY0KDAsMCk7Y29uc3R7azp3fT1DZjtsZXQgaj1uZXcgV29yZDY0KDAsMCksaz1uZXcgV29yZDY0KDAsMCkseT1uZXcgV29yZDY0KDAsMCkscT1uZXcgV29yZDY0KDAsMCksdj1uZXcgV29yZDY0KDAsMCksUz1uZXcgV29yZDY0KDAsMCkseD1uZXcgV29yZDY0KDAsMCksQz1uZXcgV29yZDY0KDAsMCk7Y29uc3QgRj1uZXcgV29yZDY0KDAsMCksVD1uZXcgV29yZDY0KDAsMCksUj1uZXcgV29yZDY0KDAsMCksTz1uZXcgV29yZDY0KDAsMCk7bGV0IEQsSDtmb3IocD0wO3A8dTspe2ZvcihkPTA7ZDwxNjsrK2Qpe2JbZF0uaGlnaD1tW3BdPDwyNHxtW3ArMV08PDE2fG1bcCsyXTw8OHxtW3ArM107YltkXS5sb3c9bVtwKzRdPDwyNHxtW3ArNV08PDE2fG1bcCs2XTw8OHxtW3ArN107cCs9OH1mb3IoZD0xNjtkPDgwOysrZCl7RD1iW2RdO2xpdHRsZVNpZ21hUHJpbWUoRCxiW2QtMl0sTyk7RC5hZGQoYltkLTddKTtsaXR0bGVTaWdtYShSLGJbZC0xNV0sTyk7RC5hZGQoUik7RC5hZGQoYltkLTE2XSl9ai5hc3NpZ24ocyk7ay5hc3NpZ24ocik7eS5hc3NpZ24oaSk7cS5hc3NpZ24obyk7di5hc3NpZ24obCk7Uy5hc3NpZ24oZik7eC5hc3NpZ24oYyk7Qy5hc3NpZ24oaCk7Zm9yKGQ9MDtkPDgwOysrZCl7Ri5hc3NpZ24oQyk7c2lnbWFQcmltZShSLHYsTyk7Ri5hZGQoUik7Y2goUix2LFMseCxPKTtGLmFkZChSKTtGLmFkZCh3W2RdKTtGLmFkZChiW2RdKTtzaWdtYShULGosTyk7bWFqKFIsaixrLHksTyk7VC5hZGQoUik7RD1DO0M9eDt4PVM7Uz12O3EuYWRkKEYpO3Y9cTtxPXk7eT1rO2s9ajtELmFzc2lnbihGKTtELmFkZChUKTtqPUR9cy5hZGQoaik7ci5hZGQoayk7aS5hZGQoeSk7by5hZGQocSk7bC5hZGQodik7Zi5hZGQoUyk7Yy5hZGQoeCk7aC5hZGQoQyl9aWYobil7SD1uZXcgVWludDhBcnJheSg0OCk7cy5jb3B5VG8oSCwwKTtyLmNvcHlUbyhILDgpO2kuY29weVRvKEgsMTYpO28uY29weVRvKEgsMjQpO2wuY29weVRvKEgsMzIpO2YuY29weVRvKEgsNDApfWVsc2V7SD1uZXcgVWludDhBcnJheSg2NCk7cy5jb3B5VG8oSCwwKTtyLmNvcHlUbyhILDgpO2kuY29weVRvKEgsMTYpO28uY29weVRvKEgsMjQpO2wuY29weVRvKEgsMzIpO2YuY29weVRvKEgsNDApO2MuY29weVRvKEgsNDgpO2guY29weVRvKEgsNTYpfXJldHVybiBIfWZ1bmN0aW9uIGNhbGN1bGF0ZVNIQTM4NChlLHQsYSl7cmV0dXJuIGNhbGN1bGF0ZVNIQTUxMihlLHQsYSwhMCl9Y29uc3QgSWY9e2dldCBrKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJrIixbMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XSl9fTtmdW5jdGlvbiByb3RyKGUsdCl7cmV0dXJuIGU+Pj50fGU8PDMyLXR9ZnVuY3Rpb24gY2FsY3VsYXRlX3NoYTI1Nl9jaChlLHQsYSl7cmV0dXJuIGUmdF5+ZSZhfWZ1bmN0aW9uIGNhbGN1bGF0ZV9zaGEyNTZfbWFqKGUsdCxhKXtyZXR1cm4gZSZ0XmUmYV50JmF9ZnVuY3Rpb24gY2FsY3VsYXRlX3NoYTI1Nl9zaWdtYShlKXtyZXR1cm4gcm90cihlLDIpXnJvdHIoZSwxMylecm90cihlLDIyKX1mdW5jdGlvbiBjYWxjdWxhdGVfc2hhMjU2X3NpZ21hUHJpbWUoZSl7cmV0dXJuIHJvdHIoZSw2KV5yb3RyKGUsMTEpXnJvdHIoZSwyNSl9ZnVuY3Rpb24gY2FsY3VsYXRlX3NoYTI1Nl9saXR0bGVTaWdtYShlKXtyZXR1cm4gcm90cihlLDcpXnJvdHIoZSwxOCleZT4+PjN9ZnVuY3Rpb24gY2FsY3VsYXRlX3NoYTI1Nl9saXR0bGVTaWdtYVByaW1lKGUpe3JldHVybiByb3RyKGUsMTcpXnJvdHIoZSwxOSleZT4+PjEwfWZ1bmN0aW9uIGNhbGN1bGF0ZVNIQTI1NihlLHQsYSl7bGV0IG49MTc3OTAzMzcwMyxzPTMxNDQxMzQyNzcscj0xMDEzOTA0MjQyLGk9Mjc3MzQ4MDc2MixvPTEzNTk4OTMxMTksbD0yNjAwODIyOTI0LGY9NTI4NzM0NjM1LGM9MTU0MTQ1OTIyNTtjb25zdCBoPTY0Kk1hdGguY2VpbCgoYSs5KS82NCksdT1uZXcgVWludDhBcnJheShoKTtsZXQgbSxwO2ZvcihtPTA7bTxhOysrbSl1W21dPWVbdCsrXTt1W20rK109MTI4O2NvbnN0IGQ9aC04O208ZCYmKG09ZCk7bSs9Mzt1W20rK109YT4+PjI5JjI1NTt1W20rK109YT4+MjEmMjU1O3VbbSsrXT1hPj4xMyYyNTU7dVttKytdPWE+PjUmMjU1O3VbbSsrXT1hPDwzJjI1NTtjb25zdCBnPW5ldyBVaW50MzJBcnJheSg2NCkse2s6Yn09SWY7Zm9yKG09MDttPGg7KXtmb3IocD0wO3A8MTY7KytwKXtnW3BdPXVbbV08PDI0fHVbbSsxXTw8MTZ8dVttKzJdPDw4fHVbbSszXTttKz00fWZvcihwPTE2O3A8NjQ7KytwKWdbcF09Y2FsY3VsYXRlX3NoYTI1Nl9saXR0bGVTaWdtYVByaW1lKGdbcC0yXSkrZ1twLTddK2NhbGN1bGF0ZV9zaGEyNTZfbGl0dGxlU2lnbWEoZ1twLTE1XSkrZ1twLTE2XXwwO2xldCBlLHQsYT1uLGg9cyxkPXIsdz1pLGo9byxrPWwseT1mLHE9Yztmb3IocD0wO3A8NjQ7KytwKXtlPXErY2FsY3VsYXRlX3NoYTI1Nl9zaWdtYVByaW1lKGopK2NhbGN1bGF0ZV9zaGEyNTZfY2goaixrLHkpK2JbcF0rZ1twXTt0PWNhbGN1bGF0ZV9zaGEyNTZfc2lnbWEoYSkrY2FsY3VsYXRlX3NoYTI1Nl9tYWooYSxoLGQpO3E9eTt5PWs7az1qO2o9dytlfDA7dz1kO2Q9aDtoPWE7YT1lK3R8MH1uPW4rYXwwO3M9cytofDA7cj1yK2R8MDtpPWkrd3wwO289bytqfDA7bD1sK2t8MDtmPWYreXwwO2M9YytxfDB9cmV0dXJuIG5ldyBVaW50OEFycmF5KFtuPj4yNCYyNTUsbj4+MTYmMjU1LG4+PjgmMjU1LDI1NSZuLHM+PjI0JjI1NSxzPj4xNiYyNTUscz4+OCYyNTUsMjU1JnMscj4+MjQmMjU1LHI+PjE2JjI1NSxyPj44JjI1NSwyNTUmcixpPj4yNCYyNTUsaT4+MTYmMjU1LGk+PjgmMjU1LDI1NSZpLG8+PjI0JjI1NSxvPj4xNiYyNTUsbz4+OCYyNTUsMjU1Jm8sbD4+MjQmMjU1LGw+PjE2JjI1NSxsPj44JjI1NSwyNTUmbCxmPj4yNCYyNTUsZj4+MTYmMjU1LGY+PjgmMjU1LDI1NSZmLGM+PjI0JjI1NSxjPj4xNiYyNTUsYz4+OCYyNTUsMjU1JmNdKX1jbGFzcyBEZWNyeXB0U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFteyNpYT1udWxsO2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5kZWNyeXB0PWF9cmVhZEJsb2NrKCl7bGV0IGU9dGhpcy4jaWE/P3RoaXMuc3RyZWFtLmdldEJ5dGVzKDUxMik7aWYoIWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy4jaWE9dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoNTEyKTtjb25zdCB0PXRoaXMuI2lhLmxlbmd0aD4wO2U9KDAsdGhpcy5kZWNyeXB0KShlLCF0KTtjb25zdCBhPXRoaXMuYnVmZmVyTGVuZ3RoLG49YStlLmxlbmd0aDt0aGlzLmVuc3VyZUJ1ZmZlcihuKS5zZXQoZSxhKTt0aGlzLmJ1ZmZlckxlbmd0aD1ufWdldE9yaWdpbmFsU3RyZWFtKCl7cmV0dXJuIHRoaXN9fWNvbnN0IEZmPW5ldyBTZXQoWzE2MCw1NzYwLDgxOTIsODE5Myw4MTk0LDgxOTUsODE5Niw4MTk3LDgxOTgsODE5OSw4MjAwLDgyMDEsODIwMiw4MjAzLDgyMzksODI4NywxMjI4OF0pLFRmPW5ldyBTZXQoWzE3Myw4NDcsNjE1MCw2MTU1LDYxNTYsNjE1Nyw4MjAzLDgyMDQsODIwNSw4Mjg4LDY1MDI0LDY1MDI1LDY1MDI2LDY1MDI3LDY1MDI4LDY1MDI5LDY1MDMwLDY1MDMxLDY1MDMyLDY1MDMzLDY1MDM0LDY1MDM1LDY1MDM2LDY1MDM3LDY1MDM4LDY1MDM5LDY1Mjc5XSk7Y2xhc3MgQVJDRm91ckNpcGhlcnthPTA7Yj0wO2NvbnN0cnVjdG9yKGUpe2NvbnN0IHQ9VWludDhBcnJheS5mcm9tKHtsZW5ndGg6MjU2fSwoZSx0KT0+dCksYT1lLmxlbmd0aDtmb3IobGV0IG49MCxzPTA7bjwyNTY7KytuKXtjb25zdCByPXRbbl07cz1zK3IrZVtuJWFdJjI1NTt0W25dPXRbc107dFtzXT1yfXRoaXMucz10fWVuY3J5cHRCbG9jayhlKXtsZXQgdD10aGlzLmEsYT10aGlzLmI7Y29uc3Qgbj10aGlzLnMscz1lLmxlbmd0aCxyPW5ldyBVaW50OEFycmF5KHMpO2ZvcihsZXQgaT0wO2k8czsrK2kpe3Q9dCsxJjI1NTtjb25zdCBzPW5bdF07YT1hK3MmMjU1O2NvbnN0IG89blthXTtuW3RdPW87blthXT1zO3JbaV09ZVtpXV5uW3MrbyYyNTVdfXRoaXMuYT10O3RoaXMuYj1hO3JldHVybiByfWRlY3J5cHRCbG9jayhlKXtyZXR1cm4gdGhpcy5lbmNyeXB0QmxvY2soZSl9ZW5jcnlwdChlKXtyZXR1cm4gdGhpcy5lbmNyeXB0QmxvY2soZSl9fWNsYXNzIE51bGxDaXBoZXJ7ZGVjcnlwdEJsb2NrKGUpe3JldHVybiBlfWVuY3J5cHQoZSl7cmV0dXJuIGV9fWNsYXNzIEFFU0Jhc2VDaXBoZXJ7X3M9bmV3IFVpbnQ4QXJyYXkoWzk5LDEyNCwxMTksMTIzLDI0MiwxMDcsMTExLDE5Nyw0OCwxLDEwMyw0MywyNTQsMjE1LDE3MSwxMTgsMjAyLDEzMCwyMDEsMTI1LDI1MCw4OSw3MSwyNDAsMTczLDIxMiwxNjIsMTc1LDE1NiwxNjQsMTE0LDE5MiwxODMsMjUzLDE0NywzOCw1NCw2MywyNDcsMjA0LDUyLDE2NSwyMjksMjQxLDExMywyMTYsNDksMjEsNCwxOTksMzUsMTk1LDI0LDE1MCw1LDE1NCw3LDE4LDEyOCwyMjYsMjM1LDM5LDE3OCwxMTcsOSwxMzEsNDQsMjYsMjcsMTEwLDkwLDE2MCw4Miw1OSwyMTQsMTc5LDQxLDIyNyw0NywxMzIsODMsMjA5LDAsMjM3LDMyLDI1MiwxNzcsOTEsMTA2LDIwMywxOTAsNTcsNzQsNzYsODgsMjA3LDIwOCwyMzksMTcwLDI1MSw2Nyw3Nyw1MSwxMzMsNjksMjQ5LDIsMTI3LDgwLDYwLDE1OSwxNjgsODEsMTYzLDY0LDE0MywxNDYsMTU3LDU2LDI0NSwxODgsMTgyLDIxOCwzMywxNiwyNTUsMjQzLDIxMCwyMDUsMTIsMTksMjM2LDk1LDE1MSw2OCwyMywxOTYsMTY3LDEyNiw2MSwxMDAsOTMsMjUsMTE1LDk2LDEyOSw3OSwyMjAsMzQsNDIsMTQ0LDEzNiw3MCwyMzgsMTg0LDIwLDIyMiw5NCwxMSwyMTksMjI0LDUwLDU4LDEwLDczLDYsMzYsOTIsMTk0LDIxMSwxNzIsOTgsMTQ1LDE0OSwyMjgsMTIxLDIzMSwyMDAsNTUsMTA5LDE0MSwyMTMsNzgsMTY5LDEwOCw4NiwyNDQsMjM0LDEwMSwxMjIsMTc0LDgsMTg2LDEyMCwzNyw0NiwyOCwxNjYsMTgwLDE5OCwyMzIsMjIxLDExNiwzMSw3NSwxODksMTM5LDEzOCwxMTIsNjIsMTgxLDEwMiw3MiwzLDI0NiwxNCw5Nyw1Myw4NywxODUsMTM0LDE5MywyOSwxNTgsMjI1LDI0OCwxNTIsMTcsMTA1LDIxNywxNDIsMTQ4LDE1NSwzMCwxMzUsMjMzLDIwNiw4NSw0MCwyMjMsMTQwLDE2MSwxMzcsMTMsMTkxLDIzMCw2NiwxMDQsNjUsMTUzLDQ1LDE1LDE3Niw4NCwxODcsMjJdKTtfaW52X3M9bmV3IFVpbnQ4QXJyYXkoWzgyLDksMTA2LDIxMyw0OCw1NCwxNjUsNTYsMTkxLDY0LDE2MywxNTgsMTI5LDI0MywyMTUsMjUxLDEyNCwyMjcsNTcsMTMwLDE1NSw0NywyNTUsMTM1LDUyLDE0Miw2Nyw2OCwxOTYsMjIyLDIzMywyMDMsODQsMTIzLDE0OCw1MCwxNjYsMTk0LDM1LDYxLDIzOCw3NiwxNDksMTEsNjYsMjUwLDE5NSw3OCw4LDQ2LDE2MSwxMDIsNDAsMjE3LDM2LDE3OCwxMTgsOTEsMTYyLDczLDEwOSwxMzksMjA5LDM3LDExNCwyNDgsMjQ2LDEwMCwxMzQsMTA0LDE1MiwyMiwyMTIsMTY0LDkyLDIwNCw5MywxMDEsMTgyLDE0NiwxMDgsMTEyLDcyLDgwLDI1MywyMzcsMTg1LDIxOCw5NCwyMSw3MCw4NywxNjcsMTQxLDE1NywxMzIsMTQ0LDIxNiwxNzEsMCwxNDAsMTg4LDIxMSwxMCwyNDcsMjI4LDg4LDUsMTg0LDE3OSw2OSw2LDIwOCw0NCwzMCwxNDMsMjAyLDYzLDE1LDIsMTkzLDE3NSwxODksMywxLDE5LDEzOCwxMDcsNTgsMTQ1LDE3LDY1LDc5LDEwMywyMjAsMjM0LDE1MSwyNDIsMjA3LDIwNiwyNDAsMTgwLDIzMCwxMTUsMTUwLDE3MiwxMTYsMzQsMjMxLDE3Myw1MywxMzMsMjI2LDI0OSw1NSwyMzIsMjgsMTE3LDIyMywxMTAsNzEsMjQxLDI2LDExMywyOSw0MSwxOTcsMTM3LDExMSwxODMsOTgsMTQsMTcwLDI0LDE5MCwyNywyNTIsODYsNjIsNzUsMTk4LDIxMCwxMjEsMzIsMTU0LDIxOSwxOTIsMjU0LDEyMCwyMDUsOTAsMjQ0LDMxLDIyMSwxNjgsNTEsMTM2LDcsMTk5LDQ5LDE3NywxOCwxNiw4OSwzOSwxMjgsMjM2LDk1LDk2LDgxLDEyNywxNjksMjUsMTgxLDc0LDEzLDQ1LDIyOSwxMjIsMTU5LDE0NywyMDEsMTU2LDIzOSwxNjAsMjI0LDU5LDc3LDE3NCw0MiwyNDUsMTc2LDIwMCwyMzUsMTg3LDYwLDEzMSw4MywxNTMsOTcsMjMsNDMsNCwxMjYsMTg2LDExOSwyMTQsMzgsMjI1LDEwNSwyMCw5OSw4NSwzMywxMiwxMjVdKTtfbWl4PW5ldyBVaW50MzJBcnJheShbMCwyMzU0NzQxODcsNDcwOTQ4Mzc0LDMwMzc2NTI3Nyw5NDE4OTY3NDgsOTA4OTMzNDE1LDYwNzUzMDU1NCw3MDg3ODA4NDksMTg4Mzc5MzQ5NiwyMTE4MjE0OTk1LDE4MTc4NjY4MzAsMTY0OTYzOTIzNywxMjE1MDYxMTA4LDExODEwNDUxMTksMTQxNzU2MTY5OCwxNTE3NzY3NTI5LDM3Njc1ODY5OTIsNDAwMzA2MTE3OSw0MjM2NDI5OTkwLDQwNjkyNDY4OTMsMzYzNTczMzY2MCwzNjAyNzcwMzI3LDMyOTkyNzg0NzQsMzQwMDUyODc2OSwyNDMwMTIyMjE2LDI2NjQ1NDM3MTUsMjM2MjA5MDIzOCwyMTkzODYyNjQ1LDI4MzUxMjMzOTYsMjgwMTEwNzQwNywzMDM1NTM1MDU4LDMxMzU3NDA4ODksMzY3ODEyNDkyMywzNTc2ODcwNTEyLDMzNDEzOTQyODUsMzM3NDM2MTcwMiwzODEwNDk2MzQzLDM5Nzc2NzUzNTYsNDI3OTA4MDI1Nyw0MDQzNjEwMTg2LDI4NzY0OTQ2MjcsMjc3NjI5MjkwNCwzMDc2NjM5MDI5LDMxMTA2NTA5NDIsMjQ3MjAxMTUzNSwyNjQwMjQzMjA0LDI0MDM3Mjg2NjUsMjE2OTMwMzA1OCwxMDAxMDg5OTk1LDg5OTgzNTU4NCw2NjY0NjQ3MzMsNjk5NDMyMTUwLDU5NzI3ODQ3LDIyNjkwNjg2MCw1MzA0MDA3NTMsMjk0OTMwNjgyLDEyNzMxNjg3ODcsMTE3Mjk2NzA2NCwxNDc1NDE4NTAxLDE1MDk0MzA0MTQsMTk0MjQzNTc3NSwyMTEwNjY3NDQ0LDE4NzYyNDE4MzMsMTY0MTgxNjIyNiwyOTEwMjE5NzY2LDI3NDMwMzQxMDksMjk3NjE1MTUyMCwzMjExNjIzMTQ3LDI1MDUyMDIxMzgsMjYwNjQ1Mzk2OSwyMzAyNjkwMjUyLDIyNjk3Mjg0NTUsMzcxMTgyOTQyMiwzNTQzNTk5MjY5LDMyNDA4OTQzOTIsMzQ3NTMxMzMzMSwzODQzNjk5MDc0LDM5NDM5MDY0NDEsNDE3ODA2MjIyOCw0MTQ0MDQ3Nzc1LDEzMDY5NjczNjYsMTEzOTc4MTcwOSwxMzc0OTg4MTEyLDE2MTA0NTk3MzksMTk3NTY4MzQzNCwyMDc2OTM1MjY1LDE3NzUyNzY5MjQsMTc0MjMxNTEyNywxMDM0ODY3OTk4LDg2NjYzNzg0NSw1NjYwMjE4OTYsODAwNDQwODM1LDkyOTg3Njk4LDE5MzE5NTA2NSw0Mjk0NTYxNjQsMzk1NDQxNzExLDE5ODQ4MTI2ODUsMjAxNzc3ODU2NiwxNzg0NjYzMTk1LDE2ODM0MDcyNDgsMTMxNTU2MjE0NSwxMDgwMDk0NjM0LDEzODM4NTYzMTEsMTU1MTAzNzg4NCwxMDEwMzk4MjksMTM1MDUwMjA2LDQzNzc1NzEyMywzMzc1NTM4NjQsMTA0MjM4NTY1Nyw4MDc5NjI2MTAsNTczODA0NzgzLDc0MjAzOTAxMiwyNTMxMDY3NDUzLDI1NjQwMzMzMzQsMjMyODgyODk3MSwyMjI3NTczMDI0LDI5MzU1NjY4NjUsMjcwMDA5OTM1NCwzMDAxNzU1NjU1LDMxNjg5MzcyMjgsMzg2ODU1MjgwNSwzOTAyNTYzMTgyLDQyMDMxODExNzEsNDEwMjk3NzkxMiwzNzM2MTY0OTM3LDM1MDE3NDE4OTAsMzI2NTQ3ODc1MSwzNDMzNzEyOTgwLDExMDYwNDE1OTEsMTM0MDQ2MzEwMCwxNTc2OTc2NjA5LDE0MDg3NDkwMzQsMjA0MzIxMTQ4MywyMDA5MTk1NDcyLDE3MDg4NDgzMzMsMTgwOTA1NDE1MCw4MzI4NzcyMzEsMTA2ODM1MTM5Niw3NjY5NDU0NjUsNTk5NzYyMzU0LDE1OTQxNzk4NywxMjY0NTQ2NjQsMzYxOTI5ODc3LDQ2MzE4MDE5MCwyNzA5MjYwODcxLDI5NDM2ODIzODAsMzE3ODEwNjk2MSwzMDA5ODc5Mzg2LDI1NzI2OTcxOTUsMjUzODY4MTE4NCwyMjM2MjI4NzMzLDIzMzY0MzQ1NTAsMzUwOTg3MTEzNSwzNzQ1MzQ1MzAwLDM0NDE4NTAzNzcsMzI3NDY2NzI2NiwzOTEwMTYxOTcxLDM4NzcxOTg2NDgsNDExMDU2ODQ4NSw0MjExODE4Nzk4LDI1OTc4MDY0NzYsMjQ5NzYwNDc0MywyMjYxMDg5MTc4LDIyOTUxMDEwNzMsMjczMzg1NjE2MCwyOTAyMDg3ODUxLDMyMDI0MzcwNDYsMjk2ODAxMTQ1MywzOTM2MjkxMjg0LDM4MzUwMzY4OTUsNDEzNjQ0MDc3MCw0MTY5NDA4MjAxLDM1MzU0ODY0NTYsMzcwMjY2NTQ1OSwzNDY3MTkyMzAyLDMyMzE3MjIyMTMsMjA1MTUxODc4MCwxOTUxMzE3MDQ3LDE3MTY4OTA0MTAsMTc1MDkwMjMwNSwxMTEzODE4Mzg0LDEyODIwNTAwNzUsMTU4NDUwNDU4MiwxMzUwMDc4OTg5LDE2ODgxMDg1Miw2NzU1NjQ2MywzNzEwNDkzMzAsNDA0MDE2NzYxLDg0MTczOTU5MiwxMDA4OTE4NTk1LDc3NTU1MDgxNCw1NDAwODA3MjUsMzk2OTU2MjM2OSwzODAxMzMyMjM0LDQwMzU0ODkwNDcsNDI2OTkwNzk5NiwzNTY5MjU1MjEzLDM2Njk0NjI1NjYsMzM2Njc1NDYxOSwzMzMyNzQwMTQ0LDI2MzEwNjU0MzMsMjQ2Mzg3OTc2MiwyMTYwMTE3MDcxLDIzOTU1ODg2NzYsMjc2NzY0NTU1NywyODY4ODk3NDA2LDMxMDIwMTE3NDcsMzA2OTA0OTk2MCwyMDIwMDg0OTcsMzM3NzgzNjIsMjcwMDQwNDg3LDUwNDQ1OTQzNiw4NzU0NTEyOTMsOTc1NjU4NjQ2LDY3NTAzOTYyNyw2NDEwMjUxNTIsMjA4NDcwNDIzMywxOTE3NTE4NTYyLDE2MTU4NjEyNDcsMTg1MTMzMjg1MiwxMTQ3NTUwNjYxLDEyNDg4MDI1MTAsMTQ4NDAwNTg0MywxNDUxMDQ0MDU2LDkzMzMwMTM3MCw5NjczMTE3MjksNzMzMTU2OTcyLDYzMjk1MzcwMywyNjAzODg5NTAsMjU5NjU5MTcsMzI4NjcxODA4LDQ5NjkwNjA1OSwxMjA2NDc3ODU4LDEyMzk0NDM3NTMsMTU0MzIwODUwMCwxNDQxOTUyNTc1LDIxNDQxNjE4MDYsMTkwODY5NDI3NywxNjc1NTc3ODgwLDE4NDI3NTk0NDMsMzYxMDM2OTIyNiwzNjQ0Mzc5NTg1LDM0MDgxMTk1MTYsMzMwNzkxNjI0Nyw0MDExMTkwNTAyLDM3NzY3Njc0NjksNDA3NzM4NDQzMiw0MjQ1NjE4NjgzLDI4MDk3NzExNTQsMjg0MjczNzA0OSwzMTQ0Mzk2NDIwLDMwNDMxNDA0OTUsMjY3MzcwNTE1MCwyNDM4MjM3NjIxLDIyMDMwMzIyMzIsMjM3MDIxMzc5NV0pO19taXhDb2w9VWludDhBcnJheS5mcm9tKHtsZW5ndGg6MjU2fSwoZSx0KT0+dDwxMjg/dDw8MTp0PDwxXjI3KTtjb25zdHJ1Y3Rvcigpe3RoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KDE2KTt0aGlzLmJ1ZmZlclBvc2l0aW9uPTB9X2V4cGFuZEtleShlKXt1bnJlYWNoYWJsZSgiQ2Fubm90IGNhbGwgYF9leHBhbmRLZXlgIG9uIHRoZSBiYXNlIGNsYXNzIil9X2RlY3J5cHQoZSx0KXtsZXQgYSxuLHM7Y29uc3Qgcj1uZXcgVWludDhBcnJheSgxNik7ci5zZXQoZSk7Zm9yKGxldCBlPTAsYT10aGlzLl9rZXlTaXplO2U8MTY7KytlLCsrYSlyW2VdXj10W2FdO2ZvcihsZXQgZT10aGlzLl9jeWNsZXNPZlJlcGV0aXRpb24tMTtlPj0xOy0tZSl7YT1yWzEzXTtyWzEzXT1yWzldO3JbOV09cls1XTtyWzVdPXJbMV07clsxXT1hO2E9clsxNF07bj1yWzEwXTtyWzE0XT1yWzZdO3JbMTBdPXJbMl07cls2XT1hO3JbMl09bjthPXJbMTVdO249clsxMV07cz1yWzddO3JbMTVdPXJbM107clsxMV09YTtyWzddPW47clszXT1zO2ZvcihsZXQgZT0wO2U8MTY7KytlKXJbZV09dGhpcy5faW52X3NbcltlXV07Zm9yKGxldCBhPTAsbj0xNiplO2E8MTY7KythLCsrbilyW2FdXj10W25dO2ZvcihsZXQgZT0wO2U8MTY7ZSs9NCl7Y29uc3QgdD10aGlzLl9taXhbcltlXV0sbj10aGlzLl9taXhbcltlKzFdXSxzPXRoaXMuX21peFtyW2UrMl1dLGk9dGhpcy5fbWl4W3JbZSszXV07YT10Xm4+Pj44Xm48PDI0XnM+Pj4xNl5zPDwxNl5pPj4+MjReaTw8ODtyW2VdPWE+Pj4yNCYyNTU7cltlKzFdPWE+PjE2JjI1NTtyW2UrMl09YT4+OCYyNTU7cltlKzNdPTI1NSZhfX1hPXJbMTNdO3JbMTNdPXJbOV07cls5XT1yWzVdO3JbNV09clsxXTtyWzFdPWE7YT1yWzE0XTtuPXJbMTBdO3JbMTRdPXJbNl07clsxMF09clsyXTtyWzZdPWE7clsyXT1uO2E9clsxNV07bj1yWzExXTtzPXJbN107clsxNV09clszXTtyWzExXT1hO3JbN109bjtyWzNdPXM7Zm9yKGxldCBlPTA7ZTwxNjsrK2Upe3JbZV09dGhpcy5faW52X3NbcltlXV07cltlXV49dFtlXX1yZXR1cm4gcn1fZW5jcnlwdChlLHQpe2NvbnN0IGE9dGhpcy5fcztsZXQgbixzLHI7Y29uc3QgaT1uZXcgVWludDhBcnJheSgxNik7aS5zZXQoZSk7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpaVtlXV49dFtlXTtmb3IobGV0IGU9MTtlPHRoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbjtlKyspe2ZvcihsZXQgZT0wO2U8MTY7KytlKWlbZV09YVtpW2VdXTtyPWlbMV07aVsxXT1pWzVdO2lbNV09aVs5XTtpWzldPWlbMTNdO2lbMTNdPXI7cj1pWzJdO3M9aVs2XTtpWzJdPWlbMTBdO2lbNl09aVsxNF07aVsxMF09cjtpWzE0XT1zO3I9aVszXTtzPWlbN107bj1pWzExXTtpWzNdPWlbMTVdO2lbN109cjtpWzExXT1zO2lbMTVdPW47Zm9yKGxldCBlPTA7ZTwxNjtlKz00KXtjb25zdCB0PWlbZV0sYT1pW2UrMV0scz1pW2UrMl0scj1pW2UrM107bj10XmFec15yO2lbZV1ePW5edGhpcy5fbWl4Q29sW3ReYV07aVtlKzFdXj1uXnRoaXMuX21peENvbFthXnNdO2lbZSsyXV49bl50aGlzLl9taXhDb2xbc15yXTtpW2UrM11ePW5edGhpcy5fbWl4Q29sW3JedF19Zm9yKGxldCBhPTAsbj0xNiplO2E8MTY7KythLCsrbilpW2FdXj10W25dfWZvcihsZXQgZT0wO2U8MTY7KytlKWlbZV09YVtpW2VdXTtyPWlbMV07aVsxXT1pWzVdO2lbNV09aVs5XTtpWzldPWlbMTNdO2lbMTNdPXI7cj1pWzJdO3M9aVs2XTtpWzJdPWlbMTBdO2lbNl09aVsxNF07aVsxMF09cjtpWzE0XT1zO3I9aVszXTtzPWlbN107bj1pWzExXTtpWzNdPWlbMTVdO2lbN109cjtpWzExXT1zO2lbMTVdPW47Zm9yKGxldCBlPTAsYT10aGlzLl9rZXlTaXplO2U8MTY7KytlLCsrYSlpW2VdXj10W2FdO3JldHVybiBpfV9kZWNyeXB0QmxvY2syKGUsdCl7Y29uc3QgYT1lLmxlbmd0aDtsZXQgbj10aGlzLmJ1ZmZlcixzPXRoaXMuYnVmZmVyUG9zaXRpb247Y29uc3Qgcj1bXTtsZXQgaT10aGlzLml2O2ZvcihsZXQgdD0wO3Q8YTsrK3Qpe25bc109ZVt0XTsrK3M7aWYoczwxNiljb250aW51ZTtjb25zdCBhPXRoaXMuX2RlY3J5cHQobix0aGlzLl9rZXkpO2ZvcihsZXQgZT0wO2U8MTY7KytlKWFbZV1ePWlbZV07aT1uO3IucHVzaChhKTtuPW5ldyBVaW50OEFycmF5KDE2KTtzPTB9dGhpcy5idWZmZXI9bjt0aGlzLmJ1ZmZlckxlbmd0aD1zO3RoaXMuaXY9aTtpZigwPT09ci5sZW5ndGgpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2xldCBvPTE2KnIubGVuZ3RoO2lmKHQpe2NvbnN0IGU9ci5hdCgtMSk7bGV0IHQ9ZVsxNV07aWYodDw9MTYpe2ZvcihsZXQgYT0xNSxuPTE2LXQ7YT49bjstLWEpaWYoZVthXSE9PXQpe3Q9MDticmVha31vLT10O3Jbci5sZW5ndGgtMV09ZS5zdWJhcnJheSgwLDE2LXQpfX1jb25zdCBsPW5ldyBVaW50OEFycmF5KG8pO2ZvcihsZXQgZT0wLHQ9MCxhPXIubGVuZ3RoO2U8YTsrK2UsdCs9MTYpbC5zZXQocltlXSx0KTtyZXR1cm4gbH1kZWNyeXB0QmxvY2soZSx0LGE9bnVsbCl7Y29uc3Qgbj1lLmxlbmd0aCxzPXRoaXMuYnVmZmVyO2xldCByPXRoaXMuYnVmZmVyUG9zaXRpb247aWYoYSl0aGlzLml2PWE7ZWxzZXtmb3IobGV0IHQ9MDtyPDE2JiZ0PG47Kyt0LCsrcilzW3JdPWVbdF07aWYocjwxNil7dGhpcy5idWZmZXJMZW5ndGg9cjtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCl9dGhpcy5pdj1zO2U9ZS5zdWJhcnJheSgxNil9dGhpcy5idWZmZXI9bmV3IFVpbnQ4QXJyYXkoMTYpO3RoaXMuYnVmZmVyTGVuZ3RoPTA7dGhpcy5kZWNyeXB0QmxvY2s9dGhpcy5fZGVjcnlwdEJsb2NrMjtyZXR1cm4gdGhpcy5kZWNyeXB0QmxvY2soZSx0KX1lbmNyeXB0KGUsdCl7Y29uc3QgYT1lLmxlbmd0aDtsZXQgbj10aGlzLmJ1ZmZlcixzPXRoaXMuYnVmZmVyUG9zaXRpb247Y29uc3Qgcj1bXTt0fHw9bmV3IFVpbnQ4QXJyYXkoMTYpO2ZvcihsZXQgaT0wO2k8YTsrK2kpe25bc109ZVtpXTsrK3M7aWYoczwxNiljb250aW51ZTtmb3IobGV0IGU9MDtlPDE2OysrZSluW2VdXj10W2VdO2NvbnN0IGE9dGhpcy5fZW5jcnlwdChuLHRoaXMuX2tleSk7dD1hO3IucHVzaChhKTtuPW5ldyBVaW50OEFycmF5KDE2KTtzPTB9dGhpcy5idWZmZXI9bjt0aGlzLmJ1ZmZlckxlbmd0aD1zO3RoaXMuaXY9dDtpZigwPT09ci5sZW5ndGgpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2NvbnN0IGk9MTYqci5sZW5ndGgsbz1uZXcgVWludDhBcnJheShpKTtmb3IobGV0IGU9MCx0PTAsYT1yLmxlbmd0aDtlPGE7KytlLHQrPTE2KW8uc2V0KHJbZV0sdCk7cmV0dXJuIG99fWNsYXNzIEFFUzEyOENpcGhlciBleHRlbmRzIEFFU0Jhc2VDaXBoZXJ7X3Jjb249bmV3IFVpbnQ4QXJyYXkoWzE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDFdKTtjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbj0xMDt0aGlzLl9rZXlTaXplPTE2MDt0aGlzLl9rZXk9dGhpcy5fZXhwYW5kS2V5KGUpfV9leHBhbmRLZXkoZSl7Y29uc3QgdD10aGlzLl9zLGE9dGhpcy5fcmNvbixuPW5ldyBVaW50OEFycmF5KDE3Nik7bi5zZXQoZSk7Zm9yKGxldCBlPTE2LHM9MTtlPDE3NjsrK3Mpe2xldCByPW5bZS0zXSxpPW5bZS0yXSxvPW5bZS0xXSxsPW5bZS00XTtyPXRbcl07aT10W2ldO289dFtvXTtsPXRbbF07cl49YVtzXTtmb3IobGV0IHQ9MDt0PDQ7Kyt0KXtuW2VdPXJePW5bZS0xNl07ZSsrO25bZV09aV49bltlLTE2XTtlKys7bltlXT1vXj1uW2UtMTZdO2UrKztuW2VdPWxePW5bZS0xNl07ZSsrfX1yZXR1cm4gbn19Y2xhc3MgQUVTMjU2Q2lwaGVyIGV4dGVuZHMgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbj0xNDt0aGlzLl9rZXlTaXplPTIyNDt0aGlzLl9rZXk9dGhpcy5fZXhwYW5kS2V5KGUpfV9leHBhbmRLZXkoZSl7Y29uc3QgdD10aGlzLl9zLGE9bmV3IFVpbnQ4QXJyYXkoMjQwKTthLnNldChlKTtsZXQgbixzLHIsaSxvPTE7Zm9yKGxldCBlPTMyLGw9MTtlPDI0MDsrK2wpe2lmKGUlMzI9PTE2KXtuPXRbbl07cz10W3NdO3I9dFtyXTtpPXRbaV19ZWxzZSBpZihlJTMyPT0wKXtuPWFbZS0zXTtzPWFbZS0yXTtyPWFbZS0xXTtpPWFbZS00XTtuPXRbbl07cz10W3NdO3I9dFtyXTtpPXRbaV07bl49bzsobzw8PTEpPj0yNTYmJihvPTI1NSYoMjdebykpfWZvcihsZXQgdD0wO3Q8NDsrK3Qpe2FbZV09bl49YVtlLTMyXTtlKys7YVtlXT1zXj1hW2UtMzJdO2UrKzthW2VdPXJePWFbZS0zMl07ZSsrO2FbZV09aV49YVtlLTMyXTtlKyt9fXJldHVybiBhfX1jbGFzcyBQREZCYXNle19oYXNoKGUsdCxhKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBfaGFzaGAgY2FsbGVkIil9Y2hlY2tPd25lclBhc3N3b3JkKGUsdCxhLG4pe2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO3Muc2V0KGUsMCk7cy5zZXQodCxlLmxlbmd0aCk7cy5zZXQoYSxlLmxlbmd0aCt0Lmxlbmd0aCk7cmV0dXJuIGlzQXJyYXlFcXVhbCh0aGlzLl9oYXNoKGUscyxhKSxuKX1jaGVja1VzZXJQYXNzd29yZChlLHQsYSl7Y29uc3Qgbj1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTtuLnNldChlLDApO24uc2V0KHQsZS5sZW5ndGgpO3JldHVybiBpc0FycmF5RXF1YWwodGhpcy5faGFzaChlLG4sW10pLGEpfWdldE93bmVyS2V5KGUsdCxhLG4pe2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO3Muc2V0KGUsMCk7cy5zZXQodCxlLmxlbmd0aCk7cy5zZXQoYSxlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3Qgcj10aGlzLl9oYXNoKGUscyxhKTtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihyKS5kZWNyeXB0QmxvY2sobiwhMSxuZXcgVWludDhBcnJheSgxNikpfWdldFVzZXJLZXkoZSx0LGEpe2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrOCk7bi5zZXQoZSwwKTtuLnNldCh0LGUubGVuZ3RoKTtjb25zdCBzPXRoaXMuX2hhc2goZSxuLFtdKTtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihzKS5kZWNyeXB0QmxvY2soYSwhMSxuZXcgVWludDhBcnJheSgxNikpfX1jbGFzcyBQREYxNyBleHRlbmRzIFBERkJhc2V7X2hhc2goZSx0LGEpe3JldHVybiBjYWxjdWxhdGVTSEEyNTYodCwwLHQubGVuZ3RoKX19Y2xhc3MgUERGMjAgZXh0ZW5kcyBQREZCYXNle19oYXNoKGUsdCxhKXtsZXQgbj1jYWxjdWxhdGVTSEEyNTYodCwwLHQubGVuZ3RoKS5zdWJhcnJheSgwLDMyKSxzPVswXSxyPTA7Zm9yKDtyPDY0fHxzLmF0KC0xKT5yLTMyOyl7Y29uc3QgdD1lLmxlbmd0aCtuLmxlbmd0aCthLmxlbmd0aCxpPW5ldyBVaW50OEFycmF5KHQpO2xldCBvPTA7aS5zZXQoZSxvKTtvKz1lLmxlbmd0aDtpLnNldChuLG8pO28rPW4ubGVuZ3RoO2kuc2V0KGEsbyk7Y29uc3QgbD1uZXcgVWludDhBcnJheSg2NCp0KTtmb3IobGV0IGU9MCxhPTA7ZTw2NDtlKyssYSs9dClsLnNldChpLGEpO3M9bmV3IEFFUzEyOENpcGhlcihuLnN1YmFycmF5KDAsMTYpKS5lbmNyeXB0KGwsbi5zdWJhcnJheSgxNiwzMikpO2NvbnN0IGY9TWF0aC5zdW1QcmVjaXNlKHMuc2xpY2UoMCwxNikpJTM7MD09PWY/bj1jYWxjdWxhdGVTSEEyNTYocywwLHMubGVuZ3RoKToxPT09Zj9uPWNhbGN1bGF0ZVNIQTM4NChzLDAscy5sZW5ndGgpOjI9PT1mJiYobj1jYWxjdWxhdGVTSEE1MTIocywwLHMubGVuZ3RoKSk7cisrfXJldHVybiBuLnN1YmFycmF5KDAsMzIpfX1jbGFzcyBDaXBoZXJUcmFuc2Zvcm17I29hPW5ldyBNYXA7ZW1iZWRkZWRGaWx0ZXJOYW1lPW51bGw7Y29uc3RydWN0b3IoZSx0PW51bGwsYT1udWxsKXt0aGlzLnJlc29sdmVDaXBoZXI9ZTt0aGlzLnN0cmVhbUZpbHRlck5hbWU9YTt0aGlzLnN0cmluZ0ZpbHRlck5hbWU9dH0jbGEoZT1udWxsKXtjb25zdCB0PWUgaW5zdGFuY2VvZiBOYW1lP2UubmFtZToiX19kZWZhdWx0X18iO3JldHVybiB0aGlzLiNvYS5nZXRPckluc2VydENvbXB1dGVkKHQsKCk9PnRoaXMucmVzb2x2ZUNpcGhlcihlKSl9Y3JlYXRlU3RyZWFtKGUsdCxhPW51bGwpe2NvbnN0IG49dGhpcy5lbWJlZGRlZEZpbHRlck5hbWUmJmlzRGljdChlLmRpY3QsIkVtYmVkZGVkRmlsZSIpP3RoaXMuZW1iZWRkZWRGaWx0ZXJOYW1lOnRoaXMuc3RyZWFtRmlsdGVyTmFtZSxzPW5ldyh0aGlzLiNsYShhfHxuKSk7cmV0dXJuIG5ldyBEZWNyeXB0U3RyZWFtKGUsdCxmdW5jdGlvbiBjaXBoZXJUcmFuc2Zvcm1EZWNyeXB0U3RyZWFtKGUsdCl7cmV0dXJuIHMuZGVjcnlwdEJsb2NrKGUsdCl9KX1kZWNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3KHRoaXMuI2xhKHRoaXMuc3RyaW5nRmlsdGVyTmFtZSkpO2xldCBhPXN0cmluZ1RvQnl0ZXMoZSk7YT10LmRlY3J5cHRCbG9jayhhLCEwKTtyZXR1cm4gYnl0ZXNUb1N0cmluZyhhKX1lbmNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3KHRoaXMuI2xhKHRoaXMuc3RyaW5nRmlsdGVyTmFtZSkpO2lmKHQgaW5zdGFuY2VvZiBBRVNCYXNlQ2lwaGVyKXtjb25zdCBhPTE2LWUubGVuZ3RoJTE2O2UrPVN0cmluZy5mcm9tQ2hhckNvZGUoYSkucmVwZWF0KGEpO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoMTYpO2NyeXB0by5nZXRSYW5kb21WYWx1ZXMobik7bGV0IHM9c3RyaW5nVG9CeXRlcyhlKTtzPXQuZW5jcnlwdChzLG4pO2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoMTYrcy5sZW5ndGgpO3Iuc2V0KG4pO3Iuc2V0KHMsMTYpO3JldHVybiBieXRlc1RvU3RyaW5nKHIpfWxldCBhPXN0cmluZ1RvQnl0ZXMoZSk7YT10LmVuY3J5cHQoYSk7cmV0dXJuIGJ5dGVzVG9TdHJpbmcoYSl9fWZ1bmN0aW9uIHV0ZjhQYXNzd29yZFRvQnl0ZXMoZSl7dHJ5e2U9dXRmOFN0cmluZ1RvU3RyaW5nKGUpfWNhdGNoe3dhcm4oIkNpcGhlclRyYW5zZm9ybUZhY3Rvcnk6IFVuYWJsZSB0byBjb252ZXJ0IFVURjggZW5jb2RlZCBwYXNzd29yZC4iKX1yZXR1cm4gc3RyaW5nVG9CeXRlcyhlKX1jbGFzcyBDaXBoZXJUcmFuc2Zvcm1GYWN0b3J5eyNmYTtzdGF0aWMgZ2V0IF9kZWZhdWx0UGFzc3dvcmRCeXRlcygpe3JldHVybiBzaGFkb3codGhpcywiX2RlZmF1bHRQYXNzd29yZEJ5dGVzIixuZXcgVWludDhBcnJheShbNDAsMTkxLDc4LDk0LDc4LDExNywxMzgsNjUsMTAwLDAsNzgsODYsMjU1LDI1MCwxLDgsNDYsNDYsMCwxODIsMjA4LDEwNCw2MiwxMjgsNDcsMTIsMTY5LDI1NCwxMDAsODMsMTA1LDEyMl0pKX0jY2EoZSx0LGEsbixzLHIsaSxvLGwsZixjLGgpe2lmKHQpe2NvbnN0IGU9TWF0aC5taW4oMTI3LHQubGVuZ3RoKTt0PXQuc3ViYXJyYXkoMCxlKX1lbHNlIHQ9W107Y29uc3QgdT02PT09ZT9uZXcgUERGMjA6bmV3IFBERjE3O3JldHVybiB1LmNoZWNrVXNlclBhc3N3b3JkKHQsbyxpKT91LmdldFVzZXJLZXkodCxsLGMpOnQubGVuZ3RoJiZ1LmNoZWNrT3duZXJQYXNzd29yZCh0LG4scixhKT91LmdldE93bmVyS2V5KHQscyxyLGYpOm51bGx9I2hhKGUsdCxhLG4scyxyLGksbyl7Y29uc3QgbD00MCthLmxlbmd0aCtlLmxlbmd0aCxmPW5ldyBVaW50OEFycmF5KGwpO2xldCBjLGgsdT0wO2lmKHQpe2g9TWF0aC5taW4oMzIsdC5sZW5ndGgpO2Zvcig7dTxoOysrdSlmW3VdPXRbdV19Yz0wO2Zvcig7dTwzMjspZlt1KytdPUNpcGhlclRyYW5zZm9ybUZhY3RvcnkuX2RlZmF1bHRQYXNzd29yZEJ5dGVzW2MrK107Zi5zZXQoYSx1KTt1Kz1hLmxlbmd0aDtmW3UrK109MjU1JnM7Zlt1KytdPXM+PjgmMjU1O2ZbdSsrXT1zPj4xNiYyNTU7Zlt1KytdPXM+Pj4yNCYyNTU7Zi5zZXQoZSx1KTt1Kz1lLmxlbmd0aDtpZihyPj00JiYhbyl7Zi5maWxsKDI1NSx1LHUrNCk7dSs9NH1sZXQgbT1jYWxjdWxhdGVNRDUoZiwwLHUpO2NvbnN0IHA9aT4+MztpZihyPj0zKWZvcihjPTA7Yzw1MDsrK2MpbT1jYWxjdWxhdGVNRDUobSwwLHApO2NvbnN0IGQ9bS5zdWJhcnJheSgwLHApO2xldCBnLGI7aWYocj49Myl7dT0wO2Yuc2V0KENpcGhlclRyYW5zZm9ybUZhY3RvcnkuX2RlZmF1bHRQYXNzd29yZEJ5dGVzLHUpO3UrPTMyO2Yuc2V0KGUsdSk7dSs9ZS5sZW5ndGg7Zz1uZXcgQVJDRm91ckNpcGhlcihkKTtiPWcuZW5jcnlwdEJsb2NrKGNhbGN1bGF0ZU1ENShmLDAsdSkpO2g9ZC5sZW5ndGg7Y29uc3QgdD1uZXcgVWludDhBcnJheShoKTtmb3IoYz0xO2M8PTE5OysrYyl7Zm9yKGxldCBlPTA7ZTxoOysrZSl0W2VdPWRbZV1eYztnPW5ldyBBUkNGb3VyQ2lwaGVyKHQpO2I9Zy5lbmNyeXB0QmxvY2soYil9fWVsc2V7Zz1uZXcgQVJDRm91ckNpcGhlcihkKTtiPWcuZW5jcnlwdEJsb2NrKENpcGhlclRyYW5zZm9ybUZhY3RvcnkuX2RlZmF1bHRQYXNzd29yZEJ5dGVzKX1yZXR1cm4gYi5ldmVyeSgoZSx0KT0+blt0XT09PWUpP2Q6bnVsbH0jdWEoZSx0LGEsbil7Y29uc3Qgcz1uZXcgVWludDhBcnJheSgzMik7bGV0IHI9MDtjb25zdCBpPU1hdGgubWluKDMyLGUubGVuZ3RoKTtmb3IoO3I8aTsrK3Ipc1tyXT1lW3JdO2xldCBvPTA7Zm9yKDtyPDMyOylzW3IrK109Q2lwaGVyVHJhbnNmb3JtRmFjdG9yeS5fZGVmYXVsdFBhc3N3b3JkQnl0ZXNbbysrXTtsZXQgbD1jYWxjdWxhdGVNRDUocywwLHIpO2NvbnN0IGY9bj4+MztpZihhPj0zKWZvcihvPTA7bzw1MDsrK28pbD1jYWxjdWxhdGVNRDUobCwwLGwubGVuZ3RoKTtsZXQgYyxoO2lmKGE+PTMpe2g9dDtjb25zdCBlPW5ldyBVaW50OEFycmF5KGYpO2ZvcihvPTE5O28+PTA7by0tKXtmb3IobGV0IHQ9MDt0PGY7Kyt0KWVbdF09bFt0XV5vO2M9bmV3IEFSQ0ZvdXJDaXBoZXIoZSk7aD1jLmVuY3J5cHRCbG9jayhoKX19ZWxzZXtjPW5ldyBBUkNGb3VyQ2lwaGVyKGwuc3ViYXJyYXkoMCxmKSk7aD1jLmVuY3J5cHRCbG9jayh0KX1yZXR1cm4gaH0jbWEoZSx0LGEsbj0hMSl7Y29uc3Qgcz1hLmxlbmd0aCxyPW5ldyBVaW50OEFycmF5KHMrOSk7ci5zZXQoYSk7bGV0IGk9cztyW2krK109MjU1JmU7cltpKytdPWU+PjgmMjU1O3JbaSsrXT1lPj4xNiYyNTU7cltpKytdPTI1NSZ0O3JbaSsrXT10Pj44JjI1NTtpZihuKXtyW2krK109MTE1O3JbaSsrXT02NTtyW2krK109MTA4O3JbaSsrXT04NH1yZXR1cm4gY2FsY3VsYXRlTUQ1KHIsMCxpKS5zdWJhcnJheSgwLE1hdGgubWluKHMrNSwxNikpfWNvbnN0cnVjdG9yKGUsdCxhKXtjb25zdCBuPWUuZ2V0KCJGaWx0ZXIiKTtpZighaXNOYW1lKG4sIlN0YW5kYXJkIikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ1bmtub3duIGVuY3J5cHRpb24gbWV0aG9kIik7dGhpcy5maWx0ZXJOYW1lPW4ubmFtZTt0aGlzLmRpY3Q9ZTt0aGlzLiNmYT10O2NvbnN0IHM9ZS5nZXQoIlYiKTtpZighTnVtYmVyLmlzSW50ZWdlcihzKXx8MSE9PXMmJjIhPT1zJiY0IT09cyYmNSE9PXMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ1bnN1cHBvcnRlZCBlbmNyeXB0aW9uIGFsZ29yaXRobSIpO3RoaXMuYWxnb3JpdGhtPXM7bGV0IHI9ZS5nZXQoIkxlbmd0aCIpO2lmKCFyKWlmKHM8PTMpcj00MDtlbHNle2NvbnN0IHQ9ZS5nZXQoIkNGIiksYT1lLmdldCgiU3RtRiIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0JiZhIGluc3RhbmNlb2YgTmFtZSl7dC5zdXBwcmVzc0VuY3J5cHRpb249ITA7Y29uc3QgZT10LmdldChhLm5hbWUpO3I9ZT8uZ2V0KCJMZW5ndGgiKXx8MTI4O3I8NDAmJihyPDw9Myl9fWlmKCFOdW1iZXIuaXNJbnRlZ2VyKHIpfHxyPDQwfHxyJTghPTApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGtleSBsZW5ndGgiKTtsZXQgaT1udWxsLG89TmFtZS5nZXQoIklkZW50aXR5IiksbD1OYW1lLmdldCgiSWRlbnRpdHkiKSxmPW87aWYocz49NCl7aT1lLmdldCgiQ0YiKTtpIGluc3RhbmNlb2YgRGljdCYmKGkuc3VwcHJlc3NFbmNyeXB0aW9uPSEwKTtvPWUuZ2V0KCJTdG1GIil8fE5hbWUuZ2V0KCJJZGVudGl0eSIpO2w9ZS5nZXQoIlN0ckYiKXx8TmFtZS5nZXQoIklkZW50aXR5Iik7Zj1lLmdldCgiRUZGIil8fG99dGhpcy5jZj1pO3RoaXMuc3RtZj1vO3RoaXMuc3RyZj1sO3RoaXMuZWZmPWY7Y29uc3QgYz1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJPIikpLGg9c3RyaW5nVG9CeXRlcyhlLmdldCgiVSIpKSx1PWMuc3ViYXJyYXkoMCwzMiksbT1oLnN1YmFycmF5KDAsMzIpLHA9ZS5nZXQoIlAiKSxkPWUuZ2V0KCJSIiksZz0oND09PXN8fDU9PT1zKSYmITEhPT1lLmdldCgiRW5jcnlwdE1ldGFkYXRhIik7dGhpcy5lbmNyeXB0TWV0YWRhdGE9Zztjb25zdCBiPXN0cmluZ1RvQnl0ZXModCk7bGV0IHcsaixrO2lmKGEpaWYoNj09PWQpe2NvbnN0IGU9ZnVuY3Rpb24gc2FzbFByZXAoZSl7bGV0IHQ9IiI7Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT1hLmNvZGVQb2ludEF0KDApO0ZmLmhhcyhlKT90Kz0iICI6VGYuaGFzKGUpfHwodCs9YSl9cmV0dXJuIHQubm9ybWFsaXplKCJORktDIil9KGEpO3c9dXRmOFBhc3N3b3JkVG9CeXRlcyhlKTtlIT09YSYmKGo9dXRmOFBhc3N3b3JkVG9CeXRlcyhhKSl9ZWxzZSB3PTU9PT1zP3V0ZjhQYXNzd29yZFRvQnl0ZXMoYSk6c3RyaW5nVG9CeXRlcyhhKTtpZig1IT09cylrPXRoaXMuI2hhKGIsdyx1LG0scCxkLHIsZyk7ZWxzZXtjb25zdCB0PWMuc3ViYXJyYXkoMzIsNDApLGE9Yy5zdWJhcnJheSg0MCw0OCksbj1oLnN1YmFycmF5KDAsNDgpLHM9aC5zdWJhcnJheSgzMiw0MCkscj1oLnN1YmFycmF5KDQwLDQ4KSxpPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIk9FIikpLG89c3RyaW5nVG9CeXRlcyhlLmdldCgiVUUiKSksbD1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJQZXJtcyIpKTtmb3IoY29uc3QgZSBvZiBqP1t3LGpdOlt3XSl7az10aGlzLiNjYShkLGUsdSx0LGEsbixtLHMscixpLG8sbCk7aWYoaylicmVha319aWYoIWspe2lmKCFhKXtpZih0aGlzLmFsZ29yaXRobT49NCYmaXNOYW1lKHRoaXMuc3RtZiwiSWRlbnRpdHkiKSYmaXNOYW1lKHRoaXMuc3RyZiwiSWRlbnRpdHkiKSl7Y29uc3QgZT10aGlzLmNmPy5nZXQodGhpcy5lZmYubmFtZSksdD1lPy5nZXQoIkF1dGhFdmVudCIpO2lmKGlzTmFtZSh0LCJFRk9wZW4iKSl7dGhpcy5lbmNyeXB0aW9uS2V5PW51bGw7cmV0dXJufX10aHJvdyBuZXcgUGFzc3dvcmRFeGNlcHRpb24oIk5vIHBhc3N3b3JkIGdpdmVuIixlYSl9Y29uc3QgZT10aGlzLiN1YSh3LHUsZCxyKTtrPXRoaXMuI2hhKGIsZSx1LG0scCxkLHIsZyl9aWYoIWspdGhyb3cgbmV3IFBhc3N3b3JkRXhjZXB0aW9uKCJJbmNvcnJlY3QgUGFzc3dvcmQiLHRhKTtpZig0PT09cyYmay5sZW5ndGg8MTYpe3RoaXMuZW5jcnlwdGlvbktleT1uZXcgVWludDhBcnJheSgxNik7dGhpcy5lbmNyeXB0aW9uS2V5LnNldChrKX1lbHNlIHRoaXMuZW5jcnlwdGlvbktleT1rfXNldFBhc3N3b3JkKGUpe2NvbnN0IHQ9bmV3IENpcGhlclRyYW5zZm9ybUZhY3RvcnkodGhpcy5kaWN0LHRoaXMuI2ZhLGUpO3RoaXMuZW5jcnlwdGlvbktleT10LmVuY3J5cHRpb25LZXl9Y3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGUsdCl7aWYoND09PXRoaXMuYWxnb3JpdGhtfHw1PT09dGhpcy5hbGdvcml0aG0pe2NvbnN0IGE9bmV3IENpcGhlclRyYW5zZm9ybShhPT57aWYoIShhIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGNyeXB0IGZpbHRlciBuYW1lLiIpO2NvbnN0IG49dGhpcy5jZi5nZXQoYS5uYW1lKSxzPW4/LmdldCgiQ0ZNIik7aWYoIXN8fCJOb25lIj09PXMubmFtZSlyZXR1cm4gTnVsbENpcGhlcjtpZighdGhpcy5lbmNyeXB0aW9uS2V5KXRocm93IG5ldyBQYXNzd29yZEV4Y2VwdGlvbigiTm8gcGFzc3dvcmQgZ2l2ZW4iLGVhKTtpZig1PT09dGhpcy5hbGdvcml0aG18fCJBRVNWMyI9PT1zLm5hbWUpcmV0dXJuIEFFUzI1NkNpcGhlci5iaW5kKG51bGwsdGhpcy5lbmNyeXB0aW9uS2V5KTtpZigiVjIiPT09cy5uYW1lKXJldHVybiBBUkNGb3VyQ2lwaGVyLmJpbmQobnVsbCx0aGlzLiNtYShlLHQsdGhpcy5lbmNyeXB0aW9uS2V5LCExKSk7aWYoIkFFU1YyIj09PXMubmFtZSlyZXR1cm4gQUVTMTI4Q2lwaGVyLmJpbmQobnVsbCx0aGlzLiNtYShlLHQsdGhpcy5lbmNyeXB0aW9uS2V5LCEwKSk7dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIGNyeXB0byBtZXRob2QiKX0sdGhpcy5zdHJmLHRoaXMuc3RtZik7YS5lbWJlZGRlZEZpbHRlck5hbWU9dGhpcy5lZmY7cmV0dXJuIGF9cmV0dXJuIG5ldyBDaXBoZXJUcmFuc2Zvcm0oKCk9PkFSQ0ZvdXJDaXBoZXIuYmluZChudWxsLHRoaXMuI21hKGUsdCx0aGlzLmVuY3J5cHRpb25LZXksITEpKSl9fWNsYXNzIFhSZWZ7I3BhPW5ldyBNYXA7I2RhPVtdOyNnYT1udWxsOyNiYT1udWxsOyN3YT0hMTsjamE9bmV3IFJlZlNldDsja2E9bnVsbDsjeWE9bmV3IFNldDsjcWE9ITA7I3ZhPW5ldyBTZXQ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnN0cmVhbT1lO3RoaXMucGRmTWFuYWdlcj10fWdldE5ld1BlcnNpc3RlbnRSZWYoZSl7bnVsbD09PXRoaXMuI2dhJiYodGhpcy4jZ2E9dGhpcy4jZGEubGVuZ3RofHwxKTtjb25zdCB0PXRoaXMuI2dhKys7dGhpcy4jcGEuc2V0KHQsZSk7cmV0dXJuIFJlZi5nZXQodCwwKX1nZXROZXdUZW1wb3JhcnlSZWYoKXtpZihudWxsPT09dGhpcy4jYmEpe3RoaXMuI2JhPXRoaXMuI2RhLmxlbmd0aHx8MTtpZih0aGlzLiNnYSl7dGhpcy4ja2E9bmV3IE1hcDtmb3IobGV0IGU9dGhpcy4jYmE7ZTx0aGlzLiNnYTtlKyspe3RoaXMuI2thLnNldChlLHRoaXMuI3BhLmdldChlKSk7dGhpcy4jcGEuZGVsZXRlKGUpfX19cmV0dXJuIFJlZi5nZXQodGhpcy4jYmErKywwKX1yZXNldE5ld1RlbXBvcmFyeVJlZigpe3RoaXMuI2JhPW51bGw7aWYodGhpcy4ja2EpZm9yKGNvbnN0W2UsdF1vZiB0aGlzLiNrYSl0aGlzLiNwYS5zZXQoZSx0KTt0aGlzLiNrYT1udWxsfXNldFN0YXJ0WFJlZihlKXt0aGlzLnN0YXJ0WFJlZlF1ZXVlPVtlXX1wYXJzZShlPSExKXt0aGlzLiN3YT1lO2xldCB0LGEsbjtpZihlKXt3YXJuKCJJbmRleGluZyBhbGwgUERGIG9iamVjdHMiKTt0PXRoaXMuaW5kZXhPYmplY3RzKCl9ZWxzZSB0PXRoaXMucmVhZFhSZWYoKTt0LmFzc2lnblhyZWYodGhpcyk7dGhpcy50cmFpbGVyPXQ7dHJ5e2E9dC5nZXQoIkVuY3J5cHQiKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBYUmVmLnBhcnNlIC0gSW52YWxpZCAiRW5jcnlwdCIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYoYSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9dC5nZXQoIklEIiksbj1lPy5sZW5ndGg/ZVswXToiIjthLnN1cHByZXNzRW5jcnlwdGlvbj0hMDt0aGlzLmVuY3J5cHQ9bmV3IENpcGhlclRyYW5zZm9ybUZhY3RvcnkoYSxuLHRoaXMucGRmTWFuYWdlci5wYXNzd29yZCl9dHJ5e249dC5nZXQoIlJvb3QiKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBYUmVmLnBhcnNlIC0gSW52YWxpZCAiUm9vdCIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYobiBpbnN0YW5jZW9mIERpY3QpdHJ5e2lmKG4uZ2V0KCJQYWdlcyIpaW5zdGFuY2VvZiBEaWN0KXt0aGlzLnJvb3Q9bjtyZXR1cm59fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFhSZWYucGFyc2UgLSBJbnZhbGlkICJQYWdlcyIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYoIWUpdGhyb3cgbmV3IFhSZWZQYXJzZUV4Y2VwdGlvbjt0aHJvdyBuZXcgSW52YWxpZFBERkV4Y2VwdGlvbigiSW52YWxpZCBSb290IHJlZmVyZW5jZS4iKX1wcm9jZXNzWFJlZlRhYmxlKGUpe3RoaXMuX3RhYmxlU3RhdGU/Pz17ZW50cnlOdW06MCxzdHJlYW1Qb3M6ZS5sZXhlci5zdHJlYW0ucG9zLHBhcnNlckJ1ZjE6ZS5idWYxLHBhcnNlckJ1ZjI6ZS5idWYyfTtpZighaXNDbWQodGhpcy5yZWFkWFJlZlRhYmxlKGUpLCJ0cmFpbGVyIikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBmaW5kIHRyYWlsZXIgZGljdGlvbmFyeSIpO2xldCB0PWUuZ2V0T2JqKCk7dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJih0PXQuZGljdCk7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBwYXJzZSB0cmFpbGVyIGRpY3Rpb25hcnkiKTtkZWxldGUgdGhpcy5fdGFibGVTdGF0ZTtyZXR1cm4gdH1yZWFkWFJlZlRhYmxlKGUpe2NvbnN0IHQ9ZS5sZXhlci5zdHJlYW0sYT10aGlzLl90YWJsZVN0YXRlO3QucG9zPWEuc3RyZWFtUG9zO2UuYnVmMT1hLnBhcnNlckJ1ZjE7ZS5idWYyPWEucGFyc2VyQnVmMjtsZXQgbjtmb3IoOzspe2lmKCEoImZpcnN0RW50cnlOdW0iaW4gYSl8fCEoImVudHJ5Q291bnQiaW4gYSkpe2lmKGlzQ21kKG49ZS5nZXRPYmooKSwidHJhaWxlciIpKWJyZWFrO2EuZmlyc3RFbnRyeU51bT1uO2EuZW50cnlDb3VudD1lLmdldE9iaigpfWxldCBzPWEuZmlyc3RFbnRyeU51bTtjb25zdCByPWEuZW50cnlDb3VudDtpZighTnVtYmVyLmlzSW50ZWdlcihzKXx8IU51bWJlci5pc0ludGVnZXIocikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHdyb25nIHR5cGVzIGluIHN1YnNlY3Rpb24gaGVhZGVyIik7Zm9yKGxldCBuPWEuZW50cnlOdW07bjxyO24rKyl7YS5zdHJlYW1Qb3M9dC5wb3M7YS5lbnRyeU51bT1uO2EucGFyc2VyQnVmMT1lLmJ1ZjE7YS5wYXJzZXJCdWYyPWUuYnVmMjtjb25zdCBpPXtvZmZzZXQ6ZS5nZXRPYmooKSxnZW46ZS5nZXRPYmooKSxmcmVlOiExLHVuY29tcHJlc3NlZDohMX0sbz1lLmdldE9iaigpO2lmKG8gaW5zdGFuY2VvZiBDbWQpc3dpdGNoKG8uY21kKXtjYXNlImYiOmkuZnJlZT0hMDticmVhaztjYXNlIm4iOmkudW5jb21wcmVzc2VkPSEwfWlmKCFOdW1iZXIuaXNJbnRlZ2VyKGkub2Zmc2V0KXx8IU51bWJlci5pc0ludGVnZXIoaS5nZW4pfHwhaS5mcmVlJiYhaS51bmNvbXByZXNzZWQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGVudHJ5IGluIFhSZWYgc3Vic2VjdGlvbjogJHtzfSwgJHtyfWApOzA9PT1uJiZpLmZyZWUmJjE9PT1zJiYocz0wKTt0aGlzLiNkYVtzK25dPz89aX1hLmVudHJ5TnVtPTA7YS5zdHJlYW1Qb3M9dC5wb3M7YS5wYXJzZXJCdWYxPWUuYnVmMTthLnBhcnNlckJ1ZjI9ZS5idWYyO2RlbGV0ZSBhLmZpcnN0RW50cnlOdW07ZGVsZXRlIGEuZW50cnlDb3VudH1pZih0aGlzLiNkYVswXSYmIXRoaXMuI2RhWzBdLmZyZWUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHVuZXhwZWN0ZWQgZmlyc3Qgb2JqZWN0Iik7cmV0dXJuIG59cHJvY2Vzc1hSZWZTdHJlYW0oZSl7aWYoISgic3RyZWFtU3RhdGUiaW4gdGhpcykpe2NvbnN0e2RpY3Q6dCxwb3M6YX09ZSxuPXQuZ2V0KCJXIikscz10LmdldCgiSW5kZXgiKXx8WzAsdC5nZXQoIlNpemUiKV07dGhpcy5zdHJlYW1TdGF0ZT17ZW50cnlSYW5nZXM6cyxieXRlV2lkdGhzOm4sZW50cnlOdW06MCxzdHJlYW1Qb3M6YX19dGhpcy5yZWFkWFJlZlN0cmVhbShlKTtkZWxldGUgdGhpcy5zdHJlYW1TdGF0ZTtyZXR1cm4gZS5kaWN0fXJlYWRYUmVmU3RyZWFtKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW1TdGF0ZTtlLnBvcz10LnN0cmVhbVBvcztjb25zdFthLG4sc109dC5ieXRlV2lkdGhzLHI9dC5lbnRyeVJhbmdlcztmb3IoO3IubGVuZ3RoPjA7KXtjb25zdFtpLG9dPXI7aWYoIU51bWJlci5pc0ludGVnZXIoaSl8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBYUmVmIHJhbmdlIGZpZWxkczogJHtpfSwgJHtvfWApO2lmKCFbYSxuLHNdLmV2ZXJ5KGU9Pk51bWJlci5pc0ludGVnZXIoZSkmJmU+PTApfHxhK24rcz09PTApdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgZW50cnkgZmllbGRzIGxlbmd0aDogJHtpfSwgJHtvfWApO2ZvcihsZXQgcj10LmVudHJ5TnVtO3I8bzsrK3Ipe3QuZW50cnlOdW09cjt0LnN0cmVhbVBvcz1lLnBvcztsZXQgbz0wLGw9MCxmPTA7Zm9yKGxldCB0PTA7dDxhOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAndHlwZScuIik7bz1vPDw4fHR9MD09PWEmJihvPTEpO2ZvcihsZXQgdD0wO3Q8bjsrK3Qpe2NvbnN0IHQ9ZS5nZXRCeXRlKCk7aWYoLTE9PT10KXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIGJ5dGVXaWR0aHMgJ29mZnNldCcuIik7bD1sPDw4fHR9Zm9yKGxldCB0PTA7dDxzOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAnZ2VuZXJhdGlvbicuIik7Zj1mPDw4fHR9Y29uc3QgYz17b2Zmc2V0OmwsZ2VuOmYsZnJlZTohMSx1bmNvbXByZXNzZWQ6ITF9O3N3aXRjaChvKXtjYXNlIDA6Yy5mcmVlPSEwO2JyZWFrO2Nhc2UgMTpjLnVuY29tcHJlc3NlZD0hMDticmVhaztjYXNlIDI6YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSB0eXBlOiAke299YCl9dGhpcy4jZGFbaStyXT8/PWN9dC5lbnRyeU51bT0wO3Quc3RyZWFtUG9zPWUucG9zO3Iuc3BsaWNlKDAsMil9fWluZGV4T2JqZWN0cygpe2Z1bmN0aW9uIHJlYWRUb2tlbihlLHQpe2xldCBhPSIiLG49ZVt0XTtmb3IoOzEwIT09biYmMTMhPT1uJiY2MCE9PW4mJiEoKyt0Pj1lLmxlbmd0aCk7KXthKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG4pO249ZVt0XX1yZXR1cm4gYX1mdW5jdGlvbiBza2lwVW50aWwoZSx0LGEpe2NvbnN0IG49YS5sZW5ndGgscz1lLmxlbmd0aDtsZXQgcj0wO2Zvcig7dDxzOyl7bGV0IHM9MDtmb3IoO3M8biYmZVt0K3NdPT09YVtzXTspKytzO2lmKHM+PW4pYnJlYWs7dCsrO3IrK31yZXR1cm4gcn1jb25zdCBlPS9cYihlbmRvYmp8XGQrXHMrXGQrXHMrb2JqfHhyZWZ8dHJhaWxlclxzKjw8KVxiL2csdD0vXGIoc3RhcnR4cmVmfFxkK1xzK1xkK1xzK29iailcYi9nLGE9L14oXGQrKVxzKyhcZCspXHMrb2JqXGIvLG49bmV3IFVpbnQ4QXJyYXkoWzExNiwxMTQsOTcsMTA1LDEwOCwxMDEsMTE0XSkscz1uZXcgVWludDhBcnJheShbMTE1LDExNiw5NywxMTQsMTE2LDEyMCwxMTQsMTAxLDEwMl0pLHI9bmV3IFVpbnQ4QXJyYXkoWzQ3LDg4LDgyLDEwMSwxMDJdKTt0aGlzLiNkYS5sZW5ndGg9MDt0aGlzLiNwYS5jbGVhcigpO2NvbnN0IGk9dGhpcy5zdHJlYW07aS5wb3M9MDtjb25zdCBvPWkuZ2V0Qnl0ZXMoKSxsPWJ5dGVzVG9TdHJpbmcobyksZj1vLmxlbmd0aDtsZXQgYz1pLnN0YXJ0O2NvbnN0IGg9W10sdT1bXTtmb3IoO2M8Zjspe2xldCBtPW9bY107aWYoOT09PW18fDEwPT09bXx8MTM9PT1tfHwzMj09PW0peysrYztjb250aW51ZX1pZigzNz09PW0pe2RveysrYztpZihjPj1mKWJyZWFrO209b1tjXX13aGlsZSgxMCE9PW0mJjEzIT09bSk7Y29udGludWV9Y29uc3QgcD1yZWFkVG9rZW4obyxjKTtsZXQgZDtpZihwLnN0YXJ0c1dpdGgoInhyZWYiKSYmKDQ9PT1wLmxlbmd0aHx8L1xzLy50ZXN0KHBbNF0pKSl7Yys9c2tpcFVudGlsKG8sYyxuKTtoLnB1c2goYyk7Yys9c2tpcFVudGlsKG8sYyxzKX1lbHNlIGlmKGQ9YS5leGVjKHApKXtjb25zdCB0PTB8ZFsxXSxhPTB8ZFsyXSxuPWMrcC5sZW5ndGg7bGV0IHMsaD0hMTtpZih0aGlzLiNkYVt0XSl7aWYodGhpcy4jZGFbdF0uZ2VuPT09YSl0cnl7bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKGkubWFrZVN1YlN0cmVhbShuKSl9KS5nZXRPYmooKTtoPSEwfWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBQYXJzZXJFT0ZFeGNlcHRpb24/d2FybihgaW5kZXhPYmplY3RzIC0tIGNoZWNraW5nIG9iamVjdCAoJHtwfSk6ICIke2V9Ii5gKTpoPSEwfX1lbHNlIGg9ITA7aCYmKHRoaXMuI2RhW3RdPXtvZmZzZXQ6Yy1pLnN0YXJ0LGdlbjphLGZyZWU6ITEsdW5jb21wcmVzc2VkOiEwfSk7ZS5sYXN0SW5kZXg9bjtjb25zdCBtPWUuZXhlYyhsKTtpZihtKXtzPWUubGFzdEluZGV4KzEtYztpZigiZW5kb2JqIiE9PW1bMV0pe3dhcm4oYGluZGV4T2JqZWN0czogRm91bmQgIiR7bVsxXX0iIGluc2lkZSBvZiBhbm90aGVyICJvYmoiLCBjYXVzZWQgYnkgbWlzc2luZyAiZW5kb2JqIiAtLSB0cnlpbmcgdG8gcmVjb3Zlci5gKTtzLT1tWzFdLmxlbmd0aCsxfX1lbHNlIHM9Zi1jO2NvbnN0IGc9by5zdWJhcnJheShjLGMrcyksYj1za2lwVW50aWwoZywwLHIpO2lmKGI8cyYmZ1tiKzVdPDY0KXt1LnB1c2goYy1pLnN0YXJ0KTt0aGlzLiN2YS5hZGQoYy1pLnN0YXJ0KX1jKz1zfWVsc2UgaWYocC5zdGFydHNXaXRoKCJ0cmFpbGVyIikmJig3PT09cC5sZW5ndGh8fC9ccy8udGVzdChwWzddKSkpe2gucHVzaChjKTtjb25zdCBlPWMrcC5sZW5ndGg7bGV0IGE7dC5sYXN0SW5kZXg9ZTtjb25zdCBuPXQuZXhlYyhsKTtpZihuKXthPXQubGFzdEluZGV4KzEtYztpZigic3RhcnR4cmVmIiE9PW5bMV0pe3dhcm4oYGluZGV4T2JqZWN0czogRm91bmQgIiR7blsxXX0iIGFmdGVyICJ0cmFpbGVyIiwgY2F1c2VkIGJ5IG1pc3NpbmcgInN0YXJ0eHJlZiIgLS0gdHJ5aW5nIHRvIHJlY292ZXIuYCk7YS09blsxXS5sZW5ndGgrMX19ZWxzZSBhPWYtYztjKz1hfWVsc2UgYys9cC5sZW5ndGgrMX1mb3IoY29uc3QgZSBvZiB1KXt0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2goZSk7dGhpcy5yZWFkWFJlZighMCl9Y29uc3QgbT1bXTtsZXQgcCxkLGc9ITE7Zm9yKGNvbnN0IGUgb2YgaCl7aS5wb3M9ZTtjb25zdCB0PW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihpKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwLHJlY292ZXJ5TW9kZTohMH0pO2lmKCFpc0NtZCh0LmdldE9iaigpLCJ0cmFpbGVyIikpY29udGludWU7Y29uc3QgYT10LmdldE9iaigpO2lmKGEgaW5zdGFuY2VvZiBEaWN0KXttLnB1c2goYSk7YS5oYXMoIkVuY3J5cHQiKSYmKGc9ITApfX1mb3IoY29uc3QgZSBvZlsuLi5tLCJnZW5GYWxsYmFjayIsLi4ubV0pe2lmKCJnZW5GYWxsYmFjayI9PT1lKXtpZighZClicmVhazt0aGlzLl9nZW5lcmF0aW9uRmFsbGJhY2s9ITA7Y29udGludWV9bGV0IHQ9ITE7dHJ5e2NvbnN0IGE9ZS5nZXQoIlJvb3QiKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtjb25zdCBuPWEuZ2V0KCJQYWdlcyIpO2lmKCEobiBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2NvbnN0IHM9bi5nZXQoIkNvdW50Iik7TnVtYmVyLmlzSW50ZWdlcihzKSYmKHQ9ITApfWNhdGNoKGUpe2Q9ZTtjb250aW51ZX1pZih0JiYoIWd8fGUuaGFzKCJFbmNyeXB0IikpJiZlLmhhcygiSUQiKSlyZXR1cm4gZTtwPWV9aWYocClyZXR1cm4gcDtpZih0aGlzLnRvcERpY3QpcmV0dXJuIHRoaXMudG9wRGljdDtpZighbS5sZW5ndGgpZm9yKGNvbnN0IGUgaW4gdGhpcy4jZGEpe2NvbnN0IHQ9dGhpcy4jZGFbZV07aWYoIXQpY29udGludWU7Y29uc3QgYT1SZWYuZ2V0KHBhcnNlSW50KGUsMTApLHQuZ2VuKTtsZXQgbjt0cnl7bj10aGlzLmZldGNoKGEpfWNhdGNoe2NvbnRpbnVlfW4gaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYobj1uLmRpY3QpO2lmKG4gaW5zdGFuY2VvZiBEaWN0JiZuLmhhcygiUm9vdCIpKXJldHVybiBufXRocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJJbnZhbGlkIFBERiBzdHJ1Y3R1cmUuIil9cmVhZFhSZWYoZT0hMSl7Y29uc3QgdD10aGlzLnN0cmVhbSxhPW5ldyBTZXQ7Zm9yKDt0aGlzLnN0YXJ0WFJlZlF1ZXVlLmxlbmd0aDspe3RyeXtjb25zdCBlPXRoaXMuc3RhcnRYUmVmUXVldWVbMF07aWYoYS5oYXMoZSkpe3dhcm4oInJlYWRYUmVmIC0gc2tpcHBpbmcgWFJlZiB0YWJsZSBzaW5jZSBpdCB3YXMgYWxyZWFkeSBwYXJzZWQuIik7dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpO2NvbnRpbnVlfWEuYWRkKGUpO3QucG9zPWUrdC5zdGFydDtjb25zdCBuPW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcih0KSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7bGV0IHMscj1uLmdldE9iaigpO2lmKGlzQ21kKHIsInhyZWYiKSl7cz10aGlzLnByb2Nlc3NYUmVmVGFibGUobik7dGhpcy50b3BEaWN0fHw9cztyPXMuZ2V0KCJYUmVmU3RtIik7aWYoTnVtYmVyLmlzSW50ZWdlcihyKSYmIXRoaXMuI3ZhLmhhcyhyKSl7dGhpcy4jdmEuYWRkKHIpO3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChyKX19ZWxzZXtpZighTnVtYmVyLmlzSW50ZWdlcihyKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBzdHJlYW0gaGVhZGVyIik7aWYoIShOdW1iZXIuaXNJbnRlZ2VyKG4uZ2V0T2JqKCkpJiZpc0NtZChuLmdldE9iaigpLCJvYmoiKSYmKHI9bi5nZXRPYmooKSlpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHN0cmVhbSIpO3M9dGhpcy5wcm9jZXNzWFJlZlN0cmVhbShyKTt0aGlzLnRvcERpY3R8fD1zO2lmKCFzKXRocm93IG5ldyBGb3JtYXRFcnJvcigiRmFpbGVkIHRvIHJlYWQgWFJlZiBzdHJlYW0iKX10aGlzLiN5YS5hZGQoZSk7cj1zLmdldCgiUHJldiIpO051bWJlci5pc0ludGVnZXIocik/dGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKHIpOnIgaW5zdGFuY2VvZiBSZWYmJnRoaXMuc3RhcnRYUmVmUXVldWUucHVzaChyLm51bSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7dGhpcy4jcWE9ITE7aW5mbygiKHdoaWxlIHJlYWRpbmcgWFJlZik6ICIrZSl9dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpfWlmKHRoaXMudG9wRGljdClyZXR1cm4gdGhpcy50b3BEaWN0O2lmKCFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb259Y291bnRVcGRhdGVzQWZ0ZXIoZSl7aWYodGhpcy4jd2F8fCF0aGlzLiNxYSlyZXR1cm4gbnVsbDtjb25zdCB0PWUtdGhpcy5zdHJlYW0uc3RhcnQ7bGV0IGE9MDtmb3IoY29uc3QgZSBvZiB0aGlzLiN5YSllPj10JiYhdGhpcy4jdmEuaGFzKGUpJiZhKys7cmV0dXJuIGF9Z2V0RW50cnkoZSl7Y29uc3QgdD10aGlzLiNkYVtlXTtyZXR1cm4gdCYmIXQuZnJlZSYmdC5vZmZzZXQ/dDpudWxsfWZldGNoSWZSZWYoZSx0PSExKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFJlZj90aGlzLmZldGNoKGUsdCk6ZX1mZXRjaChlLHQ9ITEpe2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpdGhyb3cgbmV3IEVycm9yKCJyZWYgb2JqZWN0IGlzIG5vdCBhIHJlZmVyZW5jZSIpO2NvbnN0IGE9ZS5udW0sbj10aGlzLiNwYS5nZXQoYSk7aWYodm9pZCAwIT09bil7biBpbnN0YW5jZW9mIERpY3QmJiFuLm9iaklkJiYobi5vYmpJZD1lLnRvU3RyaW5nKCkpO3JldHVybiBufWxldCBzPXRoaXMuZ2V0RW50cnkoYSk7aWYobnVsbD09PXMpcmV0dXJuIHM7aWYodGhpcy4jamEuaGFzKGUpKXt0aGlzLiNqYS5yZW1vdmUoZSk7d2FybihgSWdub3JpbmcgY2lyY3VsYXIgcmVmZXJlbmNlOiAke2V9LmApO3JldHVybiBpYX10aGlzLiNqYS5wdXQoZSk7dHJ5e3M9cy51bmNvbXByZXNzZWQ/dGhpcy5mZXRjaFVuY29tcHJlc3NlZChlLHMsdCk6dGhpcy5mZXRjaENvbXByZXNzZWQoZSxzLHQpO3RoaXMuI2phLnJlbW92ZShlKX1jYXRjaCh0KXt0aGlzLiNqYS5yZW1vdmUoZSk7dGhyb3cgdH1zIGluc3RhbmNlb2YgRGljdD9zLm9iaklkPWUudG9TdHJpbmcoKTpzIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKHMuZGljdC5vYmpJZD1lLnRvU3RyaW5nKCkpO3JldHVybiBzfWZldGNoVW5jb21wcmVzc2VkKGUsdCxhPSExKXtjb25zdCBuPWUuZ2VuO2xldCBzPWUubnVtO2lmKHQuZ2VuIT09bil7Y29uc3Qgcj1gSW5jb25zaXN0ZW50IGdlbmVyYXRpb24gaW4gWFJlZjogJHtlfWA7aWYodGhpcy5fZ2VuZXJhdGlvbkZhbGxiYWNrJiZ0LmdlbjxuKXt3YXJuKHIpO3JldHVybiB0aGlzLmZldGNoVW5jb21wcmVzc2VkKFJlZi5nZXQocyx0LmdlbiksdCxhKX10aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKHIpfWNvbnN0IHI9dGhpcy5zdHJlYW0ubWFrZVN1YlN0cmVhbSh0Lm9mZnNldCt0aGlzLnN0cmVhbS5zdGFydCksaT1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIocikseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pLG89aS5nZXRPYmooKSxsPWkuZ2V0T2JqKCksZj1pLmdldE9iaigpO2lmKG8hPT1zfHxsIT09bnx8IShmIGluc3RhbmNlb2YgQ21kKSl0aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKHVuY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApO2lmKCJvYmoiIT09Zi5jbWQpe2lmKGYuY21kLnN0YXJ0c1dpdGgoIm9iaiIpKXtzPXBhcnNlSW50KGYuY21kLnN1YnN0cmluZygzKSwxMCk7aWYoIU51bWJlci5pc05hTihzKSlyZXR1cm4gc310aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKHVuY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApfSh0PXRoaXMuZW5jcnlwdCYmIWE/aS5nZXRPYmoodGhpcy5lbmNyeXB0LmNyZWF0ZUNpcGhlclRyYW5zZm9ybShzLG4pKTppLmdldE9iaigpKWluc3RhbmNlb2YgQmFzZVN0cmVhbXx8dGhpcy4jcGEuc2V0KHMsdCk7cmV0dXJuIHR9ZmV0Y2hDb21wcmVzc2VkKGUsdCxhPSExKXtjb25zdCBuPXQub2Zmc2V0LHM9dGhpcy5mZXRjaChSZWYuZ2V0KG4sMCkpO2lmKCEocyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiYmFkIE9ialN0bSBzdHJlYW0iKTtjb25zdCByPXMuZGljdC5nZXQoIkZpcnN0IiksaT1zLmRpY3QuZ2V0KCJOIik7aWYoIU51bWJlci5pc0ludGVnZXIocil8fCFOdW1iZXIuaXNJbnRlZ2VyKGkpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiaW52YWxpZCBmaXJzdCBhbmQgbiBwYXJhbWV0ZXJzIGZvciBPYmpTdG0gc3RyZWFtIik7bGV0IG89bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKHMpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtjb25zdCBsPW5ldyBBcnJheShpKSxmPW5ldyBBcnJheShpKTtmb3IobGV0IGU9MDtlPGk7KytlKXtjb25zdCB0PW8uZ2V0T2JqKCk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBpbnZhbGlkIG9iamVjdCBudW1iZXIgaW4gdGhlIE9ialN0bSBzdHJlYW06ICR7dH1gKTtjb25zdCBhPW8uZ2V0T2JqKCk7aWYoIU51bWJlci5pc0ludGVnZXIoYSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBpbnZhbGlkIG9iamVjdCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW06ICR7YX1gKTtsW2VdPXQ7Y29uc3Qgcz10aGlzLmdldEVudHJ5KHQpO3M/Lm9mZnNldD09PW4mJnMuZ2VuIT09ZSYmKHMuZ2VuPWUpO2ZbZV09YX1jb25zdCBjPShzLnN0YXJ0fHwwKStyLGg9bmV3IEFycmF5KGkpO2ZvcihsZXQgZT0wO2U8aTsrK2Upe2NvbnN0IHQ9ZTxpLTE/ZltlKzFdLWZbZV06dm9pZCAwO2lmKHQ8MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgb2Zmc2V0IGluIHRoZSBPYmpTdG0gc3RyZWFtLiIpO289bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKHMubWFrZVN1YlN0cmVhbShjK2ZbZV0sdCxzLmRpY3QpKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7Y29uc3QgYT1vLmdldE9iaigpO2hbZV09YTtpZihhIGluc3RhbmNlb2YgQmFzZVN0cmVhbSljb250aW51ZTtjb25zdCByPWxbZV0sdT10aGlzLiNkYVtyXTt1JiZ1Lm9mZnNldD09PW4mJnUuZ2VuPT09ZSYmdGhpcy4jcGEuc2V0KHIsYSl9aWYodm9pZCAwPT09KHQ9aFt0Lmdlbl0pKXRocm93IG5ldyBYUmVmRW50cnlFeGNlcHRpb24oYEJhZCAoY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApO3JldHVybiB0fWFzeW5jIGZldGNoSWZSZWZBc3luYyhlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgUmVmP3RoaXMuZmV0Y2hBc3luYyhlLHQpOmV9YXN5bmMgZmV0Y2hBc3luYyhlLHQpe3RyeXtyZXR1cm4gdGhpcy5mZXRjaChlLHQpfWNhdGNoKGEpe2lmKCEoYSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKSl0aHJvdyBhO2F3YWl0IHRoaXMucGRmTWFuYWdlci5yZXF1ZXN0UmFuZ2UoYS5iZWdpbixhLmVuZCk7cmV0dXJuIHRoaXMuZmV0Y2hBc3luYyhlLHQpfX1nZXRDYXRhbG9nT2JqKCl7cmV0dXJuIHRoaXMucm9vdH19Y29uc3QgUmY9WzAsMCw2MTIsNzkyXTtjbGFzcyBQYWdleyNTYT1udWxsO2NvbnN0cnVjdG9yKHtwZGZNYW5hZ2VyOmUseHJlZjp0LHBhZ2VJbmRleDphLHBhZ2VEaWN0Om4scmVmOnMsZ2xvYmFsSWRGYWN0b3J5OnIsZm9udENhY2hlOmksYnVpbHRJbkNNYXBDYWNoZTpvLHN0YW5kYXJkRm9udERhdGFDYWNoZTpsLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpmLGdsb2JhbEltYWdlQ2FjaGU6YyxzeXN0ZW1Gb250Q2FjaGU6aCxub25CbGVuZE1vZGVzU2V0OnUseGZhRmFjdG9yeTptfSl7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy5wYWdlSW5kZXg9YTt0aGlzLnBhZ2VEaWN0PW47dGhpcy54cmVmPXQ7dGhpcy5yZWY9czt0aGlzLmZvbnRDYWNoZT1pO3RoaXMuYnVpbHRJbkNNYXBDYWNoZT1vO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlPWw7dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGU9Zjt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9Yzt0aGlzLnN5c3RlbUZvbnRDYWNoZT1oO3RoaXMubm9uQmxlbmRNb2Rlc1NldD11O3RoaXMuZXZhbHVhdG9yT3B0aW9ucz1lLmV2YWx1YXRvck9wdGlvbnM7dGhpcy54ZmFGYWN0b3J5PW07Y29uc3QgcD17b2JqOjB9O3RoaXMuX2xvY2FsSWRGYWN0b3J5PWNsYXNzIGV4dGVuZHMgcntzdGF0aWMgY3JlYXRlT2JqSWQoKXtyZXR1cm5gcCR7YX1fJHsrK3Aub2JqfWB9c3RhdGljIGdldFBhZ2VPYmpJZCgpe3JldHVybmBwJHtzLnRvU3RyaW5nKCl9YH19fV9jcmVhdGVQYXJ0aWFsRXZhbHVhdG9yKGUsdD10aGlzLnBhZ2VJbmRleCxhPW51bGwpe3JldHVybiBuZXcgUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDp0LHBhZ2VQcm94eUlkOmEsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnRoaXMuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pfSNBYShlLHQ9ITEpe2NvbnN0IGE9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0aGlzLnBhZ2VEaWN0LGtleTplLGdldEFycmF5OnQsc3RvcFdoZW5Gb3VuZDohMX0pO3JldHVybiBBcnJheS5pc0FycmF5KGEpPzEhPT1hLmxlbmd0aCYmYVswXWluc3RhbmNlb2YgRGljdD9EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6YX0pOmFbMF06YX1nZXQgY29udGVudCgpe3JldHVybiB0aGlzLnBhZ2VEaWN0LmdldEFycmF5KCJDb250ZW50cyIpfWdldCByZXNvdXJjZXMoKXtjb25zdCBlPXRoaXMuI0FhKCJSZXNvdXJjZXMiKTtyZXR1cm4gc2hhZG93KHRoaXMsInJlc291cmNlcyIsZSBpbnN0YW5jZW9mIERpY3Q/ZTpEaWN0LmVtcHR5KX1nZXRCb3VuZGluZ0JveChlKXtpZih0aGlzLnhmYURhdGEpcmV0dXJuIHRoaXMueGZhRGF0YS5iYm94O2NvbnN0IHQ9bG9va3VwTm9ybWFsUmVjdCh0aGlzLiNBYShlLCEwKSxudWxsKTtpZih0KXtpZih0WzJdLXRbMF0+MCYmdFszXS10WzFdPjApcmV0dXJuIHQ7d2FybihgRW1wdHksIG9yIGludmFsaWQsIC8ke2V9IGVudHJ5LmApfXJldHVybiBudWxsfWdldCBtZWRpYUJveCgpe3JldHVybiBzaGFkb3codGhpcywibWVkaWFCb3giLHRoaXMuZ2V0Qm91bmRpbmdCb3goIk1lZGlhQm94Iil8fFJmKX1nZXQgY3JvcEJveCgpe3JldHVybiBzaGFkb3codGhpcywiY3JvcEJveCIsdGhpcy5nZXRCb3VuZGluZ0JveCgiQ3JvcEJveCIpfHx0aGlzLm1lZGlhQm94KX1nZXQgdXNlclVuaXQoKXtjb25zdCBlPXRoaXMucGFnZURpY3QuZ2V0KCJVc2VyVW5pdCIpO3JldHVybiBzaGFkb3codGhpcywidXNlclVuaXQiLCJudW1iZXIiPT10eXBlb2YgZSYmZT4wP2U6MSl9Z2V0IHZpZXcoKXtjb25zdHtjcm9wQm94OmUsbWVkaWFCb3g6dH09dGhpcztpZihlIT09dCYmIWlzQXJyYXlFcXVhbChlLHQpKXtjb25zdCBhPVV0aWwuaW50ZXJzZWN0KGUsdCk7aWYoYSYmYVsyXS1hWzBdPjAmJmFbM10tYVsxXT4wKXJldHVybiBzaGFkb3codGhpcywidmlldyIsYSk7d2FybigiRW1wdHkgL0Nyb3BCb3ggYW5kIC9NZWRpYUJveCBpbnRlcnNlY3Rpb24uIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3Iix0KX1nZXQgcm90YXRlKCl7bGV0IGU9dGhpcy4jQWEoIlJvdGF0ZSIpfHwwO2UlOTAhPTA/ZT0wOmU+PTM2MD9lJT0zNjA6ZTwwJiYoZT0oZSUzNjArMzYwKSUzNjApO3JldHVybiBzaGFkb3codGhpcywicm90YXRlIixlKX0jeGEoZSx0KXtpZighdGhpcy5ldmFsdWF0b3JPcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldENvbnRlbnRTdHJlYW0gLSBpZ25vcmluZyBzdWItc3RyZWFtICgke3R9KTogIiR7ZX0iLmApfWFzeW5jIGdldENvbnRlbnRTdHJlYW0oKXtjb25zdCBlPWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiY29udGVudCIpO2lmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhZS5pc0ltYWdlU3RyZWFtKXtpZihlLmlzQXN5bmMpe2NvbnN0IHQ9YXdhaXQgZS5hc3luY0dldEJ5dGVzKCk7aWYodClyZXR1cm4gbmV3IFN0cmVhbSh0LDAsdC5sZW5ndGgsZS5kaWN0KX1yZXR1cm4gZX1pZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wLG49ZS5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgbj1lW2FdO24gaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiZuLmlzQXN5bmMmJnQucHVzaChuLmFzeW5jR2V0Qnl0ZXMoKS50aGVuKHQ9Pnt0JiYoZVthXT1uZXcgU3RyZWFtKHQsMCx0Lmxlbmd0aCxuLmRpY3QpKX0pKX10Lmxlbmd0aD4wJiZhd2FpdCBQcm9taXNlLmFsbCh0KTtyZXR1cm4gbmV3IFN0cmVhbXNTZXF1ZW5jZVN0cmVhbShlLHRoaXMuI3hhLmJpbmQodGhpcykpfXJldHVybiBuZXcgTnVsbFN0cmVhbX1nZXQgeGZhRGF0YSgpe3JldHVybiBzaGFkb3codGhpcywieGZhRGF0YSIsdGhpcy54ZmFGYWN0b3J5P3tiYm94OnRoaXMueGZhRmFjdG9yeS5nZXRCb3VuZGluZ0JveCh0aGlzLnBhZ2VJbmRleCl9Om51bGwpfWFzeW5jI0NhKGUsdCxhKXtjb25zdCBuPVtdO2Zvcihjb25zdCBzIG9mIGUpe2lmKCFzLmlkKWNvbnRpbnVlO2NvbnN0IGU9UmVmLmZyb21TdHJpbmcocy5pZCk7aWYoZSlpZihzLmRlbGV0ZWQpe3QucHV0KGUpO2lmKHMucG9wdXBSZWYpe2NvbnN0IGU9UmVmLmZyb21TdHJpbmcocy5wb3B1cFJlZik7ZSYmdC5wdXQoZSl9fWVsc2V7aWYocy5wb3B1cD8uZGVsZXRlZCl7Y29uc3QgZT1SZWYuZnJvbVN0cmluZyhzLnBvcHVwUmVmKTtlJiZ0LnB1dChlKX1hPy5wdXQoZSk7cy5yZWY9ZTtuLnB1c2godGhpcy54cmVmLmZldGNoQXN5bmMoZSkudGhlbihlPT57ZSBpbnN0YW5jZW9mIERpY3QmJihzLm9sZEFubm90YXRpb249ZS5jbG9uZSgpKX0sKCk9Pnt3YXJuKGBDYW5ub3QgZmV0Y2ggXGBvbGRBbm5vdGF0aW9uXGAgZm9yOiAke2V9LmApfSkpO2RlbGV0ZSBzLmlkfWVsc2Ugd2FybihgQSBub24tbGlua2VkIGFubm90YXRpb24gY2Fubm90IGJlIG1vZGlmaWVkOiAke3MuaWR9YCl9YXdhaXQgUHJvbWlzZS5hbGwobil9YXN5bmMgc2F2ZU5ld0Fubm90YXRpb25zKGUsdCxhLG4scyl7aWYodGhpcy54ZmFGYWN0b3J5KXRocm93IG5ldyBFcnJvcigiWEZBOiBDYW5ub3Qgc2F2ZSBuZXcgYW5ub3RhdGlvbnMuIik7Y29uc3Qgcj10aGlzLl9jcmVhdGVQYXJ0aWFsRXZhbHVhdG9yKGUpLGk9bmV3IFJlZlNldCxvPW5ldyBSZWZTZXQ7YXdhaXQgdGhpcy4jQ2EoYSxpLG8pO2NvbnN0IGw9dGhpcy5wYWdlRGljdCxmPXRoaXMuYW5ub3RhdGlvbnMuZmlsdGVyKGU9PiEoZSBpbnN0YW5jZW9mIFJlZiYmaS5oYXMoZSkpKSxjPWF3YWl0IEFubm90YXRpb25GYWN0b3J5LnNhdmVOZXdBbm5vdGF0aW9ucyhyLHRoaXMueHJlZix0LGEsbixzKTtmb3IoY29uc3R7cmVmOmV9b2YgYy5hbm5vdGF0aW9ucyllIGluc3RhbmNlb2YgUmVmJiYhby5oYXMoZSkmJmYucHVzaChlKTtjb25zdCBoPWwuY2xvbmUoKTtoLnNldCgiQW5ub3RzIixmKTtzLnB1dCh0aGlzLnJlZix7ZGF0YTpofSk7Zm9yKGNvbnN0IGUgb2YgaSlzLnB1dChlLHtkYXRhOm51bGx9KX1hc3luYyBzYXZlKGUsdCxhLG4pe2NvbnN0IHM9dGhpcy5fY3JlYXRlUGFydGlhbEV2YWx1YXRvcihlKSxyPWF3YWl0IHRoaXMuX3BhcnNlZEFubm90YXRpb25zLGk9W107Zm9yKGNvbnN0IGUgb2YgcilpLnB1c2goZS5zYXZlKHMsdCxhLG4pLmNhdGNoKGU9Pnt3YXJuKGBzYXZlIC0gaWdub3JpbmcgYW5ub3RhdGlvbiBkYXRhIGR1cmluZyAiJHt0Lm5hbWV9IiB0YXNrOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSk7cmV0dXJuIFByb21pc2UuYWxsKGkpfWFzeW5jIGxvYWRSZXNvdXJjZXMoZSl7YXdhaXQodGhpcy4jU2E/Pz10aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsInJlc291cmNlcyIpKTthd2FpdCBPYmplY3RMb2FkZXIubG9hZCh0aGlzLnJlc291cmNlcyxlLHRoaXMueHJlZil9YXN5bmMjSWEoZSx0KXtjb25zdCBhPWU/LmdldCgiUmVzb3VyY2VzIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCYmYS5zaXplKSlyZXR1cm4gdGhpcy5yZXNvdXJjZXM7YXdhaXQgT2JqZWN0TG9hZGVyLmxvYWQoYSx0LHRoaXMueHJlZik7cmV0dXJuIERpY3QubWVyZ2Uoe3hyZWY6dGhpcy54cmVmLGRpY3RBcnJheTpbYSx0aGlzLnJlc291cmNlc10sbWVyZ2VTdWJEaWN0czohMH0pfWFzeW5jIGdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjplLHNpbms6dCx0YXNrOmEsaW50ZW50Om4sY2FjaGVLZXk6cyxwYWdlSW5kZXg6cj10aGlzLnBhZ2VJbmRleCxwYWdlUHJveHlJZDpmPW51bGwsYW5ub3RhdGlvblN0b3JhZ2U6bT1udWxsLG1vZGlmaWVkSWRzOmQ9bnVsbH0pe2NvbnN0IGc9dGhpcy5nZXRDb250ZW50U3RyZWFtKCksYj10aGlzLmxvYWRSZXNvdXJjZXMoYmEpLHc9dGhpcy5fY3JlYXRlUGFydGlhbEV2YWx1YXRvcihlLHIsZiksaj10aGlzLnhmYUZhY3Rvcnk/bnVsbDpnZXROZXdBbm5vdGF0aW9uc01hcChtKSxrPWo/LmdldCh0aGlzLnBhZ2VJbmRleCk7bGV0IHk9UHJvbWlzZS5yZXNvbHZlKG51bGwpLHE9bnVsbDtpZihrKXtjb25zdCBlPXRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoImFubm90YXRpb25HbG9iYWxzIik7bGV0IHQ7Y29uc3Qgbj1uZXcgU2V0O2Zvcihjb25zdHtiaXRtYXBJZDplLGJpdG1hcDp0fW9mIGspIWV8fHR8fG4uaGFzKGUpfHxuLmFkZChlKTtjb25zdHtpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpzfT10aGlzLmV2YWx1YXRvck9wdGlvbnM7aWYobi5zaXplPjApe2NvbnN0IGU9ay5zbGljZSgpO2Zvcihjb25zdFt0LGFdb2YgbSl0LnN0YXJ0c1dpdGgocCkmJmEuYml0bWFwJiZuLmhhcyhhLmJpdG1hcElkKSYmZS5wdXNoKGEpO3Q9QW5ub3RhdGlvbkZhY3RvcnkuZ2VuZXJhdGVJbWFnZXMoZSx0aGlzLnhyZWYscyl9ZWxzZSB0PUFubm90YXRpb25GYWN0b3J5LmdlbmVyYXRlSW1hZ2VzKGssdGhpcy54cmVmLHMpO3E9bmV3IFJlZlNldDt5PVByb21pc2UuYWxsKFtlLHRoaXMuI0NhKGsscSxudWxsKV0pLnRoZW4oKFtlXSk9PmU/QW5ub3RhdGlvbkZhY3RvcnkucHJpbnROZXdBbm5vdGF0aW9ucyhlLHcsYSxrLHQpOm51bGwpfWNvbnN0IHY9UHJvbWlzZS5hbGwoW2csYl0pLnRoZW4oYXN5bmMoW3JdKT0+e2NvbnN0IGk9YXdhaXQgdGhpcy4jSWEoci5kaWN0LGJhKSxvPW5ldyBPcGVyYXRvckxpc3Qobix0KTtlLnNlbmQoIlN0YXJ0UmVuZGVyUGFnZSIse3RyYW5zcGFyZW5jeTp3Lmhhc0JsZW5kTW9kZXMoaSx0aGlzLm5vbkJsZW5kTW9kZXNTZXQpLHBhZ2VQcm94eUlkOmYsY2FjaGVLZXk6c30pO2F3YWl0IHcuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06cix0YXNrOmEscmVzb3VyY2VzOmksb3BlcmF0b3JMaXN0Om99KTtyZXR1cm4gb30pO2xldFtTLHgsQ109YXdhaXQgUHJvbWlzZS5hbGwoW3YsdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnMseV0pO2lmKEMpe3g9eC5maWx0ZXIoZT0+IShlLnJlZiYmcS5oYXMoZS5yZWYpKSk7Zm9yKGxldCBlPTAsdD1DLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCBhPUNbZV07aWYoYS5yZWZUb1JlcGxhY2Upe2NvbnN0IG49eC5maW5kSW5kZXgoZT0+ZS5yZWYmJmlzUmVmc0VxdWFsKGUucmVmLGEucmVmVG9SZXBsYWNlKSk7aWYobj49MCl7eC5zcGxpY2UobiwxLGEpO0Muc3BsaWNlKGUtLSwxKTt0LS19fX14PXguY29uY2F0KEMpfWlmKDA9PT14Lmxlbmd0aHx8biZoKXtTLmZsdXNoKCEwKTtyZXR1cm59Y29uc3QgRj0hIShuJmMpLFQ9ISEobiZ1KSxSPSEhKG4maSksTz0hIShuJm8pLEQ9ISEobiZsKSxIPVtdO2Zvcihjb25zdCBlIG9mIHgpKFJ8fE8mJmUubXVzdEJlVmlld2VkKG0sRikmJmUubXVzdEJlVmlld2VkV2hlbkVkaXRpbmcoVCxkKXx8RCYmZS5tdXN0QmVQcmludGVkKG0pKSYmSC5wdXNoKGUuZ2V0T3BlcmF0b3JMaXN0KHcsYSxuLG0pLmNhdGNoKGU9Pnt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICIke2EubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtyZXR1cm57b3BMaXN0Om51bGwsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfX0pKTtjb25zdCBNPWF3YWl0IFByb21pc2UuYWxsKEgpO2xldCBOPSExLEU9ITE7Zm9yKGNvbnN0e29wTGlzdDplLHNlcGFyYXRlRm9ybTp0LHNlcGFyYXRlQ2FudmFzOmF9b2YgTSl7Uy5hZGRPcExpc3QoZSk7Tnx8PXQ7RXx8PWF9Uy5mbHVzaCghMCx7Zm9ybTpOLGNhbnZhczpFfSl9YXN5bmMgZXh0cmFjdFRleHRDb250ZW50KHtoYW5kbGVyOmUsdGFzazp0LGluY2x1ZGVNYXJrZWRDb250ZW50OmEsZGlzYWJsZU5vcm1hbGl6YXRpb246bixzaW5rOnMsaW50ZXJzZWN0b3I6cj1udWxsfSl7Y29uc3QgaT10aGlzLmdldENvbnRlbnRTdHJlYW0oKSxvPXRoaXMubG9hZFJlc291cmNlcyh3YSksbD10aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygibGFuZyIpLFtmLCxjXT1hd2FpdCBQcm9taXNlLmFsbChbaSxvLGxdKSxoPWF3YWl0IHRoaXMuI0lhKGYuZGljdCx3YSk7cmV0dXJuIHRoaXMuX2NyZWF0ZVBhcnRpYWxFdmFsdWF0b3IoZSkuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTpmLHRhc2s6dCxyZXNvdXJjZXM6aCxpbmNsdWRlTWFya2VkQ29udGVudDphLGRpc2FibGVOb3JtYWxpemF0aW9uOm4sc2luazpzLHZpZXdCb3g6dGhpcy52aWV3LGxhbmc6YyxpbnRlcnNlY3RvcjpyfSl9YXN5bmMgZ2V0U3RydWN0VHJlZSgpe2NvbnN0IGU9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coInN0cnVjdFRyZWVSb290Iik7aWYoIWUpcmV0dXJuIG51bGw7YXdhaXQgdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnM7dHJ5e2NvbnN0IHQ9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJfcGFyc2VTdHJ1Y3RUcmVlIixbZV0pO3JldHVybiBhd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHQsInNlcmlhbGl6YWJsZSIpfWNhdGNoKGUpe3dhcm4oYGdldFN0cnVjdFRyZWU6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH19X3BhcnNlU3RydWN0VHJlZShlKXtjb25zdCB0PW5ldyBTdHJ1Y3RUcmVlUGFnZShlLHRoaXMucGFnZURpY3QpO3QucGFyc2UodGhpcy5yZWYpO3JldHVybiB0fWFzeW5jIGdldEFubm90YXRpb25zRGF0YShlLHQsYSl7Y29uc3Qgbj1hd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztpZigwPT09bi5sZW5ndGgpcmV0dXJuIG47Y29uc3Qgcz1bXSxyPVtdO2xldCBmO2NvbnN0IGM9ISEoYSZpKSxoPSEhKGEmbyksdT0hIShhJmwpLG09W107Zm9yKGNvbnN0IGEgb2Ygbil7Y29uc3Qgbj1jfHxoJiZhLnZpZXdhYmxlOyhufHx1JiZhLnByaW50YWJsZSkmJnMucHVzaChhLmRhdGEpO2lmKGEuaGFzVGV4dENvbnRlbnQmJm4pe2Y/Pz10aGlzLl9jcmVhdGVQYXJ0aWFsRXZhbHVhdG9yKGUpO3IucHVzaChhLmV4dHJhY3RUZXh0Q29udGVudChmLHQsWy0xLzAsLTEvMCwxLzAsMS8wXSkuY2F0Y2goZT0+e3dhcm4oYGdldEFubm90YXRpb25zRGF0YSAtIGlnbm9yaW5nIHRleHRDb250ZW50IGR1cmluZyAiJHt0Lm5hbWV9IiB0YXNrOiAiJHtlfSIuYCl9KSl9ZWxzZSBhLm92ZXJsYXlzVGV4dENvbnRlbnQmJm4mJm0ucHVzaChhKX1pZihtLmxlbmd0aD4wKXtjb25zdCBhPW5ldyBJbnRlcnNlY3RvcihtKTtyLnB1c2godGhpcy5leHRyYWN0VGV4dENvbnRlbnQoe2hhbmRsZXI6ZSx0YXNrOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6ITEsZGlzYWJsZU5vcm1hbGl6YXRpb246ITEsc2luazpudWxsLGludGVyc2VjdG9yOmF9KS50aGVuKCgpPT57YS5zZXRUZXh0KCl9KSl9YXdhaXQgUHJvbWlzZS5hbGwocik7cmV0dXJuIHN9Z2V0IGFubm90YXRpb25zKCl7Y29uc3QgZT10aGlzLiNBYSgiQW5ub3RzIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJhbm5vdGF0aW9ucyIsQXJyYXkuaXNBcnJheShlKT9lOltdKX1nZXQgX3BhcnNlZEFubm90YXRpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJfcGFyc2VkQW5ub3RhdGlvbnMiLHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiYW5ub3RhdGlvbnMiKS50aGVuKGFzeW5jIGU9PntpZigwPT09ZS5sZW5ndGgpcmV0dXJuIGU7Y29uc3RbdCxhXT1hd2FpdCBQcm9taXNlLmFsbChbdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiYW5ub3RhdGlvbkdsb2JhbHMiKSx0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJmaWVsZE9iamVjdHMiKV0pO2lmKCF0KXJldHVybltdO2NvbnN0IG49YT8ub3JwaGFuRmllbGRzLHM9W107Zm9yKGNvbnN0IGEgb2YgZSlzLnB1c2goQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKHRoaXMueHJlZixhLHQsdGhpcy5fbG9jYWxJZEZhY3RvcnksITEsbixudWxsLHRoaXMucmVmKS5jYXRjaChlPT57d2FybihgX3BhcnNlZEFubm90YXRpb25zOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSk7Y29uc3Qgcj1bXTtsZXQgaSxvO2Zvcihjb25zdCBlIG9mIGF3YWl0IFByb21pc2UuYWxsKHMpKWUmJihlIGluc3RhbmNlb2YgV2lkZ2V0QW5ub3RhdGlvbj8ob3x8PVtdKS5wdXNoKGUpOmUgaW5zdGFuY2VvZiBQb3B1cEFubm90YXRpb24/KGl8fD1bXSkucHVzaChlKTpyLnB1c2goZSkpO28mJnIucHVzaCguLi5vKTtpJiZyLnB1c2goLi4uaSk7cmV0dXJuIHJ9KSl9Z2V0IGpzQWN0aW9ucygpe3JldHVybiBzaGFkb3codGhpcywianNBY3Rpb25zIixjb2xsZWN0QWN0aW9ucyh0aGlzLnhyZWYsdGhpcy5wYWdlRGljdCxmZSkpfWFzeW5jIGNvbGxlY3RBbm5vdGF0aW9uc0J5VHlwZShlLHQsYSxuLHMpe2NvbnN0e3BhZ2VJbmRleDpyfT10aGlzO2lmKE9iamVjdC5oYXNPd24odGhpcywiX3BhcnNlZEFubm90YXRpb25zIikpe2NvbnN0IGU9YXdhaXQgdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnM7Zm9yKGNvbnN0e2RhdGE6dH1vZiBlKWlmKCFhfHxhLmhhcyh0LmFubm90YXRpb25UeXBlKSl7dC5wYWdlSW5kZXg9cjtuLnB1c2goUHJvbWlzZS5yZXNvbHZlKHQpKX1yZXR1cm59Y29uc3QgaT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsImFubm90YXRpb25zIik7bGV0IG87Zm9yKGNvbnN0IGwgb2YgaSluLnB1c2goQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKHRoaXMueHJlZixsLHMsdGhpcy5fbG9jYWxJZEZhY3RvcnksITEsbnVsbCxhLHRoaXMucmVmKS50aGVuKGFzeW5jIGE9PntpZighYSlyZXR1cm4gbnVsbDthLmRhdGEucGFnZUluZGV4PXI7aWYoYS5oYXNUZXh0Q29udGVudCYmYS52aWV3YWJsZSl7bz8/PXRoaXMuX2NyZWF0ZVBhcnRpYWxFdmFsdWF0b3IoZSk7YXdhaXQgYS5leHRyYWN0VGV4dENvbnRlbnQobyx0LFstMS8wLC0xLzAsMS8wLDEvMF0pfXJldHVybiBhLmRhdGF9KS5jYXRjaChlPT57d2FybihgY29sbGVjdEFubm90YXRpb25zQnlUeXBlOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSl9fWNvbnN0IE9mPW5ldyBVaW50OEFycmF5KFszNyw4MCw2OCw3MCw0NV0pLEJmPW5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDk3LDExNCwxMTYsMTIwLDExNCwxMDEsMTAyXSksRGY9bmV3IFVpbnQ4QXJyYXkoWzEwMSwxMTAsMTAwLDExMSw5OCwxMDZdKTtmdW5jdGlvbiBmaW5kKGUsdCxhPTEwMjQsbj0hMSl7Y29uc3Qgcz10Lmxlbmd0aCxyPWUucGVla0J5dGVzKGEpLGk9ci5sZW5ndGgtcztpZihpPD0wKXJldHVybiExO2lmKG4pe2NvbnN0IGE9cy0xO2xldCBuPXIubGVuZ3RoLTE7Zm9yKDtuPj1hOyl7bGV0IGk9MDtmb3IoO2k8cyYmcltuLWldPT09dFthLWldOylpKys7aWYoaT49cyl7ZS5wb3MrPW4tYTtyZXR1cm4hMH1uLS19fWVsc2V7bGV0IGE9MDtmb3IoO2E8PWk7KXtsZXQgbj0wO2Zvcig7bjxzJiZyW2Erbl09PT10W25dOyluKys7aWYobj49cyl7ZS5wb3MrPWE7cmV0dXJuITB9YSsrfX1yZXR1cm4hMX1jbGFzcyBQREZEb2N1bWVudHsjRmE9bmV3IE1hcDsjVGE9bnVsbDsjUmE9bnVsbDtjb25zdHJ1Y3RvcihlLHQpe2lmKHQubGVuZ3RoPD0wKXRocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJUaGUgUERGIGZpbGUgaXMgZW1wdHksIGkuZS4gaXRzIHNpemUgaXMgemVybyBieXRlcy4iKTt0aGlzLnBkZk1hbmFnZXI9ZTt0aGlzLnN0cmVhbT10O3RoaXMueHJlZj1uZXcgWFJlZih0LGUpO2NvbnN0IGE9e2ZvbnQ6MH07dGhpcy5fZ2xvYmFsSWRGYWN0b3J5PWNsYXNze3N0YXRpYyBnZXREb2NJZCgpe3JldHVybmBnXyR7ZS5kb2NJZH1gfXN0YXRpYyBjcmVhdGVGb250SWQoKXtyZXR1cm4iZiIrICsrYS5mb250fXN0YXRpYyBjcmVhdGVPYmpJZCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGNyZWF0ZU9iaklkYCBjYWxsZWQuIil9c3RhdGljIGdldFBhZ2VPYmpJZCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldFBhZ2VPYmpJZGAgY2FsbGVkLiIpfX19cGFyc2UoZSl7dGhpcy54cmVmLnBhcnNlKGUpO3RoaXMuY2F0YWxvZz1uZXcgQ2F0YWxvZyh0aGlzLnBkZk1hbmFnZXIsdGhpcy54cmVmKX1nZXQgbGluZWFyaXphdGlvbigpe2xldCBlPW51bGw7dHJ5e2U9TGluZWFyaXphdGlvbi5jcmVhdGUodGhpcy5zdHJlYW0pfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oZSl9cmV0dXJuIHNoYWRvdyh0aGlzLCJsaW5lYXJpemF0aW9uIixlKX1nZXQgc3RhcnRYUmVmKCl7Y29uc3QgZT10aGlzLnN0cmVhbTtsZXQgdD0wO2lmKHRoaXMubGluZWFyaXphdGlvbil7ZS5yZXNldCgpO2lmKGZpbmQoZSxEZikpe2Uuc2tpcCg2KTtsZXQgYT1lLnBlZWtCeXRlKCk7Zm9yKDtpc1doaXRlU3BhY2UoYSk7KXtlLnBvcysrO2E9ZS5wZWVrQnl0ZSgpfXQ9ZS5wb3MtZS5zdGFydH19ZWxzZXtjb25zdCBhPTEwMjQsbj1CZi5sZW5ndGg7bGV0IHM9ITEscj1lLmVuZDtmb3IoOyFzJiZyPjA7KXtyLT1hLW47cjwwJiYocj0wKTtlLnBvcz1yO3M9ZmluZChlLEJmLGEsITApfWlmKHMpe2Uuc2tpcCg5KTtsZXQgYTtkb3thPWUuZ2V0Qnl0ZSgpfXdoaWxlKGlzV2hpdGVTcGFjZShhKSk7bGV0IG49IiI7Zm9yKDthPj0zMiYmYTw9NTc7KXtuKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGEpO2E9ZS5nZXRCeXRlKCl9dD1wYXJzZUludChuLDEwKTtpc05hTih0KSYmKHQ9MCl9fXJldHVybiBzaGFkb3codGhpcywic3RhcnRYUmVmIix0KX1jaGVja0hlYWRlcigpe2NvbnN0IGU9dGhpcy5zdHJlYW07ZS5yZXNldCgpO2lmKCFmaW5kKGUsT2YpKXJldHVybjtlLm1vdmVTdGFydCgpO2Uuc2tpcChPZi5sZW5ndGgpO2xldCB0LGE9IiI7Zm9yKDsodD1lLmdldEJ5dGUoKSk+MzImJmEubGVuZ3RoPDc7KWErPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7cGEudGVzdChhKT90aGlzLiNSYT1hOndhcm4oYEludmFsaWQgUERGIGhlYWRlciB2ZXJzaW9uOiAke2F9YCl9cGFyc2VTdGFydFhSZWYoKXt0aGlzLnhyZWYuc2V0U3RhcnRYUmVmKHRoaXMuc3RhcnRYUmVmKX1nZXQgbnVtUGFnZXMoKXtsZXQgZT0wO2U9dGhpcy5jYXRhbG9nLmhhc0FjdHVhbE51bVBhZ2VzP3RoaXMuY2F0YWxvZy5udW1QYWdlczp0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldE51bVBhZ2VzKCk6dGhpcy5saW5lYXJpemF0aW9uP3RoaXMubGluZWFyaXphdGlvbi5udW1QYWdlczp0aGlzLmNhdGFsb2cubnVtUGFnZXM7cmV0dXJuIHNoYWRvdyh0aGlzLCJudW1QYWdlcyIsZSl9I09hKGUsdD0wKXtyZXR1cm4hIUFycmF5LmlzQXJyYXkoZSkmJmUuZXZlcnkoZT0+e2lmKCEoKGU9dGhpcy54cmVmLmZldGNoSWZSZWYoZSkpaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4hMTtpZihlLmhhcygiS2lkcyIpKXtpZigrK3Q+MTApe3dhcm4oIiNoYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzOiBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCByZWFjaGVkIik7cmV0dXJuITF9cmV0dXJuIHRoaXMuI09hKGUuZ2V0KCJLaWRzIiksdCl9Y29uc3QgYT1pc05hbWUoZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDplLGtleToiRlQifSksIlNpZyIpLG49ZS5nZXQoIlJlY3QiKSxzPUFycmF5LmlzQXJyYXkobikmJm4uZXZlcnkoZT0+MD09PWUpO3JldHVybiBhJiZzfSl9Z2V0IF94ZmFTdHJlYW1zKCl7Y29uc3R7YWNyb0Zvcm06ZX09dGhpcy5jYXRhbG9nO2lmKCFlKXJldHVybiBudWxsO2NvbnN0IHQ9ZS5nZXQoIlhGQSIpLGE9bmV3IE1hcChbInhkcDp4ZHAiLCJ0ZW1wbGF0ZSIsImRhdGFzZXRzIiwiY29uZmlnIiwiY29ubmVjdGlvblNldCIsImxvY2FsZVNldCIsInN0eWxlc2hlZXQiLCIveGRwOnhkcCJdLm1hcChlPT5bZSxudWxsXSkpO2lmKHQgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhdC5pc0VtcHR5KXthLnNldCgieGRwOnhkcCIsdCk7cmV0dXJuIGF9aWYoIUFycmF5LmlzQXJyYXkodCl8fDA9PT10Lmxlbmd0aClyZXR1cm4gbnVsbDtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKz0yKXtsZXQgcztzPTA9PT1lPyJ4ZHA6eGRwIjplPT09bi0yPyIveGRwOnhkcCI6dFtlXTtpZighYS5oYXMocykpY29udGludWU7Y29uc3Qgcj10aGlzLnhyZWYuZmV0Y2hJZlJlZih0W2UrMV0pO3IgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhci5pc0VtcHR5JiZhLnNldChzLHIpfXJldHVybiBhfWdldCB4ZmFEYXRhc2V0cygpe2NvbnN0IGU9dGhpcy5feGZhU3RyZWFtcztpZighZSlyZXR1cm4gc2hhZG93KHRoaXMsInhmYURhdGFzZXRzIixudWxsKTtmb3IoY29uc3QgdCBvZlsiZGF0YXNldHMiLCJ4ZHA6eGRwIl0pe2NvbnN0IGE9ZS5nZXQodCk7aWYoYSl0cnl7Y29uc3QgZT1zdHJpbmdUb1VURjhTdHJpbmcoYS5nZXRTdHJpbmcoKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFEYXRhc2V0cyIsbmV3IERhdGFzZXRSZWFkZXIoe1t0XTplfSkpfWNhdGNoe3dhcm4oIlhGQSAtIEludmFsaWQgdXRmLTggc3RyaW5nLiIpO2JyZWFrfX1yZXR1cm4gc2hhZG93KHRoaXMsInhmYURhdGFzZXRzIixudWxsKX1nZXQgeGZhRGF0YSgpe2NvbnN0IGU9dGhpcy5feGZhU3RyZWFtcztpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBNYXA7Zm9yKGNvbnN0W2Esbl1vZiBlKWlmKG4pdHJ5e3Quc2V0KGEsc3RyaW5nVG9VVEY4U3RyaW5nKG4uZ2V0U3RyaW5nKCkpKX1jYXRjaHt3YXJuKCJYRkEgLSBJbnZhbGlkIHV0Zi04IHN0cmluZy4iKTtyZXR1cm4gbnVsbH1yZXR1cm4gdH1nZXQgeGZhRmFjdG9yeSgpe2xldCBlO3RoaXMucGRmTWFuYWdlci5lbmFibGVYZmEmJnRoaXMuY2F0YWxvZy5uZWVkc1JlbmRlcmluZyYmdGhpcy5mb3JtSW5mby5oYXNYZmEmJiF0aGlzLmZvcm1JbmZvLmhhc0Fjcm9Gb3JtJiYoZT10aGlzLnhmYURhdGEpO3JldHVybiBzaGFkb3codGhpcywieGZhRmFjdG9yeSIsZT9uZXcgWEZBRmFjdG9yeShlKTpudWxsKX1nZXQgaXNQdXJlWGZhKCl7cmV0dXJuISF0aGlzLnhmYUZhY3RvcnkmJnRoaXMueGZhRmFjdG9yeS5pc1ZhbGlkKCl9Z2V0IGh0bWxGb3JYZmEoKXtyZXR1cm4gdGhpcy54ZmFGYWN0b3J5P3RoaXMueGZhRmFjdG9yeS5nZXRQYWdlcygpOm51bGx9YXN5bmMjQmEoKXtjb25zdCBlPWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJ4ZmFJbWFnZXMiKTtlJiZ0aGlzLnhmYUZhY3Rvcnkuc2V0SW1hZ2VzKGUpfWFzeW5jI0RhKGUsdCl7Y29uc3QgYT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKTtpZighYSlyZXR1cm47Y29uc3Qgbj1hd2FpdCBhLmdldEFzeW5jKCJEUiIpO2lmKCEobiBpbnN0YW5jZW9mIERpY3QpKXJldHVybjthd2FpdCBPYmplY3RMb2FkZXIubG9hZChuLFsiRm9udCJdLHRoaXMueHJlZik7Y29uc3Qgcz1uLmdldCgiRm9udCIpO2lmKCEocyBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCByPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLnBkZk1hbmFnZXIuZXZhbHVhdG9yT3B0aW9ucyx7dXNlU3lzdGVtRm9udHM6ITF9KSx7YnVpbHRJbkNNYXBDYWNoZTppLGZvbnRDYWNoZTpvLHN0YW5kYXJkRm9udERhdGFDYWNoZTpsfT10aGlzLmNhdGFsb2csZj1uZXcgUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDotMSxpZEZhY3Rvcnk6dGhpcy5fZ2xvYmFsSWRGYWN0b3J5LGZvbnRDYWNoZTpvLGJ1aWx0SW5DTWFwQ2FjaGU6aSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6bCxvcHRpb25zOnJ9KSxjPW5ldyBPcGVyYXRvckxpc3QsaD1bXSx1PXtnZXQgZm9udCgpe3JldHVybiBoLmF0KC0xKX0sc2V0IGZvbnQoZSl7aC5wdXNoKGUpfSxjbG9uZSgpe3JldHVybiB0aGlzfX0scGFyc2VGb250PShlLGEscyk9PmYuaGFuZGxlU2V0Rm9udChuLFtOYW1lLmdldChlKSwxXSxudWxsLGMsdCx1LGEscykuY2F0Y2goZT0+e3dhcm4oYGxvYWRYZmFGb250czogIiR7ZX0iLmApO3JldHVybiBudWxsfSksbT1bXTtmb3IoY29uc3RbZSx0XW9mIHMpe2NvbnN0IGE9dC5nZXQoIkZvbnREZXNjcmlwdG9yIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7Y29uc3Qgbj17Zm9udEZhbWlseTpub3JtYWxpemVDU1NGb250RmFtaWx5KGEuZ2V0KCJGb250RmFtaWx5IikpLGZvbnRXZWlnaHQ6YS5nZXQoIkZvbnRXZWlnaHQiKSxpdGFsaWNBbmdsZTotYS5nZXQoIkl0YWxpY0FuZ2xlIil9O3ZhbGlkYXRlQ1NTRm9udChuKSYmbS5wdXNoKHBhcnNlRm9udChlLG51bGwsbikpfWF3YWl0IFByb21pc2UuYWxsKG0pO2NvbnN0IHA9dGhpcy54ZmFGYWN0b3J5LnNldEZvbnRzKGgpO2lmKCFwKXJldHVybjtyLmlnbm9yZUVycm9ycz0hMDttLmxlbmd0aD0wO2gubGVuZ3RoPTA7Y29uc3QgZD1uZXcgU2V0O2Zvcihjb25zdCBlIG9mIHApZ2V0WGZhRm9udE5hbWUoYCR7ZX0tUmVndWxhcmApfHxkLmFkZChlKTtkLnNpemUmJnAucHVzaCgiUGRmSlMtRmFsbGJhY2siKTtmb3IoY29uc3QgZSBvZiBwKWlmKCFkLmhhcyhlKSlmb3IoY29uc3QgdCBvZlt7bmFtZToiUmVndWxhciIsZm9udFdlaWdodDo0MDAsaXRhbGljQW5nbGU6MH0se25hbWU6IkJvbGQiLGZvbnRXZWlnaHQ6NzAwLGl0YWxpY0FuZ2xlOjB9LHtuYW1lOiJJdGFsaWMiLGZvbnRXZWlnaHQ6NDAwLGl0YWxpY0FuZ2xlOjEyfSx7bmFtZToiQm9sZEl0YWxpYyIsZm9udFdlaWdodDo3MDAsaXRhbGljQW5nbGU6MTJ9XSl7Y29uc3QgYT1gJHtlfS0ke3QubmFtZX1gO20ucHVzaChwYXJzZUZvbnQoYSxnZXRYZmFGb250RGljdChhKSx7Zm9udEZhbWlseTplLGZvbnRXZWlnaHQ6dC5mb250V2VpZ2h0LGl0YWxpY0FuZ2xlOnQuaXRhbGljQW5nbGV9KSl9YXdhaXQgUHJvbWlzZS5hbGwobSk7dGhpcy54ZmFGYWN0b3J5LmFwcGVuZEZvbnRzKGgsZCl9bG9hZFhmYVJlc291cmNlcyhlLHQpe3JldHVybiBQcm9taXNlLmFsbChbdGhpcy4jRGEoZSx0KS5jYXRjaCgoKT0+e30pLHRoaXMuI0JhKCldKX1zZXJpYWxpemVYZmFEYXRhKGUpe3JldHVybiB0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LnNlcmlhbGl6ZURhdGEoZSk6bnVsbH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLmNhdGFsb2cudmVyc2lvbnx8dGhpcy4jUmF9Z2V0IGZvcm1JbmZvKCl7Y29uc3QgZT17aGFzRmllbGRzOiExLGhhc0Fjcm9Gb3JtOiExLGhhc1hmYTohMSxoYXNTaWduYXR1cmVzOiExfSx7YWNyb0Zvcm06dH09dGhpcy5jYXRhbG9nO2lmKCF0KXJldHVybiBzaGFkb3codGhpcywiZm9ybUluZm8iLGUpO3RyeXtjb25zdCBhPXQuZ2V0KCJGaWVsZHMiKSxuPUFycmF5LmlzQXJyYXkoYSkmJmEubGVuZ3RoPjA7ZS5oYXNGaWVsZHM9bjtjb25zdCBzPXQuZ2V0KCJYRkEiKTtlLmhhc1hmYT1BcnJheS5pc0FycmF5KHMpJiZzLmxlbmd0aD4wfHxzIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmIXMuaXNFbXB0eTtjb25zdCByPSEhKDEmdC5nZXQoIlNpZ0ZsYWdzIikpLGk9ciYmdGhpcy4jT2EoYSk7ZS5oYXNBY3JvRm9ybT1uJiYhaTtlLmhhc1NpZ25hdHVyZXM9cn1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBDYW5ub3QgZmV0Y2ggZm9ybSBpbmZvcm1hdGlvbjogIiR7ZX0iLmApfXJldHVybiBzaGFkb3codGhpcywiZm9ybUluZm8iLGUpfWdldCBkb2N1bWVudEluZm8oKXtjb25zdHtjYXRhbG9nOmUsZm9ybUluZm86dCx4cmVmOmF9PXRoaXMsbj17UERGRm9ybWF0VmVyc2lvbjp0aGlzLnZlcnNpb24sTGFuZ3VhZ2U6ZS5sYW5nLEVuY3J5cHRGaWx0ZXJOYW1lOmEuZW5jcnlwdD8uZmlsdGVyTmFtZT8/bnVsbCxJc0xpbmVhcml6ZWQ6ISF0aGlzLmxpbmVhcml6YXRpb24sSXNBY3JvRm9ybVByZXNlbnQ6dC5oYXNBY3JvRm9ybSxJc1hGQVByZXNlbnQ6dC5oYXNYZmEsSXNDb2xsZWN0aW9uUHJlc2VudDohIWUuY29sbGVjdGlvbixJc1NpZ25hdHVyZXNQcmVzZW50OnQuaGFzU2lnbmF0dXJlc307bGV0IHM7dHJ5e3M9YS50cmFpbGVyLmdldCgiSW5mbyIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIlRoZSBkb2N1bWVudCBpbmZvcm1hdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuIil9aWYoIShzIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIHNoYWRvdyh0aGlzLCJkb2N1bWVudEluZm8iLG4pO2Zvcihjb25zdFtlLHRdb2Ygcyl7c3dpdGNoKGUpe2Nhc2UiVGl0bGUiOmNhc2UiQXV0aG9yIjpjYXNlIlN1YmplY3QiOmNhc2UiS2V5d29yZHMiOmNhc2UiQ3JlYXRvciI6Y2FzZSJQcm9kdWNlciI6Y2FzZSJDcmVhdGlvbkRhdGUiOmNhc2UiTW9kRGF0ZSI6aWYoInN0cmluZyI9PXR5cGVvZiB0KXtuW2VdPXN0cmluZ1RvUERGU3RyaW5nKHQpO2NvbnRpbnVlfWJyZWFrO2Nhc2UiVHJhcHBlZCI6aWYodCBpbnN0YW5jZW9mIE5hbWUpe25bZV09dDtjb250aW51ZX1icmVhaztkZWZhdWx0OmxldCBhO3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJzdHJpbmciOmE9c3RyaW5nVG9QREZTdHJpbmcodCk7YnJlYWs7Y2FzZSJudW1iZXIiOmNhc2UiYm9vbGVhbiI6YT10O2JyZWFrO2RlZmF1bHQ6aWYodCBpbnN0YW5jZW9mIE5hbWUpe2E9dDticmVha313YXJuKGBCYWQgdmFsdWUsIGZvciBjdXN0b20ga2V5ICIke2V9IiwgaW4gSW5mbzogJHt0fS5gKTtjb250aW51ZX0obi5DdXN0b20/Pz1uZXcgTWFwKS5zZXQoZSxhKTtjb250aW51ZX13YXJuKGBCYWQgdmFsdWUsIGZvciBrZXkgIiR7ZX0iLCBpbiBJbmZvOiAke3R9LmApfXJldHVybiBzaGFkb3codGhpcywiZG9jdW1lbnRJbmZvIixuKX1nZXQgZmluZ2VycHJpbnRzKCl7Y29uc3QgZT0iXDAiLnJlcGVhdCgxNik7ZnVuY3Rpb24gdmFsaWRhdGUodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiYxNj09PXQubGVuZ3RoJiZ0IT09ZX1jb25zdCB0PXRoaXMueHJlZi50cmFpbGVyLmdldCgiSUQiKTtsZXQgYSxuO2lmKEFycmF5LmlzQXJyYXkodCkmJnZhbGlkYXRlKHRbMF0pKXthPXN0cmluZ1RvQnl0ZXModFswXSk7dFsxXSE9PXRbMF0mJnZhbGlkYXRlKHRbMV0pJiYobj1zdHJpbmdUb0J5dGVzKHRbMV0pKX1lbHNlIGE9Y2FsY3VsYXRlTUQ1KHRoaXMuc3RyZWFtLmdldEJ5dGVSYW5nZSgwLDEwMjQpLDAsMTAyNCk7cmV0dXJuIHNoYWRvdyh0aGlzLCJmaW5nZXJwcmludHMiLFthLnRvSGV4KCksbj8udG9IZXgoKT8/bnVsbF0pfWFzeW5jI0hhKGUpe2NvbnN0e2NhdGFsb2c6dCxsaW5lYXJpemF0aW9uOmEseHJlZjpufT10aGlzLHM9UmVmLmdldChhLm9iamVjdE51bWJlckZpcnN0LDApO3RyeXtjb25zdCBlPWF3YWl0IG4uZmV0Y2hBc3luYyhzKTtpZihlIGluc3RhbmNlb2YgRGljdCl7bGV0IGE9ZS5nZXRSYXcoIlR5cGUiKTthIGluc3RhbmNlb2YgUmVmJiYoYT1hd2FpdCBuLmZldGNoQXN5bmMoYSkpO2lmKGlzTmFtZShhLCJQYWdlIil8fCFlLmhhcygiVHlwZSIpJiYhZS5oYXMoIktpZHMiKSYmZS5oYXMoIkNvbnRlbnRzIikpe3QucGFnZUtpZHNDb3VudENhY2hlLmhhcyhzKXx8dC5wYWdlS2lkc0NvdW50Q2FjaGUucHV0KHMsMSk7dC5wYWdlSW5kZXhDYWNoZS5oYXMocyl8fHQucGFnZUluZGV4Q2FjaGUucHV0KHMsMCk7cmV0dXJuW2Usc119fXRocm93IG5ldyBGb3JtYXRFcnJvcigiVGhlIExpbmVhcml6YXRpb24gZGljdGlvbmFyeSBkb2Vzbid0IHBvaW50IHRvIGEgdmFsaWQgUGFnZSBkaWN0aW9uYXJ5LiIpfWNhdGNoKGEpe3dhcm4oYF9nZXRMaW5lYXJpemF0aW9uUGFnZTogIiR7YS5tZXNzYWdlfSIuYCk7cmV0dXJuIHQuZ2V0UGFnZURpY3QoZSl9fWdldFBhZ2UoZSl7Y29uc3QgdD10aGlzLiNGYS5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdHtjYXRhbG9nOmEsbGluZWFyaXphdGlvbjpuLHhmYUZhY3Rvcnk6c309dGhpcztsZXQgcjtyPXM/UHJvbWlzZS5yZXNvbHZlKFtEaWN0LmVtcHR5LG51bGxdKTpuPy5wYWdlRmlyc3Q9PT1lP3RoaXMuI0hhKGUpOmEuZ2V0UGFnZURpY3QoZSk7cj1yLnRoZW4oKFt0LG5dKT0+bmV3IFBhZ2Uoe3BkZk1hbmFnZXI6dGhpcy5wZGZNYW5hZ2VyLHhyZWY6dGhpcy54cmVmLHBhZ2VJbmRleDplLHBhZ2VEaWN0OnQscmVmOm4sZ2xvYmFsSWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6YS5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTphLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOmEuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbENvbG9yU3BhY2VDYWNoZTphLmdsb2JhbENvbG9yU3BhY2VDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOmEuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6YS5zeXN0ZW1Gb250Q2FjaGUsbm9uQmxlbmRNb2Rlc1NldDphLm5vbkJsZW5kTW9kZXNTZXQseGZhRmFjdG9yeTpzfSkpO3RoaXMuI0ZhLnNldChlLHIpO3JldHVybiByfWFzeW5jIGNoZWNrRmlyc3RQYWdlKGU9ITEpe2lmKCFlKXRyeXthd2FpdCB0aGlzLmdldFBhZ2UoMCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIFhSZWZFbnRyeUV4Y2VwdGlvbil7dGhpcy4jRmEuZGVsZXRlKDApO2F3YWl0IHRoaXMuY2xlYW51cCgpO3Rocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb259fX1hc3luYyBjaGVja0xhc3RQYWdlKGU9ITEpe2NvbnN0e2NhdGFsb2c6dCxwZGZNYW5hZ2VyOmF9PXRoaXM7dC5zZXRBY3R1YWxOdW1QYWdlcygpO2xldCBuO3RyeXthd2FpdCBQcm9taXNlLmFsbChbYS5lbnN1cmVEb2MoInhmYUZhY3RvcnkiKSxhLmVuc3VyZURvYygibGluZWFyaXphdGlvbiIpLGEuZW5zdXJlQ2F0YWxvZygibnVtUGFnZXMiKV0pO2lmKHRoaXMueGZhRmFjdG9yeSlyZXR1cm47bj10aGlzLmxpbmVhcml6YXRpb24/dGhpcy5saW5lYXJpemF0aW9uLm51bVBhZ2VzOnQubnVtUGFnZXM7aWYoIU51bWJlci5pc0ludGVnZXIobikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlIGNvdW50IGlzIG5vdCBhbiBpbnRlZ2VyLiIpO2lmKG48PTEpcmV0dXJuO2F3YWl0IHRoaXMuZ2V0UGFnZShuLTEpfWNhdGNoKHMpe3RoaXMuI0ZhLmRlbGV0ZShuLTEpO2F3YWl0IHRoaXMuY2xlYW51cCgpO2lmKHMgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb247d2FybihgY2hlY2tMYXN0UGFnZSAtIGludmFsaWQgL1BhZ2VzIHRyZWUgL0NvdW50OiAke259LmApO2xldCByO3RyeXtyPWF3YWl0IHQuZ2V0QWxsUGFnZURpY3RzKGUpfWNhdGNoKGEpe2lmKGEgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb247dC5zZXRBY3R1YWxOdW1QYWdlcygxKTtyZXR1cm59Zm9yKGNvbnN0W2UsW24sc11db2Ygcil7bGV0IHI7aWYobiBpbnN0YW5jZW9mIEVycm9yKXtyPVByb21pc2UucmVqZWN0KG4pO3IuY2F0Y2goKCk9Pnt9KX1lbHNlIHI9UHJvbWlzZS5yZXNvbHZlKG5ldyBQYWdlKHtwZGZNYW5hZ2VyOmEseHJlZjp0aGlzLnhyZWYscGFnZUluZGV4OmUscGFnZURpY3Q6bixyZWY6cyxnbG9iYWxJZEZhY3Rvcnk6dGhpcy5fZ2xvYmFsSWRGYWN0b3J5LGZvbnRDYWNoZTp0LmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnQuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dC5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnRoaXMuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dC5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0LnN5c3RlbUZvbnRDYWNoZSxub25CbGVuZE1vZGVzU2V0OnQubm9uQmxlbmRNb2Rlc1NldCx4ZmFGYWN0b3J5Om51bGx9KSk7dGhpcy4jRmEuc2V0KGUscil9dC5zZXRBY3R1YWxOdW1QYWdlcyhyLnNpemUpfX1hc3luYyBmb250RmFsbGJhY2soZSx0KXtjb25zdHtjYXRhbG9nOmEscGRmTWFuYWdlcjpufT10aGlzO2Zvcihjb25zdCBzIG9mIGF3YWl0IFByb21pc2UuYWxsKGEuZm9udENhY2hlKSlpZihzLmxvYWRlZE5hbWU9PT1lKXtzLmZhbGxiYWNrKHQsbi5ldmFsdWF0b3JPcHRpb25zKTtyZXR1cm59fWFzeW5jIGNsZWFudXAoZT0hMSl7cmV0dXJuIHRoaXMuY2F0YWxvZz90aGlzLmNhdGFsb2cuY2xlYW51cChlKTpjbGVhckdsb2JhbENhY2hlcygpfWFzeW5jI01hKGUsdCxhLG4scyxyLGkpe2NvbnN0e3hyZWY6b309dGhpcztpZighKGEgaW5zdGFuY2VvZiBSZWYpfHxyLmhhcyhhKSlyZXR1cm47ci5wdXQoYSk7Y29uc3QgbD1hd2FpdCBvLmZldGNoQXN5bmMoYSk7aWYoIShsIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2xldCBmPWF3YWl0IGwuZ2V0QXN5bmMoIlN1YnR5cGUiKTtmPWYgaW5zdGFuY2VvZiBOYW1lP2YubmFtZTpudWxsO2lmKCJMaW5rIj09PWYpcmV0dXJuO2lmKGwuaGFzKCJUIikpe2NvbnN0IHQ9c3RyaW5nVG9QREZTdHJpbmcoYXdhaXQgbC5nZXRBc3luYygiVCIpKTtlPSIiPT09ZT90OmAke2V9LiR7dH1gfWVsc2V7bGV0IGE9bDtjb25zdCBuPW5ldyBSZWZTZXQ7Zm9yKDs7KXthPWEuZ2V0UmF3KCJQYXJlbnQiKXx8dDtpZihhIGluc3RhbmNlb2YgUmVmKXtpZihyLmhhcyhhKXx8bi5oYXMoYSkpYnJlYWs7bi5wdXQoYSk7YT1hd2FpdCBvLmZldGNoQXN5bmMoYSl9aWYoIShhIGluc3RhbmNlb2YgRGljdCkpYnJlYWs7aWYoYS5oYXMoIlQiKSl7Y29uc3QgdD1zdHJpbmdUb1BERlN0cmluZyhhd2FpdCBhLmdldEFzeW5jKCJUIikpO2U9IiI9PT1lP3Q6YCR7ZX0uJHt0fWA7YnJlYWt9fX10JiYhbC5oYXMoIlBhcmVudCIpJiZpc05hbWUobC5nZXQoIlN1YnR5cGUiKSwiV2lkZ2V0IikmJmkucHV0KGEsdCk7bi5nZXRPckluc2VydENvbXB1dGVkKGUsbWFrZUFycikucHVzaChBbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGUobyxhLHMsbnVsbCwhMCxpLG51bGwsbnVsbCkudGhlbihlPT5lPy5nZXRGaWVsZE9iamVjdCgpKS5jYXRjaChlPT57d2FybihgI2NvbGxlY3RGaWVsZE9iamVjdHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKTtpZighbC5oYXMoIktpZHMiKSlyZXR1cm47Y29uc3QgYz1hd2FpdCBsLmdldEFzeW5jKCJLaWRzIik7aWYoQXJyYXkuaXNBcnJheShjKSlmb3IoY29uc3QgdCBvZiBjKWF3YWl0IHRoaXMuI01hKGUsYSx0LG4scyxyLGkpfWdldCBmaWVsZE9iamVjdHMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImZpZWxkT2JqZWN0cyIsdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiZm9ybUluZm8iKS50aGVuKGFzeW5jIGU9PntpZighZS5oYXNGaWVsZHMpcmV0dXJuIG51bGw7Y29uc3QgdD1hd2FpdCB0aGlzLmFubm90YXRpb25HbG9iYWxzO2lmKCF0KXJldHVybiBudWxsO2NvbnN0e2Fjcm9Gb3JtOmF9PXQsbj1uZXcgUmVmU2V0LHM9bmV3IE1hcCxyPW5ldyBNYXAsaT1uZXcgUmVmTWFwO2Zvcihjb25zdCBlIG9mIGEuZ2V0KCJGaWVsZHMiKSlhd2FpdCB0aGlzLiNNYSgiIixudWxsLGUscix0LG4saSk7Y29uc3Qgbz1bXTtmb3IoY29uc3RbZSx0XW9mIHIpby5wdXNoKFByb21pc2UuYWxsKHQpLnRoZW4odD0+eyh0PXQuZmlsdGVyKEJvb2xlYW4pKS5sZW5ndGg+MCYmcy5zZXQoZSx0KX0pKTthd2FpdCBQcm9taXNlLmFsbChvKTtyZXR1cm57YWxsRmllbGRzOnMuc2l6ZT9zOm51bGwsb3JwaGFuRmllbGRzOml9fSkpfWFzeW5jI05hKGUsdCxhKXtpZihBcnJheS5pc0FycmF5KGUpKWZvcihjb25zdCBuIG9mIGUpe2lmKG4gaW5zdGFuY2VvZiBSZWYpe2lmKGEuaGFzKG4pKWNvbnRpbnVlO2EucHV0KG4pfWNvbnN0IGU9YXdhaXQgdGhpcy54cmVmLmZldGNoSWZSZWZBc3luYyhuKTtpZihlIGluc3RhbmNlb2YgRGljdCl7aWYoaXNOYW1lKGF3YWl0IGUuZ2V0QXN5bmMoIkZUIiksIlNpZyIpKXtjb25zdCBhPWF3YWl0IGUuZ2V0QXN5bmMoIlYiKTtpZihhIGluc3RhbmNlb2YgRGljdCl7Y29uc3Qgcz1hd2FpdCB0aGlzLiNQYShlLGEsbik7cyYmdC5wdXNoKHMpfX1lLmhhcygiS2lkcyIpJiZhd2FpdCB0aGlzLiNOYShhd2FpdCBlLmdldEFzeW5jKCJLaWRzIiksdCxhKX19fWFzeW5jI0VhKGUsdCl7dHJ5e3JldHVybiB0aGlzLnN0cmVhbS5nZXRCeXRlUmFuZ2UoZSx0KX1jYXRjaChhKXtpZighKGEgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgYTthd2FpdCB0aGlzLnBkZk1hbmFnZXIucmVxdWVzdFJhbmdlKGUsdCk7cmV0dXJuIHRoaXMuI0VhKGUsdCl9fWFzeW5jI19hKGUsdCl7aWYodD4wKXJldHVybiExO2NvbnN0IGE9dGhpcy5zdHJlYW0uZW5kO2ZvcihsZXQgdD1lO3Q8YTt0Kz02NTUzNil7Y29uc3QgZT1NYXRoLm1pbih0KzY1NTM2LGEpLG49YXdhaXQgdGhpcy4jRWEodCxlKTtmb3IoY29uc3QgZSBvZiBuKWlmKDAhPT1lJiY5IT09ZSYmMTAhPT1lJiYxMiE9PWUmJjEzIT09ZSYmMzIhPT1lKXJldHVybiExfXJldHVybiEwfWFzeW5jI1BhKGUsdCxhKXtjb25zdCBuPWF3YWl0IHQuZ2V0QXN5bmMoIkJ5dGVSYW5nZSIpO2lmKCFBcnJheS5pc0FycmF5KG4pfHw0IT09bi5sZW5ndGh8fG4uc29tZShlPT4hTnVtYmVyLmlzSW50ZWdlcihlKXx8ZTwwKSlyZXR1cm4gbnVsbDtjb25zdFtzLHIsaSxvXT1uLGw9dGhpcy5zdHJlYW0uZW5kfHwwO2lmKDAhPT1zfHxyPD0wfHxzK3I+aXx8aStvPmx8fDA9PT1sKXJldHVybiBudWxsO2NvbnN0IGY9YXdhaXQgdC5nZXRBc3luYygiQ29udGVudHMiKTtpZigic3RyaW5nIiE9dHlwZW9mIGZ8fDA9PT1mLmxlbmd0aClyZXR1cm4gbnVsbDtjb25zdFtjLGgsdSxtLHAsZCxnLGJdPWF3YWl0IFByb21pc2UuYWxsKFt0LmdldEFzeW5jKCJGaWx0ZXIiKSx0LmdldEFzeW5jKCJTdWJGaWx0ZXIiKSxlLmdldEFzeW5jKCJUIiksdC5nZXRBc3luYygiTmFtZSIpLHQuZ2V0QXN5bmMoIlJlYXNvbiIpLHQuZ2V0QXN5bmMoIkxvY2F0aW9uIiksdC5nZXRBc3luYygiQ29udGFjdEluZm8iKSx0LmdldEFzeW5jKCJNIildKSx3PWMgaW5zdGFuY2VvZiBOYW1lP2MubmFtZTpudWxsLGo9aCBpbnN0YW5jZW9mIE5hbWU/aC5uYW1lOm51bGw7bGV0IGs9bnVsbDsiYWRiZS5wa2NzNy5kZXRhY2hlZCI9PT1qP2s9MDoiYWRiZS5wa2NzNy5zaGExIj09PWomJihrPTEpO3JldHVybntpZDpgJHthIGluc3RhbmNlb2YgUmVmP2EudG9TdHJpbmcoKToiaW5saW5lIn06JHtzfS0ke3J9LSR7aX0tJHtvfWAsZmllbGROYW1lOiJzdHJpbmciPT10eXBlb2YgdT9zdHJpbmdUb1BERlN0cmluZyh1KToiIixzaWduZXJOYW1lOiJzdHJpbmciPT10eXBlb2YgbT9zdHJpbmdUb1BERlN0cmluZyhtKTpudWxsLHJlYXNvbjoic3RyaW5nIj09dHlwZW9mIHA/c3RyaW5nVG9QREZTdHJpbmcocCk6bnVsbCxsb2NhdGlvbjoic3RyaW5nIj09dHlwZW9mIGQ/c3RyaW5nVG9QREZTdHJpbmcoZCk6bnVsbCxjb250YWN0SW5mbzoic3RyaW5nIj09dHlwZW9mIGc/c3RyaW5nVG9QREZTdHJpbmcoZyk6bnVsbCxzaWduaW5nVGltZToic3RyaW5nIj09dHlwZW9mIGI/YjpudWxsLGZpbHRlcjp3LHN1YkZpbHRlcjpqLHNpZ25hdHVyZVR5cGU6ayxieXRlUmFuZ2U6bixwa2NzNzpzdHJpbmdUb0J5dGVzKGYpLHJldmlzaW9uSW5kZXg6MCxwYXJlbnRJZDpudWxsfX1nZXQgc2lnbmF0dXJlcygpe3JldHVybiBzaGFkb3codGhpcywic2lnbmF0dXJlcyIsdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiZm9ybUluZm8iKS50aGVuKGFzeW5jIGU9PntpZighZS5oYXNTaWduYXR1cmVzfHwhZS5oYXNGaWVsZHMpcmV0dXJuIG51bGw7Y29uc3QgdD1hd2FpdCB0aGlzLmFubm90YXRpb25HbG9iYWxzO2lmKCF0KXJldHVybiBudWxsO2NvbnN0IGE9dC5hY3JvRm9ybS5nZXQoIkZpZWxkcyIpLG49W107YXdhaXQgdGhpcy4jTmEoYSxuLG5ldyBSZWZTZXQpO2F3YWl0IFByb21pc2UuYWxsKG4ubWFwKGFzeW5jIGU9Pntjb25zdCB0PWUuYnl0ZVJhbmdlWzJdK2UuYnl0ZVJhbmdlWzNdO2UubW9kaWZpY2F0aW9uc0FmdGVyU2lnbmF0dXJlPXRoaXMueHJlZi5jb3VudFVwZGF0ZXNBZnRlcih0KTtlLmNvdmVyc1dob2xlRG9jdW1lbnQ9YXdhaXQgdGhpcy4jX2EodCxlLm1vZGlmaWNhdGlvbnNBZnRlclNpZ25hdHVyZSl9KSk7bi5zb3J0KChlLHQpPT50LmJ5dGVSYW5nZVsyXSt0LmJ5dGVSYW5nZVszXS0oZS5ieXRlUmFuZ2VbMl0rZS5ieXRlUmFuZ2VbM10pKTtmb3IobGV0IGU9MCx0PW4ubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9bltlXTt0LnJldmlzaW9uSW5kZXg9ZTtmb3IobGV0IGE9ZS0xO2E+PTA7YS0tKXtjb25zdCBlPW5bYV07aWYoZS5ieXRlUmFuZ2VbMl0rZS5ieXRlUmFuZ2VbM10+dC5ieXRlUmFuZ2VbMl0rdC5ieXRlUmFuZ2VbM10pe3QucGFyZW50SWQ9ZS5pZDticmVha319fWNvbnN0IHM9bmV3IE1hcCxyPW4ubWFwKGU9Pntjb25zdHtwa2NzNzp0LC4uLmF9PWU7cy5zZXQoZS5pZCx7Ynl0ZVJhbmdlOmUuYnl0ZVJhbmdlLHBrY3M3OnR9KTtyZXR1cm4gYX0pO3RoaXMuI1RhPXM7cmV0dXJuIHIubGVuZ3RoP3I6bnVsbH0pKX1hc3luYyBnZXRTaWduYXR1cmVEYXRhKGUpe2F3YWl0IHRoaXMuc2lnbmF0dXJlcztjb25zdCB0PXRoaXMuI1RhPy5nZXQoZSk7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3R7Ynl0ZVJhbmdlOmEscGtjczc6bn09dCxbcyxyLGksb109YTtyZXR1cm57ZGF0YTphd2FpdCBQcm9taXNlLmFsbChbdGhpcy4jRWEocyxzK3IpLHRoaXMuI0VhKGksaStvKV0pLHBrY3M3Om59fWdldCBoYXNKU0FjdGlvbnMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImhhc0pTQWN0aW9ucyIsUHJvbWlzZS5hbGwoW3RoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJqc0FjdGlvbnMiKSx0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJmaWVsZE9iamVjdHMiKV0pLnRoZW4oKFtlLHRdKT0+ISFlfHwhIXQ/LmFsbEZpZWxkcyYmdC5hbGxGaWVsZHMudmFsdWVzKCkuc29tZShlPT5lLnNvbWUoZT0+bnVsbCE9PWUuYWN0aW9ucykpKSl9Z2V0IGNhbGN1bGF0aW9uT3JkZXJJZHMoKXtjb25zdCBlPXRoaXMuY2F0YWxvZy5hY3JvRm9ybT8uZ2V0KCJDTyIpO2lmKCFBcnJheS5pc0FycmF5KGUpfHwwPT09ZS5sZW5ndGgpcmV0dXJuIHNoYWRvdyh0aGlzLCJjYWxjdWxhdGlvbk9yZGVySWRzIixudWxsKTtjb25zdCB0PVtdO2Zvcihjb25zdCBhIG9mIGUpYSBpbnN0YW5jZW9mIFJlZiYmdC5wdXNoKGEudG9TdHJpbmcoKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJjYWxjdWxhdGlvbk9yZGVySWRzIix0Lmxlbmd0aD90Om51bGwpfWdldCBhbm5vdGF0aW9uR2xvYmFscygpe3JldHVybiBzaGFkb3codGhpcywiYW5ub3RhdGlvbkdsb2JhbHMiLEFubm90YXRpb25GYWN0b3J5LmNyZWF0ZUdsb2JhbHModGhpcy5wZGZNYW5hZ2VyKSl9YXN5bmMgdG9KU09iamVjdChlLHQ9ITApe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkOiB0b0pTT2JqZWN0Iil9fWNsYXNzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKHtkb2NCYXNlVXJsOmUsZG9jSWQ6dCxlbmFibGVYZmE6YSxldmFsdWF0b3JPcHRpb25zOm4saGFuZGxlcjpzLHBhc3N3b3JkOnJ9KXt0aGlzLl9kb2NCYXNlVXJsPWZ1bmN0aW9uIHBhcnNlRG9jQmFzZVVybChlKXtpZihlKXtjb25zdCB0PWNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwoZSk7aWYodClyZXR1cm4gdC5ocmVmO3dhcm4oYEludmFsaWQgYWJzb2x1dGUgZG9jQmFzZVVybDogIiR7ZX0iLmApfXJldHVybiBudWxsfShlKTt0aGlzLl9kb2NJZD10O3RoaXMuX3Bhc3N3b3JkPXI7dGhpcy5lbmFibGVYZmE9YTtuLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkJiY9RmVhdHVyZVRlc3QuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ7bi5pc0ltYWdlRGVjb2RlclN1cHBvcnRlZCYmPUZlYXR1cmVUZXN0LmlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkO3RoaXMuZXZhbHVhdG9yT3B0aW9ucz1PYmplY3QuZnJlZXplKG4pO0ltYWdlUmVzaXplci5zZXRPcHRpb25zKG4pO0pwZWdTdHJlYW0uc2V0T3B0aW9ucyhuKTtPcGVyYXRvckxpc3Quc2V0T3B0aW9ucyhuKTtjb25zdCBpPXsuLi5uLGhhbmRsZXI6c307SWNjQ29sb3JTcGFjZS5zZXRPcHRpb25zKGkpO0NteWtJQ0NCYXNlZENTLnNldE9wdGlvbnMoaSk7UERGRnVuY3Rpb25GYWN0b3J5LnNldE9wdGlvbnMoaSk7UGF0dGVybi5zZXRPcHRpb25zKGkpO1dhc21JbWFnZS5zZXRPcHRpb25zKGkpfWdldCBkb2NJZCgpe3JldHVybiB0aGlzLl9kb2NJZH1nZXQgcGFzc3dvcmQoKXtyZXR1cm4gdGhpcy5fcGFzc3dvcmR9Z2V0IGRvY0Jhc2VVcmwoKXtyZXR1cm4gdGhpcy5fZG9jQmFzZVVybH1lbnN1cmVEb2MoZSx0KXtyZXR1cm4gdGhpcy5lbnN1cmUodGhpcy5wZGZEb2N1bWVudCxlLHQpfWVuc3VyZUNhdGFsb2coZSx0KXtyZXR1cm4gdGhpcy5lbnN1cmUodGhpcy5wZGZEb2N1bWVudC5jYXRhbG9nLGUsdCl9YXN5bmMgaW5pdERvY3VtZW50KGUpe2F3YWl0IHRoaXMuZW5zdXJlRG9jKCJjaGVja0hlYWRlciIpO2F3YWl0IHRoaXMuZW5zdXJlRG9jKCJwYXJzZVN0YXJ0WFJlZiIpO2F3YWl0IHRoaXMuZW5zdXJlRG9jKCJwYXJzZSIsW2VdKTthd2FpdCB0aGlzLmVuc3VyZURvYygiY2hlY2tGaXJzdFBhZ2UiLFtlXSk7YXdhaXQgdGhpcy5lbnN1cmVEb2MoImNoZWNrTGFzdFBhZ2UiLFtlXSl9Z2V0UGFnZShlKXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5nZXRQYWdlKGUpfWZvbnRGYWxsYmFjayhlLHQpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmZvbnRGYWxsYmFjayhlLHQpfWNsZWFudXAoZT0hMSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuY2xlYW51cChlKX1hc3luYyBlbnN1cmUoZSx0LGEpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGVuc3VyZWAgY2FsbGVkIil9cmVxdWVzdFJhbmdlKGUsdCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgcmVxdWVzdFJhbmdlYCBjYWxsZWQiKX1yZXF1ZXN0TG9hZGVkU3RyZWFtKGU9ITEpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHJlcXVlc3RMb2FkZWRTdHJlYW1gIGNhbGxlZCIpfXNlbmRQcm9ncmVzc2l2ZURhdGEoZSl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgc2VuZFByb2dyZXNzaXZlRGF0YWAgY2FsbGVkIil9dXBkYXRlUGFzc3dvcmQoZSl7dGhpcy5fcGFzc3dvcmQ9ZTt0aGlzLnBkZkRvY3VtZW50LnhyZWYuZW5jcnlwdD8uc2V0UGFzc3dvcmQoZSl9dGVybWluYXRlKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHRlcm1pbmF0ZWAgY2FsbGVkIil9fWNsYXNzIExvY2FsUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9bmV3IFN0cmVhbShlLnNvdXJjZSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0KTt0aGlzLl9sb2FkZWRTdHJlYW1Qcm9taXNlPVByb21pc2UucmVzb2x2ZSh0KX1hc3luYyBlbnN1cmUoZSx0LGEpe2NvbnN0IG49ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KGUsYSk6bn1yZXF1ZXN0TG9hZGVkU3RyZWFtKGU9ITEpe3JldHVybiB0aGlzLl9sb2FkZWRTdHJlYW1Qcm9taXNlfXRlcm1pbmF0ZShlKXt9fWNsYXNzIE5ldHdvcmtQZGZNYW5hZ2VyIGV4dGVuZHMgQmFzZVBkZk1hbmFnZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5zdHJlYW1NYW5hZ2VyPW5ldyBDaHVua2VkU3RyZWFtTWFuYWdlcihlLnNvdXJjZSx7bXNnSGFuZGxlcjplLmhhbmRsZXIsbGVuZ3RoOmUubGVuZ3RoLGRpc2FibGVBdXRvRmV0Y2g6ZS5kaXNhYmxlQXV0b0ZldGNoLHJhbmdlQ2h1bmtTaXplOmUucmFuZ2VDaHVua1NpemV9KTt0aGlzLnBkZkRvY3VtZW50PW5ldyBQREZEb2N1bWVudCh0aGlzLHRoaXMuc3RyZWFtTWFuYWdlci5nZXRTdHJlYW0oKSl9YXN5bmMgZW5zdXJlKGUsdCxhKXt0cnl7Y29uc3Qgbj1lW3RdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuP2F3YWl0IG4uYXBwbHkoZSxhKTpufWNhdGNoKG4pe2lmKCEobiBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKSl0aHJvdyBuO2F3YWl0IHRoaXMucmVxdWVzdFJhbmdlKG4uYmVnaW4sbi5lbmQpO3JldHVybiB0aGlzLmVuc3VyZShlLHQsYSl9fXJlcXVlc3RSYW5nZShlLHQpe3JldHVybiB0aGlzLnN0cmVhbU1hbmFnZXIucmVxdWVzdFJhbmdlKGUsdCl9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXtyZXR1cm4gdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RBbGxDaHVua3MoZSl9c2VuZFByb2dyZXNzaXZlRGF0YShlKXt0aGlzLnN0cmVhbU1hbmFnZXIub25SZWNlaXZlRGF0YSh7Y2h1bms6ZX0pfXRlcm1pbmF0ZShlKXt0aGlzLnN0cmVhbU1hbmFnZXIuYWJvcnQoZSl9fWNvbnN0IEhmPTEsTWY9MixOZj0xLFBmPTIsRWY9MyxfZj00LHpmPTUsTGY9NixVZj03LFdmPTg7ZnVuY3Rpb24gb25Gbigpe31mdW5jdGlvbiB3cmFwUmVhc29uKGUpe2lmKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbnx8ZSBpbnN0YW5jZW9mIEludmFsaWRQREZFeGNlcHRpb258fGUgaW5zdGFuY2VvZiBQYXNzd29yZEV4Y2VwdGlvbnx8ZSBpbnN0YW5jZW9mIFJlc3BvbnNlRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgVW5rbm93bkVycm9yRXhjZXB0aW9uKXJldHVybiBlO2UgaW5zdGFuY2VvZiBFcnJvcnx8Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZXx8dW5yZWFjaGFibGUoJ3dyYXBSZWFzb246IEV4cGVjdGVkICJyZWFzb24iIHRvIGJlIGEgKHBvc3NpYmx5IGNsb25lZCkgRXJyb3IuJyk7c3dpdGNoKGUubmFtZSl7Y2FzZSJBYm9ydEV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBBYm9ydEV4Y2VwdGlvbihlLm1lc3NhZ2UpO2Nhc2UiSW52YWxpZFBERkV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKGUubWVzc2FnZSk7Y2FzZSJQYXNzd29yZEV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBQYXNzd29yZEV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5jb2RlKTtjYXNlIlJlc3BvbnNlRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFJlc3BvbnNlRXhjZXB0aW9uKGUubWVzc2FnZSxlLnN0YXR1cyxlLm1pc3NpbmcpO2Nhc2UiVW5rbm93bkVycm9yRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5kZXRhaWxzKX1yZXR1cm4gbmV3IFVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS50b1N0cmluZygpKX1jbGFzcyBNZXNzYWdlSGFuZGxlcnsjemE9bmV3IE1hcDsjTGE9bmV3IE1hcDsjVWE9MTsjV2E7I1hhPW5ldyBBYm9ydENvbnRyb2xsZXI7I0thOyNHYT1uZXcgTWFwOyNWYT0xOyMkYT1uZXcgTWFwOyNZYTtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy4jS2E9ZTt0aGlzLiNZYT10O3RoaXMuI1dhPWE7YS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLiNKYS5iaW5kKHRoaXMpLHtzaWduYWw6dGhpcy4jWGEuc2lnbmFsfSl9I0phKHtkYXRhOmV9KXtpZihlLnRhcmdldE5hbWUhPT10aGlzLiNLYSlyZXR1cm47aWYoZS5zdHJlYW0pe3RoaXMuI1FhKGUpO3JldHVybn1pZihlLmNhbGxiYWNrKXtjb25zdHtjYWxsYmFja0lkOnQsY2FsbGJhY2s6YX09ZSxuPXRoaXMuI0xhLmdldCh0KTtpZighbil0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIGNhbGxiYWNrICR7dH1gKTt0aGlzLiNMYS5kZWxldGUodCk7aWYoYT09PUhmKW4ucmVzb2x2ZShlLmRhdGEpO2Vsc2V7aWYoYSE9PU1mKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBjYWxsYmFjayBjYXNlIik7bi5yZWplY3Qod3JhcFJlYXNvbihlLnJlYXNvbikpfXJldHVybn1jb25zdCB0PXRoaXMuI3phLmdldChlLmFjdGlvbik7aWYoIXQpdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGFjdGlvbiBmcm9tIHdvcmtlcjogJHtlLmFjdGlvbn1gKTtpZihlLmNhbGxiYWNrSWQpe2NvbnN0IGE9dGhpcy4jS2Esbj1lLnNvdXJjZU5hbWUscz10aGlzLiNXYTtQcm9taXNlLnRyeSh0LGUuZGF0YSkudGhlbih0PT57cy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6bixjYWxsYmFjazpIZixjYWxsYmFja0lkOmUuY2FsbGJhY2tJZCxkYXRhOnR9KX0sdD0+e3MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sY2FsbGJhY2s6TWYsY2FsbGJhY2tJZDplLmNhbGxiYWNrSWQscmVhc29uOndyYXBSZWFzb24odCl9KX0pO3JldHVybn1lLnN0cmVhbUlkP3RoaXMuI1phKGUpOnQoZS5kYXRhKX1vbihlLHQpe2NvbnN0IGE9dGhpcy4jemE7aWYoYS5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBhbHJlYWR5IGEgIiR7ZX0iIGhhbmRsZXIuYCk7YS5zZXQoZSx0KX1zZW5kKGUsdCxhKXt0aGlzLiNXYS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLiNLYSx0YXJnZXROYW1lOnRoaXMuI1lhLGFjdGlvbjplLGRhdGE6dH0sYSl9c2VuZFdpdGhQcm9taXNlKGUsdCxhKXtjb25zdCBuPXRoaXMuI1VhKysscz1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLiNMYS5zZXQobixzKTt0cnl7dGhpcy4jV2EucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy4jS2EsdGFyZ2V0TmFtZTp0aGlzLiNZYSxhY3Rpb246ZSxjYWxsYmFja0lkOm4sZGF0YTp0fSxhKX1jYXRjaChlKXtzLnJlamVjdChlKX1yZXR1cm4gcy5wcm9taXNlfXNlbmRXaXRoU3RyZWFtKGUsdCxhLG4pe2NvbnN0IHM9dGhpcy4jVmErKyxyPXRoaXMuI0thLGk9dGhpcy4jWWEsbz10aGlzLiNXYTtyZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydDphPT57Y29uc3QgbD1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLiNHYS5zZXQocyx7Y29udHJvbGxlcjphLHN0YXJ0Q2FsbDpsLHB1bGxDYWxsOm51bGwsY2FuY2VsQ2FsbDpudWxsLGlzQ2xvc2VkOiExfSk7by5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpyLHRhcmdldE5hbWU6aSxhY3Rpb246ZSxzdHJlYW1JZDpzLGRhdGE6dCxkZXNpcmVkU2l6ZTphLmRlc2lyZWRTaXplfSxuKTtyZXR1cm4gbC5wcm9taXNlfSxwdWxsOmU9Pntjb25zdCB0PVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuI0dhLmdldChzKS5wdWxsQ2FsbD10O28ucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cix0YXJnZXROYW1lOmksc3RyZWFtOkxmLHN0cmVhbUlkOnMsZGVzaXJlZFNpemU6ZS5kZXNpcmVkU2l6ZX0pO3JldHVybiB0LnByb21pc2V9LGNhbmNlbDplPT57YXNzZXJ0KGUgaW5zdGFuY2VvZiBFcnJvciwiY2FuY2VsIG11c3QgaGF2ZSBhIHZhbGlkIHJlYXNvbiIpO2NvbnN0IHQ9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy4jR2EuZ2V0KHMpLmNhbmNlbENhbGw9dDt0aGlzLiNHYS5nZXQocykuaXNDbG9zZWQ9ITA7by5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpyLHRhcmdldE5hbWU6aSxzdHJlYW06TmYsc3RyZWFtSWQ6cyxyZWFzb246d3JhcFJlYXNvbihlKX0pO3JldHVybiB0LnByb21pc2V9fSxhKX0jWmEoZSl7Y29uc3QgdD1lLnN0cmVhbUlkLGE9dGhpcy4jS2Esbj1lLnNvdXJjZU5hbWUscz10aGlzLiNXYSxyPXRoaXMuIyRhLGk9dGhpcy4jemEuZ2V0KGUuYWN0aW9uKSxvPXtlbnF1ZXVlKGUscj0xLGkpe2lmKHRoaXMuaXNDYW5jZWxsZWQpcmV0dXJuO2NvbnN0IG89dGhpcy5kZXNpcmVkU2l6ZTt0aGlzLmRlc2lyZWRTaXplLT1yO2lmKG8+MCYmdGhpcy5kZXNpcmVkU2l6ZTw9MCl7dGhpcy5zaW5rQ2FwYWJpbGl0eT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLnJlYWR5PXRoaXMuc2lua0NhcGFiaWxpdHkucHJvbWlzZX1zLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpfZixzdHJlYW1JZDp0LGNodW5rOmV9LGkpfSxjbG9zZSgpe2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt0aGlzLmlzQ2FuY2VsbGVkPSEwO3MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOkVmLHN0cmVhbUlkOnR9KTtyLmRlbGV0ZSh0KX19LGVycm9yKGUpe2Fzc2VydChlIGluc3RhbmNlb2YgRXJyb3IsImVycm9yIG11c3QgaGF2ZSBhIHZhbGlkIHJlYXNvbiIpO2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt0aGlzLmlzQ2FuY2VsbGVkPSEwO3MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOnpmLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX19LHNpbmtDYXBhYmlsaXR5OlByb21pc2Uud2l0aFJlc29sdmVycygpLG9uUHVsbDpudWxsLG9uQ2FuY2VsOm51bGwsaXNDYW5jZWxsZWQ6ITEsZGVzaXJlZFNpemU6ZS5kZXNpcmVkU2l6ZSxyZWFkeTpudWxsfTtvLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtvLnJlYWR5PW8uc2lua0NhcGFiaWxpdHkucHJvbWlzZTtyLnNldCh0LG8pO1Byb21pc2UudHJ5KGksZS5kYXRhLG8pLnRoZW4oKCk9PntzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpXZixzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0sZT0+e3MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOldmLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX0pfSNRYShlKXtjb25zdCB0PWUuc3RyZWFtSWQsYT10aGlzLiNLYSxuPWUuc291cmNlTmFtZSxzPXRoaXMuI1dhLHI9dGhpcy4jR2EuZ2V0KHQpLGk9dGhpcy4jJGEuZ2V0KHQpO3N3aXRjaChlLnN0cmVhbSl7Y2FzZSBXZjplLnN1Y2Nlc3M/ci5zdGFydENhbGwucmVzb2x2ZSgpOnIuc3RhcnRDYWxsLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7YnJlYWs7Y2FzZSBVZjplLnN1Y2Nlc3M/ci5wdWxsQ2FsbC5yZXNvbHZlKCk6ci5wdWxsQ2FsbC5yZWplY3Qod3JhcFJlYXNvbihlLnJlYXNvbikpO2JyZWFrO2Nhc2UgTGY6aWYoIWkpe3MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOlVmLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pO2JyZWFrfWkuZGVzaXJlZFNpemU8PTAmJmUuZGVzaXJlZFNpemU+MCYmaS5zaW5rQ2FwYWJpbGl0eS5yZXNvbHZlKCk7aS5kZXNpcmVkU2l6ZT1lLmRlc2lyZWRTaXplO1Byb21pc2UudHJ5KGkub25QdWxsfHxvbkZuKS50aGVuKCgpPT57cy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6bixzdHJlYW06VWYsc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9LGU9PntzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpVZixzdHJlYW1JZDp0LHJlYXNvbjp3cmFwUmVhc29uKGUpfSl9KTticmVhaztjYXNlIF9mOmFzc2VydChyLCJlbnF1ZXVlIHNob3VsZCBoYXZlIHN0cmVhbSBjb250cm9sbGVyIik7aWYoci5pc0Nsb3NlZClicmVhaztyLmNvbnRyb2xsZXIuZW5xdWV1ZShlLmNodW5rKTticmVhaztjYXNlIEVmOmFzc2VydChyLCJjbG9zZSBzaG91bGQgaGF2ZSBzdHJlYW0gY29udHJvbGxlciIpO2lmKHIuaXNDbG9zZWQpYnJlYWs7ci5pc0Nsb3NlZD0hMDtyLmNvbnRyb2xsZXIuY2xvc2UoKTt0aGlzLiNlbihyLHQpO2JyZWFrO2Nhc2UgemY6YXNzZXJ0KHIsImVycm9yIHNob3VsZCBoYXZlIHN0cmVhbSBjb250cm9sbGVyIik7ci5jb250cm9sbGVyLmVycm9yKHdyYXBSZWFzb24oZS5yZWFzb24pKTt0aGlzLiNlbihyLHQpO2JyZWFrO2Nhc2UgUGY6ZS5zdWNjZXNzP3IuY2FuY2VsQ2FsbC5yZXNvbHZlKCk6ci5jYW5jZWxDYWxsLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7dGhpcy4jZW4ocix0KTticmVhaztjYXNlIE5mOmlmKCFpKWJyZWFrO2NvbnN0IG89d3JhcFJlYXNvbihlLnJlYXNvbik7UHJvbWlzZS50cnkoaS5vbkNhbmNlbHx8b25GbixvKS50aGVuKCgpPT57cy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6bixzdHJlYW06UGYsc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9LGU9PntzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpQZixzdHJlYW1JZDp0LHJlYXNvbjp3cmFwUmVhc29uKGUpfSl9KTtpLnNpbmtDYXBhYmlsaXR5LnJlamVjdChvKTtpLmlzQ2FuY2VsbGVkPSEwO3RoaXMuIyRhLmRlbGV0ZSh0KTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBzdHJlYW0gY2FzZSIpfX1hc3luYyNlbihlLHQpe2F3YWl0IFByb21pc2UuYWxsU2V0dGxlZChbZS5zdGFydENhbGw/LnByb21pc2UsZS5wdWxsQ2FsbD8ucHJvbWlzZSxlLmNhbmNlbENhbGw/LnByb21pc2VdKTt0aGlzLiNHYS5kZWxldGUodCl9ZGVzdHJveSgpe3RoaXMuI1hhPy5hYm9ydCgpO3RoaXMuI1hhPW51bGx9fW5ldyBTZXQoWyJCREMiLCJCTUMiLCJEUCIsIkVNQyIsIk1QIl0pO2FzeW5jIGZ1bmN0aW9uIHdyaXRlT2JqZWN0KGUsdCxhLHtlbmNyeXB0Om49bnVsbCxlbmNyeXB0UmVmOnM9bnVsbH0pe2NvbnN0IHI9biYmcyE9PWU/bi5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0oZS5udW0sZS5nZW4pOm51bGw7YS5wdXNoKGAke2UubnVtfSAke2UuZ2VufSBvYmpcbmApO2F3YWl0IHdyaXRlVmFsdWUodCxhLHIpO2EucHVzaCgiXG5lbmRvYmpcbiIpfWFzeW5jIGZ1bmN0aW9uIHdyaXRlRGljdChlLHQsYSl7dC5wdXNoKCI8PCIpO2Zvcihjb25zdFtuLHNdb2YgZS5nZXRSYXdFbnRyaWVzKCkpe3QucHVzaChgIC8ke2VzY2FwZVBERk5hbWUobil9IGApO2F3YWl0IHdyaXRlVmFsdWUocyx0LGEpfXQucHVzaCgiPj4iKX1hc3luYyBmdW5jdGlvbiB3cml0ZVZhbHVlKGUsdCxhKXtpZihlIGluc3RhbmNlb2YgTmFtZSl0LnB1c2goYC8ke2VzY2FwZVBERk5hbWUoZS5uYW1lKX1gKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBSZWYpdC5wdXNoKGAke2UubnVtfSAke2UuZ2VufSBSYCk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpfHxBcnJheUJ1ZmZlci5pc1ZpZXcoZSkpYXdhaXQgYXN5bmMgZnVuY3Rpb24gd3JpdGVBcnJheShlLHQsYSl7dC5wdXNoKCJbIik7Zm9yKGxldCBuPTAscz1lLmxlbmd0aDtuPHM7bisrKXthd2FpdCB3cml0ZVZhbHVlKGVbbl0sdCxhKTtuPHMtMSYmdC5wdXNoKCIgIil9dC5wdXNoKCJdIil9KGUsdCxhKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgZSl7YSYmKGU9YS5lbmNyeXB0U3RyaW5nKGUpKTt0LnB1c2goYCgke2VzY2FwZVN0cmluZyhlKX0pYCl9ZWxzZSJudW1iZXIiPT10eXBlb2YgZT90LnB1c2goZnVuY3Rpb24gbnVtYmVyVG9QREZTdHJpbmcoZSl7aWYoTnVtYmVyLmlzSW50ZWdlcihlKSYmTWF0aC5hYnMoZSk+PTFlMjEpcmV0dXJuIEJpZ0ludChlKS50b1N0cmluZygpO2NvbnN0IHQ9ZS50b0ZpeGVkKDEwKTtsZXQgYT10Lmxlbmd0aDtmb3IoOyIwIj09PXRbYS0xXTspYS0tOyIuIj09PXRbYS0xXSYmYS0tO3JldHVybiB0LnNsaWNlKDAsYSl9KGUpKToiYm9vbGVhbiI9PXR5cGVvZiBlP3QucHVzaChlLnRvU3RyaW5nKCkpOmUgaW5zdGFuY2VvZiBEaWN0P2F3YWl0IHdyaXRlRGljdChlLHQsYSk6ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/YXdhaXQgYXN5bmMgZnVuY3Rpb24gd3JpdGVTdHJlYW0oZSx0LGEpeyhlPWUuZ2V0T3JpZ2luYWxTdHJlYW0oKSkucmVzZXQoKTtsZXQgbj1lLmdldEJ5dGVzKCk7Y29uc3R7ZGljdDpzfT1lLFtyLGldPWF3YWl0IFByb21pc2UuYWxsKFtzLmdldEFzeW5jKCJGaWx0ZXIiKSxzLmdldEFzeW5jKCJEZWNvZGVQYXJtcyIpXSksbz1BcnJheS5pc0FycmF5KHIpP2F3YWl0IHMueHJlZi5mZXRjaElmUmVmQXN5bmMoclswXSk6cixsPWlzTmFtZShvLCJGbGF0ZURlY29kZSIpLGY9aXNOYW1lKG8sIkRDVERlY29kZSIpfHxpc05hbWUobywiSlBYRGVjb2RlIil8fGlzTmFtZShvLCJKQklHMkRlY29kZSIpfHxpc05hbWUobywiQ0NJVFRGYXhEZWNvZGUiKXx8aXNOYW1lKG8sIkxaV0RlY29kZSIpO2lmKCEobHx8Znx8aXNOYW1lKG8sIkJyb3RsaURlY29kZSIpKSYmbi5sZW5ndGg+PTI1Nil0cnl7Y29uc3QgZT1uZXcgQ29tcHJlc3Npb25TdHJlYW0oImRlZmxhdGUiKSx0PWUud3JpdGFibGUuZ2V0V3JpdGVyKCk7YXdhaXQgdC5yZWFkeTt0LndyaXRlKG4pLnRoZW4oYXN5bmMoKT0+e2F3YWl0IHQucmVhZHk7YXdhaXQgdC5jbG9zZSgpfSkuY2F0Y2goKCk9Pnt9KTtuPWF3YWl0IG5ldyBSZXNwb25zZShlLnJlYWRhYmxlKS5ieXRlcygpO2xldCBhLG87aWYocil7aWYoIWwpe2E9QXJyYXkuaXNBcnJheShyKT9bTmFtZS5nZXQoIkZsYXRlRGVjb2RlIiksLi4ucl06W05hbWUuZ2V0KCJGbGF0ZURlY29kZSIpLHJdO2kmJihvPUFycmF5LmlzQXJyYXkoaSk/W251bGwsLi4uaV06W251bGwsaV0pfX1lbHNlIGE9TmFtZS5nZXQoIkZsYXRlRGVjb2RlIik7YSYmcy5zZXQoIkZpbHRlciIsYSk7byYmcy5zZXQoIkRlY29kZVBhcm1zIixvKX1jYXRjaChlKXtpbmZvKGB3cml0ZVN0cmVhbSAtIGNhbm5vdCBjb21wcmVzcyBkYXRhOiAiJHtlfSIuYCl9bGV0IGM9Ynl0ZXNUb1N0cmluZyhuKTthJiYoYz1hLmVuY3J5cHRTdHJpbmcoYykpO3Muc2V0KCJMZW5ndGgiLGMubGVuZ3RoKTthd2FpdCB3cml0ZURpY3Qocyx0LGEpO3QucHVzaCgiIHN0cmVhbVxuIixjLCJcbmVuZHN0cmVhbSIpfShlLHQsYSk6bnVsbD09PWU/dC5wdXNoKCJudWxsIik6d2FybihgVW5oYW5kbGVkIHZhbHVlIGluIHdyaXRlcjogJHt0eXBlb2YgZX0sIHBsZWFzZSBmaWxlIGEgYnVnLmApfWZ1bmN0aW9uIHdyaXRlSW50KGUsdCxhLG4pe2ZvcihsZXQgcz10K2EtMTtzPmEtMTtzLS0pe25bc109MjU1JmU7ZT4+PTh9cmV0dXJuIGErdH1mdW5jdGlvbiB3cml0ZVN0cmluZyhlLHQsYSl7Y29uc3Qgbj1lLmxlbmd0aDtmb3IobGV0IHM9MDtzPG47cysrKWFbdCtzXT0yNTUmZS5jaGFyQ29kZUF0KHMpO3JldHVybiB0K259ZnVuY3Rpb24gdXBkYXRlWEZBKHt4ZmFEYXRhOmUseGZhRGF0YXNldHNSZWY6dCxjaGFuZ2VzOmEseHJlZjpufSl7aWYobnVsbD09PWUpe2U9ZnVuY3Rpb24gd3JpdGVYRkFEYXRhRm9yQWNyb2Zvcm0oZSx0KXtjb25zdCBhPW5ldyBTaW1wbGVYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KS5wYXJzZUZyb21TdHJpbmcoZSk7Zm9yKGNvbnN0e3hmYTplfW9mIHQpe2lmKCFlKWNvbnRpbnVlO2NvbnN0e3BhdGg6dCx2YWx1ZTpufT1lO2lmKCF0fHxudWxsPT09biljb250aW51ZTtjb25zdCBzPXBhcnNlWEZBUGF0aCh0KTtsZXQgcj1hLmRvY3VtZW50RWxlbWVudC5zZWFyY2hOb2RlKHMsMCk7IXImJnMubGVuZ3RoPjEmJihyPWEuZG9jdW1lbnRFbGVtZW50LnNlYXJjaE5vZGUoW3MuYXQoLTEpXSwwKSk7cj9yLmNoaWxkTm9kZXM9QXJyYXkuaXNBcnJheShuKT9uLm1hcChlPT5uZXcgU2ltcGxlRE9NTm9kZSgidmFsdWUiLGUpKTpbbmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixuKV06d2FybihgTm9kZSBub3QgZm91bmQgZm9yIHBhdGg6ICR7dH1gKX1jb25zdCBuPVtdO2EuZG9jdW1lbnRFbGVtZW50LmR1bXAobik7cmV0dXJuIG4uam9pbigiIil9KG4uZmV0Y2hJZlJlZih0KS5nZXRTdHJpbmcoKSxhKX1jb25zdCBzPW5ldyBTdHJpbmdTdHJlYW0oZSxuZXcgRGljdChuKSk7cy5kaWN0LnNldElmTmFtZSgiVHlwZSIsIkVtYmVkZGVkRmlsZSIpO2EucHV0KHQse2RhdGE6c30pfWZ1bmN0aW9uIGdldEluZGV4ZXMoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3R7cmVmOmF9b2YgZSlhLm51bT09PXQuYXQoLTIpK3QuYXQoLTEpP3RbdC5sZW5ndGgtMV0rPTE6dC5wdXNoKGEubnVtLDEpO3JldHVybiB0fWZ1bmN0aW9uIGNvbXB1dGVJRHMoZSx0LGEpe2lmKEFycmF5LmlzQXJyYXkodC5maWxlSWRzKSYmdC5maWxlSWRzLmxlbmd0aD4wKXtjb25zdCBuPWZ1bmN0aW9uIGNvbXB1dGVNRDUoZSx0KXtjb25zdCBhPU1hdGguZmxvb3IoRGF0ZS5ub3coKS8xZTMpLG49dC5maWxlbmFtZXx8IiIscz1bYS50b1N0cmluZygpLG4sZS50b1N0cmluZygpLC4uLnQuaW5mb01hcC52YWx1ZXMoKV0scj1NYXRoLnN1bVByZWNpc2Uocy5tYXAoZT0+ZS5sZW5ndGgpKSxpPW5ldyBVaW50OEFycmF5KHIpO2xldCBvPTA7Zm9yKGNvbnN0IGUgb2YgcylvPXdyaXRlU3RyaW5nKGUsbyxpKTtyZXR1cm4gYnl0ZXNUb1N0cmluZyhjYWxjdWxhdGVNRDUoaSwwLGkubGVuZ3RoKSl9KGUsdCk7YS5zZXQoIklEIixbdC5maWxlSWRzWzBdfHxuLG5dKX19YXN5bmMgZnVuY3Rpb24gaW5jcmVtZW50YWxVcGRhdGUoe29yaWdpbmFsRGF0YTplLHhyZWZJbmZvOnQsY2hhbmdlczphLHhyZWY6bj1udWxsLGhhc1hmYTpzPSExLHhmYURhdGFzZXRzUmVmOnI9bnVsbCxoYXNYZmFEYXRhc2V0c0VudHJ5Omk9ITEsbmVlZEFwcGVhcmFuY2VzOm8sYWNyb0Zvcm1SZWY6bD1udWxsLGFjcm9Gb3JtOmY9bnVsbCx4ZmFEYXRhOmM9bnVsbCx1c2VYcmVmU3RyZWFtOmg9ITF9KXthd2FpdCBhc3luYyBmdW5jdGlvbiB1cGRhdGVBY3JvZm9ybSh7eHJlZjplLGFjcm9Gb3JtOnQsYWNyb0Zvcm1SZWY6YSxoYXNYZmE6bixoYXNYZmFEYXRhc2V0c0VudHJ5OnMseGZhRGF0YXNldHNSZWY6cixuZWVkQXBwZWFyYW5jZXM6aSxjaGFuZ2VzOm99KXshbnx8c3x8cnx8d2FybigiWEZBIC0gQ2Fubm90IHNhdmUgaXQiKTtpZighaSYmKCFufHwhcnx8cykpcmV0dXJuO2NvbnN0IGw9dC5jbG9uZSgpO2lmKG4mJiFzKXtjb25zdCBlPXQuZ2V0KCJYRkEiKS5zbGljZSgpO2Uuc3BsaWNlKDIsMCwiZGF0YXNldHMiKTtlLnNwbGljZSgzLDAscik7bC5zZXQoIlhGQSIsZSl9aSYmbC5zZXQoIk5lZWRBcHBlYXJhbmNlcyIsITApO28ucHV0KGEse2RhdGE6bH0pfSh7eHJlZjpuLGFjcm9Gb3JtOmYsYWNyb0Zvcm1SZWY6bCxoYXNYZmE6cyxoYXNYZmFEYXRhc2V0c0VudHJ5OmkseGZhRGF0YXNldHNSZWY6cixuZWVkQXBwZWFyYW5jZXM6byxjaGFuZ2VzOmF9KTtzJiZ1cGRhdGVYRkEoe3hmYURhdGE6Yyx4ZmFEYXRhc2V0c1JlZjpyLGNoYW5nZXM6YSx4cmVmOm59KTtjb25zdCB1PWZ1bmN0aW9uIGdldFRyYWlsZXJEaWN0KGUsdCxhKXtjb25zdCBuPW5ldyBEaWN0KG51bGwpO24uc2V0SWZEZWZpbmVkKCJQcmV2IixlPy5zdGFydFhSZWYpO2NvbnN0IHM9ZS5uZXdSZWY7aWYoYSl7dC5wdXQocyx7ZGF0YToiIn0pO24uc2V0KCJTaXplIixzLm51bSsxKTtuLnNldElmTmFtZSgiVHlwZSIsIlhSZWYiKX1lbHNlIG4uc2V0KCJTaXplIixzLm51bSk7bi5zZXRJZkRlZmluZWQoIlJvb3QiLGU/LnJvb3RSZWYpO24uc2V0SWZEZWZpbmVkKCJJbmZvIixlPy5pbmZvUmVmKTtuLnNldElmRGVmaW5lZCgiRW5jcnlwdCIsZT8uZW5jcnlwdFJlZik7cmV0dXJuIG59KHQsYSxoKSxtPVtdLHA9YXdhaXQgYXN5bmMgZnVuY3Rpb24gd3JpdGVDaGFuZ2VzKGUsdCxhPVtdKXtjb25zdCBuPVtdO2Zvcihjb25zdFtzLHtkYXRhOnIsb2JqU3RyZWFtUmVmOmksaW5kZXg6b31db2YgZS5pdGVtcygpKWlmKGkpbi5wdXNoKHtyZWY6cyxkYXRhOnIsb2JqU3RyZWFtUmVmOmksaW5kZXg6b30pO2Vsc2UgaWYobnVsbCE9PXImJiJzdHJpbmciIT10eXBlb2Ygcil7YXdhaXQgd3JpdGVPYmplY3QocyxyLGEsdCk7bi5wdXNoKHtyZWY6cyxkYXRhOmEuam9pbigiIil9KTthLmxlbmd0aD0wfWVsc2Ugbi5wdXNoKHtyZWY6cyxkYXRhOnJ9KTtyZXR1cm4gbi5zb3J0KChlLHQpPT5lLnJlZi5udW0tdC5yZWYubnVtKX0oYSxuLG0pO2xldCBkPWUubGVuZ3RoO2NvbnN0IGc9ZS5hdCgtMSk7aWYoMTAhPT1nJiYxMyE9PWcpe20ucHVzaCgiXG4iKTtkKz0xfWZvcihjb25zdHtkYXRhOmV9b2YgcCludWxsIT09ZSYmbS5wdXNoKGUpO2F3YWl0KGg/YXN5bmMgZnVuY3Rpb24gZ2V0WFJlZlN0cmVhbVRhYmxlKGUsdCxhLG4scyl7Y29uc3Qgcj1bXTtsZXQgaT0wLG89MDtmb3IoY29uc3R7cmVmOmUsZGF0YTpuLG9ialN0cmVhbVJlZjpzLGluZGV4Omx9b2YgYSl7bGV0IGE7aT1NYXRoLm1heChpLHQpO2lmKHMpe2E9bDtyLnB1c2goWzIscy5udW0sYV0pfWVsc2UgaWYobnVsbCE9PW4pe2E9TWF0aC5taW4oZS5nZW4sNjU1MzUpO3IucHVzaChbMSx0LGFdKTt0Kz1uLmxlbmd0aH1lbHNle2E9TWF0aC5taW4oZS5nZW4rMSw2NTUzNSk7ci5wdXNoKFswLDAsYV0pfW89TWF0aC5tYXgobyxhKX1uLnNldCgiSW5kZXgiLGdldEluZGV4ZXMoYSkpO2NvbnN0IGw9WzEsZ2V0U2l6ZUluQnl0ZXMoaSksZ2V0U2l6ZUluQnl0ZXMobyldO24uc2V0KCJXIixsKTtjb21wdXRlSURzKHQsZSxuKTtjb25zdCBmPU1hdGguc3VtUHJlY2lzZShsKSxjPW5ldyBVaW50OEFycmF5KGYqci5sZW5ndGgpLGg9bmV3IFN0cmVhbShjKTtoLmRpY3Q9bjtsZXQgdT0wO2Zvcihjb25zdFtlLHQsYV1vZiByKXt1PXdyaXRlSW50KGUsbFswXSx1LGMpO3U9d3JpdGVJbnQodCxsWzFdLHUsYyk7dT13cml0ZUludChhLGxbMl0sdSxjKX1hd2FpdCB3cml0ZU9iamVjdChlLm5ld1JlZixoLHMse30pO3MucHVzaCgic3RhcnR4cmVmXG4iLHQudG9TdHJpbmcoKSwiXG4lJUVPRlxuIil9KHQsZCxwLHUsbSk6YXN5bmMgZnVuY3Rpb24gZ2V0WFJlZlRhYmxlKGUsdCxhLG4scyl7cy5wdXNoKCJ4cmVmXG4iKTtjb25zdCByPWdldEluZGV4ZXMoYSk7bGV0IGk9MDtmb3IoY29uc3R7cmVmOmUsZGF0YTpufW9mIGEpe2lmKGUubnVtPT09cltpXSl7cy5wdXNoKGAke3JbaV19ICR7cltpKzFdfVxuYCk7aSs9Mn1pZihudWxsIT09bil7cy5wdXNoKGAke3QudG9TdHJpbmcoKS5wYWRTdGFydCgxMCwiMCIpfSAke01hdGgubWluKGUuZ2VuLDY1NTM1KS50b1N0cmluZygpLnBhZFN0YXJ0KDUsIjAiKX0gblxyXG5gKTt0Kz1uLmxlbmd0aH1lbHNlIHMucHVzaChgMDAwMDAwMDAwMCAke01hdGgubWluKGUuZ2VuKzEsNjU1MzUpLnRvU3RyaW5nKCkucGFkU3RhcnQoNSwiMCIpfSBmXHJcbmApfWNvbXB1dGVJRHModCxlLG4pO3MucHVzaCgidHJhaWxlclxuIik7YXdhaXQgd3JpdGVEaWN0KG4scyxudWxsKTtzLnB1c2goIlxuc3RhcnR4cmVmXG4iLHQudG9TdHJpbmcoKSwiXG4lJUVPRlxuIil9KHQsZCxwLHUsbSkpO2NvbnN0IGI9ZS5sZW5ndGgrTWF0aC5zdW1QcmVjaXNlKG0ubWFwKGU9PmUubGVuZ3RoKSksdz1uZXcgVWludDhBcnJheShiKTt3LnNldChlKTtsZXQgaj1lLmxlbmd0aDtmb3IoY29uc3QgZSBvZiBtKWo9d3JpdGVTdHJpbmcoZSxqLHcpO3JldHVybiB3fWNsYXNzIFBhZ2VEYXRhe2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wYWdlPWU7dGhpcy5kb2N1bWVudERhdGE9dDt0aGlzLmFubm90YXRpb25zPW51bGw7dGhpcy5wb2ludGluZ05hbWVkRGVzdGluYXRpb25zPW51bGw7dGhpcy5jb3B5TGV2ZWw9MDt0LnBhZ2VzTWFwLnB1dChlLnJlZix0aGlzKX19Y2xhc3MgRG9jdW1lbnREYXRhe2NvbnN0cnVjdG9yKGUpe3RoaXMuZG9jdW1lbnQ9ZTt0aGlzLmRlc3RpbmF0aW9ucz1udWxsO3RoaXMucGFnZUxhYmVscz1udWxsO3RoaXMucGFnZXNNYXA9bmV3IFJlZk1hcDt0aGlzLm9sZFJlZk1hcHBpbmc9bmV3IFJlZk1hcDt0aGlzLmRlZHVwTmFtZWREZXN0aW5hdGlvbnM9bmV3IE1hcDt0aGlzLnVzZWROYW1lZERlc3RpbmF0aW9ucz1uZXcgU2V0O3RoaXMucG9zdHBvbmVkUmVmQ29waWVzPW5ldyBSZWZNYXA7dGhpcy5yZXNvdXJjZVN0cmVhbVByb21pc2VzPW5ldyBNYXA7dGhpcy51c2VkU3RydWN0UGFyZW50cz1uZXcgU2V0O3RoaXMub2xkU3RydWN0UGFyZW50TWFwcGluZz1uZXcgTWFwO3RoaXMuc3RydWN0VHJlZVJvb3Q9bnVsbDt0aGlzLnBhcmVudFRyZWU9bnVsbDt0aGlzLmlkVHJlZT1udWxsO3RoaXMucm9sZU1hcD1udWxsO3RoaXMuY2xhc3NNYXA9bnVsbDt0aGlzLm5hbWVzcGFjZXM9bnVsbDt0aGlzLnN0cnVjdFRyZWVBRj1udWxsO3RoaXMuc3RydWN0VHJlZVByb251bmNpYXRpb25MZXhpY29uPVtdO3RoaXMuYWNyb0Zvcm09bnVsbDt0aGlzLmFjcm9Gb3JtRGVmYXVsdEFwcGVhcmFuY2U9IiI7dGhpcy5hY3JvRm9ybURlZmF1bHRSZXNvdXJjZXM9bnVsbDt0aGlzLmFjcm9Gb3JtUT0wO3RoaXMuaGFzU2lnbmF0dXJlQW5ub3RhdGlvbnM9ITE7dGhpcy5maWVsZFRvUGFyZW50PW5ldyBSZWZNYXA7dGhpcy5vdXRsaW5lPW51bGw7dGhpcy5lbWJlZGRlZEZpbGVzPW51bGx9fWNsYXNzIFhSZWZXcmFwcGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5lbnRyaWVzPWU7dGhpcy5fZ2V0TmV3UmVmPXR9Z2V0TmV3VGVtcG9yYXJ5UmVmKCl7cmV0dXJuIHRoaXMuX2dldE5ld1JlZigpfWNvdW50VXBkYXRlc0FmdGVyKGUpe3JldHVybiBudWxsfWZldGNoSWZSZWYoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBSZWY/dGhpcy5mZXRjaChlKTplfWZldGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpdGhyb3cgbmV3IEVycm9yKCJyZWYgb2JqZWN0IGlzIG5vdCBhIHJlZmVyZW5jZSIpO3JldHVybiB0aGlzLmVudHJpZXNbZS5udW1dfWFzeW5jIGZldGNoSWZSZWZBc3luYyhlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFJlZj90aGlzLmZldGNoQXN5bmMoZSk6ZX1hc3luYyBmZXRjaEFzeW5jKGUpe3JldHVybiB0aGlzLmZldGNoKGUpfX1jbGFzcyBQREZFZGl0b3J7aXNTaW5nbGVGaWxlPSExOyN0bj1udWxsOyNhbj1udWxsOyNubj1uZXcgTWFwO2N1cnJlbnREb2N1bWVudD1udWxsO29sZFBhZ2VzPVtdO25ld1BhZ2VzPVtdO3hyZWY9W251bGxdO3hyZWZXcmFwcGVyPW5ldyBYUmVmV3JhcHBlcih0aGlzLnhyZWYsKCk9PnRoaXMubmV3UmVmKTtuZXdSZWZDb3VudD0xO25hbWVzRGljdD1udWxsO3ZlcnNpb249IjEuNyI7cGFnZUxhYmVscz1udWxsO25hbWVkRGVzdGluYXRpb25zPW5ldyBNYXA7cGFyZW50VHJlZT1uZXcgTWFwO3N0cnVjdFRyZWVLaWRzPVtdO2lkVHJlZT1uZXcgTWFwO2NsYXNzTWFwPW5ldyBEaWN0O3JvbGVNYXA9bmV3IERpY3Q7bmFtZXNwYWNlcz1uZXcgTWFwO3N0cnVjdFRyZWVBRj1bXTtzdHJ1Y3RUcmVlUHJvbnVuY2lhdGlvbkxleGljb249W107ZmllbGRzPVtdO2Fjcm9Gb3JtRGVmYXVsdEFwcGVhcmFuY2U9IiI7YWNyb0Zvcm1EZWZhdWx0UmVzb3VyY2VzPW51bGw7YWNyb0Zvcm1OZWVkQXBwZWFyYW5jZXM9ITE7YWNyb0Zvcm1TaWdGbGFncz0wO2Fjcm9Gb3JtQ2FsY3VsYXRpb25PcmRlcj1udWxsO2Fjcm9Gb3JtUT0wO291dGxpbmVJdGVtcz1udWxsO2VtYmVkZGVkRmlsZXM9bmV3IE1hcDtjb25zdHJ1Y3Rvcih7dXNlT2JqZWN0U3RyZWFtczplPSEwLHRpdGxlOnQ9IiIsYXV0aG9yOmE9IiJ9PXt9KXtbdGhpcy5yb290UmVmLHRoaXMucm9vdERpY3RdPXRoaXMubmV3RGljdDtbdGhpcy5pbmZvUmVmLHRoaXMuaW5mb0RpY3RdPXRoaXMubmV3RGljdDtbdGhpcy5wYWdlc1JlZix0aGlzLnBhZ2VzRGljdF09dGhpcy5uZXdEaWN0O3RoaXMudXNlT2JqZWN0U3RyZWFtcz1lO3RoaXMub2JqU3RyZWFtUmVmcz1lP25ldyBTZXQ6bnVsbDt0aGlzLnRpdGxlPXQ7dGhpcy5hdXRob3I9YX1nZXQgbmV3UmVmKCl7cmV0dXJuIFJlZi5nZXQodGhpcy5uZXdSZWZDb3VudCsrLDApfWdldCBuZXdEaWN0KCl7Y29uc3QgZT10aGlzLm5ld1JlZjtyZXR1cm5bZSx0aGlzLnhyZWZbZS5udW1dPW5ldyBEaWN0XX1hc3luYyNzbihlLHQpe2NvbnN0IGE9dGhpcy5uZXdSZWY7dGhpcy54cmVmW2EubnVtXT1hd2FpdCB0aGlzLiNybihlLCEwLHQpO3JldHVybiBhfWNsb25lRGljdChlKXtjb25zdCB0PWUuY2xvbmUoKTt0LnhyZWY9dGhpcy54cmVmV3JhcHBlcjtyZXR1cm4gdH1hc3luYyNybihlLHQsYSxuPW5ldyBSZWZTZXQpe2lmKGUgaW5zdGFuY2VvZiBSZWYpe2NvbnN0e2N1cnJlbnREb2N1bWVudDp7ZmllbGRUb1BhcmVudDp0LG9sZFJlZk1hcHBpbmc6c319PXRoaXMscj1zLmdldChlKTtpZihyKXJldHVybiByO2NvbnN0IGk9ZTtlPWF3YWl0IGEuZmV0Y2hBc3luYyhpKTtjb25zdCBvPXMuZ2V0KGkpO2lmKG8pcmV0dXJuIG87aWYoIm51bWJlciI9PXR5cGVvZiBlKXJldHVybiBlO2lmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiZ0aGlzLiNpbihlLmRpY3QpKXJldHVybiB0aGlzLiNvbihpLGUsYSxuKTtjb25zdCBsPXRoaXMubmV3UmVmO3MucHV0KGksbCk7bGV0IGY9ITA7aWYodC5oYXMoaSkmJmUgaW5zdGFuY2VvZiBEaWN0KXsoZT10aGlzLmNsb25lRGljdChlKSkuZGVsZXRlKCJQYXJlbnQiKTtmPSExfXRoaXMueHJlZltsLm51bV09YXdhaXQgdGhpcy4jcm4oZSxmLGEsbik7cmV0dXJuIGx9Y29uc3Qgcz1bXSx7Y3VycmVudERvY3VtZW50Ontwb3N0cG9uZWRSZWZDb3BpZXM6cn19PXRoaXM7aWYoQXJyYXkuaXNBcnJheShlKSl7dCYmKGU9ZS5zbGljZSgpKTtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9ZVt0XWluc3RhbmNlb2YgUmVmJiZyLmdldChlW3RdKTtpP2kucHVzaChhPT5lW3RdPWEpOnMucHVzaCh0aGlzLiNybihlW3RdLCEwLGEsbikudGhlbihhPT5lW3RdPWEpKX1hd2FpdCBQcm9taXNlLmFsbChzKTtyZXR1cm4gZX1sZXQgaTtpZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7KHtkaWN0Oml9PWU9ZS5nZXRPcmlnaW5hbFN0cmVhbSgpLmNsb25lKCkpO2kueHJlZj10aGlzLnhyZWZXcmFwcGVyfWVsc2UgaWYoZSBpbnN0YW5jZW9mIERpY3Qpe3QmJigoZT1lLmNsb25lKCkpLnhyZWY9dGhpcy54cmVmV3JhcHBlcik7aT1lfWlmKGkpe2Zvcihjb25zdFtlLHRdb2YgaS5nZXRSYXdFbnRyaWVzKCkpe2NvbnN0IG89dCBpbnN0YW5jZW9mIFJlZiYmci5nZXQodCk7bz9vLnB1c2godD0+aS5zZXQoZSx0KSk6cy5wdXNoKHRoaXMuI3JuKHQsITAsYSxuKS50aGVuKHQ9Pmkuc2V0KGUsdCkpKX1hd2FpdCBQcm9taXNlLmFsbChzKX1yZXR1cm4gZX0jaW4oZSl7Y29uc3QgdD1lLmdldCgiU3VidHlwZSIpO3JldHVybiBpc05hbWUodCwiSW1hZ2UiKXx8ZS5oYXMoIkxlbmd0aDEiKXx8aXNOYW1lKHQsIlR5cGUxQyIpfHxpc05hbWUodCwiQ0lERm9udFR5cGUwQyIpfHxpc05hbWUodCwiT3BlblR5cGUiKX0jbG4oZSl7Y29uc3QgdD1lLmdldE9yaWdpbmFsU3RyZWFtKCk7dC5yZXNldCgpO3JldHVybiB0LmdldEJ5dGVzKCl9YXN5bmMjZm4oZSl7Y29uc3QgdD1bXTthd2FpdCB3cml0ZVZhbHVlKGUsdCxudWxsKTtyZXR1cm4gdC5qb2luKCIiKX0jY24oZSx0KXtjb25zdCBhPTI1Nix7bGVuZ3RoOm59PXQscz1uZXcgTXVybXVySGFzaDNfNjQ7cy51cGRhdGUoZSk7cy51cGRhdGUoYCMke259YCk7aWYobjw9MTAyNClzLnVwZGF0ZSh0KTtlbHNle2NvbnN0IGU9TWF0aC5mbG9vcigobi1hKS8zKTtmb3IobGV0IHI9MDtyPDQ7cisrKXtjb25zdCBpPU1hdGgubWluKHIqZSxuLWEpO3MudXBkYXRlKHQuc3ViYXJyYXkoaSxpK2EpKX19cmV0dXJuIHMuaGV4ZGlnZXN0KCl9YXN5bmMjb24oZSx0LGEsbil7Y29uc3R7Y3VycmVudERvY3VtZW50OntvbGRSZWZNYXBwaW5nOnMscmVzb3VyY2VTdHJlYW1Qcm9taXNlczpyfX09dGhpcztpZihuLmhhcyhlKSlyZXR1cm4gcy5nZXRPclB1dENvbXB1dGVkKGUsKCk9PnRoaXMubmV3UmVmKTtjb25zdCBpPWUudG9TdHJpbmcoKSxvPXIuZ2V0KGkpO2lmKG8pcmV0dXJuIG87Y29uc3QgbD1uZXcgUmVmU2V0KG4pO2wucHV0KGUpO2NvbnN0IGY9UHJvbWlzZS5yZXNvbHZlKCkudGhlbihhc3luYygpPT57Y29uc3Qgbj1hd2FpdCB0aGlzLiNybih0LCEwLGEsbCkscj1zLmdldChlKTtpZihyKXt0aGlzLnhyZWZbci5udW1dPW47cmV0dXJuIHJ9Y29uc3QgaT1hd2FpdCB0aGlzLiNobihuKTtzLnB1dChlLGkpO3JldHVybiBpfSk7ci5zZXQoaSxmKTt0cnl7cmV0dXJuIGF3YWl0IGZ9ZmluYWxseXtyLmdldChpKT09PWYmJnIuZGVsZXRlKGkpfX1hc3luYyNobihlKXtjb25zdCB0PWF3YWl0IHRoaXMuI2ZuKGUuZGljdCksYT10aGlzLiNsbihlKSxuPXRoaXMuI2NuKHQsYSkscz10aGlzLiNubi5nZXRPckluc2VydENvbXB1dGVkKG4sbWFrZUFycik7Zm9yKGNvbnN0IGUgb2YgcylpZihlLmRpY3RTdHI9PT10JiZpc0FycmF5RXF1YWwodGhpcy4jbG4oZS5zdHJlYW0pLGEpKXJldHVybiBlLnJlZjtjb25zdCByPXRoaXMubmV3UmVmO3RoaXMueHJlZltyLm51bV09ZTtzLnB1c2goe3JlZjpyLGRpY3RTdHI6dCxzdHJlYW06ZX0pO3JldHVybiByfWFzeW5jI3VuKGUsdCl7aWYoZSBpbnN0YW5jZW9mIFJlZil7Y29uc3QgYT1hd2FpdCB0LmZldGNoQXN5bmMoZSk7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk/YTpbZV19cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZTpbZV19YXN5bmMjbW4oZSx0LGEsbixzLHIsaSxvPW5ldyBSZWZTZXQpe2NvbnN0e2N1cnJlbnREb2N1bWVudDp7cGFnZXNNYXA6bCxvbGRSZWZNYXBwaW5nOmZ9fT10aGlzLGM9dC5nZXRSYXcoIlBnIik7aWYoYyBpbnN0YW5jZW9mIFJlZiYmIWwuaGFzKGMpKXJldHVybiBudWxsO2NvbnN0IGg9dC5nZXRSYXcoIksiKTtpZihoIGluc3RhbmNlb2YgUmVmJiZvLmhhcyhoKSlyZXR1cm4gbnVsbDtjb25zdCB1PWF3YWl0IHRoaXMuI3VuKGgsYSksbT1bXSxwPVtdO2ZvcihsZXQgdCBvZiB1KXtjb25zdCBjPXQgaW5zdGFuY2VvZiBSZWY/dDpudWxsO2lmKGMpe2lmKG8uaGFzKGMpKWNvbnRpbnVlO28ucHV0KGMpO3Q9YXdhaXQgYS5mZXRjaEFzeW5jKGMpfWlmKCJudW1iZXIiPT10eXBlb2YgdCl7bS5wdXNoKHQpO2NvbnRpbnVlfWlmKCEodCBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2NvbnN0IGg9dC5nZXRSYXcoIlBnIik7aWYoaCBpbnN0YW5jZW9mIFJlZiYmIWwuaGFzKGgpKWNvbnRpbnVlO2NvbnN0IHU9dC5nZXQoIlR5cGUiKTtpZighdXx8aXNOYW1lKHUsIlN0cnVjdEVsZW0iKSl7bGV0IGU9ITE7aWYoYyYmbi5oYXMoYykpe2lmKCFpc05hbWUodC5nZXQoIlMiKSwiTGluayIpKWNvbnRpbnVlO2U9ITB9Y29uc3QgbD1hd2FpdCB0aGlzLiNtbihjLHQsYSxuLHMscixpLG8pO2lmKGwpe3AucHVzaChtLmxlbmd0aCk7bS5wdXNoKGwpO2MmJmYucHV0KGMsbCk7ZSYmdGhpcy54cmVmW2wubnVtXS5zZXRJZk5hbWUoIlMiLCJTcGFuIil9Y29udGludWV9aWYoaXNOYW1lKHUsIk9CSlIiKSl7aWYoIWMpY29udGludWU7Y29uc3Qgbj10LmdldFJhdygiT2JqIik7aWYobiBpbnN0YW5jZW9mIFJlZiYmIWYuZ2V0KG4pKWNvbnRpbnVlO2NvbnN0IHM9Zi5nZXQoYyl8fGF3YWl0IHRoaXMuI3JuKGMsITAsYSkscj10aGlzLnhyZWZbcy5udW1dLmdldFJhdygiT2JqIik7aWYociBpbnN0YW5jZW9mIFJlZil7Y29uc3QgdD10aGlzLnhyZWZbci5udW1dO2lmKHQgaW5zdGFuY2VvZiBEaWN0JiYhdC5oYXMoIlN0cnVjdFBhcmVudCIpJiZlKXtjb25zdCBhPXRoaXMucGFyZW50VHJlZS5zaXplO3RoaXMucGFyZW50VHJlZS5zZXQoYSxbZixlXSk7dC5zZXQoIlN0cnVjdFBhcmVudCIsYSl9fW0ucHVzaChzKTtjb250aW51ZX1pZihpc05hbWUodSwiTUNSIikpe2NvbnN0IGU9YXdhaXQgdGhpcy4jcm4oY3x8dCwhMCxhKTttLnB1c2goZSk7Y29udGludWV9aWYoYyl7Y29uc3QgZT1hd2FpdCB0aGlzLiNybihjLCEwLGEpO20ucHVzaChlKX19aWYoMCE9PXUubGVuZ3RoJiYwPT09bS5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3QgZD10aGlzLm5ld1JlZixnPXRoaXMueHJlZltkLm51bV09dGhpcy5jbG9uZURpY3QodCk7Zy5kZWxldGUoIklEIik7Zy5kZWxldGUoIkMiKTtnLmRlbGV0ZSgiSyIpO2cuZGVsZXRlKCJQIik7Zy5kZWxldGUoIlMiKTthd2FpdCB0aGlzLiNybihnLCExLGEpO2NvbnN0IGI9dC5nZXQoIkMiKTtpZihiIGluc3RhbmNlb2YgTmFtZSl7Y29uc3QgZT1yLmdldChiLm5hbWUpO2cuc2V0KCJDIixlP05hbWUuZ2V0KGUpOmIpfWVsc2UgaWYoQXJyYXkuaXNBcnJheShiKSl7Y29uc3QgZT1bXTtmb3IoY29uc3QgdCBvZiBiKWlmKHQgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCBhPXIuZ2V0KHQubmFtZSk7ZS5wdXNoKGE/TmFtZS5nZXQoYSk6dCl9Zy5zZXQoIkMiLGUpfWNvbnN0IHc9dC5nZXQoIlMiKTtpZih3IGluc3RhbmNlb2YgTmFtZSl7Y29uc3QgZT1pLmdldCh3Lm5hbWUpO2cuc2V0KCJTIixlP05hbWUuZ2V0KGUpOncpfWNvbnN0IGo9dC5nZXQoIklEIik7aWYoInN0cmluZyI9PXR5cGVvZiBqKXtjb25zdCBlPXN0cmluZ1RvUERGU3RyaW5nKGosITEpLHQ9cy5nZXQoZSk7Zy5zZXQoIklEIix0P3N0cmluZ1RvQXNjaWlPclVURjE2QkUodCk6ail9bGV0IGs9Zy5nZXQoIkEiKTtpZihrKXtBcnJheS5pc0FycmF5KGspfHwoaz1ba10pO2ZvcihsZXQgZSBvZiBrKXtlPXRoaXMueHJlZldyYXBwZXIuZmV0Y2hJZlJlZihlKTtpZihlIGluc3RhbmNlb2YgRGljdCYmKGlzTmFtZShlLmdldCgiTyIpLCJUYWJsZSIpJiZlLmhhcygiSGVhZGVycyIpKSl7Y29uc3QgdD10aGlzLnhyZWZXcmFwcGVyLmZldGNoSWZSZWYoZS5nZXRSYXcoIkhlYWRlcnMiKSk7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IobGV0IGU9MCxhPXQubGVuZ3RoO2U8YTtlKyspe2NvbnN0IGE9dGhpcy54cmVmV3JhcHBlci5mZXRjaElmUmVmKHRbZV0pO2lmKCJzdHJpbmciIT10eXBlb2YgYSljb250aW51ZTtjb25zdCBuPXMuZ2V0KHN0cmluZ1RvUERGU3RyaW5nKGEsITEpKTtuJiYodFtlXT1uKX19fX1mb3IoY29uc3QgZSBvZiBwKXtjb25zdCB0PW1bZV07dGhpcy54cmVmW3QubnVtXS5zZXQoIlAiLGQpfTE9PT1tLmxlbmd0aD9nLnNldCgiSyIsbVswXSk6bS5sZW5ndGg+MSYmZy5zZXQoIksiLG0pO3JldHVybiBkfSNwbih7ZG9jdW1lbnQ6ZSxpbmNsdWRlUGFnZXM6dCxleGNsdWRlUGFnZXM6YX0pe2lmKCFlKXJldHVybltdO2NvbnN0IGNvbXBpbGU9ZT0+e2lmKCFlPy5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgU2V0LGE9W107Zm9yKGNvbnN0IG4gb2YgZSlBcnJheS5pc0FycmF5KG4pP2EucHVzaChuKTp0LmFkZChuKTtyZXR1cm57aW5kaWNlczp0LHJhbmdlczphfX0sbWF0Y2hlcz0oZSx7aW5kaWNlczp0LHJhbmdlczphfSk9PnQuaGFzKGUpfHxhLnNvbWUoKFt0LGFdKT0+ZT49dCYmZTw9YSksbj1jb21waWxlKHQpLHM9Y29tcGlsZShhKSxyPVtdO2ZvcihsZXQgdD0wLGE9ZS5udW1QYWdlczt0PGE7dCsrKXMmJm1hdGNoZXModCxzKXx8biYmIW1hdGNoZXModCxuKXx8ci5wdXNoKHQpO3JldHVybiByfSNkbihlKXtjb25zdCB0PW5ldyBBcnJheShlLmxlbmd0aCksYT1bXSxuPVtdO2ZvcihsZXQgcz0wO3M8ZS5sZW5ndGg7cysrKXtjb25zdCByPWVbc107bGV0IGk7aWYoci5pbWFnZSlpPXRbc109MTtlbHNle2lmKCFyLmRvY3VtZW50KXt0W3NdPTA7Y29udGludWV9aT10W3NdPXRoaXMuI3BuKHIpLmxlbmd0aH1pZighci5wYWdlSW5kaWNlcylpZih2b2lkIDA9PT1yLmluc2VydEFmdGVyKWZvcihsZXQgZT0wO2U8aTtlKyspYS5wdXNoKHMpO2Vsc2Ugbi5wdXNoKHtpOnMsaW5zZXJ0QWZ0ZXI6ci5pbnNlcnRBZnRlcixjb3VudDppfSl9aWYoMD09PW4ubGVuZ3RoKXJldHVybiBlO2NvbnN0IGhhc0NvbnRlbnQ9ZT0+ISghZS5kb2N1bWVudCYmIWUuaW1hZ2UpO2ZvcihsZXQgYT0wO2E8ZS5sZW5ndGg7YSsrKXtjb25zdCBuPWVbYV07aWYoaGFzQ29udGVudChuKSYmbi5wYWdlSW5kaWNlcyYmbi5wYWdlSW5kaWNlcy5sZW5ndGg8dFthXSl0aHJvdyBuZXcgRXJyb3IoImV4dHJhY3RQYWdlczogcGFydGlhbCBwYWdlSW5kaWNlcyBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBpbnNlcnRBZnRlciBlbnRyaWVzLiIpfW4uc29ydCgoZSx0KT0+ZS5pbnNlcnRBZnRlci10Lmluc2VydEFmdGVyfHxlLmktdC5pKTtpZigwPT09YS5sZW5ndGgmJmUuc29tZShlPT5oYXNDb250ZW50KGUpJiZlLnBhZ2VJbmRpY2VzKSl7Y29uc3QgdD1lLnNsaWNlKCk7bGV0IGE9LTE7Zm9yKGNvbnN0IHQgb2YgZSlpZihoYXNDb250ZW50KHQpJiZ0LnBhZ2VJbmRpY2VzKWZvcihjb25zdCBlIG9mIHQucGFnZUluZGljZXMpZT5hJiYoYT1lKTtsZXQgcz0wO2Zvcihjb25zdHtpOmUsaW5zZXJ0QWZ0ZXI6cixjb3VudDppfW9mIG4pe2NvbnN0IG49TWF0aC5taW4oTWF0aC5tYXgociwtMSkrcyxhKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7Y29uc3QgYT10W2VdO2hhc0NvbnRlbnQoYSkmJmEucGFnZUluZGljZXMmJiFhLnBhZ2VJbmRpY2VzLmV2ZXJ5KGU9PmU8PW4pJiYodFtlXT17Li4uYSxwYWdlSW5kaWNlczphLnBhZ2VJbmRpY2VzLm1hcChlPT5lPm4/ZStpOmUpfSl9Y29uc3Qgbz1bXTtmb3IobGV0IGU9MDtlPGk7ZSsrKW8ucHVzaChuKzErZSk7Y29uc3QgbD17Li4udFtlXSxwYWdlSW5kaWNlczpvfTtkZWxldGUgbC5pbnNlcnRBZnRlcjt0W2VdPWw7cys9aTthKz1pfXJldHVybiB0fWxldCBzPTA7Zm9yKGNvbnN0e2k6ZSxpbnNlcnRBZnRlcjp0LGNvdW50OnJ9b2Ygbil7Y29uc3Qgbj1NYXRoLm1heCh0LC0xKSsxK3M7YS5zcGxpY2UobiwwLC4uLm5ldyBBcnJheShyKS5maWxsKGUpKTtzKz1yfWNvbnN0IHI9bmV3IEFycmF5KGUubGVuZ3RoKTtmb3IobGV0IGU9MDtlPGEubGVuZ3RoO2UrKyl7Y29uc3QgdD1hW2VdOyhyW3RdfHw9W10pLnB1c2goZSl9cmV0dXJuIGUubWFwKChlLHQpPT57aWYoIWhhc0NvbnRlbnQoZSl8fGUucGFnZUluZGljZXMpcmV0dXJuIGU7Y29uc3QgYT17Li4uZSxwYWdlSW5kaWNlczpyW3RdfHxbXX07ZGVsZXRlIGEuaW5zZXJ0QWZ0ZXI7cmV0dXJuIGF9KX1hc3luYyBleHRyYWN0UGFnZXMoZSx0LGEsbixzKXt0aGlzLiNhbj1hO2U9dGhpcy4jZG4oZSk7Y29uc3Qgcj1bXTtsZXQgaT0wO2NvbnN0IHJlc2VydmVQYWdlU2xvdD1lPT57aWYoIU51bWJlci5pc0ludGVnZXIoZSl8fGU8MCl0aHJvdyBuZXcgRXJyb3IoImV4dHJhY3RQYWdlczogaW52YWxpZCBwYWdlIGluZGV4LiIpO2lmKHZvaWQgMCE9PXRoaXMub2xkUGFnZXNbZV0pdGhyb3cgbmV3IEVycm9yKCJleHRyYWN0UGFnZXM6IG92ZXJsYXBwaW5nIHBhZ2VJbmRpY2VzLiIpO3RoaXMub2xkUGFnZXNbZV09bnVsbH0sbz1bXTt0JiYodGhpcy4jdG49e2hhbmRsZXI6bix0YXNrOnMsbmV3QW5ub3RhdGlvbnNCeVBhZ2U6Z2V0TmV3QW5ub3RhdGlvbnNNYXAodCksaW1hZ2VzUHJvbWlzZXM6QW5ub3RhdGlvbkZhY3RvcnkuZ2VuZXJhdGVJbWFnZXModC52YWx1ZXMoKSx0aGlzLnhyZWZXcmFwcGVyLCEwKX0pO2NvbnN0IGw9W107Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3R7ZG9jdW1lbnQ6ZSxpbWFnZTphLGluY2x1ZGVQYWdlczpuLGV4Y2x1ZGVQYWdlczpzLHBhZ2VJbmRpY2VzOmZ9PXQ7aWYoYSl7aWYoZil7aT0tMTtpZihmLmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiZXh0cmFjdFBhZ2VzOiB0b28gbWFueSBwYWdlSW5kaWNlcy4iKX1sZXQgZTtpZihmPy5sZW5ndGgpZT1mWzBdO2Vsc2UgaWYoLTEhPT1pKWU9aSsrO2Vsc2UgZm9yKGU9MDt2b2lkIDAhPT10aGlzLm9sZFBhZ2VzW2VdO2UrKyk7cmVzZXJ2ZVBhZ2VTbG90KGUpO2wucHVzaCh7aW1hZ2U6YSxzbG90OmV9KTtjb250aW51ZX1pZighZSljb250aW51ZTtmJiYoaT0tMSk7Y29uc3QgYz10aGlzLiNwbih7ZG9jdW1lbnQ6ZSxpbmNsdWRlUGFnZXM6bixleGNsdWRlUGFnZXM6c30pO2lmKGYmJmYubGVuZ3RoPmMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiZXh0cmFjdFBhZ2VzOiB0b28gbWFueSBwYWdlSW5kaWNlcy4iKTtjb25zdCBoPW5ldyBEb2N1bWVudERhdGEoZSk7by5wdXNoKGgpO3IucHVzaCh0aGlzLiNnbihoKSk7bGV0IHU9MDtmb3IoY29uc3QgdCBvZiBjKXtsZXQgYTtmJiYoYT1mW3UrK10pO2lmKHZvaWQgMD09PWEpaWYoLTEhPT1pKWE9aSsrO2Vsc2UgZm9yKGE9MDt2b2lkIDAhPT10aGlzLm9sZFBhZ2VzW2FdO2ErKyk7cmVzZXJ2ZVBhZ2VTbG90KGEpO3IucHVzaChlLmdldFBhZ2UodCkudGhlbihlPT57dGhpcy5vbGRQYWdlc1thXT1uZXcgUGFnZURhdGEoZSxoKX0pKX19YXdhaXQgUHJvbWlzZS5hbGwocik7aWYoMD09PXRoaXMub2xkUGFnZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiZXh0cmFjdFBhZ2VzOiBub3RoaW5nIHRvIGV4dHJhY3QuIik7Y29uc3QgZj1uZXcgTWFwLGM9bmV3IFNldDtmb3IobGV0IGU9MCx0PXRoaXMub2xkUGFnZXMubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9dGhpcy5vbGRQYWdlc1tlXTtpZih2b2lkIDA9PT10KXRocm93IG5ldyBFcnJvcigiZXh0cmFjdFBhZ2VzOiBzcGFyc2UgcGFnZUluZGljZXMuIik7aWYodCl7Y29uc3R7cGFnZTplfT10LGE9Zi5nZXQoZSk/PzA7Zi5zZXQoZSxhKzEpO3QuY29weUxldmVsPWE7Yy5hZGQodC5kb2N1bWVudERhdGEuZG9jdW1lbnQpfX10aGlzLmlzU2luZ2xlRmlsZT0xPT09Yy5zaXplO3IubGVuZ3RoPTA7dGhpcy4jYm4obyk7dGhpcy4jd24obyk7dGhpcy4jam4oKTtmb3IoY29uc3QgZSBvZiB0aGlzLm9sZFBhZ2VzKWUmJnIucHVzaCh0aGlzLiNrbihlKSk7YXdhaXQgUHJvbWlzZS5hbGwocik7dGhpcy4jeW4oKTt0aGlzLiNxbihvKTtjb25zdCBoPW5ldyBNYXA7Zm9yKGNvbnN0IGUgb2YgbCloLnNldChlLnNsb3QsZSk7Y29uc3QgdT1oLnNpemU+MD90aGlzLiN2bigpOm51bGw7Zm9yKGxldCBlPTAsdD10aGlzLm9sZFBhZ2VzLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PWguZ2V0KGUpO3RoaXMubmV3UGFnZXNbZV09dD9hd2FpdCB0aGlzLiNTbih0LmltYWdlLHUpOmF3YWl0IHRoaXMuI0FuKGUsbnVsbCl9dGhpcy4jeG4obyk7YXdhaXQgdGhpcy4jQ24obyk7YXdhaXQgdGhpcy4jSW4obyk7dGhpcy4jRm4obyk7YXdhaXQgdGhpcy4jVG4obyk7cmV0dXJuIHRoaXMud3JpdGVQREYoKX1hc3luYyNnbihlKXtjb25zdHtkb2N1bWVudDp7cGRmTWFuYWdlcjp0LHhyZWY6YX19PWU7YXdhaXQgUHJvbWlzZS5hbGwoW3QuZW5zdXJlQ2F0YWxvZygiZGVzdGluYXRpb25zIikudGhlbih0PT5lLmRlc3RpbmF0aW9ucz10KSx0LmVuc3VyZUNhdGFsb2coInJhd1BhZ2VMYWJlbHMiKS50aGVuKHQ9PmUucGFnZUxhYmVscz10KSx0LmVuc3VyZUNhdGFsb2coInN0cnVjdFRyZWVSb290IikudGhlbih0PT5lLnN0cnVjdFRyZWVSb290PXQpLHQuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKS50aGVuKHQ9PmUuYWNyb0Zvcm09dCksdC5lbnN1cmVDYXRhbG9nKCJkb2N1bWVudE91dGxpbmVGb3JFZGl0b3IiKS50aGVuKHQ9PmUub3V0bGluZT10KSx0LmVuc3VyZUNhdGFsb2coInJhd0VtYmVkZGVkRmlsZXMiKS50aGVuKHQ9PmUuZW1iZWRkZWRGaWxlcz10KV0pO2NvbnN0IG49ZS5zdHJ1Y3RUcmVlUm9vdDtpZihuKXtjb25zdCB0PW4uZGljdCxzPXQuZ2V0KCJQYXJlbnRUcmVlIik7aWYocyl7Y29uc3QgdD1uZXcgTnVtYmVyVHJlZShzLGEpO2UucGFyZW50VHJlZT10LmdldEFsbCghMCl9Y29uc3Qgcj10LmdldCgiSURUcmVlIik7aWYocil7Y29uc3QgdD1uZXcgTmFtZVRyZWUocixhKTtlLmlkVHJlZT10LmdldEFsbCghMCl9ZS5yb2xlTWFwPXQuZ2V0KCJSb2xlTWFwIil8fG51bGw7ZS5jbGFzc01hcD10LmdldCgiQ2xhc3NNYXAiKXx8bnVsbDtsZXQgaT10LmdldCgiTmFtZXNwYWNlcyIpfHxudWxsO2kmJiFBcnJheS5pc0FycmF5KGkpJiYoaT1baV0pO2UubmFtZXNwYWNlcz1pO2Uuc3RydWN0VHJlZUFGPXQuZ2V0KCJBRiIpfHxudWxsO2Uuc3RydWN0VHJlZVByb251bmNpYXRpb25MZXhpY29uPXQuZ2V0KCJQcm9udW5jaWF0aW9uTGV4aWNvbiIpfHxudWxsfX1hc3luYyNrbihlKXtjb25zdHtwYWdlOnt4cmVmOnQsYW5ub3RhdGlvbnM6YX0sZG9jdW1lbnREYXRhOntwYWdlc01hcDpuLGRlc3RpbmF0aW9uczpzLHVzZWROYW1lZERlc3RpbmF0aW9uczpyLGZpZWxkVG9QYXJlbnQ6aX19PWU7aWYoIWEpcmV0dXJuO2NvbnN0IG89W107bGV0IGw9W10sZj0wLHtoYXNTaWduYXR1cmVBbm5vdGF0aW9uczpjfT1lLmRvY3VtZW50RGF0YTtmb3IoY29uc3QgZSBvZiBhKXtjb25zdCBhPWYrKztvLnB1c2godC5mZXRjaElmUmVmQXN5bmMoZSkudGhlbihhc3luYyB0PT57aWYoIWlzTmFtZSh0LmdldCgiU3VidHlwZSIpLCJMaW5rIikpe2lmKGlzTmFtZSh0LmdldCgiU3VidHlwZSIpLCJXaWRnZXQiKSl7Y3x8PWlzTmFtZShnZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJGVCJ9KSwiU2lnIik7Y29uc3QgYT10LmdldFJhdygiUGFyZW50Iil8fG51bGw7aS5wdXQoZSxhKX1sW2FdPWU7cmV0dXJufWNvbnN0IG89dC5nZXQoIkEiKTtpZihvIGluc3RhbmNlb2YgRGljdCYmIWlzTmFtZShvLmdldCgiUyIpLCJHb1RvIikpe2xbYV09ZTtyZXR1cm59Y29uc3QgZj1vIGluc3RhbmNlb2YgRGljdD9vLmdldCgiRCIpOnQuZ2V0KCJEZXN0Iik7aWYoZiYmKCFBcnJheS5pc0FycmF5KGYpfHxmWzBdaW5zdGFuY2VvZiBSZWYmJiFuLmhhcyhmWzBdKSkpe2lmKGYgaW5zdGFuY2VvZiBOYW1lfHwic3RyaW5nIj09dHlwZW9mIGYpe2NvbnN0IHQ9c3RyaW5nVG9QREZTdHJpbmcoZiBpbnN0YW5jZW9mIE5hbWU/Zi5uYW1lOmYsITApO2lmKHMuaGFzKHQpKXtsW2FdPWU7ci5hZGQodCl9fX1lbHNlIGxbYV09ZX0pKX1hd2FpdCBQcm9taXNlLmFsbChvKTtsPWwuZmlsdGVyKEJvb2xlYW4pO2UuYW5ub3RhdGlvbnM9bC5sZW5ndGg+MD9sOm51bGw7ZS5kb2N1bWVudERhdGEuaGFzU2lnbmF0dXJlQW5ub3RhdGlvbnN8fD1jfSNxbihlKXtmb3IoY29uc3R7cG9zdHBvbmVkUmVmQ29waWVzOnQscGFnZXNNYXA6YX1vZiBlKWZvcihjb25zdCBlIG9mIGEua2V5cygpKXQucHV0KGUsW10pfSN4bihlKXtmb3IoY29uc3R7cG9zdHBvbmVkUmVmQ29waWVzOnQsb2xkUmVmTWFwcGluZzphfW9mIGUpe2Zvcihjb25zdFtlLG5db2YgdC5pdGVtcygpKXtjb25zdCB0PWEuZ2V0KGUpO2Zvcihjb25zdCBlIG9mIG4pZSh0KX10LmNsZWFyKCl9fSNSbihlLHQsYT1uZXcgUmVmU2V0KXtpZihlIGluc3RhbmNlb2YgUmVmKXtpZighYS5oYXMoZSkpe2EucHV0KGUpO3RoaXMuI1JuKHRoaXMueHJlZltlLm51bV0sdCxhKX1yZXR1cm59aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKGNvbnN0IG4gb2YgZSl0aGlzLiNSbihuLHQsYSk7cmV0dXJufWxldCBuO2UgaW5zdGFuY2VvZiBCYXNlU3RyZWFtPyh7ZGljdDpufT1lKTplIGluc3RhbmNlb2YgRGljdCYmKG49ZSk7aWYobil7dChuKTtmb3IoY29uc3QgZSBvZiBuLmdldFJhd1ZhbHVlcygpKXRoaXMuI1JuKGUsdCxhKX19YXN5bmMjQ24oZSl7bGV0IHQ9MDtjb25zdHtwYXJlbnRUcmVlOmF9PXRoaXM7Zm9yKGxldCBlPTAsbj10aGlzLm5ld1BhZ2VzLmxlbmd0aDtlPG47ZSsrKXtpZighdGhpcy5vbGRQYWdlc1tlXSljb250aW51ZTtjb25zdHtkb2N1bWVudERhdGE6e3BhcmVudFRyZWU6bixvbGRSZWZNYXBwaW5nOnMsb2xkU3RydWN0UGFyZW50TWFwcGluZzpyLHVzZWRTdHJ1Y3RQYXJlbnRzOmksZG9jdW1lbnQ6e3hyZWY6b319fT10aGlzLm9sZFBhZ2VzW2VdO2lmKCFuKWNvbnRpbnVlO2NvbnN0IGw9dGhpcy5uZXdQYWdlc1tlXSxmPXRoaXMueHJlZltsLm51bV0sYz1uZXcgUmVmU2V0O2MucHV0KGwpO3RoaXMuI1JuKGYsZT0+e2NvbnN0IGw9ZS5nZXQoIlN0cnVjdFBhcmVudCIpPz9lLmdldCgiU3RydWN0UGFyZW50cyIpO2lmKCJudW1iZXIiIT10eXBlb2YgbClyZXR1cm47aS5hZGQobCk7bGV0IGY9bi5nZXQobCk7Y29uc3QgYz1mIGluc3RhbmNlb2YgUmVmP2Y6bnVsbDtpZihjKXtjb25zdCBlPW8uZmV0Y2goYyk7QXJyYXkuaXNBcnJheShlKSYmKGY9ZSl9QXJyYXkuaXNBcnJheShmKSYmZi5ldmVyeShlPT5udWxsPT09ZSkmJihmPW51bGwpO2lmKCFmKXtlLmhhcygiU3RydWN0UGFyZW50Iik/ZS5kZWxldGUoIlN0cnVjdFBhcmVudCIpOmUuZGVsZXRlKCJTdHJ1Y3RQYXJlbnRzIik7cmV0dXJufWxldCBoPXIuZ2V0KGwpO2lmKHZvaWQgMD09PWgpe2g9dCsrO3Iuc2V0KGwsaCk7YS5zZXQoaCxbcyxmXSl9ZS5oYXMoIlN0cnVjdFBhcmVudCIpP2Uuc2V0KCJTdHJ1Y3RQYXJlbnQiLGgpOmUuc2V0KCJTdHJ1Y3RQYXJlbnRzIixoKX0sYyl9Y29uc3R7c3RydWN0VHJlZUtpZHM6bixpZFRyZWU6cyxjbGFzc01hcDpyLHJvbGVNYXA6aSxuYW1lc3BhY2VzOm8sc3RydWN0VHJlZUFGOmwsc3RydWN0VHJlZVByb251bmNpYXRpb25MZXhpY29uOmZ9PXRoaXM7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3R7ZG9jdW1lbnQ6e3hyZWY6ZX0sb2xkUmVmTWFwcGluZzphLHBhcmVudFRyZWU6Yyx1c2VkU3RydWN0UGFyZW50czpoLHN0cnVjdFRyZWVSb290OnUsaWRUcmVlOm0sY2xhc3NNYXA6cCxyb2xlTWFwOmQsbmFtZXNwYWNlczpnLHN0cnVjdFRyZWVBRjpiLHN0cnVjdFRyZWVQcm9udW5jaWF0aW9uTGV4aWNvbjp3fT10O2lmKCF1KWNvbnRpbnVlO3RoaXMuY3VycmVudERvY3VtZW50PXQ7Y29uc3Qgaj1uZXcgUmVmU2V0O2Zvcihjb25zdFtlLHRdb2YgY3x8W10pIWguaGFzKGUpJiZ0IGluc3RhbmNlb2YgUmVmJiZqLnB1dCh0KTtjb25zdCBrPW5ldyBNYXA7Zm9yKGNvbnN0W2UsdF1vZiBtfHxbXSl7bGV0IGE9ZTtpZihzLmhhcyhlKSlmb3IobGV0IHQ9MTs7dCsrKXtjb25zdCBuPWAke2V9XyR7dH1gO2lmKCFzLmhhcyhuKSl7ay5zZXQoZSxuKTthPW47YnJlYWt9fXMuc2V0KGEsdCl9Y29uc3QgeT1uZXcgTWFwO2lmKHA/LnNpemU+MClmb3IobGV0W3QsYV1vZiBwKXthPWF3YWl0IHRoaXMuI3JuKGEsITAsZSk7aWYoci5oYXModCkpZm9yKGxldCBlPTE7O2UrKyl7Y29uc3QgYT1gJHt0fV8ke2V9YDtpZighci5oYXMoYSkpe3kuc2V0KHQsYSk7dD1hO2JyZWFrfX1yLnNldCh0LGEpfWNvbnN0IHE9bmV3IE1hcDtpZihkPy5zaXplPjApZm9yKGNvbnN0W2UsdF1vZiBkKXtjb25zdCBhPWkuZ2V0KGUpO2lmKGEpe2lmKGEhPT10KWZvcihsZXQgYT0xOzthKyspe2NvbnN0IG49YCR7ZX1fJHthfWA7aWYoIWkuaGFzKG4pKXtxLnNldChlLG4pO2kuc2V0KG4sdCk7YnJlYWt9fX1lbHNlIGkuc2V0KGUsdCl9aWYoZz8ubGVuZ3RoPjApZm9yKGNvbnN0IHQgb2YgZyl7Y29uc3QgYT1hd2FpdCBlLmZldGNoSWZSZWZBc3luYyh0KTtsZXQgbj1hLmdldCgiTlMiKTtpZighbnx8by5oYXMobikpY29udGludWU7bj1zdHJpbmdUb1BERlN0cmluZyhuLCExKTtjb25zdCBzPWF3YWl0IHRoaXMuI3JuKGEsITAsZSk7by5zZXQobixzKX1pZihiKWZvcihjb25zdCB0IG9mIGIpbC5wdXNoKGF3YWl0IHRoaXMuI3JuKHQsITAsZSkpO2lmKHcpZm9yKGNvbnN0IHQgb2YgdylmLnB1c2goYXdhaXQgdGhpcy4jcm4odCwhMCxlKSk7Y29uc3Qgdj11LmRpY3QuZ2V0UmF3KCJLIik7aWYoIXYpY29udGludWU7Y29uc3QgUz1hd2FpdCB0aGlzLiN1bih2LGUpO2ZvcihsZXQgdCBvZiBTKXtjb25zdCBzPXQgaW5zdGFuY2VvZiBSZWY/dDpudWxsO3Q9YXdhaXQgZS5mZXRjaElmUmVmQXN5bmModCk7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpY29udGludWU7bGV0IHI9ITE7aWYocyYmai5oYXMocykpe2lmKCFpc05hbWUodC5nZXQoIlMiKSwiTGluayIpKWNvbnRpbnVlO3I9ITB9Y29uc3QgaT1hd2FpdCB0aGlzLiNtbihzLHQsZSxqLGsseSxxKTtpZihpKXtuLnB1c2goaSk7cyYmYS5wdXQocyxpKTtyJiZ0aGlzLnhyZWZbaS5udW1dLnNldElmTmFtZSgiUyIsIlNwYW4iKX19Zm9yKGNvbnN0W2UsdF1vZiBtfHxbXSl7Y29uc3Qgbj10IGluc3RhbmNlb2YgUmVmJiZhLmdldCh0KSxyPWsuZ2V0KGUpfHxlO24/cy5zZXQocixuKTpzLmRlbGV0ZShyKX19Zm9yKGNvbnN0W2UsW3Qsbl1db2YgYSl7aWYoIW4pe2EuZGVsZXRlKGUpO2NvbnRpbnVlfWlmKCFBcnJheS5pc0FycmF5KG4pKXtjb25zdCBzPXQuZ2V0KG4pO3ZvaWQgMD09PXM/YS5kZWxldGUoZSk6YS5zZXQoZSxzKTtjb250aW51ZX1jb25zdCBzPW4ubWFwKGU9PmUgaW5zdGFuY2VvZiBSZWYmJnQuZ2V0KGUpfHxudWxsKTswPT09cy5sZW5ndGh8fHMuZXZlcnkoZT0+bnVsbD09PWUpP2EuZGVsZXRlKGUpOmEuc2V0KGUscyl9dGhpcy5jdXJyZW50RG9jdW1lbnQ9bnVsbH0jYm4oZSl7Zm9yKGNvbnN0IHQgb2YgZSl7aWYoIXQuZGVzdGluYXRpb25zKWNvbnRpbnVlO2NvbnN0e2Rlc3RpbmF0aW9uczplLHBhZ2VzTWFwOmF9PXQsbj10LmRlc3RpbmF0aW9ucz1uZXcgTWFwO2Zvcihjb25zdFt0LHNdb2YgZSl7Y29uc3QgZT1zWzBdLHI9ZSBpbnN0YW5jZW9mIFJlZiYmYS5nZXQoZSk7aWYocil7KHIucG9pbnRpbmdOYW1lZERlc3RpbmF0aW9uc3x8PW5ldyBTZXQpLmFkZCh0KTtuLnNldCh0LHMpfX19fSN5bigpe2NvbnN0e25hbWVkRGVzdGluYXRpb25zOmV9PXRoaXMsZ2V0VW5pcXVlRGVzdGluYXRpb25OYW1lPXQ9PntpZighZS5oYXModCkpcmV0dXJuIHQ7Zm9yKGxldCBhPTE7O2ErKyl7Y29uc3Qgbj1gJHt0fV8ke2F9YDtpZighZS5oYXMobikpcmV0dXJuIG59fTtmb3IobGV0IHQ9MCxhPXRoaXMub2xkUGFnZXMubGVuZ3RoO3Q8YTt0Kyspe2NvbnN0IGE9dGhpcy5vbGRQYWdlc1t0XTtpZighYSljb250aW51ZTtjb25zdHtkb2N1bWVudERhdGE6e2Rlc3RpbmF0aW9uczpuLGRlZHVwTmFtZWREZXN0aW5hdGlvbnM6cyx1c2VkTmFtZWREZXN0aW5hdGlvbnM6cn19PWE7bGV0e3BvaW50aW5nTmFtZWREZXN0aW5hdGlvbnM6aX09YTtpZihpKXthLnBvaW50aW5nTmFtZWREZXN0aW5hdGlvbnM9aT1pLmludGVyc2VjdGlvbihyKTtmb3IoY29uc3QgYSBvZiBpKXtpZighci5oYXMoYSkpY29udGludWU7Y29uc3QgaT1uLmdldChhKS5zbGljZSgpO2lmKCFlLmhhcyhhKSl7ZS5zZXQoYSxpKTtjb250aW51ZX1jb25zdCBvPWdldFVuaXF1ZURlc3RpbmF0aW9uTmFtZShgJHthfV9wJHt0KzF9YCk7cy5zZXQoYSxvKTtlLnNldChvLGkpfX19fSNPbihlLHQpe2lmKDA9PT10LnNpemUpcmV0dXJuO2NvbnN0IGZpeERlc3RpbmF0aW9uPShlLGEsbik9Pnsic3RyaW5nIj09dHlwZW9mIG4mJmUuc2V0KGEsdC5nZXQoc3RyaW5nVG9QREZTdHJpbmcobiwhMCkpfHxuKX07Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT10aGlzLnhyZWZbdC5udW1dO2lmKCFpc05hbWUoZS5nZXQoIlN1YnR5cGUiKSwiTGluayIpKWNvbnRpbnVlO2NvbnN0IGE9ZS5nZXQoIkEiKTtpZihhIGluc3RhbmNlb2YgRGljdCYmYS5oYXMoIkQiKSl7Y29uc3QgZT1hLmdldCgiRCIpO2ZpeERlc3RpbmF0aW9uKGEsIkQiLGUpO2NvbnRpbnVlfWNvbnN0IG49ZS5nZXQoIkRlc3QiKTtmaXhEZXN0aW5hdGlvbihlLCJEZXN0IixuKX19I3duKGUpe2NvbnN0IGNvbGxlY3Q9KGUsdCxhKT0+e2Zvcihjb25zdCBuIG9mIGUpeyJzdHJpbmciPT10eXBlb2Ygbi5kZXN0JiZ0Py5oYXMobi5kZXN0KSYmYS5hZGQobi5kZXN0KTtuLml0ZW1zLmxlbmd0aD4wJiZjb2xsZWN0KG4uaXRlbXMsdCxhKX19O2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0e291dGxpbmU6ZSxkZXN0aW5hdGlvbnM6YSx1c2VkTmFtZWREZXN0aW5hdGlvbnM6bn09dDtlPy5sZW5ndGgmJmNvbGxlY3QoZSxhLG4pfX0jQm4oZSx0KXtjb25zdHtkZXN0OmEsYWN0aW9uOm4sdXJsOnMsdW5zYWZlVXJsOnIsYXR0YWNobWVudDppLHNldE9DR1N0YXRlOm99PWU7aWYobnx8c3x8cnx8aXx8bylyZXR1cm4hMDtpZighYSlyZXR1cm4hMTtpZigic3RyaW5nIj09dHlwZW9mIGEpe2NvbnN0IGU9dC5kZWR1cE5hbWVkRGVzdGluYXRpb25zLmdldChhKXx8YTtyZXR1cm4gdGhpcy5uYW1lZERlc3RpbmF0aW9ucy5oYXMoZSl9cmV0dXJuIEFycmF5LmlzQXJyYXkoYSkmJmFbMF1pbnN0YW5jZW9mIFJlZiYmISF0Lm9sZFJlZk1hcHBpbmcuZ2V0KGFbMF0pfSNEbihlLHQpe2NvbnN0IGE9W107Zm9yKGNvbnN0IG4gb2YgZSl7Y29uc3QgZT10aGlzLiNEbihuLml0ZW1zLHQpLHM9dGhpcy4jQm4obix0KTsoc3x8ZS5sZW5ndGg+MCkmJmEucHVzaCh7Li4ubixkZXN0OnM/bi5kZXN0Om51bGwscmF3RGljdDpzP24ucmF3RGljdDpudWxsLGl0ZW1zOmUsX2RvY3VtZW50RGF0YTp0fSl9cmV0dXJuIGF9I0ZuKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3R7b3V0bGluZTplfT1hO2U/Lmxlbmd0aCYmdC5wdXNoKC4uLnRoaXMuI0RuKGUsYSkpfXRoaXMub3V0bGluZUl0ZW1zPXQubGVuZ3RoPjA/dDpudWxsfWFzeW5jI0huKGUsdCl7Y29uc3R7ZGVzdDphLHJhd0RpY3Q6bn09dCxzPXQuX2RvY3VtZW50RGF0YTtpZihhKXtpZigic3RyaW5nIj09dHlwZW9mIGEpe2NvbnN0IHQ9cy5kZWR1cE5hbWVkRGVzdGluYXRpb25zLmdldChhKXx8YTtlLnNldCgiRGVzdCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRSh0KSl9ZWxzZSBpZihBcnJheS5pc0FycmF5KGEpKXtjb25zdCB0PWEuc2xpY2UoKTt0WzBdaW5zdGFuY2VvZiBSZWYmJih0WzBdPXMub2xkUmVmTWFwcGluZy5nZXQodFswXSl8fHRbMF0pO2Uuc2V0KCJEZXN0Iix0KX1yZXR1cm59Y29uc3Qgcj1uPy5nZXQoIkEiKTtpZihyIGluc3RhbmNlb2YgRGljdCl7dGhpcy5jdXJyZW50RG9jdW1lbnQ9cztjb25zdCB0PWF3YWl0IHRoaXMuI3NuKHIscy5kb2N1bWVudC54cmVmKTt0aGlzLmN1cnJlbnREb2N1bWVudD1udWxsO2Uuc2V0KCJBIix0KX19YXN5bmMjTW4oKXtjb25zdHtvdXRsaW5lSXRlbXM6ZX09dGhpcztpZighZT8ubGVuZ3RoKXJldHVybjtjb25zdFt0LGFdPXRoaXMubmV3RGljdDthLnNldElmTmFtZSgiVHlwZSIsIk91dGxpbmVzIik7Y29uc3QgYXNzaWduUmVmcz1lPT57Zm9yKGNvbnN0IHQgb2YgZSl7W3QuX3JlZl09dGhpcy5uZXdEaWN0O3QuaXRlbXMubGVuZ3RoPjAmJmFzc2lnblJlZnModC5pdGVtcyl9fTthc3NpZ25SZWZzKGUpO2NvbnN0IGZpbGxJdGVtcz1hc3luYyhlLHQpPT57bGV0IGE9MDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7Y29uc3Qgcz1lW25dLHI9dGhpcy54cmVmW3MuX3JlZi5udW1dO3Iuc2V0KCJUaXRsZSIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShzLnRpdGxlKSk7ci5zZXQoIlBhcmVudCIsdCk7bj4wJiZyLnNldCgiUHJldiIsZVtuLTFdLl9yZWYpO248ZS5sZW5ndGgtMSYmci5zZXQoIk5leHQiLGVbbisxXS5fcmVmKTtpZihzLml0ZW1zLmxlbmd0aD4wKXtyLnNldCgiRmlyc3QiLHMuaXRlbXNbMF0uX3JlZik7ci5zZXQoIkxhc3QiLHMuaXRlbXMuYXQoLTEpLl9yZWYpO2NvbnN0IGU9YXdhaXQgZmlsbEl0ZW1zKHMuaXRlbXMscy5fcmVmKTt2b2lkIDAhPT1zLmNvdW50JiZyLnNldCgiQ291bnQiLHMuY291bnQ8MD8tZTplKTthKz12b2lkIDAhPT1zLmNvdW50JiZzLmNvdW50PDA/MTplKzF9ZWxzZSBhKz0xO2F3YWl0IHRoaXMuI0huKHIscyk7Y29uc3QgaT0ocy5ib2xkPzI6MCl8KHMuaXRhbGljPzE6MCk7MCE9PWkmJnIuc2V0KCJGIixpKTshcy5jb2xvcnx8MD09PXMuY29sb3JbMF0mJjA9PT1zLmNvbG9yWzFdJiYwPT09cy5jb2xvclsyXXx8ci5zZXQoIkMiLFtzLmNvbG9yWzBdLzI1NSxzLmNvbG9yWzFdLzI1NSxzLmNvbG9yWzJdLzI1NV0pfXJldHVybiBhfSxuPWF3YWl0IGZpbGxJdGVtcyhlLHQpO2Euc2V0KCJGaXJzdCIsZVswXS5fcmVmKTthLnNldCgiTGFzdCIsZS5hdCgtMSkuX3JlZik7YS5zZXQoIkNvdW50IixuKTt0aGlzLnJvb3REaWN0LnNldCgiT3V0bGluZXMiLHQpfWFzeW5jI0luKGUpe3RoaXMuI05uKGUpO3RoaXMuI1BuKGUpO3RoaXMuI0VuKGUpO2F3YWl0IHRoaXMuI19uKGUpO2NvbnN0IHQ9dGhpcy5maWVsZHM7Zm9yKGNvbnN0IGEgb2YgZSl7bGV0IGU9YS5hY3JvRm9ybT8uZ2V0KCJGaWVsZHMiKXx8bnVsbDshZSYmYS5maWVsZFRvUGFyZW50LnNpemU+MCYmKGU9dGhpcy4jem4oYS5maWVsZFRvUGFyZW50LGEuZG9jdW1lbnQueHJlZikpO2lmKEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPjApe3RoaXMuY3VycmVudERvY3VtZW50PWE7YXdhaXQgdGhpcy4jTG4odCxlKTt0aGlzLmN1cnJlbnREb2N1bWVudD1udWxsfX10aGlzLiNVbihlKX0jRW4oZSl7bGV0IHQ9MCxhPW51bGw7Zm9yKGNvbnN0IG4gb2YgZSl7Y29uc3QgZT1uLmFjcm9Gb3JtPy5nZXQoIlEiKTtpZigibnVtYmVyIj09dHlwZW9mIGUmJjAhPT1lKWlmKGE/LmFjcm9Gb3JtUT4wKW4uYWNyb0Zvcm1RPWU7ZWxzZSBpZigwIT09dCl7aWYoZSE9PXQpe2EuYWNyb0Zvcm1RfHw9dDtuLmFjcm9Gb3JtUT1lO3Q9MH19ZWxzZXt0PWU7YT1ufX10PjAmJih0aGlzLmFjcm9Gb3JtUT10KX0jTm4oZSl7bGV0IHQ9MCxhPSExO2Zvcihjb25zdCBuIG9mIGUpe2lmKCFuLmFjcm9Gb3JtKWNvbnRpbnVlO2NvbnN0IGU9bi5hY3JvRm9ybS5nZXQoIlNpZ0ZsYWdzIik7Im51bWJlciI9PXR5cGVvZiBlJiZuLmhhc1NpZ25hdHVyZUFubm90YXRpb25zJiYodHw9ZSk7ITA9PT1uLmFjcm9Gb3JtLmdldCgiTmVlZEFwcGVhcmFuY2VzIikmJihhPSEwKX10aGlzLmFjcm9Gb3JtU2lnRmxhZ3M9dDt0aGlzLmFjcm9Gb3JtTmVlZEFwcGVhcmFuY2VzPWF9I1VuKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT1hLmFjcm9Gb3JtPy5nZXQoIkNPIil8fG51bGw7aWYoIUFycmF5LmlzQXJyYXkoZSkpY29udGludWU7Y29uc3R7b2xkUmVmTWFwcGluZzpufT1hO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9YSBpbnN0YW5jZW9mIFJlZiYmbi5nZXQoYSk7ZSYmdC5wdXNoKGUpfX10aGlzLmFjcm9Gb3JtQ2FsY3VsYXRpb25PcmRlcj10Lmxlbmd0aD4wP3Q6bnVsbH0jUG4oZSl7bGV0IHQ9bnVsbCxhPW51bGw7Zm9yKGNvbnN0IG4gb2YgZSl7Y29uc3QgZT1uLmFjcm9Gb3JtPy5nZXQoIkRBIil8fG51bGw7aWYoZSYmInN0cmluZyI9PXR5cGVvZiBlKWlmKGE/LmFjcm9Gb3JtRGVmYXVsdEFwcGVhcmFuY2Upbi5hY3JvRm9ybURlZmF1bHRBcHBlYXJhbmNlPWU7ZWxzZSBpZih0KXtpZihlIT09dCl7YS5hY3JvRm9ybURlZmF1bHRBcHBlYXJhbmNlfHw9dDtuLmFjcm9Gb3JtRGVmYXVsdEFwcGVhcmFuY2U9ZTt0PW51bGx9fWVsc2V7dD1lO2E9bn19dCYmKHRoaXMuYWNyb0Zvcm1EZWZhdWx0QXBwZWFyYW5jZT10KX1hc3luYyNfbihlKXtsZXQgdD1udWxsLGE9bnVsbCxuPW51bGw7Zm9yKGNvbnN0IHMgb2YgZSl7Y29uc3QgZT1zLmFjcm9Gb3JtPy5nZXQoIkRSIil8fG51bGw7aWYoZSYmZSBpbnN0YW5jZW9mIERpY3QpaWYobj8uYWNyb0Zvcm1EZWZhdWx0UmVzb3VyY2VzKXMuYWNyb0Zvcm1EZWZhdWx0UmVzb3VyY2VzPWU7ZWxzZSBpZih0KXtpZighZGVlcENvbXBhcmUodCxlKSl7bi5hY3JvRm9ybURlZmF1bHRSZXNvdXJjZXN8fD10O3MuYWNyb0Zvcm1EZWZhdWx0UmVzb3VyY2VzPWU7dD1udWxsO2E9bnVsbH19ZWxzZXt0PWU7YT1zLmFjcm9Gb3JtLmdldFJhdygiRFIiKTtuPXN9fWlmKHQpe3RoaXMuY3VycmVudERvY3VtZW50PW47dGhpcy5hY3JvRm9ybURlZmF1bHRSZXNvdXJjZXM9YXdhaXQgdGhpcy4jcm4oYSwhMCxuLmRvY3VtZW50LnhyZWYpO3RoaXMuY3VycmVudERvY3VtZW50PW51bGx9fSN6bihlLHQpe2NvbnN0IGE9W10sbj1uZXcgUmVmU2V0O2Zvcihjb25zdFtzLHJdb2YgZS5pdGVtcygpKXtpZighcil7YS5wdXNoKHMpO2NvbnRpbnVlfWxldCBlPXIsaT1yO2NvbnN0IG89bmV3IFJlZlNldDtmb3IoOzspe2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKG8uaGFzKGUpKWJyZWFrO28ucHV0KGUpfWNvbnN0IGE9dC5mZXRjaElmUmVmKGUpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKWJyZWFrO2U9YS5nZXRSYXcoIlBhcmVudCIpfHxudWxsO2lmKCFlKWJyZWFrO2k9ZX1pZihpIGluc3RhbmNlb2YgUmVmJiYhbi5oYXMoaSkpe2EucHVzaChpKTtuLnB1dChpKX19cmV0dXJuIGF9YXN5bmMjTG4oZSx0KXtjb25zdCBhPW5ldyBSZWZTZXQsbj1be2tpZHM6dCxuZXdLaWRzOmUscG9zOjAsb2xkUGFyZW50UmVmOm51bGwscGFyZW50UmVmOm51bGwscGFyZW50Om51bGx9XSx7ZG9jdW1lbnQ6e3hyZWY6c30sb2xkUmVmTWFwcGluZzpyLGZpZWxkVG9QYXJlbnQ6aSxhY3JvRm9ybURlZmF1bHRBcHBlYXJhbmNlOm8sYWNyb0Zvcm1EZWZhdWx0UmVzb3VyY2VzOmwsYWNyb0Zvcm1ROmZ9PXRoaXMuY3VycmVudERvY3VtZW50LGM9W10saD1bXTtmb3IoO24ubGVuZ3RoPjA7KXtjb25zdCBlPW4uYXQoLTEpLHtraWRzOnQsbmV3S2lkczp1LHBhcmVudDptLHBvczpwfT1lO2lmKHA9PT10Lmxlbmd0aCl7bi5wb3AoKTtpZigwPT09dS5sZW5ndGh8fCFtKWNvbnRpbnVlO2NvbnN0IHQ9dGhpcy54cmVmW2UucGFyZW50UmVmLm51bV09dGhpcy5jbG9uZURpY3QobSk7dC5kZWxldGUoIlBhcmVudCIpO3QuZGVsZXRlKCJLaWRzIik7YXdhaXQgdGhpcy4jcm4odCwhMSxzKTt0LnNldCgiS2lkcyIsdSk7aWYobi5sZW5ndGg+MCl7Y29uc3QgYT1uLmF0KC0xKTtpZighYS5wYXJlbnRSZWYmJmEub2xkUGFyZW50UmVmKXtjb25zdCBlPWEucGFyZW50UmVmPXRoaXMubmV3UmVmO3Quc2V0KCJQYXJlbnQiLGUpO3IucHV0KGEub2xkUGFyZW50UmVmLGUpfWEubmV3S2lkcy5wdXNoKGUucGFyZW50UmVmKX1jb250aW51ZX1jb25zdCBkPXRbZS5wb3MrK107aWYoIShkIGluc3RhbmNlb2YgUmVmKXx8YS5oYXMoZCkpY29udGludWU7YS5wdXQoZCk7Y29uc3QgZz1zLmZldGNoSWZSZWYoZCk7aWYoIShnIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7aWYoZy5oYXMoIktpZHMiKSl7Y29uc3QgZT1nLmdldCgiS2lkcyIpO2lmKCFBcnJheS5pc0FycmF5KGUpKWNvbnRpbnVlO24ucHVzaCh7a2lkczplLG5ld0tpZHM6W10scG9zOjAsb2xkUGFyZW50UmVmOmQscGFyZW50UmVmOm51bGwscGFyZW50Omd9KTtjb250aW51ZX1pZighaS5oYXMoZCkpY29udGludWU7Y29uc3QgYj1yLmdldChkKTtpZighYiljb250aW51ZTt1LnB1c2goYik7aWYoIWUucGFyZW50UmVmJiZlLm9sZFBhcmVudFJlZil7ZS5wYXJlbnRSZWY9dGhpcy5uZXdSZWY7ci5wdXQoZS5vbGRQYXJlbnRSZWYsZS5wYXJlbnRSZWYpfWNvbnN0IHc9dGhpcy54cmVmW2IubnVtXTtlLnBhcmVudFJlZiYmdy5zZXQoIlBhcmVudCIsZS5wYXJlbnRSZWYpO28mJiF3LmhhcygiREEiKSYmYy5wdXNoKHcpO2wmJiF3LmhhcygiS2lkcyIpJiZ3LmdldCgiQVAiKWluc3RhbmNlb2YgRGljdCYmaC5wdXNoKHcpO2YmJiF3LmhhcygiUSIpJiZ3LnNldCgiUSIsZil9Zm9yKGNvbnN0IGUgb2YgYyl7aWYoIWlzTmFtZShnZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OmUsa2V5OiJGVCJ9KSwiVHgiKSljb250aW51ZTtnZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OmUsa2V5OiJEQSJ9KXx8ZS5zZXQoIkRBIixvKX1jb25zdCB1PW5ldyBNYXAsZml4QXBwZWFyYW5jZVJlc291cmNlcz1hc3luYyBlPT57bGV0IHQ9ZS5kaWN0LmdldFJhdygiUmVzb3VyY2VzIik7dCYmPXRoaXMueHJlZldyYXBwZXIuZmV0Y2hJZlJlZih0KTtpZighKHQgaW5zdGFuY2VvZiBEaWN0KSl7Y29uc3QgdD1hd2FpdCB1LmdldE9ySW5zZXJ0Q29tcHV0ZWQobCwoKT0+dGhpcy4jc24obCxzKSk7ZS5kaWN0LnNldCgiUmVzb3VyY2VzIix0KTtyZXR1cm59Zm9yKGNvbnN0W2UsYV1vZiBsLmdldFJhd0VudHJpZXMoKSl7aWYodC5oYXMoZSkpY29udGludWU7bGV0IG49YTthIGluc3RhbmNlb2YgUmVmP249YXdhaXQgdGhpcy4jcm4oYSwhMCxzKTooYSBpbnN0YW5jZW9mIERpY3R8fGEgaW5zdGFuY2VvZiBCYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KGEpKSYmKG49YXdhaXQgdS5nZXRPckluc2VydENvbXB1dGVkKGEsKCk9PnRoaXMuI3NuKGEscykpKTt0LnNldChlLG4pfX07Zm9yKGNvbnN0IGUgb2YgaCl7Y29uc3QgdD1lLmdldCgiQVAiKTtmb3IoY29uc3RbLGVdb2YgdClpZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSlhd2FpdCBmaXhBcHBlYXJhbmNlUmVzb3VyY2VzKGUpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0Wyx0XW9mIGUpdCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJmF3YWl0IGZpeEFwcGVhcmFuY2VSZXNvdXJjZXModCl9fWFzeW5jI2puKCl7aWYoIXRoaXMuaXNTaW5nbGVGaWxlKXJldHVybjtjb25zdCBlPXRoaXMub2xkUGFnZXMuZmluZChlPT4hIWUpO2lmKCFlKXJldHVybjtjb25zdHtkb2N1bWVudERhdGE6e2RvY3VtZW50OnQscGFnZUxhYmVsczphfX09ZTtpZighYSlyZXR1cm47Y29uc3Qgbj10Lm51bVBhZ2VzLHM9bmV3IE1hcCxyPW5ldyBTZXQodGhpcy5vbGRQYWdlcy5maWx0ZXIoQm9vbGVhbikubWFwKCh7cGFnZTp7cGFnZUluZGV4OmV9fSk9PmUpKTtsZXQgaT1udWxsLG89LTE7Zm9yKGxldCBlPTA7ZTxuO2UrKyl7Y29uc3QgdD1hLmdldChlKTtpZih0KXtpPXQ7bz1pLmhhcygiU3QiKT9lOi0xfWlmKHIuaGFzKGUpKXtpZigtMSE9PW8pe2NvbnN0IHQ9aS5nZXQoIlN0Iik7aT10aGlzLmNsb25lRGljdChpKTtpLnNldCgiU3QiLHQrKGUtbykpO289LTF9cy5zZXQoZSxpKX19Y29uc3QgZGVmYXVsdExhYmVsPWU9Pntjb25zdCB0PW5ldyBEaWN0O3Quc2V0SWZOYW1lKCJTIiwiRCIpO3Quc2V0KCJTdCIsZSsxKTtyZXR1cm4gdH07aT1udWxsO2NvbnN0IGw9dGhpcy5wYWdlTGFiZWxzPVtdO2ZvcihsZXQgZT0wLHQ9dGhpcy5vbGRQYWdlcy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD10aGlzLm9sZFBhZ2VzW2VdLGE9dCYmcy5nZXQodC5wYWdlLnBhZ2VJbmRleCl8fGRlZmF1bHRMYWJlbChlKTtpZihhIT09aSl7aT1hO2wucHVzaChbZSxpXSl9fX1hc3luYyNBbihlKXtjb25zdHtwYWdlOnQsZG9jdW1lbnREYXRhOmEsYW5ub3RhdGlvbnM6bixwb2ludGluZ05hbWVkRGVzdGluYXRpb25zOnMsY29weUxldmVsOnJ9PXRoaXMub2xkUGFnZXNbZV07dGhpcy5jdXJyZW50RG9jdW1lbnQ9YTtjb25zdHtkZWR1cE5hbWVkRGVzdGluYXRpb25zOmksb2xkUmVmTWFwcGluZzpvfT1hLHt4cmVmOmwscm90YXRlOmYsbWVkaWFCb3g6YyxyZXNvdXJjZXM6aCxyZWY6dX09dCxtPXRoaXMubmV3UmVmLHA9dGhpcy54cmVmW20ubnVtXT10aGlzLmNsb25lRGljdCh0LnBhZ2VEaWN0KTtvLnB1dCh1LG0pO2lmKHMpZm9yKGNvbnN0IGUgb2Ygcyl7Y29uc3QgdD1pLmdldChlKXx8ZTt0aGlzLm5hbWVkRGVzdGluYXRpb25zLmdldCh0KVswXT1tfWZvcihjb25zdCBlIG9mWyJSb3RhdGUiLCJNZWRpYUJveCIsIkNyb3BCb3giLCJCbGVlZEJveCIsIlRyaW1Cb3giLCJBcnRCb3giLCJSZXNvdXJjZXMiLCJBbm5vdHMiLCJQYXJlbnQiLCJVc2VyVW5pdCJdKXAuZGVsZXRlKGUpO2NvbnN0IGQ9dGhpcy5uZXdSZWZDb3VudDthd2FpdCB0aGlzLiNybihwLCExLGwpO3Auc2V0KCJSb3RhdGUiLGYpO3Auc2V0KCJNZWRpYUJveCIsYyk7Zm9yKGNvbnN0IGUgb2ZbIkNyb3BCb3giLCJCbGVlZEJveCIsIlRyaW1Cb3giLCJBcnRCb3giXSl7Y29uc3QgYT10LmdldEJvdW5kaW5nQm94KGUpO2E/LnNvbWUoKGUsdCk9PmUhPT1jW3RdKSYmcC5zZXQoZSxhKX1jb25zdCBnPXQudXNlclVuaXQ7MSE9PWcmJnAuc2V0KCJVc2VyVW5pdCIsZyk7cC5zZXRJZkRpY3QoIlJlc291cmNlcyIsYXdhaXQgdGhpcy4jcm4oaCwhMCxsKSk7bGV0IGI9bnVsbDtpZihuKXtjb25zdCBlPWF3YWl0IHRoaXMuI3JuKG4sITAsbCk7dGhpcy4jT24oZSxpKTtBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wJiYoYj1lKX1jb25zdCB3PWEuZG9jdW1lbnQ9PT10aGlzLiNhbj90aGlzLiN0bj8ubmV3QW5ub3RhdGlvbnNCeVBhZ2U/LmdldCh0LnBhZ2VJbmRleCk/LmZpbHRlcigoe2NvcHlMZXZlbDplfSk9PihlPz8wKT09PXIpOm51bGw7aWYodz8ubGVuZ3RoKXtjb25zdHtoYW5kbGVyOmUsdGFzazphLGltYWdlc1Byb21pc2VzOm59PXRoaXMuI3RuLHM9bmV3IFJlZk1hcCxyPWF3YWl0IEFubm90YXRpb25GYWN0b3J5LnNhdmVOZXdBbm5vdGF0aW9ucyh0Ll9jcmVhdGVQYXJ0aWFsRXZhbHVhdG9yKGUpLHRoaXMueHJlZldyYXBwZXIsYSx3LG4scyk7Zm9yKGNvbnN0W2Use2RhdGE6dH1db2Ygcy5pdGVtcygpKXRoaXMueHJlZltlLm51bV09dDtifHw9W107Zm9yKGNvbnN0e3JlZjplfW9mIHIuYW5ub3RhdGlvbnMpYi5wdXNoKGUpfXAuc2V0SWZBcnJheSgiQW5ub3RzIixiKTtpZih0aGlzLnVzZU9iamVjdFN0cmVhbXMpe2NvbnN0IGU9dGhpcy5uZXdSZWZDb3VudCx0PVtdO2ZvcihsZXQgYT1kO2E8ZTthKyspe3RoaXMueHJlZlthXWluc3RhbmNlb2YgQmFzZVN0cmVhbXx8dC5wdXNoKFJlZi5nZXQoYSwwKSl9Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKz02NTUzNSl7Y29uc3QgYT10aGlzLm5ld1JlZjt0aGlzLm9ialN0cmVhbVJlZnMuYWRkKGEubnVtKTt0aGlzLnhyZWZbYS5udW1dPXQuc2xpY2UoZSxlKzY1NTM1KX19dGhpcy5jdXJyZW50RG9jdW1lbnQ9bnVsbDtyZXR1cm4gbX0jdm4oKXtjb25zdCBlPW5ldyBNYXA7Zm9yKGNvbnN0IHQgb2YgdGhpcy5vbGRQYWdlcyl7aWYoIXQpY29udGludWU7Y29uc3R7cGFnZTphfT10LFtuLHMscixpXT1hLnZpZXc7bGV0IG89ci1uLGw9aS1zO2lmKG88PTB8fGw8PTApY29udGludWU7YS5yb3RhdGUlMTgwIT0wJiYoW28sbF09W2wsb10pO2NvbnN0IGY9YCR7b314JHtsfWAsYz1lLmdldChmKTtjP2MuY291bnQrKzplLnNldChmLHt3aWR0aDpvLGhlaWdodDpsLGNvdW50OjF9KX1pZigwPT09ZS5zaXplKXtjb25zdFssLGUsdF09UmY7cmV0dXJue3dpZHRoOmUsaGVpZ2h0OnR9fWxldCB0PW51bGw7Zm9yKGNvbnN0IGEgb2YgZS52YWx1ZXMoKSkoIXR8fGEuY291bnQ+dC5jb3VudHx8YS5jb3VudD09PXQuY291bnQmJmEud2lkdGgqYS5oZWlnaHQ+dC53aWR0aCp0LmhlaWdodCkmJih0PWEpO3JldHVybnt3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19YXN5bmMjU24oZSx0KXtjb25zdHt3aWR0aDphLGhlaWdodDpufT10LHM9LjEqYSxyPU1hdGgubWF4KDEsYS0yKnMpLGk9TWF0aC5tYXgoMSxuLTIqcyksbz10aGlzLm5ld1JlZkNvdW50LHtpbWFnZVN0cmVhbTpsLHNtYXNrU3RyZWFtOmYsd2lkdGg6YyxoZWlnaHQ6aH09YXdhaXQgY3JlYXRlSW1hZ2UoZSx0aGlzLnhyZWZXcmFwcGVyLHtjbG9zZUJpdG1hcDohMH0pLHU9TWF0aC5taW4oci9jLGkvaCksbT1jKnUscD1oKnUsZD0oYS1tKS8yLGc9KG4tcCkvMjtpZihmKXtjb25zdCBlPXRoaXMubmV3UmVmO3RoaXMueHJlZltlLm51bV09ZjtsLmRpY3Quc2V0KCJTTWFzayIsZSl9Y29uc3QgYj10aGlzLm5ld1JlZjt0aGlzLnhyZWZbYi5udW1dPWw7Y29uc3Qgdz1uZXcgRGljdCh0aGlzLnhyZWZXcmFwcGVyKTt3LnNldCgiSW0wIixiKTtjb25zdCBqPW5ldyBEaWN0KHRoaXMueHJlZldyYXBwZXIpO2ouc2V0KCJYT2JqZWN0Iix3KTtqLnNldCgiUHJvY1NldCIsW05hbWUuZ2V0KCJQREYiKSxOYW1lLmdldCgiSW1hZ2VDIildKTtjb25zdCBrPWBxICR7bnVtYmVyVG9TdHJpbmcobSl9IDAgMCAke251bWJlclRvU3RyaW5nKHApfSAke251bWJlclRvU3RyaW5nKGQpfSAke251bWJlclRvU3RyaW5nKGcpfSBjbSAvSW0wIERvIFFgLHk9bmV3IFN0cmluZ1N0cmVhbShrLG5ldyBEaWN0KHRoaXMueHJlZldyYXBwZXIpKSxxPXRoaXMubmV3UmVmO3RoaXMueHJlZltxLm51bV09eTtjb25zdCB2PXRoaXMubmV3UmVmLFM9dGhpcy54cmVmW3YubnVtXT1uZXcgRGljdCh0aGlzLnhyZWZXcmFwcGVyKTtTLnNldElmTmFtZSgiVHlwZSIsIlBhZ2UiKTtTLnNldCgiTWVkaWFCb3giLFswLDAsYSxuXSk7Uy5zZXQoIlJlc291cmNlcyIsaik7Uy5zZXQoIkNvbnRlbnRzIixxKTtpZih0aGlzLnVzZU9iamVjdFN0cmVhbXMpe2NvbnN0IGU9dGhpcy5uZXdSZWZDb3VudCx0PVtdO2ZvcihsZXQgYT1vO2E8ZTthKyspe3RoaXMueHJlZlthXWluc3RhbmNlb2YgQmFzZVN0cmVhbXx8dC5wdXNoKFJlZi5nZXQoYSwwKSl9Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKz02NTUzNSl7Y29uc3QgYT10aGlzLm5ld1JlZjt0aGlzLm9ialN0cmVhbVJlZnMuYWRkKGEubnVtKTt0aGlzLnhyZWZbYS5udW1dPXQuc2xpY2UoZSxlKzY1NTM1KX19cmV0dXJuIHZ9I1duKCl7Y29uc3R7bmV3UGFnZXM6ZSxyb290RGljdDp0LHBhZ2VzUmVmOmEscGFnZXNEaWN0Om59PXRoaXM7dC5zZXQoIlBhZ2VzIixhKTtuLnNldElmTmFtZSgiVHlwZSIsIlBhZ2VzIik7bi5zZXQoIkNvdW50IixlLmxlbmd0aCk7Y29uc3Qgcz1be2RpY3Q6bixraWRzOmUscGFyZW50UmVmOmF9XTtmb3IoO3MubGVuZ3RoPjA7KXtjb25zdHtkaWN0OmUsa2lkczp0LHBhcmVudFJlZjphfT1zLnBvcCgpO2lmKHQubGVuZ3RoPD0xNil7ZS5zZXQoIktpZHMiLHQpO2Zvcihjb25zdCBlIG9mIHQpdGhpcy54cmVmW2UubnVtXS5zZXQoIlBhcmVudCIsYSk7Y29udGludWV9Y29uc3Qgbj1NYXRoLm1heCgxNixNYXRoLmNlaWwodC5sZW5ndGgvMTYpKSxyPVtdO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9bilyLnB1c2godC5zbGljZShlLGUrbikpO2NvbnN0IGk9W107ZS5zZXQoIktpZHMiLGkpO2Zvcihjb25zdCBlIG9mIHIpe2NvbnN0W3Qsbl09dGhpcy5uZXdEaWN0O2kucHVzaCh0KTtuLnNldElmTmFtZSgiVHlwZSIsIlBhZ2VzIik7bi5zZXQoIlBhcmVudCIsYSk7bi5zZXQoIkNvdW50IixlLmxlbmd0aCk7cy5wdXNoKHtkaWN0Om4sa2lkczplLHBhcmVudFJlZjp0fSl9fX0jWG4oZSx0KXtjb25zdCBhPWUuc29ydCh0PyhbZV0sW3RdKT0+ZTx0Py0xOmU+dD8xOjA6KFtlXSxbdF0pPT5lLXQpLFtuLHNdPXRoaXMubmV3RGljdCxyPVt7ZGljdDpzLGVudHJpZXM6YSxpc1Jvb3Q6ITB9XSxpPXQ/Ik5hbWVzIjoiTnVtcyI7Zm9yKDtyLmxlbmd0aD4wOyl7Y29uc3R7ZGljdDplLGVudHJpZXM6dCxpc1Jvb3Q6YX09ci5wb3AoKTtpZih0Lmxlbmd0aDw9NjQpe2F8fGUuc2V0KCJMaW1pdHMiLFt0WzBdWzBdLHQuYXQoLTEpWzBdXSk7ZS5zZXQoaSx0LmZsYXQoKSk7Y29udGludWV9Y29uc3Qgbj1bXSxzPU1hdGgubWF4KDY0LE1hdGguY2VpbCh0Lmxlbmd0aC82NCkpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9cyluLnB1c2godC5zbGljZShlLGUrcykpO2NvbnN0IG89W107ZS5zZXQoIktpZHMiLG8pO2Zvcihjb25zdCBlIG9mIG4pe2NvbnN0W3QsYV09dGhpcy5uZXdEaWN0O28ucHVzaCh0KTthLnNldCgiTGltaXRzIixbZVswXVswXSxlLmF0KC0xKVswXV0pO3IucHVzaCh7ZGljdDphLGVudHJpZXM6ZX0pfX1yZXR1cm4gbn0jS24oKXtjb25zdHtwYWdlTGFiZWxzOmV9PXRoaXM7aWYoIWU/Lmxlbmd0aClyZXR1cm47Y29uc3R7cm9vdERpY3Q6dH09dGhpcyxhPXRoaXMuI1huKHRoaXMucGFnZUxhYmVscywhMSk7dC5zZXQoIlBhZ2VMYWJlbHMiLGEpfWFzeW5jI1RuKGUpe2NvbnN0e2VtYmVkZGVkRmlsZXM6dH09dGhpcztmb3IoY29uc3QgYSBvZiBlKXtjb25zdHtlbWJlZGRlZEZpbGVzOmUsZG9jdW1lbnQ6e3hyZWY6bn19PWE7aWYoZT8uc2l6ZSl7dGhpcy5jdXJyZW50RG9jdW1lbnQ9YTtmb3IoY29uc3RbYSxzXW9mIGUpe2xldCBlPWE7aWYodC5oYXMoZSkpe2NvbnN0IG49c3RyaW5nVG9QREZTdHJpbmcoYSwhMCk7Zm9yKGxldCBhPTE7O2ErKyl7Y29uc3Qgcz1zdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGAke259XyR7YX1gKTtpZighdC5oYXMocykpe2U9czticmVha319fXQuc2V0KGUsYXdhaXQgdGhpcy4jcm4ocywhMCxuKSl9dGhpcy5jdXJyZW50RG9jdW1lbnQ9bnVsbH19fSNHbigpe2NvbnN0e2VtYmVkZGVkRmlsZXM6ZX09dGhpcztpZigwIT09ZS5zaXplKXtpZighdGhpcy5uYW1lc0RpY3Qpe1t0aGlzLm5hbWVzUmVmLHRoaXMubmFtZXNEaWN0XT10aGlzLm5ld0RpY3Q7dGhpcy5yb290RGljdC5zZXQoIk5hbWVzIix0aGlzLm5hbWVzUmVmKX10aGlzLm5hbWVzRGljdC5zZXQoIkVtYmVkZGVkRmlsZXMiLHRoaXMuI1huKEFycmF5LmZyb20oZS5lbnRyaWVzKCkpLCEwKSl9fSNWbigpe2NvbnN0e25hbWVkRGVzdGluYXRpb25zOmV9PXRoaXM7aWYoMCE9PWUuc2l6ZSl7aWYoIXRoaXMubmFtZXNEaWN0KXtbdGhpcy5uYW1lc1JlZix0aGlzLm5hbWVzRGljdF09dGhpcy5uZXdEaWN0O3RoaXMucm9vdERpY3Quc2V0KCJOYW1lcyIsdGhpcy5uYW1lc1JlZil9dGhpcy5uYW1lc0RpY3Quc2V0KCJEZXN0cyIsdGhpcy4jWG4oQXJyYXkuZnJvbShlLChbZSx0XSk9PltzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGUpLHRdKSwhMCkpfX0jJG4oKXtjb25zdHtzdHJ1Y3RUcmVlS2lkczplfT10aGlzO2lmKCFlPy5sZW5ndGgpcmV0dXJuO2NvbnN0e3Jvb3REaWN0OnR9PXRoaXMsYT10aGlzLm5ld1JlZixuPXRoaXMueHJlZlthLm51bV09bmV3IERpY3Q7bi5zZXRJZk5hbWUoIlR5cGUiLCJTdHJ1Y3RUcmVlUm9vdCIpO24uc2V0SWZBcnJheSgiSyIsZSk7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT10aGlzLnhyZWZbdC5udW1dLG49ZS5nZXQoIlR5cGUiKTtuJiYhaXNOYW1lKG4sIlN0cnVjdEVsZW0iKXx8ZS5zZXQoIlAiLGEpfWlmKHRoaXMucGFyZW50VHJlZS5zaXplPjApe2NvbnN0IGU9dGhpcy4jWG4oQXJyYXkuZnJvbSh0aGlzLnBhcmVudFRyZWUuZW50cmllcygpKSwhMSk7dGhpcy54cmVmW2UubnVtXS5zZXRJZk5hbWUoIlR5cGUiLCJQYXJlbnRUcmVlIik7bi5zZXQoIlBhcmVudFRyZWUiLGUpO2xldCB0PTA7Zm9yKGNvbnN0IGUgb2YgdGhpcy5wYXJlbnRUcmVlLmtleXMoKSl0PU1hdGgubWF4KHQsZSsxKTtuLnNldCgiUGFyZW50VHJlZU5leHRLZXkiLHQpfWlmKHRoaXMuaWRUcmVlLnNpemU+MCl7Y29uc3QgZT10aGlzLiNYbihBcnJheS5mcm9tKHRoaXMuaWRUcmVlLmVudHJpZXMoKSksITApO3RoaXMueHJlZltlLm51bV0uc2V0SWZOYW1lKCJUeXBlIiwiSURUcmVlIik7bi5zZXQoIklEVHJlZSIsZSl9aWYodGhpcy5jbGFzc01hcC5zaXplPjApe2NvbnN0IGU9dGhpcy5uZXdSZWY7dGhpcy54cmVmW2UubnVtXT10aGlzLmNsYXNzTWFwO24uc2V0KCJDbGFzc01hcCIsZSl9aWYodGhpcy5yb2xlTWFwLnNpemU+MCl7Y29uc3QgZT10aGlzLm5ld1JlZjt0aGlzLnhyZWZbZS5udW1dPXRoaXMucm9sZU1hcDtuLnNldCgiUm9sZU1hcCIsZSl9aWYodGhpcy5uYW1lc3BhY2VzLnNpemU+MCl7Y29uc3QgZT10aGlzLm5ld1JlZjt0aGlzLnhyZWZbZS5udW1dPUFycmF5LmZyb20odGhpcy5uYW1lc3BhY2VzLnZhbHVlcygpKTtuLnNldCgiTmFtZXNwYWNlcyIsZSl9aWYodGhpcy5zdHJ1Y3RUcmVlQUYubGVuZ3RoPjApe2NvbnN0IGU9dGhpcy5uZXdSZWY7dGhpcy54cmVmW2UubnVtXT10aGlzLnN0cnVjdFRyZWVBRjtuLnNldCgiQUYiLGUpfWlmKHRoaXMuc3RydWN0VHJlZVByb251bmNpYXRpb25MZXhpY29uLmxlbmd0aD4wKXtjb25zdCBlPXRoaXMubmV3UmVmO3RoaXMueHJlZltlLm51bV09dGhpcy5zdHJ1Y3RUcmVlUHJvbnVuY2lhdGlvbkxleGljb247bi5zZXQoIlByb251bmNpYXRpb25MZXhpY29uIixlKX10LnNldCgiU3RydWN0VHJlZVJvb3QiLGEpfSNZbigpe2lmKDA9PT10aGlzLmZpZWxkcy5sZW5ndGgpcmV0dXJuO2NvbnN0e3Jvb3REaWN0OmV9PXRoaXMsdD10aGlzLm5ld1JlZixhPXRoaXMueHJlZlt0Lm51bV09bmV3IERpY3Q7ZS5zZXQoIkFjcm9Gb3JtIix0KTthLnNldCgiRmllbGRzIix0aGlzLmZpZWxkcyk7dGhpcy5hY3JvRm9ybU5lZWRBcHBlYXJhbmNlcyYmYS5zZXQoIk5lZWRBcHBlYXJhbmNlcyIsITApO3RoaXMuYWNyb0Zvcm1TaWdGbGFncz4wJiZhLnNldCgiU2lnRmxhZ3MiLHRoaXMuYWNyb0Zvcm1TaWdGbGFncyk7YS5zZXRJZkFycmF5KCJDTyIsdGhpcy5hY3JvRm9ybUNhbGN1bGF0aW9uT3JkZXIpO2Euc2V0SWZEZWZpbmVkKCJEUiIsdGhpcy5hY3JvRm9ybURlZmF1bHRSZXNvdXJjZXMpO3RoaXMuYWNyb0Zvcm1EZWZhdWx0QXBwZWFyYW5jZSYmYS5zZXQoIkRBIix0aGlzLmFjcm9Gb3JtRGVmYXVsdEFwcGVhcmFuY2UpO3RoaXMuYWNyb0Zvcm1RPjAmJmEuc2V0KCJRIix0aGlzLmFjcm9Gb3JtUSl9YXN5bmMjSm4oKXtjb25zdHtyb290RGljdDplfT10aGlzO2Uuc2V0SWZOYW1lKCJUeXBlIiwiQ2F0YWxvZyIpO2Uuc2V0SWZOYW1lKCJWZXJzaW9uIix0aGlzLnZlcnNpb24pO3RoaXMuI1luKCk7dGhpcy4jV24oKTt0aGlzLiNLbigpO3RoaXMuI0duKCk7dGhpcy4jVm4oKTt0aGlzLiMkbigpO2F3YWl0IHRoaXMuI01uKCl9I1FuKCl7Y29uc3QgZT1uZXcgTWFwO2lmKHRoaXMuaXNTaW5nbGVGaWxlKXtjb25zdCB0PXRoaXMub2xkUGFnZXMuZmluZChlPT4hIWUpLHt4cmVmOnt0cmFpbGVyOmF9fT10LmRvY3VtZW50RGF0YS5kb2N1bWVudCxuPWEuZ2V0KCJJbmZvIik7Zm9yKGNvbnN0W3QsYV1vZiBufHxbXSkic3RyaW5nIj09dHlwZW9mIGEmJmUuc2V0KHQsc3RyaW5nVG9QREZTdHJpbmcoYSkpfWUuZGVsZXRlKCJNb2REYXRlIik7ZS5zZXQoIkNyZWF0aW9uRGF0ZSIsZ2V0TW9kaWZpY2F0aW9uRGF0ZSgpKTtlLnNldCgiQ3JlYXRvciIsIlBERi5qcyIpO2Uuc2V0KCJQcm9kdWNlciIsIkZpcmVmb3giKTt0aGlzLmF1dGhvciYmZS5zZXQoIkF1dGhvciIsdGhpcy5hdXRob3IpO3RoaXMudGl0bGUmJmUuc2V0KCJUaXRsZSIsdGhpcy50aXRsZSk7Zm9yKGNvbnN0W3QsYV1vZiBlKXRoaXMuaW5mb0RpY3Quc2V0KHQsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShhKSk7cmV0dXJuIGV9YXN5bmMjWm4oKXtpZighdGhpcy5pc1NpbmdsZUZpbGUpcmV0dXJuW251bGwsbnVsbCxudWxsXTtjb25zdCBlPXRoaXMub2xkUGFnZXMuZmluZChlPT4hIWUpLHtkb2N1bWVudERhdGE6dH09ZSx7ZG9jdW1lbnQ6e3hyZWY6e3RyYWlsZXI6YSxlbmNyeXB0Om59fX09dDtpZighYS5oYXMoIkVuY3J5cHQiKSlyZXR1cm5bbnVsbCxudWxsLG51bGxdO2NvbnN0IHM9YS5nZXQoIkVuY3J5cHQiKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm5bbnVsbCxudWxsLG51bGxdO3RoaXMuY3VycmVudERvY3VtZW50PXQ7Y29uc3Qgcj1bYXdhaXQgdGhpcy4jc24ocyxhLnhyZWYpLG4sYS5nZXQoIklEIildO3RoaXMuY3VycmVudERvY3VtZW50PW51bGw7cmV0dXJuIHJ9YXN5bmMjZXMoKXtjb25zdCBlPW5ldyBSZWZNYXA7ZS5wdXQoUmVmLmdldCgwLDY1NTM1KSx7ZGF0YTpudWxsfSk7Zm9yKGxldCB0PTEsYT10aGlzLnhyZWYubGVuZ3RoO3Q8YTt0KyspdGhpcy5vYmpTdHJlYW1SZWZzPy5oYXModCk/YXdhaXQgdGhpcy4jdHMoUmVmLmdldCh0LDApLHRoaXMueHJlZlt0XSxlKTplLnB1dChSZWYuZ2V0KHQsMCkse2RhdGE6dGhpcy54cmVmW3RdfSk7cmV0dXJuW2UsdGhpcy5uZXdSZWZdfWFzeW5jI3RzKGUsdCxhKXtjb25zdCBuPVsiIl0scz1bXTtsZXQgcj0wO2NvbnN0IGk9W107Zm9yKGxldCBvPTAsbD10Lmxlbmd0aDtvPGw7bysrKXtjb25zdCBsPXRbb107YS5wdXQobCx7ZGF0YTpudWxsLG9ialN0cmVhbVJlZjplLGluZGV4Om99KTtzLnB1c2goYCR7bC5udW19ICR7cn1gKTtjb25zdCBmPXRoaXMueHJlZltsLm51bV07YXdhaXQgd3JpdGVWYWx1ZShmLGksbnVsbCk7Y29uc3QgYz1pLmpvaW4oIiIpO2kubGVuZ3RoPTA7bi5wdXNoKGMpO3IrPWMubGVuZ3RoKzF9blswXT1zLmpvaW4oIlxuIik7Y29uc3Qgbz1uZXcgRGljdDtvLnNldElmTmFtZSgiVHlwZSIsIk9ialN0bSIpO28uc2V0KCJOIix0Lmxlbmd0aCk7by5zZXQoIkZpcnN0IixuWzBdLmxlbmd0aCsxKTtjb25zdCBsPW5ldyBTdHJpbmdTdHJlYW0obi5qb2luKCJcbiIpLG8pO2EucHV0KGUse2RhdGE6bH0pfWFzeW5jIHdyaXRlUERGKCl7YXdhaXQgdGhpcy4jSm4oKTtjb25zdCBlPXRoaXMuI1FuKCksW3QsYSxuXT1hd2FpdCB0aGlzLiNabigpLFtzLHJdPWF3YWl0IHRoaXMuI2VzKCk7cmV0dXJuIGluY3JlbWVudGFsVXBkYXRlKHtvcmlnaW5hbERhdGE6c3RyaW5nVG9CeXRlcyhgJVBERi0ke3RoaXMudmVyc2lvbn1cbiXDusOew7rDjmApLGNoYW5nZXM6cyx4cmVmSW5mbzp7c3RhcnRYUmVmOm51bGwscm9vdFJlZjp0aGlzLnJvb3RSZWYsaW5mb1JlZjp0aGlzLmluZm9SZWYsZW5jcnlwdFJlZjp0LG5ld1JlZjpyLGZpbGVJZHM6bnx8W251bGwsbnVsbF0saW5mb01hcDplfSx1c2VYcmVmU3RyZWFtOnRoaXMudXNlT2JqZWN0U3RyZWFtcyx4cmVmOntlbmNyeXB0OmEsZW5jcnlwdFJlZjp0fX0pfX1jbGFzcyBCYXNlUERGU3RyZWFteyNhcz1udWxsOyNucz1udWxsO19mdWxsUmVhZGVyPW51bGw7X3JhbmdlUmVhZGVycz1uZXcgU2V0O19zb3VyY2U9bnVsbDtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5fc291cmNlPWU7dGhpcy4jYXM9dDt0aGlzLiNucz1hfWdldCBfcHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2Z1bGxSZWFkZXI/Ll9sb2FkZWQ/PzB9Z2V0RnVsbFJlYWRlcigpe2Fzc2VydCghdGhpcy5fZnVsbFJlYWRlciwiQmFzZVBERlN0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3JldHVybiB0aGlzLl9mdWxsUmVhZGVyPW5ldyB0aGlzLiNhcyh0aGlzKX1nZXRSYW5nZVJlYWRlcihlLHQpe2lmKHQ8PXRoaXMuX3Byb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm4gbnVsbDtjb25zdCBhPW5ldyB0aGlzLiNucyh0aGlzLGUsdCk7dGhpcy5fcmFuZ2VSZWFkZXJzLmFkZChhKTtyZXR1cm4gYX1jYW5jZWxBbGxSZXF1ZXN0cyhlKXt0aGlzLl9mdWxsUmVhZGVyPy5jYW5jZWwoZSk7Zm9yKGNvbnN0IHQgb2YgbmV3IFNldCh0aGlzLl9yYW5nZVJlYWRlcnMpKXQuY2FuY2VsKGUpfX1jbGFzcyBCYXNlUERGU3RyZWFtUmVhZGVye29uUHJvZ3Jlc3M9bnVsbDtfY29udGVudExlbmd0aD0wO19maWxlbmFtZT1udWxsO19oZWFkZXJzQ2FwYWJpbGl0eT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTtfaXNSYW5nZVN1cHBvcnRlZD0hMTtfaXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ITE7X2xvYWRlZD0wO19zdHJlYW09bnVsbDtjb25zdHJ1Y3RvcihlKXt0aGlzLl9zdHJlYW09ZX1fY2FsbE9uUHJvZ3Jlc3MoKXt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZCx0b3RhbDp0aGlzLl9jb250ZW50TGVuZ3RofSl9Z2V0IGhlYWRlcnNSZWFkeSgpe3JldHVybiB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlfWdldCBmaWxlbmFtZSgpe3JldHVybiB0aGlzLl9maWxlbmFtZX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1JhbmdlU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWR9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGByZWFkYCBjYWxsZWQiKX1jYW5jZWwoZSl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgY2FuY2VsYCBjYWxsZWQiKX19Y2xhc3MgQmFzZVBERlN0cmVhbVJhbmdlUmVhZGVye19zdHJlYW09bnVsbDtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5fc3RyZWFtPWV9YXN5bmMgcmVhZCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHJlYWRgIGNhbGxlZCIpfWNhbmNlbChlKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBjYW5jZWxgIGNhbGxlZCIpfX1jbGFzcyBQREZXb3JrZXJTdHJlYW0gZXh0ZW5kcyBCYXNlUERGU3RyZWFte2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsUERGV29ya2VyU3RyZWFtUmVhZGVyLFBERldvcmtlclN0cmVhbVJhbmdlUmVhZGVyKX19Y2xhc3MgUERGV29ya2VyU3RyZWFtUmVhZGVyIGV4dGVuZHMgQmFzZVBERlN0cmVhbVJlYWRlcntfcmVhZGVyPW51bGw7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7bXNnSGFuZGxlcjp0fT1lLl9zb3VyY2UsYT10LnNlbmRXaXRoU3RyZWFtKCJHZXRSZWFkZXIiKTt0aGlzLl9yZWFkZXI9YS5nZXRSZWFkZXIoKTt0LnNlbmRXaXRoUHJvbWlzZSgiUmVhZGVySGVhZGVyc1JlYWR5IikudGhlbihlPT57dGhpcy5fY29udGVudExlbmd0aD1lLmNvbnRlbnRMZW5ndGg7dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ZS5pc1N0cmVhbWluZ1N1cHBvcnRlZDt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPWUuaXNSYW5nZVN1cHBvcnRlZDt0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5yZXNvbHZlKCl9LHRoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlamVjdCl9YXN5bmMgcmVhZCgpe2NvbnN0e3ZhbHVlOmUsZG9uZTp0fT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO3JldHVybiB0P3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06e3ZhbHVlOmUuYnVmZmVyLGRvbmU6ITF9fWNhbmNlbChlKXt0aGlzLl9yZWFkZXIuY2FuY2VsKGUpfX1jbGFzcyBQREZXb3JrZXJTdHJlYW1SYW5nZVJlYWRlciBleHRlbmRzIEJhc2VQREZTdHJlYW1SYW5nZVJlYWRlcntfcmVhZGVyPW51bGw7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKGUsdCxhKTtjb25zdHttc2dIYW5kbGVyOm59PWUuX3NvdXJjZSxzPW4uc2VuZFdpdGhTdHJlYW0oIkdldFJhbmdlUmVhZGVyIix7YmVnaW46dCxlbmQ6YX0pO3RoaXMuX3JlYWRlcj1zLmdldFJlYWRlcigpfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19Y2xhc3MgV29ya2VyVGFza3sjc3M9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGVybWluYXRlZD0hMTtjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9ZX1nZXQgZmluaXNoZWQoKXtyZXR1cm4gdGhpcy4jc3MucHJvbWlzZX1maW5pc2goKXt0aGlzLiNzcy5yZXNvbHZlKCl9dGVybWluYXRlKCl7dGhpcy50ZXJtaW5hdGVkPSEwfWVuc3VyZU5vdFRlcm1pbmF0ZWQoKXtpZih0aGlzLnRlcm1pbmF0ZWQpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgdGFzayB3YXMgdGVybWluYXRlZCIpfX1jbGFzcyBXb3JrZXJNZXNzYWdlSGFuZGxlcntzdGF0aWN7InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cmJiFlJiYidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJiJmdW5jdGlvbiI9PXR5cGVvZiBzZWxmLnBvc3RNZXNzYWdlJiYib25tZXNzYWdlImluIHNlbGYmJnRoaXMuaW5pdGlhbGl6ZUZyb21Qb3J0KHNlbGYpfXN0YXRpYyBzZXR1cChlLHQpe2Uub24oImNvbmZpZ3VyZSIsZT0+eyFmdW5jdGlvbiBzZXRWZXJib3NpdHlMZXZlbChlKXtOdW1iZXIuaXNJbnRlZ2VyKGUpJiYoYWE9ZSl9KGUudmVyYm9zaXR5KX0pO2Uub24oIkdldERvY1JlcXVlc3QiLGU9PnRoaXMuY3JlYXRlRG9jdW1lbnRIYW5kbGVyKGUsdCkpfXN0YXRpYyBjcmVhdGVEb2N1bWVudEhhbmRsZXIoZSx0KXtsZXQgYSxuPSExLHM9bnVsbDtjb25zdCByPW5ldyBTZXQse2RvY0lkOmksYXBpVmVyc2lvbjpvfT1lLGw9IjYuNC4yOTkiO2lmKG8hPT1sKXRocm93IG5ldyBFcnJvcihgVGhlIEFQSSB2ZXJzaW9uICIke299IiBkb2VzIG5vdCBtYXRjaCB0aGUgV29ya2VyIHZlcnNpb24gIiR7bH0iLmApO2NvbnN0IGJ1aWxkTXNnPShlLHQpPT5gVGhlIFxgJHtlfS5wcm90b3R5cGVcYCBjb250YWlucyB1bmV4cGVjdGVkIGVudW1lcmFibGUgcHJvcGVydHkgIiR7dH0iLCB0aHVzIGJyZWFraW5nIGUuZy4gXGBmb3IuLi5pblxgIGl0ZXJhdGlvbiBvZiAke2V9cy5gO2Zvcihjb25zdCBlIGlue30pdGhyb3cgbmV3IEVycm9yKGJ1aWxkTXNnKCJPYmplY3QiLGUpKTtmb3IoY29uc3QgZSBpbltdKXRocm93IG5ldyBFcnJvcihidWlsZE1zZygiQXJyYXkiLGUpKTtjb25zdCBmPWkrIl93b3JrZXIiO2xldCBjPW5ldyBNZXNzYWdlSGFuZGxlcihmLGksdCk7ZnVuY3Rpb24gZW5zdXJlTm90VGVybWluYXRlZCgpe2lmKG4pdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQiKX1mdW5jdGlvbiBzdGFydFdvcmtlclRhc2soZSl7ci5hZGQoZSl9ZnVuY3Rpb24gZmluaXNoV29ya2VyVGFzayhlKXtlLmZpbmlzaCgpO3IuZGVsZXRlKGUpfWFzeW5jIGZ1bmN0aW9uIGxvYWREb2N1bWVudChlKXthd2FpdCBhLmluaXREb2N1bWVudChlKTtjb25zdCB0PWF3YWl0IGEuZW5zdXJlRG9jKCJpc1B1cmVYZmEiKTtpZih0KXtjb25zdCBlPW5ldyBXb3JrZXJUYXNrKCJsb2FkWGZhUmVzb3VyY2VzIik7c3RhcnRXb3JrZXJUYXNrKGUpO2F3YWl0IGEuZW5zdXJlRG9jKCJsb2FkWGZhUmVzb3VyY2VzIixbYyxlXSk7ZmluaXNoV29ya2VyVGFzayhlKX1jb25zdFtuLHNdPWF3YWl0IFByb21pc2UuYWxsKFthLmVuc3VyZURvYygibnVtUGFnZXMiKSxhLmVuc3VyZURvYygiZmluZ2VycHJpbnRzIildKTtyZXR1cm57bnVtUGFnZXM6bixmaW5nZXJwcmludHM6cyxodG1sRm9yWGZhOnQ/YXdhaXQgYS5lbnN1cmVEb2MoImh0bWxGb3JYZmEiKTpudWxsfX1hc3luYyBmdW5jdGlvbiBnZXRQYXNzd29yZChlKXtjb25zdCB0PW5ldyBXb3JrZXJUYXNrKGBQYXNzd29yZEV4Y2VwdGlvbjogcmVzcG9uc2UgJHtlLmNvZGV9YCk7c3RhcnRXb3JrZXJUYXNrKHQpO3RyeXtyZXR1cm4oYXdhaXQgYy5zZW5kV2l0aFByb21pc2UoIlBhc3N3b3JkUmVxdWVzdCIsZSkpLnBhc3N3b3JkfWZpbmFsbHl7UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2ZpbmlzaFdvcmtlclRhc2sodCl9KX19ZnVuY3Rpb24gc2V0dXBEb2MoZSl7ZnVuY3Rpb24gb25TdWNjZXNzKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtjLnNlbmQoIkdldERvYyIse3BkZkluZm86ZX0pfWZ1bmN0aW9uIG9uRmFpbHVyZShlKXtufHwoZSBpbnN0YW5jZW9mIFBhc3N3b3JkRXhjZXB0aW9uP2dldFBhc3N3b3JkKGUpLnRoZW4oZT0+e2EudXBkYXRlUGFzc3dvcmQoZSk7cGRmTWFuYWdlclJlYWR5KCl9KS5jYXRjaCgoKT0+e2Muc2VuZCgiRG9jRXhjZXB0aW9uIixlKX0pOmMuc2VuZCgiRG9jRXhjZXB0aW9uIix3cmFwUmVhc29uKGUpKSl9ZnVuY3Rpb24gcGRmTWFuYWdlclJlYWR5KCl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2xvYWREb2N1bWVudCghMSkudGhlbihvblN1Y2Nlc3MsZnVuY3Rpb24oZSl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2UgaW5zdGFuY2VvZiBYUmVmUGFyc2VFeGNlcHRpb24/YS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCkudGhlbihmdW5jdGlvbigpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtsb2FkRG9jdW1lbnQoITApLnRoZW4ob25TdWNjZXNzLG9uRmFpbHVyZSl9LG9uRmFpbHVyZSk6b25GYWlsdXJlKGUpfSl9ZW5zdXJlTm90VGVybWluYXRlZCgpOyhhc3luYyBmdW5jdGlvbiBnZXRQZGZNYW5hZ2VyKHtkYXRhOmUscGFzc3dvcmQ6dCxkaXNhYmxlQXV0b0ZldGNoOmEscmFuZ2VDaHVua1NpemU6bixkb2NCYXNlVXJsOnIsZW5hYmxlWGZhOm8sZXZhbHVhdG9yT3B0aW9uczpsfSl7Y29uc3QgZj17c291cmNlOm51bGwsZGlzYWJsZUF1dG9GZXRjaDphLGRvY0Jhc2VVcmw6cixkb2NJZDppLGVuYWJsZVhmYTpvLGV2YWx1YXRvck9wdGlvbnM6bCxoYW5kbGVyOmMsbGVuZ3RoOjAscGFzc3dvcmQ6dCxyYW5nZUNodW5rU2l6ZTpufTtpZihlKXtmLnNvdXJjZT1lO3JldHVybiBuZXcgTG9jYWxQZGZNYW5hZ2VyKGYpfWNvbnN0IGg9bmV3IFBERldvcmtlclN0cmVhbSh7bXNnSGFuZGxlcjpjfSksdT1oLmdldEZ1bGxSZWFkZXIoKSx7cHJvbWlzZTptLHJlc29sdmU6cCxyZWplY3Q6ZH09UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7bGV0IGcsYj1bXTtzPWU9PmguY2FuY2VsQWxsUmVxdWVzdHMoZSk7dS5oZWFkZXJzUmVhZHkudGhlbigoKT0+e2lmKHUuaXNSYW5nZVN1cHBvcnRlZCl7Zi5zb3VyY2U9aDtmLmxlbmd0aD11LmNvbnRlbnRMZW5ndGg7Zi5kaXNhYmxlQXV0b0ZldGNofHw9dS5pc1N0cmVhbWluZ1N1cHBvcnRlZDtnPW5ldyBOZXR3b3JrUGRmTWFuYWdlcihmKTtmb3IoY29uc3QgZSBvZiBiKWcuc2VuZFByb2dyZXNzaXZlRGF0YShlKTtiPW51bGw7cChnKTtzPW51bGx9fSkuY2F0Y2goZT0+e2QoZSk7cz1udWxsfSk7KGFzeW5jIGZ1bmN0aW9uIHJlYWREYXRhKCl7bGV0IGU9MDtmb3IoOzspe2NvbnN0e3ZhbHVlOnQsZG9uZTphfT1hd2FpdCB1LnJlYWQoKTtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7aWYoYSlicmVhaztlKz10LmJ5dGVMZW5ndGg7dS5pc1N0cmVhbWluZ1N1cHBvcnRlZHx8Yy5zZW5kKCJEb2NQcm9ncmVzcyIse2xvYWRlZDplLHRvdGFsOnUuY29udGVudExlbmd0aH0pO2c/Zy5zZW5kUHJvZ3Jlc3NpdmVEYXRhKHQpOmIucHVzaCh0KX1pZighZyl7Zi5zb3VyY2U9YXJyYXlCdWZmZXJzVG9CeXRlcyhiKTtiPW51bGw7Zz1uZXcgTG9jYWxQZGZNYW5hZ2VyKGYpO3AoZyl9cz1udWxsfSkoKS5jYXRjaChlPT57ZChlKTtzPW51bGx9KTtyZXR1cm4gbX0pKGUpLnRoZW4oZnVuY3Rpb24oZSl7aWYobil7ZS50ZXJtaW5hdGUobmV3IEFib3J0RXhjZXB0aW9uKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQuIikpO3Rocm93IG5ldyBFcnJvcigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkIil9YT1lO2EucmVxdWVzdExvYWRlZFN0cmVhbSghMCkudGhlbihlPT57Yy5zZW5kKCJEYXRhTG9hZGVkIix7bGVuZ3RoOmUuYnl0ZXMuYnl0ZUxlbmd0aH0pfSwoKT0+e30pfSkudGhlbihwZGZNYW5hZ2VyUmVhZHksb25GYWlsdXJlKX1jLm9uKCJHZXRQYWdlIixhc3luYyBmdW5jdGlvbih7cGFnZUluZGV4OmV9KXtjb25zdCB0PWF3YWl0IGEuZ2V0UGFnZShlKSxbbixzLHIsaV09YXdhaXQgUHJvbWlzZS5hbGwoW2EuZW5zdXJlKHQsInJvdGF0ZSIpLGEuZW5zdXJlKHQsInJlZiIpLGEuZW5zdXJlKHQsInVzZXJVbml0IiksYS5lbnN1cmUodCwidmlldyIpXSk7cmV0dXJue3JvdGF0ZTpuLHJlZjpzLHJlZlN0cjpzPy50b1N0cmluZygpPz9udWxsLHVzZXJVbml0OnIsdmlldzppfX0pO2Mub24oIkdldFBhZ2VJbmRleCIsZnVuY3Rpb24oe251bTplLGdlbjp0fSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiZ2V0UGFnZUluZGV4IixbUmVmLmdldChlLHQpXSl9KTtjLm9uKCJHZXREZXN0aW5hdGlvbnMiLGZ1bmN0aW9uKCl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiZGVzdGluYXRpb25zIil9KTtjLm9uKCJHZXREZXN0aW5hdGlvbiIsZnVuY3Rpb24oe2lkOmV9KXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJnZXREZXN0aW5hdGlvbiIsW2VdKX0pO2Mub24oIkdldFBhZ2VMYWJlbHMiLGZ1bmN0aW9uKCl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygicGFnZUxhYmVscyIpfSk7Yy5vbigiR2V0UGFnZUxheW91dCIsZnVuY3Rpb24oKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwYWdlTGF5b3V0Iil9KTtjLm9uKCJHZXRQYWdlTW9kZSIsZnVuY3Rpb24oKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwYWdlTW9kZSIpfSk7Yy5vbigiR2V0Vmlld2VyUHJlZmVyZW5jZXMiLGZ1bmN0aW9uKCl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygidmlld2VyUHJlZmVyZW5jZXMiKX0pO2Mub24oIkdldE9wZW5BY3Rpb24iLGZ1bmN0aW9uKCl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygib3BlbkFjdGlvbiIpfSk7Yy5vbigiR2V0QXR0YWNobWVudHMiLGZ1bmN0aW9uKCl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiYXR0YWNobWVudHMiKX0pO2Mub24oIkdldEF0dGFjaG1lbnRDb250ZW50Iixhc3luYyBmdW5jdGlvbihlKXtsZXQgdDtmb3IoOzspe2NvbnN0IG49dD9hd2FpdCBnZXRQYXNzd29yZCh0KTpudWxsO3RyeXtuJiZhLnVwZGF0ZVBhc3N3b3JkKG4pO3JldHVybiBhd2FpdCBhLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRDb250ZW50IixbZV0pfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBQYXNzd29yZEV4Y2VwdGlvbil7dD1lO2NvbnRpbnVlfXRocm93IGV9fX0pO2Mub24oIkdldERvY0pTQWN0aW9ucyIsZnVuY3Rpb24oKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJqc0FjdGlvbnMiKX0pO2Mub24oIkdldFBhZ2VKU0FjdGlvbnMiLGFzeW5jIGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZX0pe2NvbnN0IHQ9YXdhaXQgYS5nZXRQYWdlKGUpO3JldHVybiBhLmVuc3VyZSh0LCJqc0FjdGlvbnMiKX0pO2Mub24oIkdldEFubm90YXRpb25zQnlUeXBlIixhc3luYyBmdW5jdGlvbih7dHlwZXM6ZSxwYWdlSW5kZXhlc1RvU2tpcDp0fSl7Y29uc3RbbixzXT1hd2FpdCBQcm9taXNlLmFsbChbYS5lbnN1cmVEb2MoIm51bVBhZ2VzIiksYS5lbnN1cmVEb2MoImFubm90YXRpb25HbG9iYWxzIildKTtpZighcylyZXR1cm4gbnVsbDtjb25zdCByPVtdLGk9W107bGV0IG89bnVsbDt0cnl7Zm9yKGxldCBsPTA7bDxuO2wrKylpZighdD8uaGFzKGwpKXtpZighbyl7bz1uZXcgV29ya2VyVGFzaygiR2V0QW5ub3RhdGlvbnNCeVR5cGUiKTtzdGFydFdvcmtlclRhc2sobyl9ci5wdXNoKGEuZ2V0UGFnZShsKS50aGVuKHQ9PnQuY29sbGVjdEFubm90YXRpb25zQnlUeXBlKGMsbyxlLGkscykpKX1hd2FpdCBQcm9taXNlLmFsbChyKTtyZXR1cm4oYXdhaXQgUHJvbWlzZS5hbGwoaSkpLmZpbHRlcihCb29sZWFuKX1maW5hbGx5e28mJmZpbmlzaFdvcmtlclRhc2sobyl9fSk7Yy5vbigiR2V0T3V0bGluZSIsZnVuY3Rpb24oKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJkb2N1bWVudE91dGxpbmUiKX0pO2Mub24oIkdldE9wdGlvbmFsQ29udGVudENvbmZpZyIsZnVuY3Rpb24oKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJvcHRpb25hbENvbnRlbnRDb25maWciKX0pO2Mub24oIkdldFBlcm1pc3Npb25zIixmdW5jdGlvbigpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coInBlcm1pc3Npb25zIil9KTtjLm9uKCJHZXRNZXRhZGF0YSIsZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2EuZW5zdXJlRG9jKCJkb2N1bWVudEluZm8iKSxhLmVuc3VyZUNhdGFsb2coIm1ldGFkYXRhIiksYS5lbnN1cmVDYXRhbG9nKCJoYXNTdHJ1Y3RUcmVlIildKX0pO2Mub24oIkdldE1hcmtJbmZvIixmdW5jdGlvbigpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coIm1hcmtJbmZvIil9KTtjLm9uKCJHZXREYXRhIixhc3luYyBmdW5jdGlvbigpe3JldHVybihhd2FpdCBhLnJlcXVlc3RMb2FkZWRTdHJlYW0oKSkuYnl0ZXN9KTtjLm9uKCJHZXRBbm5vdGF0aW9ucyIsYXN5bmMgZnVuY3Rpb24oe3BhZ2VJbmRleDplLGludGVudDp0fSl7Y29uc3Qgbj1hd2FpdCBhLmdldFBhZ2UoZSkscz1uZXcgV29ya2VyVGFzayhgR2V0QW5ub3RhdGlvbnM6IHBhZ2UgJHtlfWApO3N0YXJ0V29ya2VyVGFzayhzKTt0cnl7cmV0dXJuIGF3YWl0IG4uZ2V0QW5ub3RhdGlvbnNEYXRhKGMscyx0KX1maW5hbGx5e2ZpbmlzaFdvcmtlclRhc2socyl9fSk7Yy5vbigiR2V0RmllbGRPYmplY3RzIixhc3luYyBmdW5jdGlvbigpe2NvbnN0IGU9YXdhaXQgYS5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpO3JldHVybiBlPy5hbGxGaWVsZHN8fG51bGx9KTtjLm9uKCJHZXRTaWduYXR1cmVzIixmdW5jdGlvbigpe3JldHVybiBhLmVuc3VyZURvYygic2lnbmF0dXJlcyIpfSk7Yy5vbigiR2V0U2lnbmF0dXJlRGF0YSIsZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlRG9jKCJnZXRTaWduYXR1cmVEYXRhIixbZV0pfSk7Yy5vbigiSGFzSlNBY3Rpb25zIixmdW5jdGlvbigpe3JldHVybiBhLmVuc3VyZURvYygiaGFzSlNBY3Rpb25zIil9KTtjLm9uKCJHZXRDYWxjdWxhdGlvbk9yZGVySWRzIixmdW5jdGlvbigpe3JldHVybiBhLmVuc3VyZURvYygiY2FsY3VsYXRpb25PcmRlcklkcyIpfSk7Yy5vbigiRXh0cmFjdFBhZ2VzIixhc3luYyBmdW5jdGlvbih7cGFnZUluZm9zOmUsYW5ub3RhdGlvblN0b3JhZ2U6dH0pe2lmKCFlKXt3YXJuKCJleHRyYWN0UGFnZXM6IG5vdGhpbmcgdG8gZXh0cmFjdC4iKTtyZXR1cm4gbnVsbH1BcnJheS5pc0FycmF5KGUpfHwoZT1bZV0pO2xldCBuLHM9MDtmb3IoY29uc3QgdCBvZiBlKWlmKCF0LmltYWdlKWlmKG51bGw9PT10LmRvY3VtZW50KXQuZG9jdW1lbnQ9YS5wZGZEb2N1bWVudDtlbHNlIGlmKEFycmF5QnVmZmVyLmlzVmlldyh0LmRvY3VtZW50KSl7Y29uc3QgZT1uZXcgTG9jYWxQZGZNYW5hZ2VyKHtzb3VyY2U6dC5kb2N1bWVudCxkb2NJZDpgJHtpfV9leHRyYWN0UGFnZXNfJHtzKyt9YCxoYW5kbGVyOmMscGFzc3dvcmQ6dC5wYXNzd29yZD8/bnVsbCxldmFsdWF0b3JPcHRpb25zOk9iamVjdC5hc3NpZ24oe30sYS5ldmFsdWF0b3JPcHRpb25zKX0pO2xldCBuPSExLHI9ITA7Zm9yKDs7KXRyeXthd2FpdCBlLnJlcXVlc3RMb2FkZWRTdHJlYW0oKTthd2FpdCBlLmluaXREb2N1bWVudChuKTticmVha31jYXRjaCh0KXtpZih0IGluc3RhbmNlb2YgWFJlZlBhcnNlRXhjZXB0aW9uKXtpZighMT09PW4pe249ITA7Y29udGludWV9cj0hMTt3YXJuKCJleHRyYWN0UGFnZXM6IFhSZWZQYXJzZUV4Y2VwdGlvbi4iKX1lbHNlIGlmKHQgaW5zdGFuY2VvZiBQYXNzd29yZEV4Y2VwdGlvbil0cnl7Y29uc3QgYT1hd2FpdCBnZXRQYXNzd29yZCh0KTtlLnVwZGF0ZVBhc3N3b3JkKGEpfWNhdGNoe3I9ITE7d2FybigiZXh0cmFjdFBhZ2VzOiBpbnZhbGlkIHBhc3N3b3JkLiIpfWVsc2V7cj0hMTt3YXJuKCJleHRyYWN0UGFnZXM6IGludmFsaWQgZG9jdW1lbnQuIil9aWYoIXIpYnJlYWt9cnx8KHQuZG9jdW1lbnQ9bnVsbCk7aWYoYXdhaXQgZS5lbnN1cmVEb2MoImlzUHVyZVhmYSIpKXt0LmRvY3VtZW50PW51bGw7d2FybigiZXh0cmFjdFBhZ2VzIGRvZXMgbm90IHN1cHBvcnQgcHVyZSBYRkEgZG9jdW1lbnRzLiIpfWVsc2UgdC5kb2N1bWVudD1lLnBkZkRvY3VtZW50fWVsc2Ugd2FybigiZXh0cmFjdFBhZ2VzOiBpbnZhbGlkIGRvY3VtZW50LiIpO3RyeXtjb25zdCBzPW5ldyBQREZFZGl0b3I7bj1uZXcgV29ya2VyVGFzayhgRXh0cmFjdFBhZ2VzOiAke2UubGVuZ3RofSBwYWdlKHMpYCk7c3RhcnRXb3JrZXJUYXNrKG4pO3JldHVybiBhd2FpdCBzLmV4dHJhY3RQYWdlcyhlLHQsYS5wZGZEb2N1bWVudCxjLG4pfWNhdGNoKGUpe3dhcm4oYGV4dHJhY3RQYWdlczogIiR7ZX0iLmApO3JldHVybiBudWxsfWZpbmFsbHl7biYmZmluaXNoV29ya2VyVGFzayhuKX19KTtjLm9uKCJTYXZlRG9jdW1lbnQiLGFzeW5jIGZ1bmN0aW9uKHtpc1B1cmVYZmE6ZSxudW1QYWdlczp0LGFubm90YXRpb25TdG9yYWdlOm4sc3VwcG9ydHNQcmludFRvUERGOnMsZmlsZW5hbWU6cn0pe2NvbnN0IGk9W2EucmVxdWVzdExvYWRlZFN0cmVhbSgpLGEuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKSxhLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtUmVmIiksYS5lbnN1cmVEb2MoInN0YXJ0WFJlZiIpLGEuZW5zdXJlRG9jKCJ4cmVmIiksYS5lbnN1cmVDYXRhbG9nKCJzdHJ1Y3RUcmVlUm9vdCIpXSxvPW5ldyBSZWZNYXAsbD1bXSxmPWU/bnVsbDpnZXROZXdBbm5vdGF0aW9uc01hcChuKSxbaCx1LG0scCxkLGddPWF3YWl0IFByb21pc2UuYWxsKGkpLGI9ZC50cmFpbGVyLmdldFJhdygiUm9vdCIpfHxudWxsO2xldCB3O2lmKGYpe2c/YXdhaXQgZy5jYW5VcGRhdGVTdHJ1Y3RUcmVlKHtwZGZNYW5hZ2VyOmEsbmV3QW5ub3RhdGlvbnNCeVBhZ2U6Zn0pJiYodz1nKTphd2FpdCBTdHJ1Y3RUcmVlUm9vdC5jYW5DcmVhdGVTdHJ1Y3R1cmVUcmVlKHtjYXRhbG9nUmVmOmIscGRmTWFuYWdlcjphLG5ld0Fubm90YXRpb25zQnlQYWdlOmZ9KSYmKHc9bnVsbCk7Y29uc3QgZT1Bbm5vdGF0aW9uRmFjdG9yeS5nZW5lcmF0ZUltYWdlcyhuLnZhbHVlcygpLGQsYS5ldmFsdWF0b3JPcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKSx0PXZvaWQgMD09PXc/bDpbXTtmb3IoY29uc3RbbixzXW9mIGYpdC5wdXNoKGEuZ2V0UGFnZShuKS50aGVuKHQ9Pntjb25zdCBhPW5ldyBXb3JrZXJUYXNrKGBTYXZlIChlZGl0b3IpOiBwYWdlICR7bn1gKTtzdGFydFdvcmtlclRhc2soYSk7cmV0dXJuIHQuc2F2ZU5ld0Fubm90YXRpb25zKGMsYSxzLGUsbykuZmluYWxseSgoKT0+e2ZpbmlzaFdvcmtlclRhc2soYSl9KX0pKTtudWxsPT09dz9sLnB1c2goUHJvbWlzZS5hbGwodCkudGhlbigoKT0+U3RydWN0VHJlZVJvb3QuY3JlYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6Zix4cmVmOmQsY2F0YWxvZ1JlZjpiLHBkZk1hbmFnZXI6YSxjaGFuZ2VzOm99KSkpOncmJmwucHVzaChQcm9taXNlLmFsbCh0KS50aGVuKCgpPT53LnVwZGF0ZVN0cnVjdHVyZVRyZWUoe25ld0Fubm90YXRpb25zQnlQYWdlOmYscGRmTWFuYWdlcjphLGNoYW5nZXM6b30pKSl9aWYoZSlsLnB1c2goYS5lbnN1cmVEb2MoInNlcmlhbGl6ZVhmYURhdGEiLFtuXSkpO2Vsc2UgZm9yKGxldCBlPTA7ZTx0O2UrKylsLnB1c2goYS5nZXRQYWdlKGUpLnRoZW4oZnVuY3Rpb24odCl7Y29uc3QgYT1uZXcgV29ya2VyVGFzayhgU2F2ZTogcGFnZSAke2V9YCk7c3RhcnRXb3JrZXJUYXNrKGEpO3JldHVybiB0LnNhdmUoYyxhLG4sbykuZmluYWxseSgoKT0+e2ZpbmlzaFdvcmtlclRhc2soYSl9KX0pKTtjb25zdCBqPWF3YWl0IFByb21pc2UuYWxsKGwpO2xldCBrPW51bGw7aWYoZSl7az1qWzBdO2lmKCFrKXJldHVybiBoLmJ5dGVzfWVsc2UgaWYoMD09PW8uc2l6ZSlyZXR1cm4gaC5ieXRlcztjb25zdCB5PW0mJnUgaW5zdGFuY2VvZiBEaWN0JiZvLnZhbHVlcygpLnNvbWUoZT0+ZS5uZWVkQXBwZWFyYW5jZXMpLHE9dSBpbnN0YW5jZW9mIERpY3QmJnUuZ2V0KCJYRkEiKXx8bnVsbDtsZXQgdj1udWxsLFM9ITE7aWYoQXJyYXkuaXNBcnJheShxKSl7Zm9yKGxldCBlPTAsdD1xLmxlbmd0aDtlPHQ7ZSs9MilpZigiZGF0YXNldHMiPT09cVtlXSl7dj1xW2UrMV07Uz0hMH1udWxsPT09diYmKHY9ZC5nZXROZXdUZW1wb3JhcnlSZWYoKSl9ZWxzZSBxJiZ3YXJuKCJVbnN1cHBvcnRlZCBYRkEgdHlwZS4iKTtsZXQgeD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGQudHJhaWxlcil7Y29uc3QgZT1uZXcgTWFwLHQ9ZC50cmFpbGVyLmdldCgiSW5mbyIpfHxudWxsO2lmKHQgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFthLG5db2YgdCkic3RyaW5nIj09dHlwZW9mIG4mJmUuc2V0KGEsc3RyaW5nVG9QREZTdHJpbmcobikpO3g9e3Jvb3RSZWY6YixlbmNyeXB0UmVmOmQudHJhaWxlci5nZXRSYXcoIkVuY3J5cHQiKXx8bnVsbCxuZXdSZWY6ZC5nZXROZXdUZW1wb3JhcnlSZWYoKSxpbmZvUmVmOmQudHJhaWxlci5nZXRSYXcoIkluZm8iKXx8bnVsbCxpbmZvTWFwOmUsZmlsZUlkczpkLnRyYWlsZXIuZ2V0KCJJRCIpfHxudWxsLHN0YXJ0WFJlZjpwLGZpbGVuYW1lOnJ9fXJldHVybiBpbmNyZW1lbnRhbFVwZGF0ZSh7b3JpZ2luYWxEYXRhOmguYnl0ZXMseHJlZkluZm86eCxjaGFuZ2VzOm8seHJlZjpkLGhhc1hmYTohIXEseGZhRGF0YXNldHNSZWY6dixoYXNYZmFEYXRhc2V0c0VudHJ5OlMsbmVlZEFwcGVhcmFuY2VzOnksYWNyb0Zvcm1SZWY6bSxhY3JvRm9ybTp1LHhmYURhdGE6ayx1c2VYcmVmU3RyZWFtOmlzRGljdChkLnRvcERpY3QsIlhSZWYiKX0pLmZpbmFsbHkoKCk9PntkLnJlc2V0TmV3VGVtcG9yYXJ5UmVmKCl9KX0pO2Mub24oIkdldE9wZXJhdG9yTGlzdCIsZnVuY3Rpb24oe3BhZ2VJZDplLHBhZ2VJbmRleDp0LHBhZ2VQcm94eUlkOm4saW50ZW50OnMsY2FjaGVLZXk6cixhbm5vdGF0aW9uU3RvcmFnZTppLG1vZGlmaWVkSWRzOm99LGwpe2EuZ2V0UGFnZShlKS50aGVuKGZ1bmN0aW9uKGUpe2NvbnN0IGE9bmV3IFdvcmtlclRhc2soYEdldE9wZXJhdG9yTGlzdDogcGFnZSAke3R9YCk7c3RhcnRXb3JrZXJUYXNrKGEpO2UuZ2V0T3BlcmF0b3JMaXN0KHtoYW5kbGVyOmMsc2luazpsLHRhc2s6YSxpbnRlbnQ6cyxjYWNoZUtleTpyLGFubm90YXRpb25TdG9yYWdlOmksbW9kaWZpZWRJZHM6byxwYWdlSW5kZXg6dCxwYWdlUHJveHlJZDpufSkudGhlbigoKT0+e2wuY2xvc2UoKX0sZT0+e2EudGVybWluYXRlZHx8bC5lcnJvcihlKX0pLmZpbmFsbHkoKCk9PntmaW5pc2hXb3JrZXJUYXNrKGEpfSl9KX0pO2Mub24oIkdldFRleHRDb250ZW50IixmdW5jdGlvbih7cGFnZUlkOmUscGFnZUluZGV4OnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6bixkaXNhYmxlTm9ybWFsaXphdGlvbjpzfSxyKXthLmdldFBhZ2UoZSkudGhlbihmdW5jdGlvbihlKXtjb25zdCBhPW5ldyBXb3JrZXJUYXNrKCJHZXRUZXh0Q29udGVudDogcGFnZSAiK3QpO3N0YXJ0V29ya2VyVGFzayhhKTtlLmV4dHJhY3RUZXh0Q29udGVudCh7aGFuZGxlcjpjLHRhc2s6YSxzaW5rOnIsaW5jbHVkZU1hcmtlZENvbnRlbnQ6bixkaXNhYmxlTm9ybWFsaXphdGlvbjpzfSkudGhlbigoKT0+e3IuY2xvc2UoKX0sZT0+e2EudGVybWluYXRlZHx8ci5lcnJvcihlKX0pLmZpbmFsbHkoKCk9PntmaW5pc2hXb3JrZXJUYXNrKGEpfSl9KX0pO2Mub24oIkdldFN0cnVjdFRyZWUiLGFzeW5jIGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZX0pe2NvbnN0IHQ9YXdhaXQgYS5nZXRQYWdlKGUpO3JldHVybiBhLmVuc3VyZSh0LCJnZXRTdHJ1Y3RUcmVlIil9KTtjLm9uKCJGb250RmFsbGJhY2siLGZ1bmN0aW9uKHtpZDplfSl7cmV0dXJuIGEuZm9udEZhbGxiYWNrKGUsYyl9KTtjLm9uKCJDbGVhbnVwIixmdW5jdGlvbigpe3JldHVybiBhLmNsZWFudXAoITApfSk7Yy5vbigiVGVybWluYXRlIixhc3luYyBmdW5jdGlvbigpe249ITA7Y29uc3QgZT1bXTtpZihhKXthLnRlcm1pbmF0ZShuZXcgQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7Y29uc3QgdD1hLmNsZWFudXAoKTtlLnB1c2godCk7YT1udWxsfWVsc2UgY2xlYXJHbG9iYWxDYWNoZXMoKTtzPy4obmV3IEFib3J0RXhjZXB0aW9uKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQuIikpO2Zvcihjb25zdCB0IG9mIHIpe2UucHVzaCh0LmZpbmlzaGVkKTt0LnRlcm1pbmF0ZSgpfWF3YWl0IFByb21pc2UuYWxsKGUpO2MuZGVzdHJveSgpO2M9bnVsbH0pO2Mub24oIlJlYWR5IixmdW5jdGlvbigpe3NldHVwRG9jKGUpO2U9bnVsbH0pO3JldHVybiBmfXN0YXRpYyBpbml0aWFsaXplRnJvbVBvcnQoZSl7Y29uc3QgdD1uZXcgTWVzc2FnZUhhbmRsZXIoIndvcmtlciIsIm1haW4iLGUpO3RoaXMuc2V0dXAodCxlKTtjb25zdCBhPW5ldyBVaW50OEFycmF5O3Quc2VuZCgicmVhZHkiLGEsW2EuYnVmZmVyXSl9fWdsb2JhbFRoaXMucGRmanNXb3JrZXI9e1dvcmtlck1lc3NhZ2VIYW5kbGVyfTtleHBvcnR7V29ya2VyTWVzc2FnZUhhbmRsZXJ9Ow==", "" + import.meta.url).toString();
89
+ let n = t.getDocument({
90
+ data: e,
91
+ useWorkerFetch: !1,
92
+ isOffscreenCanvasSupported: !1
93
+ });
94
+ try {
95
+ return {
96
+ doc: await n.promise,
97
+ task: n
98
+ };
99
+ } catch (e) {
100
+ throw await n.destroy().catch(() => {}), { kind: (e instanceof Error ? e.name : "") === "PasswordException" ? "encrypted" : "unreadable" };
101
+ }
102
+ }
103
+ async function x(e, t, n, r) {
104
+ if (n !== null && e.streamTextContent !== void 0) {
105
+ n.replaceChildren();
106
+ try {
107
+ let i = await b();
108
+ n.style.setProperty("--total-scale-factor", String(r)), await new i.TextLayer({
109
+ textContentSource: await e.streamTextContent(),
110
+ container: n,
111
+ viewport: t
112
+ }).render();
113
+ } catch {
114
+ n.replaceChildren();
115
+ }
116
+ }
117
+ }
118
+ function S(e) {
119
+ try {
120
+ e?.cancel();
121
+ } catch {}
122
+ }
123
+ function te(e) {
124
+ return typeof e == "object" && !!e && typeof e.kind == "string";
125
+ }
126
+ var C = 1;
127
+ function ne({ doc: e, pageNumber: t, scale: n, baseSize: r, active: i, registerSlot: o, onTextLayerReady: f }) {
128
+ let p = s(null), m = s(null), h = s(null), [g, _] = c(!1), [v, y] = c({
129
+ width: r.width * n,
130
+ height: r.height * n
131
+ });
132
+ return a(() => {
133
+ y({
134
+ width: r.width * n,
135
+ height: r.height * n
136
+ });
137
+ }, [
138
+ r.width,
139
+ r.height,
140
+ n
141
+ ]), a(() => {
142
+ if (!i) return;
143
+ let r = !1, a = h.current;
144
+ return S(a), (async () => {
145
+ try {
146
+ let i = await e.getPage(t), o = i.getViewport({ scale: n }), s = p.current;
147
+ if (r || s === null || (await a?.promise.catch(() => {}), r)) return;
148
+ y({
149
+ width: o.width,
150
+ height: o.height
151
+ }), s.width = Math.floor(o.width), s.height = Math.floor(o.height);
152
+ let c = i.render({
153
+ canvas: s,
154
+ viewport: o,
155
+ annotationMode: 0
156
+ });
157
+ if (h.current = c, await c.promise, r) return;
158
+ await x(i, o, m.current, n), r || (_(!1), f?.(t, m.current));
159
+ } catch (e) {
160
+ let t = e instanceof Error ? e.name : "";
161
+ !r && t !== "RenderingCancelledException" && _(!0);
162
+ }
163
+ })(), () => {
164
+ r = !0, S(h.current), f?.(t, null);
165
+ };
166
+ }, [
167
+ e,
168
+ t,
169
+ n,
170
+ i
171
+ ]), /* @__PURE__ */ u("div", {
172
+ ref: (e) => o(t, e),
173
+ "data-page": t,
174
+ className: "relative mx-auto mb-4 bg-white shadow last:mb-0",
175
+ style: {
176
+ width: v.width,
177
+ height: v.height
178
+ },
179
+ children: g ? /* @__PURE__ */ d("p", {
180
+ className: "absolute inset-0 flex items-center justify-center p-4 text-center text-xs text-red-600 dark:text-red-400",
181
+ children: [
182
+ "Page ",
183
+ t,
184
+ " could not be rendered."
185
+ ]
186
+ }) : i ? /* @__PURE__ */ d(l, { children: [/* @__PURE__ */ u("canvas", {
187
+ ref: p,
188
+ className: "block h-full w-full"
189
+ }), /* @__PURE__ */ u("div", {
190
+ ref: m,
191
+ className: "pdf-text-layer",
192
+ "aria-hidden": !0
193
+ })] }) : null
194
+ });
195
+ }
196
+ var w = r(function({ path: e, serverUrl: n = "", token: r = null, workspace: l, revision: f = 0, onLoaded: g, findQuery: y = "", onFindStateChange: b }, x) {
197
+ let [S, w] = c(null), [T, E] = c(null), [D, O] = c(1), [k, A] = c(2), [re, j] = c(null), M = s(null), N = s(/* @__PURE__ */ new Map()), [P, F] = c(/* @__PURE__ */ new Map()), [I, L] = c(!1), [R, z] = c([]), [B, V] = c(-1), H = s(null), U = s(!1), W = s(y), G = s(/* @__PURE__ */ new Map()), K = s(null), q = s([]), J = s(-1), Y = s(y);
198
+ a(() => {
199
+ q.current = R;
200
+ }, [R]), a(() => {
201
+ J.current = B;
202
+ }, [B]), a(() => {
203
+ Y.current = y;
204
+ }, [y]);
205
+ let X = i(() => {
206
+ K.current?.result.clear(), K.current = null;
207
+ }, []), Z = i((e, n) => {
208
+ X();
209
+ let r = t(n, Y.current);
210
+ K.current = {
211
+ page: e.page,
212
+ result: r
213
+ };
214
+ let i = r.matches[e.ordinalOnPage]?.marks ?? [];
215
+ for (let e of i) e.classList.add("find-match-current");
216
+ i[0]?.scrollIntoView({ block: "center" });
217
+ }, [X]), ie = i((e, t) => {
218
+ if (t === null) {
219
+ G.current.delete(e);
220
+ return;
221
+ }
222
+ G.current.set(e, t);
223
+ let n = q.current[J.current];
224
+ n !== void 0 && n.page === e && Z(n, t);
225
+ }, [Z]);
226
+ a(() => {
227
+ let t = !1, i = null;
228
+ return w(null), E(null), O(1), j(null), H.current?.cancel(), H.current = null, U.current = !1, F(/* @__PURE__ */ new Map()), L(!1), z([]), V(-1), X(), G.current.clear(), (async () => {
229
+ try {
230
+ let { doc: a, task: o } = await ee(await v(n, e, r, f, l));
231
+ if (i = o, t) {
232
+ await o.destroy().catch(() => {});
233
+ return;
234
+ }
235
+ try {
236
+ let e = (await a.getPage(1)).getViewport({ scale: 1 });
237
+ t || j({
238
+ width: e.width,
239
+ height: e.height
240
+ });
241
+ } catch {
242
+ t || j({
243
+ width: 612,
244
+ height: 792
245
+ });
246
+ }
247
+ if (t) return;
248
+ w(a), g?.(e);
249
+ } catch (e) {
250
+ t || E(te(e) ? e : { kind: "unreadable" });
251
+ }
252
+ })(), () => {
253
+ t = !0, i?.destroy().catch(() => {});
254
+ };
255
+ }, [
256
+ e,
257
+ n,
258
+ r,
259
+ l,
260
+ f
261
+ ]);
262
+ let Q = S?.numPages ?? 0, ae = i((e, t) => {
263
+ t === null ? N.current.delete(e) : N.current.set(e, t);
264
+ }, []);
265
+ a(() => {
266
+ if (S === null || y === "" || U.current) return;
267
+ U.current = !0, L(!0);
268
+ let e = S, t = {
269
+ numPages: e.numPages,
270
+ getPageText: async (t) => {
271
+ let n = await e.getPage(t);
272
+ return n.getTextContent === void 0 ? "" : (await n.getTextContent()).items.map((e) => typeof e.str == "string" ? e.str : "").join("");
273
+ }
274
+ };
275
+ H.current = p(t, D, (e, t) => F((n) => {
276
+ let r = new Map(n);
277
+ return r.set(e, t), r;
278
+ }), () => L(!1));
279
+ }, [S, y]), a(() => () => {
280
+ H.current?.cancel(), H.current = null;
281
+ }, [S]), a(() => {
282
+ let e = m(P, S?.numPages ?? 0, y), t = y !== W.current;
283
+ W.current = y, z(e), V((n) => e.length === 0 ? -1 : t || n === -1 ? 0 : Math.min(n, e.length - 1));
284
+ }, [
285
+ P,
286
+ y,
287
+ S
288
+ ]), a(() => {
289
+ if (B === -1 || R.length === 0) {
290
+ X();
291
+ return;
292
+ }
293
+ let e = R[B];
294
+ if (K.current !== null && K.current.page !== e.page && X(), Math.abs(e.page - D) > C) {
295
+ $(e.page);
296
+ return;
297
+ }
298
+ let t = G.current.get(e.page);
299
+ t !== void 0 && Z(e, t);
300
+ }, [B, R]), o(x, () => ({
301
+ findNext() {
302
+ q.current.length !== 0 && V((e) => (e + 1) % q.current.length);
303
+ },
304
+ findPrevious() {
305
+ q.current.length !== 0 && V((e) => (e - 1 + q.current.length) % q.current.length);
306
+ }
307
+ }), []), a(() => {
308
+ b?.({
309
+ matchCount: R.length,
310
+ currentIndex: B,
311
+ searching: I
312
+ });
313
+ }, [
314
+ R.length,
315
+ B,
316
+ I
317
+ ]), a(() => {
318
+ if (S === null || typeof IntersectionObserver > "u") return;
319
+ let e = M.current;
320
+ if (e === null) return;
321
+ let t = new IntersectionObserver((e) => {
322
+ for (let t of e) {
323
+ if (!t.isIntersecting) continue;
324
+ let e = Number(t.target.dataset.page);
325
+ Number.isFinite(e) && O(e);
326
+ }
327
+ }, {
328
+ root: e,
329
+ rootMargin: "-45% 0px -45% 0px",
330
+ threshold: 0
331
+ });
332
+ for (let e of N.current.values()) t.observe(e);
333
+ return () => t.disconnect();
334
+ }, [S, Q]);
335
+ let $ = i((e) => {
336
+ e < 1 || e > Q || (O(e), N.current.get(e)?.scrollIntoView({ block: "start" }));
337
+ }, [Q]);
338
+ return T === null ? S === null ? /* @__PURE__ */ u("div", {
339
+ className: "flex h-full items-center justify-center p-6",
340
+ children: /* @__PURE__ */ u("p", {
341
+ className: "text-sm text-zinc-500",
342
+ children: "Loading PDF…"
343
+ })
344
+ }) : /* @__PURE__ */ d("div", {
345
+ className: "flex h-full flex-col",
346
+ onKeyDown: (e) => {
347
+ if (e.key === "PageDown" || e.key === "ArrowRight") $(D + 1);
348
+ else if (e.key === "PageUp" || e.key === "ArrowLeft") $(D - 1);
349
+ else return;
350
+ e.preventDefault();
351
+ },
352
+ children: [/* @__PURE__ */ d("div", {
353
+ className: "flex shrink-0 items-center gap-2 border-b border-zinc-200 px-3 py-2 text-xs dark:border-zinc-800",
354
+ children: [
355
+ /* @__PURE__ */ u("button", {
356
+ type: "button",
357
+ onClick: () => $(D - 1),
358
+ disabled: D <= 1,
359
+ "aria-label": "Previous page",
360
+ className: "rounded px-2 py-1 hover:bg-zinc-100 disabled:opacity-40 dark:hover:bg-zinc-800",
361
+ children: "‹"
362
+ }),
363
+ /* @__PURE__ */ d("span", {
364
+ className: "tabular-nums text-zinc-600 dark:text-zinc-400",
365
+ children: [
366
+ "Page ",
367
+ D,
368
+ " / ",
369
+ Q
370
+ ]
371
+ }),
372
+ /* @__PURE__ */ u("button", {
373
+ type: "button",
374
+ onClick: () => $(D + 1),
375
+ disabled: D >= Q,
376
+ "aria-label": "Next page",
377
+ className: "rounded px-2 py-1 hover:bg-zinc-100 disabled:opacity-40 dark:hover:bg-zinc-800",
378
+ children: "›"
379
+ }),
380
+ /* @__PURE__ */ d("span", {
381
+ className: "ml-auto flex items-center gap-1",
382
+ children: [
383
+ /* @__PURE__ */ u("button", {
384
+ type: "button",
385
+ onClick: () => A((e) => Math.max(0, e - 1)),
386
+ disabled: k === 0,
387
+ "aria-label": "Zoom out",
388
+ className: "rounded px-2 py-1 hover:bg-zinc-100 disabled:opacity-40 dark:hover:bg-zinc-800",
389
+ children: "−"
390
+ }),
391
+ /* @__PURE__ */ d("span", {
392
+ className: "tabular-nums text-zinc-500",
393
+ children: [Math.round(h[k] * 100), "%"]
394
+ }),
395
+ /* @__PURE__ */ u("button", {
396
+ type: "button",
397
+ onClick: () => A((e) => Math.min(h.length - 1, e + 1)),
398
+ disabled: k === h.length - 1,
399
+ "aria-label": "Zoom in",
400
+ className: "rounded px-2 py-1 hover:bg-zinc-100 disabled:opacity-40 dark:hover:bg-zinc-800",
401
+ children: "+"
402
+ })
403
+ ]
404
+ })
405
+ ]
406
+ }), /* @__PURE__ */ u("div", {
407
+ ref: M,
408
+ className: "flex-1 overflow-auto bg-zinc-100 p-4 dark:bg-zinc-950",
409
+ children: re !== null && Array.from({ length: Q }, (e, t) => t + 1).map((e) => /* @__PURE__ */ u(ne, {
410
+ doc: S,
411
+ pageNumber: e,
412
+ scale: h[k],
413
+ baseSize: re,
414
+ active: Math.abs(e - D) <= C,
415
+ registerSlot: ae,
416
+ onTextLayerReady: ie
417
+ }, e))
418
+ })]
419
+ }) : /* @__PURE__ */ u("div", {
420
+ className: "flex h-full items-center justify-center p-6",
421
+ children: /* @__PURE__ */ u("p", {
422
+ className: "max-w-md text-center text-sm text-zinc-600 dark:text-zinc-400",
423
+ children: _(T)
424
+ })
425
+ });
426
+ });
427
+ //#endregion
428
+ export { w as PdfViewer, w as default };