LyoKICogQ29weXJpZ2h0IDE5OTggSnVlcmdlbiBTY2htaWVkCiAqIENvcHlyaWdodCAyMDAzIE1hcmNlbG8gRHVhcnRlCiAqIENvcHlyaWdodCAyMDA2IEFt6XJpY28gSm9z6SBNZWxvCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKTUVOVV8wMDEgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgoJTUVOVUlURU0gIs1jb25lcyAmZ3JhbmRlcyIsCUZDSURNX1NIVklFV19CSUdJQ09OCglNRU5VSVRFTSAizWNvbmVzICZwZXF1ZW5vcyIsCUZDSURNX1NIVklFV19TTUFMTElDT04KCU1FTlVJVEVNICImTGlzdGEiLAkJRkNJRE1fU0hWSUVXX0xJU1RWSUVXCglNRU5VSVRFTSAiJkRldGFsaGVzIiwJCUZDSURNX1NIVklFV19SRVBPUlRWSUVXCkVORAoKCi8qCiBzaGVsbHZpZXcgYmFja2dyb3VuZCBtZW51CiovCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKTUVOVV8wMDIgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgoJUE9QVVAgIiIKCUJFR0lOCgkgIFBPUFVQICImRXhpYmlyIgoJICBCRUdJTgoJICAgIE1FTlVJVEVNICLNY29uZXMgJmdyYW5kZXMiLAlGQ0lETV9TSFZJRVdfQklHSUNPTgoJICAgIE1FTlVJVEVNICLNY29uZXMgJnBlcXVlbm9zIiwJRkNJRE1fU0hWSUVXX1NNQUxMSUNPTgoJICAgIE1FTlVJVEVNICImTGlzdGEiLAkJRkNJRE1fU0hWSUVXX0xJU1RWSUVXCgkgICAgTUVOVUlURU0gIiZEZXRhbGhlcyIsCUZDSURNX1NIVklFV19SRVBPUlRWSUVXCgkgIEVORAoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgUE9QVVAgIk8mcmdhbml6YXIg7WNvbmVzIgoJICBCRUdJTgoJICAgIE1FTlVJVEVNICJQb3IgJm5vbWUiLAkweDMwCS8qIGNvbHVtbiAwICovCgkgICAgTUVOVUlURU0gIlBvciAmdGlwbyIsCTB4MzIJLyogY29sdW1uIDIgKi8KCSAgICBNRU5VSVRFTSAiUG9yIHRhJm1hbmhvIiwJMHgzMQkvKiAuLi4gKi8KCSAgICBNRU5VSVRFTSAiUG9yICZkYXRhIiwJMHgzMwoJICAgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICAgIE1FTlVJVEVNICJBdXRvIG9yZ2FuaSZ6YXIiLAlGQ0lETV9TSFZJRVdfQVVUT0FSUkFOR0UKCSAgRU5ECgkgIE1FTlVJVEVNICJBbGluJmhhciDtY29uZXMiLAlGQ0lETV9TSFZJRVdfU05BUFRPR1JJRAoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgTUVOVUlURU0gIiZBdHVhbGl6YXIiLAkJRkNJRE1fU0hWSUVXX1JFRlJFU0gKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICJDbyZsYXIiLAkJRkNJRE1fU0hWSUVXX0lOU0VSVAoJICBNRU5VSVRFTSAiQ29sYXIgYSZ0YWxobyIsCUZDSURNX1NIVklFV19JTlNFUlRMSU5LCgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBQT1BVUCAiTm92byIKCSAgQkVHSU4KCSAgICBNRU5VSVRFTSAiJlBhc3RhIiwJRkNJRE1fU0hWSUVXX05FV0ZPTERFUgoJICAgIE1FTlVJVEVNICImQXRhbGhvIiwJRkNJRE1fU0hWSUVXX05FV0xJTksKCSAgICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgRU5ECgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBNRU5VSVRFTSAiUHJvcHJpZWRhZGVzIiwJRkNJRE1fU0hWSUVXX1BST1BFUlRJRVMKCUVORApFTkQKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFCgpNRU5VXzAwMiBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCglQT1BVUCAiIgoJQkVHSU4KCSAgUE9QVVAgIiZNb3N0cmFyIgoJICBCRUdJTgoJICAgIE1FTlVJVEVNICLNY29uZXMgJmdyYW5kZXMiLAlGQ0lETV9TSFZJRVdfQklHSUNPTgoJICAgIE1FTlVJVEVNICLNY29uZXMgJnBlcXVlbm9zIiwJRkNJRE1fU0hWSUVXX1NNQUxMSUNPTgoJICAgIE1FTlVJVEVNICImTGlzdGEiLAkJRkNJRE1fU0hWSUVXX0xJU1RWSUVXCgkgICAgTUVOVUlURU0gIiZEZXRhbGhlcyIsCUZDSURNX1NIVklFV19SRVBPUlRWSUVXCgkgIEVORAoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgUE9QVVAgIk8mcmdhbml6YXIg7WNvbmVzIgoJICBCRUdJTgoJICAgIE1FTlVJVEVNICJQb3IgJm5vbWUiLAkweDMwCS8qIGNvbHVtbiAwICovCgkgICAgTUVOVUlURU0gIlBvciAmdGlwbyIsCTB4MzIJLyogY29sdW1uIDIgKi8KCSAgICBNRU5VSVRFTSAiUG9yIHRhJm1hbmhvIiwJMHgzMQkvKiAuLi4gKi8KCSAgICBNRU5VSVRFTSAiUG9yICZkYXRhIiwJMHgzMwoJICAgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICAgIE1FTlVJVEVNICJBdXRvIG9yZ2FuaSZ6YXIiLAlGQ0lETV9TSFZJRVdfQVVUT0FSUkFOR0UKCSAgRU5ECgkgIE1FTlVJVEVNICJBbGluJmhhciDtY29uZXMiLAlGQ0lETV9TSFZJRVdfU05BUFRPR1JJRAoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgTUVOVUlURU0gIiZBY3R1YWxpemFyIiwJCUZDSURNX1NIVklFV19SRUZSRVNICgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBNRU5VSVRFTSAiQ28mbGFyIiwJCUZDSURNX1NIVklFV19JTlNFUlQKCSAgTUVOVUlURU0gIkNvbGFyIGEmdGFsaG8iLAlGQ0lETV9TSFZJRVdfSU5TRVJUTElOSwoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgUE9QVVAgIk5vdm8iCgkgIEJFR0lOCgkgICAgTUVOVUlURU0gIiZQYXN0YSIsCUZDSURNX1NIVklFV19ORVdGT0xERVIKCSAgICBNRU5VSVRFTSAiJkF0YWxobyIsCUZDSURNX1NIVklFV19ORVdMSU5LCgkgICAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIEVORAoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgTUVOVUlURU0gIlByb3ByaWVkYWRlcyIsCUZDSURNX1NIVklFV19QUk9QRVJUSUVTCglFTkQKRU5ECgoKLyoKIHNoZWxsdmlldyBpdGVtIG1lbnUKKi8KTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpNRU5VX1NIVl9GSUxFIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KCVBPUFVQICIiCglCRUdJTgoJICBNRU5VSVRFTSAiJkV4cGxvcmFyIiwJCUZDSURNX1NIVklFV19FWFBMT1JFCgkgIE1FTlVJVEVNICJBJmJyaXIiLAkJRkNJRE1fU0hWSUVXX09QRU4KCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICJDJm9ydGFyIiwJCUZDSURNX1NIVklFV19DVVQKCSAgTUVOVUlURU0gIiZDb3BpYXIiLAkJRkNJRE1fU0hWSUVXX0NPUFkKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICJDcmlhciBhJnRhbGhvIiwJRkNJRE1fU0hWSUVXX0NSRUFURUxJTksKCSAgTUVOVUlURU0gIkUmeGNsdWlyIiwJCUZDSURNX1NIVklFV19ERUxFVEUKCSAgTUVOVUlURU0gIiZSZW5vbWVhciIsCQlGQ0lETV9TSFZJRVdfUkVOQU1FCgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBNRU5VSVRFTSAiJlByb3ByaWVkYWRlcyIsCUZDSURNX1NIVklFV19QUk9QRVJUSUVTCglFTkQKRU5ECgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpTSEJSU0ZPUkZPTERFUl9NU0dCT1ggRElBTE9HIExPQURPTkNBTEwgTU9WRUFCTEUgRElTQ0FSREFCTEUgMTUsIDQwLCAxODgsIDE5MgpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUgfCBEU19NT0RBTEZSQU1FIHwgRFNfU0VURk9OVCB8IERTXzNETE9PSwpDQVBUSU9OICJQcm9jdXJhciBwYXN0YSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiBERUZQVVNIQlVUVE9OICJPSyIsIDEsIDgwLCAxNzYsIDUwLCAxMiwgQlNfREVGUFVTSEJVVFRPTiB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiQ2FuY2VsYXIiLCAyLCAxMzQsIDE3NiwgNTAsIDEyLCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKIExURVhUICIiLCBJRERfVElUTEUsIDQsIDQsIDE4MCwgMTIKIExURVhUICIiLCBJRERfU1RBVFVTLCA0LCAyNSwgMTgwLCAxMgogQ09OVFJPTCAiIiwgSUREX1RSRUVWSUVXLCAiU3lzVHJlZVZpZXczMiIsCiAJVFZTX0hBU0JVVFRPTlMgfCBUVlNfSEFTTElORVMgfCBUVlNfTElORVNBVFJPT1QgfAoJV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwKCTQsIDQwLCAxODAsIDEyMAp9CgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpTSEVMTF9BQk9VVF9NU0dCT1ggRElBTE9HIExPQURPTkNBTEwgTU9WRUFCTEUgRElTQ0FSREFCTEUgMTUsIDQwLCAyMTAsIDE1MgpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19WSVNJQkxFIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiU29icmUgJXMiCkZPTlQgMTAsICJNUyBTaGVsbCBEbGciCnsKIERFRlBVU0hCVVRUT04gIk9LIiwgSURPSywgMTUzLCAxMzMsIDUwLCAxMiwgV1NfVEFCU1RPUAogTElTVEJPWCA5OSwgOCwgNjUsIDEzNywgODIsIExCU19OT1RJRlkgfCBXU19WU0NST0xMIHwgV1NfQk9SREVSCiBJQ09OICIiLCAxMDg4LCAxMCwgMTAsIDE0LCAxNgogTFRFWFQgIiIsIDEwMCwgMzAsIDEwLCAxMzcsIDEwCiBMVEVYVCAiIiwgMTAxLCAzMCwgMjIsIDEzNywgMTAKIExURVhUICJXaW5lIGZvaSBkaXNwb25pYmlsaXphZG8gcG9yOiIsIDk4LCA4LCA1NSwgMTM3LCAxMAp9CgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKU0hFTExfQUJPVVRfTVNHQk9YIERJQUxPRyBMT0FET05DQUxMIE1PVkVBQkxFIERJU0NBUkRBQkxFIDE1LCA0MCwgMjEwLCAxNTIKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfVklTSUJMRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkFjZXJjYSBkbyAlcyIKRk9OVCAxMCwgIk1TIFNoZWxsIERsZyIKewogREVGUFVTSEJVVFRPTiAiT0siLCBJRE9LLCAxNTMsIDEzMywgNTAsIDEyLCBXU19UQUJTVE9QCiBMSVNUQk9YIDk5LCA4LCA2NSwgMTM3LCA4MiwgTEJTX05PVElGWSB8IFdTX1ZTQ1JPTEwgfCBXU19CT1JERVIKIElDT04gIiIsIDEwODgsIDEwLCAxMCwgMTQsIDE2CiBMVEVYVCAiIiwgMTAwLCAzMCwgMTAsIDEzNywgMTAKIExURVhUICIiLCAxMDEsIDMwLCAyMiwgMTM3LCAxMAogTFRFWFQgIldpbmUgZGlzcG9uaWJpbGl6YWRvIHBvcjoiLCA5OCwgOCwgNTUsIDEzNywgMTAKfQoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKU0hFTExfUlVOX0RMRyBESUFMT0cgTE9BRE9OQ0FMTCBNT1ZFQUJMRSBESVNDQVJEQUJMRSAwLCAwLCAyMjcsIDk1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX1ZJU0lCTEUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICIiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogSUNPTiAiIiwgMTIyOTcsIDcsIDExLCAxOCwgMjAsIFdTX1ZJU0lCTEUKIExURVhUICJEaWdpdGUgbyBub21lIGRvIHByb2dyYW1hLCBwYXN0YSwgZG9jdW1lbnRvLCBvdSBlbmRlcmXnbyBJbnRlcm5ldCwgcXVlIG8gV2luZSBpcuEgYWJy7S1sbyBwYXJhIHZvY+ouIiwgMTIyODksIDM2LCAxMSwgMTgyLCAxOAogTFRFWFQgIiZBYnJpcjoiLCAxMjMwNSwgNywgMzksIDI0LCAxMAogQ09OVFJPTCAiIiwgMTIyOTgsICJDT01CT0JPWCIsIFdTX1RBQlNUT1AgfCBXU19HUk9VUCB8IFdTX1ZTQ1JPTEwgfCBXU19WSVNJQkxFIHwgQ0JTX0RJU0FCTEVOT1NDUk9MTCB8IENCU19BVVRPSFNDUk9MTCB8IENCU19EUk9QRE9XTiwgMzYsIDM3LCAxODMsIDEwMAogREVGUFVTSEJVVFRPTiAiT0siLCBJRE9LLCA2MiwgNjMsIDUwLCAxNCwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiQ2FuY2VsYXIiLCBJRENBTkNFTCwgMTE2LCA2MywgNTAsIDE0LCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICImUHJvY3VyYXIuLi4iLCAxMjI4OCwgMTcwLCA2MywgNTAsIDE0LCBXU19UQUJTVE9QCn0KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFCgpTSEVMTF9SVU5fRExHIERJQUxPRyBMT0FET05DQUxMIE1PVkVBQkxFIERJU0NBUkRBQkxFIDAsIDAsIDIyNywgOTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfVklTSUJMRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiBJQ09OICIiLCAxMjI5NywgNywgMTEsIDE4LCAyMCwgV1NfVklTSUJMRQogTFRFWFQgIkRpZ2l0ZSBvIG5vbWUgZG8gcHJvZ3JhbWEsIHBhc3RhLCBkb2N1bWVudG8sIG91IGVuZGVyZedvIEludGVybmV0LCBxdWUgbyBXaW5lIGly4SBhYnLtLWxvLiIsIDEyMjg5LCAzNiwgMTEsIDE4MiwgMTgKIExURVhUICImQWJyaXI6IiwgMTIzMDUsIDcsIDM5LCAyNCwgMTAKIENPTlRST0wgIiIsIDEyMjk4LCAiQ09NQk9CT1giLCBXU19UQUJTVE9QIHwgV1NfR1JPVVAgfCBXU19WU0NST0xMIHwgV1NfVklTSUJMRSB8IENCU19ESVNBQkxFTk9TQ1JPTEwgfCBDQlNfQVVUT0hTQ1JPTEwgfCBDQlNfRFJPUERPV04sIDM2LCAzNywgMTgzLCAxMDAKIERFRlBVU0hCVVRUT04gIk9LIiwgSURPSywgNjIsIDYzLCA1MCwgMTQsIFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIkNhbmNlbGFyIiwgSURDQU5DRUwsIDExNiwgNjMsIDUwLCAxNCwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiJlByb2N1cmFyLi4uIiwgMTIyODgsIDE3MCwgNjMsIDUwLCAxNCwgV1NfVEFCU1RPUAp9CgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQp7CiAgICAgICAgLyogY29sdW1ucyBpbiB0aGUgc2hlbGx2aWV3ICovCglJRFNfU0hWX0NPTFVNTjEJCSJBcnF1aXZvIgoJSURTX1NIVl9DT0xVTU4yCQkiVGFtYW5obyIKCUlEU19TSFZfQ09MVU1OMwkJIlRpcG8iCglJRFNfU0hWX0NPTFVNTjQJCSJNb2RpZmljYWRvIgoJSURTX1NIVl9DT0xVTU41CQkiQXRyaWJ1dG9zIgoJSURTX1NIVl9DT0xVTU42CQkiVGFtYW5obyIKCUlEU19TSFZfQ09MVU1ONwkJIkRpc3Bvbu12ZWwiCglJRFNfU0hWX0NPTFVNTjgJCSJOb21lIgoJSURTX1NIVl9DT0xVTU45CQkiQ29tZW504XJpb3MiCglJRFNfU0hWX0NPTFVNTjEwCSJEb25vIgoJSURTX1NIVl9DT0xVTU4xMQkiR3J1cG8iCgogICAgICAgIC8qIHNwZWNpYWwgZm9sZGVycyAqLwoJSURTX0RFU0tUT1AJCSLBcmVhIGRlIHRyYWJhbGhvIgoJSURTX01ZQ09NUFVURVIJCSJNZXUgY29tcHV0YWRvciIKCiAgICAgICAgLyogY29udGV4dCBtZW51cyAqLwoJSURTX1ZJRVdfTEFSR0UJCSLNY29uZXMgJmdyYW5kZXMiCglJRFNfVklFV19TTUFMTAkJIs1jb25lcyAmcGVxdWVub3MiCglJRFNfVklFV19MSVNUCQkiJkxpc3RhIgoJSURTX1ZJRVdfREVUQUlMUwkiJkRldGFsaGVzIgoJSURTX1NFTEVDVAkJIlNlbGVjaW9uYXIiCglJRFNfT1BFTgkJIkFicmlyIgoKCUlEU19DUkVBVEVGT0xERVJfREVOSUVEICJO428gcG9kZSBjcmlhciBub3ZhIHBhc3RhOiBQZXJtaXNz428gbmVnYWRhLiIKCUlEU19DUkVBVEVGT0xERVJfQ0FQVElPTiAiRXJybyBkdXJhbnRlIGEgY3JpYefjbyBkYSBub3ZhIHBhc3RhIgoJSURTX0RFTEVURUlURU1fQ0FQVElPTiAiQ29uZmlybWFyIGV4Y2x1c+NvIGRlIGFycXVpdm8iCglJRFNfREVMRVRFRk9MREVSX0NBUFRJT04gIkNvbmZpcm1hciBleGNsdXPjbyBkZSBwYXN0YSIKCUlEU19ERUxFVEVJVEVNX1RFWFQgIlZvY+ogdGVtIGNlcnRlemEgcXVlIGRlc2VqYSBleGNsdWlyICclMSc/IgoJSURTX0RFTEVURU1VTFRJUExFX1RFWFQgIlZvY+ogdGVtIGNlcnRlemEgcXVlIGRlc2VqYSBleGNsdWlyIGVzdGVzICUxIGl0ZW5zPyIKCUlEU19PVkVSV1JJVEVGSUxFX1RFWFQgIlNvYnJlZXNjcmV2ZXIgYXJxdWl2byAlMT8iCglJRFNfT1ZFUldSSVRFRklMRV9DQVBUSU9OICJDb25maXJtYXIgc29icmVlc2NyZXZlciBhcnF1aXZvIgoKICAgICAgICAvKiBtZXNzYWdlIGJveCBzdHJpbmdzICovCglJRFNfUkVTVEFSVF9USVRMRSAgICAgICAiUmVpbmljaWFyIgoJSURTX1JFU1RBUlRfUFJPTVBUICAgICAgIlZvY+ogcXVlciBzaW11bGFyIGEgcmVpbmljaWFsaXph5+NvIGRvIFdpbmRvd3M/IgoJSURTX1NIVVRET1dOX1RJVExFICAgICAgIkRlc2xpZ2FyIgoJSURTX1NIVVRET1dOX1BST01QVCAgICAgIlZvY+ogcXVlciBmaW5hbGl6YXIgYSBzZXNz428gbm8gV2luZT8iCgogICAgICAgIC8qIHNoZWxsIGZvbGRlciBwYXRoIGRlZmF1bHQgdmFsdWVzICovCglJRFNfUFJPR1JBTVMgICAgICAgICAgICAgICAgIk1lbnUgSW5pY2lhclxcUHJvZ3JhbWFzIgoJSURTX1BFUlNPTkFMICAgICAgICAgICAgICAgICJNZXVzIERvY3VtZW50b3MiCglJRFNfRkFWT1JJVEVTICAgICAgICAgICAgICAgIkZhdm9yaXRvcyIKCUlEU19TVEFSVFVQICAgICAgICAgICAgICAgICAiTWVudSBJbmljaWFyXFxQcm9ncmFtYXNcXEluaWNpYXIiCglJRFNfUkVDRU5UICAgICAgICAgICAgICAgICAgIlJlY2VudCIKCUlEU19TRU5EVE8gICAgICAgICAgICAgICAgICAiU2VuZFRvIgoJSURTX1NUQVJUTUVOVSAgICAgICAgICAgICAgICJNZW51IEluaWNpYXIiCglJRFNfTVlNVVNJQyAgICAgICAgICAgICAgICAgIk1pbmhhcyBN+nNpY2FzIgoJSURTX01ZVklERU8gICAgICAgICAgICAgICAgICJNZXVzIFbtZGVvcyIKCUlEU19ERVNLVE9QRElSRUNUT1JZICAgICAgICAiRGVza3RvcCIKCUlEU19ORVRIT09EICAgICAgICAgICAgICAgICAiTmV0SG9vZCIKCUlEU19URU1QTEFURVMgICAgICAgICAgICAgICAiVGVtcGxhdGVzIgoJSURTX0FQUERBVEEgICAgICAgICAgICAgICAgICJBcHBsaWNhdGlvbiBEYXRhIgoJSURTX1BSSU5USE9PRCAgICAgICAgICAgICAgICJQcmludEhvb2QiCglJRFNfTE9DQUxfQVBQREFUQSAgICAgICAgICAgIkNvbmZpZ3VyYef1ZXMgbG9jYWlzXFxEYWRvcyBkZSBhcGxpY2F0aXZvcyIKCUlEU19JTlRFUk5FVF9DQUNIRSAgICAgICAgICAiQ29uZmlndXJh5/VlcyBsb2NhaXNcXFRlbXBvcmFyeSBJbnRlcm5ldCBGaWxlcyIKCUlEU19DT09LSUVTICAgICAgICAgICAgICAgICAiQ29va2llcyIKCUlEU19ISVNUT1JZICAgICAgICAgICAgICAgICAiQ29uZmlndXJh5/VlcyBsb2NhaXNcXEhpc3TzcmljbyIKCUlEU19QUk9HUkFNX0ZJTEVTICAgICAgICAgICAiQXJxdWl2b3MgZGUgcHJvZ3JhbWFzIgoJSURTX01ZUElDVFVSRVMgICAgICAgICAgICAgICJNaW5oYXMgSW1hZ2VucyIKCUlEU19QUk9HUkFNX0ZJTEVTX0NPTU1PTiAgICAiQXJxdWl2b3MgZGUgcHJvZ3JhbWFzXFxBcnF1aXZvcyBjb211bnMiCglJRFNfQ09NTU9OX0RPQ1VNRU5UUyAgICAgICAgIkRvY3VtZW50b3MiCglJRFNfQURNSU5UT09MUyAgICAgICAgICAgICAgIk1lbnUgSW5pY2lhclxcUHJvZ3JhbWFzXFxGZXJyYW1lbnRhcyBBZG1pbmlzdHJhdGl2YXMiCglJRFNfQ09NTU9OX01VU0lDICAgICAgICAgICAgIkRvY3VtZW50b3NcXE1pbmhhcyBN+nNpY2FzIgoJSURTX0NPTU1PTl9QSUNUVVJFUyAgICAgICAgICJEb2N1bWVudG9zXFxNaW5oYXMgSW1hZ2VucyIKCUlEU19DT01NT05fVklERU8gICAgICAgICAgICAiRG9jdW1lbnRvc1xcTWV1cyBW7WRlb3MiCglJRFNfQ0RCVVJOX0FSRUEgICAgICAgICAgICAgIkNvbmZpZ3VyYef1ZXMgbG9jYWlzXFxEYWRvcyBkZSBhcGxpY2F0aXZvc1xcTWljcm9zb2Z0XFxDRCBCdXJuaW5nIgp9CgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKewogICAgICAgIC8qIGNvbHVtbnMgaW4gdGhlIHNoZWxsdmlldyAqLwoJSURTX1NIVl9DT0xVTU4xCQkiRmljaGVpcm8iCglJRFNfU0hWX0NPTFVNTjIJCSJUYW1hbmhvIgoJSURTX1NIVl9DT0xVTU4zCQkiVGlwbyIKCUlEU19TSFZfQ09MVU1ONAkJIk1vZGlmaWNhZG8iCglJRFNfU0hWX0NPTFVNTjUJCSJBdHJpYnV0b3MiCglJRFNfU0hWX0NPTFVNTjYJCSJUYW1hbmhvIgoJSURTX1NIVl9DT0xVTU43CQkiRGlzcG9u7XZlbCIKCUlEU19TSFZfQ09MVU1OOAkJIk5vbWUiCglJRFNfU0hWX0NPTFVNTjkJCSJDb21lbnThcmlvcyIKCUlEU19TSFZfQ09MVU1OMTAJIkRvbm8iCglJRFNfU0hWX0NPTFVNTjExCSJHcnVwbyIKCiAgICAgICAgLyogc3BlY2lhbCBmb2xkZXJzICovCglJRFNfREVTS1RPUAkJIsFyZWEgZGUgdHJhYmFsaG8iCglJRFNfTVlDT01QVVRFUgkJIk8gTWV1IENvbXB1dGFkb3IiCgogICAgICAgIC8qIGNvbnRleHQgbWVudXMgKi8KCUlEU19WSUVXX0xBUkdFCQkizWNvbmVzICZncmFuZGVzIgoJSURTX1ZJRVdfU01BTEwJCSLNY29uZXMgJnBlcXVlbm9zIgoJSURTX1ZJRVdfTElTVAkJIiZMaXN0YSIKCUlEU19WSUVXX0RFVEFJTFMJIiZEZXRhbGhlcyIKCUlEU19TRUxFQ1QJCSJTZWxlY2Npb25hciIKCUlEU19PUEVOCQkiQWJyaXIiCgoJSURTX0NSRUFURUZPTERFUl9ERU5JRUQgIk7jbyBwb2RlIGNyaWFyIG5vdmEgcGFzdGE6IFBlcm1pc3PjbyBuZWdhZGEuIgoJSURTX0NSRUFURUZPTERFUl9DQVBUSU9OICJFcnJvIGR1cmFudGUgYSBjcmlh5+NvIGRhIG5vdmEgcGFzdGEiCglJRFNfREVMRVRFSVRFTV9DQVBUSU9OICJDb25maXJtYXIgZXhjbHVz428gZGUgZmljaGVpcm8iCglJRFNfREVMRVRFRk9MREVSX0NBUFRJT04gIkNvbmZpcm1hciBleGNsdXPjbyBkZSBwYXN0YSIKCUlEU19ERUxFVEVJVEVNX1RFWFQgIlZUZW0gY2VydGV6YSBxdWUgZGVzZWphIGV4Y2x1aXIgJyUxJz8iCglJRFNfREVMRVRFTVVMVElQTEVfVEVYVCAiVGVtIGNlcnRlemEgcXVlIGRlc2VqYSBleGNsdWlyIGVzdGVzICUxIGl0ZW5zPyIKCUlEU19PVkVSV1JJVEVGSUxFX1RFWFQgIlNvYnJlZXNjcmV2ZXIgZmljaGVpcm8gJTE/IgoJSURTX09WRVJXUklURUZJTEVfQ0FQVElPTiAiQ29uZmlybWFyIHNvYnJlZXNjcmV2ZXIgZmljaGVpcm8iCgogICAgICAgIC8qIG1lc3NhZ2UgYm94IHN0cmluZ3MgKi8KCUlEU19SRVNUQVJUX1RJVExFICAgICAgICJSZWluaWNpYXIiCglJRFNfUkVTVEFSVF9QUk9NUFQgICAgICAiRGVzZWphIHNpbXVsYXIgYSByZWluaWNpYWxpemHn428gZG8gV2luZG93cz8iCglJRFNfU0hVVERPV05fVElUTEUgICAgICAiRGVzbGlnYXIiCglJRFNfU0hVVERPV05fUFJPTVBUICAgICAiRGVzZWphIGZpbmFsaXphciBhIHNlc3PjbyBubyBXaW5lPyIKCiAgICAgICAgLyogc2hlbGwgZm9sZGVyIHBhdGggZGVmYXVsdCB2YWx1ZXMgKi8KCUlEU19QUk9HUkFNUyAgICAgICAgICAgICAgICAiTWVudSBJbmljaWFyXFxQcm9ncmFtYXMiCglJRFNfUEVSU09OQUwgICAgICAgICAgICAgICAgIk9TIE1ldXMgRG9jdW1lbnRvcyIKCUlEU19GQVZPUklURVMgICAgICAgICAgICAgICAiRmF2b3JpdG9zIgoJSURTX1NUQVJUVVAgICAgICAgICAgICAgICAgICJNZW51IEluaWNpYXJcXFByb2dyYW1hc1xcSW5pY2lhciIKCUlEU19SRUNFTlQgICAgICAgICAgICAgICAgICAiUmVjZW50ZSIKCUlEU19TRU5EVE8gICAgICAgICAgICAgICAgICAiRW52aWFyIFBhcmEiCglJRFNfU1RBUlRNRU5VICAgICAgICAgICAgICAgIk1lbnUgSW5pY2lhciIKCUlEU19NWU1VU0lDICAgICAgICAgICAgICAgICAiQXMgTWluaGFzIE36c2ljYXMiCglJRFNfTVlWSURFTyAgICAgICAgICAgICAgICAgIk9zIE1ldXMgVu1kZW9zIgoJSURTX0RFU0tUT1BESVJFQ1RPUlkgICAgICAgICJFY3LjIgoJSURTX05FVEhPT0QgICAgICAgICAgICAgICAgICJOZXRIb29kIgoJSURTX1RFTVBMQVRFUyAgICAgICAgICAgICAgICJNb2RlbG9zIgoJSURTX0FQUERBVEEgICAgICAgICAgICAgICAgICJEYWRvcyBkZSBhcGxpY2Hn428iCglJRFNfUFJJTlRIT09EICAgICAgICAgICAgICAgIlByaW50SG9vZCIKCUlEU19MT0NBTF9BUFBEQVRBICAgICAgICAgICAiQ29uZmlndXJh5/VlcyBsb2NhaXNcXERhZG9zIGRlIGFwbGljYXRpdm9zIgoJSURTX0lOVEVSTkVUX0NBQ0hFICAgICAgICAgICJDb25maWd1cmHn9WVzIGxvY2Fpc1xcVGVtcG9yYXJ5IEludGVybmV0IEZpbGVzIgoJSURTX0NPT0tJRVMgICAgICAgICAgICAgICAgICJDb29raWVzIgoJSURTX0hJU1RPUlkgICAgICAgICAgICAgICAgICJDb25maWd1cmHn9WVzIGxvY2Fpc1xcSGlzdPNyaWNvIgoJSURTX1BST0dSQU1fRklMRVMgICAgICAgICAgICJGaWNoZWlyb3MgZGUgcHJvZ3JhbWFzIgoJSURTX01ZUElDVFVSRVMgICAgICAgICAgICAgICJBcyBNaW5oYXMgSW1hZ2VucyIKCUlEU19QUk9HUkFNX0ZJTEVTX0NPTU1PTiAgICAiRmljaGVpcm9zIGRlIHByb2dyYW1hc1xcRmljaGVpcm9zIGNvbXVucyIKCUlEU19DT01NT05fRE9DVU1FTlRTICAgICAgICAiRG9jdW1lbnRvcyIKCUlEU19BRE1JTlRPT0xTICAgICAgICAgICAgICAiTWVudSBJbmljaWFyXFxQcm9ncmFtYXNcXEZlcnJhbWVudGFzIEFkbWluaXN0cmF0aXZhcyIKCUlEU19DT01NT05fTVVTSUMgICAgICAgICAgICAiRG9jdW1lbnRvc1xcQXMgTWluaGFzIE36c2ljYXMiCglJRFNfQ09NTU9OX1BJQ1RVUkVTICAgICAgICAgIkRvY3VtZW50b3NcXEFzIE1pbmhhcyBJbWFnZW5zIgoJSURTX0NPTU1PTl9WSURFTyAgICAgICAgICAgICJEb2N1bWVudG9zXFxPcyBNZXVzIFbtZGVvcyIKCUlEU19DREJVUk5fQVJFQSAgICAgICAgICAgICAiQ29uZmlndXJh5/VlcyBsb2NhaXNcXERhZG9zIGRlIGFwbGljYXRpdm9zXFxNaWNyb3NvZnRcXEdyYXZh5+NvIGRlIENEIgp9Cg==