LyoKICogY3J5cHQzMiBkbGwgcmVzb3VyY2VzCiAqCiAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4YW5kZXIgTi4gU/hybmVzIDxhbGV4QHRoZWhhbmRvZmFnb255LmNvbT4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI2luY2x1ZGUgImNyeXB0cmVzLmgiCgpMQU5HVUFHRSBMQU5HX05PUldFR0lBTiwgU1VCTEFOR19OT1JXRUdJQU5fQk9LTUFMCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQp7CiAgICBJRFNfQVVUSE9SSVRZX0tFWV9JRCAiSWRlbnRpZmlzZXJlciBmb3IgYXV0ZW50aXNlcmluZ3Nu+GtrZWwiCiAgICBJRFNfS0VZX0FUVFJJQlVURVMgIk74a2tlbGVnZW5za2FwZXIiCiAgICBJRFNfS0VZX1VTQUdFX1JFU1RSSUNUSU9OICJCZWdyZW5zbmluZyBhdiBu+GtrZWxicnVrIgogICAgSURTX1NVQkpFQ1RfQUxUX05BTUUgIkFsdGVybmF0aXZ0IG5hdm4gZm9yIGVtbmUiCiAgICBJRFNfSVNTVUVSX0FMVF9OQU1FICJBbHRlcm5hdGl2dCBuYXZuIGZvciB1dHN0ZWRlciIKICAgIElEU19CQVNJQ19DT05TVFJBSU5UUyAiQmFzaXNiZWdyZW5zbmluZ2VyIgogICAgSURTX0tFWV9VU0FHRSAiTvhra2VsYnJ1ayIKICAgIElEU19DRVJUX1BPTElDSUVTICJTZXJ0aWZpa2F0aG9sZG5pbmdlciIKICAgIElEU19TVUJKRUNUX0tFWV9JREVOVElGSUVSICJJZGVudGlmaXNlcmVyIGZvciBlbW5lbvhra2VsIgogICAgSURTX0NSTF9SRUFTT05fQ09ERSAiQ1JMLWdydW5ua29kZSIKICAgIElEU19DUkxfRElTVF9QT0lOVFMgIkNSTC1kaXN0cmlidXNqb25zcHVua3RlciIKICAgIElEU19FTkhBTkNFRF9LRVlfVVNBR0UgIkZvcmJlZHJldCBu+GtrZWxicnVrIgogICAgSURTX0FVVEhPUklUWV9JTkZPX0FDQ0VTUyAiTXluZGlnaGV0LWluZm9ybWFzam9uc3RpbGdhbmciCiAgICBJRFNfQ0VSVF9FWFRFTlNJT05TICJTZXJ0aWZpa2F0dXR2aWRlbHNlciIKICAgIElEU19ORVhUX1VQREFURV9MT0NBVElPTiAiTmVzdGUgb3BwZGF0ZXJpbmdzcGxhc3NlcmluZyIKICAgIElEU19ZRVNfT1JfTk9fVFJVU1QgIkphIGVsbGVyIG5laSB0aWxsaXQiCiAgICBJRFNfRU1BSUxfQUREUkVTUyAiRS1wb3N0YWRyZXNzZSIKICAgIElEU19VTlNUUlVDVFVSRURfTkFNRSAiVXN0cnVrdHVyZXJ0IG5hdm4iCiAgICBJRFNfQ09OVEVOVF9UWVBFICJJbm5ob2xkc3R5cGUiCiAgICBJRFNfTUVTU0FHRV9ESUdFU1QgIk1lbGRpbmdzc2FtbWVuZHJhZyIKICAgIElEU19TSUdOSU5HX1RJTUUgIlNpZ25lcmluZ3N0aWRzcHVua3QiCiAgICBJRFNfQ09VTlRFUl9TSUdOICJUZWxsZXJzeW1ib2wiCiAgICBJRFNfQ0hBTExFTkdFX1BBU1NXT1JEICJVdGZvcmRyZSBwYXNzb3JkIgogICAgSURTX1VOU1RSVUNUVVJFRF9BRERSRVNTICJVc3RydWt0dXJlcnQgYWRyZXNzZSIKICAgIElEU19TTUlNRV9DQVBBQklMSVRJRVMgIlNNSU1FLWV2bmVyIgogICAgSURTX1BSRUZFUl9TSUdORURfREFUQSAiRm9ydHJla2sgc2lnbmVydCBkYXRhIgogICAgSURTX0NQUyAiQ1BTIgogICAgSURTX1VTRVJfTk9USUNFICJCcnVrZXJ2YXJzZWwiCiAgICBJRFNfT0NTUCAiT24tbGluZSBDZXJ0aWZpY2F0ZSBTdGF0dXMgUHJvdG9jb2wiCiAgICBJRFNfQ0FfSVNTVUVSICJVdHN0ZWRlciBmb3Igc2VydGlmaXNlcmluZ3NhdXRvcml0ZXQiCiAgICBJRFNfQ0VSVF9URU1QTEFURV9OQU1FICJOYXZuIHDlIHNlcnRpZmlzZXJpbmdzbWFsIgogICAgSURTX0NFUlRfVFlQRSAiU2VydGlmaWthdHR5cGUiCiAgICBJRFNfQ0VSVF9NQU5JRk9MRCAiU2VydGlmaWthdG1hbmdmb2xkIgogICAgSURTX05FVFNDQVBFX0NFUlRfVFlQRSAiTmV0c2NhcGUtc2VydGlmaWthdHR5cGUiCiAgICBJRFNfTkVUU0NBUEVfQkFTRV9VUkwgIk5ldHNjYXBlLWJhc2lzLVVSTCIKICAgIElEU19ORVRTQ0FQRV9SRVZPQ0FUSU9OX1VSTCAiTmV0c2NhcGUtdGlsYmFrZWthbGxpbmctVVJMIgogICAgSURTX05FVFNDQVBFX0NBX1JFVk9DQVRJT05fVVJMICJOZXRzY2FwZS1DQS10aWxiYWtla2FsbGluZy1VUkxVUkwiCiAgICBJRFNfTkVUU0NBUEVfQ0VSVF9SRU5FV0FMX1VSTCAiTmV0c2NhcGUtc2VydGlmaWthdGZvcm55aW5nLVVSTCIKICAgIElEU19ORVRTQ0FQRV9DQV9QT0xJQ1lfVVJMICJOZXRzY2FwZS1DQS1wb2xpdGlray1VUkwiCiAgICBJRFNfTkVUU0NBUEVfU1NMX1NFUlZFUl9OQU1FICJOZXRzY2FwZS1TU0wtdGplbmVybmF2biIKICAgIElEU19ORVRTQ0FQRV9DT01NRU5UICJOZXRzY2FwZS1rb21tZW50YXIiCiAgICBJRFNfU1BDX1NQX0FHRU5DWV9JTkZPICJTcGNTcEFnZW5jeUluZm8iCiAgICBJRFNfU1BDX0ZJTkFOQ0lBTF9DUklURVJJQSAiU3BjRmluYW5jaWFsQ3JpdGVyaWEiCiAgICBJRFNfU1BDX01JTklNQUxfQ1JJVEVSSUEgIlNwY01pbmltYWxDcml0ZXJpYSIKICAgIElEU19DT1VOVFJZICJMYW5kL1JlZ2lvbiIKICAgIElEU19PUkdBTklaQVRJT04gIk9yZ2FuaXNhc2pvbiIKICAgIElEU19PUkdBTklaQVRJT05BTF9VTklUICJPcmdhbmlzYXNqb25zZWxsIGVuaGV0IgogICAgSURTX0NPTU1PTl9OQU1FICJWYW5saWcgbmF2biIKICAgIElEU19MT0NBTElUWSAiTG9rYWxpdGV0IgogICAgSURTX1NUQVRFX09SX1BST1ZJTkNFICJGeWxrZSIKICAgIElEU19USVRMRSAiVGl0dGVsIgogICAgSURTX0dJVkVOX05BTUUgIk9wcGdpdHQgbmF2biIKICAgIElEU19JTklUSUFMUyAiSW5pdGlhbGVyIgogICAgSURTX1NVUl9OQU1FICJFdHRlcm5hdm4iCiAgICBJRFNfRE9NQUlOX0NPTVBPTkVOVCAiRG9tZW5la29tcG9uZW50IgogICAgSURTX1NUUkVFVF9BRERSRVNTICJHYXRlYWRyZXNzZSIKICAgIElEU19TRVJJQUxfTlVNQkVSICJTZXJpZW51bW1lciIKICAgIElEU19DQV9WRVJTSU9OICJDQS12ZXJzam9uIgogICAgSURTX0NST1NTX0NBX1ZFUlNJT04gIktyeXNzIENBLXZlcnNqb24iCiAgICBJRFNfU0VSSUFMSVpFRF9TSUdfU0VSSUFMX05VTUJFUiAiU2VyaWVudW1tZXIgZm9yIHNlcmlhbGlzZXJ0IHNpZ25hdHVyIgogICAgSURTX1BSSU5DSVBBTF9OQU1FICJIb3ZlZG5hdm4iCiAgICBJRFNfV0lORE9XU19QUk9EVUNUX1VQREFURSAiV2luZG93cy1wcm9kdWt0b3BwZGF0ZXJpbmciCiAgICBJRFNfRU5ST0xMTUVOVF9OQU1FX1ZBTFVFX1BBSVIgIklubnJ1bGxlcmluZ3MtbmF2bmV2ZXJkaXBhciIKICAgIElEU19PU19WRVJTSU9OICJPUy12ZXJzam9uIgogICAgSURTX0VOUk9MTE1FTlRfQ1NQICJJbm5ydWxsZXJpbmdzLUNTUCIKICAgIElEU19DUkxfTlVNQkVSICJDUkwtbnVtbWVyIgogICAgSURTX0RFTFRBX0NSTF9JTkRJQ0FUT1IgIkRlbHRhIENSTC1pbmRpa2F0b3IiCiAgICBJRFNfSVNTVUlOR19ESVNUX1BPSU5UICJVdHN0ZWRlciBkaXN0cmlidXNqb25zcHVua3QiCiAgICBJRFNfRlJFU0hFU1RfQ1JMICJOeWVzdGUgQ1JMIgogICAgSURTX05BTUVfQ09OU1RSQUlOVFMgIk5hdm5lYmVncmVuc25pbmdlciIKICAgIElEU19QT0xJQ1lfTUFQUElOR1MgIkZyYW1nYW5nc23ldGVrYXJ0bGVnZ2luZ2VyIgogICAgSURTX1BPTElDWV9DT05TVFJBSU5UUyAiRnJhbWdhbmdzbeV0ZWJlZ3Jlc25pbmdlciIKICAgIElEU19DUk9TU19DRVJUX0RJU1RfUE9JTlRTICJEaXN0cmlidXNqb25zcHVua3RlciBmb3Iga3J5c3Mtc2VydGlmaWthdCIKICAgIElEU19BUFBMSUNBVElPTl9QT0xJQ0lFUyAiRnJhbWdhbmdzbeV0ZXIgZm9yIHByb2dyYW1tZXJzIgogICAgSURTX0FQUExJQ0FUSU9OX1BPTElDWV9NQVBQSU5HUyAiRnJhbWdhbmdzbeV0ZWthcnRsZWdnaW5nZXIgZm9yIHByb2dyYW1tZXIiCiAgICBJRFNfQVBQTElDQVRJT05fUE9MSUNZX0NPTlNUUkFJTlRTICJGcmFtZ2FuZ3Nt5XRlYmVncmVuc25pbmdlciBmb3IgcHJvZ3JhbW1lciIKICAgIElEU19DTUNfREFUQSAiQ01DLWRhdGEiCiAgICBJRFNfQ01DX1JFU1BPTlNFICJDTVMtc3ZhciIKICAgIElEU19VTlNJR05FRF9DTUNfUkVRVUVTVCAiVXNpZ25lcnQgQ01DLWZvcmVzcPhyc2VsIgogICAgSURTX0NNQ19TVEFUVVNfSU5GTyAiQ01DLXN0YXR1c2luZm9ybWFzam9uIgogICAgSURTX0NNQ19FWFRFTlNJT05TICJDTUMtdXR2aWRlbHNlciIKICAgIElEU19DTUNfQVRUUklCVVRFUyAiQ01DLWVnZW5za2FwZXIiCiAgICBJRFNfUEtDU183X0RBVEEgIlBLQ1MgNyBEYXRhIgogICAgSURTX1BLQ1NfN19TSUdORUQgIlBLQ1MgNyBTaWduZXJ0IgogICAgSURTX1BLQ1NfN19FTlZFTE9QRUQgIlBLQ1MgNyBJbm5wYWtrZXQiCiAgICBJRFNfUEtDU183X1NJR05FRF9FTlZFTE9QRUQgIlBLQ1MgNyBTaWduZXJ0IElubnBha2tldCIKICAgIElEU19QS0NTXzdfRElHRVNURUQgIlBLQ1MgNyBGb3Jk+HlldCIKICAgIElEU19QS0NTXzdfRU5DUllQVEVEICJQS0NTIDcgS3J5cHRlcnQiCiAgICBJRFNfUFJFVklPVVNfQ0FfQ0VSVF9IQVNIICJGb3JyaWdlIENBLXNlcnRpZmlrYXRsYXBwc2thdXMiCiAgICBJRFNfQ1JMX1ZJUlRVQUxfQkFTRSAiVmlydHVlbHQgYmFzaXMtQ1JMLW51bW1lciIKICAgIElEU19DUkxfTkVYVF9QVUJMSVNIICJOZXN0ZSBDUkwtdXRnaXZpbmciCiAgICBJRFNfQ0FfRVhDSEFOR0UgIkNBLWtyeXB0ZXJpbmdzc2VydGlmaWthdCIKICAgIElEU19LRVlfUkVDT1ZFUllfQUdFTlQgIkFnZW50IGZvciBu+GtrZWxnamVub3BwcmV0dGluZyIKICAgIElEU19DRVJUSUZJQ0FURV9URU1QTEFURSAiSW5mb3JtYXNqb24gb20gc2VydGlmaWthdG1hbCIKICAgIElEU19FTlRFUlBSSVNFX1JPT1RfT0lEICJTdG9yc2Vsc2thcC1yb3QtT0lEIgogICAgSURTX1JETl9EVU1NWV9TSUdORVIgIlR1bGxlc2lnbmVyZXIiCiAgICBJRFNfQVJDSElWRURfS0VZX0FUVFIgIktyeXB0ZXJ0IHByaXZhdCBu+GtrZWwiCiAgICBJRFNfQ1JMX1NFTEZfQ0RQICJQdWJsaXNlcnQgQ1JMLXBsYXNzZXJpbmdlciIKICAgIElEU19SRVFVSVJFX0NFUlRfQ0hBSU5fUE9MSUNZICJI5W5kaGV2IHNlcnRpZmlrYXRsZW5rZXBvbGl0aWtrIgogICAgSURTX1RSQU5TQUNUSU9OX0lEICJUcmFuc2Frc2pvbnMtaWQiCiAgICBJRFNfU0VOREVSX05PTkNFICJHamVsZGVuZGUgc2VuZGVyIgogICAgSURTX1JFQ0lQSUVOVF9OT05DRSAiR2plbGRlbmRlIG1vdHRha2VyIgogICAgSURTX1JFR19JTkZPICJSZWcgaW5mbyIKICAgIElEU19HRVRfQ0VSVElGSUNBVEUgIkhlbnQgc2VydGlmaWthdCIKICAgIElEU19HRVRfQ1JMICJIZW50IENSTCIKICAgIElEU19SRVZPS0VfUkVRVUVTVCAiR2plbm9wcGxpdiBmb3Jlc3D4cnNlbCIKICAgIElEU19RVUVSWV9QRU5ESU5HICJTcPhycmluZyB2ZW50ZXIiCiAgICBJRFNfU09SVEVEX0NUTCAiVGlsbGl0c2xpc3RlIGZvciBzZXJ0aWZpa2F0ZXIiCiAgICBJRFNfQVJDSElWRURfS0VZX0NFUlRfSEFTSCAiQXJraXZlcnQgbvhra2Vsc2VydGlmaWthdGxhcHBza2F1cyIKICAgIElEU19QUklWQVRFX0tFWV9VU0FHRV9QRVJJT0QgIlByaXZhdCBu+GtrZWxicnVrcGVyaW9kZSIKICAgIElEU19DTElFTlRfSU5GT1JNQVRJT04gIktsaWVudGluZm9ybWFzam9uIgogICAgSURTX1NFUlZFUl9BVVRIRU5USUNBVElPTiAiVGplbmVyYXV0ZW50aXNlcmluZyIKICAgIElEU19DTElFTlRfQVVUSEVOVElDQVRJT04gIktsaWVudGF1dGVudGlzZXJpbmciCiAgICBJRFNfQ09ERV9TSUdOSU5HICJLb2Rlc2lnbmVyaW5nIgogICAgSURTX1NFQ1VSRV9FTUFJTCAiU2lra2VyIGUtcG9zdCIKICAgIElEU19USU1FX1NUQU1QSU5HICJUaWRzc3RlbXBsaW5nIgogICAgSURTX01JQ1JPU09GVF9UUlVTVF9MSVNUX1NJR05JTkcgIk1pY3Jvc29mdCB0aWxsaXRzbGlzdGVzaWduZXJpbmciCiAgICBJRFNfTUlDUk9TT0ZUX1RJTUVfU1RBTVBJTkcgIk1pY3Jvc29mdCB0aWRzc3RlbXBsaW5nIgogICAgSURTX0lQU0VDX0VORF9TWVNURU0gIklQLXNpa2tlcmhldHNlbmRlc3lzdGVtIgogICAgSURTX0lQU0VDX1RVTk5FTCAiSVAtc2lra2VyaGV0c3R1bm5lbC10ZXJtaW5lcmluZyIKICAgIElEU19JUFNFQ19VU0VSICJJUC1zaWtrZXJoZXRzYnJ1a2VyIgogICAgSURTX0VGUyAiS3J5cHRlcmVyIGZpbHN5c3RlbSIKICAgIElEU19XSFFMX0NSWVBUTyAiV2luZG93cyBtYXNraW52YXJlZHJpdmVyLWdvZGtqZW5uaW5nIgogICAgSURTX05UNV9DUllQVE8gIldpbmRvd3Mgc3l0ZW1rb21wb25lbnQtZ29ka2plbm5pbmciCiAgICBJRFNfT0VNX1dIUUxfQ1JZUFRPICJPRU0gV2luZG93cyBzeXN0ZW1rb21wb25lbnQtZ29ka2plbm5pbmciCiAgICBJRFNfRU1CRURERURfTlRfQ1JZUFRPICJJbm5lYnlnZ2V0IFdpbmRvd3Mgc3lzdGVta29tcG9uZW50LWdvZGtqZW5uaW5nIgogICAgSURTX0tFWV9QQUNLX0xJQ0VOU0VTICJO+GtrZWxwYWtrZWxpc2Vuc2VyIgogICAgSURTX0xJQ0VOU0VfU0VSVkVSICJMaXNlbnN0amVuZXItdmVyaWZpc2VyaW5nIgogICAgSURTX1NNQVJUX0NBUkRfTE9HT04gIlNtYXJ0IENhcmQtcOVsb2dnaW5nIgogICAgSURTX0RJR0lUQUxfUklHSFRTICJEaWdpdGFsZSByZXR0aWdoZXRlciIKICAgIElEU19RVUFMSUZJRURfU1VCT1JESU5BVElPTiAiS3ZhbGlmaXNlcnQgdW5kZXJvcmRpbmVyaW5nIgogICAgSURTX0tFWV9SRUNPVkVSWSAiTvhra2VsZ2plbm9wcHJldHRpbmciCiAgICBJRFNfRE9DVU1FTlRfU0lHTklORyAiRG9rdW1lbnRzaWduZXJpbmciCiAgICBJRFNfSVBTRUNfSUtFX0lOVEVSTUVESUFURSAiSVAtc2lra2VyaGV0IElLRSB2aWRlcmVrb21tZW4iCiAgICBJRFNfRklMRV9SRUNPVkVSWSAiRmlsZ2plbm9wcHJldHRpbmciCiAgICBJRFNfUk9PVF9MSVNUX1NJR05FUiAiUm90bGlzdGVzaWduZXJlciIKICAgIElEU19BTllfQVBQTElDQVRJT05fUE9MSUNJRVMgIkFsbGUgZnJhbWdhbmdzbeV0ZXIgZm9yIHByb2dyYW1tZXIiCiAgICBJRFNfRFNfRU1BSUxfUkVQTElDQVRJT04gIkthdGFsb2d0amVuZXN0ZSBlLXBvc3RyZXBsaWtlcmluZyIKICAgIElEU19FTlJPTExNRU5UX0FHRU5UICJBZ2VudCBmb3Igc2VydGlmaWthdGZvcmVzcPhyc2xlciIKICAgIElEU19MSUZFVElNRV9TSUdOSU5HICJMaXZzdGlkc2lnbmVyaW5nIgogICAgSURTX0FOWV9DRVJUX1BPTElDWSAiQWxsZSBmcmFtZ2FuZ3Nt5XRlciBmb3IgdXRzdGVkaW5nIgp9CgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQp7CiAgICBJRFNfTE9DQUxJWkVETkFNRV9ST09UICJLbGFyZXJ0ZSByb3RzZXJ0aWZpc2VyaW5nc2luc3RhbnNlciIKICAgIElEU19MT0NBTElaRUROQU1FX01ZICJQZXJzb25saWciCiAgICBJRFNfTE9DQUxJWkVETkFNRV9DQSAiTWVsbG9tbGlnZ2VuZGUgc2VydGlmaXNlcmluZ3NpbnN0YW5zZXIiCiAgICBJRFNfTE9DQUxJWkVETkFNRV9BRERSRVNTQk9PSyAiQW5kcmUgcGVyc29uZXIiCn0K