0x608060405234801561000f575f80fd5b50600436106102f9575f3560e01c806384b0196e11610192578063b7b72899116100e8578063e3ee160e11610093578063e94bb2231161006e578063e94bb2231461072f578063edc41f6414610756578063ef55bec614610769575f80fd5b8063e3ee160e146106c8578063e7a324dc146106db578063e94a010214610702575f80fd5b8063d505accf116100c3578063d505accf14610664578063d916948714610677578063dd62ed3e1461069e575f80fd5b8063b7b728991461062b578063c3cda5201461063e578063cf09299514610651575f80fd5b80639fd5a6cf11610148578063a9059cbb11610123578063a9059cbb146105f2578063ac9ebbd014610605578063ace150a514610618575f80fd5b80639fd5a6cf146105a5578063a08cb48b146105b8578063a0cc6a68146105cb575f80fd5b806391ddadf41161017857806391ddadf41461056b57806395d89b411461058a5780639ab24eb014610592575f80fd5b806384b0196e1461053d57806388b7ab6314610558575f80fd5b806340c10f19116102525780635c19a95c116101fd57806377eea146116101d857806377eea146146104e45780637ecebe00146104f75780637f2eecc314610516575f80fd5b80635c19a95c146104ab5780635c7e5d5f146104be57806370a08231146104d1575f80fd5b8063532992c51161022d578063532992c514610472578063587cde1e146104855780635a049a7014610498575f80fd5b806340c10f19146104285780634bf5d7e91461043d5780634d6d744114610445575f80fd5b806330adf81f116102b25780633a46b1a81161028d5780633a46b1a8146103ef5780633cb1838f14610402578063406f84de14610415575f80fd5b806330adf81f14610387578063313ce567146103ae5780633644e515146103e7575f80fd5b80630d33fbbd116102e25780630d33fbbd1461033e57806318160ddd1461035e57806323b872dd14610374575f80fd5b806306fdde03146102fd578063095ea7b31461031b575b5f80fd5b61030561077c565b6040516103129190612b72565b60405180910390f35b61032e610329366004612ba5565b61080b565b6040519015158152602001610312565b61035161034c366004612bcf565b610821565b6040516103129190612c3b565b61036661087a565b604051908152602001610312565b61032e610382366004612c4d565b6108b0565b6103667f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6103d57f000000000000000000000000000000000000000000000000000000000000000681565b60405160ff9091168152602001610312565b6103666109a1565b6103666103fd366004612ba5565b6109fb565b610351610410366004612c8b565b610a43565b610366610423366004612ba5565b610a70565b61043b610436366004612ba5565b610a90565b005b610305610b0a565b61044d610b14565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610312565b61043b610480366004612cab565b610ba2565b61044d610493366004612ce3565b610bc7565b61043b6104a6366004612d13565b610bdd565b61043b6104b9366004612ce3565b610c04565b6103666104cc366004612d5f565b610c11565b6103666104df366004612ce3565b610c57565b61044d6104f2366004612ba5565b610c8f565b610366610505366004612ce3565b60016020525f908152604090205481565b6103667fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de881565b610545610cb3565b6040516103129796959493929190612d76565b61043b610566366004612ee0565b610deb565b610573610e1a565b60405165ffffffffffff9091168152602001610312565b610305610e2c565b6103666105a0366004612ce3565b610eb8565b61043b6105b3366004612f63565b610eca565b61043b6105c6366004612fd4565b610eda565b6103667f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226781565b61032e610600366004612ba5565b610f04565b610366610613366004612bcf565b610f10565b61043b610626366004612fd4565b610f1c565b61043b61063936600461303a565b610f3c565b61043b61064c36600461308f565b610f59565b61043b61065f366004612ee0565b610f93565b61043b6106723660046130e5565b610fb3565b6103667f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742981565b6103666106ac36600461314e565b600460209081525f928352604080842090915290825290205481565b61043b6106d6366004613185565b610fc3565b6103667fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b61032e610710366004612ba5565b600260209081525f928352604080842090915290825290205460ff1681565b61044d7f0000000000000000000000009fff4be0003d0716f37f8d2574e89f1a5d0745c881565b61043b610764366004612f63565b610fee565b61043b610777366004613185565b61101a565b60605f805461078a90613201565b80601f01602080910402602001604051908101604052809291908181526020018280546107b690613201565b80156108015780601f106107d857610100808354040283529160200191610801565b820191905f5260205f20905b8154815290600101906020018083116107e457829003601f168201915b5050505050905090565b5f610817338484611049565b5060015b92915050565b60605f61082d836110b6565b9050610838816110f7565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260066020526040902061086f90610869866110b6565b83611151565b9150505b9392505050565b5f61088b610886611349565b611352565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905090565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098b5782811015610956576040517f192b9e4e00000000000000000000000000000000000000000000000000000000815233600482015260248101829052604481018490526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85165f908152600460209081526040808320338452909152902083820390555b61099685858561135e565b506001949350505050565b5f7f000000000000000000000000000000000000000000000000000000000000000146146109d6576109d1611427565b905090565b507f2b9a47d9a1e96fa920a7687800b47b423d66096f0fd0497601b63ab71e1fcaa190565b5f80610a06836110b6565b9050610a11816110f7565b610a1b84826114c1565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16949350505050565b60605f610a4f836110b6565b9050610a5a816110f7565b610a686005610869866110b6565b949350505050565b5f80610a7b836110b6565b9050610a86816110f7565b610a1b84826114ef565b610a98610b14565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610afc576040517fe09ee43b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b06828261151d565b5050565b60606109d16115e3565b5f7f0000000000000000000000009fff4be0003d0716f37f8d2574e89f1a5d0745c873ffffffffffffffffffffffffffffffffffffffff1663585e78af6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b7e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d1919061324c565b610bb784610bb08686611603565b8484611677565b610bc1848461168b565b50505050565b5f61081b82610bd4611349565b61ffff16611719565b610bf385610beb8787611603565b8585856117fa565b610bfd858561168b565b5050505050565b610c0e338261180a565b50565b5f80610c1c836110b6565b9050610c27816110f7565b610c3081611352565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b5f610c6982610c64611349565b6114ef565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692915050565b5f80610c9a836110b6565b9050610ca5816110f7565b610a68848261ffff16611719565b5f606080828080838146308280604051908082528060200260200182016040528015610ce9578160200160208202803683370190505b507f0f000000000000000000000000000000000000000000000000000000000000009493929190848054610d1c90613201565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4890613201565b8015610d935780601f10610d6a57610100808354040283529160200191610d93565b820191905f5260205f20905b815481529060010190602001808311610d7657829003601f168201915b505050505094506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525093929190965096509650965096509650965090919293949596565b610e0387610dfd898989898989611875565b836118fc565b610e11878787878787611947565b50505050505050565b5f610e23611349565b61ffff16905090565b60038054610e3990613201565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6590613201565b8015610eb05780601f10610e8757610100808354040283529160200191610eb0565b820191905f5260205f20905b815481529060010190602001808311610e9357829003601f168201915b505050505081565b5f610c6982610ec5611349565b6114c1565b610bfd85610dfd878787876119ca565b610eec88610bb08a8a8a8a8a8a611875565b610efa888888888888611947565b5050505050505050565b5f61081733848461135e565b5f610a68848484611a70565b610f2e88610bb08a8a8a8a8a8a611ad4565b610efa888888888888611b50565b610f4a83610dfd8585611603565b610f54838361168b565b505050565b5f610f65878787611a70565b90505f610f7482868686611c69565b9050610f7f86611c8d565b610f898188611cd0565b610efa818961180a565b610fa587610dfd898989898989611ad4565b610e11878787878787611b50565b610e1187610beb898989896119ca565b610fd589610beb8b8b8b8b8b8b611ad4565b610fe3898989898989611b50565b505050505050505050565b610ff782611c8d565b61100685610dfd868686611a70565b6110108584611cd0565b610bfd858561180a565b61102c89610beb8b8b8b8b8b8b611875565b610fe3898989898989611947565b5f6108738284613294565b0190565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61ffff8211156110f3576040517f43e3c0d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5090565b5f611100611349565b90508061ffff168261ffff1610610b06576040517f6ef3d3ec00000000000000000000000000000000000000000000000000000000815261ffff80841660048301528216602482015260440161094d565b60608261ffff165f03611190576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff168361ffff1611156111d2576040517fe0ff148000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6111dd84846132d2565b6111e89060016132ed565b90508061ffff1667ffffffffffffffff81111561120757611207612e0c565b604051908082528060200260200182016040528015611230578160200160208202803683370190505b5085549092505b8015611340577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f61127287835f91825260209091200190565b805490915061ffff165b8561ffff16811161133957815485517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9590950194620100009091047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690869061ffff87169081106112ef576112ef613308565b6020026020010181815250508361ffff165f0361130f5750505050610873565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9095019461127c565b5050611237565b50509392505050565b5f6109d1611d41565b5f61081b600583611d69565b61136782611e36565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113c691815260200190565b60405180910390a35f6113d882611e9b565b90505f6113e3611349565b90506113ef8583611ef4565b611406611400868361ffff16611719565b83611f01565b6114108483611f0e565b610bfd611421858361ffff16611719565b83611f1b565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f6040516114599190613335565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526008602052604081206108739083611d69565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526006602052604081206108739083611d69565b61152682611e36565b805f03611562576040517f77b8dde30000000000000000000000000000000000000000000000000000000081526004810182905260240161094d565b60405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35f6115b982611e9b565b90506115c481611f28565b6115ce8382611f0e565b610f546115dd84610bd4611349565b82611f1b565b60606040518060a001604052806065815260200161351760659139905090565b604080517f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a1597429602082015273ffffffffffffffffffffffffffffffffffffffff841691810191909152606081018290525f90610873906080015b60405160208183030381529060405280519060200120611f36565b610bc161168685858585611f97565b611fd2565b6116958282612196565b73ffffffffffffffffffffffffffffffffffffffff82165f81815260026020908152604080832085845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518392917f1cdd46ff242716cdaa72d159d339a485b3438398348d68f09d7c8c0a59353d8191a35050565b5f815f03611753576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f90815260076020526040902080545b80156117f1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f6117b583835f91825260209091200190565b805490915061ffff1685106117eb575462010000900473ffffffffffffffffffffffffffffffffffffffff16925061081b915050565b5061177a565b50929392505050565b610bfd611686868686868661221f565b5f6118158284612267565b90505f6118228483612290565b90505f61183185610c64611349565b9050807dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff165f03611861575050505050565b61186b8282611f01565b610bfd8382611f1b565b604080517fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de8602082015273ffffffffffffffffffffffffffffffffffffffff8089169282019290925290861660608201526080810185905260a0810184905260c0810183905260e081018290525f906118f1906101000161165c565b979650505050505050565b5f6119088484846124f6565b90505f81600581111561191d5761191d61340a565b036119285750505050565b61193384848461253a565b1561193e5750505050565b610bc181611fd2565b3373ffffffffffffffffffffffffffffffffffffffff8616146119b4576040517f1c5939f300000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8616602482015260440161094d565b6119c2868686868686611b50565b505050505050565b5f6119d482611c8d565b6119df858585611049565b73ffffffffffffffffffffffffffffffffffffffff8581165f818152600160208181526040928390208054928301905582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918101919091529182019290925291861660608301526080820185905260a082015260c08101839052611a679060e00161165c565b95945050505050565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf602082015273ffffffffffffffffffffffffffffffffffffffff85169181019190915260608101839052608081018290525f90610a689060a00161165c565b604080517f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a2267602082015273ffffffffffffffffffffffffffffffffffffffff8089169282019290925290861660608201526080810185905260a0810184905260c0810183905260e081018290525f906118f1906101000161165c565b824211611b92576040517f498ff9a20000000000000000000000000000000000000000000000000000000081524260048201526024810184905260440161094d565b814210611bd4576040517fb3fcd33e0000000000000000000000000000000000000000000000000000000081524260048201526024810183905260440161094d565b611bde8682612196565b73ffffffffffffffffffffffffffffffffffffffff86165f81815260026020908152604080832085845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518392917f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a591a36119c286868661135e565b5f80611c7786868686612682565b92509050611c8481611fd2565b50949350505050565b80421115610c0e576040517ff88f04900000000000000000000000000000000000000000000000000000000081526004810182905242602482015260440161094d565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260016020819052604090912080549182019055818114610f54576040517fd021c557000000000000000000000000000000000000000000000000000000008152600481018390526024810182905260440161094d565b5f6213c680611d5463661bd35042613437565b611d5e919061344a565b6109d1906001613482565b5f8161ffff165f03611da7576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82545b8015611e2d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f611de585835f91825260209091200190565b805490915061ffff808616911611611e2757546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16915061081b9050565b50611daa565b505f9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116610c0e576040517f17858bbe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161094d565b5f7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156110f3576040517f2a49c10d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b068261278f8361279a565b610b068261278f836127c9565b610b06826110458361279a565b610b0682611045836127c9565b610f54600561103a83612879565b5f611f3f6109a1565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f805f611fa5868686612a39565b90925090505f826005811115611fbd57611fbd61340a565b14611fc857816118f1565b6118f18782612a80565b5f816005811115611fe557611fe561340a565b03611fed5750565b60018160058111156120015761200161340a565b03612038576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281600581111561204c5761204c61340a565b03612083576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038160058111156120975761209761340a565b036120ce576040517fbf4bf5b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60048160058111156120e2576120e261340a565b03612119576040517fff551e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600581600581111561212d5761212d61340a565b03612164576040517f10c74b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82165f90815260026020908152604080832084845290915290205460ff1615610b06576040517fd309466d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024810182905260440161094d565b5f805f61222e87878787612682565b90925090505f8260058111156122465761224661340a565b14612251578161225b565b61225b8882612a80565b98975050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff83161561228a5782610873565b50919050565b5f8061229a611349565b73ffffffffffffffffffffffffffffffffffffffff85165f908152600760205260408120805492935091908190036123865760408051808201825261ffff808616825273ffffffffffffffffffffffffffffffffffffffff80891660208085018281528854600181018a555f8a81529283209651960180549151851662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009092169690951695909517949094179092559251909289169182917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a485935050505061081b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f6123bb83835f91825260209091200190565b805460405173ffffffffffffffffffffffffffffffffffffffff62010000909204821697509192508781169187918a16907f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f905f90a4805461ffff90811690851611156124a8576040805180820190915261ffff808616825273ffffffffffffffffffffffffffffffffffffffff808916602080850191825287546001810189555f89815291909120945194018054915190921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000000090911693909216929092171790556124ec565b80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8816021781555b5050505092915050565b5f805f6125038585612ac3565b90925090505f82600581111561251b5761251b61340a565b146125265781612530565b6125308682612a80565b9695505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff168585604051602401612567929190613495565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e00000000000000000000000000000000000000000000000000000000179052516125e891906134ad565b5f60405180830381855afa9150503d805f8114612620576040519150601f19603f3d011682016040523d82523d5f602084013e612625565b606091505b509150915081801561263957506020815110155b8015612530575080517f1626ba7e000000000000000000000000000000000000000000000000000000009061267790830160209081019084016134c8565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156126b75750600390505f612786565b8460ff16601b141580156126cf57508460ff16601c14155b156126df5750600490505f612786565b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa15801561272f573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161561277d575f81612781565b60015f5b915091505b94509492505050565b5f61087382846134df565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600660205260409020610bfd908383612879565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260086020526040812081906127fa908585612879565b604080517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80851682528316602082015292945090925073ffffffffffffffffffffffffffffffffffffffff8716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b5f805f612884611349565b86549091505f819003612914578660405180604001604052808461ffff1681526020016128b55f898b63ffffffff16565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184555f938452602080852084519190940151909216620100000261ffff909216919091179101559350849250612a31915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f61294988835f91825260209091200190565b80546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1695509050612983858763ffffffff8a16565b815490945061ffff90811690841611156129fd576040805180820190915261ffff80851682527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80871660208085019182528c54600181018e555f8e815291909120945191519092166201000002921691909117910155612a2d565b805461ffff16620100007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8616021781555b5050505b935093915050565b5f80601b60ff84901c017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416612a7287838884612682565b935093505050935093915050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612abb576005610873565b505f92915050565b5f808251604114612ad95750600290505f612b00565b6020830151604084015160608501515f1a9190612af887848484612682565b945094505050505b9250929050565b5f5b83811015612b21578181015183820152602001612b09565b50505f910152565b5f8151808452612b40816020860160208601612b07565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f6108736020830184612b29565b73ffffffffffffffffffffffffffffffffffffffff81168114610c0e575f80fd5b5f8060408385031215612bb6575f80fd5b8235612bc181612b84565b946020939093013593505050565b5f805f60608486031215612be1575f80fd5b8335612bec81612b84565b95602085013595506040909401359392505050565b5f815180845260208085019450602084015f5b83811015612c3057815187529582019590820190600101612c14565b509495945050505050565b602081525f6108736020830184612c01565b5f805f60608486031215612c5f575f80fd5b8335612c6a81612b84565b92506020840135612c7a81612b84565b929592945050506040919091013590565b5f8060408385031215612c9c575f80fd5b50508035926020909101359150565b5f805f8060808587031215612cbe575f80fd5b8435612cc981612b84565b966020860135965060408601359560600135945092505050565b5f60208284031215612cf3575f80fd5b813561087381612b84565b803560ff81168114612d0e575f80fd5b919050565b5f805f805f60a08688031215612d27575f80fd5b8535612d3281612b84565b945060208601359350612d4760408701612cfe565b94979396509394606081013594506080013592915050565b5f60208284031215612d6f575f80fd5b5035919050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f612db060e0830189612b29565b8281036040840152612dc28189612b29565b905086606084015273ffffffffffffffffffffffffffffffffffffffff861660808401528460a084015282810360c0840152612dfe8185612c01565b9a9950505050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f830112612e48575f80fd5b813567ffffffffffffffff80821115612e6357612e63612e0c565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612ea957612ea9612e0c565b81604052838152866020858801011115612ec1575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f805f805f60e0888a031215612ef6575f80fd5b8735612f0181612b84565b96506020880135612f1181612b84565b955060408801359450606088013593506080880135925060a0880135915060c088013567ffffffffffffffff811115612f48575f80fd5b612f548a828b01612e39565b91505092959891949750929550565b5f805f805f60a08688031215612f77575f80fd5b8535612f8281612b84565b94506020860135612f9281612b84565b93506040860135925060608601359150608086013567ffffffffffffffff811115612fbb575f80fd5b612fc788828901612e39565b9150509295509295909350565b5f805f805f805f80610100898b031215612fec575f80fd5b8835612ff781612b84565b9750602089013561300781612b84565b979a9799505050506040860135956060810135956080820135955060a0820135945060c0820135935060e0909101359150565b5f805f6060848603121561304c575f80fd5b833561305781612b84565b925060208401359150604084013567ffffffffffffffff811115613079575f80fd5b61308586828701612e39565b9150509250925092565b5f805f805f8060c087890312156130a4575f80fd5b86356130af81612b84565b955060208701359450604087013593506130cb60608801612cfe565b92506080870135915060a087013590509295509295509295565b5f805f805f805f60e0888a0312156130fb575f80fd5b873561310681612b84565b9650602088013561311681612b84565b9550604088013594506060880135935061313260808901612cfe565b925060a0880135915060c0880135905092959891949750929550565b5f806040838503121561315f575f80fd5b823561316a81612b84565b9150602083013561317a81612b84565b809150509250929050565b5f805f805f805f805f6101208a8c03121561319e575f80fd5b89356131a981612b84565b985060208a01356131b981612b84565b975060408a0135965060608a0135955060808a0135945060a08a013593506131e360c08b01612cfe565b925060e08a013591506101008a013590509295985092959850929598565b600181811c9082168061321557607f821691505b60208210810361228a577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6020828403121561325c575f80fd5b815161087381612b84565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181168382160190808211156132cb576132cb613267565b5092915050565b61ffff8281168282160390808211156132cb576132cb613267565b61ffff8181168382160190808211156132cb576132cb613267565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8083545f60018260011c9150600183168061335257607f831692505b6020808410820361338a577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b81801561339e57600181146133d1576133fc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528415158502890196506133fc565b5f8a8152602090205f5b868110156133f45781548b8201529085019083016133db565b505084890196505b509498975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8181038181111561081b5761081b613267565b5f8261347d577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b8082018082111561081b5761081b613267565b828152604060208201525f610a686040830184612b29565b5f82516134be818460208701612b07565b9190910192915050565b5f602082840312156134d8575f80fd5b5051919050565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8281168282160390808211156132cb576132cb61326756fe6d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313731333039393630302665706f6368506572696f643d31323936303030a2646970667358221220ec4bfaca67cace12d617502d6dc02861dfc6d4b972ddd6969c16d79c23c3696464736f6c63430008170033
0x61010060405234801562000011575f80fd5b50604051620040a4380380620040a4833981016040819052620000349162000775565b6040518060400160405280600b81526020016a05a65726f206279204d5e360ac1b815250604051806040016040528060048152602001635a45524f60e01b8152506006828282828080805f90816200008d9190620008d4565b50466080526200009c6200018a565b60a0525060039150620000b290508382620008d4565b5060ff1660c052505050506001600160a01b03841660e08190529050620000ec576040516333927a8160e21b815260040160405180910390fd5b815181518082146200012057604051631f4bb7c160e31b815260048101839052602481018290526044015b60405180910390fd5b5f5b828110156200017e5762000175858281518110620001445762000144620009a0565b6020026020010151858381518110620001615762000161620009a0565b60200260200101516200022660201b60201c565b60010162000122565b50505050505062000ab8565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051620001be9190620009b4565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6200023182620002e4565b805f0362000256576040516377b8dde360e01b81526004810182905260240162000117565b6040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35f620002a2826200031b565b9050620002af8162000349565b620002bb838262000362565b620002df620002d884620002ce6200037e565b61ffff166200038e565b8262000426565b505050565b6001600160a01b0381166200031857604051630bc2c5df60e11b81526001600160a01b038216600482015260240162000117565b50565b5f6001600160f01b038211156200034557604051632a49c10d60e01b815260040160405180910390fd5b5090565b620002df60056200103a6200043e60201b178362000452565b6200037a82620010456200059b60201b17836200059f565b5050565b5f62000389620005ca565b905090565b5f815f03620003b057604051637d6ec40560e11b815260040160405180910390fd5b6001600160a01b0383165f90815260076020526040902080545b80156200041a575f19015f620003e883835f91825260209091200190565b805490915061ffff1685106200041357546201000090046001600160a01b0316925062000420915050565b50620003ca565b84925050505b92915050565b6200037a82620010456200059b60201b1783620005f8565b5f6200044b828462000a42565b9392505050565b5f80806200045f6200037e565b86549091505f819003620004d8578660405180604001604052808461ffff1681526020016200048f5f898b60201c565b6001600160f01b0390811690915282546001810184555f938452602080852084519190940151909216620100000261ffff90921691909117910155935084925062000593915050565b5f19015f620004ef88835f91825260209091200190565b80546201000090046001600160f01b03169550905062000511858760208a901c565b815490945061ffff908116908416111562000576576040805180820190915261ffff80851682526001600160f01b0380871660208085019182528c54600181018e555f8e8152919091209451915190921662010000029216919091179101556200058f565b805461ffff16620100006001600160f01b038616021781555b5050505b935093915050565b0190565b6001600160a01b0383165f908152600660205260409020620005c390838362000452565b5050505050565b5f6213c680620005df63661bd3504262000a6c565b620005eb919062000a82565b6200038990600162000aa2565b6001600160a01b0383165f90815260086020526040812081906200061e90858562000452565b604080516001600160f01b038085168252831660208201529294509092506001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b80516001600160a01b038116811462000690575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715620006d457620006d462000695565b604052919050565b5f6001600160401b03821115620006f757620006f762000695565b5060051b60200190565b5f82601f83011262000711575f80fd5b815160206200072a6200072483620006dc565b620006a9565b8083825260208201915060208460051b8701019350868411156200074c575f80fd5b602086015b848110156200076a578051835291830191830162000751565b509695505050505050565b5f805f6060848603121562000788575f80fd5b620007938462000679565b602085810151919450906001600160401b0380821115620007b2575f80fd5b818701915087601f830112620007c6575f80fd5b8151620007d76200072482620006dc565b81815260059190911b8301840190848101908a831115620007f6575f80fd5b938501935b828510156200081f576200080f8562000679565b82529385019390850190620007fb565b60408a0151909750945050508083111562000838575f80fd5b5050620008488682870162000701565b9150509250925092565b600181811c908216806200086757607f821691505b6020821081036200088657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620002df57805f5260205f20601f840160051c81016020851015620008b35750805b601f840160051c820191505b81811015620005c3575f8155600101620008bf565b81516001600160401b03811115620008f057620008f062000695565b620009088162000901845462000852565b846200088c565b602080601f8311600181146200093e575f8415620009265750858301515b5f19600386901b1c1916600185901b17855562000998565b5f85815260208120601f198616915b828110156200096e578886015182559484019460019091019084016200094d565b50858210156200098c57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f808354620009c38162000852565b60018281168015620009de5760018114620009f45762000a22565b60ff198416875282151583028701945062000a22565b875f526020805f205f5b8581101562000a195781548a820152908401908201620009fe565b50505082870194505b50929695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160f01b0381811683821601908082111562000a655762000a6562000a2e565b5092915050565b8181038181111562000420576200042062000a2e565b5f8262000a9d57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111562000420576200042062000a2e565b60805160a05160c05160e0516135b162000af35f395f81816107340152610b1701525f6103b301525f6109d901525f6109a401526135b15ff3fe608060405234801561000f575f80fd5b50600436106102f9575f3560e01c806384b0196e11610192578063b7b72899116100e8578063e3ee160e11610093578063e94bb2231161006e578063e94bb2231461072f578063edc41f6414610756578063ef55bec614610769575f80fd5b8063e3ee160e146106c8578063e7a324dc146106db578063e94a010214610702575f80fd5b8063d505accf116100c3578063d505accf14610664578063d916948714610677578063dd62ed3e1461069e575f80fd5b8063b7b728991461062b578063c3cda5201461063e578063cf09299514610651575f80fd5b80639fd5a6cf11610148578063a9059cbb11610123578063a9059cbb146105f2578063ac9ebbd014610605578063ace150a514610618575f80fd5b80639fd5a6cf146105a5578063a08cb48b146105b8578063a0cc6a68146105cb575f80fd5b806391ddadf41161017857806391ddadf41461056b57806395d89b411461058a5780639ab24eb014610592575f80fd5b806384b0196e1461053d57806388b7ab6314610558575f80fd5b806340c10f19116102525780635c19a95c116101fd57806377eea146116101d857806377eea146146104e45780637ecebe00146104f75780637f2eecc314610516575f80fd5b80635c19a95c146104ab5780635c7e5d5f146104be57806370a08231146104d1575f80fd5b8063532992c51161022d578063532992c514610472578063587cde1e146104855780635a049a7014610498575f80fd5b806340c10f19146104285780634bf5d7e91461043d5780634d6d744114610445575f80fd5b806330adf81f116102b25780633a46b1a81161028d5780633a46b1a8146103ef5780633cb1838f14610402578063406f84de14610415575f80fd5b806330adf81f14610387578063313ce567146103ae5780633644e515146103e7575f80fd5b80630d33fbbd116102e25780630d33fbbd1461033e57806318160ddd1461035e57806323b872dd14610374575f80fd5b806306fdde03146102fd578063095ea7b31461031b575b5f80fd5b61030561077c565b6040516103129190612b72565b60405180910390f35b61032e610329366004612ba5565b61080b565b6040519015158152602001610312565b61035161034c366004612bcf565b610821565b6040516103129190612c3b565b61036661087a565b604051908152602001610312565b61032e610382366004612c4d565b6108b0565b6103667f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610312565b6103666109a1565b6103666103fd366004612ba5565b6109fb565b610351610410366004612c8b565b610a43565b610366610423366004612ba5565b610a70565b61043b610436366004612ba5565b610a90565b005b610305610b0a565b61044d610b14565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610312565b61043b610480366004612cab565b610ba2565b61044d610493366004612ce3565b610bc7565b61043b6104a6366004612d13565b610bdd565b61043b6104b9366004612ce3565b610c04565b6103666104cc366004612d5f565b610c11565b6103666104df366004612ce3565b610c57565b61044d6104f2366004612ba5565b610c8f565b610366610505366004612ce3565b60016020525f908152604090205481565b6103667fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de881565b610545610cb3565b6040516103129796959493929190612d76565b61043b610566366004612ee0565b610deb565b610573610e1a565b60405165ffffffffffff9091168152602001610312565b610305610e2c565b6103666105a0366004612ce3565b610eb8565b61043b6105b3366004612f63565b610eca565b61043b6105c6366004612fd4565b610eda565b6103667f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226781565b61032e610600366004612ba5565b610f04565b610366610613366004612bcf565b610f10565b61043b610626366004612fd4565b610f1c565b61043b61063936600461303a565b610f3c565b61043b61064c36600461308f565b610f59565b61043b61065f366004612ee0565b610f93565b61043b6106723660046130e5565b610fb3565b6103667f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742981565b6103666106ac36600461314e565b600460209081525f928352604080842090915290825290205481565b61043b6106d6366004613185565b610fc3565b6103667fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b61032e610710366004612ba5565b600260209081525f928352604080842090915290825290205460ff1681565b61044d7f000000000000000000000000000000000000000000000000000000000000000081565b61043b610764366004612f63565b610fee565b61043b610777366004613185565b61101a565b60605f805461078a90613201565b80601f01602080910402602001604051908101604052809291908181526020018280546107b690613201565b80156108015780601f106107d857610100808354040283529160200191610801565b820191905f5260205f20905b8154815290600101906020018083116107e457829003601f168201915b5050505050905090565b5f610817338484611049565b5060015b92915050565b60605f61082d836110b6565b9050610838816110f7565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260066020526040902061086f90610869866110b6565b83611151565b9150505b9392505050565b5f61088b610886611349565b611352565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905090565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098b5782811015610956576040517f192b9e4e00000000000000000000000000000000000000000000000000000000815233600482015260248101829052604481018490526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85165f908152600460209081526040808320338452909152902083820390555b61099685858561135e565b506001949350505050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146109d6576109d1611427565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f80610a06836110b6565b9050610a11816110f7565b610a1b84826114c1565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16949350505050565b60605f610a4f836110b6565b9050610a5a816110f7565b610a686005610869866110b6565b949350505050565b5f80610a7b836110b6565b9050610a86816110f7565b610a1b84826114ef565b610a98610b14565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610afc576040517fe09ee43b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b06828261151d565b5050565b60606109d16115e3565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663585e78af6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b7e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d1919061324c565b610bb784610bb08686611603565b8484611677565b610bc1848461168b565b50505050565b5f61081b82610bd4611349565b61ffff16611719565b610bf385610beb8787611603565b8585856117fa565b610bfd858561168b565b5050505050565b610c0e338261180a565b50565b5f80610c1c836110b6565b9050610c27816110f7565b610c3081611352565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b5f610c6982610c64611349565b6114ef565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692915050565b5f80610c9a836110b6565b9050610ca5816110f7565b610a68848261ffff16611719565b5f606080828080838146308280604051908082528060200260200182016040528015610ce9578160200160208202803683370190505b507f0f000000000000000000000000000000000000000000000000000000000000009493929190848054610d1c90613201565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4890613201565b8015610d935780601f10610d6a57610100808354040283529160200191610d93565b820191905f5260205f20905b815481529060010190602001808311610d7657829003601f168201915b505050505094506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525093929190965096509650965096509650965090919293949596565b610e0387610dfd898989898989611875565b836118fc565b610e11878787878787611947565b50505050505050565b5f610e23611349565b61ffff16905090565b60038054610e3990613201565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6590613201565b8015610eb05780601f10610e8757610100808354040283529160200191610eb0565b820191905f5260205f20905b815481529060010190602001808311610e9357829003601f168201915b505050505081565b5f610c6982610ec5611349565b6114c1565b610bfd85610dfd878787876119ca565b610eec88610bb08a8a8a8a8a8a611875565b610efa888888888888611947565b5050505050505050565b5f61081733848461135e565b5f610a68848484611a70565b610f2e88610bb08a8a8a8a8a8a611ad4565b610efa888888888888611b50565b610f4a83610dfd8585611603565b610f54838361168b565b505050565b5f610f65878787611a70565b90505f610f7482868686611c69565b9050610f7f86611c8d565b610f898188611cd0565b610efa818961180a565b610fa587610dfd898989898989611ad4565b610e11878787878787611b50565b610e1187610beb898989896119ca565b610fd589610beb8b8b8b8b8b8b611ad4565b610fe3898989898989611b50565b505050505050505050565b610ff782611c8d565b61100685610dfd868686611a70565b6110108584611cd0565b610bfd858561180a565b61102c89610beb8b8b8b8b8b8b611875565b610fe3898989898989611947565b5f6108738284613294565b0190565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61ffff8211156110f3576040517f43e3c0d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5090565b5f611100611349565b90508061ffff168261ffff1610610b06576040517f6ef3d3ec00000000000000000000000000000000000000000000000000000000815261ffff80841660048301528216602482015260440161094d565b60608261ffff165f03611190576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff168361ffff1611156111d2576040517fe0ff148000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6111dd84846132d2565b6111e89060016132ed565b90508061ffff1667ffffffffffffffff81111561120757611207612e0c565b604051908082528060200260200182016040528015611230578160200160208202803683370190505b5085549092505b8015611340577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f61127287835f91825260209091200190565b805490915061ffff165b8561ffff16811161133957815485517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9590950194620100009091047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690869061ffff87169081106112ef576112ef613308565b6020026020010181815250508361ffff165f0361130f5750505050610873565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9095019461127c565b5050611237565b50509392505050565b5f6109d1611d41565b5f61081b600583611d69565b61136782611e36565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113c691815260200190565b60405180910390a35f6113d882611e9b565b90505f6113e3611349565b90506113ef8583611ef4565b611406611400868361ffff16611719565b83611f01565b6114108483611f0e565b610bfd611421858361ffff16611719565b83611f1b565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f6040516114599190613335565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526008602052604081206108739083611d69565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526006602052604081206108739083611d69565b61152682611e36565b805f03611562576040517f77b8dde30000000000000000000000000000000000000000000000000000000081526004810182905260240161094d565b60405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35f6115b982611e9b565b90506115c481611f28565b6115ce8382611f0e565b610f546115dd84610bd4611349565b82611f1b565b60606040518060a001604052806065815260200161351760659139905090565b604080517f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a1597429602082015273ffffffffffffffffffffffffffffffffffffffff841691810191909152606081018290525f90610873906080015b60405160208183030381529060405280519060200120611f36565b610bc161168685858585611f97565b611fd2565b6116958282612196565b73ffffffffffffffffffffffffffffffffffffffff82165f81815260026020908152604080832085845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518392917f1cdd46ff242716cdaa72d159d339a485b3438398348d68f09d7c8c0a59353d8191a35050565b5f815f03611753576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f90815260076020526040902080545b80156117f1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f6117b583835f91825260209091200190565b805490915061ffff1685106117eb575462010000900473ffffffffffffffffffffffffffffffffffffffff16925061081b915050565b5061177a565b50929392505050565b610bfd611686868686868661221f565b5f6118158284612267565b90505f6118228483612290565b90505f61183185610c64611349565b9050807dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff165f03611861575050505050565b61186b8282611f01565b610bfd8382611f1b565b604080517fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de8602082015273ffffffffffffffffffffffffffffffffffffffff8089169282019290925290861660608201526080810185905260a0810184905260c0810183905260e081018290525f906118f1906101000161165c565b979650505050505050565b5f6119088484846124f6565b90505f81600581111561191d5761191d61340a565b036119285750505050565b61193384848461253a565b1561193e5750505050565b610bc181611fd2565b3373ffffffffffffffffffffffffffffffffffffffff8616146119b4576040517f1c5939f300000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8616602482015260440161094d565b6119c2868686868686611b50565b505050505050565b5f6119d482611c8d565b6119df858585611049565b73ffffffffffffffffffffffffffffffffffffffff8581165f818152600160208181526040928390208054928301905582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918101919091529182019290925291861660608301526080820185905260a082015260c08101839052611a679060e00161165c565b95945050505050565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf602082015273ffffffffffffffffffffffffffffffffffffffff85169181019190915260608101839052608081018290525f90610a689060a00161165c565b604080517f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a2267602082015273ffffffffffffffffffffffffffffffffffffffff8089169282019290925290861660608201526080810185905260a0810184905260c0810183905260e081018290525f906118f1906101000161165c565b824211611b92576040517f498ff9a20000000000000000000000000000000000000000000000000000000081524260048201526024810184905260440161094d565b814210611bd4576040517fb3fcd33e0000000000000000000000000000000000000000000000000000000081524260048201526024810183905260440161094d565b611bde8682612196565b73ffffffffffffffffffffffffffffffffffffffff86165f81815260026020908152604080832085845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518392917f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a591a36119c286868661135e565b5f80611c7786868686612682565b92509050611c8481611fd2565b50949350505050565b80421115610c0e576040517ff88f04900000000000000000000000000000000000000000000000000000000081526004810182905242602482015260440161094d565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260016020819052604090912080549182019055818114610f54576040517fd021c557000000000000000000000000000000000000000000000000000000008152600481018390526024810182905260440161094d565b5f6213c680611d5463661bd35042613437565b611d5e919061344a565b6109d1906001613482565b5f8161ffff165f03611da7576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82545b8015611e2d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f611de585835f91825260209091200190565b805490915061ffff808616911611611e2757546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16915061081b9050565b50611daa565b505f9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116610c0e576040517f17858bbe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161094d565b5f7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156110f3576040517f2a49c10d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b068261278f8361279a565b610b068261278f836127c9565b610b06826110458361279a565b610b0682611045836127c9565b610f54600561103a83612879565b5f611f3f6109a1565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f805f611fa5868686612a39565b90925090505f826005811115611fbd57611fbd61340a565b14611fc857816118f1565b6118f18782612a80565b5f816005811115611fe557611fe561340a565b03611fed5750565b60018160058111156120015761200161340a565b03612038576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281600581111561204c5761204c61340a565b03612083576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038160058111156120975761209761340a565b036120ce576040517fbf4bf5b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60048160058111156120e2576120e261340a565b03612119576040517fff551e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600581600581111561212d5761212d61340a565b03612164576040517f10c74b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82165f90815260026020908152604080832084845290915290205460ff1615610b06576040517fd309466d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024810182905260440161094d565b5f805f61222e87878787612682565b90925090505f8260058111156122465761224661340a565b14612251578161225b565b61225b8882612a80565b98975050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff83161561228a5782610873565b50919050565b5f8061229a611349565b73ffffffffffffffffffffffffffffffffffffffff85165f908152600760205260408120805492935091908190036123865760408051808201825261ffff808616825273ffffffffffffffffffffffffffffffffffffffff80891660208085018281528854600181018a555f8a81529283209651960180549151851662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009092169690951695909517949094179092559251909289169182917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a485935050505061081b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f6123bb83835f91825260209091200190565b805460405173ffffffffffffffffffffffffffffffffffffffff62010000909204821697509192508781169187918a16907f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f905f90a4805461ffff90811690851611156124a8576040805180820190915261ffff808616825273ffffffffffffffffffffffffffffffffffffffff808916602080850191825287546001810189555f89815291909120945194018054915190921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000000090911693909216929092171790556124ec565b80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8816021781555b5050505092915050565b5f805f6125038585612ac3565b90925090505f82600581111561251b5761251b61340a565b146125265781612530565b6125308682612a80565b9695505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff168585604051602401612567929190613495565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e00000000000000000000000000000000000000000000000000000000179052516125e891906134ad565b5f60405180830381855afa9150503d805f8114612620576040519150601f19603f3d011682016040523d82523d5f602084013e612625565b606091505b509150915081801561263957506020815110155b8015612530575080517f1626ba7e000000000000000000000000000000000000000000000000000000009061267790830160209081019084016134c8565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156126b75750600390505f612786565b8460ff16601b141580156126cf57508460ff16601c14155b156126df5750600490505f612786565b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa15801561272f573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161561277d575f81612781565b60015f5b915091505b94509492505050565b5f61087382846134df565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600660205260409020610bfd908383612879565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260086020526040812081906127fa908585612879565b604080517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80851682528316602082015292945090925073ffffffffffffffffffffffffffffffffffffffff8716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b5f805f612884611349565b86549091505f819003612914578660405180604001604052808461ffff1681526020016128b55f898b63ffffffff16565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184555f938452602080852084519190940151909216620100000261ffff909216919091179101559350849250612a31915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f61294988835f91825260209091200190565b80546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1695509050612983858763ffffffff8a16565b815490945061ffff90811690841611156129fd576040805180820190915261ffff80851682527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80871660208085019182528c54600181018e555f8e815291909120945191519092166201000002921691909117910155612a2d565b805461ffff16620100007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8616021781555b5050505b935093915050565b5f80601b60ff84901c017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416612a7287838884612682565b935093505050935093915050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612abb576005610873565b505f92915050565b5f808251604114612ad95750600290505f612b00565b6020830151604084015160608501515f1a9190612af887848484612682565b945094505050505b9250929050565b5f5b83811015612b21578181015183820152602001612b09565b50505f910152565b5f8151808452612b40816020860160208601612b07565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f6108736020830184612b29565b73ffffffffffffffffffffffffffffffffffffffff81168114610c0e575f80fd5b5f8060408385031215612bb6575f80fd5b8235612bc181612b84565b946020939093013593505050565b5f805f60608486031215612be1575f80fd5b8335612bec81612b84565b95602085013595506040909401359392505050565b5f815180845260208085019450602084015f5b83811015612c3057815187529582019590820190600101612c14565b509495945050505050565b602081525f6108736020830184612c01565b5f805f60608486031215612c5f575f80fd5b8335612c6a81612b84565b92506020840135612c7a81612b84565b929592945050506040919091013590565b5f8060408385031215612c9c575f80fd5b50508035926020909101359150565b5f805f8060808587031215612cbe575f80fd5b8435612cc981612b84565b966020860135965060408601359560600135945092505050565b5f60208284031215612cf3575f80fd5b813561087381612b84565b803560ff81168114612d0e575f80fd5b919050565b5f805f805f60a08688031215612d27575f80fd5b8535612d3281612b84565b945060208601359350612d4760408701612cfe565b94979396509394606081013594506080013592915050565b5f60208284031215612d6f575f80fd5b5035919050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f612db060e0830189612b29565b8281036040840152612dc28189612b29565b905086606084015273ffffffffffffffffffffffffffffffffffffffff861660808401528460a084015282810360c0840152612dfe8185612c01565b9a9950505050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f830112612e48575f80fd5b813567ffffffffffffffff80821115612e6357612e63612e0c565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612ea957612ea9612e0c565b81604052838152866020858801011115612ec1575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f805f805f60e0888a031215612ef6575f80fd5b8735612f0181612b84565b96506020880135612f1181612b84565b955060408801359450606088013593506080880135925060a0880135915060c088013567ffffffffffffffff811115612f48575f80fd5b612f548a828b01612e39565b91505092959891949750929550565b5f805f805f60a08688031215612f77575f80fd5b8535612f8281612b84565b94506020860135612f9281612b84565b93506040860135925060608601359150608086013567ffffffffffffffff811115612fbb575f80fd5b612fc788828901612e39565b9150509295509295909350565b5f805f805f805f80610100898b031215612fec575f80fd5b8835612ff781612b84565b9750602089013561300781612b84565b979a9799505050506040860135956060810135956080820135955060a0820135945060c0820135935060e0909101359150565b5f805f6060848603121561304c575f80fd5b833561305781612b84565b925060208401359150604084013567ffffffffffffffff811115613079575f80fd5b61308586828701612e39565b9150509250925092565b5f805f805f8060c087890312156130a4575f80fd5b86356130af81612b84565b955060208701359450604087013593506130cb60608801612cfe565b92506080870135915060a087013590509295509295509295565b5f805f805f805f60e0888a0312156130fb575f80fd5b873561310681612b84565b9650602088013561311681612b84565b9550604088013594506060880135935061313260808901612cfe565b925060a0880135915060c0880135905092959891949750929550565b5f806040838503121561315f575f80fd5b823561316a81612b84565b9150602083013561317a81612b84565b809150509250929050565b5f805f805f805f805f6101208a8c03121561319e575f80fd5b89356131a981612b84565b985060208a01356131b981612b84565b975060408a0135965060608a0135955060808a0135945060a08a013593506131e360c08b01612cfe565b925060e08a013591506101008a013590509295985092959850929598565b600181811c9082168061321557607f821691505b60208210810361228a577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6020828403121561325c575f80fd5b815161087381612b84565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181168382160190808211156132cb576132cb613267565b5092915050565b61ffff8281168282160390808211156132cb576132cb613267565b61ffff8181168382160190808211156132cb576132cb613267565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8083545f60018260011c9150600183168061335257607f831692505b6020808410820361338a577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b81801561339e57600181146133d1576133fc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528415158502890196506133fc565b5f8a8152602090205f5b868110156133f45781548b8201529085019083016133db565b505084890196505b509498975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8181038181111561081b5761081b613267565b5f8261347d577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b8082018082111561081b5761081b613267565b828152604060208201525f610a686040830184612b29565b5f82516134be818460208701612b07565b9190910192915050565b5f602082840312156134d8575f80fd5b5051919050565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8281168282160390808211156132cb576132cb61326756fe6d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313731333039393630302665706f6368506572696f643d31323936303030a2646970667358221220ec4bfaca67cace12d617502d6dc02861dfc6d4b972ddd6969c16d79c23c3696464736f6c634300081700330000000000000000000000009fff4be0003d0716f37f8d2574e89f1a5d0745c800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000b400000000000000000000000000000000000000000000000000000000000000056000000000000000000000000333c9430c42ca172ccf744c139107f9fdad0c44b000000000000000000000000ab36309a87fc548f5e4b40e1b1f326feb5ee7772000000000000000000000000333c9430c42ca172ccf744c139107f9fdad0c44b000000000000000000000000ab36309a87fc548f5e4b40e1b1f326feb5ee7772000000000000000000000000707354c03f29c327027a85a7b5d656659c74d41400000000000000000000000068c29cdb852196f0b000e08695b0fd8d66a2ed6d0000000000000000000000000d2063d4c8007d597a88016f9196cdb3fa06ca9600000000000000000000000084d34c7839a6751a3ab0eebe616b3bf73194bace00000000000000000000000084d34c7839a6751a3ab0eebe616b3bf73194bace0000000000000000000000000eaeed79102fd7510cacb87a3c960b6a79689806000000000000000000000000e158da50d6d53fde91663c593e3a20b9f44a5aa300000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c6000000000000000000000000a0c865618efb3c9af63fa60e4440b32a3723009e00000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c60000000000000000000000002223ed3a3e38e04182be9400393449b3ec5eab56000000000000000000000000a25ea37c36f724e4c0ee7dd215ff1d3093a1c602000000000000000000000000ec8280257b1b43c4ec33d961fb330506eec80b5400000000000000000000000036513366146c133608696a8bca5b84f14ed1319200000000000000000000000075c97e183d309b945cd71e872519cd827f4a81d30000000000000000000000003fa21fd164aba0753c79ca4072429917a9079c2200000000000000000000000048a9f30c4b619aed265e145666abe572a1b2730500000000000000000000000050b4961b1a56bc3c02e193bd7121239f8bcb0cfc000000000000000000000000ce9858e62ae3f8e2555c59e42089f383c0388cc0000000000000000000000000ccf38089f288c31fe3633b592c7a36cf9d471bd400000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c6000000000000000000000000faf266939b7599ce7a9be806c39e73d82e90ba11000000000000000000000000408505ec4bb812b9b649a653390a7b683cea3d540000000000000000000000007f8aa300e8d505aeb32acdf110a786a3a8f0c6ce0000000000000000000000002b74d94bf2a2bb0c09cc02d6d9a1be37a5a8a420000000000000000000000000f17009ed9d1af2e7e52c069c7058d57c425deb2c0000000000000000000000004005239c0afa457805d0c11c07d6b401c28d96a100000000000000000000000019ffc27932daa19b10ccff8b7fcc233b7f6a661e000000000000000000000000afa858d9fd87e5e24823b040dcbae1aeb4d9afd00000000000000000000000005b8f182646af4959e2aa0c289c963b482244968e000000000000000000000000125db22579a0e0515810b02b603d837950acea84000000000000000000000000c07f3487573c41e46d2c095b5cea99c40b42565d0000000000000000000000005ee98ab5f82386f98d021eea633c2c3c91d585a4000000000000000000000000119144c125310f020d38b963101c6a2d85769bd30000000000000000000000006e556ded4d18a290c8144ea0df69a1bd72077d87000000000000000000000000f9fb6d5628c2e40692d801a80b6a70443514b3d70000000000000000000000005efca4e542b9aeaabde027c71bcf7258c22be5e3000000000000000000000000c989825d62cebfdc51cf14f86ba4966771784795000000000000000000000000cf7f91cd9f2eb8157e0cc6fec4881042f3301c000000000000000000000000009cf028e052bf47824b7bebde609f031690aaf5ea00000000000000000000000024b388aa696a6409a57051e1dc469c7a26adf5c60000000000000000000000004739845330da016e268a883d3a0db9a4f2271f46000000000000000000000000459b51dcd5c53873391a278d8271fdb698b21a90000000000000000000000000d1cd6afe15b536c43a3240a372f47401330086870000000000000000000000009d8ecaf6e18d1e22e856a6331d2ab095052dea840000000000000000000000006187e730381cb82af6d91b642378e61a370e8f1f0000000000000000000000009591166b8dc800edb6a982137bf64121b46aea9e0000000000000000000000003b13d2e37ae6cc877ac05d778761c51377f1424c000000000000000000000000bed8faa0740ea5f5e5fa0aa2645aad8433f7e20f000000000000000000000000bb65b21e72be9d01a6f34173076d74797fa5186700000000000000000000000065c82d14325888ffbd2a8d9a58df32159d7758ce0000000000000000000000009e65c80d33b992e63364dbabecbd39c43619d0a1000000000000000000000000c3c34bcf8779551fdc43f73a2c2ff217279ae1fd000000000000000000000000a806cadca8e84fb85fe4e7af28fa06eda19dbcd900000000000000000000000000ecafb8ad59e0e18ae0e8f2254979f7850aac7f000000000000000000000000d70804463bb2760c3384fc87bbe779e3d91bab3a000000000000000000000000d0fea07a3545be25ef26d99e2d7d968482963d86000000000000000000000000ea657724abd147f848f57f2e33cbd7fc2c9fbb2100000000000000000000000040cfbc8f85fc37790bbe1be1fab3bfd9933013ee0000000000000000000000008da0916d04f567e29c0a563722a96e32fece08c20000000000000000000000008beaab8ad0f3a294351ec83255cbfb631e0de466000000000000000000000000085841edbd2925e9be53151de647a3879fc6cc2c000000000000000000000000b948abd79390e0a35aea051ea9981e1a0d730fd60000000000000000000000000000000000000000000000000000000000000056000000000000000000000000000000000000000000000000000009184e72a000000000000000000000000000000000000000000000000000000009184e72a00000000000000000000000000000000000000000000000000000005700c05df6c000000000000000000000000000000000000000000000000000005700c05df6c0000000000000000000000000000000000000000000000000000072c19b9cd040000000000000000000000000000000000000000000000000000072c19b9cd040000000000000000000000000000000000000000000000000000074f9234e1b0000000000000000000000000000000000000000000000000000000e4afb733440000000000000000000000000000000000000000000000000000001d85aaf4680000000000000000000000000000000000000000000000000000007e214889a20000000000000000000000000000000000000000000000000000007e214889a200000000000000000000000000000000000000000000000000000023197cc6260000000000000000000000000000000000000000000000000000002b580c2cbc0000000000000000000000000000000000000000000000000000003a2743781a0000000000000000000000000000000000000000000000000000002459975b440000000000000000000000000000000000000000000000000000000549e79395a0000000000000000000000000000000000000000000000000000007d1e316744000000000000000000000000000000000000000000000000000000961cce7b1c00000000000000000000000000000000000000000000000000000042ade29006000000000000000000000000000000000000000000000000000001d440d521700000000000000000000000000000000000000000000000000000013ed2add4c00000000000000000000000000000000000000000000000000000015eadeb6df80000000000000000000000000000000000000000000000000000012c74fd50d800000000000000000000000000000000000000000000000000000ced078ace0000000000000000000000000000000000000000000000000000000d4a9a7abad8000000000000000000000000000000000000000000000000000008aa48e2626000000000000000000000000000000000000000000000000000000f5cdb1fa3a000000000000000000000000000000000000000000000000000000cb6276480b800000000000000000000000000000000000000000000000000000861a55b565800000000000000000000000000000000000000000000000000000b44165a501800000000000000000000000000000000000000000000000000001bf7567e74800000000000000000000000000000000000000000000000000000184dadf40980000000000000000000000000000000000000000000000000000011f82a586e000000000000000000000000000000000000000000000000000000084d97f638c0000000000000000000000000000000000000000000000000000002b2e7f494c0000000000000000000000000000000000000000000000000000001ca4107028000000000000000000000000000000000000000000000000000000074536f280000000000000000000000000000000000000000000000000000000046802acf8000000000000000000000000000000000000000000000000000000023401567c00000000000000000000000000000000000000000000000000000003866828b800000000000000000000000000000000000000000000000000000031921cabb000000000000000000000000000000000000000000000000000000003becec9c800000000000000000000000000000000000000000000000000000002dd3539ac0000000000000000000000000000000000000000000000000000060551dd53a4000000000000000000000000000000000000000000000000000000a96bfaa96400000000000000000000000000000000000000000000000000000043db5a4e9c00000000000000000000000000000000000000000000000000000021edacad3c00000000000000000000000000000000000000000000000000000010f6d6d0b0000000000000000000000000000000000000000000000000000000087b6b6858000000000000000000000000000000000000000000000000000000087b6b685800000000000000000000000000000000000000000000000000000005a820dd0400000000000000000000000000000000000000000000000000000005a820dd0400000000000000000000000000000000000000000000000000000002d40ff47000000000000000000000000000000000000000000000000000000002d40ff4700000000000000000000000000000000000000000000000000000002f23bb419c0000000000000000000000000000000000000000000000000000000b5041ba0800000000000000000000000000000000000000000000000000000002d40ff4700000000000000000000000000000000000000000000000000000002f23bb419c00000000000000000000000000000000000000000000000000000005a820dd0400000000000000000000000000000000000000000000000000000002d40ff47000000000000000000000000000000000000000000000000000000002d40ff47000000000000000000000000000000000000000000000000000000002d40ff4700000000000000000000000000000000000000000000000000000000b5041ba0800000000000000000000000000000000000000000000000000000005a820dd040000000000000000000000000000000000000000000000000000008d6b32b8f800000000000000000000000000000000000000000000000000000005a820dd040000000000000000000000000000000000000000000000000000001791de1ae00000000000000000000000000000000000000000000000000000000b5041ba080000000000000000000000000000000000000000000000000000001791de1ae000000000000000000000000000000000000000000000000000000005a820dd0400000000000000000000000000000000000000000000000000000005a820dd0400000000000000000000000000000000000000000000000000000002d40ff4700000000000000000000000000000000000000000000000000000002f23bb419c0000000000000000000000000000000000000000000000000000000b5041ba0800000000000000000000000000000000000000000000000000000002d40ff47000000000000000000000000000000000000000000000000000000002d40ff47000000000000000000000000000000000000000000000000000000002d40ff47000000000000000000000000000000000000000000000000000000005a820dd040000000000000000000000000000000000000000000000000000001791de1ae00000000000000000000000000000000000000000000000000000000b5041ba080000000000000000000000000000000000000000000000000000000f15ac554800000000000000000000000000000000000000000000000000000003c56b8f6400000000000000000000000000000000000000000000000000000001e2b54da000000000000000000000000000000000000000000000000000000003c56b8f64000000000000000000000000000000000000000000000000000000078ad62aa40000000000000000000000000000000000000000000000000000002f23bb419c0