LyoKICogV2luZSBjb21tYW5kIHByb21wdCAoRHV0Y2ggcmVzb3VyY2VzKQogKgogKiBDb3B5cmlnaHQgKEMpIDIwMDMgSGFucyBMZWlkZWtrZXIKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19EVVRDSCwgU1VCTEFOR19ORVVUUkFMCgpTVFJJTkdUQUJMRQp7CiAgV0NNRF9BVFRSSUIsICJVaXRsZWcgYmlqIEFUVFJJQlxuIgogIFdDTURfQ0FMTCwKIkNBTEwgPGJhdGNoYmVzdGFuZHNuYWFtPiB3b3JkdCBnZWJydWlrdCBiaW5uZW4gZWVuIGJhdGNoYmVzdGFuZCBvbSBvcGRyYWNodGVuIHVpdFxuXAplZW4gYW5kZXIgYmF0Y2hiZXN0YW5kIGFhbiB0ZSByb2VwZW4uIEFscyBoZXQgYmF0Y2hiZXN0YW5kIGJlc3RhYXQga2VlcnQgZGUgY29udHJvbGUgdGVydWdcblwKbmFhciBoZXQgYmVzdGFuZCBkYXQgaGV0IGFhbnJpZXAuIFRoZSBDQUxMIG9wZHJhY2h0IGthbiBwYXJhbWV0ZXJzIG1lZWdldmVuIGFhbiBkZSBhYW4gdGVcblwKcm9lcGVuIHByb2NlZHVyZS5cblwKXG5cClZlcmFuZGVyaW5nZW4gbS5iLnQgZGlyZWN0b3J5LCBvbWdldmluZ3N2YXJpYWJlbGVuLCBldGMgZGllIHRvdCBzdGFuZCBrb21lbiBiaW5uZW4gZWVuXG5cCmFhbmdlcm9lcGVuIHByb2NlZHVyZSB3b3JkZW4gZ+tlcmZ0IGRvb3IgZGUgYWFucm9lcGVuZGUgcHJvY2VkdXJlLlxuIgoKICBXQ01EX0NELCAgICAgIlVpdGxlZyBiaWogQ0RcbiIKICBXQ01EX0NIRElSLCAgIlVpdGxlZyBiaWogQ0hESVJcbiIKCiAgV0NNRF9DTFMsICAgICJDTFMgc2Nob29udCBoZXQgc2NoZXJtXG4iCgogIFdDTURfQ09QWSwgICAiVWl0bGVnIGJpaiBDT1BZXG4iCiAgV0NNRF9DVFRZLCAgICJVaXRsZWcgYmlqIENUVFlcbiIKICBXQ01EX0RBVEUsICAgIlVpdGxlZyBiaWogREFURVxuIgogIFdDTURfREVMLCAgICAiVWl0bGVnIGJpaiBERUxcbiIKICBXQ01EX0RJUiwgICAgIlVpdGxlZyBiaWogRElSXG4iCgogIFdDTURfRUNITywKIkVDSE8gPHRla2VucmVla3M+IGdlZWZ0IDx0ZWtlbnJlZWtzPiB3ZWVyIG9wIGhldCBhY3RpZXZlIHVpdHZvZXJhcHBhcmFhdC5cblwKXG5cCkVDSE8gT04gem9yZ3QgZXJ2b29yIGRhdCBhbGxlIGhpZXJvcCB2b2xnZW5kZSBvcGRyYWNodGVuIGluIGVlbiBiYXRjaGJlc3RhbmQgd29yZGVuIHdlZXJnZWdldmVuXG5cCm9wIGhldCB1aXR2b2VyYXBwYXJhYXQgdm9vcmRhdCB6ZSB3b3JkZW4gdWl0Z2V2b2VyZC5cblwKXG5cCkVDSE8gT0ZGIGtlZXJ0IGhldCBlZmZlY3QgdmFuIGVlbiB2b29yYWZnYWFuZGUgRUNITyBPTiBvbSAoRUNITyBPRkYgaXNcblwKZGUgc3RhbmRhYXJkaW5zdGVsbGluZykuIFdlZXJnYXZlIHZhbiBkZSBFQ0hPIE9GRiBvcGRyYWNodCBrYW4gd29yZGVuIHZvb3Jrb21lbiBkb29yXG5cCmhldCB0ZSBsYXRlbiB2b29yYWZnYWFuIGRvb3IgaGV0IEAtdGVrZW4uXG4iCgogIFdDTURfRVJBU0UsICAiVWl0bGVnIGJpaiBFUkFTRVxuIgoKICBXQ01EX0ZPUiwKIkRlIEZPUiBvcGRyYWNodCB3b3JkdCBnZWJydWlrdCBvbSBlZW4gb3BkcmFjaHQgdWl0IHRlIHZvZXJlbiB2b29yIGllZGVyIHZhbiBlZW4gdmVyemFtZWxpbmcgYmVzdGFuZGVuLlxuXApcblwKU3ludGF4OiBGT1IgJXZhcmlhYmVsZSBJTiAodmVyemFtZWxpbmcpIERPIG9wZHJhY2h0XG5cClxuXApJbiBjbWQgaXMgaGV0IG5pZXQgdmVyZWlzdCBvbSBoZXQgJS10ZWtlbiBpbiBlZW4gRk9SIG9wZHJhY2h0IGluIGVlbiBiYXRjaGJlc3RhbmQgdGVcblwKdmVyZHViYmVsZW4uXG4iCgogIFdDTURfR09UTywKIkRlIEdPVE8gb3BkcmFjaHQgdmVycGxhYXRzdCB1aXR2b2VyaW5nIG5hYXIgZWVuIGFuZGVyZSBvcGRyYWNodCBiaW5uZW4gZWVuXG5cCmJhdGNoYmVzdGFuZC5cblwKXG5cCkhldCBkb2VsIHZhbiBlZW4gR09UTyBvcGRyYWNodCB3b3JkdCBhYW5nZWdldmVuIG1ldCBlZW4gbGFiZWwuIERhdCBsYWJlbCBtYWcgdWl0IG1heGltYWFsIDI1NSB0ZWtlbnNcblwKYmVzdGFhbiBtYWFyIGVyIG1vZ2VuIGdlZW4gc3BhdGllcyBpbiB2b29ya29tZW4gKGRpdCB2ZXJzY2hpbHQgYmlqIGFuZGVyZSBiZXN0dXJpbmdzc3lzdGVtZW4pLlxuXApBbHMgZXIgdHdlZSBvZiBtZWVyIGlkZW50aWVrZSBsYWJlbHMgYmVzdGFhbiBpbiBlZW4gYmF0Y2hiZXN0YW5kIGRhblxuXAp3b3JkdCBhbHRpamQgbmFhciBkZSBlZXJzdGUgZ2VzcHJvbmdlbi4gRWVuIHBvZ2luZyBvbSB0ZSBzcHJpbmdlbiBuYWFyIGVlbiBuaWV0IGJlc3RhYW5kXG5cCmxhYmVsIGJl62luZGlndCBoZXQgdWl0dm9lcmVuIHZhbiBoZXQgYmF0Y2hiZXN0YW5kLlxuXApcblwKR09UTyBoZWVmdCBnZWVuIGVmZmVjdCBhbHMgaGV0IGluIGVlbiBpbnRlcmFjdGlldmUgc2Vzc2llIHdvcmR0IGdlYnJ1aWt0LlxuIgoKICBXQ01EX0hFTFAsICAgIlVpdGxlZyBiaWogSEVMUFxuIgoKICBXQ01EX0lGLAoiSUYgd29yZHQgZ2VicnVpa3Qgb20gZWVuIG9wZHJhY2h0IHZvb3J3YWFyZGVsaWprIHVpdCB0ZSB2b2VyZW4uXG5cClxuXApTeW50YXg6CUlGIFtOT1RdIEVYSVNUIGJlc3RhbmRzbmFhbSBvcGRyYWNodFxuXAoJSUYgW05PVF0gdGVrZW5yZWVrczE9PXRla2VucmVla3MyIG9wZHJhY2h0XG5cCglJRiBbTk9UXSBFUlJPUkxFVkVMIGdldGFsIG9wZHJhY2h0XG5cClxuXApJbiBkZSB0d2VlZGUgdm9ybSB2YW4gZGUgb3BkcmFjaHQgbW9ldGVuIHRla2VucmVla3MxIGVuIHRla2VucmVla3MyIHR1c3NlbiBkdWJiZWxlXG5cCmFhbmhhbGluZ3N0ZWtlbiBzdGFhbi4gRGUgdmVyZ2VsaWpraW5nIGlzIG5pZXQgZ2V2b2VsaWcgdm9vciBoZXQgb25kZXJzY2hlaWQgdHVzc2VuXG5cCmhvb2ZkLSBlbiBrbGVpbmUgbGV0dGVycy5cbiIKCiAgV0NNRF9MQUJFTCwgICJMQUJFTCB3b3JkdCBnZWJydWlrdCBvbSBlZW4gc2NoaWpmbGFiZWwgdGUgd2lqemlnZW4uICBcblwKXG5cClN5bnRheDogTEFCRUwgW3NjaGlqZjpdXG5cCkRlIG9wZHJhY2h0IHZyYWFndCB1IG9tIGVlbiBuaWV1dyBsYWJlbCBpbiB0ZSB0aWtrZW4gdm9vciBkZSBvcGdlZ2V2ZW4gc2NoaWpmLlxuXApVIGt1bnQgaGV0IGxhYmVsIHZhbiBlZW4gc2NoaWpmIHRvbmVuIG1ldCBiZWh1bHAgdmFuIGRlIFZPTCBvcGRyYWNodC5cbiIKCiAgV0NNRF9NRCwgICAgICJVaXRsZWcgYmlqIE1EXG4iCiAgV0NNRF9NS0RJUiwgICJVaXRsZWcgYmlqIE1LRElSXG4iCiAgV0NNRF9NT1ZFLAoiTU9WRSB2ZXJwbGFhdHN0IGVlbiBiZXN0YW5kIG9mIGRpcmVjdG9yeSBuYWFyIGVlbiBhbmRlcmUgcGxlayBiaW5uZW4gaGV0IGJlc3RhbmRzc3lzdGVlbS5cblwKXG5cCkFscyBoZXQgb20gZWVuIGRpcmVjdG9yeSBnYWF0IGRhbiB3b3JkZW4gYWxsZSBiZXN0YW5kZW4gZW4gZGlyZWN0b3JpZXNcblwKZGFhcm9uZGVyIG9vayB2ZXJwbGFhdHN0LlxuXApcblwKTU9WRSB3ZXJrdCBuaWV0IGFscyBkZSBvdWRlIGVuIG5pZXV3ZSBsb2NhdGllcyB6aWNoIG9wIHZlcnNjaGlsbGVuZGUgRE9TLXNjaGlqdmVuIGJldmluZGVuLlxuIgoKICBXQ01EX1BBVEgsCiJQQVRIIHRvb24gb2Ygd2lqemlndCBoZXQgem9la3BhZCB2YW4gY21kLlxuXApcblwKRGUgb3BkcmFjaHQgUEFUSCB0b29udCBoZXQgaHVpZGlnZSB6b2VrcGFkIChkZSBiZWdpbndhYXJkZSB3b3JkdCBpblxuXApoZXQgYmVzdGFuZCBnZW5hYW1kIHdpbmUuY29uZiB0b2VnZWtlbmQpLiBPbSBoZXQgem9la3BhZCB0ZSB3aWp6aWdlbiBsYWF0IHUgZGUgUEFUSFxuXApvcGRyYWNodCB2b2xnZW4gZG9vciBkZSBuaWV1d2Ugd2FhcmRlLlxuXApcblwKSGV0IGlzIG9vayBtb2dlbGlqayBvbSBoZXQgem9la3BhZCB0ZSB3aWp6aWdlbiBtZXQgYmVodWxwIHZhbiBkZSBQQVRIIG9tZ2V2aW5nc3ZhcmlhYmVsZSxcblwKYmlqIHZvb3JiZWVsZDpcblwKCQlQQVRIICVQQVRIJTtjOlxcdGVtcCBcbiIKCiAgV0NNRF9QQVVTRSwKIlBBVVNFIHRvb250IGVlbiBiZXJpY2h0IG9wIGhldCBzY2hlcm06ICdUb2V0cyBFbnRlciBvbSBkb29yIHRlIGdhYW4nXG5cCmVuIHdhY2h0IHRvdGRhdCBkZSBnZWJydWlrZXIgZGUgRW50ZXItdG9ldHMgaW5kcnVrdC4gRGl0IGlzIHZvb3JhbCBoYW5kaWcgaW5cblwKYmF0Y2hiZXN0YW5kZW4gb20gZGUgZ2VicnVpa2VyIGluIHN0YWF0IHRlIHN0ZWxsZW4gb20gZGUgdWl0dm9lciB2YW4gZWVuIHZvb3JhZmdhYW5kZSBvcGRyYWNodFxuXAp0ZSBiZWtpamtlbiwgdm9vcmRhdCBoZXQgdmFuIGhldCBzY2hlcm0gc2NodWlmdC5cbiIKCiAgV0NNRF9QUk9NUFQsCiJQUk9NUFQgd2lqemlndCBkZSBwcm9tcHQgdmFuIGRlIG9wZHJhY2h0cmVnZWwuXG5cClxuXApEZSB0ZWtlbnJlZWtzIHZvbGdlbmQgb3AgZGUgUFJPTVBUIG9wZHJhY2h0IChlbiBkZSBzcGF0aWUgZGlyZWN0IGRhYXJuYSlcblwKdmVyc2NoaWpudCB2b29yYWFuIG9wIGRlIHJlZ2VsIGFscyBjbWQgd2FjaHQgb3AgaW52b2VyLlxuXApcblwKRGUgdm9sZ2VuZGUgdGVrZW5yZWVrc2VuIGhlYmJlbiBlZW4gc3BlY2lhbGUgYmV0ZWtlbmlzOlxuXApcblwKJCQgICAgZG9sbGFyLXRla2VuICAgICAgICAgICAgICRfICAgIG5pZXV3ZSByZWdlbCAgICAgICRiICAgIHBpanAtdGVrZW4gKHwpXG5cCiRkICAgIGh1aWRpZ2UgZGF0dW0gICAgICAgICAgICAkZSAgICBlc2NhcGUgICAgICAgICAgICAkZyAgICBncm90ZXItZGFuLXRla2VuICg+KVxuXAokbCAgICBrbGVpbmVyLWRhbi10ZWtlbiAoPCkgICAgJG4gICAgaHVpZGlnZSBzY2hpamYgICAgJHAgICAgaHVpZGlnZSBkaXJlY3RvcnlcblwKJHEgICAgaXMtZ2VsaWprLXRla2VuICg9KSAgICAgICR0ICAgIGh1aWRpZ2UgdGlqZCAgICAgICR2ICAgIGNtZCB2ZXJzaWVcblwKXG5cCk1lcmsgb3AgZGF0IGhldCB1aXR2b2VyZW4gdmFuIGRlIFBST01QVCBvcGRyYWNodCB6b25kZXIgZWVuIHRla2VucmVla3MgZGVcblwKcHJvbXB0IHRlcnVnemV0IG5hYXIgZGUgc3RhbmRhYXJkaW5zdGVsbGluZy4gRGF0IGlzIGRlIGh1aWRpZ2UgZGlyZWN0b3J5XG5cCihpbmNsdXNpZWYgc2NoaWpmYWFuZHVpZGluZykgZ2V2b2xnZCBlZW4gZ3JvdGVyLWRhbi10ZWtlbiAoPikuXG5cCihkYXQgc3RhYXQgZ2VsaWprIGFhbiBkZSBvcGRyYWNodDogUFJPTVBUICRwJGcpLlxuXApcblwKRGUgcHJvbXB0IGthbiBvb2sgZ2V3aWp6aWdkIHdvcmRlbiB2aWEgZGUgUFJPTVBUIG9tZ2V2aW5nc3ZhcmlhYmVsZSxcblwKZHVzIGRlIG9wZHJhY2h0ICdTRVQgUFJPTVBUPXRla2VucmVla3MnIGhlZWZ0IGhldHplbGZkZSBlZmZlY3QgYWxzICdQUk9NUFQgdGVrZW5yZWVrcydcbiIKCiAgV0NNRF9SRU0sCiJFZW4gb3BkcmFjaHRyZWdlbCBkaWUgYmVnaW50IG1ldCBSRU0gKGdldm9sZCBkb29yIGVlbiBzcGF0aWUpIHdvcmR0IG5pZXRcblwKdWl0Z2V2b2VyZCwgZW4ga2FuIGRhYXJvbSB3b3JkZW4gZ2VicnVpa3QgYWxzIGVlbiBjb21tZW50YWFycmVnZWwgaW4gZWVuIGJhdGNoYmVzdGFuZC5cbiIKCiAgV0NNRF9SRU4sICAgICJVaXRsZWcgYmlqIFJFTlxuIgogIFdDTURfUkVOQU1FLCAiVWl0bGVnIGJpaiBSRU5BTUVcbiIKICBXQ01EX1JELCAgICAgIlVpdGxlZyBiaWogUkRcbiIKICBXQ01EX1JNRElSLCAgIlVpdGxlZyBiaWogUk1ESVJcbiIKCiAgV0NNRF9TRVQsCiJTRVQgdG9vbnQgb2Ygd2lqemlndCBvbWdldmluZ3N2YXJpYWJlbGVuIHZhbiBjbWQuXG5cClxuXApTRVQgem9uZGVyIHBhcmFtZXRlcnMgdG9vbnQgYWxsZSBvbWdldmluZ3N2YXJpYWJlbGVuLlxuXApcblwKRGUgc3ludGF4IHZvb3IgaGV0IG1ha2VuIG9mIHdpanppZ2VuIHZhbiBlZW4gb21nZXZpbmdzdmFyaWFiZWxlIGlzOlxuXApcblwKICAgICAgU0VUIDx2YXJpYWJsZT49PHdhYXJkZT5cblwKXG5cCndhYXJiaWogPHZhcmlhYmxlPiBlbiA8d2FhcmRlPiB1aXQgdGVrZW5yZWVrc2VuIGJlc3RhYW4uIEVyIG1vZ2VuIGdlZW4gc3BhdGllc1xuXAp2b29yIGhldCBpcy1nZWxpamstdGVrZW4gc3RhYW4sIG5vY2ggbW9nZW4gZXIgaW4gZGUgdmFyaWFiZWxlbmFhbVxuXApzcGF0aWVzIHZvb3Jrb21lbi5cblwKXG5cCk9uZGVyIFdpbmUgd29yZGVuIGRlIG9tZ2V2aW5nc3ZhcmlhYmVsZW4gdmFuIGhldCBvbmRlcmxpZ2dlbmRlIGJlc3R1cmluZ3NzeXN0ZWVtXG5cCm9wZ2Vub21lbiBpbiBkZSBXaW4zMiBvbWdldmluZy4gRXIgenVsbGVuIGRhYXJvbSBkb29yZ2FhbnMgdmVlbCBtZWVyXG5cCnZhcmlhYmVsZW4gaW4gdm9vcmtvbWVuIGRhbiBpbiBlZW4gb29yc3Byb25rZWxpamtlIFdpbjMyIGltcGxlbWVudGF0aWUuIE1lcmsgb3AgZGF0IGhldFxuXApuaWV0IG1vZ2VsaWprIGlzIG9tIGRlIG9tZ2V2aW5nc3ZhcmlhYmVsZW4gdmFuIGhldCBvbmRlcmxpZ2dlbmRlIGJlc3R1cmluZ3NzeXN0ZWVtIHRlXG5cCndpanppZ2VuIHZhbnVpdCBjbWQuXG4iCgogIFdDTURfU0hJRlQsCiJTSElGVCB3b3JkdCBnZWJydWlrdCBpbiBlZW4gYmF0Y2hiZXN0YW5kIG9tIGVlbiBwYXJhbWV0ZXIgdGUgdmVyd2lqZGVyZW4gdmFuIGhldCBiZWdpbiB2YW5cblwKZGUgbGlqc3QuIER1cyBkZSB0d2VlZGUgcGFyYW1ldGVyIHdvcmR0IGRhbiBkZSBlZXJzdGUsIGVuem92b29ydC4gRGV6ZSBvcGRyYWNodCBoZWVmdCBnZWVuIGVmZmVjdFxuXAphbHMgaGlqIHdvcmR0IGFhbmdlcm9lcGVuIHZhbmFmIGRlIG9wZHJhY2h0cmVnZWwuXG4iCgogIFdDTURfVElNRSwgICAiVWl0bGVnIGJpaiBUSU1FXG4iCgogIFdDTURfVElUTEUsICAiV2lqemlndCBkZSBuYWFtIHZhbiBoZXQgY21kLXZlbnN0ZXIsIHN5bnRheDogVElUTEUgW3Rla2VucmVla3NdXG4iCgogIFdDTURfVFlQRSwKIlRZUEUgPGJlc3RhbmRzbmFhbT4ga29waetlcnQgPGJlc3RhbmRzbmFhbT4gbmFhciBoZXQgdWl0dm9lcmFwcGFyYWF0LlxuXApFciB3b3JkdCBuaWV0IGdlY29udHJvbGVlcmQgb2YgaGV0IGJlc3RhbmQgbGVlc2JhcmUgdGVrc3QgYmV2YXQuXG4iCgogIFdDTURfVkVSSUZZLAoiVkVSSUZZIHdvcmR0IGdlYnJ1aWt0IG9tIGRlIFZFUklGWS1zY2hha2VsYWFyIGFhbiBvZiB1aXQgdGUgemV0dGVuIG9mIG9tIGhlbSB0ZSB0ZXN0ZW4uIEdlbGRpZ2UgYWFucm9lcGVuIHppam46XG5cClxuXApWRVJJRlkgT04JWmV0IGRlIHNjaGFrZWxhYXIgYWFuXG5cClZFUklGWSBPRkYJWmV0IGRlIHNjaGFrZWxhYXIgdWl0XG5cClZFUklGWQkJVG9vbnQgT04gb2YgT0ZGIG5hYXIgZ2VsYW5nIGRlIHN0YW5kLlxuXApcblwKRGUgdmVyaWZ5LXNjaGFrZWxhYXIgaGVlZnQgZ2VlbiBmdW5jdGllIGJpbm5lbiBXaW5lLlxuIgoKICBXQ01EX1ZFUiwKIlZFUiB0b29udCBkZSB2ZXJzaWUgdmFuIGNtZCBkaWUgdSBkcmFhaXRcbiIKCiAgV0NNRF9WT0wsICAgICJVaXRsZWcgYmlqIFZPTFxuIgoKICBXQ01EX01PUkUsICAgIk1PUkUgZGlzcGxheXMgb3V0cHV0IG9mIGZpbGVzIG9yIHBpcGVkIGlucHV0IGluIHBhZ2VzLlxuIgoKICBXQ01EX0VYSVQsCiJFWElUIGJl62luZGlndCBkZSBsb3BlbmRlIHNlc3NpZSBlbiBrZWVydCB0ZXJ1Z1xuXApuYWFyIGhldCBiZXN0dXJpbmdzc3lzdGVlbSBvZiBkZSBzY2hpbCB2YW4gd2FhcnVpdCBjbWQgd2VyZCBnZXN0YXJ0LlxuIgoKICBXQ01EX0FMTEhFTFAsICJDTUQncyBpbmdlYm91d2RlIG9wZHJhY2h0ZW4gemlqbjpcblwKQVRUUklCXHRcdFRvb24gb2Ygd2lqemlnIERPUyBiZXN0YW5kc2F0dHJpYnV0ZW5cblwKQ0FMTFx0XHRSb2VwIGVlbiBiYXRjaGJlc3RhbmQgYWFuIHZhbnVpdCBlZW4gYW5kZXIgYmVzdGFuZFxuXApDRCAoQ0hESVIpXHRXaWp6aWcgZGUgaHVpZGlnZSBkaXJlY3RvcnlcblwKQ0xTXHRcdFdpcyBoZXQgc2NoZXJtXG5cCkNPUFlcdFx0S29waetlciBlZW4gYmVzdGFuZFxuXApDVFRZXHRcdFdpanppZyBoZXQgaW52b2VyLS91aXR2b2VyYXBwYXJhYXRcblwKREFURVx0XHRUb29uIG9mIHdpanppZyBkZSBzeXN0ZWVtZGF0dW1cblwKREVMIChFUkFTRSlcdFZlcndpamRlciBlZW4gYmVzdGFuZCBvZiBlZW4gdmVyemFtZWxpbmcgdmFuIGJlc3RhbmRlblxuXApESVJcdFx0VG9vbiBkZSBpbmhvdWQgdmFuIGVlbiBkaXJlY3RvcnlcblwKRUNIT1x0XHRLb3Bp62VyIHRla3N0IGRpcmVjdCBuYWFyIGhldCB1aXR2b2VyYXBwYXJhYXRcblwKSEVMUFx0XHRUb29uIGVlbiBrb3J0ZSB1aXRsZWcgb3ZlciBlZW4gb25kZXJ3ZXJwXG5cCk1EIChNS0RJUilcdE1hYWsgZWVuIGRpcmVjdG9yeVxuXApNT1JFXHRcdERpc3BsYXkgb3V0cHV0IGluIHBhZ2VzXG5cCk1PVkVcdFx0VmVycGxhYXRzIGVlbiBiZXN0YW5kLCBlZW4gdmVyemFtZWxpbmcgYmVzdGFuZGVuIG9mIGVlbiBkaXJlY3RvcnlcblwKUEFUSFx0XHRXaWp6aWcgb2YgdG9vbiBoZXQgem9la3BhZFxuXApQUk9NUFRcdFx0V2lqemlnIGRlIHByb21wdFxuXApSRU4gKFJFTkFNRSlcdEhlcm5vZW0gZWVuIGJlc3RhbmRcblwKUkQgKFJNRElSKVx0VmVyd2lqZGVyIGVlbiBkaXJlY3RvcnlcblwKU0VUXHRcdFdpanppZyBvZiB0b29uIGRlIG9tZ2V2aW5nc3ZhcmlhYmVsZW5cblwKVElNRVx0XHRXaWp6aWcgb2YgdG9vbiBkZSBzeXN0ZWVtdGlqZFxuXApUSVRMRVx0XHRXaWp6aWcgZGUgdmVuc3Rlcm5hYW0gdmFuIGRlIENNRC1zZXNzaWVcblwKVFlQRVx0XHRUb29uIGRlIGluaG91ZCB2YW4gZWVuIHRla3N0YmVzdGFuZFxuXApWRVJcdFx0VG9vbiBkZSB2ZXJzaWUgdmFuIENNRFxuXApWT0xcdFx0VG9vbiBoZXQgbGFiZWwgdmFuIGVlbiBzY2hpamZcblwKRVhJVFx0XHRTbHVpdCBDTUQgYWZcblxuXAp0eXBlIEhFTFAgPG9wZHJhY2h0PiB2b29yIG1lZXIgaW5mb3JtYXRpZSBvdmVyIGJvdmVuZ2Vub2VtZGUgb3BkcmFjaHRlblxuIgoKICBXQ01EX0NPTkZJUk0sICJBcmUgeW91IHN1cmUiCiAgV0NNRF9ZRVMsICJZIgogIFdDTURfTk8sICJOIgogIFdDTURfTk9BU1NPQywgIkZpbGUgYXNzb2NpYXRpb24gbWlzc2luZyBmb3IgZXh0ZW5zaW9uICVzXG4iCiAgV0NNRF9OT0ZUWVBFLCAiTm8gb3BlbiBjb21tYW5kIGFzc29jaWF0ZWQgd2l0aCBmaWxlIHR5cGUgJyVzJ1xuIgogIFdDTURfT1ZFUldSSVRFLCAiT3ZlcndyaXRlICVzIgogIFdDTURfTU9SRVNUUiwgIk1vcmUuLi4iCiAgV0NNRF9UUlVOQ0FURURMSU5FLCAiTGluZSBpbiBCYXRjaCBwcm9jZXNzaW5nIHBvc3NpYmx5IHRydW5jYXRlZC4gVXNpbmc6XG4iCiAgV0NNRF9OWUksICJOb3QgWWV0IEltcGxlbWVudGVkXG5cbiIKICBXQ01EX05PQVJHLCAiQXJndW1lbnQgbWlzc2luZ1xuIgogIFdDTURfU1lOVEFYRVJSLCAiU3ludGF4IGVycm9yXG4iCiAgV0NNRF9GSUxFTk9URk9VTkQsICIlcyA6IEZpbGUgTm90IEZvdW5kXG4iCiAgV0NNRF9OT0NNREhFTFAsICJObyBoZWxwIGF2YWlsYWJsZSBmb3IgJXNcbiIKICBXQ01EX05PVEFSR0VULCAiVGFyZ2V0IHRvIEdPVE8gbm90IGZvdW5kXG4iCiAgV0NNRF9DVVJSRU5UREFURSwgIkN1cnJlbnQgRGF0ZSBpcyAlc1xuIgogIFdDTURfQ1VSUkVOVFRJTUUsICJDdXJyZW50IFRpbWUgaXMgJXNcbiIKICBXQ01EX05FV0RBVEUsICJFbnRlciBuZXcgZGF0ZTogIgogIFdDTURfTkVXVElNRSwgIkVudGVyIG5ldyB0aW1lOiAiCiAgV0NNRF9NSVNTSU5HRU5WLCAiRW52aXJvbm1lbnQgdmFyaWFibGUgJXMgbm90IGRlZmluZWRcbiIKICBXQ01EX1JFQURGQUlMLCAiRmFpbGVkIHRvIG9wZW4gJyVzJ1xuIgogIFdDTURfQ0FMTElOU0NSSVBULCAiQ2Fubm90IGNhbGwgYmF0Y2ggbGFiZWwgb3V0c2lkZSBvZiBhIGJhdGNoIHNjcmlwdFxuIgogIFdDTURfQUxMLCAiQSIKICBXQ01EX0RFTFBST01QVCwgIiVzLCBEZWxldGUiCiAgV0NNRF9FQ0hPUFJPTVBULCAiRWNobyBpcyAlc1xuIgogIFdDTURfVkVSSUZZUFJPTVBULCAiVmVyaWZ5IGlzICVzXG4iCiAgV0NNRF9WRVJJRllFUlIsICJWZXJpZnkgbXVzdCBiZSBPTiBvciBPRkZcbiI7CiAgV0NNRF9BUkdFUlIsICJQYXJhbWV0ZXIgZXJyb3JcbiIKICBXQ01EX1ZPTFVNRURFVEFJTCwgIlZvbHVtZSBpbiBkcml2ZSAlYyBpcyAlc1xuVm9sdW1lIFNlcmlhbCBOdW1iZXIgaXMgJTA0eC0lMDR4XG5cbiIKICBXQ01EX1ZPTFVNRVBST01QVCwgIlZvbHVtZSBsYWJlbCAoMTEgY2hhcmFjdGVycywgRU5URVIgZm9yIG5vbmUpPyIKICBXQ01EX05PUEFUSCwgIlBBVEggbm90IGZvdW5kXG4iCiAgV0NNRF9BTllLRVksIlByZXNzIFJldHVybiBrZXkgdG8gY29udGludWU6ICIKICBXQ01EX0NPTlNUSVRMRSwiV2luZSBDb21tYW5kIFByb21wdCIKICBXQ01EX1ZFUlNJT04sIkNNRCBWZXJzaW9uICVzXG5cbiIKICBXQ01EX01PUkVQUk9NUFQsICJNb3JlPyAiCn0K