{ "name": "XgovRegistryMock", "structs": { "TypedGlobalState": [ { "name": "paused_registry", "type": "bool" }, { "name": "paused_proposals", "type": "bool" }, { "name": "xgov_manager", "type": "address" }, { "name": "xgov_payor", "type": "address" }, { "name": "xgov_council", "type": "address" }, { "name": "xgov_subscriber", "type": "address" }, { "name": "kyc_provider", "type": "address" }, { "name": "committee_manager", "type": "address" }, { "name": "xgov_daemon", "type": "address" }, { "name": "xgov_fee", "type": "uint64" }, { "name": "proposer_fee", "type": "uint64" }, { "name": "open_proposal_fee", "type": "uint64" }, { "name": "daemon_ops_funding_bps", "type": "uint64" }, { "name": "proposal_commitment_bps", "type": "uint64" }, { "name": "min_requested_amount", "type": "uint64" }, { "name": "max_requested_amount", "type": "uint64[3]" }, { "name": "discussion_duration", "type": "uint64[4]" }, { "name": "voting_duration", "type": "uint64[4]" }, { "name": "quorum", "type": "uint64[3]" }, { "name": "weighted_quorum", "type": "uint64[3]" }, { "name": "outstanding_funds", "type": "uint64" }, { "name": "pending_proposals", "type": "uint64" }, { "name": "committee_id", "type": "byte[32]" }, { "name": "committee_members", "type": "uint64" }, { "name": "committee_votes", "type": "uint64" }, { "name": "absence_tolerance", "type": "uint64" }, { "name": "governance_period", "type": "uint64" }, { "name": "committee_grace_period", "type": "uint64" }, { "name": "committee_last_anchor", "type": "uint64" } ], "XGovRegistryConfig": [ { "name": "xgov_fee", "type": "uint64" }, { "name": "proposer_fee", "type": "uint64" }, { "name": "open_proposal_fee", "type": "uint64" }, { "name": "daemon_ops_funding_bps", "type": "uint64" }, { "name": "proposal_commitment_bps", "type": "uint64" }, { "name": "min_requested_amount", "type": "uint64" }, { "name": "max_requested_amount", "type": "uint64[3]" }, { "name": "discussion_duration", "type": "uint64[4]" }, { "name": "voting_duration", "type": "uint64[4]" }, { "name": "quorum", "type": "uint64[3]" }, { "name": "weighted_quorum", "type": "uint64[3]" }, { "name": "absence_tolerance", "type": "uint64" }, { "name": "governance_period", "type": "uint64" }, { "name": "committee_grace_period", "type": "uint64" } ] }, "methods": [ { "name": "create", "args": [], "returns": { "type": "void" }, "actions": { "create": [ "NoOp" ], "call": [] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "init_proposal_contract", "args": [ { "type": "uint64", "name": "size" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "load_proposal_contract", "args": [ { "type": "uint64", "name": "offset" }, { "type": "byte[]", "name": "data" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "delete_proposal_contract_box", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "pause_registry", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "pause_proposals", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "resume_registry", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "resume_proposals", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "set_xgov_manager", "args": [ { "type": "address", "name": "manager" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "set_payor", "args": [ { "type": "address", "name": "payor" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "set_xgov_council", "args": [ { "type": "address", "name": "council" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "set_xgov_subscriber", "args": [ { "type": "address", "name": "subscriber" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "set_kyc_provider", "args": [ { "type": "address", "name": "provider" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "set_committee_manager", "args": [ { "type": "address", "name": "manager" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "set_xgov_daemon", "args": [ { "type": "address", "name": "xgov_daemon" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "config_xgov_registry", "args": [ { "type": "(uint64,uint64,uint64,uint64,uint64,uint64,uint64[3],uint64[4],uint64[4],uint64[3],uint64[3],uint64,uint64,uint64)", "struct": "XGovRegistryConfig", "name": "config" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "update_xgov_registry", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "UpdateApplication" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "subscribe_xgov", "args": [ { "type": "address", "name": "voting_address" }, { "type": "pay", "name": "payment" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "unsubscribe_xgov", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "unsubscribe_absentee", "args": [ { "type": "address", "name": "xgov_address" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "approve_subscribe_xgov", "args": [ { "type": "uint64", "name": "request_id" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "reject_subscribe_xgov", "args": [ { "type": "uint64", "name": "request_id" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "request_subscribe_xgov", "args": [ { "type": "address", "name": "xgov_address" }, { "type": "address", "name": "owner_address" }, { "type": "uint64", "name": "relation_type" }, { "type": "pay", "name": "payment" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "request_unsubscribe_xgov", "args": [ { "type": "address", "name": "xgov_address" }, { "type": "address", "name": "owner_address" }, { "type": "uint64", "name": "relation_type" }, { "type": "pay", "name": "payment" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "approve_unsubscribe_xgov", "args": [ { "type": "uint64", "name": "request_id" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "reject_unsubscribe_xgov", "args": [ { "type": "uint64", "name": "request_id" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "set_voting_account", "args": [ { "type": "address", "name": "xgov_address" }, { "type": "address", "name": "voting_address" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "subscribe_proposer", "args": [ { "type": "pay", "name": "payment" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "set_proposer_kyc", "args": [ { "type": "address", "name": "proposer" }, { "type": "bool", "name": "kyc_status" }, { "type": "uint64", "name": "kyc_expiring" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "declare_committee", "args": [ { "type": "byte[32]", "name": "committee_id" }, { "type": "uint64", "name": "size" }, { "type": "uint64", "name": "votes" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "open_proposal", "args": [ { "type": "pay", "name": "payment" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "vote_proposal", "args": [ { "type": "uint64", "name": "proposal_id" }, { "type": "address", "name": "xgov_address" }, { "type": "uint64", "name": "approval_votes" }, { "type": "uint64", "name": "rejection_votes" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "unassign_absentee_from_proposal", "args": [ { "type": "uint64", "name": "proposal_id" }, { "type": "address[]", "name": "absentees" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "pay_grant_proposal", "args": [ { "type": "uint64", "name": "proposal_id" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "finalize_proposal", "args": [ { "type": "uint64", "name": "proposal_id" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "drop_proposal", "args": [ { "type": "uint64", "name": "proposal_id" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "deposit_funds", "args": [ { "type": "pay", "name": "payment" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "withdraw_funds", "args": [ { "type": "uint64", "name": "amount" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "withdraw_available_funds", "args": [ { "type": "uint64", "name": "amount" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "get_available_funds", "args": [], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "get_state", "args": [], "returns": { "type": "(bool,bool,address,address,address,address,address,address,address,uint64,uint64,uint64,uint64,uint64,uint64,uint64[3],uint64[4],uint64[4],uint64[3],uint64[3],uint64,uint64,byte[32],uint64,uint64,uint64,uint64,uint64,uint64)", "struct": "TypedGlobalState" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "get_xgov_box", "args": [ { "type": "address", "name": "xgov_address" } ], "returns": { "type": "((address,uint64,uint64,uint64),bool)" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "get_proposer_box", "args": [ { "type": "address", "name": "proposer_address" } ], "returns": { "type": "((bool,bool,uint64),bool)" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "get_request_box", "args": [ { "type": "uint64", "name": "request_id" } ], "returns": { "type": "((address,address,uint64),bool)" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "get_request_unsubscribe_box", "args": [ { "type": "uint64", "name": "request_id" } ], "returns": { "type": "((address,address,uint64),bool)" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "is_proposal", "args": [ { "type": "uint64", "name": "proposal_id" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "create_empty_proposal", "args": [ { "type": "address", "name": "proposer" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "op_up", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 29, "bytes": 3 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": { "xgov_council": { "keyType": "AVMBytes", "valueType": "address", "key": "eGdvdl9jb3VuY2ls" }, "xgov_daemon": { "keyType": "AVMBytes", "valueType": "address", "key": "eGdvdl9kYWVtb24=" }, "paused_registry": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "cGF1c2VkX3JlZ2lzdHJ5" }, "paused_proposals": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "cGF1c2VkX3Byb3Bvc2Fscw==" }, "open_proposal_fee": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "b3Blbl9wcm9wb3NhbF9mZWU=" }, "daemon_ops_funding_bps": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "ZGFlbW9uX29wZXJhdGlvbl9mdW5kaW5nX2Jwcw==" }, "proposal_commitment_bps": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "cHJvcG9zYWxfY29tbWl0bWVudF9icHM=" }, "min_requested_amount": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "bWluX3JlcXVlc3RlZF9hbW91bnQ=" }, "max_requested_amount_small": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "bWF4X3JlcXVlc3RlZF9hbW91bnRfc21hbGw=" }, "max_requested_amount_medium": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "bWF4X3JlcXVlc3RlZF9hbW91bnRfbWVkaXVt" }, "max_requested_amount_large": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "bWF4X3JlcXVlc3RlZF9hbW91bnRfbGFyZ2U=" }, "discussion_duration_small": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "ZGlzY3Vzc2lvbl9kdXJhdGlvbl9zbWFsbA==" }, "discussion_duration_medium": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "ZGlzY3Vzc2lvbl9kdXJhdGlvbl9tZWRpdW0=" }, "discussion_duration_large": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "ZGlzY3Vzc2lvbl9kdXJhdGlvbl9sYXJnZQ==" }, "discussion_duration_xlarge": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "ZGlzY3Vzc2lvbl9kdXJhdGlvbl94bGFyZ2U=" }, "voting_duration_small": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "dm90aW5nX2R1cmF0aW9uX3NtYWxs" }, "voting_duration_medium": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "dm90aW5nX2R1cmF0aW9uX21lZGl1bQ==" }, "voting_duration_large": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "dm90aW5nX2R1cmF0aW9uX2xhcmdl" }, "voting_duration_xlarge": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "dm90aW5nX2R1cmF0aW9uX3hsYXJnZQ==" }, "committee_id": { "keyType": "AVMBytes", "valueType": "byte[32]", "key": "Y29tbWl0dGVlX2lk" }, "committee_members": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "Y29tbWl0dGVlX21lbWJlcnM=" }, "committee_votes": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "Y29tbWl0dGVlX3ZvdGVz" }, "quorum_small": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "cXVvcnVtX3NtYWxs" }, "quorum_medium": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "cXVvcnVtX21lZGl1bQ==" }, "quorum_large": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "cXVvcnVtX2xhcmdl" }, "weighted_quorum_small": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "d2VpZ2h0ZWRfcXVvcnVtX3NtYWxs" }, "weighted_quorum_medium": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "d2VpZ2h0ZWRfcXVvcnVtX21lZGl1bQ==" }, "weighted_quorum_large": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "d2VpZ2h0ZWRfcXVvcnVtX2xhcmdl" }, "absence_tolerance": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "YWJzZW5jZV90b2xlcmFuY2U=" }, "governance_period": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "Z292ZXJuYW5jZV9wZXJpb2Q=" }, "committee_grace_period": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "Y29tbWl0dGVlX2dyYWNlX3BlcmlvZA==" }, "committee_last_anchor": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "Y29tbWl0dGVlX2xhc3RfYW5jaG9y" } }, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 2048, 2455 ], "errorMessage": "Missing Config" }, { "pc": [ 2454 ], "errorMessage": "There are voters assigned to this proposal" }, { "pc": [ 2052, 2298 ], "errorMessage": "Unauthorized" }, { "pc": [ 2045, 2180, 2187, 2296, 2453, 2560 ], "errorMessage": "Unknown error" }, { "pc": [ 2050 ], "errorMessage": "Voter already voted" }, { "pc": [ 2051, 2181 ], "errorMessage": "Voter not found" }, { "pc": [ 2049 ], "errorMessage": "Votes invalid" }, { "pc": [ 2046 ], "errorMessage": "Voting Period Expired" }, { "pc": [ 2047, 2182, 2297, 2456, 2561 ], "errorMessage": "Wrong Proposal Status or finalized" }, { "pc": [ 3080, 7353 ], "errorMessage": "account funded" }, { "pc": [ 7359 ], "errorMessage": "application exists" }, { "pc": [ 1913, 2121, 2237, 2348, 2506 ], "errorMessage": "application log value is not the result of an ABI return" }, { "pc": [ 2811 ], "errorMessage": "check self.absence_tolerance exists" }, { "pc": [ 2821 ], "errorMessage": "check self.committee_grace_period exists" }, { "pc": [ 2796 ], "errorMessage": "check self.committee_id exists" }, { "pc": [ 2826 ], "errorMessage": "check self.committee_last_anchor exists" }, { "pc": [ 2801 ], "errorMessage": "check self.committee_members exists" }, { "pc": [ 2806 ], "errorMessage": "check self.committee_votes exists" }, { "pc": [ 2638 ], "errorMessage": "check self.daemon_ops_funding_bps exists" }, { "pc": [ 2688 ], "errorMessage": "check self.discussion_duration_large exists" }, { "pc": [ 2683 ], "errorMessage": "check self.discussion_duration_medium exists" }, { "pc": [ 2678 ], "errorMessage": "check self.discussion_duration_small exists" }, { "pc": [ 2693 ], "errorMessage": "check self.discussion_duration_xlarge exists" }, { "pc": [ 2816 ], "errorMessage": "check self.governance_period exists" }, { "pc": [ 2663 ], "errorMessage": "check self.max_requested_amount_large exists" }, { "pc": [ 2658 ], "errorMessage": "check self.max_requested_amount_medium exists" }, { "pc": [ 2653 ], "errorMessage": "check self.max_requested_amount_small exists" }, { "pc": [ 2648 ], "errorMessage": "check self.min_requested_amount exists" }, { "pc": [ 2633, 7364 ], "errorMessage": "check self.open_proposal_fee exists" }, { "pc": [ 2611 ], "errorMessage": "check self.paused_proposals exists" }, { "pc": [ 2606 ], "errorMessage": "check self.paused_registry exists" }, { "pc": [ 2643 ], "errorMessage": "check self.proposal_commitment_bps exists" }, { "pc": [ 2756 ], "errorMessage": "check self.quorum_large exists" }, { "pc": [ 2751 ], "errorMessage": "check self.quorum_medium exists" }, { "pc": [ 2746 ], "errorMessage": "check self.quorum_small exists" }, { "pc": [ 2722 ], "errorMessage": "check self.voting_duration_large exists" }, { "pc": [ 2717 ], "errorMessage": "check self.voting_duration_medium exists" }, { "pc": [ 2712 ], "errorMessage": "check self.voting_duration_small exists" }, { "pc": [ 2727 ], "errorMessage": "check self.voting_duration_xlarge exists" }, { "pc": [ 2781 ], "errorMessage": "check self.weighted_quorum_large exists" }, { "pc": [ 2776 ], "errorMessage": "check self.weighted_quorum_medium exists" }, { "pc": [ 2771 ], "errorMessage": "check self.weighted_quorum_small exists" }, { "pc": [ 2619 ], "errorMessage": "check self.xgov_council exists" }, { "pc": [ 2628 ], "errorMessage": "check self.xgov_daemon exists" }, { "pc": [ 1514, 1920, 2079, 2128, 2244, 2355, 2513 ], "errorMessage": "invalid array length header" }, { "pc": [ 1775 ], "errorMessage": "invalid number of bytes for arc4.bool" }, { "pc": [ 2089 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 1521 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 1530, 1539, 1549, 1562, 1571, 1580, 1590, 1614, 1632, 1659, 1666, 1691, 1698, 1741, 1748, 1768, 1792, 1857, 2942, 3015, 3075 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 1499, 1508, 1641, 1650, 1673, 1705, 1723, 1732, 1782, 1800, 1809, 1848, 1865, 1873, 2072, 2207, 2318, 2476, 2591, 2600, 3041, 3053, 3065 ], "errorMessage": "invalid number of bytes for arc4.uint64" }, { "pc": [ 1605 ], "errorMessage": "invalid number of bytes for smart_contracts.common.abi_types.XGovRegistryConfig" }, { "pc": [ 1927, 2135, 2251, 2362, 2520 ], "errorMessage": "invalid number of bytes for string" }, { "pc": [ 1623, 1682, 1714, 1759, 1835, 2582 ], "errorMessage": "transaction type is pay" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAxIDAgOCAzMiAxODE0NDAwIDI0MTkyMDAgNjA0ODAwCiAgICBieXRlY2Jsb2NrIDB4MTUxZjdjNzUgIldyb25nIFByb3Bvc2FsIFN0YXR1cyBvciBmaW5hbGl6ZWQiICJFUlI6IiAweDcwNjE3NTczNjU2NDVmNzI2NTY3Njk3Mzc0NzI3OSAweDcwNjE3NTczNjU2NDVmNzA3MjZmNzA2ZjczNjE2YzczIDB4Nzg2NzZmNzY1ZjYzNmY3NTZlNjM2OTZjIDB4Nzg2NzZmNzY1ZjY0NjE2NTZkNmY2ZSAweDZmNzA2NTZlNWY3MDcyNmY3MDZmNzM2MTZjNWY2NjY1NjUgMHg2MzZmNmQ2ZDY5NzQ3NDY1NjU1ZjY5NjQgMHg2MzZmNmQ2ZDY5NzQ3NDY1NjU1ZjZkNjU2ZDYyNjU3MjczIDB4NjM2ZjZkNmQ2OTc0NzQ2NTY1NWY3NjZmNzQ2NTczIDB4NjQ2MTY1NmQ2ZjZlNWY2ZjcwNjU3MjYxNzQ2OTZmNmU1ZjY2NzU2ZTY0Njk2ZTY3NWY2MjcwNzMgMHg3MDcyNmY3MDZmNzM2MTZjNWY2MzZmNmQ2ZDY5NzQ2ZDY1NmU3NDVmNjI3MDczIDB4NmQ2OTZlNWY3MjY1NzE3NTY1NzM3NDY1NjQ1ZjYxNmQ2Zjc1NmU3NCAweDZkNjE3ODVmNzI2NTcxNzU2NTczNzQ2NTY0NWY2MTZkNmY3NTZlNzQ1ZjczNmQ2MTZjNmMgMHg2ZDYxNzg1ZjcyNjU3MTc1NjU3Mzc0NjU2NDVmNjE2ZDZmNzU2ZTc0NWY2ZDY1NjQ2OTc1NmQgMHg2ZDYxNzg1ZjcyNjU3MTc1NjU3Mzc0NjU2NDVmNjE2ZDZmNzU2ZTc0NWY2YzYxNzI2NzY1IDB4NjQ2OTczNjM3NTczNzM2OTZmNmU1ZjY0NzU3MjYxNzQ2OTZmNmU1ZjczNmQ2MTZjNmMgMHg2NDY5NzM2Mzc1NzM3MzY5NmY2ZTVmNjQ3NTcyNjE3NDY5NmY2ZTVmNmQ2NTY0Njk3NTZkIDB4NjQ2OTczNjM3NTczNzM2OTZmNmU1ZjY0NzU3MjYxNzQ2OTZmNmU1ZjZjNjE3MjY3NjUgMHg2NDY5NzM2Mzc1NzM3MzY5NmY2ZTVmNjQ3NTcyNjE3NDY5NmY2ZTVmNzg2YzYxNzI2NzY1IDB4NzY2Zjc0Njk2ZTY3NWY2NDc1NzI2MTc0Njk2ZjZlNWY3MzZkNjE2YzZjIDB4NzY2Zjc0Njk2ZTY3NWY2NDc1NzI2MTc0Njk2ZjZlNWY2ZDY1NjQ2OTc1NmQgMHg3NjZmNzQ2OTZlNjc1ZjY0NzU3MjYxNzQ2OTZmNmU1ZjZjNjE3MjY3NjUgMHg3NjZmNzQ2OTZlNjc1ZjY0NzU3MjYxNzQ2OTZmNmU1Zjc4NmM2MTcyNjc2NSAweDcxNzU2ZjcyNzU2ZDVmNzM2ZDYxNmM2YyAweDcxNzU2ZjcyNzU2ZDVmNmQ2NTY0Njk3NTZkIDB4NzE3NTZmNzI3NTZkNWY2YzYxNzI2NzY1IDB4Nzc2NTY5Njc2ODc0NjU2NDVmNzE3NTZmNzI3NTZkNWY3MzZkNjE2YzZjIDB4Nzc2NTY5Njc2ODc0NjU2NDVmNzE3NTZmNzI3NTZkNWY2ZDY1NjQ2OTc1NmQgMHg3NzY1Njk2NzY4NzQ2NTY0NWY3MTc1NmY3Mjc1NmQ1ZjZjNjE3MjY3NjUgMHg2MTYyNzM2NTZlNjM2NTVmNzQ2ZjZjNjU3MjYxNmU2MzY1IDB4Njc2Zjc2NjU3MjZlNjE2ZTYzNjU1ZjcwNjU3MjY5NmY2NCAweDYzNmY2ZDZkNjk3NDc0NjU2NTVmNjc3MjYxNjM2NTVmNzA2NTcyNjk2ZjY0IDB4NjM2ZjZkNmQ2OTc0NzQ2NTY1NWY2YzYxNzM3NDVmNjE2ZTYzNjg2ZjcyIDB4MTUxZjdjNzUwMDAwMDAwMDAwMDAwMDAwICJVbmF1dGhvcml6ZWQiICJWb3RlciBub3QgZm91bmQiICJNaXNzaW5nIENvbmZpZyIgYmFzZTMyKENVUFhZNUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEpCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYm56IG1haW5fYWZ0ZXJfaWZfZWxzZUAyCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjMwCiAgICAvLyBrZXk9cmVnX2NmZy5HU19LRVlfWEdPVl9DT1VOQ0lMLAogICAgYnl0ZWMgNSAvLyAweDc4Njc2Zjc2NWY2MzZmNzU2ZTYzNjk2YwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToyOQogICAgLy8gQWNjb3VudCgpLAogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjI3LTMxCiAgICAvLyAjIFJvbGUtQmFzZWQgQWNjZXNzIENvbnRyb2wgKFJCQUMpCiAgICAvLyBzZWxmLnhnb3ZfY291bmNpbCA9IEdsb2JhbFN0YXRlKAogICAgLy8gICAgIEFjY291bnQoKSwKICAgIC8vICAgICBrZXk9cmVnX2NmZy5HU19LRVlfWEdPVl9DT1VOQ0lMLAogICAgLy8gKQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzQKICAgIC8vIGtleT1yZWdfY2ZnLkdTX0tFWV9YR09WX0RBRU1PTiwKICAgIGJ5dGVjIDYgLy8gMHg3ODY3NmY3NjVmNjQ2MTY1NmQ2ZjZlCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjMzCiAgICAvLyBBY2NvdW50KCksCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzItMzUKICAgIC8vIHNlbGYueGdvdl9kYWVtb24gPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBBY2NvdW50KCksCiAgICAvLyAgICAga2V5PXJlZ19jZmcuR1NfS0VZX1hHT1ZfREFFTU9OLAogICAgLy8gKQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDAKICAgIC8vIGtleT1yZWdfY2ZnLkdTX0tFWV9QQVVTRURfUkVHSVNUUlksCiAgICBieXRlY18zIC8vIDB4NzA2MTc1NzM2NTY0NWY3MjY1Njc2OTczNzQ3Mjc5CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjM5CiAgICAvLyBGYWxzZSwgICMgbm9xYTogRkJUMDAzCiAgICBpbnRjXzEgLy8gMAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTozNy00MQogICAgLy8gIyBSZWdpc3RyeSBDb250cm9sIFN0YXRlcwogICAgLy8gc2VsZi5wYXVzZWRfcmVnaXN0cnkgPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBGYWxzZSwgICMgbm9xYTogRkJUMDAzCiAgICAvLyAgICAga2V5PXJlZ19jZmcuR1NfS0VZX1BBVVNFRF9SRUdJU1RSWSwKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjQ0CiAgICAvLyBrZXk9cmVnX2NmZy5HU19LRVlfUEFVU0VEX1BST1BPU0FMUywKICAgIGJ5dGVjIDQgLy8gMHg3MDYxNzU3MzY1NjQ1ZjcwNzI2ZjcwNmY3MzYxNmM3MwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0MwogICAgLy8gRmFsc2UsICAjIG5vcWE6IEZCVDAwMwogICAgaW50Y18xIC8vIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDItNDUKICAgIC8vIHNlbGYucGF1c2VkX3Byb3Bvc2FscyA9IEdsb2JhbFN0YXRlKAogICAgLy8gICAgIEZhbHNlLCAgIyBub3FhOiBGQlQwMDMKICAgIC8vICAgICBrZXk9cmVnX2NmZy5HU19LRVlfUEFVU0VEX1BST1BPU0FMUywKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjUwCiAgICAvLyBrZXk9cmVnX2NmZy5HU19LRVlfT1BFTl9QUk9QT1NBTF9GRUUsCiAgICBieXRlYyA3IC8vIDB4NmY3MDY1NmU1ZjcwNzI2ZjcwNmY3MzYxNmM1ZjY2NjU2NQogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0OQogICAgLy8gVUludDY0KHJlZ19jZmcuT1BFTl9QUk9QT1NBTF9GRUUpLAogICAgcHVzaGludCAxMDAwMDAwMDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDctNTEKICAgIC8vICMgRmVlcwogICAgLy8gc2VsZi5vcGVuX3Byb3Bvc2FsX2ZlZSA9IEdsb2JhbFN0YXRlKAogICAgLy8gICAgIFVJbnQ2NChyZWdfY2ZnLk9QRU5fUFJPUE9TQUxfRkVFKSwKICAgIC8vICAgICBrZXk9cmVnX2NmZy5HU19LRVlfT1BFTl9QUk9QT1NBTF9GRUUsCiAgICAvLyApCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo1NAogICAgLy8ga2V5PXJlZ19jZmcuR1NfS0VZX0RBRU1PTl9PUFNfRlVORElOR19CUFMsCiAgICBieXRlYyAxMSAvLyAweDY0NjE2NTZkNmY2ZTVmNmY3MDY1NzI2MTc0Njk2ZjZlNWY2Njc1NmU2NDY5NmU2NzVmNjI3MDczCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjUzCiAgICAvLyBVSW50NjQocmVnX2NmZy5EQUVNT05fT1BTX0ZVTkRJTkdfQlBTKSwKICAgIHB1c2hpbnQgNTAwCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjUyLTU1CiAgICAvLyBzZWxmLmRhZW1vbl9vcHNfZnVuZGluZ19icHMgPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBVSW50NjQocmVnX2NmZy5EQUVNT05fT1BTX0ZVTkRJTkdfQlBTKSwKICAgIC8vICAgICBrZXk9cmVnX2NmZy5HU19LRVlfREFFTU9OX09QU19GVU5ESU5HX0JQUywKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjU4CiAgICAvLyBrZXk9cmVnX2NmZy5HU19LRVlfUFJPUE9TQUxfQ09NTUlUTUVOVF9CUFMsCiAgICBieXRlYyAxMiAvLyAweDcwNzI2ZjcwNmY3MzYxNmM1ZjYzNmY2ZDZkNjk3NDZkNjU2ZTc0NWY2MjcwNzMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NTcKICAgIC8vIFVJbnQ2NChyZWdfY2ZnLlBST1BPU0FMX0NPTU1JVE1FTlRfQlBTKSwKICAgIHB1c2hpbnQgMzAwCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjU2LTU5CiAgICAvLyBzZWxmLnByb3Bvc2FsX2NvbW1pdG1lbnRfYnBzID0gR2xvYmFsU3RhdGUoCiAgICAvLyAgICAgVUludDY0KHJlZ19jZmcuUFJPUE9TQUxfQ09NTUlUTUVOVF9CUFMpLAogICAgLy8gICAgIGtleT1yZWdfY2ZnLkdTX0tFWV9QUk9QT1NBTF9DT01NSVRNRU5UX0JQUywKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjY0CiAgICAvLyBrZXk9cmVnX2NmZy5HU19LRVlfTUlOX1JFUVVFU1RFRF9BTU9VTlQsCiAgICBieXRlYyAxMyAvLyAweDZkNjk2ZTVmNzI2NTcxNzU2NTczNzQ2NTY0NWY2MTZkNmY3NTZlNzQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NjMKICAgIC8vIFVJbnQ2NChyZWdfY2ZnLk1JTl9SRVFVRVNURURfQU1PVU5UKSwKICAgIHB1c2hpbnQgMjUwMDAwMDAwMAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo2MS02NQogICAgLy8gIyBSZXF1ZXN0ZWQgQW1vdW50IExpbWl0cwogICAgLy8gc2VsZi5taW5fcmVxdWVzdGVkX2Ftb3VudCA9IEdsb2JhbFN0YXRlKAogICAgLy8gICAgIFVJbnQ2NChyZWdfY2ZnLk1JTl9SRVFVRVNURURfQU1PVU5UKSwKICAgIC8vICAgICBrZXk9cmVnX2NmZy5HU19LRVlfTUlOX1JFUVVFU1RFRF9BTU9VTlQsCiAgICAvLyApCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo2OAogICAgLy8ga2V5PXJlZ19jZmcuR1NfS0VZX01BWF9SRVFVRVNURURfQU1PVU5UX1NNQUxMLAogICAgYnl0ZWMgMTQgLy8gMHg2ZDYxNzg1ZjcyNjU3MTc1NjU3Mzc0NjU2NDVmNjE2ZDZmNzU2ZTc0NWY3MzZkNjE2YzZjCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBVSW50NjQocmVnX2NmZy5NQVhfUkVRVUVTVEVEX0FNT1VOVF9TTUFMTCksCiAgICBwdXNoaW50IDI1MDAwMDAwMDAwCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjY2LTY5CiAgICAvLyBzZWxmLm1heF9yZXF1ZXN0ZWRfYW1vdW50X3NtYWxsID0gR2xvYmFsU3RhdGUoCiAgICAvLyAgICAgVUludDY0KHJlZ19jZmcuTUFYX1JFUVVFU1RFRF9BTU9VTlRfU01BTEwpLAogICAgLy8gICAgIGtleT1yZWdfY2ZnLkdTX0tFWV9NQVhfUkVRVUVTVEVEX0FNT1VOVF9TTUFMTCwKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjcyCiAgICAvLyBrZXk9cmVnX2NmZy5HU19LRVlfTUFYX1JFUVVFU1RFRF9BTU9VTlRfTUVESVVNLAogICAgYnl0ZWMgMTUgLy8gMHg2ZDYxNzg1ZjcyNjU3MTc1NjU3Mzc0NjU2NDVmNjE2ZDZmNzU2ZTc0NWY2ZDY1NjQ2OTc1NmQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NzEKICAgIC8vIFVJbnQ2NChyZWdfY2ZnLk1BWF9SRVFVRVNURURfQU1PVU5UX01FRElVTSksCiAgICBwdXNoaW50IDEwMDAwMDAwMDAwMAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo3MC03MwogICAgLy8gc2VsZi5tYXhfcmVxdWVzdGVkX2Ftb3VudF9tZWRpdW0gPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBVSW50NjQocmVnX2NmZy5NQVhfUkVRVUVTVEVEX0FNT1VOVF9NRURJVU0pLAogICAgLy8gICAgIGtleT1yZWdfY2ZnLkdTX0tFWV9NQVhfUkVRVUVTVEVEX0FNT1VOVF9NRURJVU0sCiAgICAvLyApCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo3NgogICAgLy8ga2V5PXJlZ19jZmcuR1NfS0VZX01BWF9SRVFVRVNURURfQU1PVU5UX0xBUkdFLAogICAgYnl0ZWMgMTYgLy8gMHg2ZDYxNzg1ZjcyNjU3MTc1NjU3Mzc0NjU2NDVmNjE2ZDZmNzU2ZTc0NWY2YzYxNzI2NzY1CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5Ojc1CiAgICAvLyBVSW50NjQocmVnX2NmZy5NQVhfUkVRVUVTVEVEX0FNT1VOVF9MQVJHRSksCiAgICBwdXNoaW50IDIwMDAwMDAwMDAwMAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo3NC03NwogICAgLy8gc2VsZi5tYXhfcmVxdWVzdGVkX2Ftb3VudF9sYXJnZSA9IEdsb2JhbFN0YXRlKAogICAgLy8gICAgIFVJbnQ2NChyZWdfY2ZnLk1BWF9SRVFVRVNURURfQU1PVU5UX0xBUkdFKSwKICAgIC8vICAgICBrZXk9cmVnX2NmZy5HU19LRVlfTUFYX1JFUVVFU1RFRF9BTU9VTlRfTEFSR0UsCiAgICAvLyApCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo4MgogICAgLy8ga2V5PXJlZ19jZmcuR1NfS0VZX0RJU0NVU1NJT05fRFVSQVRJT05fU01BTEwsCiAgICBieXRlYyAxNyAvLyAweDY0Njk3MzYzNzU3MzczNjk2ZjZlNWY2NDc1NzI2MTc0Njk2ZjZlNWY3MzZkNjE2YzZjCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjgxCiAgICAvLyBVSW50NjQocmVnX2NmZy5ESVNDVVNTSU9OX0RVUkFUSU9OX1NNQUxMKSwKICAgIGludGMgNCAvLyAxODE0NDAwCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5Ojc5LTgzCiAgICAvLyAjIFRpbWUgTGltaXRzCiAgICAvLyBzZWxmLmRpc2N1c3Npb25fZHVyYXRpb25fc21hbGwgPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBVSW50NjQocmVnX2NmZy5ESVNDVVNTSU9OX0RVUkFUSU9OX1NNQUxMKSwKICAgIC8vICAgICBrZXk9cmVnX2NmZy5HU19LRVlfRElTQ1VTU0lPTl9EVVJBVElPTl9TTUFMTCwKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5Ojg2CiAgICAvLyBrZXk9cmVnX2NmZy5HU19LRVlfRElTQ1VTU0lPTl9EVVJBVElPTl9NRURJVU0sCiAgICBieXRlYyAxOCAvLyAweDY0Njk3MzYzNzU3MzczNjk2ZjZlNWY2NDc1NzI2MTc0Njk2ZjZlNWY2ZDY1NjQ2OTc1NmQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6ODUKICAgIC8vIFVJbnQ2NChyZWdfY2ZnLkRJU0NVU1NJT05fRFVSQVRJT05fTUVESVVNKSwKICAgIGludGMgNCAvLyAxODE0NDAwCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5Ojg0LTg3CiAgICAvLyBzZWxmLmRpc2N1c3Npb25fZHVyYXRpb25fbWVkaXVtID0gR2xvYmFsU3RhdGUoCiAgICAvLyAgICAgVUludDY0KHJlZ19jZmcuRElTQ1VTU0lPTl9EVVJBVElPTl9NRURJVU0pLAogICAgLy8gICAgIGtleT1yZWdfY2ZnLkdTX0tFWV9ESVNDVVNTSU9OX0RVUkFUSU9OX01FRElVTSwKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjkwCiAgICAvLyBrZXk9cmVnX2NmZy5HU19LRVlfRElTQ1VTU0lPTl9EVVJBVElPTl9MQVJHRSwKICAgIGJ5dGVjIDE5IC8vIDB4NjQ2OTczNjM3NTczNzM2OTZmNmU1ZjY0NzU3MjYxNzQ2OTZmNmU1ZjZjNjE3MjY3NjUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6ODkKICAgIC8vIFVJbnQ2NChyZWdfY2ZnLkRJU0NVU1NJT05fRFVSQVRJT05fTEFSR0UpLAogICAgaW50YyA0IC8vIDE4MTQ0MDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6ODgtOTEKICAgIC8vIHNlbGYuZGlzY3Vzc2lvbl9kdXJhdGlvbl9sYXJnZSA9IEdsb2JhbFN0YXRlKAogICAgLy8gICAgIFVJbnQ2NChyZWdfY2ZnLkRJU0NVU1NJT05fRFVSQVRJT05fTEFSR0UpLAogICAgLy8gICAgIGtleT1yZWdfY2ZnLkdTX0tFWV9ESVNDVVNTSU9OX0RVUkFUSU9OX0xBUkdFLAogICAgLy8gKQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6OTQKICAgIC8vIGtleT1yZWdfY2ZnLkdTX0tFWV9ESVNDVVNTSU9OX0RVUkFUSU9OX1hMQVJHRSwKICAgIGJ5dGVjIDIwIC8vIDB4NjQ2OTczNjM3NTczNzM2OTZmNmU1ZjY0NzU3MjYxNzQ2OTZmNmU1Zjc4NmM2MTcyNjc2NQogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo5MwogICAgLy8gVUludDY0KHJlZ19jZmcuRElTQ1VTU0lPTl9EVVJBVElPTl9YTEFSR0UpLAogICAgaW50YyA1IC8vIDI0MTkyMDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6OTItOTUKICAgIC8vIHNlbGYuZGlzY3Vzc2lvbl9kdXJhdGlvbl94bGFyZ2UgPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBVSW50NjQocmVnX2NmZy5ESVNDVVNTSU9OX0RVUkFUSU9OX1hMQVJHRSksCiAgICAvLyAgICAga2V5PXJlZ19jZmcuR1NfS0VZX0RJU0NVU1NJT05fRFVSQVRJT05fWExBUkdFLAogICAgLy8gKQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6OTgKICAgIC8vIGtleT1yZWdfY2ZnLkdTX0tFWV9WT1RJTkdfRFVSQVRJT05fU01BTEwsCiAgICBieXRlYyAyMSAvLyAweDc2NmY3NDY5NmU2NzVmNjQ3NTcyNjE3NDY5NmY2ZTVmNzM2ZDYxNmM2YwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo5NwogICAgLy8gVUludDY0KHJlZ19jZmcuVk9USU5HX0RVUkFUSU9OX1NNQUxMKSwKICAgIGludGMgNiAvLyA2MDQ4MDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6OTYtOTkKICAgIC8vIHNlbGYudm90aW5nX2R1cmF0aW9uX3NtYWxsID0gR2xvYmFsU3RhdGUoCiAgICAvLyAgICAgVUludDY0KHJlZ19jZmcuVk9USU5HX0RVUkFUSU9OX1NNQUxMKSwKICAgIC8vICAgICBrZXk9cmVnX2NmZy5HU19LRVlfVk9USU5HX0RVUkFUSU9OX1NNQUxMLAogICAgLy8gKQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MTAyCiAgICAvLyBrZXk9cmVnX2NmZy5HU19LRVlfVk9USU5HX0RVUkFUSU9OX01FRElVTSwKICAgIGJ5dGVjIDIyIC8vIDB4NzY2Zjc0Njk2ZTY3NWY2NDc1NzI2MTc0Njk2ZjZlNWY2ZDY1NjQ2OTc1NmQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MTAxCiAgICAvLyBVSW50NjQocmVnX2NmZy5WT1RJTkdfRFVSQVRJT05fTUVESVVNKSwKICAgIGludGMgNiAvLyA2MDQ4MDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MTAwLTEwMwogICAgLy8gc2VsZi52b3RpbmdfZHVyYXRpb25fbWVkaXVtID0gR2xvYmFsU3RhdGUoCiAgICAvLyAgICAgVUludDY0KHJlZ19jZmcuVk9USU5HX0RVUkFUSU9OX01FRElVTSksCiAgICAvLyAgICAga2V5PXJlZ19jZmcuR1NfS0VZX1ZPVElOR19EVVJBVElPTl9NRURJVU0sCiAgICAvLyApCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToxMDYKICAgIC8vIGtleT1yZWdfY2ZnLkdTX0tFWV9WT1RJTkdfRFVSQVRJT05fTEFSR0UsCiAgICBieXRlYyAyMyAvLyAweDc2NmY3NDY5NmU2NzVmNjQ3NTcyNjE3NDY5NmY2ZTVmNmM2MTcyNjc2NQogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToxMDUKICAgIC8vIFVJbnQ2NChyZWdfY2ZnLlZPVElOR19EVVJBVElPTl9MQVJHRSksCiAgICBwdXNoaW50IDEyMDk2MDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MTA0LTEwNwogICAgLy8gc2VsZi52b3RpbmdfZHVyYXRpb25fbGFyZ2UgPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBVSW50NjQocmVnX2NmZy5WT1RJTkdfRFVSQVRJT05fTEFSR0UpLAogICAgLy8gICAgIGtleT1yZWdfY2ZnLkdTX0tFWV9WT1RJTkdfRFVSQVRJT05fTEFSR0UsCiAgICAvLyApCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToxMTAKICAgIC8vIGtleT1yZWdfY2ZnLkdTX0tFWV9WT1RJTkdfRFVSQVRJT05fWExBUkdFLAogICAgYnl0ZWMgMjQgLy8gMHg3NjZmNzQ2OTZlNjc1ZjY0NzU3MjYxNzQ2OTZmNmU1Zjc4NmM2MTcyNjc2NQogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToxMDkKICAgIC8vIFVJbnQ2NChyZWdfY2ZnLlZPVElOR19EVVJBVElPTl9YTEFSR0UpLAogICAgaW50YyA1IC8vIDI0MTkyMDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MTA4LTExMQogICAgLy8gc2VsZi52b3RpbmdfZHVyYXRpb25feGxhcmdlID0gR2xvYmFsU3RhdGUoCiAgICAvLyAgICAgVUludDY0KHJlZ19jZmcuVk9USU5HX0RVUkFUSU9OX1hMQVJHRSksCiAgICAvLyAgICAga2V5PXJlZ19jZmcuR1NfS0VZX1ZPVElOR19EVVJBVElPTl9YTEFSR0UsCiAgICAvLyApCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToxMTYKICAgIC8vIGtleT1yZWdfY2ZnLkdTX0tFWV9DT01NSVRURUVfSUQsCiAgICBieXRlYyA4IC8vIDB4NjM2ZjZkNmQ2OTc0NzQ2NTY1NWY2OTY0CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjExNQogICAgLy8gdHlwLkJ5dGVzMzIuZnJvbV9ieXRlcyhiIjAiICogMzIpLAogICAgcHVzaGJ5dGVzIDB4MzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToxMTMtMTE3CiAgICAvLyAjIHhHb3YgQ29tbWl0dGVlCiAgICAvLyBzZWxmLmNvbW1pdHRlZV9pZCA9IEdsb2JhbFN0YXRlKAogICAgLy8gICAgIHR5cC5CeXRlczMyLmZyb21fYnl0ZXMoYiIwIiAqIDMyKSwKICAgIC8vICAgICBrZXk9cmVnX2NmZy5HU19LRVlfQ09NTUlUVEVFX0lELAogICAgLy8gKQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MTIwCiAgICAvLyBrZXk9cmVnX2NmZy5HU19LRVlfQ09NTUlUVEVFX01FTUJFUlMsCiAgICBieXRlYyA5IC8vIDB4NjM2ZjZkNmQ2OTc0NzQ2NTY1NWY2ZDY1NmQ2MjY1NzI3MwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToxMTkKICAgIC8vIFVJbnQ2NCgpLAogICAgaW50Y18xIC8vIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MTE4LTEyMQogICAgLy8gc2VsZi5jb21taXR0ZWVfbWVtYmVycyA9IEdsb2JhbFN0YXRlKAogICAgLy8gICAgIFVJbnQ2NCgpLAogICAgLy8gICAgIGtleT1yZWdfY2ZnLkdTX0tFWV9DT01NSVRURUVfTUVNQkVSUywKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjEyNAogICAgLy8ga2V5PXJlZ19jZmcuR1NfS0VZX0NPTU1JVFRFRV9WT1RFUywKICAgIGJ5dGVjIDEwIC8vIDB4NjM2ZjZkNmQ2OTc0NzQ2NTY1NWY3NjZmNzQ2NTczCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjEyMwogICAgLy8gVUludDY0KCksCiAgICBpbnRjXzEgLy8gMAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToxMjItMTI1CiAgICAvLyBzZWxmLmNvbW1pdHRlZV92b3RlcyA9IEdsb2JhbFN0YXRlKAogICAgLy8gICAgIFVJbnQ2NCgpLAogICAgLy8gICAgIGtleT1yZWdfY2ZnLkdTX0tFWV9DT01NSVRURUVfVk9URVMsCiAgICAvLyApCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToxMzAKICAgIC8vIGtleT1yZWdfY2ZnLkdTX0tFWV9RVU9SVU1fU01BTEwsCiAgICBieXRlYyAyNSAvLyAweDcxNzU2ZjcyNzU2ZDVmNzM2ZDYxNmM2YwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToxMjkKICAgIC8vIFVJbnQ2NChyZWdfY2ZnLlFVT1JVTV9TTUFMTCksCiAgICBwdXNoaW50IDMwMDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MTI3LTEzMQogICAgLy8gIyBRdW9ydW1zCiAgICAvLyBzZWxmLnF1b3J1bV9zbWFsbCA9IEdsb2JhbFN0YXRlKAogICAgLy8gICAgIFVJbnQ2NChyZWdfY2ZnLlFVT1JVTV9TTUFMTCksCiAgICAvLyAgICAga2V5PXJlZ19jZmcuR1NfS0VZX1FVT1JVTV9TTUFMTCwKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjEzNAogICAgLy8ga2V5PXJlZ19jZmcuR1NfS0VZX1FVT1JVTV9NRURJVU0sCiAgICBieXRlYyAyNiAvLyAweDcxNzU2ZjcyNzU2ZDVmNmQ2NTY0Njk3NTZkCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjEzMwogICAgLy8gVUludDY0KHJlZ19jZmcuUVVPUlVNX01FRElVTSksCiAgICBpbnRjXzEgLy8gMAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToxMzItMTM1CiAgICAvLyBzZWxmLnF1b3J1bV9tZWRpdW0gPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBVSW50NjQocmVnX2NmZy5RVU9SVU1fTUVESVVNKSwKICAgIC8vICAgICBrZXk9cmVnX2NmZy5HU19LRVlfUVVPUlVNX01FRElVTSwKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjEzOAogICAgLy8ga2V5PXJlZ19jZmcuR1NfS0VZX1FVT1JVTV9MQVJHRSwKICAgIGJ5dGVjIDI3IC8vIDB4NzE3NTZmNzI3NTZkNWY2YzYxNzI2NzY1CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjEzNwogICAgLy8gVUludDY0KHJlZ19jZmcuUVVPUlVNX0xBUkdFKSwKICAgIHB1c2hpbnQgNzAwMAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToxMzYtMTM5CiAgICAvLyBzZWxmLnF1b3J1bV9sYXJnZSA9IEdsb2JhbFN0YXRlKAogICAgLy8gICAgIFVJbnQ2NChyZWdfY2ZnLlFVT1JVTV9MQVJHRSksCiAgICAvLyAgICAga2V5PXJlZ19jZmcuR1NfS0VZX1FVT1JVTV9MQVJHRSwKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjE0NAogICAgLy8ga2V5PXJlZ19jZmcuR1NfS0VZX1dFSUdIVEVEX1FVT1JVTV9TTUFMTCwKICAgIGJ5dGVjIDI4IC8vIDB4Nzc2NTY5Njc2ODc0NjU2NDVmNzE3NTZmNzI3NTZkNWY3MzZkNjE2YzZjCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjE0MwogICAgLy8gVUludDY0KHJlZ19jZmcuV0VJR0hURURfUVVPUlVNX1NNQUxMKSwKICAgIHB1c2hpbnQgNTAwMAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToxNDEtMTQ1CiAgICAvLyAjIFdlaWdodGVkIFF1b3J1bXMKICAgIC8vIHNlbGYud2VpZ2h0ZWRfcXVvcnVtX3NtYWxsID0gR2xvYmFsU3RhdGUoCiAgICAvLyAgICAgVUludDY0KHJlZ19jZmcuV0VJR0hURURfUVVPUlVNX1NNQUxMKSwKICAgIC8vICAgICBrZXk9cmVnX2NmZy5HU19LRVlfV0VJR0hURURfUVVPUlVNX1NNQUxMLAogICAgLy8gKQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MTQ4CiAgICAvLyBrZXk9cmVnX2NmZy5HU19LRVlfV0VJR0hURURfUVVPUlVNX01FRElVTSwKICAgIGJ5dGVjIDI5IC8vIDB4Nzc2NTY5Njc2ODc0NjU2NDVmNzE3NTZmNzI3NTZkNWY2ZDY1NjQ2OTc1NmQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MTQ3CiAgICAvLyBVSW50NjQocmVnX2NmZy5XRUlHSFRFRF9RVU9SVU1fTUVESVVNKSwKICAgIGludGNfMSAvLyAwCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjE0Ni0xNDkKICAgIC8vIHNlbGYud2VpZ2h0ZWRfcXVvcnVtX21lZGl1bSA9IEdsb2JhbFN0YXRlKAogICAgLy8gICAgIFVJbnQ2NChyZWdfY2ZnLldFSUdIVEVEX1FVT1JVTV9NRURJVU0pLAogICAgLy8gICAgIGtleT1yZWdfY2ZnLkdTX0tFWV9XRUlHSFRFRF9RVU9SVU1fTUVESVVNLAogICAgLy8gKQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MTUyCiAgICAvLyBrZXk9cmVnX2NmZy5HU19LRVlfV0VJR0hURURfUVVPUlVNX0xBUkdFLAogICAgYnl0ZWMgMzAgLy8gMHg3NzY1Njk2NzY4NzQ2NTY0NWY3MTc1NmY3Mjc1NmQ1ZjZjNjE3MjY3NjUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MTUxCiAgICAvLyBVSW50NjQocmVnX2NmZy5XRUlHSFRFRF9RVU9SVU1fTEFSR0UpLAogICAgcHVzaGludCA3MDAwCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjE1MC0xNTMKICAgIC8vIHNlbGYud2VpZ2h0ZWRfcXVvcnVtX2xhcmdlID0gR2xvYmFsU3RhdGUoCiAgICAvLyAgICAgVUludDY0KHJlZ19jZmcuV0VJR0hURURfUVVPUlVNX0xBUkdFKSwKICAgIC8vICAgICBrZXk9cmVnX2NmZy5HU19LRVlfV0VJR0hURURfUVVPUlVNX0xBUkdFLAogICAgLy8gKQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MTU3CiAgICAvLyBVSW50NjQocmVnX2NmZy5BQlNFTkNFX1RPTEVSQU5DRSksIGtleT1yZWdfY2ZnLkdTX0tFWV9BQlNFTkNFX1RPTEVSQU5DRQogICAgYnl0ZWMgMzEgLy8gMHg2MTYyNzM2NTZlNjM2NTVmNzQ2ZjZjNjU3MjYxNmU2MzY1CiAgICBwdXNoaW50IDUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MTU1LTE1OAogICAgLy8gIyBOZXcgVmFyaWFibGVzIChpbnRyb2R1Y2VkIGFmdGVyIE1haW5OZXQgZGVwbG95bWVudCkKICAgIC8vIHNlbGYuYWJzZW5jZV90b2xlcmFuY2UgPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBVSW50NjQocmVnX2NmZy5BQlNFTkNFX1RPTEVSQU5DRSksIGtleT1yZWdfY2ZnLkdTX0tFWV9BQlNFTkNFX1RPTEVSQU5DRQogICAgLy8gKQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MTYwCiAgICAvLyBVSW50NjQocmVnX2NmZy5HT1ZFUk5BTkNFX1BFUklPRCksIGtleT1yZWdfY2ZnLkdTX0tFWV9HT1ZFUk5BTkNFX1BFUklPRAogICAgYnl0ZWMgMzIgLy8gMHg2NzZmNzY2NTcyNmU2MTZlNjM2NTVmNzA2NTcyNjk2ZjY0CiAgICBwdXNoaW50IDEwMDAwMDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MTU5LTE2MQogICAgLy8gc2VsZi5nb3Zlcm5hbmNlX3BlcmlvZCA9IEdsb2JhbFN0YXRlKAogICAgLy8gICAgIFVJbnQ2NChyZWdfY2ZnLkdPVkVSTkFOQ0VfUEVSSU9EKSwga2V5PXJlZ19jZmcuR1NfS0VZX0dPVkVSTkFOQ0VfUEVSSU9ECiAgICAvLyApCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToxNjQKICAgIC8vIGtleT1yZWdfY2ZnLkdTX0tFWV9DT01NSVRURUVfR1JBQ0VfUEVSSU9ELAogICAgYnl0ZWMgMzMgLy8gMHg2MzZmNmQ2ZDY5NzQ3NDY1NjU1ZjY3NzI2MTYzNjU1ZjcwNjU3MjY5NmY2NAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToxNjMKICAgIC8vIFVJbnQ2NChyZWdfY2ZnLkNPTU1JVFRFRV9HUkFDRV9QRVJJT0QpLAogICAgcHVzaGludCAxMDAwMAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToxNjItMTY1CiAgICAvLyBzZWxmLmNvbW1pdHRlZV9ncmFjZV9wZXJpb2QgPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBVSW50NjQocmVnX2NmZy5DT01NSVRURUVfR1JBQ0VfUEVSSU9EKSwKICAgIC8vICAgICBrZXk9cmVnX2NmZy5HU19LRVlfQ09NTUlUVEVFX0dSQUNFX1BFUklPRCwKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjE2NwogICAgLy8gVUludDY0KCksIGtleT1yZWdfY2ZnLkdTX0tFWV9DT01NSVRURUVfTEFTVF9BTkNIT1IKICAgIGJ5dGVjIDM0IC8vIDB4NjM2ZjZkNmQ2OTc0NzQ2NTY1NWY2YzYxNzM3NDVmNjE2ZTYzNjg2ZjcyCiAgICBpbnRjXzEgLy8gMAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToxNjYtMTY4CiAgICAvLyBzZWxmLmNvbW1pdHRlZV9sYXN0X2FuY2hvciA9IEdsb2JhbFN0YXRlKAogICAgLy8gICAgIFVJbnQ2NCgpLCBrZXk9cmVnX2NmZy5HU19LRVlfQ09NTUlUVEVFX0xBU1RfQU5DSE9SCiAgICAvLyApCiAgICBhcHBfZ2xvYmFsX3B1dAoKbWFpbl9hZnRlcl9pZl9lbHNlQDI6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjI0CiAgICAvLyBjbGFzcyBYZ292UmVnaXN0cnlNb2NrKFhHb3ZSZWdpc3RyeUludGVyZmFjZSk6CiAgICBwdXNoYnl0ZXMgMHg0OTU2YzFhYiAvLyBtZXRob2QgInVwZGF0ZV94Z292X3JlZ2lzdHJ5KCl2b2lkIgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgbWF0Y2ggbWFpbl91cGRhdGVfeGdvdl9yZWdpc3RyeV9yb3V0ZUA0CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBieiBtYWluX2NyZWF0ZV9Ob09wQDU0CiAgICBwdXNoYnl0ZXNzIDB4OTU5YzQ3NjIgMHg2YzFmNTY0ZCAweGUxMGE1MTJlIDB4ODZmN2UwZTYgMHgzOWUyNmQ4YSAweDk4MzUyZTg2IDB4ZmE0ZWQ2ZTIgMHhkNmM5Y2MxYSAweDVjNDg0MDU1IDB4MzdkNmFkZjEgMHhkNDIxNmI2ZSAweGJhODUyMGYyIDB4MTY3N2IzMGUgMHg4NGI3ZDI2OCAweGFmN2YxODYwIDB4YTA4MmNlZjggMHhkZjM5ZmRiOSAweGNhMGY2YTNhIDB4M2MzMWJjMDIgMHgwZDJjNzg5MSAweDQ1MDc3MzkwIDB4OTNmYWNkYmEgMHhjZThiM2ExYyAweGZhZWEwODFmIDB4MGRhMjc4ODUgMHg3YTRmZWU0MyAweDUyZGQxMGQ3IDB4ZDRkMzdhNjQgMHgzNDM0OWRjYyAweDE1OGY4ZGQ2IDB4NWZlMjU5MzUgMHhkYjI3YjlhZiAweGY1OTEwNzU2IDB4NjU2MTBhOWYgMHhmZGM2OTVjMiAweGJhOTBhYjU0IDB4MWE2NzRiNDUgMHhhOGQ1YWU5NCAweDZhZTVlYjQ2IDB4Mjc2MzBkNjUgMHg4MjRmOThiYyAweDQ5NTQ4YmEwIDB4ODI2Nzg0ZjYgMHgyNjk4MzIwMCAweGMzODZiMDNmIDB4ZGJkODNkZDkgLy8gbWV0aG9kICJpbml0X3Byb3Bvc2FsX2NvbnRyYWN0KHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJsb2FkX3Byb3Bvc2FsX2NvbnRyYWN0KHVpbnQ2NCxieXRlW10pdm9pZCIsIG1ldGhvZCAiZGVsZXRlX3Byb3Bvc2FsX2NvbnRyYWN0X2JveCgpdm9pZCIsIG1ldGhvZCAicGF1c2VfcmVnaXN0cnkoKXZvaWQiLCBtZXRob2QgInBhdXNlX3Byb3Bvc2Fscygpdm9pZCIsIG1ldGhvZCAicmVzdW1lX3JlZ2lzdHJ5KCl2b2lkIiwgbWV0aG9kICJyZXN1bWVfcHJvcG9zYWxzKCl2b2lkIiwgbWV0aG9kICJzZXRfeGdvdl9tYW5hZ2VyKGFkZHJlc3Mpdm9pZCIsIG1ldGhvZCAic2V0X3BheW9yKGFkZHJlc3Mpdm9pZCIsIG1ldGhvZCAic2V0X3hnb3ZfY291bmNpbChhZGRyZXNzKXZvaWQiLCBtZXRob2QgInNldF94Z292X3N1YnNjcmliZXIoYWRkcmVzcyl2b2lkIiwgbWV0aG9kICJzZXRfa3ljX3Byb3ZpZGVyKGFkZHJlc3Mpdm9pZCIsIG1ldGhvZCAic2V0X2NvbW1pdHRlZV9tYW5hZ2VyKGFkZHJlc3Mpdm9pZCIsIG1ldGhvZCAic2V0X3hnb3ZfZGFlbW9uKGFkZHJlc3Mpdm9pZCIsIG1ldGhvZCAiY29uZmlnX3hnb3ZfcmVnaXN0cnkoKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NFszXSx1aW50NjRbNF0sdWludDY0WzRdLHVpbnQ2NFszXSx1aW50NjRbM10sdWludDY0LHVpbnQ2NCx1aW50NjQpKXZvaWQiLCBtZXRob2QgInN1YnNjcmliZV94Z292KGFkZHJlc3MscGF5KXZvaWQiLCBtZXRob2QgInVuc3Vic2NyaWJlX3hnb3YoKXZvaWQiLCBtZXRob2QgInVuc3Vic2NyaWJlX2Fic2VudGVlKGFkZHJlc3Mpdm9pZCIsIG1ldGhvZCAiYXBwcm92ZV9zdWJzY3JpYmVfeGdvdih1aW50NjQpdm9pZCIsIG1ldGhvZCAicmVqZWN0X3N1YnNjcmliZV94Z292KHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJyZXF1ZXN0X3N1YnNjcmliZV94Z292KGFkZHJlc3MsYWRkcmVzcyx1aW50NjQscGF5KXZvaWQiLCBtZXRob2QgInJlcXVlc3RfdW5zdWJzY3JpYmVfeGdvdihhZGRyZXNzLGFkZHJlc3MsdWludDY0LHBheSl2b2lkIiwgbWV0aG9kICJhcHByb3ZlX3Vuc3Vic2NyaWJlX3hnb3YodWludDY0KXZvaWQiLCBtZXRob2QgInJlamVjdF91bnN1YnNjcmliZV94Z292KHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJzZXRfdm90aW5nX2FjY291bnQoYWRkcmVzcyxhZGRyZXNzKXZvaWQiLCBtZXRob2QgInN1YnNjcmliZV9wcm9wb3NlcihwYXkpdm9pZCIsIG1ldGhvZCAic2V0X3Byb3Bvc2VyX2t5YyhhZGRyZXNzLGJvb2wsdWludDY0KXZvaWQiLCBtZXRob2QgImRlY2xhcmVfY29tbWl0dGVlKGJ5dGVbMzJdLHVpbnQ2NCx1aW50NjQpdm9pZCIsIG1ldGhvZCAib3Blbl9wcm9wb3NhbChwYXkpdWludDY0IiwgbWV0aG9kICJ2b3RlX3Byb3Bvc2FsKHVpbnQ2NCxhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIsIG1ldGhvZCAidW5hc3NpZ25fYWJzZW50ZWVfZnJvbV9wcm9wb3NhbCh1aW50NjQsYWRkcmVzc1tdKXZvaWQiLCBtZXRob2QgInBheV9ncmFudF9wcm9wb3NhbCh1aW50NjQpdm9pZCIsIG1ldGhvZCAiZmluYWxpemVfcHJvcG9zYWwodWludDY0KXZvaWQiLCBtZXRob2QgImRyb3BfcHJvcG9zYWwodWludDY0KXZvaWQiLCBtZXRob2QgImRlcG9zaXRfZnVuZHMocGF5KXZvaWQiLCBtZXRob2QgIndpdGhkcmF3X2Z1bmRzKHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJ3aXRoZHJhd19hdmFpbGFibGVfZnVuZHModWludDY0KXZvaWQiLCBtZXRob2QgImdldF9hdmFpbGFibGVfZnVuZHMoKXVpbnQ2NCIsIG1ldGhvZCAiZ2V0X3N0YXRlKCkoYm9vbCxib29sLGFkZHJlc3MsYWRkcmVzcyxhZGRyZXNzLGFkZHJlc3MsYWRkcmVzcyxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0WzNdLHVpbnQ2NFs0XSx1aW50NjRbNF0sdWludDY0WzNdLHVpbnQ2NFszXSx1aW50NjQsdWludDY0LGJ5dGVbMzJdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIsIG1ldGhvZCAiZ2V0X3hnb3ZfYm94KGFkZHJlc3MpKChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sKSIsIG1ldGhvZCAiZ2V0X3Byb3Bvc2VyX2JveChhZGRyZXNzKSgoYm9vbCxib29sLHVpbnQ2NCksYm9vbCkiLCBtZXRob2QgImdldF9yZXF1ZXN0X2JveCh1aW50NjQpKChhZGRyZXNzLGFkZHJlc3MsdWludDY0KSxib29sKSIsIG1ldGhvZCAiZ2V0X3JlcXVlc3RfdW5zdWJzY3JpYmVfYm94KHVpbnQ2NCkoKGFkZHJlc3MsYWRkcmVzcyx1aW50NjQpLGJvb2wpIiwgbWV0aG9kICJpc19wcm9wb3NhbCh1aW50NjQpdm9pZCIsIG1ldGhvZCAiY3JlYXRlX2VtcHR5X3Byb3Bvc2FsKGFkZHJlc3MpdWludDY0IiwgbWV0aG9kICJvcF91cCgpdm9pZCIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIGluaXRfcHJvcG9zYWxfY29udHJhY3QgbG9hZF9wcm9wb3NhbF9jb250cmFjdCBtYWluX2RlbGV0ZV9wcm9wb3NhbF9jb250cmFjdF9ib3hfcm91dGVAOSBtYWluX3BhdXNlX3JlZ2lzdHJ5X3JvdXRlQDEwIG1haW5fcGF1c2VfcHJvcG9zYWxzX3JvdXRlQDExIG1haW5fcmVzdW1lX3JlZ2lzdHJ5X3JvdXRlQDEyIG1haW5fcmVzdW1lX3Byb3Bvc2Fsc19yb3V0ZUAxMyBzZXRfeGdvdl9tYW5hZ2VyIHNldF9wYXlvciBzZXRfeGdvdl9jb3VuY2lsIHNldF94Z292X3N1YnNjcmliZXIgc2V0X2t5Y19wcm92aWRlciBzZXRfY29tbWl0dGVlX21hbmFnZXIgc2V0X3hnb3ZfZGFlbW9uIGNvbmZpZ194Z292X3JlZ2lzdHJ5IHN1YnNjcmliZV94Z292IG1haW5fdW5zdWJzY3JpYmVfeGdvdl9yb3V0ZUAyMyB1bnN1YnNjcmliZV9hYnNlbnRlZSBhcHByb3ZlX3N1YnNjcmliZV94Z292IHJlamVjdF9zdWJzY3JpYmVfeGdvdiByZXF1ZXN0X3N1YnNjcmliZV94Z292IHJlcXVlc3RfdW5zdWJzY3JpYmVfeGdvdiBhcHByb3ZlX3Vuc3Vic2NyaWJlX3hnb3YgcmVqZWN0X3Vuc3Vic2NyaWJlX3hnb3Ygc2V0X3ZvdGluZ19hY2NvdW50IHN1YnNjcmliZV9wcm9wb3NlciBzZXRfcHJvcG9zZXJfa3ljIGRlY2xhcmVfY29tbWl0dGVlIG9wZW5fcHJvcG9zYWwgdm90ZV9wcm9wb3NhbCB1bmFzc2lnbl9hYnNlbnRlZV9mcm9tX3Byb3Bvc2FsIHBheV9ncmFudF9wcm9wb3NhbCBmaW5hbGl6ZV9wcm9wb3NhbCBkcm9wX3Byb3Bvc2FsIGRlcG9zaXRfZnVuZHMgd2l0aGRyYXdfZnVuZHMgd2l0aGRyYXdfYXZhaWxhYmxlX2Z1bmRzIG1haW5fZ2V0X2F2YWlsYWJsZV9mdW5kc19yb3V0ZUA0NCBnZXRfc3RhdGUgZ2V0X3hnb3ZfYm94IGdldF9wcm9wb3Nlcl9ib3ggZ2V0X3JlcXVlc3RfYm94IGdldF9yZXF1ZXN0X3Vuc3Vic2NyaWJlX2JveCBpc19wcm9wb3NhbCBjcmVhdGVfZW1wdHlfcHJvcG9zYWwgbWFpbl9vcF91cF9yb3V0ZUA1MgogICAgZXJyCgptYWluX29wX3VwX3JvdXRlQDUyOgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo1ODUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX2dldF9hdmFpbGFibGVfZnVuZHNfcm91dGVANDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjQzNQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICBieXRlYyAzNSAvLyAweDE1MWY3Yzc1MDAwMDAwMDAwMDAwMDAwMAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX3Vuc3Vic2NyaWJlX3hnb3Zfcm91dGVAMjM6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjI0NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fcmVzdW1lX3Byb3Bvc2Fsc19yb3V0ZUAxMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MjAwCiAgICAvLyBzZWxmLnBhdXNlZF9wcm9wb3NhbHMudmFsdWUgPSBGYWxzZQogICAgYnl0ZWMgNCAvLyAweDcwNjE3NTczNjU2NDVmNzA3MjZmNzA2ZjczNjE2YzczCiAgICBpbnRjXzEgLy8gMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MTk4CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl9yZXN1bWVfcmVnaXN0cnlfcm91dGVAMTI6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjE5NgogICAgLy8gc2VsZi5wYXVzZWRfcmVnaXN0cnkudmFsdWUgPSBGYWxzZQogICAgYnl0ZWNfMyAvLyAweDcwNjE3NTczNjU2NDVmNzI2NTY3Njk3Mzc0NzI3OQogICAgaW50Y18xIC8vIDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjE5NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fcGF1c2VfcHJvcG9zYWxzX3JvdXRlQDExOgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToxOTIKICAgIC8vIHNlbGYucGF1c2VkX3Byb3Bvc2Fscy52YWx1ZSA9IFRydWUKICAgIGJ5dGVjIDQgLy8gMHg3MDYxNzU3MzY1NjQ1ZjcwNzI2ZjcwNmY3MzYxNmM3MwogICAgaW50Y18wIC8vIDEKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjE5MAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fcGF1c2VfcmVnaXN0cnlfcm91dGVAMTA6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjE4OAogICAgLy8gc2VsZi5wYXVzZWRfcmVnaXN0cnkudmFsdWUgPSBUcnVlCiAgICBieXRlY18zIC8vIDB4NzA2MTc1NzM2NTY0NWY3MjY1Njc2OTczNzQ3Mjc5CiAgICBpbnRjXzAgLy8gMQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MTg2CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl9kZWxldGVfcHJvcG9zYWxfY29udHJhY3RfYm94X3JvdXRlQDk6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjE4MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fY3JlYXRlX05vT3BANTQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjI0CiAgICAvLyBjbGFzcyBYZ292UmVnaXN0cnlNb2NrKFhHb3ZSZWdpc3RyeUludGVyZmFjZSk6CiAgICBwdXNoYnl0ZXMgMHg0YzVjNjFiYSAvLyBtZXRob2QgImNyZWF0ZSgpdm9pZCIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIG1haW5fY3JlYXRlX3JvdXRlQDU1CiAgICBlcnIKCm1haW5fY3JlYXRlX3JvdXRlQDU1OgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToxNzAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChjcmVhdGU9InJlcXVpcmUiKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl91cGRhdGVfeGdvdl9yZWdpc3RyeV9yb3V0ZUA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToyMzQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChhbGxvd19hY3Rpb25zPVsiVXBkYXRlQXBwbGljYXRpb24iXSkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgIHB1c2hpbnQgNCAvLyBVcGRhdGVBcHBsaWNhdGlvbgogICAgPT0KICAgIHR4biBBcHBsaWNhdGlvbklECiAgICAmJgogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnhnb3ZfcmVnaXN0cnlfbW9jay5jb250cmFjdC5YZ292UmVnaXN0cnlNb2NrLmluaXRfcHJvcG9zYWxfY29udHJhY3Rbcm91dGluZ10oKSAtPiB2b2lkOgppbml0X3Byb3Bvc2FsX2NvbnRyYWN0OgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToxNzQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy54Z292X3JlZ2lzdHJ5X21vY2suY29udHJhY3QuWGdvdlJlZ2lzdHJ5TW9jay5sb2FkX3Byb3Bvc2FsX2NvbnRyYWN0W3JvdXRpbmddKCkgLT4gdm9pZDoKbG9hZF9wcm9wb3NhbF9jb250cmFjdDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MTc4CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIHB1c2hpbnQgMgogICAgKwogICAgc3dhcAogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMueGdvdl9yZWdpc3RyeV9tb2NrLmNvbnRyYWN0Llhnb3ZSZWdpc3RyeU1vY2suc2V0X3hnb3ZfbWFuYWdlcltyb3V0aW5nXSgpIC0+IHZvaWQ6CnNldF94Z292X21hbmFnZXI6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjIwMgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGxlbgogICAgaW50Y18zIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMueGdvdl9yZWdpc3RyeV9tb2NrLmNvbnRyYWN0Llhnb3ZSZWdpc3RyeU1vY2suc2V0X3BheW9yW3JvdXRpbmddKCkgLT4gdm9pZDoKc2V0X3BheW9yOgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToyMDYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBsZW4KICAgIGludGNfMyAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnhnb3ZfcmVnaXN0cnlfbW9jay5jb250cmFjdC5YZ292UmVnaXN0cnlNb2NrLnNldF94Z292X2NvdW5jaWxbcm91dGluZ10oKSAtPiB2b2lkOgpzZXRfeGdvdl9jb3VuY2lsOgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToyMTAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18zIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MjEyCiAgICAvLyBzZWxmLnhnb3ZfY291bmNpbC52YWx1ZSA9IGNvdW5jaWwKICAgIGJ5dGVjIDUgLy8gMHg3ODY3NmY3NjVmNjM2Zjc1NmU2MzY5NmMKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjIxMAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMueGdvdl9yZWdpc3RyeV9tb2NrLmNvbnRyYWN0Llhnb3ZSZWdpc3RyeU1vY2suc2V0X3hnb3Zfc3Vic2NyaWJlcltyb3V0aW5nXSgpIC0+IHZvaWQ6CnNldF94Z292X3N1YnNjcmliZXI6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjIxNAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGxlbgogICAgaW50Y18zIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMueGdvdl9yZWdpc3RyeV9tb2NrLmNvbnRyYWN0Llhnb3ZSZWdpc3RyeU1vY2suc2V0X2t5Y19wcm92aWRlcltyb3V0aW5nXSgpIC0+IHZvaWQ6CnNldF9reWNfcHJvdmlkZXI6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjIxOAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGxlbgogICAgaW50Y18zIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMueGdvdl9yZWdpc3RyeV9tb2NrLmNvbnRyYWN0Llhnb3ZSZWdpc3RyeU1vY2suc2V0X2NvbW1pdHRlZV9tYW5hZ2VyW3JvdXRpbmddKCkgLT4gdm9pZDoKc2V0X2NvbW1pdHRlZV9tYW5hZ2VyOgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToyMjIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBsZW4KICAgIGludGNfMyAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnhnb3ZfcmVnaXN0cnlfbW9jay5jb250cmFjdC5YZ292UmVnaXN0cnlNb2NrLnNldF94Z292X2RhZW1vbltyb3V0aW5nXSgpIC0+IHZvaWQ6CnNldF94Z292X2RhZW1vbjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MjI2CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMyAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjIyOAogICAgLy8gc2VsZi54Z292X2RhZW1vbi52YWx1ZSA9IHhnb3ZfZGFlbW9uCiAgICBieXRlYyA2IC8vIDB4Nzg2NzZmNzY1ZjY0NjE2NTZkNmY2ZQogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MjI2CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy54Z292X3JlZ2lzdHJ5X21vY2suY29udHJhY3QuWGdvdlJlZ2lzdHJ5TW9jay5jb25maWdfeGdvdl9yZWdpc3RyeVtyb3V0aW5nXSgpIC0+IHZvaWQ6CmNvbmZpZ194Z292X3JlZ2lzdHJ5OgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToyMzAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBsZW4KICAgIHB1c2hpbnQgMjA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBzbWFydF9jb250cmFjdHMuY29tbW9uLmFiaV90eXBlcy5YR292UmVnaXN0cnlDb25maWcKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMueGdvdl9yZWdpc3RyeV9tb2NrLmNvbnRyYWN0Llhnb3ZSZWdpc3RyeU1vY2suc3Vic2NyaWJlX3hnb3Zbcm91dGluZ10oKSAtPiB2b2lkOgpzdWJzY3JpYmVfeGdvdjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MjM4CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgbGVuCiAgICBpbnRjXzMgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PGFyYzQudWludDgsIDMyPgogICAgdHhuIEdyb3VwSW5kZXgKICAgIGludGNfMCAvLyAxCiAgICAtCiAgICBndHhucyBUeXBlRW51bQogICAgaW50Y18wIC8vIHBheQogICAgPT0KICAgIGFzc2VydCAvLyB0cmFuc2FjdGlvbiB0eXBlIGlzIHBheQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy54Z292X3JlZ2lzdHJ5X21vY2suY29udHJhY3QuWGdvdlJlZ2lzdHJ5TW9jay51bnN1YnNjcmliZV9hYnNlbnRlZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CnVuc3Vic2NyaWJlX2Fic2VudGVlOgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToyNDgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBsZW4KICAgIGludGNfMyAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnhnb3ZfcmVnaXN0cnlfbW9jay5jb250cmFjdC5YZ292UmVnaXN0cnlNb2NrLmFwcHJvdmVfc3Vic2NyaWJlX3hnb3Zbcm91dGluZ10oKSAtPiB2b2lkOgphcHByb3ZlX3N1YnNjcmliZV94Z292OgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToyNTIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy54Z292X3JlZ2lzdHJ5X21vY2suY29udHJhY3QuWGdvdlJlZ2lzdHJ5TW9jay5yZWplY3Rfc3Vic2NyaWJlX3hnb3Zbcm91dGluZ10oKSAtPiB2b2lkOgpyZWplY3Rfc3Vic2NyaWJlX3hnb3Y6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjI1NgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGxlbgogICAgaW50Y18yIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnhnb3ZfcmVnaXN0cnlfbW9jay5jb250cmFjdC5YZ292UmVnaXN0cnlNb2NrLnJlcXVlc3Rfc3Vic2NyaWJlX3hnb3Zbcm91dGluZ10oKSAtPiB2b2lkOgpyZXF1ZXN0X3N1YnNjcmliZV94Z292OgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToyNjAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBsZW4KICAgIGludGNfMyAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBsZW4KICAgIGludGNfMyAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgdHhuIEdyb3VwSW5kZXgKICAgIGludGNfMCAvLyAxCiAgICAtCiAgICBndHhucyBUeXBlRW51bQogICAgaW50Y18wIC8vIHBheQogICAgPT0KICAgIGFzc2VydCAvLyB0cmFuc2FjdGlvbiB0eXBlIGlzIHBheQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy54Z292X3JlZ2lzdHJ5X21vY2suY29udHJhY3QuWGdvdlJlZ2lzdHJ5TW9jay5yZXF1ZXN0X3Vuc3Vic2NyaWJlX3hnb3Zbcm91dGluZ10oKSAtPiB2b2lkOgpyZXF1ZXN0X3Vuc3Vic2NyaWJlX3hnb3Y6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjI3MQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGxlbgogICAgaW50Y18zIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGxlbgogICAgaW50Y18zIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDMKICAgIGxlbgogICAgaW50Y18yIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICB0eG4gR3JvdXBJbmRleAogICAgaW50Y18wIC8vIDEKICAgIC0KICAgIGd0eG5zIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gcGF5CiAgICA9PQogICAgYXNzZXJ0IC8vIHRyYW5zYWN0aW9uIHR5cGUgaXMgcGF5CiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnhnb3ZfcmVnaXN0cnlfbW9jay5jb250cmFjdC5YZ292UmVnaXN0cnlNb2NrLmFwcHJvdmVfdW5zdWJzY3JpYmVfeGdvdltyb3V0aW5nXSgpIC0+IHZvaWQ6CmFwcHJvdmVfdW5zdWJzY3JpYmVfeGdvdjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MjgyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMueGdvdl9yZWdpc3RyeV9tb2NrLmNvbnRyYWN0Llhnb3ZSZWdpc3RyeU1vY2sucmVqZWN0X3Vuc3Vic2NyaWJlX3hnb3Zbcm91dGluZ10oKSAtPiB2b2lkOgpyZWplY3RfdW5zdWJzY3JpYmVfeGdvdjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6Mjg2CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMueGdvdl9yZWdpc3RyeV9tb2NrLmNvbnRyYWN0Llhnb3ZSZWdpc3RyeU1vY2suc2V0X3ZvdGluZ19hY2NvdW50W3JvdXRpbmddKCkgLT4gdm9pZDoKc2V0X3ZvdGluZ19hY2NvdW50OgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weToyOTAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBsZW4KICAgIGludGNfMyAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBsZW4KICAgIGludGNfMyAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnhnb3ZfcmVnaXN0cnlfbW9jay5jb250cmFjdC5YZ292UmVnaXN0cnlNb2NrLnN1YnNjcmliZV9wcm9wb3Nlcltyb3V0aW5nXSgpIC0+IHZvaWQ6CnN1YnNjcmliZV9wcm9wb3NlcjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6Mjk2CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIEdyb3VwSW5kZXgKICAgIGludGNfMCAvLyAxCiAgICAtCiAgICBndHhucyBUeXBlRW51bQogICAgaW50Y18wIC8vIHBheQogICAgPT0KICAgIGFzc2VydCAvLyB0cmFuc2FjdGlvbiB0eXBlIGlzIHBheQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy54Z292X3JlZ2lzdHJ5X21vY2suY29udHJhY3QuWGdvdlJlZ2lzdHJ5TW9jay5zZXRfcHJvcG9zZXJfa3ljW3JvdXRpbmddKCkgLT4gdm9pZDoKc2V0X3Byb3Bvc2VyX2t5YzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzAwCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgbGVuCiAgICBpbnRjXzMgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PGFyYzQudWludDgsIDMyPgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgbGVuCiAgICBpbnRjXzAgLy8gMQogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5ib29sCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy54Z292X3JlZ2lzdHJ5X21vY2suY29udHJhY3QuWGdvdlJlZ2lzdHJ5TW9jay5kZWNsYXJlX2NvbW1pdHRlZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CmRlY2xhcmVfY29tbWl0dGVlOgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTozMTAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18zIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDMKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzE0CiAgICAvLyBzZWxmLmNvbW1pdHRlZV9pZC52YWx1ZSA9IGNvbW1pdHRlZV9pZC5jb3B5KCkKICAgIGJ5dGVjIDggLy8gMHg2MzZmNmQ2ZDY5NzQ3NDY1NjU1ZjY5NjQKICAgIHVuY292ZXIgMwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzE1CiAgICAvLyBzZWxmLmNvbW1pdHRlZV9tZW1iZXJzLnZhbHVlID0gc2l6ZQogICAgYnl0ZWMgOSAvLyAweDYzNmY2ZDZkNjk3NDc0NjU2NTVmNmQ2NTZkNjI2NTcyNzMKICAgIHVuY292ZXIgMgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzE2CiAgICAvLyBzZWxmLmNvbW1pdHRlZV92b3Rlcy52YWx1ZSA9IHZvdGVzCiAgICBieXRlYyAxMCAvLyAweDYzNmY2ZDZkNjk3NDc0NjU2NTVmNzY2Zjc0NjU3MwogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzEwCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy54Z292X3JlZ2lzdHJ5X21vY2suY29udHJhY3QuWGdvdlJlZ2lzdHJ5TW9jay5vcGVuX3Byb3Bvc2FsW3JvdXRpbmddKCkgLT4gdm9pZDoKb3Blbl9wcm9wb3NhbDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzE4CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIEdyb3VwSW5kZXgKICAgIGludGNfMCAvLyAxCiAgICAtCiAgICBndHhucyBUeXBlRW51bQogICAgaW50Y18wIC8vIHBheQogICAgPT0KICAgIGFzc2VydCAvLyB0cmFuc2FjdGlvbiB0eXBlIGlzIHBheQogICAgYnl0ZWMgMzUgLy8gMHgxNTFmN2M3NTAwMDAwMDAwMDAwMDAwMDAKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy54Z292X3JlZ2lzdHJ5X21vY2suY29udHJhY3QuWGdvdlJlZ2lzdHJ5TW9jay52b3RlX3Byb3Bvc2FsW3JvdXRpbmddKCkgLT4gdm9pZDoKdm90ZV9wcm9wb3NhbDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzIyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMyAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18yIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA0CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18yIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjMzMS0zMzcKICAgIC8vIGVycm9yLCBfdHggPSBhcmM0LmFiaV9jYWxsKAogICAgLy8gICAgIFByb3Bvc2FsLnZvdGUsCiAgICAvLyAgICAgeGdvdl9hZGRyZXNzLAogICAgLy8gICAgIGFwcHJvdmFsX3ZvdGVzLAogICAgLy8gICAgIHJlamVjdGlvbl92b3RlcywKICAgIC8vICAgICBhcHBfaWQ9cHJvcG9zYWxfaWQsCiAgICAvLyApCiAgICBpdHhuX2JlZ2luCiAgICB1bmNvdmVyIDMKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25JRAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTozMzIKICAgIC8vIFByb3Bvc2FsLnZvdGUsCiAgICBwdXNoYnl0ZXMgMHgxODQxYTBkMiAvLyBtZXRob2QgInZvdGUoYWRkcmVzcyx1aW50NjQsdWludDY0KXN0cmluZyIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICB1bmNvdmVyIDIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBzd2FwCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzMxLTMzNwogICAgLy8gZXJyb3IsIF90eCA9IGFyYzQuYWJpX2NhbGwoCiAgICAvLyAgICAgUHJvcG9zYWwudm90ZSwKICAgIC8vICAgICB4Z292X2FkZHJlc3MsCiAgICAvLyAgICAgYXBwcm92YWxfdm90ZXMsCiAgICAvLyAgICAgcmVqZWN0aW9uX3ZvdGVzLAogICAgLy8gICAgIGFwcF9pZD1wcm9wb3NhbF9pZCwKICAgIC8vICkKICAgIHB1c2hpbnQgNiAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzEgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIExhc3RMb2cKICAgIGR1cG4gMgogICAgZXh0cmFjdCAwIDQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgPT0KICAgIGFzc2VydCAvLyBhcHBsaWNhdGlvbiBsb2cgdmFsdWUgaXMgbm90IHRoZSByZXN1bHQgb2YgYW4gQUJJIHJldHVybgogICAgZHVwCiAgICBleHRyYWN0IDQgMAogICAgZHVwCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgcHVzaGludCAyCiAgICArCiAgICBzd2FwCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIHN0cmluZwogICAgZXh0cmFjdCA2IDAKICAgIGR1cAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTozMzkKICAgIC8vIGlmIGVycm9yLnN0YXJ0c3dpdGgoZXJyLkFSQ182NV9QUkVGSVgpOgogICAgbGVuCiAgICBkdXAKICAgIHB1c2hpbnQgNAogICAgPAogICAgYnogdm90ZV9wcm9wb3NhbF90ZXJuYXJ5X2ZhbHNlQDQKICAgIHVuY292ZXIgMgogICAgcG9wCiAgICBpbnRjXzEgLy8gMAoKdm90ZV9wcm9wb3NhbF90ZXJuYXJ5X21lcmdlQDU6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjMzOQogICAgLy8gaWYgZXJyb3Iuc3RhcnRzd2l0aChlcnIuQVJDXzY1X1BSRUZJWCk6CiAgICBieiB2b3RlX3Byb3Bvc2FsX2FmdGVyX2lmX2Vsc2VAMTUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzQwCiAgICAvLyBlcnJvcl93aXRob3V0X3ByZWZpeCA9IFN0cmluZy5mcm9tX2J5dGVzKGVycm9yLmJ5dGVzWzQ6XSkKICAgIHB1c2hpbnQgNAogICAgZGlnIDEKICAgID49CiAgICBwdXNoaW50IDQKICAgIGRpZyAyCiAgICB1bmNvdmVyIDIKICAgIHNlbGVjdAogICAgc3dhcAogICAgc3Vic3RyaW5nMwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTozNDIKICAgIC8vIGNhc2UgZXJyLlVOQVVUSE9SSVpFRDoKICAgIGJ5dGVjIDM2IC8vICJVbmF1dGhvcml6ZWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjM0NAogICAgLy8gY2FzZSBlcnIuVk9URVJfTk9UX0ZPVU5EOgogICAgYnl0ZWMgMzcgLy8gIlZvdGVyIG5vdCBmb3VuZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzQ2CiAgICAvLyBjYXNlIGVyci5WT1RFUl9BTFJFQURZX1ZPVEVEOgogICAgcHVzaGJ5dGVzcyAiVm90ZXIgYWxyZWFkeSB2b3RlZCIgIlZvdGVzIGludmFsaWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjM1MAogICAgLy8gY2FzZSBlcnIuTUlTU0lOR19DT05GSUc6CiAgICBieXRlYyAzOCAvLyAiTWlzc2luZyBDb25maWciCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjM1MgogICAgLy8gY2FzZSBlcnIuV1JPTkdfUFJPUE9TQUxfU1RBVFVTOgogICAgYnl0ZWNfMSAvLyAiV3JvbmcgUHJvcG9zYWwgU3RhdHVzIG9yIGZpbmFsaXplZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzU0CiAgICAvLyBjYXNlIGVyci5WT1RJTkdfUEVSSU9EX0VYUElSRUQ6CiAgICBwdXNoYnl0ZXMgIlZvdGluZyBQZXJpb2QgRXhwaXJlZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzQxLTM1NwogICAgLy8gbWF0Y2ggZXJyb3Jfd2l0aG91dF9wcmVmaXg6CiAgICAvLyAgICAgY2FzZSBlcnIuVU5BVVRIT1JJWkVEOgogICAgLy8gICAgICAgICBhc3NlcnQgRmFsc2UsIGVyci5VTkFVVEhPUklaRUQgICMgbm9xYQogICAgLy8gICAgIGNhc2UgZXJyLlZPVEVSX05PVF9GT1VORDoKICAgIC8vICAgICAgICAgYXNzZXJ0IEZhbHNlLCBlcnIuVk9URVJfTk9UX0ZPVU5EICAjIG5vcWEKICAgIC8vICAgICBjYXNlIGVyci5WT1RFUl9BTFJFQURZX1ZPVEVEOgogICAgLy8gICAgICAgICBhc3NlcnQgRmFsc2UsIGVyci5WT1RFUl9BTFJFQURZX1ZPVEVEICAjIG5vcWEKICAgIC8vICAgICBjYXNlIGVyci5WT1RFU19JTlZBTElEOgogICAgLy8gICAgICAgICBhc3NlcnQgRmFsc2UsIGVyci5WT1RFU19JTlZBTElEICAjIG5vcWEKICAgIC8vICAgICBjYXNlIGVyci5NSVNTSU5HX0NPTkZJRzoKICAgIC8vICAgICAgICAgYXNzZXJ0IEZhbHNlLCBlcnIuTUlTU0lOR19DT05GSUcgICMgbm9xYQogICAgLy8gICAgIGNhc2UgZXJyLldST05HX1BST1BPU0FMX1NUQVRVUzoKICAgIC8vICAgICAgICAgYXNzZXJ0IEZhbHNlLCBlcnIuV1JPTkdfUFJPUE9TQUxfU1RBVFVTICAjIG5vcWEKICAgIC8vICAgICBjYXNlIGVyci5WT1RJTkdfUEVSSU9EX0VYUElSRUQ6CiAgICAvLyAgICAgICAgIGFzc2VydCBGYWxzZSwgZXJyLlZPVElOR19QRVJJT0RfRVhQSVJFRCAgIyBub3FhCiAgICAvLyAgICAgY2FzZSBfOgogICAgLy8gICAgICAgICBhc3NlcnQgRmFsc2UsICJVbmtub3duIGVycm9yIiAgIyBub3FhCiAgICB1bmNvdmVyIDcKICAgIG1hdGNoIHZvdGVfcHJvcG9zYWxfc3dpdGNoX2Nhc2VfMEA3IHZvdGVfcHJvcG9zYWxfc3dpdGNoX2Nhc2VfMUA4IHZvdGVfcHJvcG9zYWxfc3dpdGNoX2Nhc2VfMkA5IHZvdGVfcHJvcG9zYWxfc3dpdGNoX2Nhc2VfM0AxMCB2b3RlX3Byb3Bvc2FsX3N3aXRjaF9jYXNlXzRAMTEgdm90ZV9wcm9wb3NhbF9zd2l0Y2hfY2FzZV81QDEyIHZvdGVfcHJvcG9zYWxfc3dpdGNoX2Nhc2VfNkAxMwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTozNTcKICAgIC8vIGFzc2VydCBGYWxzZSwgIlVua25vd24gZXJyb3IiICAjIG5vcWEKICAgIGVyciAvLyBVbmtub3duIGVycm9yCgp2b3RlX3Byb3Bvc2FsX3N3aXRjaF9jYXNlXzZAMTM6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjM1NQogICAgLy8gYXNzZXJ0IEZhbHNlLCBlcnIuVk9USU5HX1BFUklPRF9FWFBJUkVEICAjIG5vcWEKICAgIGVyciAvLyBWb3RpbmcgUGVyaW9kIEV4cGlyZWQKCnZvdGVfcHJvcG9zYWxfc3dpdGNoX2Nhc2VfNUAxMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzUzCiAgICAvLyBhc3NlcnQgRmFsc2UsIGVyci5XUk9OR19QUk9QT1NBTF9TVEFUVVMgICMgbm9xYQogICAgZXJyIC8vIFdyb25nIFByb3Bvc2FsIFN0YXR1cyBvciBmaW5hbGl6ZWQKCnZvdGVfcHJvcG9zYWxfc3dpdGNoX2Nhc2VfNEAxMToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzUxCiAgICAvLyBhc3NlcnQgRmFsc2UsIGVyci5NSVNTSU5HX0NPTkZJRyAgIyBub3FhCiAgICBlcnIgLy8gTWlzc2luZyBDb25maWcKCnZvdGVfcHJvcG9zYWxfc3dpdGNoX2Nhc2VfM0AxMDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzQ5CiAgICAvLyBhc3NlcnQgRmFsc2UsIGVyci5WT1RFU19JTlZBTElEICAjIG5vcWEKICAgIGVyciAvLyBWb3RlcyBpbnZhbGlkCgp2b3RlX3Byb3Bvc2FsX3N3aXRjaF9jYXNlXzJAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzQ3CiAgICAvLyBhc3NlcnQgRmFsc2UsIGVyci5WT1RFUl9BTFJFQURZX1ZPVEVEICAjIG5vcWEKICAgIGVyciAvLyBWb3RlciBhbHJlYWR5IHZvdGVkCgp2b3RlX3Byb3Bvc2FsX3N3aXRjaF9jYXNlXzFAODoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzQ1CiAgICAvLyBhc3NlcnQgRmFsc2UsIGVyci5WT1RFUl9OT1RfRk9VTkQgICMgbm9xYQogICAgZXJyIC8vIFZvdGVyIG5vdCBmb3VuZAoKdm90ZV9wcm9wb3NhbF9zd2l0Y2hfY2FzZV8wQDc6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjM0MwogICAgLy8gYXNzZXJ0IEZhbHNlLCBlcnIuVU5BVVRIT1JJWkVEICAjIG5vcWEKICAgIGVyciAvLyBVbmF1dGhvcml6ZWQKCnZvdGVfcHJvcG9zYWxfYWZ0ZXJfaWZfZWxzZUAxNToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzIyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKdm90ZV9wcm9wb3NhbF90ZXJuYXJ5X2ZhbHNlQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjMzOQogICAgLy8gaWYgZXJyb3Iuc3RhcnRzd2l0aChlcnIuQVJDXzY1X1BSRUZJWCk6CiAgICB1bmNvdmVyIDIKICAgIGV4dHJhY3QgNiA0CiAgICBieXRlY18yIC8vICJFUlI6IgogICAgPT0KICAgIGIgdm90ZV9wcm9wb3NhbF90ZXJuYXJ5X21lcmdlQDUKCgovLyBzbWFydF9jb250cmFjdHMueGdvdl9yZWdpc3RyeV9tb2NrLmNvbnRyYWN0Llhnb3ZSZWdpc3RyeU1vY2sudW5hc3NpZ25fYWJzZW50ZWVfZnJvbV9wcm9wb3NhbFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnVuYXNzaWduX2Fic2VudGVlX2Zyb21fcHJvcG9zYWw6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjM1OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMyAvLyAzMgogICAgKgogICAgcHVzaGludCAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YWNjb3VudD4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzYzLTM2NwogICAgLy8gZXJyb3IsIF90eCA9IGFyYzQuYWJpX2NhbGwoCiAgICAvLyAgICAgUHJvcG9zYWwudW5hc3NpZ25fYWJzZW50ZWVzLAogICAgLy8gICAgIGFic2VudGVlcywKICAgIC8vICAgICBhcHBfaWQ9cHJvcG9zYWxfaWQsCiAgICAvLyApCiAgICBpdHhuX2JlZ2luCiAgICBzd2FwCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzY0CiAgICAvLyBQcm9wb3NhbC51bmFzc2lnbl9hYnNlbnRlZXMsCiAgICBwdXNoYnl0ZXMgMHg3NmZmNGM3MCAvLyBtZXRob2QgInVuYXNzaWduX2Fic2VudGVlcyhhZGRyZXNzW10pc3RyaW5nIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjM2My0zNjcKICAgIC8vIGVycm9yLCBfdHggPSBhcmM0LmFiaV9jYWxsKAogICAgLy8gICAgIFByb3Bvc2FsLnVuYXNzaWduX2Fic2VudGVlcywKICAgIC8vICAgICBhYnNlbnRlZXMsCiAgICAvLyAgICAgYXBwX2lkPXByb3Bvc2FsX2lkLAogICAgLy8gKQogICAgcHVzaGludCA2IC8vIGFwcGwKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMSAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgaXR4bl9zdWJtaXQKICAgIGl0eG4gTGFzdExvZwogICAgZHVwbiAyCiAgICBleHRyYWN0IDAgNAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICA9PQogICAgYXNzZXJ0IC8vIGFwcGxpY2F0aW9uIGxvZyB2YWx1ZSBpcyBub3QgdGhlIHJlc3VsdCBvZiBhbiBBQkkgcmV0dXJuCiAgICBkdXAKICAgIGV4dHJhY3QgNCAwCiAgICBkdXAKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBwdXNoaW50IDIKICAgICsKICAgIHN3YXAKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3Igc3RyaW5nCiAgICBleHRyYWN0IDYgMAogICAgZHVwCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjM2OQogICAgLy8gaWYgZXJyb3Iuc3RhcnRzd2l0aChlcnIuQVJDXzY1X1BSRUZJWCk6CiAgICBsZW4KICAgIGR1cAogICAgcHVzaGludCA0CiAgICA8CiAgICBieiB1bmFzc2lnbl9hYnNlbnRlZV9mcm9tX3Byb3Bvc2FsX3Rlcm5hcnlfZmFsc2VANAogICAgdW5jb3ZlciAyCiAgICBwb3AKICAgIGludGNfMSAvLyAwCgp1bmFzc2lnbl9hYnNlbnRlZV9mcm9tX3Byb3Bvc2FsX3Rlcm5hcnlfbWVyZ2VANToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzY5CiAgICAvLyBpZiBlcnJvci5zdGFydHN3aXRoKGVyci5BUkNfNjVfUFJFRklYKToKICAgIGJ6IHVuYXNzaWduX2Fic2VudGVlX2Zyb21fcHJvcG9zYWxfZWxzZV9ib2R5QDEwCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjM3MAogICAgLy8gZXJyb3Jfd2l0aG91dF9wcmVmaXggPSBTdHJpbmcuZnJvbV9ieXRlcyhlcnJvci5ieXRlc1s0Ol0pCiAgICBwdXNoaW50IDQKICAgIGRpZyAxCiAgICA+PQogICAgcHVzaGludCA0CiAgICBkaWcgMgogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIHN3YXAKICAgIHN1YnN0cmluZzMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzcyCiAgICAvLyBjYXNlIGVyci5XUk9OR19QUk9QT1NBTF9TVEFUVVM6CiAgICBieXRlY18xIC8vICJXcm9uZyBQcm9wb3NhbCBTdGF0dXMgb3IgZmluYWxpemVkIgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTozNzQKICAgIC8vIGNhc2UgZXJyLlZPVEVSX05PVF9GT1VORDoKICAgIGJ5dGVjIDM3IC8vICJWb3RlciBub3QgZm91bmQiCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjM3MS0zNzcKICAgIC8vIG1hdGNoIGVycm9yX3dpdGhvdXRfcHJlZml4OgogICAgLy8gICAgIGNhc2UgZXJyLldST05HX1BST1BPU0FMX1NUQVRVUzoKICAgIC8vICAgICAgICAgYXNzZXJ0IEZhbHNlLCBlcnIuV1JPTkdfUFJPUE9TQUxfU1RBVFVTICAjIG5vcWEKICAgIC8vICAgICBjYXNlIGVyci5WT1RFUl9OT1RfRk9VTkQ6CiAgICAvLyAgICAgICAgIGFzc2VydCBGYWxzZSwgZXJyLlZPVEVSX05PVF9GT1VORCAgIyBub3FhCiAgICAvLyAgICAgY2FzZSBfOgogICAgLy8gICAgICAgICBhc3NlcnQgRmFsc2UsICJVbmtub3duIGVycm9yIiAgIyBub3FhCiAgICB1bmNvdmVyIDIKICAgIG1hdGNoIHVuYXNzaWduX2Fic2VudGVlX2Zyb21fcHJvcG9zYWxfc3dpdGNoX2Nhc2VfMEA3IHVuYXNzaWduX2Fic2VudGVlX2Zyb21fcHJvcG9zYWxfc3dpdGNoX2Nhc2VfMUA4CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjM3NwogICAgLy8gYXNzZXJ0IEZhbHNlLCAiVW5rbm93biBlcnJvciIgICMgbm9xYQogICAgZXJyIC8vIFVua25vd24gZXJyb3IKCnVuYXNzaWduX2Fic2VudGVlX2Zyb21fcHJvcG9zYWxfc3dpdGNoX2Nhc2VfMUA4OgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTozNzUKICAgIC8vIGFzc2VydCBGYWxzZSwgZXJyLlZPVEVSX05PVF9GT1VORCAgIyBub3FhCiAgICBlcnIgLy8gVm90ZXIgbm90IGZvdW5kCgp1bmFzc2lnbl9hYnNlbnRlZV9mcm9tX3Byb3Bvc2FsX3N3aXRjaF9jYXNlXzBANzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzczCiAgICAvLyBhc3NlcnQgRmFsc2UsIGVyci5XUk9OR19QUk9QT1NBTF9TVEFUVVMgICMgbm9xYQogICAgZXJyIC8vIFdyb25nIFByb3Bvc2FsIFN0YXR1cyBvciBmaW5hbGl6ZWQKCnVuYXNzaWduX2Fic2VudGVlX2Zyb21fcHJvcG9zYWxfZWxzZV9ib2R5QDEwOgogICAgcG9wCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjM3OQogICAgLy8gYXNzZXJ0IGVycm9yID09ICIiLCAiVW5rbm93biBlcnJvciIKICAgIHB1c2hieXRlcyAiIgogICAgPT0KICAgIGFzc2VydCAvLyBVbmtub3duIGVycm9yCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjM1OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCnVuYXNzaWduX2Fic2VudGVlX2Zyb21fcHJvcG9zYWxfdGVybmFyeV9mYWxzZUA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTozNjkKICAgIC8vIGlmIGVycm9yLnN0YXJ0c3dpdGgoZXJyLkFSQ182NV9QUkVGSVgpOgogICAgdW5jb3ZlciAyCiAgICBleHRyYWN0IDYgNAogICAgYnl0ZWNfMiAvLyAiRVJSOiIKICAgID09CiAgICBiIHVuYXNzaWduX2Fic2VudGVlX2Zyb21fcHJvcG9zYWxfdGVybmFyeV9tZXJnZUA1CgoKLy8gc21hcnRfY29udHJhY3RzLnhnb3ZfcmVnaXN0cnlfbW9jay5jb250cmFjdC5YZ292UmVnaXN0cnlNb2NrLnBheV9ncmFudF9wcm9wb3NhbFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnBheV9ncmFudF9wcm9wb3NhbDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzgxCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTozODMKICAgIC8vIGVycm9yLCBfdHggPSBhcmM0LmFiaV9jYWxsKFByb3Bvc2FsLmZ1bmQsIGFwcF9pZD1wcm9wb3NhbF9pZCkKICAgIGl0eG5fYmVnaW4KICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25JRAogICAgcHVzaGJ5dGVzIDB4OGE1ZTRjODAgLy8gbWV0aG9kICJmdW5kKClzdHJpbmciCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgcHVzaGludCA2IC8vIGFwcGwKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMSAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgaXR4bl9zdWJtaXQKICAgIGl0eG4gTGFzdExvZwogICAgZHVwbiAyCiAgICBleHRyYWN0IDAgNAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICA9PQogICAgYXNzZXJ0IC8vIGFwcGxpY2F0aW9uIGxvZyB2YWx1ZSBpcyBub3QgdGhlIHJlc3VsdCBvZiBhbiBBQkkgcmV0dXJuCiAgICBkdXAKICAgIGV4dHJhY3QgNCAwCiAgICBkdXAKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBwdXNoaW50IDIKICAgICsKICAgIHN3YXAKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3Igc3RyaW5nCiAgICBleHRyYWN0IDYgMAogICAgZHVwCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjM4NQogICAgLy8gaWYgZXJyb3Iuc3RhcnRzd2l0aChlcnIuQVJDXzY1X1BSRUZJWCk6CiAgICBsZW4KICAgIGR1cAogICAgcHVzaGludCA0CiAgICA8CiAgICBieiBwYXlfZ3JhbnRfcHJvcG9zYWxfdGVybmFyeV9mYWxzZUA0CiAgICB1bmNvdmVyIDIKICAgIHBvcAogICAgaW50Y18xIC8vIDAKCnBheV9ncmFudF9wcm9wb3NhbF90ZXJuYXJ5X21lcmdlQDU6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjM4NQogICAgLy8gaWYgZXJyb3Iuc3RhcnRzd2l0aChlcnIuQVJDXzY1X1BSRUZJWCk6CiAgICBieiBwYXlfZ3JhbnRfcHJvcG9zYWxfYWZ0ZXJfaWZfZWxzZUAxMAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTozODYKICAgIC8vIGVycm9yX3dpdGhvdXRfcHJlZml4ID0gU3RyaW5nLmZyb21fYnl0ZXMoZXJyb3IuYnl0ZXNbNDpdKQogICAgcHVzaGludCA0CiAgICBkaWcgMQogICAgPj0KICAgIHB1c2hpbnQgNAogICAgZGlnIDIKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBzd2FwCiAgICBzdWJzdHJpbmczCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjM4OAogICAgLy8gY2FzZSBlcnIuVU5BVVRIT1JJWkVEOgogICAgYnl0ZWMgMzYgLy8gIlVuYXV0aG9yaXplZCIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzkwCiAgICAvLyBjYXNlIGVyci5XUk9OR19QUk9QT1NBTF9TVEFUVVM6CiAgICBieXRlY18xIC8vICJXcm9uZyBQcm9wb3NhbCBTdGF0dXMgb3IgZmluYWxpemVkIgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTozODctMzkzCiAgICAvLyBtYXRjaCBlcnJvcl93aXRob3V0X3ByZWZpeDoKICAgIC8vICAgICBjYXNlIGVyci5VTkFVVEhPUklaRUQ6CiAgICAvLyAgICAgICAgIGFzc2VydCBGYWxzZSwgZXJyLlVOQVVUSE9SSVpFRCAgIyBub3FhCiAgICAvLyAgICAgY2FzZSBlcnIuV1JPTkdfUFJPUE9TQUxfU1RBVFVTOgogICAgLy8gICAgICAgICBhc3NlcnQgRmFsc2UsIGVyci5XUk9OR19QUk9QT1NBTF9TVEFUVVMgICMgbm9xYQogICAgLy8gICAgIGNhc2UgXzoKICAgIC8vICAgICAgICAgYXNzZXJ0IEZhbHNlLCAiVW5rbm93biBlcnJvciIgICMgbm9xYQogICAgdW5jb3ZlciAyCiAgICBtYXRjaCBwYXlfZ3JhbnRfcHJvcG9zYWxfc3dpdGNoX2Nhc2VfMEA3IHBheV9ncmFudF9wcm9wb3NhbF9zd2l0Y2hfY2FzZV8xQDgKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzkzCiAgICAvLyBhc3NlcnQgRmFsc2UsICJVbmtub3duIGVycm9yIiAgIyBub3FhCiAgICBlcnIgLy8gVW5rbm93biBlcnJvcgoKcGF5X2dyYW50X3Byb3Bvc2FsX3N3aXRjaF9jYXNlXzFAODoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6MzkxCiAgICAvLyBhc3NlcnQgRmFsc2UsIGVyci5XUk9OR19QUk9QT1NBTF9TVEFUVVMgICMgbm9xYQogICAgZXJyIC8vIFdyb25nIFByb3Bvc2FsIFN0YXR1cyBvciBmaW5hbGl6ZWQKCnBheV9ncmFudF9wcm9wb3NhbF9zd2l0Y2hfY2FzZV8wQDc6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjM4OQogICAgLy8gYXNzZXJ0IEZhbHNlLCBlcnIuVU5BVVRIT1JJWkVEICAjIG5vcWEKICAgIGVyciAvLyBVbmF1dGhvcml6ZWQKCnBheV9ncmFudF9wcm9wb3NhbF9hZnRlcl9pZl9lbHNlQDEwOgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTozODEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgpwYXlfZ3JhbnRfcHJvcG9zYWxfdGVybmFyeV9mYWxzZUA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTozODUKICAgIC8vIGlmIGVycm9yLnN0YXJ0c3dpdGgoZXJyLkFSQ182NV9QUkVGSVgpOgogICAgdW5jb3ZlciAyCiAgICBleHRyYWN0IDYgNAogICAgYnl0ZWNfMiAvLyAiRVJSOiIKICAgID09CiAgICBiIHBheV9ncmFudF9wcm9wb3NhbF90ZXJuYXJ5X21lcmdlQDUKCgovLyBzbWFydF9jb250cmFjdHMueGdvdl9yZWdpc3RyeV9tb2NrLmNvbnRyYWN0Llhnb3ZSZWdpc3RyeU1vY2suZmluYWxpemVfcHJvcG9zYWxbcm91dGluZ10oKSAtPiB2b2lkOgpmaW5hbGl6ZV9wcm9wb3NhbDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6Mzk1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTozOTcKICAgIC8vIGVycm9yLCBfdHggPSBhcmM0LmFiaV9jYWxsKFByb3Bvc2FsLmZpbmFsaXplLCBhcHBfaWQ9cHJvcG9zYWxfaWQpCiAgICBpdHhuX2JlZ2luCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIHB1c2hieXRlcyAweDgwMjA2OWI0IC8vIG1ldGhvZCAiZmluYWxpemUoKXN0cmluZyIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBwdXNoaW50IDYgLy8gYXBwbAogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18xIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBMYXN0TG9nCiAgICBkdXBuIDIKICAgIGV4dHJhY3QgMCA0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgID09CiAgICBhc3NlcnQgLy8gYXBwbGljYXRpb24gbG9nIHZhbHVlIGlzIG5vdCB0aGUgcmVzdWx0IG9mIGFuIEFCSSByZXR1cm4KICAgIGR1cAogICAgZXh0cmFjdCA0IDAKICAgIGR1cAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIHB1c2hpbnQgMgogICAgKwogICAgc3dhcAogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBzdHJpbmcKICAgIGV4dHJhY3QgNiAwCiAgICBkdXAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6Mzk5CiAgICAvLyBpZiBlcnJvci5zdGFydHN3aXRoKGVyci5BUkNfNjVfUFJFRklYKToKICAgIGxlbgogICAgZHVwCiAgICBwdXNoaW50IDQKICAgIDwKICAgIGJ6IGZpbmFsaXplX3Byb3Bvc2FsX3Rlcm5hcnlfZmFsc2VANAogICAgdW5jb3ZlciAyCiAgICBwb3AKICAgIGludGNfMSAvLyAwCgpmaW5hbGl6ZV9wcm9wb3NhbF90ZXJuYXJ5X21lcmdlQDU6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjM5OQogICAgLy8gaWYgZXJyb3Iuc3RhcnRzd2l0aChlcnIuQVJDXzY1X1BSRUZJWCk6CiAgICBieiBmaW5hbGl6ZV9wcm9wb3NhbF9hZnRlcl9pZl9lbHNlQDExCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjQwMAogICAgLy8gZXJyb3Jfd2l0aG91dF9wcmVmaXggPSBTdHJpbmcuZnJvbV9ieXRlcyhlcnJvci5ieXRlc1s0Ol0pCiAgICBwdXNoaW50IDQKICAgIGRpZyAxCiAgICA+PQogICAgcHVzaGludCA0CiAgICBkaWcgMgogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIHN3YXAKICAgIHN1YnN0cmluZzMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDAyCiAgICAvLyBjYXNlIGVyci5XUk9OR19QUk9QT1NBTF9TVEFUVVM6CiAgICBieXRlY18xIC8vICJXcm9uZyBQcm9wb3NhbCBTdGF0dXMgb3IgZmluYWxpemVkIgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0MDQKICAgIC8vIGNhc2UgZXJyLk1JU1NJTkdfQ09ORklHOgogICAgYnl0ZWMgMzggLy8gIk1pc3NpbmcgQ29uZmlnIgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0MDYKICAgIC8vIGNhc2UgZXJyLlZPVEVSU19BU1NJR05FRDoKICAgIHB1c2hieXRlcyAiVGhlcmUgYXJlIHZvdGVycyBhc3NpZ25lZCB0byB0aGlzIHByb3Bvc2FsIgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0MDEtNDA5CiAgICAvLyBtYXRjaCBlcnJvcl93aXRob3V0X3ByZWZpeDoKICAgIC8vICAgICBjYXNlIGVyci5XUk9OR19QUk9QT1NBTF9TVEFUVVM6CiAgICAvLyAgICAgICAgIGFzc2VydCBGYWxzZSwgZXJyLldST05HX1BST1BPU0FMX1NUQVRVUyAgIyBub3FhCiAgICAvLyAgICAgY2FzZSBlcnIuTUlTU0lOR19DT05GSUc6CiAgICAvLyAgICAgICAgIGFzc2VydCBGYWxzZSwgZXJyLk1JU1NJTkdfQ09ORklHICAjIG5vcWEKICAgIC8vICAgICBjYXNlIGVyci5WT1RFUlNfQVNTSUdORUQ6CiAgICAvLyAgICAgICAgIGFzc2VydCBGYWxzZSwgZXJyLlZPVEVSU19BU1NJR05FRCAgIyBub3FhCiAgICAvLyAgICAgY2FzZSBfOgogICAgLy8gICAgICAgICBhc3NlcnQgRmFsc2UsICJVbmtub3duIGVycm9yIiAgIyBub3FhCiAgICB1bmNvdmVyIDMKICAgIG1hdGNoIGZpbmFsaXplX3Byb3Bvc2FsX3N3aXRjaF9jYXNlXzBANyBmaW5hbGl6ZV9wcm9wb3NhbF9zd2l0Y2hfY2FzZV8xQDggZmluYWxpemVfcHJvcG9zYWxfc3dpdGNoX2Nhc2VfMkA5CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjQwOQogICAgLy8gYXNzZXJ0IEZhbHNlLCAiVW5rbm93biBlcnJvciIgICMgbm9xYQogICAgZXJyIC8vIFVua25vd24gZXJyb3IKCmZpbmFsaXplX3Byb3Bvc2FsX3N3aXRjaF9jYXNlXzJAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDA3CiAgICAvLyBhc3NlcnQgRmFsc2UsIGVyci5WT1RFUlNfQVNTSUdORUQgICMgbm9xYQogICAgZXJyIC8vIFRoZXJlIGFyZSB2b3RlcnMgYXNzaWduZWQgdG8gdGhpcyBwcm9wb3NhbAoKZmluYWxpemVfcHJvcG9zYWxfc3dpdGNoX2Nhc2VfMUA4OgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0MDUKICAgIC8vIGFzc2VydCBGYWxzZSwgZXJyLk1JU1NJTkdfQ09ORklHICAjIG5vcWEKICAgIGVyciAvLyBNaXNzaW5nIENvbmZpZwoKZmluYWxpemVfcHJvcG9zYWxfc3dpdGNoX2Nhc2VfMEA3OgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0MDMKICAgIC8vIGFzc2VydCBGYWxzZSwgZXJyLldST05HX1BST1BPU0FMX1NUQVRVUyAgIyBub3FhCiAgICBlcnIgLy8gV3JvbmcgUHJvcG9zYWwgU3RhdHVzIG9yIGZpbmFsaXplZAoKZmluYWxpemVfcHJvcG9zYWxfYWZ0ZXJfaWZfZWxzZUAxMToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6Mzk1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKZmluYWxpemVfcHJvcG9zYWxfdGVybmFyeV9mYWxzZUA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTozOTkKICAgIC8vIGlmIGVycm9yLnN0YXJ0c3dpdGgoZXJyLkFSQ182NV9QUkVGSVgpOgogICAgdW5jb3ZlciAyCiAgICBleHRyYWN0IDYgNAogICAgYnl0ZWNfMiAvLyAiRVJSOiIKICAgID09CiAgICBiIGZpbmFsaXplX3Byb3Bvc2FsX3Rlcm5hcnlfbWVyZ2VANQoKCi8vIHNtYXJ0X2NvbnRyYWN0cy54Z292X3JlZ2lzdHJ5X21vY2suY29udHJhY3QuWGdvdlJlZ2lzdHJ5TW9jay5kcm9wX3Byb3Bvc2FsW3JvdXRpbmddKCkgLT4gdm9pZDoKZHJvcF9wcm9wb3NhbDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDExCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0MTMKICAgIC8vIGVycm9yLCBfdHggPSBhcmM0LmFiaV9jYWxsKFByb3Bvc2FsLmRyb3AsIGFwcF9pZD1wcm9wb3NhbF9pZCkKICAgIGl0eG5fYmVnaW4KICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25JRAogICAgcHVzaGJ5dGVzIDB4NzM3MTMyMWEgLy8gbWV0aG9kICJkcm9wKClzdHJpbmciCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgcHVzaGludCA2IC8vIGFwcGwKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMSAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgaXR4bl9zdWJtaXQKICAgIGl0eG4gTGFzdExvZwogICAgZHVwbiAyCiAgICBleHRyYWN0IDAgNAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICA9PQogICAgYXNzZXJ0IC8vIGFwcGxpY2F0aW9uIGxvZyB2YWx1ZSBpcyBub3QgdGhlIHJlc3VsdCBvZiBhbiBBQkkgcmV0dXJuCiAgICBkdXAKICAgIGV4dHJhY3QgNCAwCiAgICBkdXAKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBwdXNoaW50IDIKICAgICsKICAgIHN3YXAKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3Igc3RyaW5nCiAgICBleHRyYWN0IDYgMAogICAgZHVwCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjQxNQogICAgLy8gaWYgZXJyb3Iuc3RhcnRzd2l0aChlcnIuQVJDXzY1X1BSRUZJWCk6CiAgICBsZW4KICAgIGR1cAogICAgcHVzaGludCA0CiAgICA8CiAgICBieiBkcm9wX3Byb3Bvc2FsX3Rlcm5hcnlfZmFsc2VANAogICAgdW5jb3ZlciAyCiAgICBwb3AKICAgIGludGNfMSAvLyAwCgpkcm9wX3Byb3Bvc2FsX3Rlcm5hcnlfbWVyZ2VANToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDE1CiAgICAvLyBpZiBlcnJvci5zdGFydHN3aXRoKGVyci5BUkNfNjVfUFJFRklYKToKICAgIGJ6IGRyb3BfcHJvcG9zYWxfYWZ0ZXJfaWZfZWxzZUA5CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjQxNgogICAgLy8gZXJyb3Jfd2l0aG91dF9wcmVmaXggPSBTdHJpbmcuZnJvbV9ieXRlcyhlcnJvci5ieXRlc1s0Ol0pCiAgICBwdXNoaW50IDQKICAgIGRpZyAxCiAgICA+PQogICAgcHVzaGludCA0CiAgICBkaWcgMgogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIHN3YXAKICAgIHN1YnN0cmluZzMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDE4CiAgICAvLyBjYXNlIGVyci5XUk9OR19QUk9QT1NBTF9TVEFUVVM6CiAgICBieXRlY18xIC8vICJXcm9uZyBQcm9wb3NhbCBTdGF0dXMgb3IgZmluYWxpemVkIgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0MTctNDIxCiAgICAvLyBtYXRjaCBlcnJvcl93aXRob3V0X3ByZWZpeDoKICAgIC8vICAgICBjYXNlIGVyci5XUk9OR19QUk9QT1NBTF9TVEFUVVM6CiAgICAvLyAgICAgICAgIGFzc2VydCBGYWxzZSwgZXJyLldST05HX1BST1BPU0FMX1NUQVRVUyAgIyBub3FhCiAgICAvLyAgICAgY2FzZSBfOgogICAgLy8gICAgICAgICBhc3NlcnQgRmFsc2UsICJVbmtub3duIGVycm9yIiAgIyBub3FhCiAgICBzd2FwCiAgICBtYXRjaCBkcm9wX3Byb3Bvc2FsX3N3aXRjaF9jYXNlXzBANwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0MjEKICAgIC8vIGFzc2VydCBGYWxzZSwgIlVua25vd24gZXJyb3IiICAjIG5vcWEKICAgIGVyciAvLyBVbmtub3duIGVycm9yCgpkcm9wX3Byb3Bvc2FsX3N3aXRjaF9jYXNlXzBANzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDE5CiAgICAvLyBhc3NlcnQgRmFsc2UsIGVyci5XUk9OR19QUk9QT1NBTF9TVEFUVVMgICMgbm9xYQogICAgZXJyIC8vIFdyb25nIFByb3Bvc2FsIFN0YXR1cyBvciBmaW5hbGl6ZWQKCmRyb3BfcHJvcG9zYWxfYWZ0ZXJfaWZfZWxzZUA5OgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0MTEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgpkcm9wX3Byb3Bvc2FsX3Rlcm5hcnlfZmFsc2VANDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDE1CiAgICAvLyBpZiBlcnJvci5zdGFydHN3aXRoKGVyci5BUkNfNjVfUFJFRklYKToKICAgIHVuY292ZXIgMgogICAgZXh0cmFjdCA2IDQKICAgIGJ5dGVjXzIgLy8gIkVSUjoiCiAgICA9PQogICAgYiBkcm9wX3Byb3Bvc2FsX3Rlcm5hcnlfbWVyZ2VANQoKCi8vIHNtYXJ0X2NvbnRyYWN0cy54Z292X3JlZ2lzdHJ5X21vY2suY29udHJhY3QuWGdvdlJlZ2lzdHJ5TW9jay5kZXBvc2l0X2Z1bmRzW3JvdXRpbmddKCkgLT4gdm9pZDoKZGVwb3NpdF9mdW5kczoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDIzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIEdyb3VwSW5kZXgKICAgIGludGNfMCAvLyAxCiAgICAtCiAgICBndHhucyBUeXBlRW51bQogICAgaW50Y18wIC8vIHBheQogICAgPT0KICAgIGFzc2VydCAvLyB0cmFuc2FjdGlvbiB0eXBlIGlzIHBheQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy54Z292X3JlZ2lzdHJ5X21vY2suY29udHJhY3QuWGdvdlJlZ2lzdHJ5TW9jay53aXRoZHJhd19mdW5kc1tyb3V0aW5nXSgpIC0+IHZvaWQ6CndpdGhkcmF3X2Z1bmRzOgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0MjcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy54Z292X3JlZ2lzdHJ5X21vY2suY29udHJhY3QuWGdvdlJlZ2lzdHJ5TW9jay53aXRoZHJhd19hdmFpbGFibGVfZnVuZHNbcm91dGluZ10oKSAtPiB2b2lkOgp3aXRoZHJhd19hdmFpbGFibGVfZnVuZHM6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjQzMQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGxlbgogICAgaW50Y18yIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnhnb3ZfcmVnaXN0cnlfbW9jay5jb250cmFjdC5YZ292UmVnaXN0cnlNb2NrLmdldF9zdGF0ZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CmdldF9zdGF0ZToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDQyCiAgICAvLyBwYXVzZWRfcmVnaXN0cnk9c2VsZi5wYXVzZWRfcmVnaXN0cnkudmFsdWUsCiAgICBpbnRjXzEgLy8gMAogICAgYnl0ZWNfMyAvLyAweDcwNjE3NTczNjU2NDVmNzI2NTY3Njk3Mzc0NzI3OQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnBhdXNlZF9yZWdpc3RyeSBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDQzCiAgICAvLyBwYXVzZWRfcHJvcG9zYWxzPXNlbGYucGF1c2VkX3Byb3Bvc2Fscy52YWx1ZSwKICAgIGludGNfMSAvLyAwCiAgICBieXRlYyA0IC8vIDB4NzA2MTc1NzM2NTY0NWY3MDcyNmY3MDZmNzM2MTZjNzMKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5wYXVzZWRfcHJvcG9zYWxzIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0NDQKICAgIC8vIHhnb3ZfbWFuYWdlcj1HbG9iYWwuemVyb19hZGRyZXNzLAogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjQ0NQogICAgLy8geGdvdl9wYXlvcj1HbG9iYWwuemVyb19hZGRyZXNzLAogICAgZHVwCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjQ0NgogICAgLy8geGdvdl9jb3VuY2lsPXNlbGYueGdvdl9jb3VuY2lsLnZhbHVlLAogICAgaW50Y18xIC8vIDAKICAgIGJ5dGVjIDUgLy8gMHg3ODY3NmY3NjVmNjM2Zjc1NmU2MzY5NmMKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi54Z292X2NvdW5jaWwgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjQ0NwogICAgLy8geGdvdl9zdWJzY3JpYmVyPUdsb2JhbC56ZXJvX2FkZHJlc3MsCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDQ4LTQ0OQogICAgLy8ga3ljX3Byb3ZpZGVyPUdsb2JhbC56ZXJvX2FkZHJlc3MsCiAgICAvLyBjb21taXR0ZWVfbWFuYWdlcj1HbG9iYWwuemVyb19hZGRyZXNzLAogICAgZHVwbiAyCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjQ1MAogICAgLy8geGdvdl9kYWVtb249c2VsZi54Z292X2RhZW1vbi52YWx1ZSwKICAgIGludGNfMSAvLyAwCiAgICBieXRlYyA2IC8vIDB4Nzg2NzZmNzY1ZjY0NjE2NTZkNmY2ZQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnhnb3ZfZGFlbW9uIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0NTMKICAgIC8vIG9wZW5fcHJvcG9zYWxfZmVlPXNlbGYub3Blbl9wcm9wb3NhbF9mZWUudmFsdWUsCiAgICBpbnRjXzEgLy8gMAogICAgYnl0ZWMgNyAvLyAweDZmNzA2NTZlNWY3MDcyNmY3MDZmNzM2MTZjNWY2NjY1NjUKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5vcGVuX3Byb3Bvc2FsX2ZlZSBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDU0CiAgICAvLyBkYWVtb25fb3BzX2Z1bmRpbmdfYnBzPXNlbGYuZGFlbW9uX29wc19mdW5kaW5nX2Jwcy52YWx1ZSwKICAgIGludGNfMSAvLyAwCiAgICBieXRlYyAxMSAvLyAweDY0NjE2NTZkNmY2ZTVmNmY3MDY1NzI2MTc0Njk2ZjZlNWY2Njc1NmU2NDY5NmU2NzVmNjI3MDczCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuZGFlbW9uX29wc19mdW5kaW5nX2JwcyBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDU1CiAgICAvLyBwcm9wb3NhbF9jb21taXRtZW50X2Jwcz1zZWxmLnByb3Bvc2FsX2NvbW1pdG1lbnRfYnBzLnZhbHVlLAogICAgaW50Y18xIC8vIDAKICAgIGJ5dGVjIDEyIC8vIDB4NzA3MjZmNzA2ZjczNjE2YzVmNjM2ZjZkNmQ2OTc0NmQ2NTZlNzQ1ZjYyNzA3MwogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnByb3Bvc2FsX2NvbW1pdG1lbnRfYnBzIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0NTYKICAgIC8vIG1pbl9yZXF1ZXN0ZWRfYW1vdW50PXNlbGYubWluX3JlcXVlc3RlZF9hbW91bnQudmFsdWUsCiAgICBpbnRjXzEgLy8gMAogICAgYnl0ZWMgMTMgLy8gMHg2ZDY5NmU1ZjcyNjU3MTc1NjU3Mzc0NjU2NDVmNjE2ZDZmNzU2ZTc0CiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYubWluX3JlcXVlc3RlZF9hbW91bnQgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjQ1OQogICAgLy8gc2VsZi5tYXhfcmVxdWVzdGVkX2Ftb3VudF9zbWFsbC52YWx1ZSwKICAgIGludGNfMSAvLyAwCiAgICBieXRlYyAxNCAvLyAweDZkNjE3ODVmNzI2NTcxNzU2NTczNzQ2NTY0NWY2MTZkNmY3NTZlNzQ1ZjczNmQ2MTZjNmMKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5tYXhfcmVxdWVzdGVkX2Ftb3VudF9zbWFsbCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDYwCiAgICAvLyBzZWxmLm1heF9yZXF1ZXN0ZWRfYW1vdW50X21lZGl1bS52YWx1ZSwKICAgIGludGNfMSAvLyAwCiAgICBieXRlYyAxNSAvLyAweDZkNjE3ODVmNzI2NTcxNzU2NTczNzQ2NTY0NWY2MTZkNmY3NTZlNzQ1ZjZkNjU2NDY5NzU2ZAogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLm1heF9yZXF1ZXN0ZWRfYW1vdW50X21lZGl1bSBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDYxCiAgICAvLyBzZWxmLm1heF9yZXF1ZXN0ZWRfYW1vdW50X2xhcmdlLnZhbHVlLAogICAgaW50Y18xIC8vIDAKICAgIGJ5dGVjIDE2IC8vIDB4NmQ2MTc4NWY3MjY1NzE3NTY1NzM3NDY1NjQ1ZjYxNmQ2Zjc1NmU3NDVmNmM2MTcyNjc2NQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLm1heF9yZXF1ZXN0ZWRfYW1vdW50X2xhcmdlIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0NTctNDYzCiAgICAvLyBtYXhfcmVxdWVzdGVkX2Ftb3VudD1GaXhlZEFycmF5KAogICAgLy8gICAgICgKICAgIC8vICAgICAgICAgc2VsZi5tYXhfcmVxdWVzdGVkX2Ftb3VudF9zbWFsbC52YWx1ZSwKICAgIC8vICAgICAgICAgc2VsZi5tYXhfcmVxdWVzdGVkX2Ftb3VudF9tZWRpdW0udmFsdWUsCiAgICAvLyAgICAgICAgIHNlbGYubWF4X3JlcXVlc3RlZF9hbW91bnRfbGFyZ2UudmFsdWUsCiAgICAvLyAgICAgKQogICAgLy8gKSwKICAgIHVuY292ZXIgMgogICAgaXRvYgogICAgdW5jb3ZlciAyCiAgICBpdG9iCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGl0b2IKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0NjYKICAgIC8vIHNlbGYuZGlzY3Vzc2lvbl9kdXJhdGlvbl9zbWFsbC52YWx1ZSwKICAgIGludGNfMSAvLyAwCiAgICBieXRlYyAxNyAvLyAweDY0Njk3MzYzNzU3MzczNjk2ZjZlNWY2NDc1NzI2MTc0Njk2ZjZlNWY3MzZkNjE2YzZjCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuZGlzY3Vzc2lvbl9kdXJhdGlvbl9zbWFsbCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDY3CiAgICAvLyBzZWxmLmRpc2N1c3Npb25fZHVyYXRpb25fbWVkaXVtLnZhbHVlLAogICAgaW50Y18xIC8vIDAKICAgIGJ5dGVjIDE4IC8vIDB4NjQ2OTczNjM3NTczNzM2OTZmNmU1ZjY0NzU3MjYxNzQ2OTZmNmU1ZjZkNjU2NDY5NzU2ZAogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmRpc2N1c3Npb25fZHVyYXRpb25fbWVkaXVtIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0NjgKICAgIC8vIHNlbGYuZGlzY3Vzc2lvbl9kdXJhdGlvbl9sYXJnZS52YWx1ZSwKICAgIGludGNfMSAvLyAwCiAgICBieXRlYyAxOSAvLyAweDY0Njk3MzYzNzU3MzczNjk2ZjZlNWY2NDc1NzI2MTc0Njk2ZjZlNWY2YzYxNzI2NzY1CiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuZGlzY3Vzc2lvbl9kdXJhdGlvbl9sYXJnZSBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDY5CiAgICAvLyBzZWxmLmRpc2N1c3Npb25fZHVyYXRpb25feGxhcmdlLnZhbHVlLAogICAgaW50Y18xIC8vIDAKICAgIGJ5dGVjIDIwIC8vIDB4NjQ2OTczNjM3NTczNzM2OTZmNmU1ZjY0NzU3MjYxNzQ2OTZmNmU1Zjc4NmM2MTcyNjc2NQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmRpc2N1c3Npb25fZHVyYXRpb25feGxhcmdlIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0NjQtNDcxCiAgICAvLyBkaXNjdXNzaW9uX2R1cmF0aW9uPUZpeGVkQXJyYXkoCiAgICAvLyAgICAgKAogICAgLy8gICAgICAgICBzZWxmLmRpc2N1c3Npb25fZHVyYXRpb25fc21hbGwudmFsdWUsCiAgICAvLyAgICAgICAgIHNlbGYuZGlzY3Vzc2lvbl9kdXJhdGlvbl9tZWRpdW0udmFsdWUsCiAgICAvLyAgICAgICAgIHNlbGYuZGlzY3Vzc2lvbl9kdXJhdGlvbl9sYXJnZS52YWx1ZSwKICAgIC8vICAgICAgICAgc2VsZi5kaXNjdXNzaW9uX2R1cmF0aW9uX3hsYXJnZS52YWx1ZSwKICAgIC8vICAgICApCiAgICAvLyApLAogICAgdW5jb3ZlciAzCiAgICBpdG9iCiAgICB1bmNvdmVyIDMKICAgIGl0b2IKICAgIGNvbmNhdAogICAgdW5jb3ZlciAyCiAgICBpdG9iCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGl0b2IKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0NzQKICAgIC8vIHNlbGYudm90aW5nX2R1cmF0aW9uX3NtYWxsLnZhbHVlLAogICAgaW50Y18xIC8vIDAKICAgIGJ5dGVjIDIxIC8vIDB4NzY2Zjc0Njk2ZTY3NWY2NDc1NzI2MTc0Njk2ZjZlNWY3MzZkNjE2YzZjCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYudm90aW5nX2R1cmF0aW9uX3NtYWxsIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0NzUKICAgIC8vIHNlbGYudm90aW5nX2R1cmF0aW9uX21lZGl1bS52YWx1ZSwKICAgIGludGNfMSAvLyAwCiAgICBieXRlYyAyMiAvLyAweDc2NmY3NDY5NmU2NzVmNjQ3NTcyNjE3NDY5NmY2ZTVmNmQ2NTY0Njk3NTZkCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYudm90aW5nX2R1cmF0aW9uX21lZGl1bSBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDc2CiAgICAvLyBzZWxmLnZvdGluZ19kdXJhdGlvbl9sYXJnZS52YWx1ZSwKICAgIGludGNfMSAvLyAwCiAgICBieXRlYyAyMyAvLyAweDc2NmY3NDY5NmU2NzVmNjQ3NTcyNjE3NDY5NmY2ZTVmNmM2MTcyNjc2NQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnZvdGluZ19kdXJhdGlvbl9sYXJnZSBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDc3CiAgICAvLyBzZWxmLnZvdGluZ19kdXJhdGlvbl94bGFyZ2UudmFsdWUsCiAgICBpbnRjXzEgLy8gMAogICAgYnl0ZWMgMjQgLy8gMHg3NjZmNzQ2OTZlNjc1ZjY0NzU3MjYxNzQ2OTZmNmU1Zjc4NmM2MTcyNjc2NQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnZvdGluZ19kdXJhdGlvbl94bGFyZ2UgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjQ3Mi00NzkKICAgIC8vIHZvdGluZ19kdXJhdGlvbj1GaXhlZEFycmF5KAogICAgLy8gICAgICgKICAgIC8vICAgICAgICAgc2VsZi52b3RpbmdfZHVyYXRpb25fc21hbGwudmFsdWUsCiAgICAvLyAgICAgICAgIHNlbGYudm90aW5nX2R1cmF0aW9uX21lZGl1bS52YWx1ZSwKICAgIC8vICAgICAgICAgc2VsZi52b3RpbmdfZHVyYXRpb25fbGFyZ2UudmFsdWUsCiAgICAvLyAgICAgICAgIHNlbGYudm90aW5nX2R1cmF0aW9uX3hsYXJnZS52YWx1ZSwKICAgIC8vICAgICApCiAgICAvLyApLAogICAgdW5jb3ZlciAzCiAgICBpdG9iCiAgICB1bmNvdmVyIDMKICAgIGl0b2IKICAgIGNvbmNhdAogICAgdW5jb3ZlciAyCiAgICBpdG9iCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGl0b2IKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0ODIKICAgIC8vIHNlbGYucXVvcnVtX3NtYWxsLnZhbHVlLAogICAgaW50Y18xIC8vIDAKICAgIGJ5dGVjIDI1IC8vIDB4NzE3NTZmNzI3NTZkNWY3MzZkNjE2YzZjCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYucXVvcnVtX3NtYWxsIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0ODMKICAgIC8vIHNlbGYucXVvcnVtX21lZGl1bS52YWx1ZSwgICMgTm8gbG9uZ2VyIHVzZWQKICAgIGludGNfMSAvLyAwCiAgICBieXRlYyAyNiAvLyAweDcxNzU2ZjcyNzU2ZDVmNmQ2NTY0Njk3NTZkCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYucXVvcnVtX21lZGl1bSBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDg0CiAgICAvLyBzZWxmLnF1b3J1bV9sYXJnZS52YWx1ZSwKICAgIGludGNfMSAvLyAwCiAgICBieXRlYyAyNyAvLyAweDcxNzU2ZjcyNzU2ZDVmNmM2MTcyNjc2NQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnF1b3J1bV9sYXJnZSBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDgwLTQ4NgogICAgLy8gcXVvcnVtPUZpeGVkQXJyYXkoCiAgICAvLyAgICAgKAogICAgLy8gICAgICAgICBzZWxmLnF1b3J1bV9zbWFsbC52YWx1ZSwKICAgIC8vICAgICAgICAgc2VsZi5xdW9ydW1fbWVkaXVtLnZhbHVlLCAgIyBObyBsb25nZXIgdXNlZAogICAgLy8gICAgICAgICBzZWxmLnF1b3J1bV9sYXJnZS52YWx1ZSwKICAgIC8vICAgICApCiAgICAvLyApLAogICAgdW5jb3ZlciAyCiAgICBpdG9iCiAgICB1bmNvdmVyIDIKICAgIGl0b2IKICAgIGNvbmNhdAogICAgc3dhcAogICAgaXRvYgogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjQ4OQogICAgLy8gc2VsZi53ZWlnaHRlZF9xdW9ydW1fc21hbGwudmFsdWUsCiAgICBpbnRjXzEgLy8gMAogICAgYnl0ZWMgMjggLy8gMHg3NzY1Njk2NzY4NzQ2NTY0NWY3MTc1NmY3Mjc1NmQ1ZjczNmQ2MTZjNmMKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi53ZWlnaHRlZF9xdW9ydW1fc21hbGwgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjQ5MAogICAgLy8gc2VsZi53ZWlnaHRlZF9xdW9ydW1fbWVkaXVtLnZhbHVlLCAgIyBObyBsb25nZXIgdXNlZAogICAgaW50Y18xIC8vIDAKICAgIGJ5dGVjIDI5IC8vIDB4Nzc2NTY5Njc2ODc0NjU2NDVmNzE3NTZmNzI3NTZkNWY2ZDY1NjQ2OTc1NmQKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi53ZWlnaHRlZF9xdW9ydW1fbWVkaXVtIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0OTEKICAgIC8vIHNlbGYud2VpZ2h0ZWRfcXVvcnVtX2xhcmdlLnZhbHVlLAogICAgaW50Y18xIC8vIDAKICAgIGJ5dGVjIDMwIC8vIDB4Nzc2NTY5Njc2ODc0NjU2NDVmNzE3NTZmNzI3NTZkNWY2YzYxNzI2NzY1CiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYud2VpZ2h0ZWRfcXVvcnVtX2xhcmdlIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0ODctNDkzCiAgICAvLyB3ZWlnaHRlZF9xdW9ydW09Rml4ZWRBcnJheSgKICAgIC8vICAgICAoCiAgICAvLyAgICAgICAgIHNlbGYud2VpZ2h0ZWRfcXVvcnVtX3NtYWxsLnZhbHVlLAogICAgLy8gICAgICAgICBzZWxmLndlaWdodGVkX3F1b3J1bV9tZWRpdW0udmFsdWUsICAjIE5vIGxvbmdlciB1c2VkCiAgICAvLyAgICAgICAgIHNlbGYud2VpZ2h0ZWRfcXVvcnVtX2xhcmdlLnZhbHVlLAogICAgLy8gICAgICkKICAgIC8vICksCiAgICB1bmNvdmVyIDIKICAgIGl0b2IKICAgIHVuY292ZXIgMgogICAgaXRvYgogICAgY29uY2F0CiAgICBzd2FwCiAgICBpdG9iCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDk2CiAgICAvLyBjb21taXR0ZWVfaWQ9c2VsZi5jb21taXR0ZWVfaWQudmFsdWUuY29weSgpLAogICAgaW50Y18xIC8vIDAKICAgIGJ5dGVjIDggLy8gMHg2MzZmNmQ2ZDY5NzQ3NDY1NjU1ZjY5NjQKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5jb21taXR0ZWVfaWQgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjQ5NwogICAgLy8gY29tbWl0dGVlX21lbWJlcnM9c2VsZi5jb21taXR0ZWVfbWVtYmVycy52YWx1ZSwKICAgIGludGNfMSAvLyAwCiAgICBieXRlYyA5IC8vIDB4NjM2ZjZkNmQ2OTc0NzQ2NTY1NWY2ZDY1NmQ2MjY1NzI3MwogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmNvbW1pdHRlZV9tZW1iZXJzIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0OTgKICAgIC8vIGNvbW1pdHRlZV92b3Rlcz1zZWxmLmNvbW1pdHRlZV92b3Rlcy52YWx1ZSwKICAgIGludGNfMSAvLyAwCiAgICBieXRlYyAxMCAvLyAweDYzNmY2ZDZkNjk3NDc0NjU2NTVmNzY2Zjc0NjU3MwogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmNvbW1pdHRlZV92b3RlcyBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NDk5CiAgICAvLyBhYnNlbmNlX3RvbGVyYW5jZT1zZWxmLmFic2VuY2VfdG9sZXJhbmNlLnZhbHVlLAogICAgaW50Y18xIC8vIDAKICAgIGJ5dGVjIDMxIC8vIDB4NjE2MjczNjU2ZTYzNjU1Zjc0NmY2YzY1NzI2MTZlNjM2NQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFic2VuY2VfdG9sZXJhbmNlIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo1MDAKICAgIC8vIGdvdmVybmFuY2VfcGVyaW9kPXNlbGYuZ292ZXJuYW5jZV9wZXJpb2QudmFsdWUsCiAgICBpbnRjXzEgLy8gMAogICAgYnl0ZWMgMzIgLy8gMHg2NzZmNzY2NTcyNmU2MTZlNjM2NTVmNzA2NTcyNjk2ZjY0CiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuZ292ZXJuYW5jZV9wZXJpb2QgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjUwMQogICAgLy8gY29tbWl0dGVlX2dyYWNlX3BlcmlvZD1zZWxmLmNvbW1pdHRlZV9ncmFjZV9wZXJpb2QudmFsdWUsCiAgICBpbnRjXzEgLy8gMAogICAgYnl0ZWMgMzMgLy8gMHg2MzZmNmQ2ZDY5NzQ3NDY1NjU1ZjY3NzI2MTYzNjU1ZjcwNjU3MjY5NmY2NAogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmNvbW1pdHRlZV9ncmFjZV9wZXJpb2QgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjUwMgogICAgLy8gY29tbWl0dGVlX2xhc3RfYW5jaG9yPXNlbGYuY29tbWl0dGVlX2xhc3RfYW5jaG9yLnZhbHVlLAogICAgaW50Y18xIC8vIDAKICAgIGJ5dGVjIDM0IC8vIDB4NjM2ZjZkNmQ2OTc0NzQ2NTY1NWY2YzYxNzM3NDVmNjE2ZTYzNjg2ZjcyCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuY29tbWl0dGVlX2xhc3RfYW5jaG9yIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0NDEtNTAzCiAgICAvLyByZXR1cm4gdHlwLlR5cGVkR2xvYmFsU3RhdGUoCiAgICAvLyAgICAgcGF1c2VkX3JlZ2lzdHJ5PXNlbGYucGF1c2VkX3JlZ2lzdHJ5LnZhbHVlLAogICAgLy8gICAgIHBhdXNlZF9wcm9wb3NhbHM9c2VsZi5wYXVzZWRfcHJvcG9zYWxzLnZhbHVlLAogICAgLy8gICAgIHhnb3ZfbWFuYWdlcj1HbG9iYWwuemVyb19hZGRyZXNzLAogICAgLy8gICAgIHhnb3ZfcGF5b3I9R2xvYmFsLnplcm9fYWRkcmVzcywKICAgIC8vICAgICB4Z292X2NvdW5jaWw9c2VsZi54Z292X2NvdW5jaWwudmFsdWUsCiAgICAvLyAgICAgeGdvdl9zdWJzY3JpYmVyPUdsb2JhbC56ZXJvX2FkZHJlc3MsCiAgICAvLyAgICAga3ljX3Byb3ZpZGVyPUdsb2JhbC56ZXJvX2FkZHJlc3MsCiAgICAvLyAgICAgY29tbWl0dGVlX21hbmFnZXI9R2xvYmFsLnplcm9fYWRkcmVzcywKICAgIC8vICAgICB4Z292X2RhZW1vbj1zZWxmLnhnb3ZfZGFlbW9uLnZhbHVlLAogICAgLy8gICAgIHhnb3ZfZmVlPVVJbnQ2NCgwKSwKICAgIC8vICAgICBwcm9wb3Nlcl9mZWU9VUludDY0KDApLAogICAgLy8gICAgIG9wZW5fcHJvcG9zYWxfZmVlPXNlbGYub3Blbl9wcm9wb3NhbF9mZWUudmFsdWUsCiAgICAvLyAgICAgZGFlbW9uX29wc19mdW5kaW5nX2Jwcz1zZWxmLmRhZW1vbl9vcHNfZnVuZGluZ19icHMudmFsdWUsCiAgICAvLyAgICAgcHJvcG9zYWxfY29tbWl0bWVudF9icHM9c2VsZi5wcm9wb3NhbF9jb21taXRtZW50X2Jwcy52YWx1ZSwKICAgIC8vICAgICBtaW5fcmVxdWVzdGVkX2Ftb3VudD1zZWxmLm1pbl9yZXF1ZXN0ZWRfYW1vdW50LnZhbHVlLAogICAgLy8gICAgIG1heF9yZXF1ZXN0ZWRfYW1vdW50PUZpeGVkQXJyYXkoCiAgICAvLyAgICAgICAgICgKICAgIC8vICAgICAgICAgICAgIHNlbGYubWF4X3JlcXVlc3RlZF9hbW91bnRfc21hbGwudmFsdWUsCiAgICAvLyAgICAgICAgICAgICBzZWxmLm1heF9yZXF1ZXN0ZWRfYW1vdW50X21lZGl1bS52YWx1ZSwKICAgIC8vICAgICAgICAgICAgIHNlbGYubWF4X3JlcXVlc3RlZF9hbW91bnRfbGFyZ2UudmFsdWUsCiAgICAvLyAgICAgICAgICkKICAgIC8vICAgICApLAogICAgLy8gICAgIGRpc2N1c3Npb25fZHVyYXRpb249Rml4ZWRBcnJheSgKICAgIC8vICAgICAgICAgKAogICAgLy8gICAgICAgICAgICAgc2VsZi5kaXNjdXNzaW9uX2R1cmF0aW9uX3NtYWxsLnZhbHVlLAogICAgLy8gICAgICAgICAgICAgc2VsZi5kaXNjdXNzaW9uX2R1cmF0aW9uX21lZGl1bS52YWx1ZSwKICAgIC8vICAgICAgICAgICAgIHNlbGYuZGlzY3Vzc2lvbl9kdXJhdGlvbl9sYXJnZS52YWx1ZSwKICAgIC8vICAgICAgICAgICAgIHNlbGYuZGlzY3Vzc2lvbl9kdXJhdGlvbl94bGFyZ2UudmFsdWUsCiAgICAvLyAgICAgICAgICkKICAgIC8vICAgICApLAogICAgLy8gICAgIHZvdGluZ19kdXJhdGlvbj1GaXhlZEFycmF5KAogICAgLy8gICAgICAgICAoCiAgICAvLyAgICAgICAgICAgICBzZWxmLnZvdGluZ19kdXJhdGlvbl9zbWFsbC52YWx1ZSwKICAgIC8vICAgICAgICAgICAgIHNlbGYudm90aW5nX2R1cmF0aW9uX21lZGl1bS52YWx1ZSwKICAgIC8vICAgICAgICAgICAgIHNlbGYudm90aW5nX2R1cmF0aW9uX2xhcmdlLnZhbHVlLAogICAgLy8gICAgICAgICAgICAgc2VsZi52b3RpbmdfZHVyYXRpb25feGxhcmdlLnZhbHVlLAogICAgLy8gICAgICAgICApCiAgICAvLyAgICAgKSwKICAgIC8vICAgICBxdW9ydW09Rml4ZWRBcnJheSgKICAgIC8vICAgICAgICAgKAogICAgLy8gICAgICAgICAgICAgc2VsZi5xdW9ydW1fc21hbGwudmFsdWUsCiAgICAvLyAgICAgICAgICAgICBzZWxmLnF1b3J1bV9tZWRpdW0udmFsdWUsICAjIE5vIGxvbmdlciB1c2VkCiAgICAvLyAgICAgICAgICAgICBzZWxmLnF1b3J1bV9sYXJnZS52YWx1ZSwKICAgIC8vICAgICAgICAgKQogICAgLy8gICAgICksCiAgICAvLyAgICAgd2VpZ2h0ZWRfcXVvcnVtPUZpeGVkQXJyYXkoCiAgICAvLyAgICAgICAgICgKICAgIC8vICAgICAgICAgICAgIHNlbGYud2VpZ2h0ZWRfcXVvcnVtX3NtYWxsLnZhbHVlLAogICAgLy8gICAgICAgICAgICAgc2VsZi53ZWlnaHRlZF9xdW9ydW1fbWVkaXVtLnZhbHVlLCAgIyBObyBsb25nZXIgdXNlZAogICAgLy8gICAgICAgICAgICAgc2VsZi53ZWlnaHRlZF9xdW9ydW1fbGFyZ2UudmFsdWUsCiAgICAvLyAgICAgICAgICkKICAgIC8vICAgICApLAogICAgLy8gICAgIG91dHN0YW5kaW5nX2Z1bmRzPVVJbnQ2NCgwKSwKICAgIC8vICAgICBwZW5kaW5nX3Byb3Bvc2Fscz1VSW50NjQoMCksCiAgICAvLyAgICAgY29tbWl0dGVlX2lkPXNlbGYuY29tbWl0dGVlX2lkLnZhbHVlLmNvcHkoKSwKICAgIC8vICAgICBjb21taXR0ZWVfbWVtYmVycz1zZWxmLmNvbW1pdHRlZV9tZW1iZXJzLnZhbHVlLAogICAgLy8gICAgIGNvbW1pdHRlZV92b3Rlcz1zZWxmLmNvbW1pdHRlZV92b3Rlcy52YWx1ZSwKICAgIC8vICAgICBhYnNlbmNlX3RvbGVyYW5jZT1zZWxmLmFic2VuY2VfdG9sZXJhbmNlLnZhbHVlLAogICAgLy8gICAgIGdvdmVybmFuY2VfcGVyaW9kPXNlbGYuZ292ZXJuYW5jZV9wZXJpb2QudmFsdWUsCiAgICAvLyAgICAgY29tbWl0dGVlX2dyYWNlX3BlcmlvZD1zZWxmLmNvbW1pdHRlZV9ncmFjZV9wZXJpb2QudmFsdWUsCiAgICAvLyAgICAgY29tbWl0dGVlX2xhc3RfYW5jaG9yPXNlbGYuY29tbWl0dGVlX2xhc3RfYW5jaG9yLnZhbHVlLAogICAgLy8gKQogICAgcHVzaGJ5dGVzIDB4MDAKICAgIGludGNfMSAvLyAwCiAgICB1bmNvdmVyIDI2CiAgICBzZXRiaXQKICAgIGludGNfMCAvLyAxCiAgICB1bmNvdmVyIDI1CiAgICBzZXRiaXQKICAgIHVuY292ZXIgMjMKICAgIGNvbmNhdAogICAgdW5jb3ZlciAyMgogICAgY29uY2F0CiAgICB1bmNvdmVyIDIxCiAgICBjb25jYXQKICAgIHVuY292ZXIgMjAKICAgIGNvbmNhdAogICAgdW5jb3ZlciAxOQogICAgY29uY2F0CiAgICB1bmNvdmVyIDE4CiAgICBjb25jYXQKICAgIHVuY292ZXIgMTcKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo0NTEKICAgIC8vIHhnb3ZfZmVlPVVJbnQ2NCgwKSwKICAgIGludGNfMSAvLyAwCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjQ0MS01MDMKICAgIC8vIHJldHVybiB0eXAuVHlwZWRHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBwYXVzZWRfcmVnaXN0cnk9c2VsZi5wYXVzZWRfcmVnaXN0cnkudmFsdWUsCiAgICAvLyAgICAgcGF1c2VkX3Byb3Bvc2Fscz1zZWxmLnBhdXNlZF9wcm9wb3NhbHMudmFsdWUsCiAgICAvLyAgICAgeGdvdl9tYW5hZ2VyPUdsb2JhbC56ZXJvX2FkZHJlc3MsCiAgICAvLyAgICAgeGdvdl9wYXlvcj1HbG9iYWwuemVyb19hZGRyZXNzLAogICAgLy8gICAgIHhnb3ZfY291bmNpbD1zZWxmLnhnb3ZfY291bmNpbC52YWx1ZSwKICAgIC8vICAgICB4Z292X3N1YnNjcmliZXI9R2xvYmFsLnplcm9fYWRkcmVzcywKICAgIC8vICAgICBreWNfcHJvdmlkZXI9R2xvYmFsLnplcm9fYWRkcmVzcywKICAgIC8vICAgICBjb21taXR0ZWVfbWFuYWdlcj1HbG9iYWwuemVyb19hZGRyZXNzLAogICAgLy8gICAgIHhnb3ZfZGFlbW9uPXNlbGYueGdvdl9kYWVtb24udmFsdWUsCiAgICAvLyAgICAgeGdvdl9mZWU9VUludDY0KDApLAogICAgLy8gICAgIHByb3Bvc2VyX2ZlZT1VSW50NjQoMCksCiAgICAvLyAgICAgb3Blbl9wcm9wb3NhbF9mZWU9c2VsZi5vcGVuX3Byb3Bvc2FsX2ZlZS52YWx1ZSwKICAgIC8vICAgICBkYWVtb25fb3BzX2Z1bmRpbmdfYnBzPXNlbGYuZGFlbW9uX29wc19mdW5kaW5nX2Jwcy52YWx1ZSwKICAgIC8vICAgICBwcm9wb3NhbF9jb21taXRtZW50X2Jwcz1zZWxmLnByb3Bvc2FsX2NvbW1pdG1lbnRfYnBzLnZhbHVlLAogICAgLy8gICAgIG1pbl9yZXF1ZXN0ZWRfYW1vdW50PXNlbGYubWluX3JlcXVlc3RlZF9hbW91bnQudmFsdWUsCiAgICAvLyAgICAgbWF4X3JlcXVlc3RlZF9hbW91bnQ9Rml4ZWRBcnJheSgKICAgIC8vICAgICAgICAgKAogICAgLy8gICAgICAgICAgICAgc2VsZi5tYXhfcmVxdWVzdGVkX2Ftb3VudF9zbWFsbC52YWx1ZSwKICAgIC8vICAgICAgICAgICAgIHNlbGYubWF4X3JlcXVlc3RlZF9hbW91bnRfbWVkaXVtLnZhbHVlLAogICAgLy8gICAgICAgICAgICAgc2VsZi5tYXhfcmVxdWVzdGVkX2Ftb3VudF9sYXJnZS52YWx1ZSwKICAgIC8vICAgICAgICAgKQogICAgLy8gICAgICksCiAgICAvLyAgICAgZGlzY3Vzc2lvbl9kdXJhdGlvbj1GaXhlZEFycmF5KAogICAgLy8gICAgICAgICAoCiAgICAvLyAgICAgICAgICAgICBzZWxmLmRpc2N1c3Npb25fZHVyYXRpb25fc21hbGwudmFsdWUsCiAgICAvLyAgICAgICAgICAgICBzZWxmLmRpc2N1c3Npb25fZHVyYXRpb25fbWVkaXVtLnZhbHVlLAogICAgLy8gICAgICAgICAgICAgc2VsZi5kaXNjdXNzaW9uX2R1cmF0aW9uX2xhcmdlLnZhbHVlLAogICAgLy8gICAgICAgICAgICAgc2VsZi5kaXNjdXNzaW9uX2R1cmF0aW9uX3hsYXJnZS52YWx1ZSwKICAgIC8vICAgICAgICAgKQogICAgLy8gICAgICksCiAgICAvLyAgICAgdm90aW5nX2R1cmF0aW9uPUZpeGVkQXJyYXkoCiAgICAvLyAgICAgICAgICgKICAgIC8vICAgICAgICAgICAgIHNlbGYudm90aW5nX2R1cmF0aW9uX3NtYWxsLnZhbHVlLAogICAgLy8gICAgICAgICAgICAgc2VsZi52b3RpbmdfZHVyYXRpb25fbWVkaXVtLnZhbHVlLAogICAgLy8gICAgICAgICAgICAgc2VsZi52b3RpbmdfZHVyYXRpb25fbGFyZ2UudmFsdWUsCiAgICAvLyAgICAgICAgICAgICBzZWxmLnZvdGluZ19kdXJhdGlvbl94bGFyZ2UudmFsdWUsCiAgICAvLyAgICAgICAgICkKICAgIC8vICAgICApLAogICAgLy8gICAgIHF1b3J1bT1GaXhlZEFycmF5KAogICAgLy8gICAgICAgICAoCiAgICAvLyAgICAgICAgICAgICBzZWxmLnF1b3J1bV9zbWFsbC52YWx1ZSwKICAgIC8vICAgICAgICAgICAgIHNlbGYucXVvcnVtX21lZGl1bS52YWx1ZSwgICMgTm8gbG9uZ2VyIHVzZWQKICAgIC8vICAgICAgICAgICAgIHNlbGYucXVvcnVtX2xhcmdlLnZhbHVlLAogICAgLy8gICAgICAgICApCiAgICAvLyAgICAgKSwKICAgIC8vICAgICB3ZWlnaHRlZF9xdW9ydW09Rml4ZWRBcnJheSgKICAgIC8vICAgICAgICAgKAogICAgLy8gICAgICAgICAgICAgc2VsZi53ZWlnaHRlZF9xdW9ydW1fc21hbGwudmFsdWUsCiAgICAvLyAgICAgICAgICAgICBzZWxmLndlaWdodGVkX3F1b3J1bV9tZWRpdW0udmFsdWUsICAjIE5vIGxvbmdlciB1c2VkCiAgICAvLyAgICAgICAgICAgICBzZWxmLndlaWdodGVkX3F1b3J1bV9sYXJnZS52YWx1ZSwKICAgIC8vICAgICAgICAgKQogICAgLy8gICAgICksCiAgICAvLyAgICAgb3V0c3RhbmRpbmdfZnVuZHM9VUludDY0KDApLAogICAgLy8gICAgIHBlbmRpbmdfcHJvcG9zYWxzPVVJbnQ2NCgwKSwKICAgIC8vICAgICBjb21taXR0ZWVfaWQ9c2VsZi5jb21taXR0ZWVfaWQudmFsdWUuY29weSgpLAogICAgLy8gICAgIGNvbW1pdHRlZV9tZW1iZXJzPXNlbGYuY29tbWl0dGVlX21lbWJlcnMudmFsdWUsCiAgICAvLyAgICAgY29tbWl0dGVlX3ZvdGVzPXNlbGYuY29tbWl0dGVlX3ZvdGVzLnZhbHVlLAogICAgLy8gICAgIGFic2VuY2VfdG9sZXJhbmNlPXNlbGYuYWJzZW5jZV90b2xlcmFuY2UudmFsdWUsCiAgICAvLyAgICAgZ292ZXJuYW5jZV9wZXJpb2Q9c2VsZi5nb3Zlcm5hbmNlX3BlcmlvZC52YWx1ZSwKICAgIC8vICAgICBjb21taXR0ZWVfZ3JhY2VfcGVyaW9kPXNlbGYuY29tbWl0dGVlX2dyYWNlX3BlcmlvZC52YWx1ZSwKICAgIC8vICAgICBjb21taXR0ZWVfbGFzdF9hbmNob3I9c2VsZi5jb21taXR0ZWVfbGFzdF9hbmNob3IudmFsdWUsCiAgICAvLyApCiAgICBpdG9iCiAgICBzd2FwCiAgICBkaWcgMQogICAgY29uY2F0CiAgICBkaWcgMQogICAgY29uY2F0CiAgICB1bmNvdmVyIDE3CiAgICBpdG9iCiAgICBjb25jYXQKICAgIHVuY292ZXIgMTYKICAgIGl0b2IKICAgIGNvbmNhdAogICAgdW5jb3ZlciAxNQogICAgaXRvYgogICAgY29uY2F0CiAgICB1bmNvdmVyIDE0CiAgICBpdG9iCiAgICBjb25jYXQKICAgIHVuY292ZXIgMTMKICAgIGNvbmNhdAogICAgdW5jb3ZlciAxMgogICAgY29uY2F0CiAgICB1bmNvdmVyIDExCiAgICBjb25jYXQKICAgIHVuY292ZXIgMTAKICAgIGNvbmNhdAogICAgdW5jb3ZlciA5CiAgICBjb25jYXQKICAgIGRpZyAxCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgdW5jb3ZlciA3CiAgICBjb25jYXQKICAgIHVuY292ZXIgNgogICAgaXRvYgogICAgY29uY2F0CiAgICB1bmNvdmVyIDUKICAgIGl0b2IKICAgIGNvbmNhdAogICAgdW5jb3ZlciA0CiAgICBpdG9iCiAgICBjb25jYXQKICAgIHVuY292ZXIgMwogICAgaXRvYgogICAgY29uY2F0CiAgICB1bmNvdmVyIDIKICAgIGl0b2IKICAgIGNvbmNhdAogICAgc3dhcAogICAgaXRvYgogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjQzOQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnhnb3ZfcmVnaXN0cnlfbW9jay5jb250cmFjdC5YZ292UmVnaXN0cnlNb2NrLmdldF94Z292X2JveFtyb3V0aW5nXSgpIC0+IHZvaWQ6CmdldF94Z292X2JveDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NTA1CiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGxlbgogICAgaW50Y18zIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIHB1c2hieXRlcyBiYXNlMzIoQ1VQWFk1SUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEpCiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMueGdvdl9yZWdpc3RyeV9tb2NrLmNvbnRyYWN0Llhnb3ZSZWdpc3RyeU1vY2suZ2V0X3Byb3Bvc2VyX2JveFtyb3V0aW5nXSgpIC0+IHZvaWQ6CmdldF9wcm9wb3Nlcl9ib3g6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjUxNwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBsZW4KICAgIGludGNfMyAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICBwdXNoYnl0ZXMgMHgxNTFmN2M3NTAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMueGdvdl9yZWdpc3RyeV9tb2NrLmNvbnRyYWN0Llhnb3ZSZWdpc3RyeU1vY2suZ2V0X3JlcXVlc3RfYm94W3JvdXRpbmddKCkgLT4gdm9pZDoKZ2V0X3JlcXVlc3RfYm94OgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo1MzIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ5dGVjIDM5IC8vIGJhc2UzMihDVVBYWTVJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBKQogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnhnb3ZfcmVnaXN0cnlfbW9jay5jb250cmFjdC5YZ292UmVnaXN0cnlNb2NrLmdldF9yZXF1ZXN0X3Vuc3Vic2NyaWJlX2JveFtyb3V0aW5nXSgpIC0+IHZvaWQ6CmdldF9yZXF1ZXN0X3Vuc3Vic2NyaWJlX2JveDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NTQ3CiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGxlbgogICAgaW50Y18yIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBieXRlYyAzOSAvLyBiYXNlMzIoQ1VQWFk1SUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSkKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy54Z292X3JlZ2lzdHJ5X21vY2suY29udHJhY3QuWGdvdlJlZ2lzdHJ5TW9jay5pc19wcm9wb3NhbFtyb3V0aW5nXSgpIC0+IHZvaWQ6CmlzX3Byb3Bvc2FsOgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo1NjAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy54Z292X3JlZ2lzdHJ5X21vY2suY29udHJhY3QuWGdvdlJlZ2lzdHJ5TW9jay5jcmVhdGVfZW1wdHlfcHJvcG9zYWxbcm91dGluZ10oKSAtPiB2b2lkOgpjcmVhdGVfZW1wdHlfcHJvcG9zYWw6CiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjU2NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzMgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PGFyYzQudWludDgsIDMyPgogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo1NzAKICAgIC8vIG1icl9iZWZvcmUgPSBHbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzLm1pbl9iYWxhbmNlCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwogICAgYWNjdF9wYXJhbXNfZ2V0IEFjY3RNaW5CYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBmdW5kZWQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NTcxLTU3NAogICAgLy8gcmVzID0gYXJjNC5hcmM0X2NyZWF0ZSgKICAgIC8vICAgICBQcm9wb3NhbCwKICAgIC8vICAgICBwcm9wb3NlciwKICAgIC8vICkKICAgIGl0eG5fYmVnaW4KICAgIHB1c2hpbnQgMjcKICAgIGl0eG5fZmllbGQgR2xvYmFsTnVtVWludAogICAgcHVzaGludCAzCiAgICBpdHhuX2ZpZWxkIEdsb2JhbE51bUJ5dGVTbGljZQogICAgcHVzaGludCAyCiAgICBpdHhuX2ZpZWxkIEV4dHJhUHJvZ3JhbVBhZ2VzCiAgICBwdXNoYnl0ZXMgYmFzZTY0KENvRUJRdz09KQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICBwdXNoYnl0ZXMgYmFzZTY0KENpQUZBQUVnQ3BCT0ppa0djM1JoZEhWekFBbG1hVzVoYkdsNlpXUUljSEp2Y0c5elpYSVBjbVZuYVhOMGNubGZZWEJ3WDJsa0VHRnpjMmxuYm1Wa1gyMWxiV0psY25NTmRtOTBaV1JmYldWdFltVnljd2xoY0hCeWIzWmhiSE1LY21WcVpXTjBhVzl1Y3dGTkJCVWZmSFVSWTI5dGJXbDBkR1ZsWDIxbGJXSmxjbk1RY21WeGRXVnpkR1ZrWDJGdGIzVnVkQkZpYjNsamIzUjBaV1JmYldWdFltVnljd1Z1ZFd4c2N3OWpiMjF0YVhSMFpXVmZkbTkwWlhNUVpuVnVaR2x1WjE5allYUmxaMjl5ZVE1aGMzTnBaMjVsWkY5MmIzUmxjd0ZXQVFBTmJHOWphMlZrWDJGdGIzVnVkQkJ4ZFc5eWRXMWZkR2h5WlhOb2IyeGtHWGRsYVdkb2RHVmtYM0YxYjNKMWJWOTBhSEpsYzJodmJHUW1SVkpTT2xkeWIyNW5JRkJ5YjNCdmMyRnNJRk4wWVhSMWN5QnZjaUJtYVc1aGJHbDZaV1FNWTI5dGJXbDBkR1ZsWDJsa0VXOXdaVzVmY0hKdmNHOXpZV3hmWm1WbEhHUmhaVzF2Ymw5dmNHVnlZWFJwYjI1ZlpuVnVaR2x1WjE5aWNITU9iM0JsYmw5MGFXMWxjM1JoYlhBV2RtOTBaVjl2Y0dWdWFXNW5YM1JwYldWemRHRnRjQXhtZFc1a2FXNW5YM1I1Y0dVUGRtOTBhVzVuWDJSMWNtRjBhVzl1RDNCaGRYTmxaRjl5WldkcGMzUnllUlJ6ZFdKdGFYTnphVzl1WDNScGJXVnpkR0Z0Y0JGdFpYUmhaR0YwWVY5MWNHeHZZV1JsWkFWMGFYUnNaUVZtYjJOMWN4TmthWE5qZFhOemFXOXVYMlIxY21GMGFXOXVGRzFwYmw5eVpYRjFaWE4wWldSZllXMXZkVzUwR20xaGVGOXlaWEYxWlhOMFpXUmZZVzF2ZFc1MFgyeGhjbWRsQzNobmIzWmZaR0ZsYlc5dUUwVlNVanBXYjNSbGNpQnViM1FnWm05MWJtUXhHRUFBaWpFMWdRTVNSREUwZ1JzU1JERTNGRVF4TmhSRUt6SURaeWNFSW1jbkdDbG5Kd3NpWnljUEltY25HU0puSnhvaVp5Y2JJbWNuSUNKbkp4d2laeWdpWnlvaVp5Y2hJbWNuSWlsbkp4QWlaeWNqSW1jbkhTSm5Kd3dpWnljVUltY25KQ0puSng0aVp5Y1ZJbWNuRmlKbkp3VWlaeWNSSW1jbkJpSm5KdzBpWnljSEltY25DQ0puSnc0aVo0QUVKRGVOUERZYUFJNEJBSkV4R1JSRU1SaEJBSHFDRUFUdHJybktCSEZEbVU4RWMzRXlHZ1EwNWhQS0JBMmFzTmNFR0VHZzBnUnpUYjdNQkhiL1RIQUVJUzJmQndTS1hreUFCQ3JCbXdVRWdDQnB0QVMyU2VoMEJDUmhYNUFFTnB4Q3VnVGIyRDNaTmhvQWpoQUFYd04rQTlVRUZ3UmNCVndIUFFlb0NERUltd2pOQ1UwS0tRc0NDekFBQVFBalE0QUV6R2xPcWpZYUFJNEJBQTBBTVJtQkJSSXhHQkJFUWdudE5ob0JTUlVrRWtReURVUXJUR2NuQkRJTlp5Y1lpQXVtSnhoTVp5Y0xpQXVRSnd0TVp5Y1BpQXVISnc5TVp5Y1ppQXQrSnhsTVp5Y2FpQXQxSnhwTVp5TkRNUllqQ1VrNEVDTVNSRFlhQVVraVdZRUNDRXNCRlJKRVZ3SUFOaG9DU1JXQkNCSkVGellhQTBrVmdRZ1NSQmMyR2dSSlRnTVZJeEpFSngrSUN6RVVSSWdMazBRaUtHVkVRQUxRSWlwbFJFQUN5U05FU3dOSkZZRjdEa1FwRTBSTEFTVVNRQUFJU3dHQkZCSkJBcWtqUkNjbGlBcjZKeWFJQ3ZWTEFrbE9BazhERDBSTEFROUVnQmR3Y205d2IzTmhiRjlqYjIxdGFYUnRaVzUwWDJKd2M0Z0t6RXNCQ3lFRUNrOEdTVGdBSWl0bFJCSkVTVGdITWdvU1JEZ0lTVTRERWtRbklrOEdaNEFhYldGNFgzSmxjWFZsYzNSbFpGOWhiVzkxYm5SZmMyMWhiR3lJQ29tQUcyMWhlRjl5WlhGMVpYTjBaV1JmWVcxdmRXNTBYMjFsWkdsMWJZZ0thVTRDRGtFQiswZ2xKeEJNWnljZFR3Tm5Kd3hQQW1kTUZ5Y2pUR2NuRkV4bklpY1FaVXhKVHdKRVNVUWlKd3hsUkVRbEVrRUJna2lBR1dScGMyTjFjM05wYjI1ZlpIVnlZWFJwYjI1ZmMyMWhiR3lJQ2hRbkpFeG5JaWNRWlV4SlR3SkVKUkpCQVJCSWdCVjJiM1JwYm1kZlpIVnlZWFJwYjI1ZmMyMWhiR3lJQ2VjbkhreG5nQXh4ZFc5eWRXMWZjMjFoYkd5SUNkS0FESEYxYjNKMWJWOXNZWEpuWllnSndVc0JDU2NsaUFtNUp5YUlDYlJMQVFraUp3eGxSRThDQ1U4Q0Mwd0tDQ0luQzJWRUN5RUVDaWNWVEdlQUZYZGxhV2RvZEdWa1gzRjFiM0oxYlY5emJXRnNiSWdKZklBVmQyVnBaMmgwWldSZmNYVnZjblZ0WDJ4aGNtZGxpQWxpU3dFSkp5V0lDVm9uSm9nSlZVc0JDU0luREdWRVR3SUpUd0lMVEFvSUlpY1BaVVFMSVFRS0p4Wk1aeWdsWnljYk1nZG5JaWNkWlVRV1NaT0JDQTVFVndjQklpY01aVVFpSnhCbFJCWkprNEVJRGtSWEJ3RXlCazhDRms4RFRGQlBBbEJNRmxDQUJFc1ZqWmhNVUxBalE0RVVFa0VBSG9BV2RtOTBhVzVuWDJSMWNtRjBhVzl1WDIxbFpHbDFiWWdJMFVMKzU0QVZkbTkwYVc1blgyUjFjbUYwYVc5dVgyeGhjbWRsaUFpMFF2N0tnUlFTUVFBaWdCcGthWE5qZFhOemFXOXVYMlIxY21GMGFXOXVYMjFsWkdsMWJZZ0lqRUwrZFlBWlpHbHpZM1Z6YzJsdmJsOWtkWEpoZEdsdmJsOXNZWEpuWllnSWEwTCtWRXNDRDBFQUJZRVVRdjM4Z1I1Qy9mY2lRdjFVSWtMOU5EWWFBVWtpV1lFQ0NFc0JGUkpFVndJQVNUWWFBa2tWSXhKRUlsTW5INGdJTHhSRWlBaDJUQlZKVGdKRUp5RWpaMEVBRDBnbkNieElKd204U0NjSlRMOGpReWNKdlVSSlR3SUlKd2xNMHljSlRFOEN1MEwvNllnSWMwUWlLR1ZFSlJOQUFBY2lLbVZFUVFBcUp4ZEpLUk5CQUE5SkZSWlhCZ0pNVUNjS1RGQ3dJME5JSWl0bFJJZ0lZQ2NKdkVncUkyY3BRdi9lS1VMLzFDY2ZpQWV5RkVTSUIva3lCeUluRzJWRUNTSW5KR1ZFRDBRaUp5RmxSRVFuSjRnSG9Fa1ZKQkpFSWljWlpVUWlKeHBsUkFzaEJBcUlDQU1vZ1JSbkp5QXlCMmNqUXlsSk5ob0JSd0lpV1VsT0FvRW9DNEVDQ0V3VkVrU0lCOGhFSWlobFJJRVVFa1F4RmtBQTBqSUVSUU1qUlFSTEEwc0RERUVBRFVzRFNZZ0g0eU1JUlFSQy8rc2lSUVJMQTBzQkRFRUFSVXNCVndJQVN3UkpUZ0tCS0F1QktGaEpWd0FnVENSYkp4SlBBbEJKdlVVQkZFUkxBVVJMQVJhL0lpY0ZaVVFqQ0NjRlRHY2lKeEZsUkFnbkVVeG5Jd2hGQkVML3N5SW5CV1ZFSWljTFpVUVNRUUJXSWljUlpVUWlKdzlsUkJKRUtJRVpaeklISnh4TEFXY2lKeDVsUkVzQkNDSW5GV1ZFRmttVEpBNUVWd1FFSWljV1pVUVdTWk1rRGtSWEJBUXlCazhFRms4RUZsQlBBMUJQQWxCTUZsQ0FCTnpyNGNWTVVMQWpReUtJQnlKQy8wTXBOaG9CU1JVa0VrUTJHZ0pKRllFSUVrUVhURFlhQTBrVmdRZ1NSQmRPQW9nR3pFUWlLR1ZFZ1JrVFFRR0xKeGRKS1JOQkFCVkZBVVVCUlFGSkZSWlhCZ0pNVUNjS1RGQ3dJME5JSnhKTEFWQkp2VVVCUUFFckp5aEpLUkpCQVJoSVNiNUVGMGxGQmlJbkJtVkVJd2duQmt4blN3TkxCWWdHSVVFQXhDSW5EV1ZFSXdnbkRVeG5JMDRFSWs4Q1N3YUlCdDVNU1JValN3RVBJMHNDVHdKTlRGSkpGU1FTUkU4Q0ZrbVRKQTVFVndRRVR3TVdTWk1rRGtSWEJBUlBBeFpKa3lRT1JGY0VCQ0luQm1WRUZrbVRKQTVFVndRRUlpY05aVVFXU1pNa0RrUlhCQVFpSndkbFJCWkpreVFPUkZjRUJDSW5DR1ZFRmttVEpBNUVWd1FFSWljT1pVUVdTWk1rRGtSWEJBUXlCazhKVHdsUVR3aFFUd2RRSnhNaVR3bFVVRThHVUU4RlVFOEVVRThEVUU4Q1VFd1dVSUFFcVJDS0dreFFzQ2xDL3ZzaVRnUkxCVXNEU1U0Q0NVc0ZTVTREQ1VsT0EwNERJaWNIWlVRSUp3ZE1aeUluQ0dWRUNDY0lUR2NpSnc1bFJBZ25Ea3huUXY4VVJRRkZBVVVCUlFGQy9ybEp2a1FYU1VVR1N3TkxCUWdNUVFBaVN3UkxBMHNGaUFUL1FBQVdnQkZGVWxJNlZtOTBaWE1nYVc1MllXeHBaRUwrcFNsQy9xR0lCTkJBQUI2QUdVVlNVanBXYjNScGJtY2dVR1Z5YVc5a0lFVjRjR2x5WldSQy9sTXBRdjVQSngrSUJJd1VSQ0lvWlVTQkdSSkVpQVNaUVFBR2lBUzVRUUJNSTBTSUJUUkJBRUNJQlVOQkFEcUlCVmhCQURRalNVRUFJU2lCSG1lSUJKWXlCaWNUSWs4RVZDTlBBMVJNRmxDQUJJdDRsUlJNVUxBalF5aUJLR2NpSzJWRWlBVExRdi9WSWtML3lTSkMvN0UyR2dGSEFpSlpTVTRDSkF1QkFnaE1GUkpFaUFTTlJDSW9aVVNCSGhKQUFBb2lLR1ZFZ1NnU1FRQUhJaXBsUkVFQVV5Y1hTU2tUUVFBUFNSVVdWd1lDVEZBbkNreFFzQ05EU0NKSlN3SU1RUUF1U3dKWEFnQkxBU1FMSkZoSlRnSW5Fa3hRU2IxRkFVQUFCMFlESnloQy84aStSQmRQQWt5SUJLb2pDRUwveTBncFF2KzFLVUwvcXpZYUFVa1ZJeEpFSWxOSk1RQ0FESGhuYjNaZlkyOTFibU5wYklnRGpFa1ZKQkpFRWtRaUtHVkVnUjRTUkNJbkJXVkVGRVJCQUNVb2dUeG5JaWNFWlVSeUNFU0lBL0V5QmljVElrOERWRXdXVUlBRXJ1Z1hHVXhRc0NOREtJRXRaeUlyWlVTSUE5QkMvOXlJQTYxRUlpaGxSSUV0RTBFQUlDY1hTU2tUUVFBUFNSVVdWd1lDVEZBbkNreFFzQ05EU0NpQk1tY3BRdi9vS1VMLzNpSkpLVWsyR2dGSEFpSlpTVTRDSkF1QkFnaE1GUkpFaUFOV1JDSW9aVVNCRkJKRU1SWkFBRkV5QkVVREkwVUVTd05MQXd4QkFBMUxBMG1JQTNFakNFVUVRdi9ySWtsTEFneEJBQ3RMQWxjQ0FFc0JKQXNrV0VsRkJ5Y1NURkJKUlFpOVJRRkJBQXRMQnI1RUYwc0dUSWdEamlNSVF2L09JME1paUFNeFF2L0VpQUw3UkNJcVpVUkFBQzRpS0dWRVFRQ25JaWhsUkNVVFFRQ2VJaWhsUklFeUUwRUFsQ0lvWlVTQlBCTkJBSW9pS0dWRWdTZ1RRUUNBSnhkSktSTkJBQTlKRlJaWEJnSk1VQ2NLVEZDd0kwTklJaWNGWlVSQkFET0FMa1ZTVWpwVWFHVnlaU0JoY21VZ2RtOTBaWEp6SUdGemMybG5ibVZrSUhSdklIUm9hWE1nY0hKdmNHOXpZV3hDLzdVaUtHVkVKUkpCQUFjaUsyVkVpQUovSWljRVpVUnlDRVF5Q25NQVJESUtjd0ZFQ1lnQ1ZTb2paeWxDLzRncFF2OStpQUl3UkNJcVpVUkVKd204U0NJbkJHVkVjZ2hFTWdwekFFU0lBaTBqUXlJclpVUWlKd1JsUkNJbkltVkVJaWNiWlVRaUp5QmxSQ0luSEdWRUlpaGxSQ0lxWlVRaUp4QmxSQ0luSTJWRUZrbVRnUWdPUkZjSEFTSW5IV1ZFSWljTVpVUWlKeFJsUkNJbkdHVkVJaWNMWlVRaUp3OWxSQ0luQm1WRUlpY05aVVFpSndkbFJDSW5DR1ZFSWljT1pVUlBFeFpQRkV4UVN4TVZGbGNHQWs4VVVFeUFBZ0RFVUU4VEZsQlBFaFpRVHhFV1VFOFFGbEFuRXlKUEVWUlFUdzRXVUU4TlVFOE1GbEJQQ3haUVR3b1dVRThKVUU4SUZsQlBCeFpRVHdZV1VFOEZGbEJQQkJaUVR3TVdVRThDRmxCTVVDY0tURkN3STBNMkdnRkpGU1FTUkNjU1RGQkp2VWxQQWtoQkFCTk12a1FYRmljVElrOERWRkFuQ2t4UXNDTkRSUUVpUXYvcklpY1ZaVVFXU1pNa0RrUlhCQVFpSnhabFJCWkpreVFPUkZjRUJDSW5CbVZFRmttVEpBNUVWd1FFSWljTlpVUVdTWk1rRGtSWEJBUWlKd2RsUkJaSmt5UU9SRmNFQkNJbkNHVkVGa21USkE1RVZ3UUVJaWNPWlVRV1NaTWtEa1JYQkFTSUFQeUlBUTZJQVNhSUFIQlBDazhLVUU4SlVFOElVRThIVUU4R1VFOEZVQ2NUSWs4R1ZDTlBCVlNCQWs4RVZJRURUd05VVUNjS1RGQ3dJME9LQVFFaUp3UmxSSXYvWlVTSmlnRUJJaWNFWlVTTC8yVkVpVElISWljY1pVUUpJaWNlWlVRT2lZb0RBWXYraS8wU1FRQUtpLytML1JKQkFBSWppU0tKSWljR1pVUWlKd3RsUkJLSmlBQVlSQ0lvWlVRbEVrRUFDaUlxWlVSQUFBTWpSSWtpUXYvNk1RQWlLMlZFRW9reEFDY25pUCtYU1JVa0VrUVNpVElOSWljRVpVUVNpWW9DQUxHTC83SUlpLzZ5QnlPeUVDS3lBYk9KaWdFQUlpY1VaVVNMLzB5SS85NG5GQ0puaVlvQkFBPT0pCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICBwdXNoYnl0ZXMgYmFzZTY0KGkvODRHRElJRWtTTC96a2FBRFlhQUJKRWlTSW5GV1ZFSWljR1pVUWlKdzFsUkFsTEFROFFpU0luRm1WRUlpY0haVVFpSndobFJBZ2lKdzVsUkFoTEFROFFpU0luQjJWRUlpY0laVVFOaVlvQ0FDY1NpLzVRU2IxRkFVU0wvMFFpSndWbFJDTUpKd1ZNWnlJbkVXVkVpLzhKSnhGTVo3eElpUT09KQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo1NzIKICAgIC8vIFByb3Bvc2FsLAogICAgcHVzaGJ5dGVzIDB4Y2M2OTRlYWEgLy8gbWV0aG9kICJjcmVhdGUoYWRkcmVzcyl2b2lkIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIHN3YXAKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjU3MS01NzQKICAgIC8vIHJlcyA9IGFyYzQuYXJjNF9jcmVhdGUoCiAgICAvLyAgICAgUHJvcG9zYWwsCiAgICAvLyAgICAgcHJvcG9zZXIsCiAgICAvLyApCiAgICBwdXNoaW50IDYgLy8gYXBwbAogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18xIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBDcmVhdGVkQXBwbGljYXRpb25JRAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo1NzUKICAgIC8vIG1icl9hZnRlciA9IEdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MubWluX2JhbGFuY2UKICAgIGdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCiAgICBhY2N0X3BhcmFtc19nZXQgQWNjdE1pbkJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IGZ1bmRlZAogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo1NzctNTgxCiAgICAvLyBpdHhuLlBheW1lbnQoCiAgICAvLyAgICAgcmVjZWl2ZXI9cmVzLmNyZWF0ZWRfYXBwLmFkZHJlc3MsCiAgICAvLyAgICAgYW1vdW50PXNlbGYub3Blbl9wcm9wb3NhbF9mZWUudmFsdWUgLSAobWJyX2FmdGVyIC0gbWJyX2JlZm9yZSksCiAgICAvLyAgICAgZmVlPTAsCiAgICAvLyApLnN1Ym1pdCgpCiAgICBpdHhuX2JlZ2luCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjU3OAogICAgLy8gcmVjZWl2ZXI9cmVzLmNyZWF0ZWRfYXBwLmFkZHJlc3MsCiAgICBkaWcgMQogICAgYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwogICAgYXNzZXJ0IC8vIGFwcGxpY2F0aW9uIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL3hnb3ZfcmVnaXN0cnlfbW9jay9jb250cmFjdC5weTo1NzkKICAgIC8vIGFtb3VudD1zZWxmLm9wZW5fcHJvcG9zYWxfZmVlLnZhbHVlIC0gKG1icl9hZnRlciAtIG1icl9iZWZvcmUpLAogICAgaW50Y18xIC8vIDAKICAgIGJ5dGVjIDcgLy8gMHg2ZjcwNjU2ZTVmNzA3MjZmNzA2ZjczNjE2YzVmNjY2NTY1CiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYub3Blbl9wcm9wb3NhbF9mZWUgZXhpc3RzCiAgICB1bmNvdmVyIDIKICAgIHVuY292ZXIgNAogICAgLQogICAgLQogICAgaXR4bl9maWVsZCBBbW91bnQKICAgIGl0eG5fZmllbGQgUmVjZWl2ZXIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NTc3CiAgICAvLyBpdHhuLlBheW1lbnQoCiAgICBpbnRjXzAgLy8gcGF5CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICAvLyBzbWFydF9jb250cmFjdHMveGdvdl9yZWdpc3RyeV9tb2NrL2NvbnRyYWN0LnB5OjU4MAogICAgLy8gZmVlPTAsCiAgICBpbnRjXzEgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NTc3LTU4MQogICAgLy8gaXR4bi5QYXltZW50KAogICAgLy8gICAgIHJlY2VpdmVyPXJlcy5jcmVhdGVkX2FwcC5hZGRyZXNzLAogICAgLy8gICAgIGFtb3VudD1zZWxmLm9wZW5fcHJvcG9zYWxfZmVlLnZhbHVlIC0gKG1icl9hZnRlciAtIG1icl9iZWZvcmUpLAogICAgLy8gICAgIGZlZT0wLAogICAgLy8gKS5zdWJtaXQoKQogICAgaXR4bl9zdWJtaXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy94Z292X3JlZ2lzdHJ5X21vY2svY29udHJhY3QucHk6NTY0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaXRvYgogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgo=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CiAHAQAIIIDfboDUkwGA9SQmKAQVH3x1Ildyb25nIFByb3Bvc2FsIFN0YXR1cyBvciBmaW5hbGl6ZWQERVJSOg9wYXVzZWRfcmVnaXN0cnkQcGF1c2VkX3Byb3Bvc2Fscwx4Z292X2NvdW5jaWwLeGdvdl9kYWVtb24Rb3Blbl9wcm9wb3NhbF9mZWUMY29tbWl0dGVlX2lkEWNvbW1pdHRlZV9tZW1iZXJzD2NvbW1pdHRlZV92b3RlcxxkYWVtb25fb3BlcmF0aW9uX2Z1bmRpbmdfYnBzF3Byb3Bvc2FsX2NvbW1pdG1lbnRfYnBzFG1pbl9yZXF1ZXN0ZWRfYW1vdW50Gm1heF9yZXF1ZXN0ZWRfYW1vdW50X3NtYWxsG21heF9yZXF1ZXN0ZWRfYW1vdW50X21lZGl1bRptYXhfcmVxdWVzdGVkX2Ftb3VudF9sYXJnZRlkaXNjdXNzaW9uX2R1cmF0aW9uX3NtYWxsGmRpc2N1c3Npb25fZHVyYXRpb25fbWVkaXVtGWRpc2N1c3Npb25fZHVyYXRpb25fbGFyZ2UaZGlzY3Vzc2lvbl9kdXJhdGlvbl94bGFyZ2UVdm90aW5nX2R1cmF0aW9uX3NtYWxsFnZvdGluZ19kdXJhdGlvbl9tZWRpdW0Vdm90aW5nX2R1cmF0aW9uX2xhcmdlFnZvdGluZ19kdXJhdGlvbl94bGFyZ2UMcXVvcnVtX3NtYWxsDXF1b3J1bV9tZWRpdW0McXVvcnVtX2xhcmdlFXdlaWdodGVkX3F1b3J1bV9zbWFsbBZ3ZWlnaHRlZF9xdW9ydW1fbWVkaXVtFXdlaWdodGVkX3F1b3J1bV9sYXJnZRFhYnNlbmNlX3RvbGVyYW5jZRFnb3Zlcm5hbmNlX3BlcmlvZBZjb21taXR0ZWVfZ3JhY2VfcGVyaW9kFWNvbW1pdHRlZV9sYXN0X2FuY2hvcgwVH3x1AAAAAAAAAAAMVW5hdXRob3JpemVkD1ZvdGVyIG5vdCBmb3VuZA5NaXNzaW5nIENvbmZpZ00VH3x1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEYQADYJwUyA2cnBjIDZysjZycEI2cnB4GAwtcvZycLgfQDZycM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", "clear": "CoEBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 10, "patch": 1 } }, "events": [], "templateVariables": {} }