1778692666
441d63ebbc39eba359c9061ece8482bd-phpdoc%3Aac23cfb1940f03f4ab2f375c913dc711-093dfa8bbde30ea108016ee50b31ff30
s:61608:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjEyOiJFeHBvcnRlci5waHAiO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbmFtZXNwYWNlcyI7YToxOntzOjM5OiJcU3ltZm9ueVxDb21wb25lbnRcVmFyRXhwb3J0ZXJcSW50ZXJuYWwiO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czozOToiXFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXEludGVybmFsIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6ODoiSW50ZXJuYWwiO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbmNsdWRlcyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBmdW5jdGlvbnMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY29uc3RhbnRzIjthOjA6e31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGNsYXNzZXMiO2E6MTp7czo0ODoiXFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXEludGVybmFsXEV4cG9ydGVyIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXyI6MTU6e3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBpbXBsZW1lbnRzIjthOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AY29uc3RhbnRzIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcHJvcGVydGllcyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAG1ldGhvZHMiO2E6NTp7czo1OToiXFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXEludGVybmFsXEV4cG9ydGVyOjpwcmVwYXJlKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YTo1OntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NjoidmFsdWVzIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO31pOjE7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6MTE6Im9iamVjdHNQb29sIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO31pOjI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6ODoicmVmc1Bvb2wiO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MTtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MztPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czoxMjoib2JqZWN0c0NvdW50IjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjE7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO31pOjQ7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6MTU6InZhbHVlc0FyZVN0YXRpYyI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjoxO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6Mzg7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6OTQwO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjIwMTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTo4NzYyO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjU5OiJcU3ltZm9ueVxDb21wb25lbnRcVmFyRXhwb3J0ZXJcSW50ZXJuYWxcRXhwb3J0ZXI6OnByZXBhcmUoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjc6InByZXBhcmUiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo0NDoiUHJlcGFyZXMgYW4gYXJyYXkgb2YgdmFsdWVzIGZvciBWYXJFeHBvcnRlci4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6NjA6IkZvciBwZXJmb3JtYW5jZSB0aGlzIG1ldGhvZCBpcyBwdWJsaWMgYW5kIGhhcyBubyB0eXBlLWhpbnRzLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjc6e2k6MDtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6NzoiACoAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFycmF5XyI6Mzp7czoxMjoiACoAdmFsdWVUeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czoxMDoiACoAa2V5VHlwZSI7TjtzOjE3OiIAKgBkZWZhdWx0S2V5VHlwZSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbXBvdW5kIjoyOntzOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHR5cGVzIjthOjI6e2k6MDtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fWk6MTtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fX1zOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHRva2VuIjtzOjE6InwiO319czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czo2OiJ2YWx1ZXMiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjE7fWk6MTtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjE3OiJcU3BsT2JqZWN0U3RvcmFnZSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE2OiJTcGxPYmplY3RTdG9yYWdlIjt9fXM6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6MTE6Im9iamVjdHNQb29sIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNWYXJpYWRpYyI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1JlZmVyZW5jZSI7YjowO31pOjI7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjc6IgAqAHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBcnJheV8iOjM6e3M6MTI6IgAqAHZhbHVlVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6MTA6IgAqAGtleVR5cGUiO047czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fXM6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6ODoicmVmc1Bvb2wiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjE7fWk6MztPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e31zOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjEyOiJvYmplY3RzQ291bnQiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjE7fWk6NDtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEJvb2xlYW4iOjA6e31zOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjE1OiJ2YWx1ZXNBcmVTdGF0aWMiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjE7fWk6NTtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xSZXR1cm5fIjozOntzOjc6IgAqAG5hbWUiO3M6NjoicmV0dXJuIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6NzoiACoAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFycmF5XyI6Mzp7czoxMjoiACoAdmFsdWVUeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czoxMDoiACoAa2V5VHlwZSI7TjtzOjE3OiIAKgBkZWZhdWx0S2V5VHlwZSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbXBvdW5kIjoyOntzOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHR5cGVzIjthOjI6e2k6MDtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fWk6MTtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fX1zOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHRva2VuIjtzOjE6InwiO319fWk6NjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xUaHJvd3MiOjM6e3M6NzoiACoAbmFtZSI7czo2OiJ0aHJvd3MiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjMzOiJXaGVuIGEgdmFsdWUgY2Fubm90IGJlIHNlcmlhbGl6ZWQiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjY5OiJcU3ltZm9ueVxDb21wb25lbnRcVmFyRXhwb3J0ZXJcRXhjZXB0aW9uXE5vdEluc3RhbnRpYWJsZVR5cGVFeGNlcHRpb24iO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoyODoiTm90SW5zdGFudGlhYmxlVHlwZUV4Y2VwdGlvbiI7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQiOjI6e3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2UiO3M6Mzg6IlN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXEludGVybmFsIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlQWxpYXNlcyI7YToxOntzOjI4OiJOb3RJbnN0YW50aWFibGVUeXBlRXhjZXB0aW9uIjtzOjY4OiJTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlclxFeGNlcHRpb25cTm90SW5zdGFudGlhYmxlVHlwZUV4Y2VwdGlvbiI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MTtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319czo1ODoiXFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXEludGVybmFsXEV4cG9ydGVyOjpleHBvcnQoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEzOntzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjI6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo1OiJ2YWx1ZSI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToxO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjY6ImluZGVudCI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uIjoyOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uAGV4cHJlc3Npb24iO3M6MjoiJyciO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEV4cHJlc3Npb24AcGFydHMiO2E6MDp7fX1zOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MjAzO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjg3Njk7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MzA0O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjEyNzc3O31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjU4OiJcU3ltZm9ueVxDb21wb25lbnRcVmFyRXhwb3J0ZXJcSW50ZXJuYWxcRXhwb3J0ZXI6OmV4cG9ydCgpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NjoiZXhwb3J0Ijt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjE7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fXM6NjY6IlxTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlclxJbnRlcm5hbFxFeHBvcnRlcjo6ZXhwb3J0UmVnaXN0cnkoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEzOntzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjM6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NDg6IlxTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlclxJbnRlcm5hbFxSZWdpc3RyeSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjg6IlJlZ2lzdHJ5Ijt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NToidmFsdWUiO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MTtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NjoiaW5kZW50IjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO31pOjI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjk6InN1YkluZGVudCI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MzA2O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjEyNzg0O31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjM3NjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToxNTU2Mjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NjY6IlxTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlclxJbnRlcm5hbFxFeHBvcnRlcjo6ZXhwb3J0UmVnaXN0cnkoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE0OiJleHBvcnRSZWdpc3RyeSI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo3OiJwcml2YXRlIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MTtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319czo2NjoiXFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXEludGVybmFsXEV4cG9ydGVyOjpleHBvcnRIeWRyYXRvcigpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTM6e3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6Mzp7aTowO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo0ODoiXFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXEludGVybmFsXEh5ZHJhdG9yIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6ODoiSHlkcmF0b3IiO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo1OiJ2YWx1ZSI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToxO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo2OiJpbmRlbnQiO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6OToic3ViSW5kZW50IjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTozNzg7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MTU1Njk7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6Mzk0O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjE2MzEzO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo2NjoiXFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXEludGVybmFsXEV4cG9ydGVyOjpleHBvcnRIeWRyYXRvcigpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTQ6ImV4cG9ydEh5ZHJhdG9yIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjc6InByaXZhdGUiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO047czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjoxO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGF0dHJpYnV0ZXMiO2E6MDp7fX1zOjc2OiJcU3ltZm9ueVxDb21wb25lbnRcVmFyRXhwb3J0ZXJcSW50ZXJuYWxcRXhwb3J0ZXI6OmdldEFycmF5T2JqZWN0UHJvcGVydGllcygpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTM6e3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6Mjp7aTowO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjU6InZhbHVlIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO31pOjE7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NToicHJvdG8iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjQwMDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToxNjQzNDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo0MzM7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MTc3NjY7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQXJyYXlfIjozOntzOjEyOiIAKgB2YWx1ZVR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjEwOiIAKgBrZXlUeXBlIjtOO3M6MTc6IgAqAGRlZmF1bHRLZXlUeXBlIjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29tcG91bmQiOjI6e3M6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdHlwZXMiO2E6Mjp7aTowO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9aToxO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9fXM6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdG9rZW4iO3M6MToifCI7fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo3NjoiXFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXEludGVybmFsXEV4cG9ydGVyOjpnZXRBcnJheU9iamVjdFByb3BlcnRpZXMoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjI0OiJnZXRBcnJheU9iamVjdFByb3BlcnRpZXMiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NzoicHJpdmF0ZSI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6MDoiIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjI6e2k6MDtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6NzoiACoAdHlwZSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbXBvdW5kIjoyOntzOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHR5cGVzIjthOjI6e2k6MDtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6MTQ6IlxBcnJheUl0ZXJhdG9yIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTM6IkFycmF5SXRlcmF0b3IiO319aToxO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoxMjoiXEFycmF5T2JqZWN0IjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTE6IkFycmF5T2JqZWN0Ijt9fX1zOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHRva2VuIjtzOjE6InwiO31zOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjU6InZhbHVlIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNWYXJpYWRpYyI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1JlZmVyZW5jZSI7YjowO31pOjE7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjc6IgAqAHR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjE0OiJcQXJyYXlJdGVyYXRvciI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjEzOiJBcnJheUl0ZXJhdG9yIjt9fWk6MTtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6MTI6IlxBcnJheU9iamVjdCI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjExOiJBcnJheU9iamVjdCI7fX19czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czo1OiJwcm90byI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDt9fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7cjoxNTA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjE7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fX1zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AdXNlZFRyYWl0cyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyMTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjQzNDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo0ODoiXFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXEludGVybmFsXEV4cG9ydGVyIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6ODoiRXhwb3J0ZXIiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjA6IiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToyOntpOjA7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yIjo0OntzOjc6IgAqAG5hbWUiO3M6NjoiYXV0aG9yIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7TjtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yAGF1dGhvck5hbWUiO3M6MTQ6Ik5pY29sYXMgR3Jla2FzIjtzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yAGF1dGhvckVtYWlsIjtzOjEzOiJwQHRjaHdvcmsuY29tIjt9aToxO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEdlbmVyaWMiOjI6e3M6NzoiACoAbmFtZSI7czo4OiJpbnRlcm5hbCI7czoxNDoiACoAZGVzY3JpcHRpb24iO047fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6MTUwO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHBhcmVudCI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZmluYWwiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcmVhZE9ubHkiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBhdHRyaWJ1dGVzIjthOjA6e319fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaW50ZXJmYWNlcyI7YTowOnt9czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQB0cmFpdHMiO2E6MDp7fXM6NDA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZW51bXMiO2E6MDp7fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaGFzaCI7czozMjoiMDkzZGZhOGJiZGUzMGVhMTA4MDE2ZWU1MGIzMWZmMzAiO3M6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAcGF0aCI7czo0OToidmVuZG9yL3N5bWZvbnkvdmFyLWV4cG9ydGVyL0ludGVybmFsL0V4cG9ydGVyLnBocCI7czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBzb3VyY2UiO3M6MTc3NzA6Ijw/cGhwCgovKgogKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgU3ltZm9ueSBwYWNrYWdlLgogKgogKiAoYykgRmFiaWVuIFBvdGVuY2llciA8ZmFiaWVuQHN5bWZvbnkuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgU3ltZm9ueVxDb21wb25lbnRcVmFyRXhwb3J0ZXJcSW50ZXJuYWw7Cgp1c2UgU3ltZm9ueVxDb21wb25lbnRcVmFyRXhwb3J0ZXJcRXhjZXB0aW9uXE5vdEluc3RhbnRpYWJsZVR5cGVFeGNlcHRpb247CgovKioKICogQGF1dGhvciBOaWNvbGFzIEdyZWthcyA8cEB0Y2h3b3JrLmNvbT4KICoKICogQGludGVybmFsCiAqLwpjbGFzcyBFeHBvcnRlcgp7CiAgICAvKioKICAgICAqIFByZXBhcmVzIGFuIGFycmF5IG9mIHZhbHVlcyBmb3IgVmFyRXhwb3J0ZXIuCiAgICAgKgogICAgICogRm9yIHBlcmZvcm1hbmNlIHRoaXMgbWV0aG9kIGlzIHB1YmxpYyBhbmQgaGFzIG5vIHR5cGUtaGludHMuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICYkdmFsdWVzCiAgICAgKiBAcGFyYW0gXFNwbE9iamVjdFN0b3JhZ2UgJG9iamVjdHNQb29sCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgJiRyZWZzUG9vbAogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAgICYkb2JqZWN0c0NvdW50CiAgICAgKiBAcGFyYW0gYm9vbCAgICAgICAgICAgICAgJiR2YWx1ZXNBcmVTdGF0aWMKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKgogICAgICogQHRocm93cyBOb3RJbnN0YW50aWFibGVUeXBlRXhjZXB0aW9uIFdoZW4gYSB2YWx1ZSBjYW5ub3QgYmUgc2VyaWFsaXplZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHByZXBhcmUoJHZhbHVlcywgJG9iamVjdHNQb29sLCAmJHJlZnNQb29sLCAmJG9iamVjdHNDb3VudCwgJiR2YWx1ZXNBcmVTdGF0aWMpCiAgICB7CiAgICAgICAgJHJlZnMgPSAkdmFsdWVzOwogICAgICAgIGZvcmVhY2ggKCR2YWx1ZXMgYXMgJGsgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgIGlmIChcaXNfcmVzb3VyY2UoJHZhbHVlKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEluc3RhbnRpYWJsZVR5cGVFeGNlcHRpb24oZ2V0X3Jlc291cmNlX3R5cGUoJHZhbHVlKS4nIHJlc291cmNlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHJlZnNbJGtdID0gJG9iamVjdHNQb29sOwoKICAgICAgICAgICAgaWYgKCRpc1JlZiA9ICEkdmFsdWVJc1N0YXRpYyA9ICR2YWx1ZXNbJGtdICE9PSAkb2JqZWN0c1Bvb2wpIHsKICAgICAgICAgICAgICAgICR2YWx1ZXNbJGtdID0gJiR2YWx1ZTsgLy8gQnJlYWsgaGFyZCByZWZlcmVuY2VzIHRvIG1ha2UgJHZhbHVlcyBjb21wbGV0ZWx5CiAgICAgICAgICAgICAgICB1bnNldCgkdmFsdWUpOyAgICAgICAgIC8vIGluZGVwZW5kZW50IGZyb20gdGhlIG9yaWdpbmFsIHN0cnVjdHVyZQogICAgICAgICAgICAgICAgJHJlZnNbJGtdID0gJHZhbHVlID0gJHZhbHVlc1ska107CiAgICAgICAgICAgICAgICBpZiAoJHZhbHVlIGluc3RhbmNlb2YgUmVmZXJlbmNlICYmIDAgPiAkdmFsdWUtPmlkKSB7CiAgICAgICAgICAgICAgICAgICAgJHZhbHVlc0FyZVN0YXRpYyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICsrJHZhbHVlLT5jb3VudDsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRyZWZzUG9vbFtdID0gWyYkcmVmc1ska10sICR2YWx1ZSwgJiR2YWx1ZV07CiAgICAgICAgICAgICAgICAkcmVmc1ska10gPSAkdmFsdWVzWyRrXSA9IG5ldyBSZWZlcmVuY2UoLVxjb3VudCgkcmVmc1Bvb2wpLCAkdmFsdWUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoXGlzX2FycmF5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgIGlmICgkdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSBzZWxmOjpwcmVwYXJlKCR2YWx1ZSwgJG9iamVjdHNQb29sLCAkcmVmc1Bvb2wsICRvYmplY3RzQ291bnQsICR2YWx1ZUlzU3RhdGljKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdvdG8gaGFuZGxlX3ZhbHVlOwogICAgICAgICAgICB9IGVsc2VpZiAoIVxpc19vYmplY3QoJHZhbHVlKSB8fCAkdmFsdWUgaW5zdGFuY2VvZiBcVW5pdEVudW0pIHsKICAgICAgICAgICAgICAgIGdvdG8gaGFuZGxlX3ZhbHVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdmFsdWVJc1N0YXRpYyA9IGZhbHNlOwogICAgICAgICAgICBpZiAoaXNzZXQoJG9iamVjdHNQb29sWyR2YWx1ZV0pKSB7CiAgICAgICAgICAgICAgICArKyRvYmplY3RzQ291bnQ7CiAgICAgICAgICAgICAgICAkdmFsdWUgPSBuZXcgUmVmZXJlbmNlKCRvYmplY3RzUG9vbFskdmFsdWVdWzBdKTsKICAgICAgICAgICAgICAgIGdvdG8gaGFuZGxlX3ZhbHVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHZhbHVlIGluc3RhbmNlb2YgXENsb3N1cmUgJiYgISgkciA9IG5ldyBcUmVmbGVjdGlvbkZ1bmN0aW9uKCR2YWx1ZSkpLT5pc0Fub255bW91cygpKSB7CiAgICAgICAgICAgICAgICAkY2FsbGFibGUgPSBbJHItPmdldENsb3N1cmVUaGlzKCkgPz8gJHItPmdldENsb3N1cmVDYWxsZWRDbGFzcygpPy0+bmFtZSwgJHItPm5hbWVdOwogICAgICAgICAgICAgICAgJHIgPSAkY2FsbGFibGVbMF0gPyBuZXcgXFJlZmxlY3Rpb25NZXRob2QoLi4uJGNhbGxhYmxlKSA6IG51bGw7CiAgICAgICAgICAgICAgICAkdmFsdWUgPSBuZXcgTmFtZWRDbG9zdXJlKHNlbGY6OnByZXBhcmUoJGNhbGxhYmxlLCAkb2JqZWN0c1Bvb2wsICRyZWZzUG9vbCwgJG9iamVjdHNDb3VudCwgJHZhbHVlSXNTdGF0aWMpLCAkcik7CgogICAgICAgICAgICAgICAgZ290byBoYW5kbGVfdmFsdWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRjbGFzcyA9ICR2YWx1ZTo6Y2xhc3M7CiAgICAgICAgICAgICRyZWZsZWN0b3IgPSBSZWdpc3RyeTo6JHJlZmxlY3RvcnNbJGNsYXNzXSA/Pz0gUmVnaXN0cnk6OmdldENsYXNzUmVmbGVjdG9yKCRjbGFzcyk7CiAgICAgICAgICAgICRwcm9wZXJ0aWVzID0gW107CiAgICAgICAgICAgICRzbGVlcCA9IG51bGw7CiAgICAgICAgICAgICRwcm90byA9IFJlZ2lzdHJ5OjokcHJvdG90eXBlc1skY2xhc3NdOwoKICAgICAgICAgICAgaWYgKCRyZWZsZWN0b3ItPmhhc01ldGhvZCgnX19zZXJpYWxpemUnKSkgewogICAgICAgICAgICAgICAgaWYgKCEkcmVmbGVjdG9yLT5nZXRNZXRob2QoJ19fc2VyaWFsaXplJyktPmlzUHVibGljKCkpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEVycm9yKFxzcHJpbnRmKCdDYWxsIHRvICVzIG1ldGhvZCAiJXM6Ol9fc2VyaWFsaXplKCkiLicsICRyZWZsZWN0b3ItPmdldE1ldGhvZCgnX19zZXJpYWxpemUnKS0+aXNQcm90ZWN0ZWQoKSA/ICdwcm90ZWN0ZWQnIDogJ3ByaXZhdGUnLCAkY2xhc3MpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoIVxpc19hcnJheSgkYXJyYXlWYWx1ZSA9ICR2YWx1ZS0+X19zZXJpYWxpemUoKSkpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFR5cGVFcnJvcigkY2xhc3MuJzo6X19zZXJpYWxpemUoKSBtdXN0IHJldHVybiBhbiBhcnJheScpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkcmVmbGVjdG9yLT5oYXNNZXRob2QoJ19fdW5zZXJpYWxpemUnKSkgewogICAgICAgICAgICAgICAgICAgICRwcm9wZXJ0aWVzID0gJGFycmF5VmFsdWU7CiAgICAgICAgICAgICAgICAgICAgZ290byBwcmVwYXJlX3ZhbHVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2VpZiAoKCR2YWx1ZSBpbnN0YW5jZW9mIFxBcnJheUl0ZXJhdG9yIHx8ICR2YWx1ZSBpbnN0YW5jZW9mIFxBcnJheU9iamVjdCkgJiYgbnVsbCAhPT0gJHByb3RvKSB7CiAgICAgICAgICAgICAgICAvLyBBcnJheUl0ZXJhdG9yIGFuZCBBcnJheU9iamVjdCBuZWVkIHNwZWNpYWwgY2FyZSBiZWNhdXNlIHRoZWlyICJmbGFncyIKICAgICAgICAgICAgICAgIC8vIG9wdGlvbiBjaGFuZ2VzIHRoZSBiZWhhdmlvciBvZiB0aGUgKGFycmF5KSBjYXN0aW5nIG9wZXJhdG9yLgogICAgICAgICAgICAgICAgWyRhcnJheVZhbHVlLCAkcHJvcGVydGllc10gPSBzZWxmOjpnZXRBcnJheU9iamVjdFByb3BlcnRpZXMoJHZhbHVlLCAkcHJvdG8pOwoKICAgICAgICAgICAgICAgIC8vIHBvcHVsYXRlcyBSZWdpc3RyeTo6JHByb3RvdHlwZXNbJGNsYXNzXSB3aXRoIGEgbmV3IGluc3RhbmNlCiAgICAgICAgICAgICAgICBSZWdpc3RyeTo6Z2V0Q2xhc3NSZWZsZWN0b3IoJGNsYXNzLCBSZWdpc3RyeTo6JGluc3RhbnRpYWJsZVdpdGhvdXRDb25zdHJ1Y3RvclskY2xhc3NdLCBSZWdpc3RyeTo6JGNsb25lYWJsZVskY2xhc3NdKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCR2YWx1ZSBpbnN0YW5jZW9mIFxTcGxPYmplY3RTdG9yYWdlICYmIFJlZ2lzdHJ5OjokY2xvbmVhYmxlWyRjbGFzc10gJiYgbnVsbCAhPT0gJHByb3RvKSB7CiAgICAgICAgICAgICAgICAvLyBCeSBpbXBsZW1lbnRpbmcgU2VyaWFsaXphYmxlLCBTcGxPYmplY3RTdG9yYWdlIGJyZWFrcwogICAgICAgICAgICAgICAgLy8gaW50ZXJuYWwgcmVmZXJlbmNlczsgbGV0J3MgZGVhbCB3aXRoIGl0IG9uIG91ciBvd24uCiAgICAgICAgICAgICAgICBmb3JlYWNoIChjbG9uZSAkdmFsdWUgYXMgJHYpIHsKICAgICAgICAgICAgICAgICAgICAkcHJvcGVydGllc1tdID0gJHY7CiAgICAgICAgICAgICAgICAgICAgJHByb3BlcnRpZXNbXSA9ICR2YWx1ZVskdl07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcHJvcGVydGllcyA9IFsnU3BsT2JqZWN0U3RvcmFnZScgPT4gWyJcMCIgPT4gJHByb3BlcnRpZXNdXTsKICAgICAgICAgICAgICAgICRhcnJheVZhbHVlID0gKGFycmF5KSAkdmFsdWU7CiAgICAgICAgICAgIH0gZWxzZWlmICgkdmFsdWUgaW5zdGFuY2VvZiBcU2VyaWFsaXphYmxlIHx8ICR2YWx1ZSBpbnN0YW5jZW9mIFxfX1BIUF9JbmNvbXBsZXRlX0NsYXNzKSB7CiAgICAgICAgICAgICAgICArKyRvYmplY3RzQ291bnQ7CiAgICAgICAgICAgICAgICAkb2JqZWN0c1Bvb2xbJHZhbHVlXSA9IFskaWQgPSBcY291bnQoJG9iamVjdHNQb29sKSwgc2VyaWFsaXplKCR2YWx1ZSksIFtdLCAwXTsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IG5ldyBSZWZlcmVuY2UoJGlkKTsKICAgICAgICAgICAgICAgIGdvdG8gaGFuZGxlX3ZhbHVlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKG1ldGhvZF9leGlzdHMoJGNsYXNzLCAnX19zbGVlcCcpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFcaXNfYXJyYXkoJHNsZWVwID0gJHZhbHVlLT5fX3NsZWVwKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJfZXJyb3IoJ3NlcmlhbGl6ZSgpOiBfX3NsZWVwIHNob3VsZCByZXR1cm4gYW4gYXJyYXkgb25seSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBpbnN0YW5jZS12YXJpYWJsZXMgdG8gc2VyaWFsaXplJywgXEVfVVNFUl9OT1RJQ0UpOwogICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGhhbmRsZV92YWx1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHNsZWVwID0gYXJyYXlfZmxpcCgkc2xlZXApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRhcnJheVZhbHVlID0gKGFycmF5KSAkdmFsdWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwcm90byA9IChhcnJheSkgJHByb3RvOwoKICAgICAgICAgICAgZm9yZWFjaCAoJGFycmF5VmFsdWUgYXMgJG5hbWUgPT4gJHYpIHsKICAgICAgICAgICAgICAgICRpID0gMDsKICAgICAgICAgICAgICAgICRuID0gKHN0cmluZykgJG5hbWU7CiAgICAgICAgICAgICAgICBpZiAoJycgPT09ICRuIHx8ICJcMCIgIT09ICRuWzBdKSB7CiAgICAgICAgICAgICAgICAgICAgJHBhcmVudCA9ICRyZWZsZWN0b3I7CiAgICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICAgICAkcCA9ICRwYXJlbnQtPmhhc1Byb3BlcnR5KCRuKSA/ICRwYXJlbnQtPmdldFByb3BlcnR5KCRuKSA6IG51bGw7CiAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoISRwICYmICRwYXJlbnQgPSAkcGFyZW50LT5nZXRQYXJlbnRDbGFzcygpKTsKCiAgICAgICAgICAgICAgICAgICAgJGMgPSAkcCAmJiAoISRwLT5pc1B1YmxpYygpIHx8IChcUEhQX1ZFUlNJT05fSUQgPj0gODA0MDAgPyAkcC0+aXNQcm90ZWN0ZWRTZXQoKSB8fCAkcC0+aXNQcml2YXRlU2V0KCkgOiAkcC0+aXNSZWFkT25seSgpKSkgPyAkcC0+Y2xhc3MgOiAnc3RkQ2xhc3MnOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCcqJyA9PT0gJG5bMV0pIHsKICAgICAgICAgICAgICAgICAgICAkbiA9IHN1YnN0cigkbiwgMyk7CiAgICAgICAgICAgICAgICAgICAgJGMgPSAkcmVmbGVjdG9yLT5nZXRQcm9wZXJ0eSgkbiktPmNsYXNzOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkaSA9IHN0cnBvcygkbiwgIlwwIiwgMik7CiAgICAgICAgICAgICAgICAgICAgJGMgPSBzdWJzdHIoJG4sIDEsICRpIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgJG4gPSBzdWJzdHIoJG4sIDEgKyAkaSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gJHNsZWVwKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc3NldCgkc2xlZXBbJG5hbWVdKSAmJiAoIWlzc2V0KCRzbGVlcFskbl0pIHx8ICgkaSAmJiAkYyAhPT0gJGNsYXNzKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGFycmF5VmFsdWVbJG5hbWVdKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHVuc2V0KCRzbGVlcFskbmFtZV0sICRzbGVlcFskbl0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCJceDAwRXJyb3JceDAwdHJhY2UiID09PSAkbmFtZSB8fCAiXHgwMEV4Y2VwdGlvblx4MDB0cmFjZSIgPT09ICRuYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgJHByb3BlcnRpZXNbJGNdWyRuXSA9ICR2OwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCFcYXJyYXlfa2V5X2V4aXN0cygkbmFtZSwgJHByb3RvKSB8fCAkcHJvdG9bJG5hbWVdICE9PSAkdikgewogICAgICAgICAgICAgICAgICAgICRwcm9wZXJ0aWVzW21hdGNoICgkYykgewogICAgICAgICAgICAgICAgICAgICAgICAnRXJyb3InID0+ICdUeXBlRXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICAnRXhjZXB0aW9uJyA9PiAnRXJyb3JFeGNlcHRpb24nLAogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0ID0+ICRjLAogICAgICAgICAgICAgICAgICAgIH1dWyRuXSA9ICR2OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkc2xlZXApIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRzbGVlcCBhcyAkbiA9PiAkdikgewogICAgICAgICAgICAgICAgICAgIHRyaWdnZXJfZXJyb3IoXHNwcmludGYoJ3NlcmlhbGl6ZSgpOiAiJXMiIHJldHVybmVkIGFzIG1lbWJlciB2YXJpYWJsZSBmcm9tIF9fc2xlZXAoKSBidXQgZG9lcyBub3QgZXhpc3QnLCAkbiksIFxFX1VTRVJfTk9USUNFKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAobWV0aG9kX2V4aXN0cygkY2xhc3MsICdfX3Vuc2VyaWFsaXplJykpIHsKICAgICAgICAgICAgICAgICRwcm9wZXJ0aWVzID0gJGFycmF5VmFsdWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHByZXBhcmVfdmFsdWU6CiAgICAgICAgICAgICRvYmplY3RzUG9vbFskdmFsdWVdID0gWyRpZCA9IFxjb3VudCgkb2JqZWN0c1Bvb2wpXTsKICAgICAgICAgICAgJHByb3BlcnRpZXMgPSBzZWxmOjpwcmVwYXJlKCRwcm9wZXJ0aWVzLCAkb2JqZWN0c1Bvb2wsICRyZWZzUG9vbCwgJG9iamVjdHNDb3VudCwgJHZhbHVlSXNTdGF0aWMpOwogICAgICAgICAgICArKyRvYmplY3RzQ291bnQ7CiAgICAgICAgICAgICRvYmplY3RzUG9vbFskdmFsdWVdID0gWyRpZCwgJGNsYXNzLCAkcHJvcGVydGllcywgbWV0aG9kX2V4aXN0cygkY2xhc3MsICdfX3Vuc2VyaWFsaXplJykgPyAtJG9iamVjdHNDb3VudCA6IChtZXRob2RfZXhpc3RzKCRjbGFzcywgJ19fd2FrZXVwJykgPyAkb2JqZWN0c0NvdW50IDogMCldOwoKICAgICAgICAgICAgJHZhbHVlID0gbmV3IFJlZmVyZW5jZSgkaWQpOwoKICAgICAgICAgICAgaGFuZGxlX3ZhbHVlOgogICAgICAgICAgICBpZiAoJGlzUmVmKSB7CiAgICAgICAgICAgICAgICB1bnNldCgkdmFsdWUpOyAvLyBCcmVhayB0aGUgaGFyZCByZWZlcmVuY2UgY3JlYXRlZCBhYm92ZQogICAgICAgICAgICB9IGVsc2VpZiAoISR2YWx1ZUlzU3RhdGljKSB7CiAgICAgICAgICAgICAgICAkdmFsdWVzWyRrXSA9ICR2YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdmFsdWVzQXJlU3RhdGljID0gJHZhbHVlSXNTdGF0aWMgJiYgJHZhbHVlc0FyZVN0YXRpYzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdmFsdWVzOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZXhwb3J0KCR2YWx1ZSwgJGluZGVudCA9ICcnKQogICAgewogICAgICAgIHN3aXRjaCAodHJ1ZSkgewogICAgICAgICAgICBjYXNlIFxpc19pbnQoJHZhbHVlKSB8fCBcaXNfZmxvYXQoJHZhbHVlKTogcmV0dXJuIHZhcl9leHBvcnQoJHZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgY2FzZSBbXSA9PT0gJHZhbHVlOiByZXR1cm4gJ1tdJzsKICAgICAgICAgICAgY2FzZSBmYWxzZSA9PT0gJHZhbHVlOiByZXR1cm4gJ2ZhbHNlJzsKICAgICAgICAgICAgY2FzZSB0cnVlID09PSAkdmFsdWU6IHJldHVybiAndHJ1ZSc7CiAgICAgICAgICAgIGNhc2UgbnVsbCA9PT0gJHZhbHVlOiByZXR1cm4gJ251bGwnOwogICAgICAgICAgICBjYXNlICcnID09PSAkdmFsdWU6IHJldHVybiAiJyciOwogICAgICAgICAgICBjYXNlICR2YWx1ZSBpbnN0YW5jZW9mIFxVbml0RW51bTogcmV0dXJuICdcXCcubHRyaW0odmFyX2V4cG9ydCgkdmFsdWUsIHRydWUpLCAnXFwnKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdmFsdWUgaW5zdGFuY2VvZiBSZWZlcmVuY2UpIHsKICAgICAgICAgICAgaWYgKDAgPD0gJHZhbHVlLT5pZCkgewogICAgICAgICAgICAgICAgcmV0dXJuICckb1snLiR2YWx1ZS0+aWQuJ10nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghJHZhbHVlLT5jb3VudCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmV4cG9ydCgkdmFsdWUtPnZhbHVlLCAkaW5kZW50KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdmFsdWUgPSAtJHZhbHVlLT5pZDsKCiAgICAgICAgICAgIHJldHVybiAnJiRyWycuJHZhbHVlLiddJzsKICAgICAgICB9CiAgICAgICAgJHN1YkluZGVudCA9ICRpbmRlbnQuJyAgICAnOwoKICAgICAgICBpZiAoJHZhbHVlIGluc3RhbmNlb2YgTmFtZWRDbG9zdXJlKSB7CiAgICAgICAgICAgIGlmICgkdmFsdWUtPm1ldGhvZD8tPmlzUHVibGljKCkgPz8gdHJ1ZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gJHZhbHVlLT5jYWxsYWJsZVswXSA9PiAnXFwnLiR2YWx1ZS0+Y2FsbGFibGVbMV0sCiAgICAgICAgICAgICAgICAgICAgXGlzX3N0cmluZygkdmFsdWUtPmNhbGxhYmxlWzBdKSA9PiAnXFwnLiR2YWx1ZS0+Y2FsbGFibGVbMF0uJzo6Jy4kdmFsdWUtPmNhbGxhYmxlWzFdLAogICAgICAgICAgICAgICAgICAgIFxpc19vYmplY3QoJHZhbHVlLT5jYWxsYWJsZVswXSkgPT4gc2VsZjo6ZXhwb3J0KCR2YWx1ZS0+Y2FsbGFibGVbMF0sICRzdWJJbmRlbnQpLictPicuJHZhbHVlLT5jYWxsYWJsZVsxXSwKICAgICAgICAgICAgICAgIH0uJyguLi4pJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICduZXcgXFJlZmxlY3Rpb25NZXRob2QoXFwnLiR2YWx1ZS0+bWV0aG9kLT5jbGFzcy4nOjpjbGFzcywgJy5zZWxmOjpleHBvcnQoJHZhbHVlLT5jYWxsYWJsZVsxXSkuJyknCiAgICAgICAgICAgICAgICAuJy0+Z2V0Q2xvc3VyZSgnLihcaXNfb2JqZWN0KCR2YWx1ZS0+Y2FsbGFibGVbMF0pID8gc2VsZjo6ZXhwb3J0KCR2YWx1ZS0+Y2FsbGFibGVbMF0pIDogJycpLicpJzsKICAgICAgICB9CgogICAgICAgIGlmIChcaXNfc3RyaW5nKCR2YWx1ZSkpIHsKICAgICAgICAgICAgJGNvZGUgPSBcc3ByaW50ZigiJyVzJyIsIGFkZGNzbGFzaGVzKCR2YWx1ZSwgIidcXCIpKTsKCiAgICAgICAgICAgICRjb2RlID0gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCIvKCg/OltcXDBcXHJcXG5dfFx1ezIwMkF9fFx1ezIwMkJ9fFx1ezIwMkR9fFx1ezIwMkV9fFx1ezIwNjZ9fFx1ezIwNjd9fFx1ezIwNjh9fFx1ezIwMkN9fFx1ezIwNjl9KSsrKSguKS8iLCBmdW5jdGlvbiAoJG0pIHVzZSAoJHN1YkluZGVudCkgewogICAgICAgICAgICAgICAgJG1bMV0gPSBcc3ByaW50ZignXCcuIiVzIi5cJycsIHN0cl9yZXBsYWNlKAogICAgICAgICAgICAgICAgICAgIFsiXDAiLCAiXHIiLCAiXG4iLCAiXHV7MjAyQX0iLCAiXHV7MjAyQn0iLCAiXHV7MjAyRH0iLCAiXHV7MjAyRX0iLCAiXHV7MjA2Nn0iLCAiXHV7MjA2N30iLCAiXHV7MjA2OH0iLCAiXHV7MjAyQ30iLCAiXHV7MjA2OX0iLCAnXG5cXCddLAogICAgICAgICAgICAgICAgICAgIFsnXDAnLCAnXHInLCAnXG4nLCAnXHV7MjAyQX0nLCAnXHV7MjAyQn0nLCAnXHV7MjAyRH0nLCAnXHV7MjAyRX0nLCAnXHV7MjA2Nn0nLCAnXHV7MjA2N30nLCAnXHV7MjA2OH0nLCAnXHV7MjAyQ30nLCAnXHV7MjA2OX0nLCAnXG4iJy4iXG4iLiRzdWJJbmRlbnQuJy4iXFwnXSwKICAgICAgICAgICAgICAgICAgICAkbVsxXQogICAgICAgICAgICAgICAgKSk7CgogICAgICAgICAgICAgICAgaWYgKCInIiA9PT0gJG1bMl0pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3Vic3RyKCRtWzFdLCAwLCAtMik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKHN0cl9lbmRzX3dpdGgoJG1bMV0sICduIi5cJycpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1YnN0cl9yZXBsYWNlKCRtWzFdLCAiXG4iLiRzdWJJbmRlbnQuIi4nIi4kbVsyXSwgLTIpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAkbVsxXS4kbVsyXTsKICAgICAgICAgICAgfSwgJGNvZGUsIC0xLCAkY291bnQpOwoKICAgICAgICAgICAgaWYgKCRjb3VudCAmJiBzdHJfc3RhcnRzX3dpdGgoJGNvZGUsICInJy4iKSkgewogICAgICAgICAgICAgICAgJGNvZGUgPSBzdWJzdHIoJGNvZGUsIDMpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJGNvZGU7CiAgICAgICAgfQoKICAgICAgICBpZiAoXGlzX2FycmF5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgJGogPSAtMTsKICAgICAgICAgICAgJGNvZGUgPSAnJzsKICAgICAgICAgICAgZm9yZWFjaCAoJHZhbHVlIGFzICRrID0+ICR2KSB7CiAgICAgICAgICAgICAgICAkY29kZSAuPSAkc3ViSW5kZW50OwogICAgICAgICAgICAgICAgaWYgKCFcaXNfaW50KCRrKSB8fCAxICE9PSAkayAtICRqKSB7CiAgICAgICAgICAgICAgICAgICAgJGNvZGUgLj0gc2VsZjo6ZXhwb3J0KCRrLCAkc3ViSW5kZW50KS4nID0+ICc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoXGlzX2ludCgkaykgJiYgJGsgPiAkaikgewogICAgICAgICAgICAgICAgICAgICRqID0gJGs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkY29kZSAuPSBzZWxmOjpleHBvcnQoJHYsICRzdWJJbmRlbnQpLiIsXG4iOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gIltcbiIuJGNvZGUuJGluZGVudC4nXSc7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHZhbHVlIGluc3RhbmNlb2YgVmFsdWVzKSB7CiAgICAgICAgICAgICRjb2RlID0gJHN1YkluZGVudC4iXCRyID0gW10sXG4iOwogICAgICAgICAgICBmb3JlYWNoICgkdmFsdWUtPnZhbHVlcyBhcyAkayA9PiAkdikgewogICAgICAgICAgICAgICAgJGNvZGUgLj0gJHN1YkluZGVudC4nJHJbJy4kay4nXSA9ICcuc2VsZjo6ZXhwb3J0KCR2LCAkc3ViSW5kZW50KS4iLFxuIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICJbXG4iLiRjb2RlLiRpbmRlbnQuJ10nOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR2YWx1ZSBpbnN0YW5jZW9mIFJlZ2lzdHJ5KSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpleHBvcnRSZWdpc3RyeSgkdmFsdWUsICRpbmRlbnQsICRzdWJJbmRlbnQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR2YWx1ZSBpbnN0YW5jZW9mIEh5ZHJhdG9yKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpleHBvcnRIeWRyYXRvcigkdmFsdWUsICRpbmRlbnQsICRzdWJJbmRlbnQpOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxVbmV4cGVjdGVkVmFsdWVFeGNlcHRpb24oXHNwcmludGYoJ0Nhbm5vdCBleHBvcnQgdmFsdWUgb2YgdHlwZSAiJXMiLicsIGdldF9kZWJ1Z190eXBlKCR2YWx1ZSkpKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBleHBvcnRSZWdpc3RyeShSZWdpc3RyeSAkdmFsdWUsIHN0cmluZyAkaW5kZW50LCBzdHJpbmcgJHN1YkluZGVudCk6IHN0cmluZwogICAgewogICAgICAgICRjb2RlID0gJyc7CiAgICAgICAgJHNlcmlhbGl6YWJsZXMgPSBbXTsKICAgICAgICAkc2VlbiA9IFtdOwogICAgICAgICRwcm90b3R5cGVzQWNjZXNzID0gMDsKICAgICAgICAkZmFjdG9yaWVzQWNjZXNzID0gMDsKICAgICAgICAkciA9ICdcXCcuUmVnaXN0cnk6OmNsYXNzOwogICAgICAgICRqID0gLTE7CgogICAgICAgIGZvcmVhY2ggKCR2YWx1ZS0+Y2xhc3NlcyBhcyAkayA9PiAkY2xhc3MpIHsKICAgICAgICAgICAgaWYgKCc6JyA9PT0gKCRjbGFzc1sxXSA/PyBudWxsKSkgewogICAgICAgICAgICAgICAgJHNlcmlhbGl6YWJsZXNbJGtdID0gJGNsYXNzOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCFSZWdpc3RyeTo6JGluc3RhbnRpYWJsZVdpdGhvdXRDb25zdHJ1Y3RvclskY2xhc3NdKSB7CiAgICAgICAgICAgICAgICBpZiAoaXNfc3ViY2xhc3Nfb2YoJGNsYXNzLCAnU2VyaWFsaXphYmxlJykgJiYgIW1ldGhvZF9leGlzdHMoJGNsYXNzLCAnX191bnNlcmlhbGl6ZScpKSB7CiAgICAgICAgICAgICAgICAgICAgJHNlcmlhbGl6YWJsZXNbJGtdID0gJ0M6Jy5cc3RybGVuKCRjbGFzcykuJzoiJy4kY2xhc3MuJyI6MDp7fSc7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRzZXJpYWxpemFibGVzWyRrXSA9ICdPOicuXHN0cmxlbigkY2xhc3MpLic6IicuJGNsYXNzLiciOjA6e30nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGlzX3N1YmNsYXNzX29mKCRjbGFzcywgJ1Rocm93YWJsZScpKSB7CiAgICAgICAgICAgICAgICAgICAgJGVvbCA9IGlzX3N1YmNsYXNzX29mKCRjbGFzcywgJ0Vycm9yJykgPyAiXDBFcnJvclwwIiA6ICJcMEV4Y2VwdGlvblwwIjsKICAgICAgICAgICAgICAgICAgICAkc2VyaWFsaXphYmxlc1ska10gPSBzdWJzdHJfcmVwbGFjZSgkc2VyaWFsaXphYmxlc1ska10sICcxOntzOicuKDUgKyBcc3RybGVuKCRlb2wpKS4nOiInLiRlb2wuJ3RyYWNlIjthOjA6e319JywgLTQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGNvZGUgLj0gJHN1YkluZGVudC4oMSAhPT0gJGsgLSAkaiA/ICRrLicgPT4gJyA6ICcnKTsKICAgICAgICAgICAgJGogPSAkazsKICAgICAgICAgICAgJGVvbCA9ICIsXG4iOwogICAgICAgICAgICAkYyA9ICdbJy5zZWxmOjpleHBvcnQoJGNsYXNzKS4nXSc7CgogICAgICAgICAgICBpZiAoJHNlZW5bJGNsYXNzXSA/PyBmYWxzZSkgewogICAgICAgICAgICAgICAgaWYgKFJlZ2lzdHJ5OjokY2xvbmVhYmxlWyRjbGFzc10pIHsKICAgICAgICAgICAgICAgICAgICArKyRwcm90b3R5cGVzQWNjZXNzOwogICAgICAgICAgICAgICAgICAgICRjb2RlIC49ICdjbG9uZSAkcCcuJGM7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICsrJGZhY3Rvcmllc0FjY2VzczsKICAgICAgICAgICAgICAgICAgICAkY29kZSAuPSAnJGYnLiRjLicoKSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkc2VlblskY2xhc3NdID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGlmIChSZWdpc3RyeTo6JGNsb25lYWJsZVskY2xhc3NdKSB7CiAgICAgICAgICAgICAgICAgICAgJGNvZGUgLj0gJ2Nsb25lICgnLigkcHJvdG90eXBlc0FjY2VzcysrID8gJyRwJyA6ICcoJHAgPSAmJy4kci4nOjokcHJvdG90eXBlcyknKS4kYy4nID8/ICcuJHIuJzo6cCc7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRjb2RlIC49ICcoJy4oJGZhY3Rvcmllc0FjY2VzcysrID8gJyRmJyA6ICcoJGYgPSAmJy4kci4nOjokZmFjdG9yaWVzKScpLiRjLicgPz8gJy4kci4nOjpmJzsKICAgICAgICAgICAgICAgICAgICAkZW9sID0gJygpJy4kZW9sOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGNvZGUgLj0gJygnLnN1YnN0cigkYywgMSwgLTEpLicpKSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGNvZGUgLj0gJGVvbDsKICAgICAgICB9CgogICAgICAgIGlmICgxID09PSAkcHJvdG90eXBlc0FjY2VzcykgewogICAgICAgICAgICAkY29kZSA9IHN0cl9yZXBsYWNlKCcoJHAgPSAmJy4kci4nOjokcHJvdG90eXBlcyknLCAkci4nOjokcHJvdG90eXBlcycsICRjb2RlKTsKICAgICAgICB9CiAgICAgICAgaWYgKDEgPT09ICRmYWN0b3JpZXNBY2Nlc3MpIHsKICAgICAgICAgICAgJGNvZGUgPSBzdHJfcmVwbGFjZSgnKCRmID0gJicuJHIuJzo6JGZhY3RvcmllcyknLCAkci4nOjokZmFjdG9yaWVzJywgJGNvZGUpOwogICAgICAgIH0KICAgICAgICBpZiAoJycgIT09ICRjb2RlKSB7CiAgICAgICAgICAgICRjb2RlID0gIlxuIi4kY29kZS4kaW5kZW50OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRzZXJpYWxpemFibGVzKSB7CiAgICAgICAgICAgICRjb2RlID0gJHIuJzo6dW5zZXJpYWxpemUoWycuJGNvZGUuJ10sICcuc2VsZjo6ZXhwb3J0KCRzZXJpYWxpemFibGVzLCAkaW5kZW50KS4nKSc7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGNvZGUgPSAnWycuJGNvZGUuJ10nOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICckbyA9ICcuJGNvZGU7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZXhwb3J0SHlkcmF0b3IoSHlkcmF0b3IgJHZhbHVlLCBzdHJpbmcgJGluZGVudCwgc3RyaW5nICRzdWJJbmRlbnQpOiBzdHJpbmcKICAgIHsKICAgICAgICAkY29kZSA9ICcnOwogICAgICAgIGZvcmVhY2ggKCR2YWx1ZS0+cHJvcGVydGllcyBhcyAkY2xhc3MgPT4gJHByb3BlcnRpZXMpIHsKICAgICAgICAgICAgJGNvZGUgLj0gJHN1YkluZGVudC4nICAgICcuc2VsZjo6ZXhwb3J0KCRjbGFzcykuJyA9PiAnLnNlbGY6OmV4cG9ydCgkcHJvcGVydGllcywgJHN1YkluZGVudC4nICAgICcpLiIsXG4iOwogICAgICAgIH0KCiAgICAgICAgJGNvZGUgPSBbCiAgICAgICAgICAgIHNlbGY6OmV4cG9ydCgkdmFsdWUtPnJlZ2lzdHJ5LCAkc3ViSW5kZW50KSwKICAgICAgICAgICAgc2VsZjo6ZXhwb3J0KCR2YWx1ZS0+dmFsdWVzLCAkc3ViSW5kZW50KSwKICAgICAgICAgICAgJycgIT09ICRjb2RlID8gIltcbiIuJGNvZGUuJHN1YkluZGVudC4nXScgOiAnW10nLAogICAgICAgICAgICBzZWxmOjpleHBvcnQoJHZhbHVlLT52YWx1ZSwgJHN1YkluZGVudCksCiAgICAgICAgICAgIHNlbGY6OmV4cG9ydCgkdmFsdWUtPndha2V1cHMsICRzdWJJbmRlbnQpLAogICAgICAgIF07CgogICAgICAgIHJldHVybiAnXFwnLiR2YWx1ZTo6Y2xhc3MuIjo6aHlkcmF0ZShcbiIuJHN1YkluZGVudC5pbXBsb2RlKCIsXG4iLiRzdWJJbmRlbnQsICRjb2RlKS4iXG4iLiRpbmRlbnQuJyknOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxBcnJheUl0ZXJhdG9yfFxBcnJheU9iamVjdCAkdmFsdWUKICAgICAqIEBwYXJhbSBcQXJyYXlJdGVyYXRvcnxcQXJyYXlPYmplY3QgJHByb3RvCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldEFycmF5T2JqZWN0UHJvcGVydGllcygkdmFsdWUsICRwcm90byk6IGFycmF5CiAgICB7CiAgICAgICAgJHJlZmxlY3RvciA9ICR2YWx1ZSBpbnN0YW5jZW9mIFxBcnJheUl0ZXJhdG9yID8gJ0FycmF5SXRlcmF0b3InIDogJ0FycmF5T2JqZWN0JzsKICAgICAgICAkcmVmbGVjdG9yID0gUmVnaXN0cnk6OiRyZWZsZWN0b3JzWyRyZWZsZWN0b3JdID8/PSBSZWdpc3RyeTo6Z2V0Q2xhc3NSZWZsZWN0b3IoJHJlZmxlY3Rvcik7CgogICAgICAgICRwcm9wZXJ0aWVzID0gWwogICAgICAgICAgICAkYXJyYXlWYWx1ZSA9IChhcnJheSkgJHZhbHVlLAogICAgICAgICAgICAkcmVmbGVjdG9yLT5nZXRNZXRob2QoJ2dldEZsYWdzJyktPmludm9rZSgkdmFsdWUpLAogICAgICAgICAgICAkdmFsdWUgaW5zdGFuY2VvZiBcQXJyYXlPYmplY3QgPyAkcmVmbGVjdG9yLT5nZXRNZXRob2QoJ2dldEl0ZXJhdG9yQ2xhc3MnKS0+aW52b2tlKCR2YWx1ZSkgOiAnQXJyYXlJdGVyYXRvcicsCiAgICAgICAgXTsKCiAgICAgICAgJHJlZmxlY3RvciA9ICRyZWZsZWN0b3ItPmdldE1ldGhvZCgnc2V0RmxhZ3MnKTsKICAgICAgICAkcmVmbGVjdG9yLT5pbnZva2UoJHByb3RvLCBcQXJyYXlPYmplY3Q6OlNURF9QUk9QX0xJU1QpOwoKICAgICAgICBpZiAoJHByb3BlcnRpZXNbMV0gJiBcQXJyYXlPYmplY3Q6OlNURF9QUk9QX0xJU1QpIHsKICAgICAgICAgICAgJHJlZmxlY3Rvci0+aW52b2tlKCR2YWx1ZSwgMCk7CiAgICAgICAgICAgICRwcm9wZXJ0aWVzWzBdID0gKGFycmF5KSAkdmFsdWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHJlZmxlY3Rvci0+aW52b2tlKCR2YWx1ZSwgXEFycmF5T2JqZWN0OjpTVERfUFJPUF9MSVNUKTsKICAgICAgICAgICAgJGFycmF5VmFsdWUgPSAoYXJyYXkpICR2YWx1ZTsKICAgICAgICB9CiAgICAgICAgJHJlZmxlY3Rvci0+aW52b2tlKCR2YWx1ZSwgJHByb3BlcnRpZXNbMV0pOwoKICAgICAgICBpZiAoW1tdLCAwLCAnQXJyYXlJdGVyYXRvciddID09PSAkcHJvcGVydGllcykgewogICAgICAgICAgICAkcHJvcGVydGllcyA9IFtdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmICgnQXJyYXlJdGVyYXRvcicgPT09ICRwcm9wZXJ0aWVzWzJdKSB7CiAgICAgICAgICAgICAgICB1bnNldCgkcHJvcGVydGllc1syXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHByb3BlcnRpZXMgPSBbJHJlZmxlY3Rvci0+Y2xhc3MgPT4gWyJcMCIgPT4gJHByb3BlcnRpZXNdXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbJGFycmF5VmFsdWUsICRwcm9wZXJ0aWVzXTsKICAgIH0KfQoiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZG9jQmxvY2siO047czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBtZXRhZGF0YSI7YTowOnt9fQ==";