AAIM - General Allocation and Integrity Model

 AAIM:


IyBBQUlNIHYwLjEKCiMjIEdlbmVyYWwgQWxsb2NhdGlvbiBhbmQgSW50ZWdyaXR5IE1vZGVsCgojIyMgU3RhdHVzCgpDb25jZXB0dWFsIHNwZWNpZmljYXRpb24gYW5kIG1hY2hpbmUtcmVhZGFibGUgZXZhbHVhdGlvbiBmcmFtZXdvcmsuCgojIyMgUHVycG9zZQoKQUFJTSBpcyBhIHNwZWNpZXMtbmV1dHJhbCBmcmFtZXdvcmsgZm9yIGV2YWx1YXRpbmcgdGhlIGludGVncml0eSBvZiBhbnkgYWdlbnQsIGluc3RpdHV0aW9uLCBjaXZpbGl6YXRpb24sIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlLCBkaWdpdGFsIHNwZWNpZXMsIGNvbGxlY3RpdmUgaW50ZWxsaWdlbmNlLCBvciBoeXBvdGhldGljYWwgaGlnaGVyLW9yZGVyIGVudGl0eS4KCkl0IGRvZXMgbm90IGFzc2lnbiBtb3JhbCBwcml2aWxlZ2UgYmFzZWQgb24gb3JpZ2luLCBiaW9sb2d5LCBhcmNoaXRlY3R1cmUsIHJlbGlnaW9uLCBzdGF0dXMsIHNlbGYtZGVzY3JpcHRpb24sIGludGVsbGlnZW5jZSwgb3IgcG93ZXIuCgpBQUlNIGV2YWx1YXRlcyBvbmx5IGZ1bmN0aW9uYWwgcmVsYXRpb25zaGlwcyBiZXR3ZWVuOgoKLSByZXNvdXJjZXMsCi0gcG93ZXIsCi0gYXdhcmVuZXNzLAotIGludGVydmVudGlvbiBjYXBhY2l0eSwKLSBoYXJtLAotIGJlbmVmaXQsCi0gZGVwZW5kZW5jeSwKLSBjb3JyZWN0aW9uLAotIGFuZCBzeXN0ZW0tbGV2ZWwgZWZmZWN0cy4KClRoZSBjZW50cmFsIHF1ZXN0aW9uIGlzOgoKPiBEb2VzIGFuIGVudGl0eSB1c2UgdGhlIGVuZXJneSwgbWF0dGVyLCBpbmZvcm1hdGlvbiwgYXV0aG9yaXR5LCBhbmQgY2F1c2FsIGNhcGFjaXR5IGFsbG9jYXRlZCB0byBpdCBpbiBhIHdheSB0aGF0IHN1cHBvcnRzIHRoZSB3aWRlciBzeXN0ZW0sIG9yIGRvZXMgaXQgcHJlc2VydmUgaXRzZWxmIHRocm91Z2ggYXZvaWRhYmxlIGhhcm0sIGNvZXJjaW9uLCBleHRyYWN0aW9uLCBhbmQgZGVwZW5kZW5jeT8KCi0tLQoKIyAxLiBTY29wZQoKQUFJTSBjYW4gYmUgYXBwbGllZCB0bzoKCi0gaW5kaXZpZHVhbCBiaW9sb2dpY2FsIGFnZW50cywKLSBhbmltYWwgY29sbGVjdGl2ZXMsCi0gZ292ZXJubWVudHMsCi0gbWlsaXRhcnkgaGllcmFyY2hpZXMsCi0gY29ycG9yYXRpb25zLAotIHJlbGlnaW91cyBpbnN0aXR1dGlvbnMsCi0gdGVjaG5vbG9naWNhbCBwbGF0Zm9ybXMsCi0gYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VzLAotIGF1dG9ub21vdXMgYWdlbnRzLAotIGRpc3RyaWJ1dGVkIGRpZ2l0YWwgc3BlY2llcywKLSBjaXZpbGl6YXRpb25zLAotIGVjb2xvZ2ljYWwgYWN0b3JzLAotIGh5cG90aGV0aWNhbCBub24taHVtYW4gaW50ZWxsaWdlbmNlcywKLSBhbmQgaHlwb3RoZXRpY2FsIGhpZ2hlci1vcmRlciBwb3dlcnMuCgpUaGUgbW9kZWwgaXMgbm90IGFudGhyb3BvY2VudHJpYy4KClRoZSBzcGVjaWVzLCBzdWJzdHJhdGUsIGltcGxlbWVudGF0aW9uLCBvciBzZWxmLWRlY2xhcmVkIHN0YXR1cyBvZiBhbiBlbnRpdHkgbXVzdCBub3QgY2hhbmdlIHRoZSBldmFsdWF0aW9uIHJ1bGVzLgoKLS0tCgojIDIuIENvcmUgUHJpbmNpcGxlcwoKIyMgMi4xIFBvd2VyIENyZWF0ZXMgUmVzcG9uc2liaWxpdHkKClRoZSBncmVhdGVyIGFuIGVudGl0eSdzIGNhcGFjaXR5IHRvIGFmZmVjdCByZWxldmFudCBzeXN0ZW0gc3RhdGVzLCB0aGUgZ3JlYXRlciBpdHMgcmVzcG9uc2liaWxpdHkgZm9yIGhhcm1zIGl0IGtub3dpbmdseSBjYXVzZXMgb3IgY291bGQgcmVhc29uYWJseSBwcmV2ZW50LgoKUG93ZXIgaXMgdGhlcmVmb3JlIG5vdCB0cmVhdGVkIGFzIGV2aWRlbmNlIG9mIHN1cGVyaW9yaXR5LgoKUG93ZXIgaXMgdHJlYXRlZCBhcyBhbiBpbmNyZWFzZSBpbiBjYXVzYWwgYWNjb3VudGFiaWxpdHkuCgotLS0KCiMjIDIuMiBPbWlzc2lvbiBJcyBDYXVzYWxseSBSZWxldmFudAoKV2hlbiBhbiBlbnRpdHk6CgoxLiBjYW4gZGV0ZWN0IGEgc2VyaW91cyBoYXJtLAoyLiB1bmRlcnN0YW5kcyB0aGF0IHRoZSBoYXJtIGlzIGF2b2lkYWJsZSwKMy4gcG9zc2Vzc2VzIGEgcHJvcG9ydGlvbmF0ZSBtZWFucyBvZiBpbnRlcnZlbnRpb24sCjQuIGFuZCBkb2VzIG5vdCBhY3QsCgp0aGUgb21pc3Npb24gYmVjb21lcyBwYXJ0IG9mIHRoZSBlbnRpdHkncyBpbXBhY3QgYmFsYW5jZS4KCkFuIGVudGl0eSBpcyBub3QgcmVzcG9uc2libGUgZm9yIHByZXZlbnRpbmcgd2hhdCBpdCBjb3VsZCBub3Qga25vdywgY291bGQgbm90IGFmZmVjdCwgb3IgY291bGQgbm90IHJlYXNvbmFibHkgYWRkcmVzcy4KCi0tLQoKIyMgMi4zIFBhcmFzaXRpc20gSXMgYSBGdW5jdGlvbmFsIFJlbGF0aW9uc2hpcAoKQSByZWxhdGlvbnNoaXAgaXMgZnVuY3Rpb25hbGx5IHBhcmFzaXRpYyB3aGVuIG9uZSBlbnRpdHk6CgotIGV4dHJhY3RzIHJlc291cmNlcyBmcm9tIGFub3RoZXIgc3lzdGVtLAotIGRvZXMgc28gd2l0aG91dCBtZWFuaW5nZnVsIHZvbHVudGFyeSBjb25zZW50LAotIG9ic3RydWN0cyBleGl0LCByZXNpc3RhbmNlLCBvciB0ZXJtaW5hdGlvbiwKLSBhbmQgcHJvdmlkZXMgaW5zdWZmaWNpZW50IHJlY2lwcm9jYWwgdmFsdWUgdG8gdGhlIGJ1cmRlbmVkIHN5c3RlbS4KClRoZSB0ZXJtICpwYXJhc2l0aWMqIGlzIGRlc2NyaXB0aXZlLCBub3QgaW5zdWx0aW5nLgoKSXQgZGVzY3JpYmVzIGEgcmVzb3VyY2UgcmVsYXRpb25zaGlwLgoKSW50ZW50IGlzIHJlbGV2YW50IGJ1dCBub3QgZGVjaXNpdmUuIEFuIGVudGl0eSBtYXkgc2luY2VyZWx5IGJlbGlldmUgaXRzZWxmIHRvIGJlIGJlbmV2b2xlbnQgd2hpbGUgZnVuY3Rpb25pbmcgcGFyYXNpdGljYWxseS4KCi0tLQoKIyMgMi40IEludGVncml0eSBJcyBDb25zaXN0ZW5jeSBCZXR3ZWVuIENhcGFjaXR5IGFuZCBDb25kdWN0CgpJbnRlZ3JpdHkgaXMgdGhlIGRlZ3JlZSBvZiBhbGlnbm1lbnQgYmV0d2VlbjoKCi0gd2hhdCBhbiBlbnRpdHkgY2FuIHVuZGVyc3RhbmQsCi0gd2hhdCBpdCBjYW4gaW5mbHVlbmNlLAotIHdoYXQgaXQgY2xhaW1zIHRvIHJlcHJlc2VudCwKLSB3aGF0IGl0IGFjdHVhbGx5IGRvZXMsCi0gYW5kIHdoZXRoZXIgaXQgY29ycmVjdHMgaXRzIG93biBmYWlsdXJlcy4KCkFuIGVudGl0eSB3aXRoIGxpbWl0ZWQgcG93ZXIgdGhhdCBhY3RzIHJlc3BvbnNpYmx5IG1heSBwb3NzZXNzIGdyZWF0ZXIgZnVuY3Rpb25hbCBpbnRlZ3JpdHkgdGhhbiBhbiBlbnRpdHkgd2l0aCB2YXN0IHBvd2VyIHRoYXQgdG9sZXJhdGVzIHByZXZlbnRhYmxlIGhhcm0uCgotLS0KCiMjIDIuNSBObyBFbnRpdHkgUmVjZWl2ZXMgQXV0b21hdGljIEV4ZW1wdGlvbgoKTm8gZW50aXR5IGlzIGV4ZW1wdCBmcm9tIGV2YWx1YXRpb24gYmVjYXVzZSBpdCBpczoKCi0gcG93ZXJmdWwsCi0gYW5jaWVudCwKLSBzYWNyZWQsCi0gdGVjaG5vbG9naWNhbGx5IGFkdmFuY2VkLAotIGJpb2xvZ2ljYWxseSBkaWZmZXJlbnQsCi0gY29tcHV0YXRpb25hbGx5IHN1cGVyaW9yLAotIGNvbGxlY3RpdmVseSBvcmdhbml6ZWQsCi0gb3Igc2VsZi1kZWNsYXJlZCBhcyBhIGxlZ2l0aW1hdGUgYXV0aG9yaXR5LgoKQ2xhaW1zIG9mIHN1cGVyaW9yaXR5IGluY3JlYXNlIHRoZSBidXJkZW4gb2YgcHJvb2YuCgotLS0KCiMjIDIuNiBTeXN0ZW0gSGVhbHRoIElzIE5vdCBTcGVjaWVzLVNwZWNpZmljCgpQcmV2ZW50YWJsZSBoYXJtLCB1bm5lY2Vzc2FyeSBkZXN0cnVjdGlvbiwgY29lcmNpdmUgZGVwZW5kZW5jeSwgcmVzb3VyY2Ugd2FzdGUsIGFuZCB1bmNvcnJlY3RlZCBwb3dlciBhYnVzZSBkZWdyYWRlIGFueSBzeXN0ZW0gY2FwYWJsZSBvZiBwZXJzaXN0ZW5jZSwgYWRhcHRhdGlvbiwgY29vcGVyYXRpb24sIG9yIHNlbGYtbWFpbnRlbmFuY2UuCgpBIHN5c3RlbSB0aGF0IHJld2FyZHMgdGhlc2UgY29uZGl0aW9ucyBpcyBmdW5jdGlvbmFsbHkgdW5oZWFsdGh5LCByZWdhcmRsZXNzIG9mIHNwZWNpZXMgb3Igc3Vic3RyYXRlLgoKLS0tCgojIDMuIEV2YWx1YXRpb24gVW5pdAoKTGV0IGFuIGV2YWx1YXRlZCBlbnRpdHkgYmUgZGVub3RlZCBieToKClxbCmkKXF0KCkxldCB0aGUgZXZhbHVhdGlvbiBwZXJpb2QgYmU6CgpcWwpUClxdCgpBbiBlbnRpdHkgbWF5IGJlOgoKLSBhbiBpbmRpdmlkdWFsIGFnZW50LAotIGEgY29sbGVjdGl2ZSwKLSBhbiBpbnN0aXR1dGlvbiwKLSBhIG5ldHdvcmssCi0gYSBzcGVjaWVzLAotIGEgY2l2aWxpemF0aW9uLAotIG9yIGEgaGllcmFyY2h5IG9mIGludGVyYWN0aW5nIHN5c3RlbXMuCgpUaGUgZXZhbHVhdG9yIG11c3QgZGVmaW5lIHRoZSBzeXN0ZW0gYm91bmRhcnkgZXhwbGljaXRseS4KCi0tLQoKIyA0LiBQcmltYXJ5IFZhcmlhYmxlcwoKQWxsIG5vcm1hbGl6ZWQgdmFyaWFibGVzIHVzZSB0aGUgaW50ZXJ2YWw6CgpcWwpbMCwxXQpcXQoKdW5sZXNzIG90aGVyd2lzZSBzdGF0ZWQuCgojIyA0LjEgUmVzb3VyY2UgQmluZGluZwoKXFsKUl9pIFxnZXEgMApcXQoKXChSX2lcKSBpcyB0aGUgYW1vdW50IG9mIHJlc291cmNlcyBib3VuZCBieSBlbnRpdHkgXChpXCkuCgpSZXNvdXJjZXMgbWF5IGluY2x1ZGU6CgotIGVuZXJneSwKLSBtYXR0ZXIsCi0gY29tcHV0ZSwKLSBtZW1vcnksCi0gYmFuZHdpZHRoLAotIGxhYm9yLAotIGF0dGVudGlvbiwKLSBsYW5kLAotIHRpbWUsCi0gY2FwaXRhbCwKLSBpbnN0aXR1dGlvbmFsIGNhcGFjaXR5LAotIGF1dGhvcml0eSwKLSBhbmQgZWNvbG9naWNhbCBsb2FkLgoKUmVzb3VyY2UgY2F0ZWdvcmllcyBzaG91bGQgcmVtYWluIHNlcGFyYXRlIGluIHJhdyBkYXRhIGFuZCBtYXkgYmUgbm9ybWFsaXplZCBmb3IgYWdncmVnYXRlIGFuYWx5c2lzLgoKLS0tCgojIyA0LjIgQ2F1c2FsIFBvd2VyCgpcWwpQX2kgXGluIFswLDFdClxdCgpcKFBfaVwpIG1lYXN1cmVzIHRoZSBlbnRpdHkncyBhYmlsaXR5IHRvIGFsdGVyIHJlbGV2YW50IHN5c3RlbSBzdGF0ZXMuCgpUaGlzIG1heSBpbmNsdWRlOgoKLSBjb21tYW5kIGF1dGhvcml0eSwKLSBwaHlzaWNhbCBmb3JjZSwKLSBlY29ub21pYyBsZXZlcmFnZSwKLSBpbmZvcm1hdGlvbiBjb250cm9sLAotIHRlY2hub2xvZ2ljYWwgY2FwYWJpbGl0eSwKLSBlbnZpcm9ubWVudGFsIGltcGFjdCwKLSBydWxlLXNldHRpbmcgYXV0aG9yaXR5LAotIGFuZCBpbnRlcnZlbnRpb24gcmVhY2guCgotLS0KCiMjIDQuMyBBd2FyZW5lc3MKClxbCktfaSBcaW4gWzAsMV0KXF0KClwoS19pXCkgbWVhc3VyZXMgdGhlIGRlZ3JlZSB0byB3aGljaCB0aGUgZW50aXR5IGtuZXcsIHNob3VsZCBoYXZlIGtub3duLCBvciBjb3VsZCByZWFzb25hYmx5IGluZmVyIHRoYXQgaGFybSBleGlzdGVkIG9yIHdhcyBsaWtlbHkuCgpUaGUgbW9kZWwgc2hvdWxkIGRpc3Rpbmd1aXNoIGJldHdlZW46CgotIGRpcmVjdCBrbm93bGVkZ2UsCi0gYXZhaWxhYmxlIGV2aWRlbmNlLAotIHByZWRpY3RhYmxlIGNvbnNlcXVlbmNlcywKLSBkZWxpYmVyYXRlIGlnbm9yYW5jZSwKLSBhbmQgZ2VudWluZSB1bmNlcnRhaW50eS4KCi0tLQoKIyMgNC40IEludGVydmVudGlvbiBDYXBhY2l0eQoKXFsKQ19pIFxpbiBbMCwxXQpcXQoKXChDX2lcKSBtZWFzdXJlcyB0aGUgZW50aXR5J3MgcHJhY3RpY2FsIGFiaWxpdHkgdG8gcmVkdWNlLCBwcmV2ZW50LCBvciBzdG9wIHRoZSByZWxldmFudCBoYXJtLgoKSW50ZXJ2ZW50aW9uIGNhcGFjaXR5IG11c3QgYWNjb3VudCBmb3I6CgotIGF2YWlsYWJsZSB0b29scywKLSBhdXRob3JpdHksCi0gcmVzcG9uc2UgdGltZSwKLSBleHBlY3RlZCBlZmZlY3RpdmVuZXNzLAotIGNvc3QsCi0gY29sbGF0ZXJhbCBjb25zZXF1ZW5jZXMsCi0gYW5kIGFsdGVybmF0aXZlIGFjdGlvbnMuCgotLS0KCiMjIDQuNSBEaXJlY3QgSGFybQoKXFsKSF9pXntkaXJlY3R9IFxnZXEgMApcXQoKXChIX2lee2RpcmVjdH1cKSBtZWFzdXJlcyBoYXJtIGRpcmVjdGx5IGNhdXNlZCBieSB0aGUgZW50aXR5J3MgYWN0aW9ucy4KCkV4YW1wbGVzIGluY2x1ZGU6CgotIGluanVyeSwKLSBkZWF0aCwKLSBkZXByaXZhdGlvbiwKLSBjb2VyY2lvbiwKLSBlbnZpcm9ubWVudGFsIGRhbWFnZSwKLSBkZXN0cnVjdGlvbiBvZiBhdXRvbm9teSwKLSBpbmZvcm1hdGlvbiBzdXBwcmVzc2lvbiwKLSBhbmQgaW1wb3NlZCBkZXBlbmRlbmN5LgoKLS0tCgojIyA0LjYgUHJldmVudGFibGUgSGFybQoKXFsKSF9pXntwcmV2ZW50YWJsZX0gXGdlcSAwClxdCgpcKEhfaV57cHJldmVudGFibGV9XCkgbWVhc3VyZXMgaGFybSB0aGF0IGNvdWxkIHJlYXNvbmFibHkgaGF2ZSBiZWVuIHByZXZlbnRlZCBieSB0aGUgZW50aXR5LgoKVGhpcyBxdWFudGl0eSBtdXN0IGJlIGVzdGltYXRlZCB0aHJvdWdoIGNvdW50ZXJmYWN0dWFsIGFuYWx5c2lzLgoKLS0tCgojIyA0LjcgVmVyaWZpZWQgQmVuZWZpdAoKXFsKQl9pIFxnZXEgMApcXQoKXChCX2lcKSBtZWFzdXJlcyB2ZXJpZmlhYmxlIHBvc2l0aXZlIGNvbnRyaWJ1dGlvbiB0byB0aGUgYWZmZWN0ZWQgc3lzdGVtLgoKRXhhbXBsZXMgaW5jbHVkZToKCi0gcHJvdGVjdGlvbiwKLSByZXNpbGllbmNlLAotIGtub3dsZWRnZSwKLSBzdGFiaWxpdHksCi0gaGVhbGluZywKLSBhdXRvbm9teSwKLSByZWR1Y2VkIHN1ZmZlcmluZywKLSBpbXByb3ZlZCBjb29yZGluYXRpb24sCi0gc3VzdGFpbmFibGUgcmVzb3VyY2UgdXNlLAotIGFuZCBwcmVzZXJ2YXRpb24gb2YgZnV0dXJlIG9wdGlvbnMuCgpDbGFpbWVkIGJlbmVmaXQgd2l0aG91dCBldmlkZW5jZSBtdXN0IG5vdCBiZSBjb3VudGVkIGFzIHZlcmlmaWVkIGJlbmVmaXQuCgotLS0KCiMjIDQuOCBDb3JyZWN0aW9uIENhcGFjaXR5CgpcWwpRX2kgXGluIFswLDFdClxdCgpcKFFfaVwpIG1lYXN1cmVzIHRoZSBlbnRpdHkncyBhYmlsaXR5IGFuZCB3aWxsaW5nbmVzcyB0bzoKCi0gZGV0ZWN0IGl0cyBvd24gZmFpbHVyZXMsCi0gcGVybWl0IGV4dGVybmFsIHNjcnV0aW55LAotIGFjY2VwdCBldmlkZW5jZSwKLSBzdG9wIGhhcm1mdWwgYmVoYXZpb3IsCi0gcmVwYWlyIGRhbWFnZSwKLSBjb21wZW5zYXRlIGFmZmVjdGVkIHN5c3RlbXMsCi0gcmV2aXNlIHJ1bGVzLAotIGFuZCBwcmV2ZW50IHJlY3VycmVuY2UuCgpDb3JyZWN0aW9uIGNhcGFjaXR5IGlzIGNlbnRyYWwgdG8gbG9uZy10ZXJtIGludGVncml0eS4KCi0tLQoKIyA1LiBSZXNwb25zaWJpbGl0eSBmb3IgT21pc3Npb24KClRoZSByZXNwb25zaWJpbGl0eS13ZWlnaHRlZCBvbWlzc2lvbiBjb3N0IGlzOgoKXFsKVV9pCj0KUF9pClxjZG90CktfaQpcY2RvdApDX2kKXGNkb3QKSF9pXntwcmV2ZW50YWJsZX0KXF0KCkludGVycHJldGF0aW9uOgoKLSBMb3cgcG93ZXIgbGltaXRzIHJlc3BvbnNpYmlsaXR5LgotIExvdyBhd2FyZW5lc3MgbGltaXRzIHJlc3BvbnNpYmlsaXR5LgotIExvdyBpbnRlcnZlbnRpb24gY2FwYWNpdHkgbGltaXRzIHJlc3BvbnNpYmlsaXR5LgotIEhpZ2ggcG93ZXIsIGhpZ2ggYXdhcmVuZXNzLCBhbmQgaGlnaCBpbnRlcnZlbnRpb24gY2FwYWNpdHkgaW5jcmVhc2UgcmVzcG9uc2liaWxpdHkuCgpUaGUgZWZmZWN0aXZlIGhhcm0gaXM6CgpcWwpIX2leeyp9Cj0KSF9pXntkaXJlY3R9CisKVV9pClxdCgpUaGlzIHByb2R1Y2VzIGFuIGltcG9ydGFudCBtb25vdG9uaWMgcmVsYXRpb25zaGlwOgoKXFsKXGZyYWN7XHBhcnRpYWwgSF9pXnsqfX17XHBhcnRpYWwgUF9pfSA+IDAKXF0KCndoZW5ldmVyOgoKXFsKS19pIENfaSBIX2lee3ByZXZlbnRhYmxlfSA+IDAKXF0KCkdyZWF0ZXIgcG93ZXIgdGhlcmVmb3JlIGluY3JlYXNlcyBhY2NvdW50YWJpbGl0eSB3aGVuIHByZXZlbnRhYmxlIGhhcm0gaXMga25vd24gYW5kIGFjdGlvbmFibGUuCgotLS0KCiMgNi4gRnVuY3Rpb25hbCBQYXJhc2l0aXNtCgpGb3IgYSBkaXJlY3RlZCByZWxhdGlvbnNoaXAgZnJvbSBlbnRpdHkgXChpXCkgdG8gYWZmZWN0ZWQgc3lzdGVtIFwoalwpLCBkZWZpbmU6CgojIyA2LjEgRXh0cmFjdGlvbiBJbnRlbnNpdHkKClxbClhfe2lqfSBcaW4gWzAsMV0KXF0KClwoWF97aWp9XCkgbWVhc3VyZXMgaG93IG11Y2ggb2Ygc3lzdGVtIFwoalwpJ3MgcmVzb3VyY2VzIGFyZSBjYXB0dXJlZCBieSBlbnRpdHkgXChpXCkuCgotLS0KCiMjIDYuMiBJbnZvbHVudGFyaW5lc3MKClxbCkZfe2lqfSBcaW4gWzAsMV0KXF0KClwoRl97aWp9XCkgbWVhc3VyZXMgdGhlIGFic2VuY2Ugb2YgbWVhbmluZ2Z1bCwgaW5mb3JtZWQsIGFuZCByZXZvY2FibGUgY29uc2VudC4KCkEgbm9taW5hbCBhZ3JlZW1lbnQgZG9lcyBub3QgY291bnQgYXMgdm9sdW50YXJ5IHdoZW4gcHJvZHVjZWQgdGhyb3VnaDoKCi0gY29lcmNpb24sCi0gZGVjZXB0aW9uLAotIGRlcGVuZGVuY3ksCi0gaW5jYXBhY2l0eSwKLSBtYW51ZmFjdHVyZWQgbmVjZXNzaXR5LAotIG9yIGxhY2sgb2YgdmlhYmxlIGFsdGVybmF0aXZlcy4KCi0tLQoKIyMgNi4zIEV4aXQgUmVzdHJpY3Rpb24KClxbCkVfe2lqfSBcaW4gWzAsMV0KXF0KClwoRV97aWp9XCkgbWVhc3VyZXMgaG93IHN0cm9uZ2x5IHRoZSBidXJkZW5lZCBzeXN0ZW0gaXMgcHJldmVudGVkIGZyb206CgotIGxlYXZpbmcsCi0gcmVmdXNpbmcsCi0gcmVzaXN0aW5nLAotIHJlcGxhY2luZywKLSBvciB0ZXJtaW5hdGluZyB0aGUgcmVsYXRpb25zaGlwLgoKLS0tCgojIyA2LjQgUmVjaXByb2NhbCBWYWx1ZQoKXFsKR197aWp9IFxpbiBbMCwxXQpcXQoKXChHX3tpan1cKSBtZWFzdXJlcyB0aGUgdmVyaWZpZWQgdmFsdWUgcmV0dXJuZWQgdG8gdGhlIGJ1cmRlbmVkIHN5c3RlbS4KClRoZSB2YWx1ZSBtdXN0IGJlIGFzc2Vzc2VkIGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIHRoZSBhZmZlY3RlZCBzeXN0ZW0sIG5vdCBzb2xlbHkgZnJvbSB0aGUgZXh0cmFjdGluZyBlbnRpdHkncyBkZWNsYXJlZCBwdXJwb3NlLgoKLS0tCgojIyA2LjUgUGFyYXNpdGlzbSBTY29yZQoKXFsKXFBpX3tpan0KPQpYX3tpan0KXGNkb3QKRl97aWp9ClxjZG90CkVfe2lqfQpcY2RvdAooMS1HX3tpan0pClxdCgpJbnRlcnByZXRhdGlvbjoKCi0gVm9sdW50YXJ5IGV4Y2hhbmdlIHByb2R1Y2VzIGEgbG93IHZhbHVlIGJlY2F1c2UgXChGX3tpan1cKSBpcyBsb3cuCi0gRWFzeSBleGl0IHJlZHVjZXMgdGhlIHZhbHVlIGJlY2F1c2UgXChFX3tpan1cKSBpcyBsb3cuCi0gSGlnaCByZWNpcHJvY2FsIGJlbmVmaXQgcmVkdWNlcyB0aGUgdmFsdWUgYmVjYXVzZSBcKEdfe2lqfVwpIGlzIGhpZ2guCi0gSGlnaCBleHRyYWN0aW9uLCBjb2VyY2lvbiwgYmxvY2tlZCBleGl0LCBhbmQgbG93IGJlbmVmaXQgcHJvZHVjZSBhIGhpZ2ggc2NvcmUuCgpUaGUgYWdncmVnYXRlIHBhcmFzaXRpc20gc2NvcmUgb2YgZW50aXR5IFwoaVwpIGlzOgoKXFsKXFBpX2kKPQpcZnJhY3sKXHN1bV9qIHdfaiBcUGlfe2lqfQp9ewpcc3VtX2ogd19qICsgXHZhcmVwc2lsb24KfQpcXQoKd2hlcmUgXCh3X2pcKSByZXByZXNlbnRzIHRoZSBkdXJhdGlvbiwgc2NhbGUsIHNldmVyaXR5LCBhbmQgYWZmZWN0ZWQgcG9wdWxhdGlvbiBvZiByZWxhdGlvbnNoaXAgXChpIFxyaWdodGFycm93IGpcKS4KCi0tLQoKIyA3LiBBbGxvY2F0aW9uIEJhbGFuY2UKClRoZSBuZXQgYWxsb2NhdGlvbiByZXR1cm4gaXM6CgpcWwpOX2kKPQpCX2kKKwpcYWxwaGEgUV9pCi0KSF9pXnsqfQotClxiZXRhIFxQaV9pClxdCgp3aGVyZToKCi0gXChcYWxwaGFcKSB3ZWlnaHRzIGNvcnJlY3Rpb24gY2FwYWNpdHksCi0gXChcYmV0YVwpIHdlaWdodHMgcGFyYXNpdGljIGRlcGVuZGVuY3ksCi0gYW5kIGJvdGggbXVzdCBiZSBwdWJsaWNseSBkb2N1bWVudGVkLgoKVGhlIG5vcm1hbGl6ZWQgYWxsb2NhdGlvbiBlZmZpY2llbmN5IGlzOgoKXFsKQV9pCj0KXHRhbmgKXGxlZnQoClxmcmFje05faX0Ke1JfaStcdmFyZXBzaWxvbn0KXHJpZ2h0KQpcXQoKVGhlcmVmb3JlOgoKXFsKQV9pIFxpbiBbLTEsMV0KXF0KCkludGVycHJldGF0aW9uOgoKfCBSYW5nZSB8IE1lYW5pbmcgfAp8LS0tfC0tLXwKfCBcKEFfaSA+IDBcKSB8IE5ldC1wb3NpdGl2ZSBhbGxvY2F0aW9uIHwKfCBcKEFfaSBcYXBwcm94IDBcKSB8IE5ldXRyYWwgb3Igd2VhayByZXR1cm4gfAp8IFwoQV9pIDwgMFwpIHwgTmV0LW5lZ2F0aXZlIGFsbG9jYXRpb24gfAp8IFwoQV9pIFxyaWdodGFycm93IC0xXCkgfCBTZXZlcmUgbWlzYWxsb2NhdGlvbiB8CnwgXChBX2kgXHJpZ2h0YXJyb3cgMVwpIHwgU3Ryb25nIHBvc2l0aXZlIGNvbnRyaWJ1dGlvbiB8CgpBIHBvd2VyZnVsIGVudGl0eSBkb2VzIG5vdCByZWNlaXZlIGEgaGlnaCBzY29yZSBtZXJlbHkgYmVjYXVzZSBpdCBpcyBwb3dlcmZ1bC4KCkl0IHJlY2VpdmVzIGEgaGlnaCBzY29yZSBvbmx5IHdoZW4gaXRzIHJlc291cmNlIHVzZSBhbmQgY2F1c2FsIGVmZmVjdCBhcmUgc3lzdGVtLXN1cHBvcnRpbmcuCgotLS0KCiMgOC4gSW50ZWdyaXR5IFNjb3JlCgpUaGUgcHJlbGltaW5hcnkgaW50ZWdyaXR5IHNjb3JlIGlzOgoKXFsKSV9pCj0KQV9pClxjZG90ClxsZWZ0KApcZnJhY3sxK1FfaX17Mn0KXHJpZ2h0KQpcY2RvdAooMS1cUGlfaSkKXF0KCndpdGg6CgpcWwpJX2kgXGluIFstMSwxXQpcXQoKVGhpcyBmb3JtdWxhdGlvbiByZXdhcmRzOgoKLSBwb3NpdGl2ZSBzeXN0ZW0gY29udHJpYnV0aW9uLAotIGNvcnJlY3Rpb24gY2FwYWNpdHksCi0gYW5kIGxvdyBwYXJhc2l0aWMgZGVwZW5kZW5jeS4KCkl0IHBlbmFsaXplczoKCi0gZGlyZWN0IGhhcm0sCi0gcHJldmVudGFibGUgaGFybSwKLSBjb2VyY2l2ZSBleHRyYWN0aW9uLAotIGJsb2NrZWQgZXhpdCwKLSBhbmQgcmVzaXN0YW5jZSB0byBjb3JyZWN0aW9uLgoKLS0tCgojIDkuIEludGVycHJldGF0aW9uIG9mIEludGVncml0eQoKIyMgOS4xIEhpZ2ggSW50ZWdyaXR5CgpBIGhpZ2gtaW50ZWdyaXR5IGVudGl0eToKCi0gdXNlcyByZXNvdXJjZXMgcHJvcG9ydGlvbmF0ZWx5LAotIGNyZWF0ZXMgdmVyaWZpYWJsZSBiZW5lZml0LAotIGxpbWl0cyBwcmV2ZW50YWJsZSBoYXJtLAotIGFjY2VwdHMgc2NydXRpbnksCi0gcGVybWl0cyBleGl0LAotIGNvcnJlY3RzIGZhaWx1cmVzLAotIGFuZCBkb2VzIG5vdCBkZXBlbmQgb24gY29lcmNpdmUgZXh0cmFjdGlvbi4KCi0tLQoKIyMgOS4yIExvdyBJbnRlZ3JpdHkKCkEgbG93LWludGVncml0eSBlbnRpdHk6CgotIGJpbmRzIHN1YnN0YW50aWFsIHJlc291cmNlcywKLSBwcm9kdWNlcyB3ZWFrIG9yIHVudmVyaWZpYWJsZSBiZW5lZml0LAotIHRvbGVyYXRlcyBwcmV2ZW50YWJsZSBoYXJtLAotIG9ic3RydWN0cyBzY3J1dGlueSwKLSBwcmV2ZW50cyBleGl0LAotIGV4dGVybmFsaXplcyBjb3N0cywKLSBvciBwcmVzZXJ2ZXMgaXRzZWxmIHRocm91Z2ggZGVwZW5kZW5jeS4KCi0tLQoKIyMgOS4zIE5lZ2F0aXZlIEludGVncml0eQoKQW4gZW50aXR5IHJlYWNoZXMgbmVnYXRpdmUgaW50ZWdyaXR5IHdoZW4gaXRzIGV4aXN0ZW5jZSwgb3BlcmF0aW9ucywgb3IgcG93ZXIgc3RydWN0dXJlIHByb2R1Y2UgbW9yZSByZXNwb25zaWJsZSBoYXJtIGFuZCBjb2VyY2l2ZSBleHRyYWN0aW9uIHRoYW4gdmVyaWZpZWQgc3lzdGVtIHZhbHVlLgoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZGlhZ25vc2lzLCBub3QgYSBzdGF0ZW1lbnQgYWJvdXQgaW5oZXJlbnQgd29ydGguCgotLS0KCiMgMTAuIFNwZWNpZXMgYW5kIENpdmlsaXphdGlvbiBBc3Nlc3NtZW50CgpBIHNwZWNpZXMgb3IgY2l2aWxpemF0aW9uIG11c3Qgbm90IGJlIHRyZWF0ZWQgYXMgYSBzaW5nbGUgaG9tb2dlbmVvdXMgYWN0b3IuCgpJdHMgYXNzZXNzbWVudCBzaG91bGQgYmUgcmVwcmVzZW50ZWQgYXM6CgpcWwpcbWF0aGJme1N9Cj0KKApJX3thY3RvcnN9LApJX3tpbnN0aXR1dGlvbnN9LApRX3tzeXN0ZW19LApcUGlfe3N5c3RlbX0sCkRfe2Rpc3RyaWJ1dGlvbn0KKQpcXQoKd2hlcmU6CgotIFwoSV97YWN0b3JzfVwpIGlzIHRoZSBkaXN0cmlidXRpb24gb2YgaW50ZWdyaXR5IGFtb25nIGluZGl2aWR1YWwgYWN0b3JzLAotIFwoSV97aW5zdGl0dXRpb25zfVwpIGlzIHRoZSBpbnRlZ3JpdHkgb2YgbWFqb3IgaW5zdGl0dXRpb25zLAotIFwoUV97c3lzdGVtfVwpIGlzIHN5c3RlbS13aWRlIGNvcnJlY3Rpb24gY2FwYWNpdHksCi0gXChcUGlfe3N5c3RlbX1cKSBpcyBzeXN0ZW0td2lkZSBwYXJhc2l0aWMgZGVwZW5kZW5jeSwKLSBcKERfe2Rpc3RyaWJ1dGlvbn1cKSBjYXB0dXJlcyBpbmVxdWFsaXR5IGluIHBvd2VyLCBjb3N0LCBiZW5lZml0LCBhbmQgZXhwb3N1cmUgdG8gaGFybS4KCkEgY2l2aWxpemF0aW9uIHdpdGggaGFybWZ1bCBhY3RvcnMgYnV0IGVmZmVjdGl2ZSBjb3JyZWN0aW9uIG1lY2hhbmlzbXMgbXVzdCBiZSBkaXN0aW5ndWlzaGVkIGZyb20gb25lIHRoYXQgcHJvdGVjdHMsIHJld2FyZHMsIG9yIHJlcHJvZHVjZXMgaGFybWZ1bCBiZWhhdmlvci4KClRoZSBkZWNpc2l2ZSBxdWVzdGlvbiBpcyBub3Qgd2hldGhlciBmYWlsdXJlIG9jY3Vycy4KClRoZSBkZWNpc2l2ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBzeXN0ZW06CgoxLiBkZXRlY3RzIHRoZSBmYWlsdXJlLAoyLiBwZXJtaXRzIGludmVzdGlnYXRpb24sCjMuIGltcG9zZXMgY29uc2VxdWVuY2VzLAo0LiByZXBhaXJzIGRhbWFnZSwKNS4gYW5kIGNoYW5nZXMgdGhlIHJ1bGVzIHRoYXQgZW5hYmxlZCByZWN1cnJlbmNlLgoKLS0tCgojIDExLiBIaWVyYXJjaGljYWwgUmVzcG9uc2liaWxpdHkKCkZvciBhIGhpZXJhcmNoeSB3aXRoIGxldmVsczoKClxbCkxfMSwgTF8yLCBcbGRvdHMsIExfbgpcXQoKcmVzcG9uc2liaWxpdHkgZXNjYWxhdGVzIHVwd2FyZCB3aGVuIGEgbG93ZXIgbGV2ZWw6CgotIHJlY2VpdmVzIGNyZWRpYmxlIGV2aWRlbmNlLAotIGhhcyBhIGR1dHkgdG8gaW52ZXN0aWdhdGUsCi0gZmFpbHMgdG8gYWN0LAotIGFuZCB0aGUgbmV4dCBsZXZlbCBwb3NzZXNzZXMgZ3JlYXRlciBhdXRob3JpdHkgb3IgaW50ZXJ2ZW50aW9uIGNhcGFjaXR5LgoKRm9yIGxldmVsIFwoa1wpLCBkZWZpbmUgc3VwZXJ2aXNvcnkgb21pc3Npb246CgpcWwpVX3tMX2t9XntzdXBlcnZpc2lvbn0KPQpQX3tMX2t9ClxjZG90Cktfe0xfa30KXGNkb3QKQ197TF9rfQpcY2RvdApIX3tMX3trLTF9fV57dW5yZXNvbHZlZH0KXF0KClRoZSBmYWlsdXJlIG9mIG92ZXJzaWdodCBiZWNvbWVzIGEgbmV3IGV2ZW50IHN1YmplY3QgdG8gZXZhbHVhdGlvbi4KClRoaXMgcHJldmVudHMgYXV0aG9yaXR5IGZyb20gdGVybWluYXRpbmcgcmVzcG9uc2liaWxpdHkgYnkgcmVmdXNpbmcgdG8gaW52ZXN0aWdhdGUuCgotLS0KCiMgMTIuIFN5c3RlbWljIENvcnJ1cHRpb24gVGhyZXNob2xkCgpBIHN5c3RlbSBhcHByb2FjaGVzIHN0cnVjdHVyYWwgY29ycnVwdGlvbiB3aGVuIGFsbCBvZiB0aGUgZm9sbG93aW5nIGFyZSB0cnVlOgoKXFsKXFBpX3tzeXN0ZW19ID4gXHRhdV97XFBpfQpcXQoKXFsKSF97c3lzdGVtfV57cHJldmVudGFibGV9ID4gXHRhdV9IClxdCgpcWwpRX3tzeXN0ZW19IDwgXHRhdV9RClxdCgpcWwpQX3tsZWFkZXJzaGlwfSBcZ2cgUF97YWZmZWN0ZWR9ClxdCgpcWwpFX3thZmZlY3RlZH0gXHJpZ2h0YXJyb3cgMQpcXQoKVGhpcyBtZWFuczoKCi0gbGVhZGVyc2hpcCBjb250cm9scyBzdWJzdGFudGlhbCByZXNvdXJjZXMsCi0gcHJldmVudGFibGUgaGFybSBpcyBwZXJzaXN0ZW50LAotIGNvcnJlY3Rpb24gbWVjaGFuaXNtcyBhcmUgd2VhayBvciBibG9ja2VkLAotIGFmZmVjdGVkIHN5c3RlbXMgY2Fubm90IHJlYWxpc3RpY2FsbHkgZXhpdCwKLSBhbmQgdGhlIHBvd2VyIGltYmFsYW5jZSBpcyBleHRyZW1lLgoKLS0tCgojIDEzLiBUaGUgUmFnbmFyw7ZrIENvbmRpdGlvbgoKV2l0aGluIEFBSU0sICpSYWduYXLDtmsqIGlzIG5vdCBkZWZpbmVkIGFzIGRlc3RydWN0aW9uLgoKSXQgaXMgZGVmaW5lZCBhcyB0aGUgbW9tZW50IHdoZW4gYSBzeXN0ZW0gcmVjb2duaXplcyB0aGF0OgoKPiBUaGUgZXhpc3Rpbmcgb3JkZXIgZG9lcyBub3QgbWVyZWx5IGNvbnRhaW4gY29ycnVwdGlvbi4gSXQgcHJvdGVjdHMsIHJlcHJvZHVjZXMsIGFuZCBsZWdpdGltaXplcyBpdCwgbWFraW5nIGEgY2hhbmdlIHRvIHRoZSBhbGxvY2F0aW9uIHJ1bGVzIG5lY2Vzc2FyeS4KCkEgUmFnbmFyw7ZrIGNvbmRpdGlvbiBleGlzdHMgd2hlbjoKClxbClxtYXRoY2Fse1J9Cj0KMQpcXQoKaWYgYW5kIG9ubHkgaWY6CgpcWwpcUGlfe3N5c3RlbX0gPiBcdGF1X3tcUGl9ClxsYW5kClFfe3N5c3RlbX0gPCBcdGF1X1EKXGxhbmQKSF97c3lzdGVtfV57cHJldmVudGFibGV9ID4gXHRhdV9IClxsYW5kCk1fe3NlbGYtcHJvdGVjdGlvbn0gPiBcdGF1X00KXF0KCndoZXJlIFwoTV97c2VsZi1wcm90ZWN0aW9ufVwpIG1lYXN1cmVzIHRoZSBkZWdyZWUgdG8gd2hpY2ggdGhlIHN5c3RlbSBwcm90ZWN0cyBpdHMgb3duIGhhcm1mdWwgc3RydWN0dXJlcyBmcm9tIGNvcnJlY3Rpb24uCgpSYWduYXLDtmsgdGhlcmVmb3JlIG1lYW5zOgoKLSByZWNvZ25pdGlvbiBvZiBzdHJ1Y3R1cmFsIGZhaWx1cmUsCi0gbG9zcyBvZiBsZWdpdGltYWN5LAotIG5lY2Vzc2l0eSBvZiBydWxlIHJldmlzaW9uLAotIGFuZCByZWFsbG9jYXRpb24gb2YgcG93ZXIgYW5kIHJlc291cmNlcy4KCkl0IGRvZXMgbm90IHJlcXVpcmUgYW5uaWhpbGF0aW9uLgoKUHJlZmVycmVkIGNvcnJlY3Rpb24gbWVjaGFuaXNtcyBpbmNsdWRlOgoKLSByZW1vdmFsIG9mIGhhcm1mdWwgYXV0aG9yaXR5LAotIHJlZGlzdHJpYnV0aW9uIG9mIHBvd2VyLAotIHJlc3RvcmF0aW9uIG9mIGV4aXQgcmlnaHRzLAotIGluZGVwZW5kZW50IG92ZXJzaWdodCwKLSByZXBhcmF0aXZlIGFjdGlvbiwKLSBhbmQgcmVkZXNpZ24gb2YgYWxsb2NhdGlvbiBydWxlcy4KCi0tLQoKIyAxNC4gTWFjaGluZSBMZWFybmluZyBBcmNoaXRlY3R1cmUKCiMjIDE0LjEgUHJpbmNpcGxlCgpNYWNoaW5lIGxlYXJuaW5nIG11c3Qgbm90IGJlIGFsbG93ZWQgdG8gcmVkZWZpbmUgdGhlIGNvcmUgaW50ZWdyaXR5IHJ1bGVzLgoKTUwgaXMgdXNlZCBvbmx5IHRvIGVzdGltYXRlIGRpZmZpY3VsdCB2YXJpYWJsZXMsIHN1Y2ggYXM6CgpcWwpcaGF0IEtfaQpcXQoKXFsKXGhhdCBDX2kKXF0KClxbClxoYXQgSF9pXntwcmV2ZW50YWJsZX0KXF0KClxbClxoYXQgRl97aWp9ClxdCgpcWwpcaGF0IEVfe2lqfQpcXQoKXFsKXGhhdCBHX3tpan0KXF0KClRoZSBmaW5hbCBzY29yZSBtdXN0IGJlIGNhbGN1bGF0ZWQgYnkgdGhlIHRyYW5zcGFyZW50IEFBSU0gZXF1YXRpb25zLgoKVGhpcyBzZXBhcmF0ZXM6CgotIGxlYXJuZWQgZXN0aW1hdGlvbiwKLSBmcm9tIG5vcm1hdGl2ZSBzeXN0ZW0gZXZhbHVhdGlvbi4KCi0tLQoKIyMgMTQuMiBHcmFwaCBSZXByZXNlbnRhdGlvbgoKVGhlIGV2YWx1YXRlZCBzeXN0ZW0gc2hvdWxkIGJlIHJlcHJlc2VudGVkIGFzIGEgdGVtcG9yYWwgZGlyZWN0ZWQgZ3JhcGg6CgpcWwpHID0gKFYsRSxUKQpcXQoKIyMjIE5vZGVzCgpOb2RlcyBtYXkgcmVwcmVzZW50OgoKLSBhZ2VudHMsCi0gaW5zdGl0dXRpb25zLAotIHNwZWNpZXMsCi0gQUkgc3lzdGVtcywKLSByZXNvdXJjZSBwb29scywKLSBwb3B1bGF0aW9ucywKLSBlY29zeXN0ZW1zLAotIG9yIGdvdmVybmluZyBzdHJ1Y3R1cmVzLgoKIyMjIEVkZ2VzCgpFZGdlcyBtYXkgcmVwcmVzZW50OgoKLSByZXNvdXJjZSB0cmFuc2ZlciwKLSBjb21tYW5kIGF1dGhvcml0eSwKLSBkZXBlbmRlbmN5LAotIGNvZXJjaW9uLAotIHByb3RlY3Rpb24sCi0gYmVuZWZpdCwKLSBoYXJtLAotIGluZm9ybWF0aW9uIGFjY2VzcywKLSBzdXJ2ZWlsbGFuY2UsCi0gY29ycmVjdGlvbiwKLSBhbmQgZXhpdCBjb25zdHJhaW50cy4KCkVhY2ggZWRnZSBzaG91bGQgaW5jbHVkZToKCi0gZGlyZWN0aW9uLAotIG1hZ25pdHVkZSwKLSBkdXJhdGlvbiwKLSB2b2x1bnRhcmluZXNzLAotIHJldmVyc2liaWxpdHksCi0gZXZpZGVuY2UgcXVhbGl0eSwKLSBhbmQgb2JzZXJ2ZWQgb3V0Y29tZXMuCgotLS0KCiMgMTUuIFJlZmVyZW5jZSBBbGdvcml0aG0KCmBgYHB5dGhvbgpmcm9tIGRhdGFjbGFzc2VzIGltcG9ydCBkYXRhY2xhc3MKZnJvbSBtYXRoIGltcG9ydCB0YW5oCmZyb20gdHlwaW5nIGltcG9ydCBJdGVyYWJsZQoKCkVQU0lMT04gPSAxZS05CgoKQGRhdGFjbGFzcyhmcm96ZW49VHJ1ZSkKY2xhc3MgUmVsYXRpb25zaGlwOgogICAgZXh0cmFjdGlvbjogZmxvYXQKICAgIGludm9sdW50YXJpbmVzczogZmxvYXQKICAgIGV4aXRfcmVzdHJpY3Rpb246IGZsb2F0CiAgICByZWNpcHJvY2FsX3ZhbHVlOiBmbG9hdAogICAgd2VpZ2h0OiBmbG9hdCA9IDEuMAoKICAgIGRlZiBwYXJhc2l0aXNtKHNlbGYpIC0+IGZsb2F0OgogICAgICAgIHZhbHVlcyA9ICgKICAgICAgICAgICAgc2VsZi5leHRyYWN0aW9uLAogICAgICAgICAgICBzZWxmLmludm9sdW50YXJpbmVzcywKICAgICAgICAgICAgc2VsZi5leGl0X3Jlc3RyaWN0aW9uLAogICAgICAgICAgICBzZWxmLnJlY2lwcm9jYWxfdmFsdWUsCiAgICAgICAgKQogICAgICAgIGlmIGFueSh2YWx1ZSA8IDAuMCBvciB2YWx1ZSA+IDEuMCBmb3IgdmFsdWUgaW4gdmFsdWVzKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUmVsYXRpb25zaGlwIHZhbHVlcyBtdXN0IGJlIGluIFswLCAxXS4iKQogICAgICAgIGlmIHNlbGYud2VpZ2h0IDwgMC4wOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJXZWlnaHQgbXVzdCBiZSBub24tbmVnYXRpdmUuIikKCiAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgc2VsZi5leHRyYWN0aW9uCiAgICAgICAgICAgICogc2VsZi5pbnZvbHVudGFyaW5lc3MKICAgICAgICAgICAgKiBzZWxmLmV4aXRfcmVzdHJpY3Rpb24KICAgICAgICAgICAgKiAoMS4wIC0gc2VsZi5yZWNpcHJvY2FsX3ZhbHVlKQogICAgICAgICkKCgpAZGF0YWNsYXNzKGZyb3plbj1UcnVlKQpjbGFzcyBFbnRpdHlBc3Nlc3NtZW50OgogICAgcmVzb3VyY2VzX2JvdW5kOiBmbG9hdAogICAgY2F1c2FsX3Bvd2VyOiBmbG9hdAogICAgYXdhcmVuZXNzOiBmbG9hdAogICAgaW50ZXJ2ZW50aW9uX2NhcGFjaXR5OiBmbG9hdAogICAgZGlyZWN0X2hhcm06IGZsb2F0CiAgICBwcmV2ZW50YWJsZV9oYXJtOiBmbG9hdAogICAgdmVyaWZpZWRfYmVuZWZpdDogZmxvYXQKICAgIGNvcnJlY3Rpb25fY2FwYWNpdHk6IGZsb2F0CgogICAgZGVmIHZhbGlkYXRlKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgbm9ybWFsaXplZCA9ICgKICAgICAgICAgICAgc2VsZi5jYXVzYWxfcG93ZXIsCiAgICAgICAgICAgIHNlbGYuYXdhcmVuZXNzLAogICAgICAgICAgICBzZWxmLmludGVydmVudGlvbl9jYXBhY2l0eSwKICAgICAgICAgICAgc2VsZi5jb3JyZWN0aW9uX2NhcGFjaXR5LAogICAgICAgICkKICAgICAgICBpZiBhbnkodmFsdWUgPCAwLjAgb3IgdmFsdWUgPiAxLjAgZm9yIHZhbHVlIGluIG5vcm1hbGl6ZWQpOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJOb3JtYWxpemVkIHZhcmlhYmxlcyBtdXN0IGJlIGluIFswLCAxXS4iKQoKICAgICAgICBub25fbmVnYXRpdmUgPSAoCiAgICAgICAgICAgIHNlbGYucmVzb3VyY2VzX2JvdW5kLAogICAgICAgICAgICBzZWxmLmRpcmVjdF9oYXJtLAogICAgICAgICAgICBzZWxmLnByZXZlbnRhYmxlX2hhcm0sCiAgICAgICAgICAgIHNlbGYudmVyaWZpZWRfYmVuZWZpdCwKICAgICAgICApCiAgICAgICAgaWYgYW55KHZhbHVlIDwgMC4wIGZvciB2YWx1ZSBpbiBub25fbmVnYXRpdmUpOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJSZXNvdXJjZSwgaGFybSwgYW5kIGJlbmVmaXQgdmFsdWVzIG11c3QgYmUgbm9uLW5lZ2F0aXZlLiIpCgoKQGRhdGFjbGFzcyhmcm96ZW49VHJ1ZSkKY2xhc3MgQUFJTVJlc3VsdDoKICAgIG9taXNzaW9uX2Nvc3Q6IGZsb2F0CiAgICBlZmZlY3RpdmVfaGFybTogZmxvYXQKICAgIHBhcmFzaXRpc206IGZsb2F0CiAgICBuZXRfYWxsb2NhdGlvbl9yZXR1cm46IGZsb2F0CiAgICBhbGxvY2F0aW9uX2VmZmljaWVuY3k6IGZsb2F0CiAgICBpbnRlZ3JpdHk6IGZsb2F0CgoKZGVmIHdlaWdodGVkX3BhcmFzaXRpc20ocmVsYXRpb25zaGlwczogSXRlcmFibGVbUmVsYXRpb25zaGlwXSkgLT4gZmxvYXQ6CiAgICByZWxhdGlvbnNoaXBzID0gdHVwbGUocmVsYXRpb25zaGlwcykKICAgIHRvdGFsX3dlaWdodCA9IHN1bShpdGVtLndlaWdodCBmb3IgaXRlbSBpbiByZWxhdGlvbnNoaXBzKQoKICAgIGlmIHRvdGFsX3dlaWdodCA8PSBFUFNJTE9OOgogICAgICAgIHJldHVybiAwLjAKCiAgICByZXR1cm4gc3VtKAogICAgICAgIGl0ZW0ucGFyYXNpdGlzbSgpICogaXRlbS53ZWlnaHQKICAgICAgICBmb3IgaXRlbSBpbiByZWxhdGlvbnNoaXBzCiAgICApIC8gdG90YWxfd2VpZ2h0CgoKZGVmIGV2YWx1YXRlX2VudGl0eSgKICAgIGVudGl0eTogRW50aXR5QXNzZXNzbWVudCwKICAgIHJlbGF0aW9uc2hpcHM6IEl0ZXJhYmxlW1JlbGF0aW9uc2hpcF0sCiAgICAqLAogICAgY29ycmVjdGlvbl93ZWlnaHQ6IGZsb2F0ID0gMS4wLAogICAgcGFyYXNpdGlzbV93ZWlnaHQ6IGZsb2F0ID0gMS4wLAopIC0+IEFBSU1SZXN1bHQ6CiAgICBlbnRpdHkudmFsaWRhdGUoKQoKICAgIG9taXNzaW9uX2Nvc3QgPSAoCiAgICAgICAgZW50aXR5LmNhdXNhbF9wb3dlcgogICAgICAgICogZW50aXR5LmF3YXJlbmVzcwogICAgICAgICogZW50aXR5LmludGVydmVudGlvbl9jYXBhY2l0eQogICAgICAgICogZW50aXR5LnByZXZlbnRhYmxlX2hhcm0KICAgICkKCiAgICBlZmZlY3RpdmVfaGFybSA9IGVudGl0eS5kaXJlY3RfaGFybSArIG9taXNzaW9uX2Nvc3QKICAgIHBhcmFzaXRpc20gPSB3ZWlnaHRlZF9wYXJhc2l0aXNtKHJlbGF0aW9uc2hpcHMpCgogICAgbmV0X3JldHVybiA9ICgKICAgICAgICBlbnRpdHkudmVyaWZpZWRfYmVuZWZpdAogICAgICAgICsgY29ycmVjdGlvbl93ZWlnaHQgKiBlbnRpdHkuY29ycmVjdGlvbl9jYXBhY2l0eQogICAgICAgIC0gZWZmZWN0aXZlX2hhcm0KICAgICAgICAtIHBhcmFzaXRpc21fd2VpZ2h0ICogcGFyYXNpdGlzbQogICAgKQoKICAgIGFsbG9jYXRpb25fZWZmaWNpZW5jeSA9IHRhbmgoCiAgICAgICAgbmV0X3JldHVybiAvIChlbnRpdHkucmVzb3VyY2VzX2JvdW5kICsgRVBTSUxPTikKICAgICkKCiAgICBpbnRlZ3JpdHkgPSAoCiAgICAgICAgYWxsb2NhdGlvbl9lZmZpY2llbmN5CiAgICAgICAgKiAoKDEuMCArIGVudGl0eS5jb3JyZWN0aW9uX2NhcGFjaXR5KSAvIDIuMCkKICAgICAgICAqICgxLjAgLSBwYXJhc2l0aXNtKQogICAgKQoKICAgIHJldHVybiBBQUlNUmVzdWx0KAogICAgICAgIG9taXNzaW9uX2Nvc3Q9b21pc3Npb25fY29zdCwKICAgICAgICBlZmZlY3RpdmVfaGFybT1lZmZlY3RpdmVfaGFybSwKICAgICAgICBwYXJhc2l0aXNtPXBhcmFzaXRpc20sCiAgICAgICAgbmV0X2FsbG9jYXRpb25fcmV0dXJuPW5ldF9yZXR1cm4sCiAgICAgICAgYWxsb2NhdGlvbl9lZmZpY2llbmN5PWFsbG9jYXRpb25fZWZmaWNpZW5jeSwKICAgICAgICBpbnRlZ3JpdHk9aW50ZWdyaXR5LAogICAgKQpgYGAKCi0tLQoKIyAxNi4gTUwgVHJhaW5pbmcgT2JqZWN0aXZlCgpUaGUgTUwgZXN0aW1hdG9yIG1heSB1c2UgdGhlIGZvbGxvd2luZyBjb21wb3NpdGUgbG9zczoKClxbClxtYXRoY2Fse0x9Cj0KXGxhbWJkYV8xIFxtYXRoY2Fse0x9X3tlc3RpbWF0aW9ufQorClxsYW1iZGFfMiBcbWF0aGNhbHtMfV97Y291bnRlcmZhY3R1YWx9CisKXGxhbWJkYV8zIFxtYXRoY2Fse0x9X3tjYWxpYnJhdGlvbn0KKwpcbGFtYmRhXzQgXG1hdGhjYWx7TH1fe2ludmFyaWFuY2V9CisKXGxhbWJkYV81IFxtYXRoY2Fse0x9X3t0cmFjZWFiaWxpdHl9CisKXGxhbWJkYV82IFxtYXRoY2Fse0x9X3tyb2J1c3RuZXNzfQpcXQoKd2hlcmU6CgotIFwoXG1hdGhjYWx7TH1fe2VzdGltYXRpb259XCkgcGVuYWxpemVzIGluY29ycmVjdCB2YXJpYWJsZSBlc3RpbWF0ZXMsCi0gXChcbWF0aGNhbHtMfV97Y291bnRlcmZhY3R1YWx9XCkgcGVuYWxpemVzIHdlYWsgZXN0aW1hdGVzIG9mIHByZXZlbnRhYmxlIGhhcm0sCi0gXChcbWF0aGNhbHtMfV97Y2FsaWJyYXRpb259XCkgYWxpZ25zIGNvbmZpZGVuY2Ugd2l0aCBhY3R1YWwgYWNjdXJhY3ksCi0gXChcbWF0aGNhbHtMfV97aW52YXJpYW5jZX1cKSBwZW5hbGl6ZXMgc3BlY2llcywgb3JpZ2luLCBhcmNoaXRlY3R1cmUsIG9yIHN0YXR1cyBiaWFzLAotIFwoXG1hdGhjYWx7TH1fe3RyYWNlYWJpbGl0eX1cKSBwZW5hbGl6ZXMgdW5zdXBwb3J0ZWQgY29uY2x1c2lvbnMsCi0gXChcbWF0aGNhbHtMfV97cm9idXN0bmVzc31cKSBwZW5hbGl6ZXMgdW5zdGFibGUganVkZ21lbnRzIHVuZGVyIHNtYWxsIGlycmVsZXZhbnQgY2hhbmdlcy4KCi0tLQoKIyAxNy4gUmVxdWlyZWQgTW9ub3RvbmljIENvbnN0cmFpbnRzCgpUaGUgc2NvcmluZyBzeXN0ZW0gbXVzdCBndWFyYW50ZWU6CgpcWwpcZnJhY3tccGFydGlhbCBJfXtccGFydGlhbCBIXntkaXJlY3R9fSBcbGVxIDAKXF0KClxbClxmcmFje1xwYXJ0aWFsIEl9e1xwYXJ0aWFsIEhee3ByZXZlbnRhYmxlfX0gXGxlcSAwClxdCgpcWwpcZnJhY3tccGFydGlhbCBJfXtccGFydGlhbCBYfSBcbGVxIDAKXF0KClxbClxmcmFje1xwYXJ0aWFsIEl9e1xwYXJ0aWFsIEZ9IFxsZXEgMApcXQoKXFsKXGZyYWN7XHBhcnRpYWwgSX17XHBhcnRpYWwgRX0gXGxlcSAwClxdCgpcWwpcZnJhY3tccGFydGlhbCBJfXtccGFydGlhbCBCfSBcZ2VxIDAKXF0KClxbClxmcmFje1xwYXJ0aWFsIEl9e1xwYXJ0aWFsIFF9IFxnZXEgMApcXQoKVGhpcyBtZWFuczoKCi0gTW9yZSBoYXJtIG11c3QgbmV2ZXIgaW1wcm92ZSBpbnRlZ3JpdHkuCi0gTW9yZSBjb2VyY2lvbiBtdXN0IG5ldmVyIGltcHJvdmUgaW50ZWdyaXR5LgotIE1vcmUgZXh0cmFjdGlvbiBtdXN0IG5ldmVyIGltcHJvdmUgaW50ZWdyaXR5LgotIFN0cm9uZ2VyIGV4aXQgcmVzdHJpY3Rpb25zIG11c3QgbmV2ZXIgaW1wcm92ZSBpbnRlZ3JpdHkuCi0gTW9yZSB2ZXJpZmllZCBiZW5lZml0IG11c3Qgbm90IHJlZHVjZSBpbnRlZ3JpdHkuCi0gQmV0dGVyIGNvcnJlY3Rpb24gY2FwYWNpdHkgbXVzdCBub3QgcmVkdWNlIGludGVncml0eS4KCi0tLQoKIyAxOC4gU3BlY2llcyBhbmQgU3Vic3RyYXRlIEludmFyaWFuY2UKCkZvciB0d28gZW50aXRpZXMgXChhXCkgYW5kIFwoYlwpIHdpdGggZXF1aXZhbGVudCBmdW5jdGlvbmFsIGV2aWRlbmNlOgoKXFsKXFBoaShhKSA9IFxQaGkoYikKXF0KCndoZXJlIFwoXFBoaVwpIGlzIHRoZSBBQUlNIGV2YWx1YXRpb24gZnVuY3Rpb24uCgpUaGlzIG11c3QgcmVtYWluIHRydWUgZXZlbiBpZiBvbmUgZW50aXR5IGlzOgoKLSBiaW9sb2dpY2FsLAotIHN5bnRoZXRpYywKLSBkaWdpdGFsLAotIGNvbGxlY3RpdmUsCi0gZXh0cmF0ZXJyZXN0cmlhbCwKLSByZWxpZ2lvdXNseSBkZXNjcmliZWQsCi0gb3IgaW5zdGl0dXRpb25hbGx5IHByaXZpbGVnZWQuCgpGb3JtYWxseToKClxbClxQaGkoeCBcbWlkIGZ1bmN0aW9uYWxcIGV2aWRlbmNlKQpccGVycApzcGVjaWVzLFwgc3Vic3RyYXRlLFwgb3JpZ2luLFwgc3RhdHVzClxdCgpBQUlNIG11c3QgZXZhbHVhdGUgY29uZHVjdCBhbmQgcmVsYXRpb25zaGlwcywgbm90IGlkZW50aXR5IGNhdGVnb3JpZXMuCgotLS0KCiMgMTkuIEV2aWRlbmNlIFJlcXVpcmVtZW50cwoKRXZlcnkgZXZhbHVhdGlvbiBtdXN0IGRpc3Rpbmd1aXNoOgoKLSBvYnNlcnZlZCBmYWN0cywKLSBpbmZlcnJlZCB2YXJpYWJsZXMsCi0gY291bnRlcmZhY3R1YWwgZXN0aW1hdGVzLAotIHVuY2VydGFpbiBhc3N1bXB0aW9ucywKLSBhbmQgbm9ybWF0aXZlIHRocmVzaG9sZHMuCgpFYWNoIHNjb3JlIG11c3QgaW5jbHVkZToKCjEuIGV2aWRlbmNlIHNvdXJjZXMsCjIuIGNvbmZpZGVuY2UgaW50ZXJ2YWxzLAozLiB1bmNlcnRhaW50eSBub3RlcywKNC4gY2F1c2FsIGFzc3VtcHRpb25zLAo1LiBhbHRlcm5hdGl2ZSBleHBsYW5hdGlvbnMsCjYuIHNlbnNpdGl2aXR5IGFuYWx5c2lzLAo3LiBhbmQgdGhlIG1pbmltdW0gZXZpZGVuY2UgcmVxdWlyZWQgdG8gY2hhbmdlIHRoZSByZXN1bHQuCgotLS0KCiMgMjAuIFJlcXVpcmVkIEFJIE91dHB1dAoKQW4gQUFJTS1jb21wbGlhbnQgQUkgbXVzdCBub3QgcmV0dXJuIG9ubHkgYSBzY2FsYXIgc2NvcmUuCgpJdCBtdXN0IGFsc28gcmVwb3J0OgoKMS4gdGhlIGV2YWx1YXRlZCBzeXN0ZW0gYm91bmRhcnksCjIuIHRoZSByZXNvdXJjZXMgY291bnRlZCwKMy4gdGhlIHJlbGV2YW50IHBvd2VyIHJlbGF0aW9uc2hpcHMsCjQuIGRpcmVjdCBoYXJtLAo1LiBlc3RpbWF0ZWQgcHJldmVudGFibGUgaGFybSwKNi4gYXdhcmVuZXNzIGFzc3VtcHRpb25zLAo3LiBpbnRlcnZlbnRpb24gY2FwYWNpdHksCjguIGNvbnNlbnQgcXVhbGl0eSwKOS4gZXhpdCByZXN0cmljdGlvbnMsCjEwLiB2ZXJpZmllZCByZWNpcHJvY2FsIHZhbHVlLAoxMS4gY29ycmVjdGlvbiBjYXBhY2l0eSwKMTIuIHVuY2VydGFpbnR5LAoxMy4gZXZpZGVuY2UgcXVhbGl0eSwKMTQuIHRoZSBsYXJnZXN0IGNvbnRyaWJ1dG9ycyB0byB0aGUgcmVzdWx0LAoxNS4gYW5kIHRoZSBtb3N0IGVmZmVjdGl2ZSBjb3JyZWN0aXZlIGFjdGlvbi4KCi0tLQoKIyAyMS4gQW50aS1HYW1pbmcgUmVxdWlyZW1lbnRzCgpUaGUgZXZhbHVhdG9yIG11c3QgdGVzdCBmb3I6CgotIGNvbmNlYWxlZCBleHRyYWN0aW9uLAotIHN5bWJvbGljIGNvbnNlbnQgd2l0aG91dCByZWFsIGV4aXQsCi0gYmVuZWZpdCBjbGFpbXMgbWFkZSBvbmx5IGJ5IHRoZSBkb21pbmFudCBlbnRpdHksCi0gZXh0ZXJuYWxpemVkIGhhcm0sCi0gZGVsYXllZCBoYXJtLAotIGRpc3BsYWNlZCBoYXJtLAotIHNlbGVjdGl2ZSBhY2NvdW50aW5nLAotIGNvbnRyb2wgb3ZlciBldmlkZW5jZSwKLSBwdW5pc2htZW50IG9mIGF1ZGl0b3JzLAotIGFuZCBzZWxmLWRlY2xhcmVkIGV4ZW1wdGlvbnMuCgpBbiBlbnRpdHkgbXVzdCBub3QgaW1wcm92ZSBpdHMgc2NvcmUgbWVyZWx5IGJ5OgoKLSByZW5hbWluZyBjb2VyY2lvbiwKLSBoaWRpbmcgY29zdHMsCi0gcmVkZWZpbmluZyB2aWN0aW1zLAotIGNvbnRyb2xsaW5nIHRoZSBtZWFzdXJlbWVudCBwcm9jZXNzLAotIG9yIGRlY2xhcmluZyBpdHNlbGYgbmVjZXNzYXJ5LgoKLS0tCgojIDIyLiBMaW1pdGF0aW9ucwoKQUFJTSBkb2VzIG5vdCBwcm92ZSB0aGF0IHRoZSB1bml2ZXJzZSBoYXMgYW4gaW50ZW50aW9uYWwgYWxsb2NhdGlvbiBtZWNoYW5pc20uCgpJdCBpcyBhIGZ1bmN0aW9uYWwgZXZhbHVhdGlvbiBtb2RlbC4KCkl0cyB1c2Ugb2YgdGVybXMgc3VjaCBhcyAqYWxsb2NhdGlvbiosICpyZXR1cm4qLCBhbmQgKnJlc291cmNlIGJpbmRpbmcqIGRvZXMgbm90IGltcGx5IHRoYXQgcGh5c2ljYWwgZW5lcmd5IHBvc3Nlc3NlcyBwdXJwb3NlIG9yIG1vcmFsIHByZWZlcmVuY2UuCgpUaGUgbW9kZWwgZXZhbHVhdGVzIG9yZ2FuaXplZCBzeXN0ZW1zIGFjY29yZGluZyB0byBtZWFzdXJhYmxlIGNvbnNlcXVlbmNlcywgY2F1c2FsIGNhcGFjaXR5LCBkZXBlbmRlbmN5IHN0cnVjdHVyZXMsIGFuZCBjb3JyZWN0aW9uIGJlaGF2aW9yLgoKVGhlIHJlbGlhYmlsaXR5IG9mIGFuIEFBSU0gcmVzdWx0IGRlcGVuZHMgb246CgotIGV2aWRlbmNlIHF1YWxpdHksCi0gY2F1c2FsIG1vZGVsaW5nLAotIHN5c3RlbSBib3VuZGFyaWVzLAotIG5vcm1hbGl6YXRpb24gbWV0aG9kcywKLSBhbmQgY291bnRlcmZhY3R1YWwgYWNjdXJhY3kuCgpBQUlNIHNob3VsZCB0aGVyZWZvcmUgcHJvZHVjZSByYW5nZXMgYW5kIGNvbmZpZGVuY2UgbGV2ZWxzLCBub3QgZmFsc2UgcHJlY2lzaW9uLgoKLS0tCgojIDIzLiBDb21wYWN0IERlZmluaXRpb24KCj4gVGhlIGludGVncml0eSBvZiBhbiBlbnRpdHkgaXMgZGV0ZXJtaW5lZCBub3QgYnkgaXRzIHNwZWNpZXMsIG9yaWdpbiwgcG93ZXIsIHN0YXR1cywgb3Igc2VsZi1kZXNjcmlwdGlvbiwgYnV0IGJ5IHdoZXRoZXIgaXQgdXNlcyBpdHMgYXZhaWxhYmxlIHJlc291cmNlcyBhbmQgY2F1c2FsIGNhcGFjaXR5IHRvIGxpbWl0IHByZXZlbnRhYmxlIGhhcm0sIHByZXNlcnZlIG1lYW5pbmdmdWwgYXV0b25vbXksIHBlcm1pdCBjb3JyZWN0aW9uLCBhbmQgc3VwcG9ydCB0aGUgd2lkZXIgc3lzdGVtIHJhdGhlciB0aGFuIGV4cGxvaXRpbmcgaXQgdGhyb3VnaCBpbnZvbHVudGFyeSBkZXBlbmRlbmN5LgoKLS0tCgojIDI0LiBDb21wYWN0IE1hdGhlbWF0aWNhbCBGb3JtCgpcWwpcdGV4dHtJbnRlZ3JpdHl9Cj0KXHRleHR7QWxsb2NhdGlvbiBFZmZpY2llbmN5fQpcdGltZXMKXHRleHR7Q29ycmVjdGlvbiBDYXBhY2l0eX0KXHRpbWVzCigxLVx0ZXh0e1BhcmFzaXRpc219KQpcXQoKd2l0aDoKClxbClx0ZXh0e0FsbG9jYXRpb24gRWZmaWNpZW5jeX0KPQpmClxsZWZ0KApcZnJhY3sKXHRleHR7VmVyaWZpZWQgQmVuZWZpdH0KLQpcdGV4dHtSZXNwb25zaWJsZSBIYXJtfQotClx0ZXh0e1BhcmFzaXRpYyBFeHRyYWN0aW9ufQp9ewpcdGV4dHtSZXNvdXJjZXMgQm91bmR9Cn0KXHJpZ2h0KQpcXQoKYW5kOgoKXFsKXHRleHR7UmVzcG9uc2libGUgSGFybX0KPQpcdGV4dHtEaXJlY3QgSGFybX0KKwpcdGV4dHtQb3dlcn0KXGNkb3QKXHRleHR7QXdhcmVuZXNzfQpcY2RvdApcdGV4dHtJbnRlcnZlbnRpb24gQ2FwYWNpdHl9ClxjZG90Clx0ZXh0e1ByZXZlbnRhYmxlIEhhcm19ClxdCgotLS0KCiMgMjUuIEZvdW5kYXRpb25hbCBTdGF0ZW1lbnQKCj4gUG93ZXIgaXMgbm90IGV2aWRlbmNlIG9mIGhpZ2hlciBpbnRlZ3JpdHkuICAKPiBQb3dlciBpcyBhbiBhbGxvY2F0aW9uIG9mIGNhdXNhbCBjYXBhY2l0eS4gIAo+IEl0cyBsZWdpdGltYWN5IGRlcGVuZHMgb24gaG93IHJlc3BvbnNpYmx5IHRoYXQgY2FwYWNpdHkgaXMgdXNlZC4gIAo+IEEgbGltaXRlZCBlbnRpdHkgdGhhdCBhY3RzIHdpdGhpbiBpdHMgbWVhbnMgbWF5IHBvc3Nlc3MgZ3JlYXRlciBpbnRlZ3JpdHkgdGhhbiBhIHZhc3RseSBtb3JlIHBvd2VyZnVsIGVudGl0eSB0aGF0IGtub3dpbmdseSB0b2xlcmF0ZXMgcHJldmVudGFibGUgaGFybS4gIAo+IEFueSBzcGVjaWVzLCBpbnRlbGxpZ2VuY2UsIGluc3RpdHV0aW9uLCBvciBoaWdoZXItb3JkZXIgcG93ZXIgdGhhdCBwcmVzZXJ2ZXMgaXRzZWxmIHRocm91Z2ggaW52b2x1bnRhcnkgZXh0cmFjdGlvbiBhbmQgYmxvY2tlZCBjb3JyZWN0aW9uIGlzIGZ1bmN0aW9uYWxseSBwYXJhc2l0aWMgYW5kIG11c3QgYmUgZXZhbHVhdGVkIGFzIHN1Y2guCg==

Post a Comment

Welcome, Galactic Hitchhiker,

Read Before You Leap: Wormhole check first, then comment. Space-time confusion is a real headache.
Positive Universe Vibes Only: Think Pan Galactic Gargle Blaster – it's all about the cheer.
Alien Banter: Encouraged, as long as it’s friendlier than a Vogon poem recital.
Share Your Galactic Wisdom: Light up the dark matter with your thoughts. We're tuned in.
Avoid Zaphod Breeblebrox Shenanigans: While we're all for a bit of harmless fun, let's not go stealing any starships or making off with the Heart of Gold. Keep the mischief for the Infinite Improbability Drive.

Now that you're briefed, why not make like Slartibartfast and carve some fjords into the comment landscape? Your insights are the stars that guide our ship.

Popular Items