1789595936
c05b9b66eacc8e11cfd97f370d355f8b-phpdoc%3A558e3cf24d01f7672726b66638368957-4660bca42b55fbcc70aa37d6de84493c
s:34792:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjE5OiJ2ZXJpZmljYXItcnV0YXMucGhwIjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAG5hbWVzcGFjZXMiO2E6MDp7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaW5jbHVkZXMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZnVuY3Rpb25zIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGNvbnN0YW50cyI7YTo2OntzOjEwOiJcRElSX1JVVEFTIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50IjoxMDp7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ29uc3RhbnQAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjM2O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50AGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTozNjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjEwOiJcRElSX1JVVEFTIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6OToiRElSX1JVVEFTIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ29uc3RhbnQAZG9jQmxvY2siO047czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ29uc3RhbnQAdmFsdWUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRXhwcmVzc2lvbiI6Mjp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRXhwcmVzc2lvbgBleHByZXNzaW9uIjtzOjMzOiJfX0RJUl9fIC4gJy8uLi9hcGkvdjJfdGVzdC9ydXRhcyciO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEV4cHJlc3Npb24AcGFydHMiO2E6MDp7fX1zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudABmaW5hbCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50AHR5cGUiO047czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ29uc3RhbnQAbWV0YWRhdGEiO2E6MDp7fXM6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50AGF0dHJpYnV0ZXMiO2E6MDp7fX1zOjEzOiJcRElSX0ZST05URU5EIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50IjoxMDp7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ29uc3RhbnQAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjM3O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50AGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTozNztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjEzOiJcRElSX0ZST05URU5EIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTI6IkRJUl9GUk9OVEVORCI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50AGRvY0Jsb2NrIjtOO3M6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50AHZhbHVlIjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEV4cHJlc3Npb24iOjI6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEV4cHJlc3Npb24AZXhwcmVzc2lvbiI7czoyNzoiX19ESVJfXyAuICcvLi4vLi4vZnJvbnRlbmQnIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uAHBhcnRzIjthOjA6e319czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ29uc3RhbnQAZmluYWwiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudAB0eXBlIjtOO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50AG1ldGFkYXRhIjthOjA6e31zOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudABhdHRyaWJ1dGVzIjthOjA6e319czoxNjoiXEVTQ1JJQkVOX1NFU0lPTiI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudCI6MTA6e3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50AGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo0NztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NDc7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ29uc3RhbnQAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ29uc3RhbnQAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoxNjoiXEVTQ1JJQkVOX1NFU0lPTiI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE1OiJFU0NSSUJFTl9TRVNJT04iO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudABkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6MTg0OiJBY2Npb25lcyBjdXlvIGhhbmRsZXIgbW9kaWZpY2EgJF9TRVNTSU9OLiBEZWJlbiBkZWNsYXJhciBlc2NyaWJlU2VzaW9uOgp0cnVlLCBvIGVsIGRlc3BhY2hhZG9yIGxpYmVyYXLDoSBlbCBibG9xdWVvIGRlIHNlc2nDs24gYW50ZXMgZGUgZWplY3V0YXJsYXMKeSBzdXMgZXNjcml0dXJhcyBubyBzZSBwZXJzaXN0aXLDoW4uIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjE0NjoiTGlzdGEgbWFudGVuaWRhIGEgbWFubywgcGVybyBjb252aWVydGUgdW4gZmFsbG8gc2lsZW5jaW9zbyDigJRlbCBjYXNvIGRlbAp0b2tlbiBDU1JGIHF1ZSBlbCBzZXJ2aWRvciBudW5jYSBsbGVnYSBhIGd1YXJkYXLigJQgZW4gdW4gZXJyb3IgdmlzaWJsZS4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YTowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dCI6Mjp7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0AG5hbWVzcGFjZSI7czowOiIiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2VBbGlhc2VzIjthOjA6e319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudAB2YWx1ZSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uIjoyOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uAGV4cHJlc3Npb24iO3M6NTM6IlsnbG9naW4nLCAnY2FtYmlhcl9jYW1wYW5pYScsICd1cGRhdGVfdXNlcl9wZXJtaXNvcyddIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uAHBhcnRzIjthOjA6e319czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ29uc3RhbnQAZmluYWwiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudAB0eXBlIjtOO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50AG1ldGFkYXRhIjthOjA6e31zOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudABhdHRyaWJ1dGVzIjthOjA6e319czoxOToiXFBSRUZJSk9TX0VTQ1JJVFVSQSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudCI6MTA6e3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50AGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo1MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NTQ7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ29uc3RhbnQAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ29uc3RhbnQAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoxOToiXFBSRUZJSk9TX0VTQ1JJVFVSQSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE4OiJQUkVGSUpPU19FU0NSSVRVUkEiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudABkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6NjA6IlByZWZpam9zIHF1ZSBkZWxhdGFuIHVuYSBhY2Npw7NuIGRlIGVzY3JpdHVyYSBwb3Igc3Ugbm9tYnJlLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YTowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtyOjY1O3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ29uc3RhbnQAdmFsdWUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRXhwcmVzc2lvbiI6Mjp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRXhwcmVzc2lvbgBleHByZXNzaW9uIjtzOjIwMzoiWydjcmVhcl8nLCAnaW5zZXJ0XycsICdlbGltaW5hcl8nLCAnZGVsZXRlXycsICdtb2RpZmljYXJfJywgJ3VwZGF0ZV8nLCAnYWN0dWFsaXphcl8nLCAnYW5hZGlyXycsICdhZGRfJywgJ2FqdXN0ZV8nLCAnYWp1c3Rhcl8nLCAnYXNpZ25hcl8nLCAnZGVzaGFiaWxpdGFyXycsICdoYWJpbGl0YXJfJywgJ3JlYWp1c3Rhcl8nLCAnY2FtYmlvXycsICdzZXRfJ10iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEV4cHJlc3Npb24AcGFydHMiO2E6MDp7fX1zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudABmaW5hbCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50AHR5cGUiO047czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ29uc3RhbnQAbWV0YWRhdGEiO2E6MDp7fXM6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50AGF0dHJpYnV0ZXMiO2E6MDp7fX1zOjE2OiJcUEFUUk9ORVNfQUNDSU9OIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50IjoxMDp7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ29uc3RhbnQAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjYxO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50AGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo2NTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjE2OiJcUEFUUk9ORVNfQUNDSU9OIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTU6IlBBVFJPTkVTX0FDQ0lPTiI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50AGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czoxOTI6IkZvcm1hcyBlbiBxdWUgZWwgZnJvbnRlbmQgcHVlZGUgZGVjbGFyYXIgbGEgYWNjacOzbi4gTGEgcHJpbWVyYSBjdWJyZSBlbApvYmpldG8gbGl0ZXJhbCBkZSAkLmFqYXg7IGxhIHNlZ3VuZGEsIGxhcyBzdWJpZGFzIGNvbiBGb3JtRGF0YTsgbGEKdGVyY2VyYSwgbGFzIGNhZGVuYXMgZGUgY29uc3VsdGEgY29uc3RydWlkYXMgYSBtYW5vLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YTowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtyOjY1O3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ29uc3RhbnQAdmFsdWUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRXhwcmVzc2lvbiI6Mjp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRXhwcmVzc2lvbgBleHByZXNzaW9uIjtzOjE1MjoiWycvW1wnIl0/YWN0aW9uW1wnIl0/XHMqWzo9XVxzKltcJyJdKFthLXpBLVowLTlfXSspW1wnIl0vJywgJy9hcHBlbmRcKFxzKltcJyJdYWN0aW9uW1wnIl1ccyosXHMqW1wnIl0oW2EtekEtWjAtOV9dKylbXCciXS8nLCAnL2FjdGlvbj0oW2EtekEtWjAtOV9dKykvJ10iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEV4cHJlc3Npb24AcGFydHMiO2E6MDp7fX1zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudABmaW5hbCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50AHR5cGUiO047czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ29uc3RhbnQAbWV0YWRhdGEiO2E6MDp7fXM6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50AGF0dHJpYnV0ZXMiO2E6MDp7fX1zOjEwOiJcRVhDTFVJRE9TIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50IjoxMDp7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ29uc3RhbnQAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjY4O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50AGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo2ODtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjEwOiJcRVhDTFVJRE9TIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6OToiRVhDTFVJRE9TIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ29uc3RhbnQAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjUxOiJEaXJlY3RvcmlvcyBxdWUgbm8gZm9ybWFuIHBhcnRlIGRlbCBjw7NkaWdvIHByb3Bpby4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7cjo2NTtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50AHZhbHVlIjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEV4cHJlc3Npb24iOjI6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEV4cHJlc3Npb24AZXhwcmVzc2lvbiI7czo1NzoiJyNbXFxcXC9dKG5vZGVfbW9kdWxlc3xkaXN0fHZlbmRvcnxcLmdpdHxcLmlkZWEpW1xcXFwvXSMnIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uAHBhcnRzIjthOjA6e319czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ29uc3RhbnQAZmluYWwiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudAB0eXBlIjtOO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENvbnN0YW50AG1ldGFkYXRhIjthOjA6e31zOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDb25zdGFudABhdHRyaWJ1dGVzIjthOjA6e319fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY2xhc3NlcyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbnRlcmZhY2VzIjthOjA6e31zOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHRyYWl0cyI7YTowOnt9czo0MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBlbnVtcyI7YTowOnt9czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBoYXNoIjtzOjMyOiI0NjYwYmNhNDJiNTVmYmNjNzBhYTM3ZDZkZTg0NDkzYyI7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBwYXRoIjtzOjMxOiJiYWNrZW5kL2Jpbi92ZXJpZmljYXItcnV0YXMucGhwIjtzOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHNvdXJjZSI7czoxMDY4NjoiPD9waHAKZGVjbGFyZShzdHJpY3RfdHlwZXM9MSk7CgovKioKICogVmVyaWZpY2FjacOzbiBwcmV2aWEgYWwgZGVzcGxpZWd1ZSBkZSBsYSBBUEkgdjIuCiAqCiAqIENvbXBydWViYSBkZSB1bmEgc29sYSBwYXNhZGEgbG8gcXVlIGRlIG90cm8gbW9kbyBzZSBkZXNjdWJyZSBlbiBydW50aW1lLAogKiBydXRhIHBvciBydXRhIHkgdXN1YXJpbyBwb3IgdXN1YXJpbzoKICoKICogICAxLiBRdWUgdG9kb3MgbG9zIG3Ds2R1bG9zIGNhcmdhbiAoTG9naWNFeGNlcHRpb24gcG9yIGxhcyBpbnZhcmlhbnRlcyBkZQogKiAgICAgIFJ1dGEsIFR5cGVFcnJvciBzaSBhbGfDum4gaGFuZGxlciBubyBlcyB1biBDbG9zdXJlKS4KICogICAyLiBRdWUgbm8gaGF5IGFjY2lvbmVzIGR1cGxpY2FkYXMgZW50cmUgbcOzZHVsb3MuCiAqICAgMy4gUXVlIHRvZGEgcMOhZ2luYSBkZWNsYXJhZGEgZW4gw6FtYml0byBUUkFDS0lORyBleGlzdGUgZW4gbGEgdGFibGEKICogICAgICBgcGFnaW5hc2AgeSBlc3TDoSBoYWJpbGl0YWRhLgogKiAgIDQuIFF1ZSBsYXMgcnV0YXMgVFJBQ0tJTkdXRUIgbm8gZGVjbGFyYW4gcMOhZ2luYSBwb3IgZXJyb3IuCiAqICAgNS4gUXVlIGxhcyBhY2Npb25lcyBxdWUgZXNjcmliZW4gZW4gJF9TRVNTSU9OIGxvIGRlY2xhcmFuLgogKiAgIDYuIFF1w6kgYWNjaW9uZXMgcGFyZWNlbiBkZSBlc2NyaXR1cmEgeSBubyBkZWNsYXJhbiBjb25leGlvblVuaWNhLgogKiAgIDcuIFF1ZSB0b2RhIGFjY2nDs24gaW52b2NhZGEgcG9yIGVsIGZyb250ZW5kIGV4aXN0ZSBlbiBlbCByZWdpc3Ryby4KICoKICogRWwgZGVzY3VicmltaWVudG8gZGUgbcOzZHVsb3MgdXNhIGVsIG1pc21vIGdsb2IoKSBxdWUgaW5kZXgucGhwOiBzb24gbGEKICogbWlzbWEgZnVlbnRlIGRlIHZlcmRhZCwgZGUgbW9kbyBxdWUgZWwgc2NyaXB0IG5vIHB1ZWRlIGRhciBwb3IgYnVlbm8gdW4KICogbcOzZHVsbyBxdWUgbGEgQVBJIG5vIHNpcnZhLgogKgogKiBVc286CiAqICAgcGhwIGJhY2tlbmQvYmluL3ZlcmlmaWNhci1ydXRhcy5waHAKICoKICogQ8OzZGlnbyBkZSBzYWxpZGEgMCBzaSB0b2RvIGVzIGNvcnJlY3RvLCAxIHNpIGhheSBlcnJvcmVzLCBkZSBtb2RvIHF1ZQogKiBwdWVkZSBlbmNhZGVuYXJzZSBlbiB1biBkZXNwbGllZ3VlLgogKgogKiBAcGFja2FnZSB0cmFja2luZ1xiYWNrZW5kXGJpbgogKi8KCnJlcXVpcmVfb25jZSBfX0RJUl9fIC4gJy8uLi9ib290c3RyYXAucGhwJzsKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnLy4uL2FwaS92Ml90ZXN0L251Y2xlby9OdWNsZW8ucGhwJzsKCmNvbnN0IERJUl9SVVRBUyAgICA9IF9fRElSX18gLiAnLy4uL2FwaS92Ml90ZXN0L3J1dGFzJzsKY29uc3QgRElSX0ZST05URU5EID0gX19ESVJfXyAuICcvLi4vLi4vZnJvbnRlbmQnOwoKLyoqCiAqIEFjY2lvbmVzIGN1eW8gaGFuZGxlciBtb2RpZmljYSAkX1NFU1NJT04uIERlYmVuIGRlY2xhcmFyIGVzY3JpYmVTZXNpb246CiAqIHRydWUsIG8gZWwgZGVzcGFjaGFkb3IgbGliZXJhcsOhIGVsIGJsb3F1ZW8gZGUgc2VzacOzbiBhbnRlcyBkZSBlamVjdXRhcmxhcwogKiB5IHN1cyBlc2NyaXR1cmFzIG5vIHNlIHBlcnNpc3RpcsOhbi4KICoKICogTGlzdGEgbWFudGVuaWRhIGEgbWFubywgcGVybyBjb252aWVydGUgdW4gZmFsbG8gc2lsZW5jaW9zbyDigJRlbCBjYXNvIGRlbAogKiB0b2tlbiBDU1JGIHF1ZSBlbCBzZXJ2aWRvciBudW5jYSBsbGVnYSBhIGd1YXJkYXLigJQgZW4gdW4gZXJyb3IgdmlzaWJsZS4KICovCmNvbnN0IEVTQ1JJQkVOX1NFU0lPTiA9IFsnbG9naW4nLCAnY2FtYmlhcl9jYW1wYW5pYScsICd1cGRhdGVfdXNlcl9wZXJtaXNvcyddOwoKLyoqIFByZWZpam9zIHF1ZSBkZWxhdGFuIHVuYSBhY2Npw7NuIGRlIGVzY3JpdHVyYSBwb3Igc3Ugbm9tYnJlLiAqLwpjb25zdCBQUkVGSUpPU19FU0NSSVRVUkEgPSBbCiAgICAnY3JlYXJfJywgJ2luc2VydF8nLCAnZWxpbWluYXJfJywgJ2RlbGV0ZV8nLCAnbW9kaWZpY2FyXycsICd1cGRhdGVfJywKICAgICdhY3R1YWxpemFyXycsICdhbmFkaXJfJywgJ2FkZF8nLCAnYWp1c3RlXycsICdhanVzdGFyXycsICdhc2lnbmFyXycsCiAgICAnZGVzaGFiaWxpdGFyXycsICdoYWJpbGl0YXJfJywgJ3JlYWp1c3Rhcl8nLCAnY2FtYmlvXycsICdzZXRfJywKXTsKCi8qKgogKiBGb3JtYXMgZW4gcXVlIGVsIGZyb250ZW5kIHB1ZWRlIGRlY2xhcmFyIGxhIGFjY2nDs24uIExhIHByaW1lcmEgY3VicmUgZWwKICogb2JqZXRvIGxpdGVyYWwgZGUgJC5hamF4OyBsYSBzZWd1bmRhLCBsYXMgc3ViaWRhcyBjb24gRm9ybURhdGE7IGxhCiAqIHRlcmNlcmEsIGxhcyBjYWRlbmFzIGRlIGNvbnN1bHRhIGNvbnN0cnVpZGFzIGEgbWFuby4KICovCmNvbnN0IFBBVFJPTkVTX0FDQ0lPTiA9IFsKICAgICcvW1wnIl0/YWN0aW9uW1wnIl0/XHMqWzo9XVxzKltcJyJdKFthLXpBLVowLTlfXSspW1wnIl0vJywKICAgICcvYXBwZW5kXChccypbXCciXWFjdGlvbltcJyJdXHMqLFxzKltcJyJdKFthLXpBLVowLTlfXSspW1wnIl0vJywKICAgICcvYWN0aW9uPShbYS16QS1aMC05X10rKS8nLApdOwoKLyoqIERpcmVjdG9yaW9zIHF1ZSBubyBmb3JtYW4gcGFydGUgZGVsIGPDs2RpZ28gcHJvcGlvLiAqLwpjb25zdCBFWENMVUlET1MgPSAnI1tcXFxcL10obm9kZV9tb2R1bGVzfGRpc3R8dmVuZG9yfFwuZ2l0fFwuaWRlYSlbXFxcXC9dIyc7CgokZXJyb3JlcyA9IFtdOwokYXZpc29zICA9IFtdOwoKLy8g4pSA4pSAIDEgeSAyLiBDYXJnYSBkZSBtw7NkdWxvcyB5IGRldGVjY2nDs24gZGUgZHVwbGljYWRvcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKCiRydXRhcyAgID0gW107CiRvcmlnZW4gID0gW107CiRtb2R1bG9zID0gZ2xvYihESVJfUlVUQVMgLiAnLyoucGhwJykgPzogW107CgppZiAoZW1wdHkoJG1vZHVsb3MpKSB7CiAgICBmd3JpdGUoU1RERVJSLCAnTm8gc2UgZW5jb250csOzIG5pbmfDum4gbcOzZHVsbyBlbiAnIC4gRElSX1JVVEFTIC4gIlxuIik7CiAgICBleGl0KDEpOwp9Cgpmb3JlYWNoICgkbW9kdWxvcyBhcyAkYXJjaGl2bykgewogICAgJG5vbWJyZSA9IGJhc2VuYW1lKCRhcmNoaXZvLCAnLnBocCcpOwoKICAgIC8vIE5vdGE6IHVuIGVycm9yIGRlIHNpbnRheGlzIGVuIGVsIG3Ds2R1bG8gYWJvcnRhIGVsIHNjcmlwdCBhcXXDrSwgc2luCiAgICAvLyBwYXNhciBwb3IgZWwgY2F0Y2guIExhIHJlZCBkZSBmYXRhbGVzIGRlIGJvb3RzdHJhcCBsbyBlc2NyaWJlIHBvcgogICAgLy8gU1RERVJSIGNvbiBmb3JtYXRvIGxlZ2libGUgeSBlbCBjw7NkaWdvIGRlIHNhbGlkYSBlcyBkaXN0aW50byBkZSAwLgogICAgdHJ5IHsKICAgICAgICAkbW9kdWxvID0gcmVxdWlyZSAkYXJjaGl2bzsKICAgIH0gY2F0Y2ggKFRocm93YWJsZSAkZSkgewogICAgICAgICRlcnJvcmVzW10gPSBzcHJpbnRmKCdbJXNdIE5vIGNhcmdhOiAlcycsICRub21icmUsICRlLT5nZXRNZXNzYWdlKCkpOwogICAgICAgIGNvbnRpbnVlOwogICAgfQoKICAgIGlmICghaXNfYXJyYXkoJG1vZHVsbykpIHsKICAgICAgICAkZXJyb3Jlc1tdID0gc3ByaW50ZignWyVzXSBObyBkZXZ1ZWx2ZSB1biBhcnJheSBkZSBydXRhcy4nLCAkbm9tYnJlKTsKICAgICAgICBjb250aW51ZTsKICAgIH0KCiAgICBmb3JlYWNoICgkbW9kdWxvIGFzICRhY2Npb24gPT4gJHJ1dGEpIHsKICAgICAgICBpZiAoISRydXRhIGluc3RhbmNlb2YgUnV0YSkgewogICAgICAgICAgICAkZXJyb3Jlc1tdID0gc3ByaW50ZigiWyVzXSAnJXMnIG5vIGVzIHVuYSBpbnN0YW5jaWEgZGUgUnV0YS4iLCAkbm9tYnJlLCAkYWNjaW9uKTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkcnV0YXNbJGFjY2lvbl0pKSB7CiAgICAgICAgICAgICRlcnJvcmVzW10gPSBzcHJpbnRmKAogICAgICAgICAgICAgICAgIkFjY2nDs24gZHVwbGljYWRhICclcyc6IGRlY2xhcmFkYSBlbiAlcyB5IGVuICVzLiIsCiAgICAgICAgICAgICAgICAkYWNjaW9uLCAkb3JpZ2VuWyRhY2Npb25dLCAkbm9tYnJlCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICAkcnV0YXNbJGFjY2lvbl0gID0gJHJ1dGE7CiAgICAgICAgJG9yaWdlblskYWNjaW9uXSA9ICRub21icmU7CiAgICB9Cn0KCi8vIOKUgOKUgCAzIHkgNC4gQ29udHJhc3RlIGRlIHDDoWdpbmFzIGNvbnRyYSBsYSBiYXNlIGRlIGRhdG9zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgAoKJHBhZ2luYXNCZCA9IFtdOwp0cnkgewogICAgJGRiICA9IENvbmV4aW9uOjpnZXRUcmFja2luZ1dlYlBkbygpOwogICAgJHJlcyA9ICRkYi0+cXVlcnkoJ1NFTEVDVCBydXRhLCBoYWJpbGl0YWRvIEZST00gcGFnaW5hcycpOwogICAgd2hpbGUgKCRmaWxhID0gJHJlcy0+ZmV0Y2hfYXNzb2MoKSkgewogICAgICAgICRwYWdpbmFzQmRbJGZpbGFbJ3J1dGEnXV0gPSAoaW50KSRmaWxhWydoYWJpbGl0YWRvJ107CiAgICB9Cn0gY2F0Y2ggKFRocm93YWJsZSAkZSkgewogICAgZndyaXRlKFNUREVSUiwgJ05vIHNlIHB1ZG8gbGVlciBsYSB0YWJsYSBwYWdpbmFzOiAnIC4gJGUtPmdldE1lc3NhZ2UoKSAuICJcbiIpOwogICAgZXhpdCgxKTsKfQoKZm9yZWFjaCAoJHJ1dGFzIGFzICRhY2Npb24gPT4gJHJ1dGEpIHsKICAgICRkZWNsYXJhZGFzID0gaXNfYXJyYXkoJHJ1dGEtPnBhZ2luYSkgPyAkcnV0YS0+cGFnaW5hIDogYXJyYXlfZmlsdGVyKFskcnV0YS0+cGFnaW5hXSk7CgogICAgaWYgKCRydXRhLT5hbWJpdG8gPT09IEFtYml0bzo6VFJBQ0tJTkdXRUIpIHsKICAgICAgICBpZiAoIWVtcHR5KCRkZWNsYXJhZGFzKSkgewogICAgICAgICAgICAkYXZpc29zW10gPSBzcHJpbnRmKAogICAgICAgICAgICAgICAgIlslc10gJyVzJyBlcyBUUkFDS0lOR1dFQiBwZXJvIGRlY2xhcmEgcMOhZ2luYTogc2UgaWdub3JhcsOhLiIsCiAgICAgICAgICAgICAgICAkb3JpZ2VuWyRhY2Npb25dLCAkYWNjaW9uCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGNvbnRpbnVlOwogICAgfQoKICAgIGZvcmVhY2ggKCRkZWNsYXJhZGFzIGFzICRwYWdpbmEpIHsKICAgICAgICBpZiAoIWFycmF5X2tleV9leGlzdHMoJHBhZ2luYSwgJHBhZ2luYXNCZCkpIHsKICAgICAgICAgICAgJGVycm9yZXNbXSA9IHNwcmludGYoCiAgICAgICAgICAgICAgICAiWyVzXSAnJXMnIGRlY2xhcmEgbGEgcMOhZ2luYSAnJXMnLCBxdWUgTk8gZXhpc3RlIGVuIGxhIHRhYmxhIHBhZ2luYXMuIiwKICAgICAgICAgICAgICAgICRvcmlnZW5bJGFjY2lvbl0sICRhY2Npb24sICRwYWdpbmEKICAgICAgICAgICAgKTsKICAgICAgICB9IGVsc2VpZiAoJHBhZ2luYXNCZFskcGFnaW5hXSAhPT0gMSkgewogICAgICAgICAgICAkYXZpc29zW10gPSBzcHJpbnRmKAogICAgICAgICAgICAgICAgIlslc10gJyVzJyBkZWNsYXJhIGxhIHDDoWdpbmEgJyVzJywgcXVlIGVzdMOhIGRlc2hhYmlsaXRhZGEuIiwKICAgICAgICAgICAgICAgICRvcmlnZW5bJGFjY2lvbl0sICRhY2Npb24sICRwYWdpbmEKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cn0KCi8vIOKUgOKUgCA1LiBEZWNsYXJhY2nDs24gZGUgZXNjcml0dXJhIGVuIHNlc2nDs24g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACgpmb3JlYWNoIChFU0NSSUJFTl9TRVNJT04gYXMgJGFjY2lvbikgewogICAgaWYgKCFpc3NldCgkcnV0YXNbJGFjY2lvbl0pKSB7CiAgICAgICAgJGF2aXNvc1tdID0gc3ByaW50ZigKICAgICAgICAgICAgIkxhIGFjY2nDs24gJyVzJyBlc2NyaWJlIGVuIFwkX1NFU1NJT04gcGVybyBubyBlc3TDoSBlbiBlbCByZWdpc3RybzogcmV2aXNhIGVsIG5vbWJyZS4iLAogICAgICAgICAgICAkYWNjaW9uCiAgICAgICAgKTsKICAgIH0gZWxzZWlmICghJHJ1dGFzWyRhY2Npb25dLT5lc2NyaWJlU2VzaW9uKSB7CiAgICAgICAgJGVycm9yZXNbXSA9IHNwcmludGYoCiAgICAgICAgICAgICJbJXNdICclcycgZXNjcmliZSBlbiBcJF9TRVNTSU9OIHBlcm8gbm8gZGVjbGFyYSBlc2NyaWJlU2VzaW9uOiB0cnVlLiIsCiAgICAgICAgICAgICRvcmlnZW5bJGFjY2lvbl0sICRhY2Npb24KICAgICAgICApOwogICAgfQp9CgovLyDilIDilIAgNi4gSGV1csOtc3RpY28gZGUgY29uZXhpb25VbmljYSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKLy8gTm8gcHVlZGUgZGVkdWNpcnNlIGVzdMOhdGljYW1lbnRlIHF1w6kgaGFuZGxlciB1c2EgJGN0eC0+Y29uZXhpb24oKSwgcGVybyBlbAovLyBub21icmUgZGUgbGEgYWNjacOzbiBsbyBkZWxhdGEgY29uIGJhc3RhbnRlIGZpYWJpbGlkYWQuIFNlIGVtaXRlIGNvbW8gYXZpc28KLy8gcGFyYSBwb2RlciBkZXNjYXJ0YXIgZmFsc29zIHBvc2l0aXZvcyBzaW4gYmxvcXVlYXIgZWwgZGVzcGxpZWd1ZS4KCmZvcmVhY2ggKCRydXRhcyBhcyAkYWNjaW9uID0+ICRydXRhKSB7CiAgICBpZiAoJHJ1dGEtPmFtYml0byAhPT0gQW1iaXRvOjpUUkFDS0lORyB8fCAkcnV0YS0+Y29uZXhpb25VbmljYSkgY29udGludWU7CgogICAgZm9yZWFjaCAoUFJFRklKT1NfRVNDUklUVVJBIGFzICRwcmVmaWpvKSB7CiAgICAgICAgaWYgKHN0cl9zdGFydHNfd2l0aCgkYWNjaW9uLCAkcHJlZmlqbykpIHsKICAgICAgICAgICAgJGF2aXNvc1tdID0gc3ByaW50ZigKICAgICAgICAgICAgICAgICJbJXNdICclcycgcGFyZWNlIGRlIGVzY3JpdHVyYSB5IG5vIGRlY2xhcmEgY29uZXhpb25VbmljYTogdHJ1ZS4iLAogICAgICAgICAgICAgICAgJG9yaWdlblskYWNjaW9uXSwgJGFjY2lvbgogICAgICAgICAgICApOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9Cn0KCi8vIOKUgOKUgCA3LiBBY2Npb25lcyBpbnZvY2FkYXMgcG9yIGVsIGZyb250ZW5kIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgAovLyBDb21vIGVsIGZyb250ZW5kIHlhIG5vIGNvbnNlcnZhIG5pbmd1bmEgbGxhbWFkYSBhIGxhIHYxLCB0b2RhIGFjY2nDs24gcXVlCi8vIGludm9xdWUgeSBubyBleGlzdGEgZW4gZWwgcmVnaXN0cm8gZXMgdW4gNDAwIGdhcmFudGl6YWRvIGVuIHByb2R1Y2Npw7NuLgovLyBQb3IgZXNvIHNlIGNsYXNpZmljYSBjb21vIGVycm9yIHkgbm8gY29tbyBhdmlzby4KCiRhY2Npb25lc0Zyb250ID0gW107CgppZiAoaXNfZGlyKERJUl9GUk9OVEVORCkpIHsKICAgICRpdGVyID0gbmV3IFJlY3Vyc2l2ZUl0ZXJhdG9ySXRlcmF0b3IobmV3IFJlY3Vyc2l2ZURpcmVjdG9yeUl0ZXJhdG9yKERJUl9GUk9OVEVORCkpOwoKICAgIGZvcmVhY2ggKCRpdGVyIGFzICRmaWNoZXJvKSB7CiAgICAgICAgaWYgKCEkZmljaGVyby0+aXNGaWxlKCkpIGNvbnRpbnVlOwogICAgICAgIGlmIChwcmVnX21hdGNoKEVYQ0xVSURPUywgJGZpY2hlcm8tPmdldFBhdGhuYW1lKCkpKSBjb250aW51ZTsKICAgICAgICBpZiAoIWluX2FycmF5KHN0cnRvbG93ZXIoJGZpY2hlcm8tPmdldEV4dGVuc2lvbigpKSwgWydqcycsICdwaHAnXSwgdHJ1ZSkpIGNvbnRpbnVlOwoKICAgICAgICAkY29udGVuaWRvID0gZmlsZV9nZXRfY29udGVudHMoJGZpY2hlcm8tPmdldFBhdGhuYW1lKCkpID86ICcnOwogICAgICAgICRyZWxhdGl2byAgPSBzdHJfcmVwbGFjZShESVJfRlJPTlRFTkQsICcnLCAkZmljaGVyby0+Z2V0UGF0aG5hbWUoKSk7CgogICAgICAgIGZvcmVhY2ggKFBBVFJPTkVTX0FDQ0lPTiBhcyAkcGF0cm9uKSB7CiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoX2FsbCgkcGF0cm9uLCAkY29udGVuaWRvLCAkbSkpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRtWzFdIGFzICRhKSB7CiAgICAgICAgICAgICAgICAgICAgJGFjY2lvbmVzRnJvbnRbJGFdWyRyZWxhdGl2b10gPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGZvcmVhY2ggKCRhY2Npb25lc0Zyb250IGFzICRhY2Npb24gPT4gJGZpY2hlcm9zKSB7CiAgICAgICAgaWYgKCFpc3NldCgkcnV0YXNbJGFjY2lvbl0pKSB7CiAgICAgICAgICAgICRlcnJvcmVzW10gPSBzcHJpbnRmKAogICAgICAgICAgICAgICAgIkVsIGZyb250ZW5kIGludm9jYSAnJXMnLCBxdWUgTk8gZXhpc3RlIGVuIGVsIHJlZ2lzdHJvICglcykuIiwKICAgICAgICAgICAgICAgICRhY2Npb24sIGltcGxvZGUoJywgJywgYXJyYXlfa2V5cygkZmljaGVyb3MpKQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KfSBlbHNlIHsKICAgICRhdmlzb3NbXSA9IHNwcmludGYoCiAgICAgICAgJ05vIHNlIGVuY29udHLDsyBlbCBkaXJlY3RvcmlvIGRlbCBmcm9udGVuZCBlbiAlczogc2Ugb21pdGUgZWwgY29udHJhc3RlIGRlIGFjY2lvbmVzLicsCiAgICAgICAgRElSX0ZST05URU5ECiAgICApOwp9Cgokc2luVXNhciA9IGFycmF5X2RpZmYoYXJyYXlfa2V5cygkcnV0YXMpLCBhcnJheV9rZXlzKCRhY2Npb25lc0Zyb250KSk7CgovLyDilIDilIAgUMOhZ2luYXMgZGUgbGEgQkQgc2luIG5pbmd1bmEgcnV0YSBhc29jaWFkYSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKCiRkZWNsYXJhZGFzVG9kYXMgPSBbXTsKZm9yZWFjaCAoJHJ1dGFzIGFzICRydXRhKSB7CiAgICBmb3JlYWNoICgoaXNfYXJyYXkoJHJ1dGEtPnBhZ2luYSkgPyAkcnV0YS0+cGFnaW5hIDogWyRydXRhLT5wYWdpbmFdKSBhcyAkcCkgewogICAgICAgIGlmICgkcCAhPT0gJycpICRkZWNsYXJhZGFzVG9kYXNbJHBdID0gdHJ1ZTsKICAgIH0KfQokaHVlcmZhbmFzID0gYXJyYXlfZGlmZihhcnJheV9rZXlzKGFycmF5X2ZpbHRlcigkcGFnaW5hc0JkKSksIGFycmF5X2tleXMoJGRlY2xhcmFkYXNUb2RhcykpOwoKLy8g4pSA4pSAIEluZm9ybWUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACgpwcmludGYoIlxuTcOzZHVsb3MgY2FyZ2Fkb3MgOiAlZFxuIiwgY291bnQoJG1vZHVsb3MpKTsKcHJpbnRmKCJBY2Npb25lcyB0b3RhbGVzIDogJWRcbiIsIGNvdW50KCRydXRhcykpOwoKJHBvckFtYml0byA9IFsnVFJBQ0tJTkdXRUInID0+IDAsICdUUkFDS0lORycgPT4gMF07CiRwb3JBY2Nlc28gPSBbXTsKZm9yZWFjaCAoJHJ1dGFzIGFzICRydXRhKSB7CiAgICAkcG9yQW1iaXRvWyRydXRhLT5hbWJpdG8gPT09IEFtYml0bzo6VFJBQ0tJTkcgPyAnVFJBQ0tJTkcnIDogJ1RSQUNLSU5HV0VCJ10rKzsKICAgICRwb3JBY2Nlc29bJHJ1dGEtPmFjY2Vzby0+bmFtZV0gPSAoJHBvckFjY2Vzb1skcnV0YS0+YWNjZXNvLT5uYW1lXSA/PyAwKSArIDE7Cn0KcHJpbnRmKCIgIHRyYWNraW5nd2ViICAgIDogJWRcbiIsICRwb3JBbWJpdG9bJ1RSQUNLSU5HV0VCJ10pOwpwcmludGYoIiAgdHJhY2tpbmcgICAgICAgOiAlZFxuIiwgJHBvckFtYml0b1snVFJBQ0tJTkcnXSk7CmZvcmVhY2ggKCRwb3JBY2Nlc28gYXMgJG5pdmVsID0+ICRuKSB7CiAgICBwcmludGYoIiAgJS0xNHMgOiAlZFxuIiwgJG5pdmVsLCAkbik7Cn0KCmlmICghZW1wdHkoJGh1ZXJmYW5hcykpIHsKICAgIHByaW50ZigiXG5Qw6FnaW5hcyBoYWJpbGl0YWRhcyBzaW4gbmluZ3VuYSBhY2Npw7NuIGRlY2xhcmFkYSAoJWQpOlxuIiwgY291bnQoJGh1ZXJmYW5hcykpOwogICAgZm9yZWFjaCAoJGh1ZXJmYW5hcyBhcyAkcCkgcHJpbnRmKCIgIMK3ICVzXG4iLCAkcCk7Cn0KCmlmICghZW1wdHkoJHNpblVzYXIpKSB7CiAgICBwcmludGYoIlxuQWNjaW9uZXMgcmVnaXN0cmFkYXMgcXVlIGVsIGZyb250ZW5kIG5vIGludm9jYSAoJWQpOlxuIiwgY291bnQoJHNpblVzYXIpKTsKICAgIGZvcmVhY2ggKCRzaW5Vc2FyIGFzICRhKSBwcmludGYoIiAgwrcgJXMgKCVzKVxuIiwgJGEsICRvcmlnZW5bJGFdKTsKfQoKaWYgKCFlbXB0eSgkYXZpc29zKSkgewogICAgcHJpbnRmKCJcbkFWSVNPUyAoJWQpOlxuIiwgY291bnQoJGF2aXNvcykpOwogICAgZm9yZWFjaCAoJGF2aXNvcyBhcyAkYSkgcHJpbnRmKCIgICEgJXNcbiIsICRhKTsKfQoKaWYgKCFlbXB0eSgkZXJyb3JlcykpIHsKICAgIHByaW50ZigiXG5FUlJPUkVTICglZCk6XG4iLCBjb3VudCgkZXJyb3JlcykpOwogICAgZm9yZWFjaCAoJGVycm9yZXMgYXMgJGUpIHByaW50ZigiICB4ICVzXG4iLCAkZSk7CiAgICBwcmludGYoIlxuVmVyaWZpY2FjacOzbiBGQUxMSURBLlxuXG4iKTsKICAgIGV4aXQoMSk7Cn0KCnByaW50ZigiXG5WZXJpZmljYWNpw7NuIGNvcnJlY3RhLlxuXG4iKTsKZXhpdCgwKTsKIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo0ODoiVmVyaWZpY2FjacOzbiBwcmV2aWEgYWwgZGVzcGxpZWd1ZSBkZSBsYSBBUEkgdjIuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjk4ODoiQ29tcHJ1ZWJhIGRlIHVuYSBzb2xhIHBhc2FkYSBsbyBxdWUgZGUgb3RybyBtb2RvIHNlIGRlc2N1YnJlIGVuIHJ1bnRpbWUsCnJ1dGEgcG9yIHJ1dGEgeSB1c3VhcmlvIHBvciB1c3VhcmlvOgoKICAxLiBRdWUgdG9kb3MgbG9zIG3Ds2R1bG9zIGNhcmdhbiAoTG9naWNFeGNlcHRpb24gcG9yIGxhcyBpbnZhcmlhbnRlcyBkZQogICAgIFJ1dGEsIFR5cGVFcnJvciBzaSBhbGfDum4gaGFuZGxlciBubyBlcyB1biBDbG9zdXJlKS4KICAyLiBRdWUgbm8gaGF5IGFjY2lvbmVzIGR1cGxpY2FkYXMgZW50cmUgbcOzZHVsb3MuCiAgMy4gUXVlIHRvZGEgcMOhZ2luYSBkZWNsYXJhZGEgZW4gw6FtYml0byBUUkFDS0lORyBleGlzdGUgZW4gbGEgdGFibGEKICAgICBgcGFnaW5hc2AgeSBlc3TDoSBoYWJpbGl0YWRhLgogIDQuIFF1ZSBsYXMgcnV0YXMgVFJBQ0tJTkdXRUIgbm8gZGVjbGFyYW4gcMOhZ2luYSBwb3IgZXJyb3IuCiAgNS4gUXVlIGxhcyBhY2Npb25lcyBxdWUgZXNjcmliZW4gZW4gJF9TRVNTSU9OIGxvIGRlY2xhcmFuLgogIDYuIFF1w6kgYWNjaW9uZXMgcGFyZWNlbiBkZSBlc2NyaXR1cmEgeSBubyBkZWNsYXJhbiBjb25leGlvblVuaWNhLgogIDcuIFF1ZSB0b2RhIGFjY2nDs24gaW52b2NhZGEgcG9yIGVsIGZyb250ZW5kIGV4aXN0ZSBlbiBlbCByZWdpc3Ryby4KCkVsIGRlc2N1YnJpbWllbnRvIGRlIG3Ds2R1bG9zIHVzYSBlbCBtaXNtbyBnbG9iKCkgcXVlIGluZGV4LnBocDogc29uIGxhCm1pc21hIGZ1ZW50ZSBkZSB2ZXJkYWQsIGRlIG1vZG8gcXVlIGVsIHNjcmlwdCBubyBwdWVkZSBkYXIgcG9yIGJ1ZW5vIHVuCm3Ds2R1bG8gcXVlIGxhIEFQSSBubyBzaXJ2YS4KClVzbzoKICBwaHAgYmFja2VuZC9iaW4vdmVyaWZpY2FyLXJ1dGFzLnBocAoKQ8OzZGlnbyBkZSBzYWxpZGEgMCBzaSB0b2RvIGVzIGNvcnJlY3RvLCAxIHNpIGhheSBlcnJvcmVzLCBkZSBtb2RvIHF1ZQpwdWVkZSBlbmNhZGVuYXJzZSBlbiB1biBkZXNwbGllZ3VlLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xHZW5lcmljIjoyOntzOjc6IgAqAG5hbWUiO3M6NzoicGFja2FnZSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MjA6InRyYWNraW5nXGJhY2tlbmRcYmluIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7cjo2NTtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbWV0YWRhdGEiO2E6MDp7fX0=";