LyoKICogUmVnZWRpdCBCdWxnYXJpYW4gcmVzb3VyY2VzCiAqCiAqIENvcHlyaWdodCAyMDA1IE1pbGtvIEtyYWNob3Vub3YKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKCkxBTkdVQUdFIExBTkdfQlVMR0FSSUFOLCBTVUJMQU5HX0RFRkFVTFQKCi8qU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUyAixO7h4OL/IOrr/vfu4uUg6vrsIPHv6PH66uAg8SDu8uzl8uro8uUiCiAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUgIs/w5ezg9eLgIOrr/vfu4uUg7vIg8e/o8frq4CDxIO7y7OXy6ujy5SIKRU5EKi8KCklEUl9SRUdFRElUX01FTlUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIibQ5ePo8fL68CIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIibC7Prq7egg9ODp6yDiIPDl4+jx8vrw4C4uLiIsICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNICImyOft5fHoIPTg6esg7vIg8OXj6PHy+vDgLi4uIiwgICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIibR4vrw5ugg8eUg8SDs8OXm7uIg8OXj6PHy+vAuLi4iLCBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiyOcm6uv+9+gg7PDl5u7iIPDl4+jx8vrwLi4uIiwgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIibP5ffg8lx0Q3RybCtQIiwgICAgICAgICAgICAgIElEX1JFR0lTVFJZX1BSSU5ULCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiyOcm9e7kIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0VYSVQKICAgIEVORAogICAgUE9QVVAgIibQ5eTg6vLo8ODt5SIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIibP8O7s5e3oIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIFBPUFVQICImze7iIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImyuv+9yIsICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiJtLl6vHy7uLgIPHy7unt7vHyIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJsTi7uj37eAg8fLu6e3u8fIiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRFdPUkQg8fLu6e3u8fIiLCAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImTXVsdGkgU3RyaW5nIFZhbHVlIiwgICAgIElEX0VESVRfTkVXX01VTFRJX1NUUklOR1ZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIibI5/Lw6OlcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIs/w5egm7OXt8+Lg6Vx0RjIiLCAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJsru7+jw4Okg6Ozl8u4g7eAg6uv+9+AiLCAgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICIm0vrw8ehcdEN0cmwrRiIsICAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAizeDs5fDoICbx6+Xk4uD5XHRGMyIsICAgICAgICAgICAgICBJRF9FRElUX0ZJTkRORVhULCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIibI5+Pr5eQiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICLL5e3y4CDt4CAm8frx8u7/7ejl8u4iLCAgICAgICAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJtDg5+Tl6+jy5esiLCAgICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIibO4e3u4uhcdEY1IiwgICAgICAgICAgICAgICAgSURfVklFV19SRUZSRVNICiAgICBFTkQKICAgIFBPUFVQICImzvLs5fLq6CIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIibE7uHg4ugg6vrsIO7y7OXy6ujy5SIsICAgICAgICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUwogICAgICAgIE1FTlVJVEVNICImz/Dl7OD17egg7vLs5fLq4CIsICAgICAgICAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUKICAgIEVORAogICAgUE9QVVAgIibP7uzu+SIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIibP7uzu+e3oIPLl7OhcdEYxIiwgICAgICAgICAgICBJRF9IRUxQX0hFTFBUT1BJQ1MKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJs7y7e7x7e4g8OXk4Ory7vDgIO3gIPHo8fLl7O3o/yDw5ePo8fL68CIsICAgICAgSURfSEVMUF9BQk9VVAogICAgRU5ECkVORAoKSURSX1BPUFVQX01FTlVTIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICBQT1BVUCAiIgogIEJFR0lOCglNRU5VSVRFTSAiJs/w7uzl7egiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCglNRU5VSVRFTSAiz/Du7OXt6CDk4u7o9+3o8uUg5ODt7egiLCAgICAgICAgICBJRF9FRElUX01PRElGWV9CSU4KCU1FTlVJVEVNIFNFUEFSQVRPUgoJTUVOVUlURU0gIibI5/Lw6OlcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCglNRU5VSVRFTSAiJs/w5ejs5e3z4uDpIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogIEVORAogIFBPUFVQICIiCiAgQkVHSU4KICAgICAgICBQT1BVUCAiJs3u4iIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJsrr/vciLCAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIibS5erx8u7i4CDx8u7p7e7x8iIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIibE4u7o9+3gIPHy7unt7vHyIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkRXT1JEIPHy7unt7vHyIiwgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJk11bHRpIFN0cmluZyBWYWx1ZSIsICAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImyOfy8OjpXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImz/Dl6Ozl7fPi4OlcdEYyIiwgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZFeHBvcnQuLi4iLCAgICAgICAgICAgICAgICAgIElEX0VESVRfRVhQT1JUCiAgICAgICAgTUVOVUlURU0gIibK7u/o8ODpIOjs5fLuIO3gIOrr/vfgIiwgICAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJtL68PHoXHRDdHJsK0YiLCAgICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgRU5ECkVORAoKCi8qCiAqIERpYWxvZwogKi8KCklERF9GSU5EIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDg1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLS+vDx5e3lIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgItL68PHoOiIsSURDX1NUQVRJQyw1LDcsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw0MCw1LDEyNSwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBMVEVYVCAgICAgICAgICAgItL68PHoIOI6IixJRENfU1RBVElDLDUsIDIyLCAxMTksIDgKICAgIENIRUNLQk9YICAgICAgICAiyuv+9+7i5SIsIElEQ19GSU5EX0tFWVMsIDUsIDM0LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBXU19HUk9VUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgQ0hFQ0tCT1ggICAgICAgICLI7OXt4CDt4CDx8u7p7e7x8ugiLCBJRENfRklORF9WQUxVRVMsIDUsIDQ2LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAi0frk+vDm4O3o5SDt4CDx8u7p7e7x8ugiLCBJRENfRklORF9DT05URU5ULCA1LCA1OCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgItL68PHoIOfgIPbl6+j/IO3o5yIsIElEQ19GSU5EX1dIT0xFLCA1LCA3MCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBERUZQVVNIQlVUVE9OICAgItL68PHoIixJRE9LLDE3NSw1LDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIsfg8uLu8OgiLElEQ0FOQ0VMLDE3NSwyMiwzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfQURERkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIsTu4eDi6CDu8uzl8urgIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIsjs5ToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNDAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAizvLs5e3oIixJRENBTkNFTCwxNzUsNDAsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0RFTEZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDkwClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLP8OXs4PXt6CDu8uzl8urgIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIsjs5ToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBMSVNUQk9YICAgICAgICAgSURDX05BTUVfTElTVCw1LDE1LDIwMCw1MiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IExCU19TT1JUIHwgTEJTX05PSU5URUdSQUxIRUlHSFQgfCBXU19WU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw3MywzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICLO8uzl7egiLElEQ0FOQ0VMLDE3NSw3MywzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfRURJVF9TVFJJTkcgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gItDl5ODq8ujw4Okg8ejs4u7r5e0g7ejnIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIsjs5SDt4CDx8u7p7e7x8vLgOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICLE4O3t6DoiLElEQ19TVEFUSUMsNSwzMCwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDYwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIs7y7OXt6CIsSURDQU5DRUwsMTc1LDYwLDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfRFdPUkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIyMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLQ5eTg6vLo8ODpIERXT1JEIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIsjs5SDt4CDx8u7p7e7x8vLgOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIxMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICLE4O3t6DoiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCw5MCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICLO8e3u4uAiLCBJRENfRFdPUkRfQkFTRSwgMTIwLCAzMCwgOTUsIDM3LCBCU19HUk9VUEJPWAogICAgQVVUT1JBRElPQlVUVE9OICLY5fHy4O3l5OXx5fLo9+3gIiwgSURDX0RXT1JEX0hFWCwgMTMwLCA0MCwgODAsIDEwLCBXU19UQUJTVE9QCiAgICBBVVRPUkFESU9CVVRUT04gIsTl8eXy6Pft4CIsIElEQ19EV09SRF9ERUMsIDEzMCwgNTIsIDcwLCAxMCwgV1NfVEFCU1RPUAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNTAsODAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAizvLs5e3oIixJRENBTkNFTCwxODUsODAsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9CSU5BUlkgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLQ5eTg6vLo8ODpIOTi7uj37eAg8fLu6e3u8fIiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiyOzlIO3gIPHy7unt7vHy8uA6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEx8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIsTg7e3oOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIENPTlRST0wgICAgICAgICAiIixJRENfVkFMVUVfREFUQSwiSGV4RWRpdCIsV1NfVEFCU1RPUCw0LDQwLDE2MCw0MAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsODAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAizvLs5e3oIixJRENBTkNFTCwxNzUsODAsMzAsMTEsV1NfR1JPVVAKRU5ECgovKgogKiBTdHJpbmcgVGFibGUKICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0xJU1RfQ09MVU1OX05BTUUgICAgIsjs5SIKICAgIElEU19MSVNUX0NPTFVNTl9UWVBFICAgICLS6O8iCiAgICBJRFNfTElTVF9DT0xVTU5fREFUQSAgICAixODt7egiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19BUFBfVElUTEUgICAgICAgICAgICLQ5eTg6vLu8CDt4CDx6PHy5ezt6P8g8OXj6PHy+vAiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX01FTlUgICAgICAgICLR+uT68ObgIOru7ODt5Ogg5+Ag8+/w4OLr5e3o5SDt4CD25evo/yDw5ePo8fL68CIKICAgIElEX0VESVRfTUVOVSAgICAgICAgICAgICLR+uT68ObgIOru7ODt5Ogg5+Ag8OXk4Ory6PDg7eUg7eAg8fLu6e3u8fLoIOjr6CDq6/737uLlIgogICAgSURfVklFV19NRU5VICAgICAgICAgICAgItH65Prw5uAg6u7s4O3k6CDn4CDv5fDx7u3g6+jn6PDg7eUg7eAg4vrt+O3o/yDi6OQg7eAg8OXk4Ory7vDgIgogICAgSURfRkFWT1JJVEVTX01FTlUgICAgICAgItH65Prw5uAg6u7s4O3k6CDn4CDk7vHy+u8g5O4g9+Xx8u4g6Ofv7uvn4uDt6CDq6/737uLlIgogICAgSURfSEVMUF9NRU5VICAgICAgICAgICAgItH65Prw5uAg6u7s4O3k6CDn4CDo5+Lo6uLg7eUg7eAg7+7s7vkg5+Ag8OXk4Ory7vDgIO3gIPDl4+jx8vrw4CIKICAgIElEX0VESVRfTkVXX01FTlUgICAgICAgICLR+uT68ObgIOru7ODt5Ogg5+Ag8frn5ODi4O3lIO3gIO3u4ugg8fLu6e3u8fLoIOjr6CDq6/737uLlIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9FRElUX01PRElGWSAgICAgICAgICAiz/Du7OXt/yDk4O3t6PLlIOIg8fLu6e3u8fLy4CIKICAgIElEX0VESVRfTkVXX0tFWSAgICAgICAgICLE7uHg4v8g7e7iIOrr/vciCiAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRSAixO7h4OL/IO3u4uAg8fLu6e3u8fIg7vIg8ujvIPHo7OLu6+XtIO3o5yIKICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFICLE7uHg4v8g7e7i4CDk4u7o9+3gIPHy7unt7vHyIgogICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRSAgIsTu4eDi/yDt7uLgIERXT1JEIPHy7unt7vHyIgogICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFICLC7Prq4uAg8uXq8fLu4iD04OnrIOIg8ejx8uXs7ej/IPDl4+jx8vrwIgogICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAix+Dv6PHi4CD2/+vu8u4g6OvoIPfg8fIg7vIg8frk+vDm4O3o5fLuIO3gIPHo8fLl7O3o/yDw5ePo8fL68CDi+uIg8uXq8fLu4iD04OnrIgogICAgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgItHi+vDn4uAg8eUg8frxIPHo8fLl7O3o/yDw5ePo8fL68CDt4CDk8PPjIOru7O/+8vrwIgogICAgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIs/w5erw4PL/4uAg4vD65+rg8uAg8frxIPHo8fLl7O3o/yDw5ePo8fL68CDt4CDk8PPjIOru7O/+8vrwIgogICAgSURfUkVHSVNUUllfUFJJTlQgICAgICAgItDg5+/l9+Dy4uAg9uXr6P8g6OvoIPfg8fIg7vIg8ejx8uXs7ej/IPDl4+jx8vrwIgovKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAiT3BlbnMgcmVnaXN0cnkgZWRpdG9yIGhlbHAiICovCiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAiz+7q4Ofi4CDo7fTu8Ozg9uj/IOfgIO/w7uPw4OzgLCDi5fDx6P/y4CDoIODi8u7w8ero8uUg7/Dg4uAiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX0VYSVQgICAgICAgICLI5+vo5+Ag7vIg8OXk4Ory7vDgIO3gIPHo8fLl7O3o/yDw5ePo8fL68CIKICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUyAixO7h4OL/IOrr/vfu4uUg6vrsIPHv6PH66uAg8SDu8uzl8uro8uUuLi4iCiAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUgIs/w5ezg9eLgIOrr/vfu4uUg7vIg8e/o8frq4CDxIO7y7OXy6ujy5S4uLiIKICAgIElEX1ZJRVdfU1RBVFVTQkFSICAgICAgICLP7urg5+LgIOjr6CDx6vDo4uAg6+Xt8uDy4CDt4CDx+vHy7v/t6OXy7iIKICAgIElEX1ZJRVdfU1BMSVQgICAgICAgICAgICLP8O7s5e3/IOzl8fLu7+7r7ubl7ejl8u4g7eAg8ODn5OXr6PLl6/8g7OXm5PMg5OLl8uUg7+7r7uLo7egg7eAg8OXk4Ory7vDgIgogICAgSURfVklFV19SRUZSRVNIICAgICAgICAgIs7h7e7i/+LgIPH65Prw5uDt6OXy7iDt4CDv8O7n7vDl9uAiCiAgICBJRF9FRElUX0RFTEVURSAgICAgICAgICAiyOfy8Oji4CDo5+Hw4O3u8u4iCiAgICBJRF9FRElUX1JFTkFNRSAgICAgICAgICAiz/Dl6Ozl7fPi4CDo5+Hw4O3u8u4iCiAgICBJRF9FRElUX0NPUFlLRVlOQU1FICAgICAiyu7v6PDgIOjs5fLuIO3gIOjn4fDg7ej/IOrr/vcg4iDx6PHy5ezt6P8g4fP05fAiCiAgICBJRF9FRElUX0ZJTkQgICAgICAgICAgICAi0vrw8egg5+Ag8uXq8fLu4iDt6Ocg4iDq6/737uLl8uUsIPHy7unt7vHy6PLlIOgg5ODt7ejy5SIKICAgIElEX0VESVRfRklORE5FWFQgICAgICAgICLS+vDx6CDx6+Xk4uD57vLuIOz/8fLuLCDt4CDq7uXy7iDx5SDx8OX54CDy5erx8uAg7vIg7/Dl5Oj47e7y7iDy+vDx5e3lIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRVJST1IJCSAgICAiw/Dl+OrgIgogICAgSURTX0JBRF9LRVkJCSAgICAix+D/4urg8uAg5+Ag6uv+9yAnJXMnIO3l8/Hv5fjt4CIKICAgIElEU19CQURfVkFMVUUgICAgICAgICAgICLH4P/i6uDy4CDn4CDx8u7p7e7x8iAnJXMnIO3l8/Hv5fjt4CIKICAgIElEU19VTlNVUFBPUlRFRF9UWVBFICAgICLN5SDs7ublIOTgIPDl5ODq8ujw4PLlIOrr/vfu4uUg7vIg8u7n6CDy6O8gKCV1KSIKICAgIElEU19UT09fQklHX1ZBTFVFICAgICAgICLR8u7p7e7x8vLgIOUg7/Dl6uDr5e3uIOPu6//s4CAoJXUpIgogICAgSURTX0RFTEVURV9CT1hfVElUTEUgICAgIs/u8uL68OTl8uUg6Ofy8Oji4O3l8u4g7eAg8fLu6e3u8fLy4CIKICAgIElEU19ERUxFVEVfQk9YX1RFWFQgICAgICLN4Ojx8ujt4CDr6CDo8erg8uUg5OAg6Ofy8Ojl8uUg8fLu6e3u8fLy4CAnJXMnPyIKICAgIElEU19ERUxFVEVfQk9YX1RFWFRfTVVMVElQTEUgIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhlc2UgdmFsdWVzPyIKICAgIElEU19ORVdLRVkgICAgICAgICAgICAgICLN7uIg6uv+9yAjJWQiCiAgICBJRFNfTkVXVkFMVUUgICAgICAgICAgICAize7i4CDx8u7p7e7x8iAjJWQiCiAgICBJRFNfTk9URk9VTkQgICAgICAgICAgICAiU2VhcmNoIHN0cmluZyAnJXMnIG5vdCBmb3VuZCIKRU5ECgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKgogKiBURVhUSU5DTFVERQogKi8KCjEgVEVYVElOQ0xVREUgRElTQ0FSREFCTEUKQkVHSU4KICAgICJyZXNvdXJjZS5oXDAiCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwo=