0x25bd91e90948e50fbda689f73d458a1b5b2faacc733c5477619bd1ad2f05bebd

Transaction

Succeeded
Base
execTransaction
L2 Txn fee 0.00047592730 ETH
Eth
+$1.82
Eth
+$0.19
[RECV]

0
Eth
-$2.12

  • 0
    CALL
    24269541 gas [RECV] SafeProxy.fallback (0000000000000000000000009641d764fc13c8b624c04430c7356c1c7c8102e200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ba20000000000000000000000000000000000000000000000000000000000001b8a48d80ff0a0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000001b84900000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000646112e8ac000000000000000000000000bf24cbfe40482980ad88b11add53600edcf0faedbf24cbfe40482980ad88b11add53600edcf0faed6a6708a10fad373b24344a6d000000000000000000000000000000000000000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066461ff715fbf24cbfe40482980ad88b11add53600edcf0faed6a6708a10fad373b24344a6d000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000005e36105af610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610034575f3560e01c80633f63910114610038575b5f5ffd5b61004b610046366004610445565b61005d565b60405190815260200160405180910390f35b5f5f5f61006c888888886100d7565b915091506100cb61008f82866fffffffffffffffffffffffffffffffff16610348565b6100c36100ae85886fffffffffffffffffffffffffffffffff16610348565b6fffffffffffffffffffffffffffffffff1690565b9060801b0190565b98975050505050505050565b6040517ff30dba93000000000000000000000000000000000000000000000000000000008152600283900b60048201525f9081908190819073ffffffffffffffffffffffffffffffffffffffff89169063f30dba939060240161010060405180830381865afa15801561014c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017091906104bb565b50506040517ff30dba9300000000000000000000000000000000000000000000000000000000815260028c900b60048201529397509195505f94508493505073ffffffffffffffffffffffffffffffffffffffff8c169163f30dba93915060240161010060405180830381865afa1580156101ed573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021191906104bb565b505050509350935050508760020b8960020b1215610238578184039550808303945061033b565b8660020b8960020b12610254578382039550828103945061033b565b81848b73ffffffffffffffffffffffffffffffffffffffff1663f30583996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561029f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102c39190610562565b0303955080838b73ffffffffffffffffffffffffffffffffffffffff1663461413196040518163ffffffff1660e01b8152600401602060405180830381865afa158015610312573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103369190610562565b030394505b5050505094509492505050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050805f03610390575060801c90506103e8565b80700100000000000000000000000000000000116103ac575f5ffd5b5f70010000000000000000000000000000000085870980840360801c931090910370010000000000000000000000000000000002919091179150505b92915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461040f575f5ffd5b50565b8035600281900b8114610423575f5ffd5b919050565b6fffffffffffffffffffffffffffffffff8116811461040f575f5ffd5b5f5f5f5f5f60a08688031215610459575f5ffd5b8535610464816103ee565b945061047260208701610412565b935061048060408701610412565b925061048e60608701610412565b9150608086013561049e81610428565b809150509295509295909350565b80518015158114610423575f5ffd5b5f5f5f5f5f5f5f5f610100898b0312156104d3575f5ffd5b88516104de81610428565b80985050602089015180600f0b81146104f5575f5ffd5b60408a015160608b015160808c01519299509097509550600681900b811461051b575f5ffd5b60a08a015190945061052c816103ee565b60c08a015190935063ffffffff81168114610545575f5ffd5b915061055360e08a016104ac565b90509295985092959890939650565b5f60208284031215610572575f5ffd5b505191905056fea2646970667358221220a876a5a2b001389669e73e1d4df7040e0abd691465bd897c5d7b8f39f24de6ec64736f6c634300081c0033000000000000000000000000000000000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000646112e8ac000000000000000000000000bf24cbfe40482980ad88b11add53600edcf0faedbf24cbfe40482980ad88b11add53600edcf0faedfc5dac9daba3ee73b03851bf000000000000000000000000000000000000000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036a461ff715fbf24cbfe40482980ad88b11add53600edcf0faedfc5dac9daba3ee73b03851bf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000003634613600610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610090575f3560e01c80635ac17dfa116100635780635ac17dfa146101575780637679c3921461017d57806395917e7a1461019c578063d42bc5e9146101bc575f5ffd5b80632a7f2f94146100945780633ea648f4146100c15780634a18eb8f14610109578063560191011461012a575b5f5ffd5b6100a76100a2366004612d70565b6101cf565b604080519283526020830191909152015b60405180910390f35b6100d46100cf366004612db5565b610462565b60408051600296870b815294860b602086015292850b9284019290925290920b6060820152608081019190915260a0016100b8565b61011c610117366004612ddf565b61052b565b6040519081526020016100b8565b61013d610138366004612dfa565b610562565b6040805160029390930b83526020830191909152016100b8565b61016a610165366004612e54565b6107ea565b60405160029190910b81526020016100b8565b818015610188575f5ffd5b5061011c610197366004613001565b6109f9565b6101af6101aa366004612ddf565b6110f0565b6040516100b89190613114565b61011c6101ca366004613175565b6111bc565b5f5f5f5f5f5f6101e08b8b8b611792565b915091505f610201600284816101f8576101f86131cb565b048484036118dc565b90506c010000000000000000000000008a73ffffffffffffffffffffffffffffffffffffffff1610156102a2575f61026661023c8e60801c90565b6fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000856118f3565b905061027282826119bc565b955061029a6102948383700100000000000000000000000000000000036119bc565b8c611a60565b9450506102e8565b5f6102b061023c8d60801c90565b90506102bc82826119bc565b94506102e46102de8383700100000000000000000000000000000000036119bc565b8c611ae2565b9550505b5050505f6102f38690565b6fffffffffffffffffffffffffffffffff168a6fffffffffffffffffffffffffffffffff160390505f6103268760801c90565b6fffffffffffffffffffffffffffffffff168a6fffffffffffffffffffffffffffffffff160390505f88600f0b850190505f6103628a60801d90565b600f0b85019050838213801561037757508281135b6103f457838213156103ba5761039a8184036103958685038e611b89565b611c37565b850194506103b56103ad8285038d611c45565b858403611c37565b860395505b828113156103f4576103d48285036103958584038e611c45565b860195506103ef6103e78386038d611b89565b848303611c37565b850394505b89600f0b860191506104068a60801d90565b600f0b8501905061042d856fffffffffffffffffffffffffffffffff88165b9060801b0190565b61044d8285036fffffffffffffffffffffffffffffffff85880316610425565b975097505050505050505b9550959350505050565b5f5f5f5f5f5f5f5f8990508973ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156104b6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104da9190613218565b50939c5091965094506104fe92508391505061ffff80861690851660136001611cff565b90975094506105198361ffff168361ffff16603c8c85610562565b90965093505050509295509295909350565b5f73ffffffffffffffffffffffffffffffffffffffff8216156105595761055182611fc8565b60270361055c565b60285b92915050565b5f806002600862ffffff60cc87901c160660180262ffffff1685901c600860c987901c62ffffff1681610597576105976131cb565b0660180262ffffff1686901c0160020b816105b4576105b46131cb565b05915060d884901c85014210610458575f5f5f8573ffffffffffffffffffffffffffffffffffffffff1663252c09d78a8b60018e0301816105f7576105f76131cb565b066040518263ffffffff1660e01b815260040161061691815260200190565b608060405180830381865afa158015610631573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065591906132b6565b5050915063ffffffff1691505f5f8773ffffffffffffffffffffffffffffffffffffffff1663252c09d78d6040518263ffffffff1660e01b815260040161069e91815260200190565b608060405180830381865afa1580156106b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106dd91906132b6565b5050915063ffffffff16915083820383820360060b816106ff576106ff6131cb565b059450505060c087901c91505f90506001808280805b60088160ff16101561079f57600762ffffff88166003830260ff161c8116935083900361074757600185039450610797565b8260180262ffffff168c901c915083801561076757508160020b8860020b135b15610776576001850194505f93505b6001858260ff16010360030262ffffff168360010162ffffff16901b860195505b600101610715565b508662ffffff1660188c901b77ffffffffffffffffffffffffffffffffffffffffffffffff1660c08762ffffff16901b60d842901b0101019750505050505050509550959350505050565b6040805160148082526102a082019092525f918291906020820161028080368337505060408051601380825261028082019092529293505f92915060208201610260803683370190505090505f5b601481101561087f5760146001820163ffffffff871602048382815181106108625761086261330b565b63ffffffff90921660209283029190910190910152600101610838565b506040517f883bdbfd0000000000000000000000000000000000000000000000000000000081525f9073ffffffffffffffffffffffffffffffffffffffff87169063883bdbfd906108d4908690600401613338565b5f60405180830381865afa1580156108ee573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261093391908101906133e4565b5090505f5b60138110156109c557601463ffffffff87160463ffffffff1660060b8282600101815181106109695761096961330b565b60200260200101518383815181106109835761098361330b565b60200260200101510360060b8161099c5761099c6131cb565b0560020b8382815181106109b2576109b261330b565b6020908102919091010152600101610938565b505f6109d083612158565b9050806009815181106109e5576109e561330b565b602002602001015194505050505092915050565b5f80805b8951811015610a9d575f8a8281518110610a1957610a1961330b565b602002602001015190505f610a2d8261216d565b90505f5b81811015610a8f57610a438382612220565b600103610a8757610a848c8581518110610a5f57610a5f61330b565b60200260200101518260048110610a7857610a7861330b565b60200201518690612236565b94505b600101610a31565b5050508060010190506109fd565b505f610aad885b600f0b5f611c37565b5f0390505f610abf610aa48a60801d90565b5f0390505f82610acc8590565b600f0b128015610ae7575081610ae28560801d90565b600f0b135b15610b515781610b0e85600f0b850361039585610b048960801d90565b600f0b038b611c45565b5f03610b3184610b1e8860801d90565b600f0b0361039588600f0b88038c611b89565b9094509250610b49818401865b600f0b9060801b0190565b915050610c03565b81610b5c8560801d90565b600f0b128015610b6e57508284600f0b135b15610bd75782610b958186600f0b03610395610b8a8860801d90565b600f0b86038b611c45565b610bb6610ba28760801d90565b600f0b85036103958789600f0b038c611b89565b9094505f039250610b49610bca8660801d90565b60801b858301600f0b0190565b610bfa610bf083610be88760801d90565b600f0b611c37565b610b3e8587610be8565b90505f92505f91505b5f8d815b8e51811015610ee0575f8f8281518110610c2357610c2361330b565b602090810291909101015190508e5f5b610c3c8361216d565b811015610ed557610c4d8382612220565b6001148015610c8a5750818481518110610c6957610c6961330b565b60200260200101518160048110610c8257610c8261330b565b602002015115155b15610ecd575f610d8f610d27610ca08a60801d90565b6fffffffffffffffffffffffffffffffff16610ceb868981518110610cc757610cc761330b565b60200260200101518660048110610ce057610ce061330b565b602002015160801d90565b5f036fffffffffffffffffffffffffffffffff1602610d0a8e60801d90565b6fffffffffffffffffffffffffffffffff16808204910615150190565b610b3e8a6fffffffffffffffffffffffffffffffff16610d73878a81518110610d5257610d5261330b565b60200260200101518760048110610d6b57610d6b61330b565b602002015190565b5f036fffffffffffffffffffffffffffffffff1602610d0a8f90565b9050610d9b87826122ff565b96508373ffffffffffffffffffffffffffffffffffffffff87167f4358c577d4c62044fa8caea3ad9778fe842e777c7903f2452d20661f6ff250b784610de15f86612236565b6040805192835260208301919091520160405180910390a35f610e098584603002604c011c90565b610e13868561236a565b610e1d878661237d565b60405160e893841b60208201529190921b60238201526026810191909152604601604051602081830303815290604052805190602001209050610ebc610e9d83610e97878a81518110610e7257610e7261330b565b60200260200101518760048110610e8b57610e8b61330b565b60200201515f90612236565b9061238f565b8f5f8481526020019081526020015f20546122ff90919063ffffffff16565b5f91825260208f9052604090912055505b600101610c33565b505050600101610c07565b50816fffffffffffffffffffffffffffffffff1615610fc85773ffffffffffffffffffffffffffffffffffffffff8b1663083953d9825f8080876040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff9095166004860152600f93840b602486015291830b6044850152820b6064840152900b608482015260a4016020604051808303815f875af1158015610fa2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc691906134a9565b505b610fd28260801c90565b6fffffffffffffffffffffffffffffffff16156110c1578973ffffffffffffffffffffffffffffffffffffffff1663083953d9825f5f5f6110138860801c90565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff9095166004860152600f93840b602486015291830b6044850152820b6064840152900b608482015260a4016020604051808303815f875af115801561109b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110bf91906134a9565b505b6110dd846fffffffffffffffffffffffffffffffff8716610425565b9f9e505050505050505050505050505050565b60608173ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa92505050801561117a57506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261117791908101906134c9565b60015b61055c57505060408051808201909152600381527f3f3f3f0000000000000000000000000000000000000000000000000000000000602082015290565b919050565b5f5f6111c785612494565b6040517fc6e6f5920000000000000000000000000000000000000000000000000000000081525f8881036fffffffffffffffffffffffffffffffff16600483015291925073ffffffffffffffffffffffffffffffffffffffff86169063c6e6f59290602401602060405180830381865afa158015611247573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126b919061357b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301528716906370a0823190602401602060405180830381865afa1580156112d5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f9919061357b565b017effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0390505f8113156114c3576114ba6113328860801d90565b600f0b6113b88773ffffffffffffffffffffffffffffffffffffffff166307a2d13a856040518263ffffffff1660e01b815260040161137391815260200190565b602060405180830381865afa15801561138e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113b2919061357b565b85611a60565b0161042561149f848973ffffffffffffffffffffffffffffffffffffffff166301e1d1146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611409573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061142d919061357b565b8a73ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611476573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061149a919061357b565b6127f4565b600f8b900b036fffffffffffffffffffffffffffffffff1690565b92505050611789565b8373ffffffffffffffffffffffffffffffffffffffff1663c6e6f5926114e98960801d90565b5f036040518263ffffffff1660e01b815260040161151f91906fffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa15801561153a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155e919061357b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301528616906370a0823190602401602060405180830381865afa1580156115c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ec919061357b565b017effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0390505f811315611783576114ba6116d5828673ffffffffffffffffffffffffffffffffffffffff166301e1d1146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611668573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061168c919061357b565b8773ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611476573d5f5f3e3d5ffd5b6116df8960801d90565b600f0b0361042589600f0b61176d8873ffffffffffffffffffffffffffffffffffffffff166307a2d13a876040518263ffffffff1660e01b815260040161172891815260200190565b602060405180830381865afa158015611743573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611767919061357b565b87611ae2565b016fffffffffffffffffffffffffffffffff1690565b50859150505b95945050505050565b5f5f6c010000000000000000000000008373ffffffffffffffffffffffffffffffffffffffff16101561184b576117db846fffffffffffffffffffffffffffffffff1684611ae2565b6117f7906fffffffffffffffffffffffffffffffff8716613592565b61181c6118048660801c90565b6fffffffffffffffffffffffffffffffff168561284f565b6118268760801c90565b6fffffffffffffffffffffffffffffffff166118429190613592565b915091506118d4565b836fffffffffffffffffffffffffffffffff1661187a866fffffffffffffffffffffffffffffffff1685611a60565b6118849190613592565b61188e8560801c90565b6fffffffffffffffffffffffffffffffff166118c56118ad8860801c90565b6fffffffffffffffffffffffffffffffff16866128f1565b6118cf9190613592565b915091505b935093915050565b5f8183106118ea57816118ec565b825b9392505050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050805f03611946575f841161193b575f5ffd5b5082900490506118ec565b808411611951575f5ffd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050805f03611a04575060801c905061055c565b8070010000000000000000000000000000000011611a20575f5ffd5b5f70010000000000000000000000000000000085870980840360801c93109091037001000000000000000000000000000000000291909117949350505050565b5f6fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff83161015611ab957611ab28360028473ffffffffffffffffffffffffffffffffffffffff160a61296c565b905061055c565b611ab283611add73ffffffffffffffffffffffffffffffffffffffff851680612a18565b6119bc565b5f6fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff83161015611b4e57611ab283780100000000000000000000000000000000000000000000000060028573ffffffffffffffffffffffffffffffffffffffff160a6118f3565b611ab283700100000000000000000000000000000000611b8473ffffffffffffffffffffffffffffffffffffffff861680612a18565b6118f3565b5f6fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff83161015611c07575f611bec611be7611bc886612ab4565b60028673ffffffffffffffffffffffffffffffffffffffff160a61296c565b612ac4565b90505f8412611bfb5780611bff565b805f035b91505061055c565b5f611bec611be7611c1786612ab4565b611add73ffffffffffffffffffffffffffffffffffffffff871680612a18565b5f8183126118ea57816118ec565b5f6fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff83161015611cbd575f611bec611be7611c8486612ab4565b780100000000000000000000000000000000000000000000000060028773ffffffffffffffffffffffffffffffffffffffff160a6118f3565b5f611bec611be7611ccd86612ab4565b700100000000000000000000000000000000611b8473ffffffffffffffffffffffffffffffffffffffff881680612a18565b5f5f5f8460010167ffffffffffffffff811115611d1e57611d1e612e8b565b604051908082528060200260200182016040528015611d47578160200160208202803683370190505b5090505f8560010167ffffffffffffffff811115611d6757611d67612e8b565b604051908082528060200260200182016040528015611d90578160200160208202803683370190505b5090505f5b86600101811015611e83578973ffffffffffffffffffffffffffffffffffffffff1663252c09d7898a8985028d030181611dd157611dd16131cb565b066040518263ffffffff1660e01b8152600401611df091815260200190565b608060405180830381865afa158015611e0b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e2f91906132b6565b8363ffffffff1693508260060b9250905050838381518110611e5357611e5361330b565b60200260200101858481518110611e6c57611e6c61330b565b602090810291909101019190915252600101611d95565b505f8667ffffffffffffffff811115611e9e57611e9e612e8b565b604051908082528060200260200182016040528015611ec7578160200160208202803683370190505b5090505f5b87811015611f7757828160010181518110611ee957611ee961330b565b6020026020010151838281518110611f0357611f0361330b565b602002602001015103848260010181518110611f2157611f2161330b565b6020026020010151858381518110611f3b57611f3b61330b565b60200260200101510381611f5157611f516131cb565b05828281518110611f6457611f6461330b565b6020908102919091010152600101611ecc565b50611f8181612158565b6002880481518110611f9557611f9561330b565b6020026020010151815f81518110611faf57611faf61330b565b6020026020010151945094505050509550959350505050565b5f7001000000000000000000000000000000008273ffffffffffffffffffffffffffffffffffffffff161061201b5760808273ffffffffffffffffffffffffffffffffffffffff16901c91506020810190505b680100000000000000008273ffffffffffffffffffffffffffffffffffffffff16106120655760408273ffffffffffffffffffffffffffffffffffffffff16901c91506010810190505b6401000000008273ffffffffffffffffffffffffffffffffffffffff16106120ab5760208273ffffffffffffffffffffffffffffffffffffffff16901c91506008810190505b620100008273ffffffffffffffffffffffffffffffffffffffff16106120ef5760108273ffffffffffffffffffffffffffffffffffffffff16901c91506004810190505b6101008273ffffffffffffffffffffffffffffffffffffffff16106121325760088273ffffffffffffffffffffffffffffffffffffffff16901c91506002810190505b60108273ffffffffffffffffffffffffffffffffffffffff16106111b757600101919050565b6060612169825f6001855103612b1f565b5090565b5f7afe0000000000fe0000000000fe0000000000fe00000000000000008216680100000000000000008110156121a557505f92915050565b6e0100000000000000000000000000008110156121c55750600192915050565b740100000000000000000000000000000000000000008110156121eb5750600292915050565b7a0100000000000000000000000000000000000000000000000000008110156122175750600392915050565b50600492915050565b5f60026048603084020184901c5b069392505050565b5f5f6122428360801d90565b600f0b61224f8560801d90565b600f0b039050805f84600f0b86600f0b0390505f8190508383600f0b14158061227b57508181600f0b14155b156122b2576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122f4837fffffffffffffffffffffffffffffffff0000000000000000000000000000000087168388016fffffffffffffffffffffffffffffffff1601610425565b979650505050505050565b818101828110806123335750826fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff16105b1561055c576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6110006064603084020184901c61222e565b5f60026049603084020184901c61222e565b5f5f61239b8360801d90565b600f0b6123a88560801d90565b600f0b039050805f84600f0b86600f0b0390505f8190508383600f0b1415806123d457508181600f0b14155b1561240b576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122f461241b84600f0b5f612ca8565b61246a61242b84600f0b5f612ca8565b889081016fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff00000000000000000000000000000000919091160190565b9060801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b5f5f5f8360020b126124a9578260020b6124b0565b8260020b5f035b9050620d89e88111156124ef576040517fce8ef7fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816001165f0361251157700100000000000000000000000000000000612523565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612557576ffff97272373d413259a46990580e213a0260801c5b6004821615612576576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612595576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156125b4576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156125d3576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156125f2576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612611576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612631576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612651576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612671576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612691576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156126b1576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156126d1576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156126f1576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612711576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612732576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612752576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612771576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561278e576b048a170391f7dc42444e8fa20260801c5b5f8460020b13156127cc57807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff816127c8576127c86131cb565b0490505b6401000000008106156127e05760016127e2565b5f5b60ff16602082901c0192505050919050565b5f6128008484846118f3565b90505f8280612811576128116131cb565b84860911156118ec577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110612845575f5ffd5b6001019392505050565b5f6fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff831610156128bb57611ab283780100000000000000000000000000000000000000000000000060028573ffffffffffffffffffffffffffffffffffffffff160a6127f4565b611ab28370010000000000000000000000000000000061149a73ffffffffffffffffffffffffffffffffffffffff861680612a18565b5f6fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff8316101561294357611ab28360028473ffffffffffffffffffffffffffffffffffffffff160a612cb6565b611ab28361296773ffffffffffffffffffffffffffffffffffffffff851680612a18565b612d1c565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050805f036129b4575060c01c905061055c565b807801000000000000000000000000000000000000000000000000116129d8575f5ffd5b5f780100000000000000000000000000000000000000000000000085870980840360c01c9310909103680100000000000000000291909117949350505050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050805f03612a60575060401c905061055c565b806801000000000000000011612a74575f5ffd5b5f6801000000000000000085870980840360401c931090910378010000000000000000000000000000000000000000000000000291909117949350505050565b5f5f821361216957815f0361055c565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115612169576040517fb668004500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181808203612b2f575050505050565b5f85600286860305860181518110612b4957612b4961330b565b602002602001015190505b81831215612c7a575b80868481518110612b7057612b7061330b565b60200260200101511215612b8957600190920191612b5d565b858281518110612b9b57612b9b61330b565b6020026020010151811215612bd4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190612b89565b818313612c7557858281518110612bed57612bed61330b565b6020026020010151868481518110612c0757612c0761330b565b6020026020010151878581518110612c2157612c2161330b565b60200260200101888581518110612c3a57612c3a61330b565b6020908102919091010191909152526001909201917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909101905b612b54565b81851215612c8d57612c8d868684612b1f565b83831215612ca057612ca0868486612b1f565b505050505050565b5f8183136118ea57816118ec565b5f612cc1838361296c565b90505f78010000000000000000000000000000000000000000000000005b838509111561055c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110612d13575f5ffd5b60010192915050565b5f612d2783836119bc565b90505f700100000000000000000000000000000000612cdf565b73ffffffffffffffffffffffffffffffffffffffff81168114612d62575f5ffd5b50565b80356111b781612d41565b5f5f5f5f5f60a08688031215612d84575f5ffd5b85359450602086013593506040860135612d9d81612d41565b94979396509394606081013594506080013592915050565b5f5f60408385031215612dc6575f5ffd5b8235612dd181612d41565b946020939093013593505050565b5f60208284031215612def575f5ffd5b81356118ec81612d41565b5f5f5f5f5f60a08688031215612e0e575f5ffd5b853594506020860135935060408601359250606086013591506080860135612e3581612d41565b809150509295509295909350565b63ffffffff81168114612d62575f5ffd5b5f5f60408385031215612e65575f5ffd5b8235612e7081612d41565b91506020830135612e8081612e43565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715612edb57612edb612e8b565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f2857612f28612e8b565b604052919050565b5f67ffffffffffffffff821115612f4957612f49612e8b565b5060051b60200190565b5f82601f830112612f62575f5ffd5b8135612f75612f7082612f30565b612ee1565b8082825260208201915060208360071b860101925085831115612f96575f5ffd5b602085015b83811015612ff75786601f820112612fb1575f5ffd5b612fb9612eb8565b806080830189811115612fca575f5ffd5b835b81811015612fe4578035845260209384019301612fcc565b5050845250602090920191608001612f9b565b5095945050505050565b5f5f5f5f5f5f5f5f610100898b031215613019575f5ffd5b883561302481612d41565b9750602089013567ffffffffffffffff81111561303f575f5ffd5b8901601f81018b1361304f575f5ffd5b803561305d612f7082612f30565b8082825260208201915060208360051b85010192508d83111561307e575f5ffd5b6020840193505b828410156130a0578335825260209384019390910190613085565b9950505050604089013567ffffffffffffffff8111156130be575f5ffd5b6130ca8b828c01612f53565b965050606089013594506130e060808a01612d65565b93506130ee60a08a01612d65565b92506130fc60c08a01612d65565b979a969950949793969295919450919260e001359150565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b8060020b8114612d62575f5ffd5b5f5f5f5f5f60a08688031215613189575f5ffd5b853561319481612d41565b94506020860135935060408601356131ab81613167565b925060608601356131bb81612d41565b91506080860135612e3581612d41565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b805161ffff811681146111b7575f5ffd5b805180151581146111b7575f5ffd5b5f5f5f5f5f5f5f60e0888a03121561322e575f5ffd5b875161323981612d41565b602089015190975061324a81613167565b9550613258604089016131f8565b9450613266606089016131f8565b9350613274608089016131f8565b925060a088015160ff81168114613289575f5ffd5b915061329760c08901613209565b905092959891949750929550565b8051600681900b81146111b7575f5ffd5b5f5f5f5f608085870312156132c9575f5ffd5b84516132d481612e43565b93506132e2602086016132a5565b925060408501516132f281612d41565b915061330060608601613209565b905092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b602080825282518282018190525f918401906040840190835b8181101561337557835163ffffffff16835260209384019390920191600101613351565b509095945050505050565b5f82601f83011261338f575f5ffd5b815161339d612f7082612f30565b8082825260208201915060208360051b8601019250858311156133be575f5ffd5b602085015b83811015612ff75780516133d681612d41565b8352602092830192016133c3565b5f5f604083850312156133f5575f5ffd5b825167ffffffffffffffff81111561340b575f5ffd5b8301601f8101851361341b575f5ffd5b8051613429612f7082612f30565b8082825260208201915060208360051b85010192508783111561344a575f5ffd5b6020840193505b8284101561347357613462846132a5565b825260209384019390910190613451565b80955050505050602083015167ffffffffffffffff811115613493575f5ffd5b61349f85828601613380565b9150509250929050565b5f602082840312156134b9575f5ffd5b815180600f0b81146118ec575f5ffd5b5f602082840312156134d9575f5ffd5b815167ffffffffffffffff8111156134ef575f5ffd5b8201601f810184136134ff575f5ffd5b805167ffffffffffffffff81111561351957613519612e8b565b61354a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612ee1565b81815285602083850101111561355e575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f6020828403121561358b575f5ffd5b5051919050565b8082018082111561055c577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffdfea2646970667358221220adc927a9e79adf287b66a8ca601815395ba6517d458ade6e8da2c538987cdf4864736f6c634300081c003300000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000646112e8ac000000000000000000000000bf24cbfe40482980ad88b11add53600edcf0faedbf24cbfe40482980ad88b11add53600edcf0faed9d0cbaf441aad6a1cdfff7aa000000000000000000000000000000000000000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026461ff715fbf24cbfe40482980ad88b11add53600edcf0faed9d0cbaf441aad6a1cdfff7aa000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001f16101bd610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610034575f3560e01c8063cacfb53514610038575b5f5ffd5b61004b610046366004610170565b6100a0565b60408051600298890b815296880b602088015294870b868601529290950b6060850152608084015260a08301939093526fffffffffffffffffffffffffffffffff90921660c082015290519081900360e00190f35b5f5f5f5f5f5f5f6100b96100b48960a01c90565b6100e7565b929950909750955093506100cc8861014f565b92506100d788610161565b9150879050919395979092949650565b5f80808060a085901b7fffffffffffffffffffffffff0000000000000000000000000000000000000000166bffffffffffffffffffffffff861661012b8260b81c90565b6101358360d01c90565b61013f8460e81c90565b9450945094509450509193509193565b5f62010000608083901c5b0692915050565b5f62010000609083901c61015a565b5f60208284031215610180575f5ffd5b503591905056fea2646970667358221220b06102676e416fc95c1576be150978367e094895857c9e894de3b5665b84c58764736f6c634300081c003300000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000646112e8ac000000000000000000000000bf24cbfe40482980ad88b11add53600edcf0faedbf24cbfe40482980ad88b11add53600edcf0faedbeb8e05e86dd5c1bceb7e349000000000000000000000000000000000000000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f6461ff715fbf24cbfe40482980ad88b11add53600edcf0faedbeb8e05e86dd5c1bceb7e34900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000efc610ec8610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610055575f3560e01c806361de447b1461005957806382f4055114610082578063c2711c7f14610095578063dbfff1ca146100ba575b5f5ffd5b61006c610067366004610a49565b6100db565b6040516100799190610a96565b60405180910390f35b61006c610090366004610ae9565b6101c8565b6100a86100a3366004610b77565b61039d565b60405160ff9091168152602001610079565b8180156100c5575f5ffd5b506100d96100d4366004610b99565b610434565b005b6040517f95917e7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152606090829073b6523900510d44fbf2a19f73dbfc24e13c03a95b906395917e7a906024015f60405180830381865af415801561015b573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526101a09190810190610c06565b6040516020016101b1929190610c92565b604051602081830303815290604052905092915050565b6040517f95917e7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861660048201526060905f9073b6523900510d44fbf2a19f73dbfc24e13c03a95b906395917e7a906024015f60405180830381865af4158015610248573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261028d9190810190610c06565b6040517f95917e7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff881660048201529091505f9073b6523900510d44fbf2a19f73dbfc24e13c03a95b906395917e7a906024015f60405180830381865af415801561030d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103529190810190610c06565b905083866103605781610362565b825b838361036d896106c3565b604051602001610381959493929190610cae565b6040516020818303038152906040529250505095945050505050565b5f8173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610423575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261042091810190610d8b565b60015b61042e57505f919050565b92915050565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602483015283169063095ea7b3906044015f604051808303815f87803b1580156104c0575f5ffd5b505af11580156104d2573d5f5f3e3d5ffd5b50506040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301528416925063095ea7b391506044015f604051808303815f87803b158015610562575f5ffd5b505af1158015610574573d5f5f3e3d5ffd5b50506040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301528516925063095ea7b391506044015f604051808303815f87803b158015610604575f5ffd5b505af1158015610616573d5f5f3e3d5ffd5b50506040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301528416925063095ea7b391506044015f604051808303815f87803b1580156106a6575f5ffd5b505af11580156106b8573d5f5f3e3d5ffd5b505050505050505050565b60606106dd6106d3606484610dd8565b62ffffff16610775565b6106e8606484610dfd565b62ffffff161561073e5761070b600a6107018186610dd8565b6106d39190610dfd565b6107196106d3600a86610dfd565b60405160200161072a929190610e22565b60405160208183030381529060405261074e565b60405180602001604052805f8152505b60405160200161075f929190610e56565b6040516020818303038152906040529050919050565b60605f61078183610831565b60010190505f8167ffffffffffffffff8111156107a0576107a0610936565b6040519080825280601f01601f1916602001820160405280156107ca576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846107d457509392505050565b5f807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610879577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106108a5576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106108c357662386f26fc10000830492506010015b6305f5e10083106108db576305f5e100830492506008015b61271083106108ef57612710830492506004015b60648310610901576064830492506002015b600a831061042e5760010192915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610933575f5ffd5b50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156109aa576109aa610936565b604052919050565b5f67ffffffffffffffff8211156109cb576109cb610936565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610a06575f5ffd5b8135610a19610a14826109b2565b610963565b818152846020838601011115610a2d575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610a5a575f5ffd5b8235610a6581610912565b9150602083013567ffffffffffffffff811115610a80575f5ffd5b610a8c858286016109f7565b9150509250929050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f5f5f5f5f60a08688031215610afd575f5ffd5b8535610b0881610912565b94506020860135610b1881610912565b935060408601358015158114610b2c575f5ffd5b9250606086013562ffffff81168114610b43575f5ffd5b9150608086013567ffffffffffffffff811115610b5e575f5ffd5b610b6a888289016109f7565b9150509295509295909350565b5f60208284031215610b87575f5ffd5b8135610b9281610912565b9392505050565b5f5f5f5f5f60a08688031215610bad575f5ffd5b8535610bb881610912565b94506020860135610bc881610912565b93506040860135610bd881610912565b92506060860135610be881610912565b91506080860135610bf881610912565b809150509295509295909350565b5f60208284031215610c16575f5ffd5b815167ffffffffffffffff811115610c2c575f5ffd5b8201601f81018413610c3c575f5ffd5b8051610c4a610a14826109b2565b818152856020838501011115610c5e575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f81518060208401855e5f93019283525090919050565b5f610ca6610ca08386610c7b565b84610c7b565b949350505050565b5f610cb98288610c7b565b7f20000000000000000000000000000000000000000000000000000000000000008152610ce96001820188610c7b565b90507f204c50206f6e20000000000000000000000000000000000000000000000000008152610d1b6007820187610c7b565b90507f2f000000000000000000000000000000000000000000000000000000000000008152610d4d6001820186610c7b565b90507f20000000000000000000000000000000000000000000000000000000000000008152610d7f6001820185610c7b565b98975050505050505050565b5f60208284031215610d9b575f5ffd5b815160ff81168114610b92575f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62ffffff831680610dec57610dec610dab565b8062ffffff84160491505092915050565b5f62ffffff831680610e1157610e11610dab565b8062ffffff84160691505092915050565b7f2e0000000000000000000000000000000000000000000000000000000000000081525f610ca6610ca06001840186610c7b565b5f610e64610ca08386610c7b565b7f6270730000000000000000000000000000000000000000000000000000000000815260030194935050505056fea264697066735822122096302a2eb6beadd6c4b80f70ac0cf60c87da5ac40a20330880b2fabb7030219864736f6c634300081c00330000000000000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000646112e8ac000000000000000000000000bf24cbfe40482980ad88b11add53600edcf0faedbf24cbfe40482980ad88b11add53600edcf0faedfb91b4b2d99f18b0be792aec000000000000000000000000000000000000000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051c461ff715fbf24cbfe40482980ad88b11add53600edcf0faedfb91b4b2d99f18b0be792aec00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000005154610160604052348015610010575f5ffd5b5060405161507438038061507483398101604081905261002f91610055565b60809690965260a09490945260c09290925260e0526101005261012052610140526100a4565b5f5f5f5f5f5f5f60e0888a03121561006b575f5ffd5b5050855160208701516040880151606089015160808a015160a08b015160c0909b0151949c939b50919990985090965094509092509050565b60805160a05160c05160e051610100516101205161014051614f1d6101575f395f61204101525f818161417e015281816141d101528181614285015281816142fc015261432301525f8181614150015281816141b0015281816141f30152818161423201526142db01525f61261901525f818161425f015281816142b301528181614345015261437501525f61411c01525f818161190101528181611cdd0152818161247b0152612b150152614f1d5ff3fe60806040526004361061025d575f3560e01c806374a8f1031161014b578063c63d75b6116100c6578063dd62ed3e1161007c578063ef8b30f711610062578063ef8b30f714610739578063fb29238b14610758578063fc380c2214610787575f5ffd5b8063dd62ed3e146106e4578063e81c10541461071a575f5ffd5b8063ce96cb77116100ac578063ce96cb7714610687578063d8ba510c146106a6578063d905777e146106c5575f5ffd5b8063c63d75b614610649578063c6e6f59214610668575f5ffd5b8063a9059cbb1161011b578063b3d7f6b911610101578063b3d7f6b9146105ec578063b460af941461060b578063ba0876521461062a575f5ffd5b8063a9059cbb146105ad578063ac9650d8146105cc575f5ffd5b806374a8f1031461053c578063795a1f0d1461055b57806394bf804d1461057a57806395d89b4114610599575f5ffd5b806323b872dd116101db578063402d267d116101ab5780635c19a95c116101915780635c19a95c146104d35780636e553f65146104f257806370a0823114610511575f5ffd5b8063402d267d146104885780634cdad506146104b4575f5ffd5b806323b872dd146103ee578063313ce5671461040d57806338d52e0f146104335780633bec831b14610467575f5ffd5b8063095ea7b3116102305780630a28a477116102165780630a28a4771461036f5780630ebd39061461038e57806318160ddd146103da575f5ffd5b8063095ea7b31461032157806309e0851014610350575f5ffd5b806301e1d1141461026157806306fdde03146102af57806307a2d13a146102d0578063083953d9146102ef575b5f5ffd5b34801561026c575f5ffd5b5060075470010000000000000000000000000000000081046fffffffffffffffffffffffffffffffff9081169116015b6040519081526020015b60405180910390f35b3480156102ba575f5ffd5b506102c36107a6565b6040516102a691906143ee565b3480156102db575f5ffd5b5061029c6102ea366004614400565b6108eb565b3480156102fa575f5ffd5b5061030e61030936600461444c565b610931565b604051600f9190910b81526020016102a6565b34801561032c575f5ffd5b5061034061033b3660046144af565b610ade565b60405190151581526020016102a6565b34801561035b575f5ffd5b5061029c61036a3660046145ae565b610b56565b34801561037a575f5ffd5b5061029c610389366004614400565b610c1a565b348015610399575f5ffd5b506103ad6103a83660046146e6565b610c5d565b6040805163ffffffff90931683526fffffffffffffffffffffffffffffffff9091166020830152016102a6565b3480156103e5575f5ffd5b5061029c5f5481565b3480156103f9575f5ffd5b5061034061040836600461473d565b610e10565b348015610418575f5ffd5b50610421610eec565b60405160ff90911681526020016102a6565b34801561043e575f5ffd5b5060035460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102a6565b348015610472575f5ffd5b5061048661048136600461473d565b610f92565b005b348015610493575f5ffd5b5061029c6104a236600461477b565b506cffffffffffffffffffffffffff90565b3480156104bf575f5ffd5b5061029c6104ce366004614400565b611013565b3480156104de575f5ffd5b506104866104ed36600461477b565b61101d565b3480156104fd575f5ffd5b5061029c61050c366004614796565b6110c9565b34801561051c575f5ffd5b5061029c61052b36600461477b565b60016020525f908152604090205481565b348015610547575f5ffd5b5061048661055636600461477b565b611225565b348015610566575f5ffd5b5061029c610575366004614805565b6112c9565b348015610585575f5ffd5b5061029c610594366004614796565b6114f4565b3480156105a4575f5ffd5b506102c3611641565b3480156105b8575f5ffd5b506103406105c73660046144af565b6116df565b6105df6105da366004614873565b6117b0565b6040516102a691906148b2565b3480156105f7575f5ffd5b5061029c610606366004614400565b6118be565b348015610616575f5ffd5b5061029c610625366004614933565b611934565b348015610635575f5ffd5b5061029c610644366004614933565b611b0b565b348015610654575f5ffd5b5061029c61066336600461477b565b611cd7565b348015610673575f5ffd5b5061029c610682366004614400565b611d29565b348015610692575f5ffd5b5061029c6106a136600461477b565b611d69565b3480156106b1575f5ffd5b506104866106c0366004614972565b611e76565b3480156106d0575f5ffd5b5061029c6106df36600461477b565b6120aa565b3480156106ef575f5ffd5b5061029c6106fe3660046149e4565b600260209081525f928352604080842090915290825290205481565b348015610725575f5ffd5b5061048661073436600461473d565b612146565b348015610744575f5ffd5b5061029c610753366004614400565b612475565b348015610763575f5ffd5b5061076c6124df565b604080519384526020840192909252908201526060016102a6565b348015610792575f5ffd5b5061029c6107a1366004614a10565b61251c565b60048054600554600854604080518082018252600781527f504f50542d563100000000000000000000000000000000000000000000000000602082015290517f82f4055100000000000000000000000000000000000000000000000000000000815260609573f69ba2986753c4a79f6873941dfb1fb46c0ca696956382f40551956108879573ffffffffffffffffffffffffffffffffffffffff92831695928216947401000000000000000000000000000000000000000090920460ff169370010000000000000000000000000000000090910462ffffff16929101614a61565b5f60405180830381865af41580156108a1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108e69190810190614abe565b905090565b5f61092b826109246007546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204160190565b5f546126e2565b92915050565b6006545f9073ffffffffffffffffffffffffffffffffffffffff163314610984576040517f2dd1912a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600754600f84810b6fffffffffffffffffffffffffffffffff9092168290039184820b87890390920b9003035f811315610a0a575f6109f8825f546109f36007546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204160190565b6127ab565b9050610a048982612806565b50610a2c565b5f811215610a2c575f610a1e825f03611d29565b9050610a2a8982612897565b505b610a3a84600f0b8301612922565b600780547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9283161790819055610a9f91898903600f0b7001000000000000000000000000000000009092041603612922565b600780546fffffffffffffffffffffffffffffffff92831670010000000000000000000000000000000002921691909117905591505095945050505050565b335f81815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b459086815260200190565b60405180910390a350600192915050565b5f610c105f855111610b68575f610b8e565b610b8e836fffffffffffffffffffffffffffffffff16610b888888612973565b01612922565b73ffffffffffffffffffffffffffffffffffffffff88165f90815260016020526040902054610bd4906fffffffffffffffffffffffffffffffff871690610b88906108eb565b6fffffffffffffffffffffffffffffffff169060801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b9695505050505050565b5f8054610c5683826109f36007546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204160190565b9392505050565b6006545f90819073ffffffffffffffffffffffffffffffffffffffff163314610cb2576040517f2dd1912a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600754600f85900b6fffffffffffffffffffffffffffffffff909116035f80610cdd89898989612ab8565b915091505f821315610d36575f610d24835f546109f36007546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204160190565b9050610d308b82612806565b50610d58565b5f821215610d58575f610d4a835f03611d29565b9050610d568b82612897565b505b610d6183612922565b600780547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9283161790819055610dc6918b8b03600f0b7001000000000000000000000000000000009092041601612922565b600780546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055610e01612b6a565b9a909950975050505050505050565b6006546040517fc79ee60d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301525f92169063c79ee60d90602401602060405180830381865afa158015610e7e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea29190614b70565b15610ed9576040517f2501f81e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ee4848484612be0565b949350505050565b6003546040517fc2711c7f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201525f9073f69ba2986753c4a79f6873941dfb1fb46c0ca6969063c2711c7f90602401602060405180830381865af4158015610f6e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e69190614b87565b60065473ffffffffffffffffffffffffffffffffffffffff163314610fe3576040517f2dd1912a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81131561100357610ffe8383610ff984611d29565b612d20565b505050565b610ffe8284610ff9845f03611d29565b5f61092b826108eb565b60065473ffffffffffffffffffffffffffffffffffffffff16331461106e576040517f2dd1912a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81165f90815260016020526040812080547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92906110c1908490614bd4565b909155505050565b5f6cffffffffffffffffffffffffff831115611111576040517fc56d46d300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61111a83612475565b6003546006549192506111499173ffffffffffffffffffffffffffffffffffffffff9182169133911686612dc8565b6111538282612897565b600780548491905f906111799084906fffffffffffffffffffffffffffffffff16614be7565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78584604051611217929190918252602082015260400190565b60405180910390a392915050565b60065473ffffffffffffffffffffffffffffffffffffffff163314611276576040517f2dd1912a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81165f90815260016020526040812080547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92906110c1908490614c0f565b5f6112d386610c1a565b90503373ffffffffffffffffffffffffffffffffffffffff8516146113865773ffffffffffffffffffffffffffffffffffffffff84165f9081526002602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611384576113538282614c0f565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526002602090815260408083203384529091529020555b505b6113908482612806565b600780548791905f906113b69084906fffffffffffffffffffffffffffffffff16614c22565b82546fffffffffffffffffffffffffffffffff9182166101009390930a9283029190920219909116179055506006546040517f5036275a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635036275a9061143c90879087908790600401614c4a565b5f6040518083038186803b158015611452575f5ffd5b505afa158015611464573d5f5f3e3d5ffd5b5050600354600654611493935073ffffffffffffffffffffffffffffffffffffffff9182169250168789612dc8565b604080518781526020810183905273ffffffffffffffffffffffffffffffffffffffff808716929088169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a495945050505050565b5f6114fe836118be565b90506cffffffffffffffffffffffffff811115611547576040517fc56d46d300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546006546115739173ffffffffffffffffffffffffffffffffffffffff9081169133911684612dc8565b61157d8284612897565b600780548291905f906115a39084906fffffffffffffffffffffffffffffffff16614be7565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78386604051611217929190918252602082015260400190565b600354604080518082018252600281527f706f000000000000000000000000000000000000000000000000000000000000602082015290517f61de447b00000000000000000000000000000000000000000000000000000000815260609273f69ba2986753c4a79f6873941dfb1fb46c0ca696926361de447b926108879273ffffffffffffffffffffffffffffffffffffffff169190600401614ca2565b6006546040517fc79ee60d0000000000000000000000000000000000000000000000000000000081523360048201525f9173ffffffffffffffffffffffffffffffffffffffff169063c79ee60d90602401602060405180830381865afa15801561174b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061176f9190614b70565b156117a6576040517f2501f81e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c568383612e53565b60608167ffffffffffffffff8111156117cb576117cb6144ea565b6040519080825280602002602001820160405280156117fe57816020015b60608152602001906001900390816117e95790505b5090505f5b828110156118b7575f803086868581811061182057611820614cd0565b90506020028101906118329190614cfd565b604051611840929190614d5e565b5f60405180830381855af49150503d805f8114611878576040519150601f19603f3d011682016040523d82523d5f602084013e61187d565b606091505b50915091508161188f57805160208201fd5b808484815181106118a2576118a2614cd0565b60209081029190910101525050600101611803565b5092915050565b5f61092b6118ce61271084614d6d565b60075470010000000000000000000000000000000081046fffffffffffffffffffffffffffffffff9081169116016119287f0000000000000000000000000000000000000000000000000000000000000000612710614c0f565b5f546109f39190614d6d565b5f61193e82611d69565b841115611977576040517f20adf2ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61198084610c1a565b90503373ffffffffffffffffffffffffffffffffffffffff831614611a335773ffffffffffffffffffffffffffffffffffffffff82165f9081526002602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611a3157611a008282614c0f565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526002602090815260408083203384529091529020555b505b611a3d8282612806565b600780546fffffffffffffffffffffffffffffffff808216879003167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116179055600354600654611aab9173ffffffffffffffffffffffffffffffffffffffff90811691168587612dc8565b604080518581526020810183905273ffffffffffffffffffffffffffffffffffffffff808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db91015b60405180910390a49392505050565b5f611b15826120aa565b841115611b4e576040517f20adf2ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff831614611bff5773ffffffffffffffffffffffffffffffffffffffff82165f9081526002602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611bfd57611bcc8582614c0f565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526002602090815260408083203384529091529020555b505b611c0884611013565b9050611c148285612806565b600780546fffffffffffffffffffffffffffffffff808216849003167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116179055600354600654611c829173ffffffffffffffffffffffffffffffffffffffff90811691168584612dc8565b604080518281526020810186905273ffffffffffffffffffffffffffffffffffffffff808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db9101611afc565b5f6127107f00000000000000000000000000000000000000000000000000000000000000008103611d146cffffffffffffffffffffffffff611d29565b0281611d2257611d22614d84565b0492915050565b5f61092b825f54611d646007546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204160190565b6126e2565b6007545f906fffffffffffffffffffffffffffffffff168181611d8c575f611d91565b600182035b73ffffffffffffffffffffffffffffffffffffffff85165f9081526001602052604081205491925090611dc3906108eb565b6006546040517fc79ee60d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015292935091169063c79ee60d906024015b602060405180830381865afa158015611e34573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e589190614b70565b15611e63575f611e6d565b611e6d8282612ed6565b95945050505050565b60035474010000000000000000000000000000000000000000900460ff1615611ecb576040517f8f02272600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055620f42405f55600780547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016600117905584611f465782611f48565b835b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff93841617909155600680548216848416179055600880547fffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000062ffffff8716908102919091179091556004805490921687841617909155600580549286167fffffffffffffffffffffff00000000000000000000000000000000000000000090931692909217740100000000000000000000000000000000000000008815150217909155612710907f000000000000000000000000000000000000000000000000000000000000000002600880547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016929091046fffffffffffffffffffffffffffffffff169190911790555050505050565b6007545f906fffffffffffffffffffffffffffffffff16816120d9826120d0575f611d29565b60018303611d29565b73ffffffffffffffffffffffffffffffffffffffff8581165f81815260016020526040908190205460065491517fc79ee60d00000000000000000000000000000000000000000000000000000000815260048101939093529394509091169063c79ee60d90602401611e19565b60065473ffffffffffffffffffffffffffffffffffffffff163314612197576040517f2dd1912a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81121561231e576003545f829003906121c99073ffffffffffffffffffffffffffffffffffffffff16853384612dc8565b6121db836121d683611d29565b612897565b600780548291905f906122019084906fffffffffffffffffffffffffffffffff16614be7565b82546fffffffffffffffffffffffffffffffff9182166101009390930a92830291909202199091161790555073ffffffffffffffffffffffffffffffffffffffff83165f908152600160205260409020547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156122cd5773ffffffffffffffffffffffffffffffffffffffff84165f90815260016020526040812081905580547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff839003019055612317565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526001602052604090207fff00000000000000000000000000000000000000000000000000000000000001820190555b5050505050565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600160205260409020547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561239b575f80547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9290920390910181556123be565b7fff00000000000000000000000000000000000000000000000000000000000001015b73ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604081208290556123ee83611d29565b90508181111561246a57612403848684612d20565b5f54612464866121d6856124598882870361245460018361244e6007546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204160190565b03612eeb565b612ef9565b036127108502612ed6565b50612317565b612317848683612d20565b5f61092b7f00000000000000000000000000000000000000000000000000000000000000006127100383025f546127106124d96007546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204160190565b026126e2565b6007546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004165f612515612b6a565b9050909192565b5f6001815b61252a86612f72565b8110156126165761253b8682613025565b1561260e575f61256a61254d8861303b565b612557898561304d565b0262ffffff166002808204910615150190565b90506125a483600283900b6125916125878b87603002604c011c90565b8d0360020b613060565b8161259e5761259e614d84565b0561307a565b9250505f5f5f5f5f6125b78b878c613088565b90506125c38d826130f3565b90955093506125d28c826130f3565b909350915061260790506126008285036fffffffffffffffffffffffffffffffff858803165b9060801b0190565b8890613171565b9650505050505b600101612521565b507f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82011d6126d66127108261266d8760801d90565b600f0b028161267e5761267e614d84565b056125f86127108488600f0b028161269857612698614d84565b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000881691900587016fffffffffffffffffffffffffffffffff160190565b98975050505050505050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050805f03612735575f841161272a575f5ffd5b508290049050610c56565b808411612740575f5ffd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f6127b78484846126e2565b90505f82806127c8576127c8614d84565b8486091115610c56577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81106127fc575f5ffd5b6001019392505050565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600160205260408120805483929061283a908490614c0f565b90915550505f8054829003815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600160205260408120805483019055805482919081906128d3908490614bd4565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161288b565b806fffffffffffffffffffffffffffffffff8116811461296e576040517fb668004500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b80515f90815b81811015612ab0575f84828151811061299457612994614cd0565b60200260200101515f600281106129ad576129ad614cd0565b602002015190505f6129ec8684815181106129ca576129ca614cd0565b60200260200101516001600281106129e4576129e4614cd0565b602002015190565b60055490915074010000000000000000000000000000000000000000900460ff165f81612a5157612a4c888681518110612a2857612a28614cd0565b6020026020010151600160028110612a4257612a42614cd0565b602002015161323a565b612a8a565b612a8a888681518110612a6657612a66614cd0565b6020026020010151600160028110612a8057612a80614cd0565b6020020151613249565b90505f612a9a85858c8587613258565b9790970196505060019093019250612979915050565b505092915050565b5f5f5f868603600f0b85600f0b0390505f815f1480612ad45750845b612b0e57612b09612ae483613060565b6008546fffffffffffffffffffffffffffffffff1602620f4240808204910615150190565b612b10565b5f5b612b587f00000000000000000000000000000000000000000000000000000000000000008a8a016fffffffffffffffffffffffffffffffff1602612710808204910615150190565b01918201989197509095505050505050565b5f612b9f6007546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204160190565b6007546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000909104166127100281612bda57612bda614d84565b04905090565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612c7257612c418382614c0f565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526002602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85165f9081526001602052604081208054859290612ca6908490614c0f565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f81815260016020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612d0d9087815260200190565b60405180910390a3506001949350505050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604081208054839290612d54908490614c0f565b909155505073ffffffffffffffffffffffffffffffffffffffff8083165f81815260016020526040908190208054850190555190918516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612dbb9085815260200190565b60405180910390a3505050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815284816004015283816024015282816044015260205f6064835f8a5af13d15601f3d1160015f511416171691505080612317576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f90815260016020526040812080548391908390612e73908490614c0f565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f81815260016020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b459086815260200190565b5f818310612ee45781610c56565b5090919050565b5f818313612ee45781610c56565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050805f03612f41575f841161272a575f5ffd5b808411612740577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92505050610c56565b5f7afe0000000000fe0000000000fe0000000000fe0000000000000000821668010000000000000000811015612faa57505f92915050565b6e010000000000000000000000000000811015612fca5750600192915050565b74010000000000000000000000000000000000000000811015612ff05750600292915050565b7a01000000000000000000000000000000000000000000000000000081101561301c5750600392915050565b50600492915050565b5f60026048603084020184901c5b069392505050565b5f62010000603083901c5b0692915050565b5f6110006064603084020184901c613033565b5f5f82136130765761307182614db1565b61092b565b5090565b5f818311612ee45781610c56565b5f808061309586866132b4565b90925090505f6130a587876132eb565b6130c1906fffffffffffffffffffffffffffffffff8716614d6d565b90506130cd87876132fd565b5f036130e8576130de83838361330f565b9350505050610c56565b6130de8383836133f4565b5f5f6130ff8360e81c90565b60020b8460020b1361311b5761311483613445565b915061316a565b6131258360d01c90565b60020b8460020b126131415761313a836134e7565b905061316a565b61315361314e848661353c565b613445565b9150613167613162848661358a565b6134e7565b90505b9250929050565b5f5f61317d8360801d90565b600f0b61318a8560801d90565b600f0b039050805f84600f0b86600f0b0390505f8190508383600f0b1415806131b657508181600f0b14155b156131ed576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61322f837fffffffffffffffffffffffffffffffff0000000000000000000000000000000087168388016fffffffffffffffffffffffffffffffff16016125f8565b979650505050505050565b5f62010000609083901c613046565b5f62010000608083901c613046565b5f5f61326387612f72565b90505f5b818110156132a9578361327b57600161327d565b5f5b60ff1661328a89836135d8565b036132a15761329c88828989896135ea565b830192505b600101613267565b505095945050505050565b5f806132e06132c88585603002604c011c90565b6132d2868661304d565b6132db8761303b565b61361a565b909590945092505050565b5f60806041603084020184901c613033565b5f60026040603084020184901c613033565b5f5f61331a85613638565b90505f61332685613638565b9050610c10868661338d6133888861336a8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16613998565b88880373ffffffffffffffffffffffffffffffffffffffff166126e2565b612922565b7fffffff000000000000000000000000000000000000000000000000000000000060e884901b167cffffff000000000000000000000000000000000000000000000000000060d084901b16016fffffffffffffffffffffffffffffffff8216019392505050565b5f5f6133ff85613638565b90505f61340b85613638565b9050610c10868661338d613388886c0100000000000000000000000088880373ffffffffffffffffffffffffffffffffffffffff166126e2565b5f5f6134596134548460e81c90565b613638565b90505f6134696134548560d01c90565b905073ffffffffffffffffffffffffffffffffffffffff82166134d16060866fffffffffffffffffffffffffffffffff16901b84840373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff166126e2565b816134de576134de614d84565b04949350505050565b5f5f6134f66134548460e81c90565b90505f6135066134548560d01c90565b9050610ee4846fffffffffffffffffffffffffffffffff1683830373ffffffffffffffffffffffffffffffffffffffff16613998565b5f610c567cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84168360e81b7fffffff0000000000000000000000000000000000000000000000000000000000160190565b5f610c567fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff84168360d01b7cffffff0000000000000000000000000000000000000000000000000000160190565b5f60026049603084020184901c613033565b5f846135f68782613a38565b1461360d576136088686868686613a4a565b610c10565b610c108686868686613a9f565b5f5f5f5f6136288686613cc7565b9088039897019695505050505050565b5f5f5f8360020b1261364d578260020b613654565b8260020b5f035b9050620d89e8811115613693576040517fce8ef7fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816001165f036136b5577001000000000000000000000000000000006136c7565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156136fb576ffff97272373d413259a46990580e213a0260801c5b600482161561371a576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613739576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613758576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613777576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613796576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156137b5576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156137d5576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156137f5576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613815576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613835576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613855576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613875576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613895576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156138b5576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156138d6576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156138f6576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615613915576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615613932576b048a170391f7dc42444e8fa20260801c5b5f8460020b131561397057807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8161396c5761396c614d84565b0490505b640100000000810615613984576001613986565b5f5b60ff16602082901c0192505050919050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050805f036139e0575060601c905061092b565b806c01000000000000000000000000116139f8575f5ffd5b5f6c0100000000000000000000000085870980840360601c9310909103740100000000000000000000000000000000000000000291909117949350505050565b5f6004604a603084020184901c613033565b5f80613a568787613a38565b90505f613a638888613025565b9050613a6f8883613025565b8114613a925780600103613a8d57613a8a8887898588613d09565b92505b6132a9565b6126d68888888888613ecd565b5f80613aab87876135d8565b90505f613ab9888789613ef2565b90505f8215613ad157613acc8260801c90565b613ad3565b815b90505f613ae08a8a613025565b9050613aed82828861402d565b9450805f03613cba575f80613b028c8c6132b4565b915091508060020b8960020b12158015613b1c5750856001145b80613b3557508160020b8960020b128015613b35575085155b613cb7575f613b498d8d603002604c011c90565b90505f87600114613b8b57613b866134548c84036002027ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186140ac565b613bbd565b613bbd613454838d036002027ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186140ac565b90508360020b8b60020b128015613bd45750876001145b80613bee57508260020b8b60020b12158015613bee575087155b15613c3f5773ffffffffffffffffffffffffffffffffffffffff81166c0100000000000000000000000003613c356fffffffffffffffffffffffffffffffff8816826140c0565b8a01995050613cb4565b5f613c4f85840384860301613638565b90505f613cac886fffffffffffffffffffffffffffffffff1684840373ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000008573ffffffffffffffffffffffffffffffffffffffff16016127ab565b9a909a019950505b50505b50505b5050505095945050505050565b5f806002613cd58486614de7565b613cdf9190614e06565b613cfe613cec8587614e9e565b62ffffff166002808204910615150190565b915091509250929050565b5f5f613d16878787613ef2565b90505f613d24888887613ef2565b905081608081811c90839081901c5f613d3d8d8c6135d8565b905080613d4a8e8d6132fd565b14613df557805f03613da657826fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff1610613d8957828503613d8d565b8483035b6fffffffffffffffffffffffffffffffff169750613e9a565b816fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff1610613dd957818403613d8d565b8382036fffffffffffffffffffffffffffffffff169750613e9a565b5f5f5f83600103613e205750506fffffffffffffffffffffffffffffffff8087169150841685613e3c565b50506fffffffffffffffffffffffffffffffff80861691508316865b818310613e6e57613e69816fffffffffffffffffffffffffffffffff168385030283808204910615150190565b613e94565b613e94816fffffffffffffffffffffffffffffffff168484030284808204910615150190565b9a505050505b613ebc88613eb78315613ead5786613eaf565b875b60018d61402d565b61307a565b9d9c50505050505050505050505050565b5f8160010b5f14613ede5781613ee1565b60015b5f039150610c108686868686613a9f565b5f80808080613f0188876132b4565b915091505f613f4c613f1284613638565b73ffffffffffffffffffffffffffffffffffffffff16613f3184613638565b73ffffffffffffffffffffffffffffffffffffffff16613998565b9050613f5889886132fd565b5f03613f9a57613f6889886132eb565b613f729089614ebc565b9450613f93613388866fffffffffffffffffffffffffffffffff16836140c0565b9350613fe0565b613fa489886132eb565b613fae9089614ebc565b9350613fdd613388856fffffffffffffffffffffffffffffffff166c01000000000000000000000000846127ab565b94505b6140206fffffffffffffffffffffffffffffffff86168560801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b9998505050505050505050565b5f825f03614072575f6140428360010b614119565b905061406a81866fffffffffffffffffffffffffffffffff1602612710808204910615150190565b915050610c56565b82600103610c56575f6140848361422f565b9050611e6d81866fffffffffffffffffffffffffffffffff1602612710808204910615150190565b5f8160020b8360020b13612ee45781610c56565b5f6140cb8383613998565b90505f6c01000000000000000000000000838509111561092b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110614110575f5ffd5b60010192915050565b5f7f00000000000000000000000000000000000000000000000000000000000000008183121561414e575f9290920391600290045b7f000000000000000000000000000000000000000000000000000000000000000083101561417c5792915050565b7f00000000000000000000000000000000000000000000000000000000000000008311156141ae575061271092915050565b7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000037f000000000000000000000000000000000000000000000000000000000000000084038261271003028161422757614227614d84565b040192915050565b5f7f00000000000000000000000000000000000000000000000000000000000000008261ffff16101561428357507f0000000000000000000000000000000000000000000000000000000000000000919050565b7f00000000000000000000000000000000000000000000000000000000000000008261ffff1611156142d75760027f0000000000000000000000000000000000000000000000000000000000000000611d22565b60027f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000038361ffff167f0000000000000000000000000000000000000000000000000000000000000000037f0000000000000000000000000000000000000000000000000000000000000000028161437257614372614d84565b047f00000000000000000000000000000000000000000000000000000000000000000181611d2257611d22614d84565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610c5660208301846143a2565b5f60208284031215614410575f5ffd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114614438575f5ffd5b50565b8035600f81900b811461296e575f5ffd5b5f5f5f5f5f60a08688031215614460575f5ffd5b853561446b81614417565b94506144796020870161443b565b93506144876040870161443b565b92506144956060870161443b565b91506144a36080870161443b565b90509295509295909350565b5f5f604083850312156144c0575f5ffd5b82356144cb81614417565b946020939093013593505050565b8035600281900b811461296e575f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff8111828210171561453a5761453a6144ea565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614587576145876144ea565b604052919050565b80356fffffffffffffffffffffffffffffffff8116811461296e575f5ffd5b5f5f5f5f5f60a086880312156145c2575f5ffd5b85356145cd81614417565b94506145db602087016144d9565b9350604086013567ffffffffffffffff8111156145f6575f5ffd5b8601601f81018813614606575f5ffd5b803567ffffffffffffffff811115614620576146206144ea565b61462f60208260051b01614540565b8082825260208201915060208360061b85010192508a831115614650575f5ffd5b6020840193505b828410156146b7578a601f85011261466d575f5ffd5b614675614517565b80604086018d811115614686575f5ffd5b865b818110156146a0578035845260209384019301614688565b505083525060409390930192602090910190614657565b95506146c9925050506060870161458f565b91506144a36080870161458f565b8035801515811461296e575f5ffd5b5f5f5f5f5f60a086880312156146fa575f5ffd5b853561470581614417565b94506147136020870161443b565b93506147216040870161443b565b925061472f6060870161443b565b91506144a3608087016146d7565b5f5f5f6060848603121561474f575f5ffd5b833561475a81614417565b9250602084013561476a81614417565b929592945050506040919091013590565b5f6020828403121561478b575f5ffd5b8135610c5681614417565b5f5f604083850312156147a7575f5ffd5b8235915060208301356147b981614417565b809150509250929050565b5f5f83601f8401126147d4575f5ffd5b50813567ffffffffffffffff8111156147eb575f5ffd5b6020830191508360208260051b850101111561316a575f5ffd5b5f5f5f5f5f60808688031215614819575f5ffd5b85359450602086013561482b81614417565b9350604086013561483b81614417565b9250606086013567ffffffffffffffff811115614856575f5ffd5b614862888289016147c4565b969995985093965092949392505050565b5f5f60208385031215614884575f5ffd5b823567ffffffffffffffff81111561489a575f5ffd5b6148a6858286016147c4565b90969095509350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614927577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526149128583516143a2565b945060209384019391909101906001016148d8565b50929695505050505050565b5f5f5f60608486031215614945575f5ffd5b83359250602084013561495781614417565b9150604084013561496781614417565b809150509250925092565b5f5f5f5f5f60a08688031215614986575f5ffd5b61498f866146d7565b9450602086013561499f81614417565b935060408601356149af81614417565b9250606086013562ffffff811681146149c6575f5ffd5b915060808601356149d681614417565b809150509295509295909350565b5f5f604083850312156149f5575f5ffd5b8235614a0081614417565b915060208301356147b981614417565b5f5f5f5f5f60a08688031215614a24575f5ffd5b614a2d866144d9565b9450614a3b602087016144d9565b935060408601359250614a506060870161458f565b949793965091946080013592915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152831515604082015262ffffff8316606082015260a060808201525f61322f60a08301846143a2565b5f60208284031215614ace575f5ffd5b815167ffffffffffffffff811115614ae4575f5ffd5b8201601f81018413614af4575f5ffd5b805167ffffffffffffffff811115614b0e57614b0e6144ea565b614b3f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614540565b818152856020838501011115614b53575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f60208284031215614b80575f5ffd5b5051919050565b5f60208284031215614b97575f5ffd5b815160ff81168114610c56575f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561092b5761092b614ba7565b6fffffffffffffffffffffffffffffffff818116838216019081111561092b5761092b614ba7565b8181038181111561092b5761092b614ba7565b6fffffffffffffffffffffffffffffffff828116828216039081111561092b5761092b614ba7565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820181905281018290525f8360608301825b85811015614c97578235825260209283019290910190600101614c79565b509695505050505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f610ee460408301846143a2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614d30575f5ffd5b83018035915067ffffffffffffffff821115614d4a575f5ffd5b60200191503681900382131561316a575f5ffd5b818382375f9101908152919050565b808202811582820484141761092b5761092b614ba7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f7f80000000000000000000000000000000000000000000000000000000000000008203614de157614de1614ba7565b505f0390565b5f8260020b8260020b028060020b91508082146118b7576118b7614ba7565b5f8160020b8360020b80614e41577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000083141615614e9557614e95614ba7565b90059392505050565b62ffffff81811683821602908116908181146118b7576118b7614ba7565b6fffffffffffffffffffffffffffffffff81811683821602908116908181146118b7576118b7614ba756fea2646970667358221220e097d0dba8ea87530a18246f8894c3a0b1b6f21e9e39e8977400d0b149c305b164736f6c634300081c0033000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000007d000000000000000000000000000000000000000000000000000000000000003e8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000138800000000000000000000000000000000000000000000000000000000000023280000000000000000000000000000000000000000000000000000000000004e2000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000646112e8ac000000000000000000000000bf24cbfe40482980ad88b11add53600edcf0faedbf24cbfe40482980ad88b11add53600edcf0faed6ce1da12dd8ef5c21e16fc86000000000000000000000000000000000000000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004fc461ff715fbf24cbfe40482980ad88b11add53600edcf0faed6ce1da12dd8ef5c21e16fc8600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000004f52610100604052348015610010575f5ffd5b50604051614e12380380614e1283398101604081905261002f91610358565b82828260405180602001604052805f81525060405180602001604052805f8152508484845f5f90505b8351811015610138575f5b8382815181106100755761007561042b565b60200260200101515181101561012f578282815181106100975761009761042b565b602002602001015181815181106100b0576100b061042b565b60200260200101515f5f8785815181106100cc576100cc61042b565b602002602001015181526020019081526020015f205f8685815181106100f4576100f461042b565b6020026020010151848151811061010d5761010d61042b565b60209081029190910181015182528101919091526040015f2055600101610063565b50600101610058565b50505050816001908161014b91906104c3565b50600261015882826104c3565b5050506001600160a01b03998a1660a052505050509385166080525090831660c05290911660e0525061057d565b6001600160a01b038116811461019a575f5ffd5b50565b80516101a881610186565b919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156101e9576101e96101ad565b604052919050565b5f6001600160401b03821115610209576102096101ad565b5060051b60200190565b5f82601f830112610222575f5ffd5b8151610235610230826101f1565b6101c1565b8082825260208201915060208360051b860101925085831115610256575f5ffd5b602085015b8381101561027357805183526020928301920161025b565b5095945050505050565b5f82601f83011261028c575f5ffd5b815161029a610230826101f1565b8082825260208201915060208360051b8601019250858311156102bb575f5ffd5b602085015b838110156102735780516001600160401b038111156102dd575f5ffd5b8601603f810188136102ed575f5ffd5b60208101516102fe610230826101f1565b808282526020820191506020808460051b8601010192508a831115610321575f5ffd5b6040840193505b82841015610343578351825260209384019390910190610328565b865250506020938401939190910190506102c0565b5f5f5f5f5f5f5f60e0888a03121561036e575f5ffd5b875161037981610186565b96506103876020890161019d565b95506103956040890161019d565b94506103a36060890161019d565b60808901519094506001600160401b038111156103be575f5ffd5b6103ca8a828b01610213565b60a08a015190945090506001600160401b038111156103e7575f5ffd5b6103f38a828b0161027d565b60c08a015190935090506001600160401b03811115610410575f5ffd5b61041c8a828b0161027d565b91505092959891949750929550565b634e487b7160e01b5f52603260045260245ffd5b600181811c9082168061045357607f821691505b60208210810361047157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156104be57805f5260205f20601f840160051c8101602085101561049c5750805b601f840160051c820191505b818110156104bb575f81556001016104a8565b50505b505050565b81516001600160401b038111156104dc576104dc6101ad565b6104f0816104ea845461043f565b84610477565b6020601f821160018114610522575f831561050b5750848201515b5f19600385901b1c1916600184901b1784556104bb565b5f84815260208120601f198516915b828110156105515787850151825560209485019460019092019101610531565b508482101561056e57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805160a05160c05160e05161485b6105b75f395f611ba701525f81816107ba0152611b5901525f611a6301525f6118f5015261485b5ff3fe608060405260043610610123575f3560e01c806395d89b41116100a1578063b88d4fde11610071578063daa4c69711610057578063daa4c69714610380578063e985e9c51461039f578063f2626ead146103d8575f5ffd5b8063b88d4fde14610342578063c87b56dd14610361575f5ffd5b806395d89b41146102d0578063a03ba02f146102e4578063a22cb46514610303578063ac9650d814610322575f5ffd5b80630efb8bac116100f657806342842e0e116100dc57806342842e0e146102655780636352211e1461028457806370a08231146102a3575f5ffd5b80630efb8bac1461020357806323b872dd14610246575f5ffd5b806301ffc9a71461012757806306fdde031461015b578063081812fc1461017c578063095ea7b3146101e2575b5f5ffd5b348015610132575f5ffd5b506101466101413660046139a2565b61041c565b60405190151581526020015b60405180910390f35b348015610166575f5ffd5b5061016f610500565b6040516101529190613a09565b348015610187575f5ffd5b506101bd610196366004613a1b565b60056020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610152565b3480156101ed575f5ffd5b506102016101fc366004613a53565b61058c565b005b34801561020e575f5ffd5b5061022261021d366004613a98565b6106d8565b604080516bffffffffffffffffffffffff9093168352602083019190915201610152565b348015610251575f5ffd5b50610201610260366004613aed565b6108fc565b348015610270575f5ffd5b5061020161027f366004613aed565b610bbf565b34801561028f575f5ffd5b506101bd61029e366004613a1b565b610d22565b3480156102ae575f5ffd5b506102c26102bd366004613b2b565b610db2565b604051908152602001610152565b3480156102db575f5ffd5b5061016f610e58565b3480156102ef575f5ffd5b5061016f6102fe366004613c59565b610e65565b34801561030e575f5ffd5b5061020161031d366004613cd7565b61112f565b610335610330366004613d12565b6111c5565b6040516101529190613d83565b34801561034d575f5ffd5b5061020161035c366004613e04565b6112d3565b34801561036c575f5ffd5b5061016f61037b366004613a1b565b611427565b34801561038b575f5ffd5b506101bd61039a366004613ead565b611857565b3480156103aa575f5ffd5b506101466103b9366004613f04565b600660209081525f928352604080842090915290825290205460ff1681565b3480156103e3575f5ffd5b506101bd6103f2366004613b2b565b73ffffffffffffffffffffffffffffffffffffffff9081165f908152600760205260409020541690565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806104ae57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806104fa57507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6001805461050d90613f30565b80601f016020809104026020016040519081016040528092919081815260200182805461053990613f30565b80156105845780601f1061055b57610100808354040283529160200191610584565b820191905f5260205f20905b81548152906001019060200180831161056757829003601f168201915b505050505081565b5f8181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806105ed575073ffffffffffffffffffffffffffffffffffffffff81165f90815260066020908152604080832033845290915290205460ff165b610658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b5f8281526005602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b5f806bffffffffffffffffffffffff851684015b80866bffffffffffffffffffffffff1610156108f157604080517fffffffffffffffffffff0000000000000000000000000000000000000000000060608b811b821660208401528a901b16602a8201527fffffffffffffffffffffffff000000000000000000000000000000000000000060a089901b1660348201525f910160405160208183030381529060405261078390613f81565b90505f73b6523900510d44fbf2a19f73dbfc24e13c03a95b634a18eb8f61083573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016856040513060388201526f5af43d82803e903d91602b57fd5bf3ff60248201526014810192909252733d602d80600a3d3981f3363d3d373d3d3d363d73825260588201526037600c8201206078820152605560439091012090565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865af415801561089c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c09190613fc3565b9050838111156108d1578093508794505b8581106108e45787945092506108f19050565b60018801975050506106ec565b509550959350505050565b5f8181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d00000000000000000000000000000000000000000000604482015260640161064f565b73ffffffffffffffffffffffffffffffffffffffff8216610a08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e54000000000000000000000000000000604482015260640161064f565b3373ffffffffffffffffffffffffffffffffffffffff84161480610a5b575073ffffffffffffffffffffffffffffffffffffffff83165f90815260066020908152604080832033845290915290205460ff165b80610a8857505f8181526005602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b610aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015260640161064f565b73ffffffffffffffffffffffffffffffffffffffff8084165f81815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055938616808352848320805460010190558583526003825284832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168317909155600590925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610bca8383836108fc565b73ffffffffffffffffffffffffffffffffffffffff82163b15610d1d576040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401525f608484015290919084169063150b7a029060a4016020604051808303815f875af1158015610c70573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c949190613fda565b7fffffffff000000000000000000000000000000000000000000000000000000001614610d1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161064f565b505050565b5f8181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610dad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e54454400000000000000000000000000000000000000000000604482015260640161064f565b919050565b5f73ffffffffffffffffffffffffffffffffffffffff8216610e30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015260640161064f565b5073ffffffffffffffffffffffffffffffffffffffff165f9081526004602052604090205490565b6002805461050d90613f30565b6040517f4a18eb8f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152606090600f8616905f9073b6523900510d44fbf2a19f73dbfc24e13c03a95b90634a18eb8f90602401602060405180830381865af4158015610eeb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f0f9190613fc3565b90505f610f1c8383611ef8565b9050610f2b8189848a8a6121a1565b9050611103610f518973ffffffffffffffffffffffffffffffffffffffff1660146123b9565b5f8581527f7f98b23ecc45ef8113f30246eedf02ba90aaeca2cd03443f1b6caef9aed885f96020526040902054610f87906123fd565b610f9085612408565b604051602001610fa192919061400c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610fdd929160200161400c565b6040516020818303038152906040528888610ff789612468565b60405160200161100993929190614050565b60405160208183030381529060405261102185612408565b5f8681527f934fcfd0ac41364bf414d3f5dd474e8c0fa3c5e6745ad2c3cf0573b1c870f1786020526040902054611057906123fd565b604051602001611068929190614113565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181525f8881527f7f98b23ecc45ef8113f30246eedf02ba90aaeca2cd03443f1b6caef9aed885f960205220546110c9906123fd565b6110d161251a565b6110da87612d02565b6040516020016110ef9695949392919061414e565b604051602081830303815290604052612d02565b6040516020016111139190614348565b6040516020818303038152906040529350505050949350505050565b335f81815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60608167ffffffffffffffff8111156111e0576111e0613b46565b60405190808252806020026020018201604052801561121357816020015b60608152602001906001900390816111fe5790505b5090505f5b828110156112cc575f803086868581811061123557611235614379565b905060200281019061124791906143a6565b60405161125592919061440e565b5f60405180830381855af49150503d805f811461128d576040519150601f19603f3d011682016040523d82523d5f602084013e611292565b606091505b5091509150816112a457805160208201fd5b808484815181106112b7576112b7614379565b60209081029190910101525050600101611218565b5092915050565b6112de8585856108fc565b73ffffffffffffffffffffffffffffffffffffffff84163b15611420576040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063150b7a02906113579033908a9089908990899060040161441d565b6020604051808303815f875af1158015611373573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113979190613fda565b7fffffffff000000000000000000000000000000000000000000000000000000001614611420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161064f565b5050505050565b60605f8290506118508173b6523900510d44fbf2a19f73dbfc24e13c03a95b6395917e7a8473ffffffffffffffffffffffffffffffffffffffff16634f94c5306040518163ffffffff1660e01b8152600401602060405180830381865afa158015611494573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114b891906144aa565b73ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611500573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152491906144aa565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024015f60405180830381865af415801561158a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526115cf91908101906144c5565b73b6523900510d44fbf2a19f73dbfc24e13c03a95b6395917e7a8573ffffffffffffffffffffffffffffffffffffffff16634f94c5306040518163ffffffff1660e01b8152600401602060405180830381865afa158015611632573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061165691906144aa565b73ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561169e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c291906144aa565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024015f60405180830381865af4158015611728573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261176d91908101906144c5565b8473ffffffffffffffffffffffffffffffffffffffff16634f94c5306040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117b6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117da91906144aa565b73ffffffffffffffffffffffffffffffffffffffff1663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa158015611822573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611846919061453a565b62ffffff16610e65565b9392505050565b5f8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610611892578385611895565b84845b6040517f1698ee8200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8084166004830152808316602483015262ffffff871660448301529297509095505f917f00000000000000000000000000000000000000000000000000000000000000001690631698ee8290606401602060405180830381865afa15801561193a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061195e91906144aa565b905073ffffffffffffffffffffffffffffffffffffffff81166119ad576040517f4f361fe400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8181165f908152600760205260409020541615611a0b576040517f7983c05100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc035e24200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152868116602483015262ffffff861660448301527f0000000000000000000000000000000000000000000000000000000000000000169063c035e242906064015f604051808303815f87803b158015611aa4575f5ffd5b505af1158015611ab6573d5f5f3e3d5ffd5b5050604080517fffffffffffffffffffff0000000000000000000000000000000000000000000033606090811b8216602084015286901b16602a8201527fffffffffffffffffffffffff000000000000000000000000000000000000000060a088901b1660348201525f9350019050604051602081830303815290604052611b3d90613f81565b9050611b7f73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682612d0f565b92505f611bcd611b90836001614582565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690612d0f565b90505f611bde611b90846002614582565b6040517fd8ba510c0000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff8b811660248301528a8116604483015262ffffff8a16606483015287811660848301529192509083169063d8ba510c9060a4015f604051808303815f87803b158015611c6a575f5ffd5b505af1158015611c7c573d5f5f3e3d5ffd5b50506040517fd8ba510c0000000000000000000000000000000000000000000000000000000081525f600482015273ffffffffffffffffffffffffffffffffffffffff8c811660248301528b8116604483015262ffffff8b16606483015288811660848301528416925063d8ba510c915060a4015f604051808303815f87803b158015611d07575f5ffd5b505af1158015611d19573d5f5f3e3d5ffd5b50506040517fe8a792fc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301528c811660248301528b81166044830152858116606483015284811660848301528816925063e8a792fc915060a4015f604051808303815f87803b158015611da3575f5ffd5b505af1158015611db5573d5f5f3e3d5ffd5b5050505073ffffffffffffffffffffffffffffffffffffffff8481165f818152600760205260409081902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169389169390931790925590517f32148f67000000000000000000000000000000000000000000000000000000008152603360048201526332148f67906024015f604051808303815f87803b158015611e5a575f5ffd5b505af1158015611e6c573d5f5f3e3d5ffd5b50505073ffffffffffffffffffffffffffffffffffffffff86169050611e923382612dd0565b6040805173ffffffffffffffffffffffffffffffffffffffff8581168252848116602083015280881692908916917f5f7560a5797edc6f72421362defa094d690eb9f7ced3cc5a5c13383502e4fcc5910160405180910390a35050505050949350505050565b7f6672616d657300000000000000000000000000000000000000000000000000005f9081526020819052606090611f8f907fb91d8243643df86448a69427c49e640b48570a9d7972520807ad21ce3b248bf29060128510611f715760178510611f61575f611f7c565b611f6c856017614595565b611f7c565b611f7c6003866145d5565b81526020019081526020015f2054612f67565b604080518082018252600e81527f3c212d2d204c4142454c202d2d3e0000000000000000000000000000000000006020808301919091525f8781527f7f98b23ecc45ef8113f30246eedf02ba90aaeca2cd03443f1b6caef9aed885f9909152919091205491925061201d9161201590612007906123fd565b61201086612f7a565b612fb0565b839190613214565b604080518082018252600f81527f3c212d2d2046494c544552202d2d3e00000000000000000000000000000000006020808301919091525f8681527f1947e2f3b28d67acaca05a6bfbe5324d3779c5816467e7d5ae12cabf6a56bd6990915291909120549192506118509161209190612f67565b604080518082018252600c81527f3c212d2d20415254202d2d3e00000000000000000000000000000000000000006020808301919091525f8981527ff6ff15696fcd98b5c1a0b33d3221f7a9ec7068f5e0d630b9a639a13fb9203b85909152919091205461219a919061210390612f67565b61219a6040518060400160405280600d81526020017f3c212d2d2054455854202d2d3e000000000000000000000000000000000000008152506121925f5f7f6465736372697074696f6e73000000000000000000000000000000000000000081526020019081526020015f205f60088d61217d91906145d5565b6121889060106145e8565b611f7c908f614582565b899190613214565b9190613214565b60606122466040518060400160405280601081526020017f3c212d2d20434841494e4944202d2d3e000000000000000000000000000000008152506121e461251a565b61219a6040518060400160405280601481526020017f3c212d2d20504f4f4c41444452455353202d2d3e00000000000000000000000081525061223e8a73ffffffffffffffffffffffffffffffffffffffff1660146123b9565b8b9190613214565b604080518082018252601481527f3c212d2d205241524954595f4e414d45202d2d3e0000000000000000000000006020808301919091525f8881527f934fcfd0ac41364bf414d3f5dd474e8c0fa3c5e6745ad2c3cf0573b1c870f17890915291909120549197506122cf916122c7906122be906123fd565b61201088613352565b889190613214565b95506123af6040518060400160405280601081526020017f3c212d2d2053594d424f4c31202d2d3e00000000000000000000000000000000815250612317846120108861340f565b61219a6040518060400160405280601081526020017f3c212d2d2053594d424f4c30202d2d3e0000000000000000000000000000000081525061235d886120108b61340f565b61219a6040518060400160405280600f81526020017f3c212d2d20524152495459202d2d3e00000000000000000000000000000000008152506123a76123a28d612408565b6134b1565b8e9190613214565b9695505050505050565b60606123c583836134dd565b805161307882526002017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9091019081529392505050565b60606104fa82613581565b60606080604051019050602081016040525f8152805f19835b928101926030600a8206018453600a9004806124215750508190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909101908152919050565b60606124826124786064846145ff565b62ffffff166135ee565b61248d606484614624565b62ffffff16156124e3576124b0600a6124a681866145ff565b6124789190614624565b6124be612478600a86614624565b6040516020016124cf929190614649565b6040516020818303038152906040526124f3565b60405180602001604052805f8152505b60405160200161250492919061468b565b6040516020818303038152906040529050919050565b60604660010361255c575060408051808201909152600881527f457468657265756d000000000000000000000000000000000000000000000000602082015290565b4660380361259c575060408051808201909152600f81527f424e4220536d61727420436861696e0000000000000000000000000000000000602082015290565b4661a4b1036125dd575060408051808201909152600c81527f417262697472756d204f6e650000000000000000000000000000000000000000602082015290565b466121050361261e575060408051808201909152600481527f4261736500000000000000000000000000000000000000000000000000000000602082015290565b4661a86a0361265f575060408051808201909152601181527f4176616c616e63686520432d436861696e000000000000000000000000000000602082015290565b4660890361269f575060408051808201909152600781527f506f6c79676f6e00000000000000000000000000000000000000000000000000602082015290565b46600a036126df575060408051808201909152600881527f4f7074696d69736d000000000000000000000000000000000000000000000000602082015290565b4661a4ec03612720575060408051808201909152600481527f43454c4f00000000000000000000000000000000000000000000000000000000602082015290565b4660ee03612760575060408051808201909152600581527f426c617374000000000000000000000000000000000000000000000000000000602082015290565b46611388036127a1575060408051808201909152600681527f4d616e746c650000000000000000000000000000000000000000000000000000602082015290565b4661e708036127e2575060408051808201909152600581527f4c696e6561000000000000000000000000000000000000000000000000000000602082015290565b466208275003612824575060408051808201909152600681527f5363726f6c6c0000000000000000000000000000000000000000000000000000602082015290565b46606403612864575060408051808201909152600681527f476e6f7369730000000000000000000000000000000000000000000000000000602082015290565b4661868b036128a5575060408051808201909152600481527f4d6f646500000000000000000000000000000000000000000000000000000000602082015290565b4661bf04036128e6575060408051808201909152600781527f5a69726375697400000000000000000000000000000000000000000000000000602082015290565b4661045c03612927575060408051808201909152600f81527f436f726520426c6f636b636861696e0000000000000000000000000000000000602082015290565b4660fa03612967575060408051808201909152600681527f46616e746f6d0000000000000000000000000000000000000000000000000000602082015290565b466082036129a7575060408051808201909152600881527f556e69636861696e000000000000000000000000000000000000000000000000602082015290565b46610144036129e8575060408051808201909152600a81527f5a6b53796e632045726100000000000000000000000000000000000000000000602082015290565b4661053103612a29575060408051808201909152600381527f5365690000000000000000000000000000000000000000000000000000000000602082015290565b4661ed8803612a6a575060408051808201909152600381527f424f420000000000000000000000000000000000000000000000000000000000602082015290565b46601e03612aaa575060408051808201909152600981527f526f6f7473746f636b0000000000000000000000000000000000000000000000602082015290565b4662028c5803612aec575060408051808201909152600581527f5461696b6f000000000000000000000000000000000000000000000000000000602082015290565b4661013a03612b2d575060408051808201909152600881527f46696c65636f696e000000000000000000000000000000000000000000000000602082015290565b466101e003612b6e575060408051808201909152600b81527f576f726c6420436861696e000000000000000000000000000000000000000000602082015290565b4661050403612baf575060408051808201909152600881527f4d6f6f6e6265616d000000000000000000000000000000000000000000000000602082015290565b4661046f03612bf0575060408051808201909152600481527f4c69736b00000000000000000000000000000000000000000000000000000000602082015290565b4661012003612c31575060408051808201909152600481527f426f626100000000000000000000000000000000000000000000000000000000602082015290565b4661044d03612c72575060408051808201909152600d81527f506f6c79676f6e207a6b45564d00000000000000000000000000000000000000602082015290565b4660a903612cb2575060408051808201909152600581527f4d616e7461000000000000000000000000000000000000000000000000000000602082015290565b466276adf103612cf4575060408051808201909152600481527f5a6f726100000000000000000000000000000000000000000000000000000000602082015290565b612cfd46612408565b905090565b60606104fa825f5f6136ab565b5f763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c175f526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760095ff5905073ffffffffffffffffffffffffffffffffffffffff81166104fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f455243313136373a2063726561746532206661696c6564000000000000000000604482015260640161064f565b73ffffffffffffffffffffffffffffffffffffffff8216612e4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e54000000000000000000000000000000604482015260640161064f565b5f8181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1615612ed8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e544544000000000000000000000000000000000000604482015260640161064f565b73ffffffffffffffffffffffffffffffffffffffff82165f81815260046020908152604080832080546001019055848352600390915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60606104fa612f7583613581565b6137b7565b5f6006821015612f8d5750612328919050565b60168211612f9e5750610f3c919050565b6016821115610dad5750612328919050565b60605f805b845181101561312f575f6130415f5f7f636861724f66667365747300000000000000000000000000000000000000000081526020019081526020015f205f88858151811061300557613005614379565b016020908101517fff000000000000000000000000000000000000000000000000000000000000001682528101919091526040015f2054613581565b61304a90613f81565b90506130568184614582565b925061306181612408565b846130e45f5f7f636861725061746873000000000000000000000000000000000000000000000081526020019081526020015f205f8a87815181106130a8576130a8614379565b016020908101517fff000000000000000000000000000000000000000000000000000000000000001682528101919091526040015f20546123fd565b6040516020016130f6939291906146c7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052935050600101612fb5565b5060608382111561319e575f8261314886610d486145e8565b61315291906145d5565b9050606381111561316d5761316681612408565b9150613198565b61317681612408565b6040516020016131869190614761565b60405160208183030381529060405291505b506131d4565b5060408051808201909152600281527f333400000000000000000000000000000000000000000000000000000000000060208201525b806131e86131e36002856145d5565b612408565b846040516020016131fb93929190614792565b6040516020818303038152906040529250505092915050565b606083518351835160208701965060208601955060208501945060206040510193508287018383116132e4576001838203015f6020851061325457508388205b601f851660200360031b89515b8b51818118831c6132cb57831561329b5783888e201461329b57808a5260019c8d019c90990198848d1061329557506132df565b50613261565b5f5b8b8101518b82015260200187811061329d57509b87019b9886019887156132cb57848d1061329557506132df565b895260019b8c019b90980197838c10613261575b505050505b84935060206040510194508781038585030192505b808810156133145787518452602097880197909301926132f9565b50505f8184019081526020016040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201918252509392505050565b5f6003821015613364575060d2919050565b6006821015613375575060dc919050565b6009821015613386575060d2919050565b600c821015613397575060dc919050565b600f8210156133a95750610104919050565b60138210156133ba575060e1919050565b60148210156133cc5750610104919050565b60158210156133dd575060dc919050565b60168210156133ee575060d2919050565b60178210156133ff575060dc919050565b60178210610dad575060d2919050565b5f60038210156134225750610640919050565b60098210156134345750610546919050565b600c82101561344657506105aa919050565b600f8210156134585750610546919050565b601382101561346a57506104e2919050565b601482101561347c5750610546919050565b601582101561348e57506105aa919050565b60178210156134a05750610546919050565b60178210610dad5750610640919050565b60606104fa827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612fb0565b6060601f1960428360011b0116604051019050602081016040525f8152806f30313233343536373839616263646566600f528283018203600119855b600f811651948201946001860153600f8160041c1651855360081c84830361351957801561354e57632194895a5f526004601cfd5b5050508190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090910190815292915050565b60608160a081901c65ffffffffffff1660d082901c5f8167ffffffffffffffff8111156135b0576135b0613b46565b6040519080825280601f01601f1916602001820160405280156135da576020820181803683370190505b509050818360208301863c95945050505050565b60605f6135fa83613891565b60010190505f8167ffffffffffffffff81111561361957613619613b46565b6040519080825280601f01601f191660200182016040528015613643576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461364d575b509392505050565b6060835180156136a3576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f5184526004840193508284106137265790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f861515909102918290035290038252509392505050565b60405181516020838101938184019201015b8084101561385b578351805f1a8060051c806137fb5750600186810151855295810160020195930190920191506137c9565b600781148360011a600701821881028218600201600185836001011a85601f1660081b0101808803602082186020831102821891505f5b818101518a8201528201838110613832579a84016002019a9883019850505050505050506137c9565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08282030182525f8152602001604052919050565b5f807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106138d9577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310613905576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061392357662386f26fc10000830492506010015b6305f5e100831061393b576305f5e100830492506008015b612710831061394f57612710830492506004015b60648310613961576064830492506002015b600a83106104fa5760010192915050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461399f575f5ffd5b50565b5f602082840312156139b2575f5ffd5b813561185081613972565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61185060208301846139bd565b5f60208284031215613a2b575f5ffd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461399f575f5ffd5b5f5f60408385031215613a64575f5ffd5b8235613a6f81613a32565b946020939093013593505050565b80356bffffffffffffffffffffffff81168114610dad575f5ffd5b5f5f5f5f5f60a08688031215613aac575f5ffd5b8535613ab781613a32565b94506020860135613ac781613a32565b9350613ad560408701613a7d565b94979396509394606081013594506080013592915050565b5f5f5f60608486031215613aff575f5ffd5b8335613b0a81613a32565b92506020840135613b1a81613a32565b929592945050506040919091013590565b5f60208284031215613b3b575f5ffd5b813561185081613a32565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613bba57613bba613b46565b604052919050565b5f67ffffffffffffffff821115613bdb57613bdb613b46565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112613c16575f5ffd5b8135613c29613c2482613bc2565b613b73565b818152846020838601011115613c3d575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f60808587031215613c6c575f5ffd5b8435613c7781613a32565b9350602085013567ffffffffffffffff811115613c92575f5ffd5b613c9e87828801613c07565b935050604085013567ffffffffffffffff811115613cba575f5ffd5b613cc687828801613c07565b949793965093946060013593505050565b5f5f60408385031215613ce8575f5ffd5b8235613cf381613a32565b915060208301358015158114613d07575f5ffd5b809150509250929050565b5f5f60208385031215613d23575f5ffd5b823567ffffffffffffffff811115613d39575f5ffd5b8301601f81018513613d49575f5ffd5b803567ffffffffffffffff811115613d5f575f5ffd5b8560208260051b8401011115613d73575f5ffd5b6020919091019590945092505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015613df8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452613de38583516139bd565b94506020938401939190910190600101613da9565b50929695505050505050565b5f5f5f5f5f60808688031215613e18575f5ffd5b8535613e2381613a32565b94506020860135613e3381613a32565b935060408601359250606086013567ffffffffffffffff811115613e55575f5ffd5b8601601f81018813613e65575f5ffd5b803567ffffffffffffffff811115613e7b575f5ffd5b886020828401011115613e8c575f5ffd5b959894975092955050506020019190565b62ffffff8116811461399f575f5ffd5b5f5f5f5f60808587031215613ec0575f5ffd5b8435613ecb81613a32565b93506020850135613edb81613a32565b92506040850135613eeb81613e9d565b9150613ef960608601613a7d565b905092959194509250565b5f5f60408385031215613f15575f5ffd5b8235613f2081613a32565b91506020830135613d0781613a32565b600181811c90821680613f4457607f821691505b602082108103613f7b577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b80516020808301519190811015613f7b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b5f60208284031215613fd3575f5ffd5b5051919050565b5f60208284031215613fea575f5ffd5b815161185081613972565b5f81518060208401855e5f93019283525090919050565b5f6140178285613ff5565b7f2d0000000000000000000000000000000000000000000000000000000000000081526140476001820185613ff5565b95945050505050565b7f50616e6f7074696320506f6f6c20666f7220746865200000000000000000000081525f6140816016830186613ff5565b7f2d0000000000000000000000000000000000000000000000000000000000000081526140b16001820186613ff5565b90507f2d0000000000000000000000000000000000000000000000000000000000000081526140e36001820185613ff5565b7f206d61726b65740000000000000000000000000000000000000000000000000081526007019695505050505050565b5f61411e8285613ff5565b7f202d20000000000000000000000000000000000000000000000000000000000081526140476003820185613ff5565b7f7b226e616d65223a22000000000000000000000000000000000000000000000081525f61417f6009830189613ff5565b7f222c20226465736372697074696f6e223a22000000000000000000000000000081526141af6012820189613ff5565b90507f222c202261747472696275746573223a205b7b2274726169745f74797065223a81527f2022526172697479222c202276616c7565223a2022000000000000000000000060208201526142076035820188613ff5565b90507f227d2c207b2274726169745f74797065223a20225374726174656779222c202281527f76616c7565223a20220000000000000000000000000000000000000000000000602082015261425f6029820187613ff5565b90507f227d2c207b2274726169745f74797065223a2022436861696e4964222c20227681527f616c7565223a202200000000000000000000000000000000000000000000000060208201526142b76028820186613ff5565b90507f227d5d2c2022696d616765223a2022646174613a696d6167652f7376672b786d81527f6c3b6261736536342c0000000000000000000000000000000000000000000000602082015261433b6143126029830186613ff5565b7f227d000000000000000000000000000000000000000000000000000000000000815260020190565b9998505050505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f611850601d830184613ff5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126143d9575f5ffd5b83018035915067ffffffffffffffff8211156143f3575f5ffd5b602001915036819003821315614407575f5ffd5b9250929050565b818382375f9101908152919050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152816080820152818360a08301375f81830160a090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101949350505050565b5f602082840312156144ba575f5ffd5b815161185081613a32565b5f602082840312156144d5575f5ffd5b815167ffffffffffffffff8111156144eb575f5ffd5b8201601f810184136144fb575f5ffd5b8051614509613c2482613bc2565b81815285602083850101111561451d575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f6020828403121561454a575f5ffd5b815161185081613e9d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156104fa576104fa614555565b818103818111156104fa576104fa614555565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f826145e3576145e36145a8565b500490565b80820281158282048414176104fa576104fa614555565b5f62ffffff831680614613576146136145a8565b8062ffffff84160491505092915050565b5f62ffffff831680614638576146386145a8565b8062ffffff84160691505092915050565b7f2e0000000000000000000000000000000000000000000000000000000000000081525f61468361467d6001840186613ff5565b84613ff5565b949350505050565b5f61469961467d8386613ff5565b7f62707300000000000000000000000000000000000000000000000000000000008152600301949350505050565b7f3c67207472616e73666f726d3d227472616e736c617465282d0000000000000081525f6146f86019830186613ff5565b7f2c203029223e0000000000000000000000000000000000000000000000000000815261473161472b6006830187613ff5565b85613ff5565b7f3c2f673e0000000000000000000000000000000000000000000000000000000081526004019695505050505050565b7f300000000000000000000000000000000000000000000000000000000000000081525f6118506001830184613ff5565b7f3c67207472616e73666f726d3d227363616c6528302e3000000000000000000081525f6147c36017830186613ff5565b7f29207472616e736c61746528000000000000000000000000000000000000000081526147f3600c820186613ff5565b90507f2c203029223e000000000000000000000000000000000000000000000000000081526147316006820185613ff556fea26469706673582212205ec44727df1d3c341b8de35bd33490549e2d5a346eded5598606be0b7c5fed6e64736f6c634300081c00330000000000000000000000003620388bc1e8b888fb4cee57158ba6b9d74a87bb00000000000000000000000033128a8fc17869897dce68ed026d694621f6fdfd0000000000000000000000003bef7b81d931004f8912b611227246d6af58ad890000000000000000000000008f0024f28af02cbd54f07855c94132d291eb91e400000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000646112e8ac000000000000000000000000bf24cbfe40482980ad88b11add53600edcf0faedbf24cbfe40482980ad88b11add53600edcf0faedd43ab7bdbd12ecec00b8da94000000000000000000000000000000000000000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000614461ff715fbf24cbfe40482980ad88b11add53600edcf0faedd43ab7bdbd12ecec00b8da94000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000060c160a060405234801561000f575f5ffd5b506040516160a13803806160a183398101604081905261002e9161003f565b6001600160a01b031660805261006c565b5f6020828403121561004f575f5ffd5b81516001600160a01b0381168114610065575f5ffd5b9392505050565b608051615fec6100b55f395f8181610a02015281816118f4015281816121aa01528181612ffc01528181613446015281816135600152818161386f01526143af0152615fec5ff3fe60806040526004361061016d575f3560e01c8063ac9650d8116100c6578063c79ee60d1161007c578063efb46dc311610057578063efb46dc3146104aa578063f23a6e61146104c9578063f34f6c1a146104f4575f5ffd5b8063c79ee60d14610427578063e4ecc2391461046c578063e8a792fc1461048b575f5ffd5b8063b7e0ca96116100ac578063b7e0ca9614610386578063bc197c81146103cf578063be22465d14610413575f5ffd5b8063ac9650d814610347578063acd9cb9014610367575f5ffd5b80634d7b0900116101265780636e29ebfb116101015780636e29ebfb146102ec5780637594cdc31461030b578063a461adce14610328575f5ffd5b80634d7b0900146102805780634f94c530146102b15780635036275a146102cd575f5ffd5b80632997633f116101565780632997633f146102125780632a3f8025146102335780632dda106b14610252575f5ffd5b806301ffc9a7146101715780630828a2f8146101a5575b5f5ffd5b34801561017c575f5ffd5b5061019061018b366004614f3c565b610508565b60405190151581526020015b60405180910390f35b3480156101b0575f5ffd5b506101c46101bf366004614f7a565b61053e565b60408051600298890b815296880b602088015294870b948601949094529190940b6060840152608083019390935260a08201929092526001600160801b0390911660c082015260e00161019c565b34801561021d575f5ffd5b5061023161022c366004614ff3565b6105f8565b005b34801561023e575f5ffd5b5061023161024d36600461508b565b61062d565b34801561025d575f5ffd5b5061027161026c366004615121565b61063b565b60405161019c939291906151e3565b34801561028b575f5ffd5b506003546001600160a01b03165b6040516001600160a01b03909116815260200161019c565b3480156102bc575f5ffd5b505f546001600160a01b0316610299565b3480156102d8575f5ffd5b506102316102e736600461520a565b6106db565b3480156102f7575f5ffd5b5061023161030636600461525b565b6106ef565b348015610316575f5ffd5b506002546001600160a01b0316610299565b348015610333575f5ffd5b5061023161034236600461527b565b6108bd565b61035a6103553660046152d4565b610dde565b60405161019c9190615313565b348015610372575f5ffd5b50610231610381366004615397565b610eec565b348015610391575f5ffd5b5061039a610f23565b60408051600296870b815294860b602086015292850b9284019290925290920b6060820152608081019190915260a00161019c565b3480156103da575f5ffd5b506103fa6103e9366004615544565b63bc197c8160e01b95945050505050565b6040516001600160e01b0319909116815260200161019c565b34801561041e575f5ffd5b50610190610fc6565b348015610432575f5ffd5b5061045e6104413660046155f7565b6001600160a01b03165f9081526008602052604090205460f81c90565b60405190815260200161019c565b348015610477575f5ffd5b50610231610486366004615612565b6110ba565b348015610496575f5ffd5b506102316104a5366004615694565b6117d8565b3480156104b5575f5ffd5b506102316104c43660046156f3565b611990565b3480156104d4575f5ffd5b506103fa6104e336600461577e565b63f23a6e6160e01b95945050505050565b3480156104ff575f5ffd5b50610231611eb1565b5f6001600160e01b03198216630271189760e51b148061053857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001600160a01b0382165f90815260076020908152604080832084845290915280822054905163cacfb53560e01b81526004810191909152819081908190819081908190737bd4fc901291e995cc791946fde0248a2bcc61299063cacfb5359060240160e060405180830381865af41580156105bc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e091906157d6565b959f949e50929c50909a509850965090945092505050565b610606600186338585611fdc565b50505f61061733868661271061206d565b905080156106255760018190555b505050505050565b61062586868686868661215d565b5f5f60605f5f5f9054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa15801561068f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b3919061586b565b50505050509150506106ca88878760018b86612422565b935093509350509450945094915050565b6106e983838361341561206d565b50505050565b6002546003546040516370a0823160e01b81523360048201526001600160a01b039283169290911690849083906307a2d13a9082906370a0823190602401602060405180830381865afa158015610748573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076c91906158ed565b6040518263ffffffff1660e01b815260040161078a91815260200190565b602060405180830381865afa1580156107a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107c991906158ed565b108061089f57506040516370a0823160e01b815233600482015283906001600160a01b038316906307a2d13a9082906370a0823190602401602060405180830381865afa15801561081c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084091906158ed565b6040518263ffffffff1660e01b815260040161085e91815260200190565b602060405180830381865afa158015610879573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061089d91906158ed565b105b156106e9576040516334b3313560e11b815260040160405180910390fd5b6108c98285855f6126f0565b5f84846108d7600182615918565b8181106108e6576108e661592b565b905060200201359050610902828261276590919063ffffffff16565b158061090e5750600382115b1561092c57604051635bea27bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260076020908152604080832084845290915281205461095c908390859061277e565b90505f5f5f9054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156109ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d2919061586b565b50505050509150505f5f6109ef86866127eb90919063ffffffff16565b5f80549192509081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691633cc3c1da91163086610a378b60e81c90565b610a418c60d01c90565b6040516001600160e01b031960e088901b1681526001600160a01b0395861660048201529490931660248501526044840191909152600290810b606484015290810b608483015288900b60a4820152600160c482015260e4016040805180830381865afa158015610ab4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad8919061593f565b9092509050610afc6001600160801b0383168260801b6001600160801b0319160190565b6001600160a01b038a165f9081526004602090815260408083208b845282528083208c84529091529020805490829055909450610b39858261280e565b9450505050505f610b478490565b6001600160801b031690505f610ba8600160401b83610b668660801c90565b6001600160801b03160281610b7d57610b7d615977565b04610ba0600160401b6001600160801b03871686025b046001600160801b031690565b9060801b0190565b6002549091506001600160a01b031663083953d9895f8080866040516001600160e01b031960e088901b1681526001600160a01b039095166004860152600f93840b602486015291830b6044850152820b60648401525f03900b608482015260a4016020604051808303815f875af1158015610c26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4a919061598b565b506003546001600160a01b031663083953d9895f8080610c6a8760801d90565b6040516001600160e01b031960e088901b1681526001600160a01b039095166004860152600f93840b602486015291830b6044850152820b60648401525f03900b608482015260a4016020604051808303815f875af1158015610ccf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf3919061598b565b505f610d048789603002604c011c90565b610d0e888a61284e565b610d18898b6127eb565b60405160e893841b60208201529190921b6023820152602681019190915260460160408051601f1981840301815291815281516020928301205f8181526006909352912054909150610d6a9083612861565b5f828152600660209081526040918290209290925580518a815291820184905288916001600160a01b038c16917f4358c577d4c62044fa8caea3ad9778fe842e777c7903f2452d20661f6ff250b7910160405180910390a3505050610dd386898961271061206d565b505050505050505050565b60608167ffffffffffffffff811115610df957610df961541d565b604051908082528060200260200182016040528015610e2c57816020015b6060815260200190600190039081610e175790505b5090505f5b82811015610ee5575f8030868685818110610e4e57610e4e61592b565b9050602002810190610e6091906159ab565b604051610e6e9291906159ee565b5f60405180830381855af49150503d805f8114610ea6576040519150601f19603f3d011682016040523d82523d5f602084013e610eab565b606091505b509150915081610ebd57805160208201fd5b80848481518110610ed057610ed061592b565b60209081029190910101525050600101610e31565b5092915050565b610efb33838360018a8a6128a0565b50505f610f0c33868661271061206d565b90508015610f1a5760018190555b50505050505050565b5f8054600154604051630fa9923d60e21b81526001600160a01b0390921660048301526024820152819081908190819073b6523900510d44fbf2a19f73dbfc24e13c03a95b90633ea648f49060440160a060405180830381865af4158015610f8d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fb191906159fd565b50600154939992985090965094509092509050565b5f805460408051633850c7bd60e01b8152905183926001600160a01b031691633850c7bd9160048083019260e09291908290030181865afa15801561100d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611031919061586b565b50505050509150505f60015490505f6002600860cc84901c62ffffff168161105b5761105b615977565b0660180262ffffff1683901c600860c985901c62ffffff168161108057611080615977565b0660180262ffffff1684901c0160020b8161109d5761109d615977565b0590506103b96110b182850360020b612968565b13935050505090565b6110c68383835f6126f0565b5f6110cf612982565b5f8054600154604051630fa9923d60e21b81526001600160a01b0390921660048301526024820152919250908190819073b6523900510d44fbf2a19f73dbfc24e13c03a95b90633ea648f49060440160a060405180830381865af4158015611139573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061115d91906159fd565b50929550909350909150610201905061117a85850360020b612968565b131561119957604051630e7248fb60e41b815260040160405180910390fd5b60408051600480825260a082019092525f916020820160808036833701905050905082815f815181106111ce576111ce61592b565b602002602001019060020b908160020b8152505084816001815181106111f6576111f661592b565b600292830b6020918202929092010152815183918391811061121a5761121a61592b565b602002602001019060020b908160020b8152505083816003815181106112425761124261592b565b602002602001019060020b908160020b8152505061126788888887856127105f612a0d565b505f915081905080808667ffffffffffffffff8111156112895761128961541d565b6040519080825280602002602001820160405280156112c257816020015b6112af614ed3565b8152602001906001900390816112a75790505b5090505f6112d58a8a8a60015f8b612422565b600254929550935091506001600160a01b03166309e085108b898587866040518663ffffffff1660e01b8152600401611312959493929190615a64565b602060405180830381865afa15801561132d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135191906158ed565b6003549095506001600160a01b03166309e085108b89856113728860801c90565b61137c8760801c90565b6040518663ffffffff1660e01b815260040161139c959493929190615a64565b602060405180830381865afa1580156113b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113db91906158ed565b6002546040516317066a5760e21b81526001600160a01b038d8116600483015292965091169250635c19a95c91506024015f604051808303815f87803b158015611423575f5ffd5b505af1158015611435573d5f5f3e3d5ffd5b50506003546040516317066a5760e21b81526001600160a01b038c811660048301529091169250635c19a95c91506024015f604051808303815f87803b15801561147d575f5ffd5b505af115801561148f573d5f5f3e3d5ffd5b505050505f5f60606114c28b6001620d89e7196114ac9190615ab0565b6114ba620d89e86001615ad5565b5f8e8e6128a0565b90925090505f73b6523900510d44fbf2a19f73dbfc24e13c03a95b632a7f2f9488886114ed8d612adf565b6040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b03166044820152606481018690526084810188905260a4016040805180830381865af415801561154a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156e9190615afa565b80925081955050505f8c90505f8a90505f8d8d808060200260200160405190810160405280939291908181526020018383602002808284375f920182905250600254600354959650909473b6523900510d44fbf2a19f73dbfc24e13c03a95b9450637679c392935088925086918b918b916001600160a01b0390811691166115f58b612adf565b60066040518963ffffffff1660e01b815260040161161a989796959493929190615b73565b602060405180830381865af4158015611635573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061165991906158ed565b90506116658882612dfa565b6002549098506001600160a01b0316965063e81c105495503394508f9350611692925087915061277b9050565b6040516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152600f0b60448201526064015f604051808303815f87803b1580156116e1575f5ffd5b505af11580156116f3573d5f5f3e3d5ffd5b50506003546001600160a01b0316915063e81c10549050338b6117168560801d90565b6040516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152600f0b60448201526064015f604051808303815f87803b158015611765575f5ffd5b505af1158015611777573d5f5f3e3d5ffd5b50505050611789338c8c61271061206d565b506040518181526001600160a01b038a169033907f6f365e31bb09bf241744307ce951bb36bbc5d4a332da9714f77b420a84962de8906020015b60405180910390a35050505050505050505050565b5f546001600160a01b03161561180157604051637983c05160e01b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b038716908117825560408051633850c7bd60e01b81529051633850c7bd9160048082019260e0929091908290030181865afa158015611856573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061187a919061586b565b50505050504260d81b65ffffff000000601883901b160162ffffff8216017af590a6f276170d89e9f276170d89e9f276170d89e900000000000001600155600280546001600160a01b038781166001600160a01b0319928316811790935560038054888316931683179055604051636dfff8e560e11b81527f0000000000000000000000000000000000000000000000000000000000000000821660048201526024810193909352604483019190915288811660648301528716608482015290925073f69ba2986753c4a79f6873941dfb1fb46c0ca696915063dbfff1ca9060a4015f6040518083038186803b158015611972575f5ffd5b505af4158015611984573d5f5f3e3d5ffd5b50505050505050505050565b61199c3383835f6126f0565b5f6119a5612982565b90506119b18682612e89565b5f805460408051633850c7bd60e01b8152905183926001600160a01b031691633850c7bd9160048083019260e09291908290030181865afa1580156119f8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a1c919061586b565b505050506001600160a01b038c165f9081526007602090815260408083208e84529091528120549294509250611a4f9050565b90505f611a5c8a83612f39565b5060028054604051637e1c061160e11b815286830b60048201529188900b6024830152604482018d90526001600160801b0385166064830152608482018390529192506001600160a01b039091169063fc380c229060a401602060405180830381865afa158015611acf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611af391906158ed565b6002546040516317066a5760e21b81526001600160a01b038e8116600483015292965091169350635c19a95c925060240190505f604051808303815f87803b158015611b3d575f5ffd5b505af1158015611b4f573d5f5f3e3d5ffd5b50506003546040516317066a5760e21b81526001600160a01b038c811660048301529091169250635c19a95c91506024015f604051808303815f87803b158015611b97575f5ffd5b505af1158015611ba9573d5f5f3e3d5ffd5b50505050611bd86001888a6001620d89e719611bc59190615ab0565b611bd3620d89e86001615ad5565b611fdc565b50506002805460035460405163d42bc5e960e01b81526001600160a01b03808d166004830152602482018690529386900b604482015291831660648301529190911660848201525f9073b6523900510d44fbf2a19f73dbfc24e13c03a95b9063d42bc5e99060a401602060405180830381865af4158015611c5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c7f91906158ed565b6002549091506001600160a01b0316633bec831b8a33846040516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152600f0b60448201526064015f604051808303815f87803b158015611ce5575f5ffd5b505af1158015611cf7573d5f5f3e3d5ffd5b50506003546001600160a01b03169150633bec831b90508a33611d1a8560801d90565b6040516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152600f0b60448201526064015f604051808303815f87803b158015611d69575f5ffd5b505af1158015611d7b573d5f5f3e3d5ffd5b50506002546040516374a8f10360e01b81526001600160a01b038d8116600483015290911692506374a8f10391506024015f604051808303815f87803b158015611dc3575f5ffd5b505af1158015611dd5573d5f5f3e3d5ffd5b50506003546040516374a8f10360e01b81526001600160a01b038d8116600483015290911692506374a8f10391506024015f604051808303815f87803b158015611e1d575f5ffd5b505af1158015611e2f573d5f5f3e3d5ffd5b50505050611e4189888861271061206d565b508315611e5857611e5633868661341561206d565b505b87896001600160a01b0316336001600160a01b03167f0678d01a4d4354dc7b249ea5bc59dcd8ce288bfb79e3522e80134a85807f35a285604051611e9e91815260200190565b60405180910390a4505050505050505050565b5f805460408051633850c7bd60e01b8152905183926001600160a01b031691633850c7bd9160048083019260e09291908290030181865afa158015611ef8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f1c919061586b565b50506001545f8054604051635601910160e01b815261ffff808816600483015286166024820152603c604482015260648101939093526001600160a01b0316608483015293975091955091935073b6523900510d44fbf2a19f73dbfc24e13c03a95b92506356019101915060a4016040805180830381865af4158015611fa4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fc89190615c24565b9150508015611fd75760018190555b505050565b5f611fe5614ef1565b6001600160a01b0385165f9081526007602090815260408083208984529091529020546120168886868a858b612f91565b809450819350505086866001600160a01b03167fd7b5aa501d6c32aac0775207ad2e590a1ef403c1c04f5ec35e0f3fa31695e031838560405161205a929190615c50565b60405180910390a3509550959350505050565b5f8054600154604051630fa9923d60e21b81526001600160a01b03909216600483015260248201528190819081908190819073b6523900510d44fbf2a19f73dbfc24e13c03a95b90633ea648f49060440160a060405180830381865af41580156120d9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120fd91906159fd565b93985091965094509250905062ffffff851665ffffff000000601886901b160168ffffff000000000000603085901b16016bffffff000000000000000000604884901b160161214f8b8b8b848c61322e565b509998505050505050505050565b5f86865f1981018181106121735761217361592b565b90506020020135905061218933888860016126f0565b5f5460405163caa9a08d60e01b81526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063caa9a08d90602401602060405180830381865afa1580156121f1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122159190615c86565b67ffffffffffffffff168167ffffffffffffffff161461224e576040516393db026360e01b81525f600482015260240160405180910390fd5b335f90815260076020908152604080832084845290915290205415612286576040516314c1cb9960e31b815260040160405180910390fd5b5f5f61229583888888886133de565b5f8054600154604051630fa9923d60e21b81526001600160a01b0390921660048301526024820152929450909250908190819081908190819073b6523900510d44fbf2a19f73dbfc24e13c03a95b90633ea648f49060440160a060405180830381865af4158015612308573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061232c91906159fd565b939850919650945092509050604882901b6bffffff00000000000000000016603084901b68ffffff00000000000016601886901b65ffffff0000001662ffffff88160101019550801561237f5760018190555b5050335f8181526007602090815260408083208b845290915290206001600160801b038d16608089901b73ffffffff000000000000000000000000000000001660a088901b6001600160a01b03191601019081905593506123e8925090508c8c8561341561322e565b6040805182815260208101859052869133917fd25e9c8a7c7dd9c3d0d451d7f1fae7c97675a289891e1003df62e9a9f064d28191016117c3565b5f806060868067ffffffffffffffff8111156124405761244061541d565b60405190808252806020026020018201604052801561247957816020015b612466614ed3565b81526020019060019003908161245e5790505b509150895f5b828110156126e1575f8b8b8381811061249a5761249a61592b565b905060200201359050808583815181106124b6576124b661592b565b60200260200101515f600281106124cf576124cf61592b565b602090810291909101919091526001600160a01b0384165f9081526007825260408082208483529092522054855186908490811061250f5761250f61592b565b60200260200101516001600281106125295761252961592b565b6020020181815250505f5f6125778361256f89878151811061254d5761254d61592b565b60200260200101516001600281106125675761256761592b565b602002015190565b878f8e6134f4565b915091505f612585846137af565b90505f5b818110156126d15761259b8582612765565b5f036126a5578c61267d575f6125b68683603002604c011c90565b6125c0878461284e565b6125ca88856127eb565b60405160e893841b60208201529190921b602382015260268101919091526046016040516020818303038152906040528051906020012090505f61260e878461384c565b50505f83815260066020908152604080832054600590925282205492935090916126679184918a88600481106126465761264661592b565b60200201518a896004811061265d5761265d61592b565b6020020151613952565b90506126738e82612861565b9d505050506126c9565b61269e8482600481106126925761269261592b565b60200201518c90612861565b9a506126c9565b6126c68482600481106126ba576126ba61592b565b60200201518b90613a41565b99505b600101612589565b508460010194505050505061247f565b50505096509650969350505050565b6001600160a01b0384165f9081526008602052604081205482840391805b838110156127445761273a8288888481811061272c5761272c61592b565b905060200201356001613aa1565b915060010161270e565b50818114610f1a57604051634cf43be760e11b815260040160405180910390fd5b5f60026048603084020184901c5b069392505050565b90565b5f808061278b8686613b40565b90925090505f61279b8787613b77565b6127ae906001600160801b038716615ca1565b90506127ba8787613b89565b5f036127d5576127cb838383613b9b565b93505050506127e4565b6127cb838383613c5a565b5050505b9392505050565b5f60026049603084020184901c612773565b60801b6001600160801b0319160190565b808203828111806128305750826001600160801b0316816001600160801b0316115b1561053857604051633486405d60e21b815260040160405180910390fd5b5f6110006064603084020184901c612773565b818101828110806128305750826001600160801b0316816001600160801b0316101561053857604051633486405d60e21b815260040160405180910390fd5b5f60608267ffffffffffffffff8111156128bc576128bc61541d565b6040519080825280602002602001820160405280156128f557816020015b6128e2614ef1565b8152602001906001900390816128da5790505b5090505f5b8381101561295c575f612928878787858181106129195761291961592b565b905060200201358c8c8c611fdc565b84848151811061293a5761293a61592b565b602090810291909101015290506129518482612dfa565b9350506001016128fa565b50965096945050505050565b5f5f821361297e5761297982615cb8565b610538565b5090565b5f8054604051632d60befd60e11b81526001600160a01b039091166004820152610258602482015273b6523900510d44fbf2a19f73dbfc24e13c03a95b90635ac17dfa90604401602060405180830381865af41580156129e4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a089190615cd2565b905090565b5f5f5f612a1f8a8a8a60015f8c612422565b885192955090935091505f805b82811015612a7457612a5b8d8a8381518110612a4a57612a4a61592b565b60200260200101518689898d613c95565b612a65575f612a68565b60015b90910190600101612a2c565b50858015612a855750818160ff1614155b15612aa3576040516334b3313560e11b815260040160405180910390fd5b85158015612ab3575060ff811615155b15612ad157604051632a23f1ad60e01b815260040160405180910390fd5b505050505050505050505050565b5f5f5f8360020b12612af4578260020b612afb565b8260020b5f035b9050620d89e8811115612b21576040516333a3bdff60e21b815260040160405180910390fd5b5f816001165f03612b3657600160801b612b48565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612b7c576ffff97272373d413259a46990580e213a0260801c5b6004821615612b9b576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612bba576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612bd9576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612bf8576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612c17576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612c36576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612c56576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612c76576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612c96576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612cb6576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612cd6576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612cf6576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612d16576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612d36576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612d57576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612d77576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612d96576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612db3576b048a170391f7dc42444e8fa20260801c5b5f8460020b1315612dd257805f1981612dce57612dce615977565b0490505b640100000000810615612de6576001612de8565b5f5b60ff16602082901c0192505050919050565b5f5f612e068360801d90565b600f0b612e138560801d90565b600f0b019050805f84600f0b86600f0b0190505f8190508383600f0b141580612e3f57508181600f0b14155b15612e5d57604051633486405d60e21b815260040160405180910390fd5b612e7e836001600160801b031987168388016001600160801b031601610ba0565b979650505050505050565b5f612e93836137af565b90505f5b81811015612f1e575f80612ebc612eae878561284e565b603088901c61ffff16613dd4565b90925090505f612ed18785603002604c011c90565b905081810160020b8660020b121580612ef1575082810360020b8660020b125b15612f1057612f008785612765565b600103612f105750505050505050565b505050806001019050612e97565b5050604051633b90fbed60e11b815260040160405180910390fd5b5f5f5f612f45856137af565b90505f5b81811015612f88575f5f612f5e888885613e17565b9092509050612f6d8683612dfa565b9550612f798582612dfa565b94508260010192505050612f49565b50509250929050565b612f99614ef1565b5f612fa2610fc6565b15612fb9578560020b8760020b1315612fb9579495945b60405163266601a360e01b8152600481018690526001600160801b0385166024820152600288810b604483015287900b60648201525f9081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063266601a39060840160a0604051808303815f875af1158015613042573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130669190615ced565b915091505f6130788689858a8f613eef565b955090505f806130888a8a612f39565b60025491935091505f906001600160a01b031663083953d98a858589896040516001600160e01b031960e088901b1681526001600160a01b039095166004860152600f93840b602486015291830b6044850152820b6064840152900b608482015260a4016020604051808303815f875af1158015613108573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061312c919061598b565b90506001600160801b031987168782016001600160801b0316016003549097505f91506001600160a01b031663083953d98a6131688660801d90565b6131728660801d90565b61317c8a60801d90565b6131868a60801d90565b6040516001600160e01b031960e088901b1681526001600160a01b039095166004860152600f93840b602486015291830b6044850152820b6064840152900b608482015260a4016020604051808303815f875af11580156131e9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061320d919061598b565b905061321b878260801b0190565b9650505050505050965096945050505050565b61323a8585855f6126f0565b5f5f5f5f6132478661425f565b9350935093509350606060026103b96132609190615e8e565b600261326c8588615ab0565b60020b6132799190615e8e565b60026132858686615ab0565b60020b6132929190615e8e565b600261329e8789615ab0565b60020b6132ab9190615e8e565b6132b59190615e9c565b6132bf9190615e9c565b13156133865760408051600480825260a08201909252906020820160808036833701905050905083815f815181106132f9576132f961592b565b602002602001019060020b908160020b8152505082816001815181106133215761332161592b565b600292830b602091820292909201015281518391839181106133455761334561592b565b602002602001019060020b908160020b81525050848160038151811061336d5761336d61592b565b602002602001019060020b908160020b815250506133ce565b604080516001808252818301909252906020808301908036833701905050905083815f815181106133b9576133b961592b565b602002602001019060020b908160020b815250505b6119848a8a8a88858b6001612a0d565b5f5f5f6133e9610fc6565b90508015613403578360020b8560020b1315613403579293925b60405163fdf90cc160e01b8152600481018990526001600160801b0388166024820152600286810b604483015285900b60648201525f9081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fdf90cc19060840160a0604051808303815f875af115801561348c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134b09190615ced565b915091506134c08a838b8b6142af565b6134d48a8a838960020b8b60020b126145a8565b909550935082156134e757632710271094505b5050509550959350505050565b6134fc614ef1565b613504614f0f565b5f61350e886137af565b90505f5b818110156137a3575f6135258a83612765565b905080600114806135335750865b1561379a575f6135448b848c61277e565b90505f6135518c856127eb565b5f549091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691633cc3c1da911630846135958760e81c90565b61359f8860d01c90565b6040516001600160e01b031960e088901b1681526001600160a01b0395861660048201529490931660248501526044840191909152600290810b606484015290810b60848301528b900b60a482015260c4810186905260e4016040805180830381865afa158015613612573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613636919061593f565b6001600160801b0391821691168786600481106136555761365561592b565b602002015188876004811061366c5761366c61592b565b60209081029190910151810192909252919091526001600160a01b038b165f9081526004825260408082208f83528352808220878352909252205461373d600160401b846001600160801b03166136c38460801c90565b6001600160801b03168a89600481106136de576136de61592b565b6020020151600160200201510302816136f9576136f9615977565b04610ba0600160401b866001600160801b0316856001600160801b03168c8b600481106137285761372861592b565b602002015151030281610b9357610b93615977565b88866004811061374f5761374f61592b565b60200201525060018390036137975761377f8785600481106137735761377361592b565b60200201515f90613a41565b8785600481106137915761379161592b565b60200201525b50505b50600101613512565b50509550959350505050565b5f7afe0000000000fe0000000000fe0000000000fe00000000000000008216600160401b8110156137e257505f92915050565b6e0100000000000000000000000000008110156138025750600192915050565b600160a01b8110156138175750600292915050565b7a0100000000000000000000000000000000000000000000000000008110156138435750600392915050565b50600492915050565b5f8080808061385b8787613b40565b5f8054929450909250906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169163e53dec389116306138a38c8c6127eb565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152600286810b606483015285900b608482015260a401602060405180830381865afa158015613905573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061392991906158ed565b90508094506139388160801c90565b93508385016001600160801b031695505050509250925092565b805160208201515f91600160401b6001600160801b038716909103880281900491608087901c9003880204613a356139df821561398f5782613992565b5f195b61399c8a60801c90565b6001600160801b03166139af8960801c90565b6001600160801b031602816139c6576139c6615977565b046139d18860801c90565b6001600160801b0316614762565b613a1a84156139ee57846139f1565b5f195b8a6001600160801b0316896001600160801b03160281613a1357613a13615977565b04886139d1565b6001600160801b03169060801b6001600160801b0319160190565b98975050505050505050565b5f5f613a4d8360801d90565b600f0b613a5a8560801d90565b600f0b039050805f84600f0b86600f0b0390505f8190508383600f0b141580612e3f57508181600f0b14612e5d57604051633486405d60e21b815260040160405180910390fd5b5f5f83604051602001613ab691815260200190565b604051602081830303815290604052805190602001205f1c85187effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690505f83613b1557613b02856137af565b613b109060f888901c615918565b613b30565b613b1e856137af565b613b2c9060f888901c615ec3565b60ff165b60f81b9190910195945050505050565b5f80613b6c613b548585603002604c011c90565b613b5e868661284e565b603087901c61ffff16614777565b909590945092505050565b5f60806041603084020184901c612773565b5f60026040603084020184901c612773565b5f5f613ba685612adf565b90505f613bb285612adf565b9050613c508686613bf2613bed88613bdc876001600160a01b0316896001600160a01b0316614799565b8888036001600160a01b03166147f7565b6148a1565b7fffffff000000000000000000000000000000000000000000000000000000000060e884901b167cffffff000000000000000000000000000000000000000000000000000060d084901b16016001600160801b038216019392505050565b9695505050505050565b5f5f613c6585612adf565b90505f613c7185612adf565b9050613c508686613bf2613bed88600160601b8888036001600160a01b03166147f7565b6002545f9081906001600160a01b03166309e0851089898989896040518663ffffffff1660e01b8152600401613ccf959493929190615a64565b602060405180830381865afa158015613cea573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d0e91906158ed565b6003549091505f906001600160a01b03166309e085108a8a8a613d318b60801c90565b613d3b8b60801c90565b6040518663ffffffff1660e01b8152600401613d5b959493929190615a64565b602060405180830381865afa158015613d76573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d9a91906158ed565b90505f5f613db18484613dac8d612adf565b6148d0565b91509150613dc281876127106149bb565b909110159a9950505050505050505050565b5f806002613de28486615edc565b613dec9190615efb565b613e0b613df98587615f3f565b62ffffff166002808204910615150190565b915091505b9250929050565b5f5f5f613e258686866149f7565b90505f613e328786612765565b159050613e3f87866127eb565b5f03613eac578015613e7e57613e77613e5c83614adc565b614adc565b6001600160801b031985169085016001600160801b03160190565b9250613ee5565b613ea5613e8a83614adc565b6001600160801b031986169086016001600160801b03160190565b9350613ee5565b8015613eca57613e77613ec2613e578460801c90565b60801b840190565b613ee2613eda613e578460801c90565b60801b850190565b93505b5050935093915050565b5f613ef8614ef1565b5f613f02876137af565b9050613f0c614f0f565b613f1d88878b6001627fffff6134f4565b90935090505f5b8281101561422c575f848260048110613f3f57613f3f61592b565b602002015190505f613f568b84603002604c011c90565b613f608c8561284e565b613f6a8d866127eb565b60405160e893841b60208201529190921b602382015260268101919091526046016040516020818303038152906040528051906020012090505f613fde8b8560048110613fb957613fb961592b565b602002015160065f8581526020019081526020015f205461286190919063ffffffff16565b9050613fea8c85612765565b600103614015578815614004576140018184613a41565b90505b61400e8884612dfa565b97506141ec565b5f5f5f6140238f888f61277e565b9050806001600160801b031692506140418f88640900000000614b02565b91505f90506140508383615f5d565b5f8681526005602052604081205491925061408361406e8686615f5d565b87848b8e8e6004811061265d5761265d61592b565b905061408f868261280e565b955061409b8d82612dfa565b9c50808c8a600481106140b0576140b061592b565b602002015289895f86900361411d576141188c82600481106140d4576140d461592b565b6020020151600160200201518d83600481106140f2576140f261592b565b60200201515f60200201516001600160801b03169060801b6001600160801b0319160190565b6141d6565b6141d68661417461412e8d60801d90565b600f0b600160401b028a86866004811061414a5761414a61592b565b60200201516001602002015102896141628a60801c90565b6001600160801b03160203015f614b97565b8161418157614181615977565b04876141b18d600160401b02600f0b8b8787600481106141a3576141a361592b565b602002015151028a8a614162565b816141be576141be615977565b046001600160801b03166127fd90919063ffffffff16565b5f8a815260056020526040902055505050505050505b5f918252600660209081526040808420929092556001600160a01b038e168352600481528183208d84528152818320858452905281205550600101613f24565b506001600160a01b0389165f9081526007602090815260408083208b845290915281208190556137a3908a908a90614ba5565b5f80808060a085901b6001600160a01b0319166bffffffffffffffffffffffff861661428b8260b81c90565b6142958360d01c90565b61429f8460e81c90565b9450945094509450509193509193565b6142bb33856001614ba5565b5f6142c5856137af565b90505f5b81811015610625575f6142dc8783612765565b90505f6142ee8884603002604c011c90565b6142f8898561284e565b6143028a866127eb565b60405160e893841b60208201529190921b602382015260268101919091526046016040516020818303038152906040528051906020012090506143758784600481106143505761435061592b565b602002015160065f8481526020019081526020015f205461286190919063ffffffff16565b5f8281526006602052604081209190915561439189858961277e565b90505f80806143a08c886127eb565b5f549091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691633cc3c1da911630846143e48960e81c90565b6143ee8a60d01c90565b6040516001600160e01b031960e088901b1681526001600160a01b0395861660048201529490931660248501526044840191909152600290810b60648401520b6084820152627fffff60a482015260c4810189905260e4016040805180830381865afa158015614460573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614484919061593f565b6001600160801b0391821694501691506144aa838360801b6001600160801b0319160190565b60045f336001600160a01b03166001600160a01b031681526020019081526020015f205f8e81526020019081526020015f205f8981526020019081526020015f2081905550505f6145268c88885f1461451b5761451667ffffffffffffffff8d16640900000000614762565b614b02565b640900000000614b02565b9050855f03614597575f858152600560205260409020546001600160801b03851680830361458584868402608086901c8402018161456657614566615977565b048583866001600160801b031602858a0201816141be576141be615977565b5f898152600560205260409020555050505b5050505050508060010190506142c9565b5f5f5f5f6145b68888612f39565b60025491935091505f9081906001600160a01b0316630ebd39063386868c6040516001600160e01b031960e087901b1681526001600160a01b039094166004850152600f92830b602485015290820b6044840152900b6064820152891515608482015260a40160408051808303815f875af1158015614637573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061465b9190615f70565b60035491935091505f9081906001600160a01b0316630ebd3906336146808960801d90565b61468a8960801d90565b6146948f60801d90565b6040516001600160e01b031960e087901b1681526001600160a01b039094166004850152600f92830b602485015290820b6044840152900b60648201528b1515608482015260a40160408051808303815f875af11580156146f7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061471b9190615f70565b909250905065ffffffff0000601083901b16840161474e6001600160801b0385168360801b6001600160801b0319160190565b975097505050505050505b94509492505050565b5f81831061477057816127e4565b5090919050565b5f5f5f5f6147858686613dd4565b90880394508701925050505b935093915050565b5f80805f19848609848602925082811083820303915050805f036147c2575060601c9050610538565b80600160601b116147d1575f5ffd5b5f600160601b85870980840360601c9310909103600160a01b0291909117949350505050565b5f80805f19858709858702925082811083820303915050805f0361482b575f8411614820575f5ffd5b5082900490506127e4565b808411614836575f5ffd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b806001600160801b03811681146148cb5760405163b668004560e01b815260040160405180910390fd5b919050565b5f5f600160601b836001600160a01b0316101561494f576148fa846001600160801b031684614c10565b61490d906001600160801b038716615f5d565b61492961491a8660801c90565b6001600160801b031685614c6c565b6149338760801c90565b6001600160801b03166149469190615f5d565b91509150614791565b836001600160801b031661496c866001600160801b031685614cc1565b6149769190615f5d565b6149808560801c90565b6001600160801b03166149a56149968860801c90565b6001600160801b031686614d0c565b6149af9190615f5d565b91509150935093915050565b5f6149c78484846147f7565b90505f82806149d8576149d8615977565b84860911156127e4575f1981106149ed575f5ffd5b6001019392505050565b5f80808080614a068887613b40565b915091505f614a37614a1784612adf565b6001600160a01b0316614a2984612adf565b6001600160a01b0316614799565b9050614a438988613b89565b5f03614a7c57614a538988613b77565b614a5d9089615f94565b9450614a75613bed866001600160801b031683614d57565b9350614ab0565b614a868988613b77565b614a909089615f94565b9350614aad613bed856001600160801b0316600160601b846149bb565b94505b614acf6001600160801b0386168560801b6001600160801b0319160190565b9998505050505050505050565b805f600f82900b12156148cb5760405163b668004560e01b815260040160405180910390fd5b5f5f5f614b0f868661384c565b919450925090506001600160801b038216158015614b3457506001600160801b038116155b15614b405750506127e4565b5f826001600160801b0316826001600160801b03166401000000000281614b6957614b69615977565b0490508467ffffffffffffffff168111156127e057604051631d43cae160e11b815260040160405180910390fd5b5f81831361477057816127e4565b6001600160a01b0383165f90815260086020526040812054614bc8908484613aa1565b9050601960f882901c1115614bf057604051630ed7e77760e01b815260040160405180910390fd5b6001600160a01b039093165f908152600860205260409020929092555050565b5f6001600160801b036001600160a01b0383161015614c4b57614c4483600160c01b6002856001600160a01b03160a6147f7565b9050610538565b614c4483600160801b614c676001600160a01b03861680614d89565b6147f7565b5f6001600160801b036001600160a01b0383161015614ca057614c4483600160c01b6002856001600160a01b03160a6149bb565b614c4483600160801b614cbc6001600160a01b03861680614d89565b6149bb565b5f6001600160801b036001600160a01b0383161015614cf057614c44836002846001600160a01b03160a614de7565b614c4483614d076001600160a01b03851680614d89565b614e45565b5f6001600160801b036001600160a01b0383161015614d3b57614c44836002846001600160a01b03160a614ea3565b614c4483614d526001600160a01b03851680614d89565b614ebb565b5f614d628383614799565b90505f600160601b5b8385091115610538575f198110614d80575f5ffd5b60010192915050565b5f80805f19848609848602925082811083820303915050805f03614db2575060401c9050610538565b80600160401b11614dc1575f5ffd5b5f600160401b85870980840360401c9310909103600160c01b0291909117949350505050565b5f80805f19848609848602925082811083820303915050805f03614e10575060c01c9050610538565b80600160c01b11614e1f575f5ffd5b5f600160c01b85870980840360c01c9310909103600160401b0291909117949350505050565b5f80805f19848609848602925082811083820303915050805f03614e6e575060801c9050610538565b80600160801b11614e7d575f5ffd5b5f600160801b85870980840360801c9310909103600160801b0291909117949350505050565b5f614eae8383614de7565b90505f600160c01b614d6b565b5f614ec68383614e45565b90505f600160801b614d6b565b60405180604001604052806002906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180608001604052806004905b614f26614ed3565b815260200190600190039081614f1e5790505090565b5f60208284031215614f4c575f5ffd5b81356001600160e01b0319811681146127e4575f5ffd5b6001600160a01b0381168114614f77575f5ffd5b50565b5f5f60408385031215614f8b575f5ffd5b8235614f9681614f63565b946020939093013593505050565b5f5f83601f840112614fb4575f5ffd5b50813567ffffffffffffffff811115614fcb575f5ffd5b6020830191508360208260051b8501011115613e10575f5ffd5b8060020b8114614f77575f5ffd5b5f5f5f5f5f60808688031215615007575f5ffd5b85359450602086013567ffffffffffffffff811115615024575f5ffd5b61503088828901614fa4565b909550935050604086013561504481614fe5565b9150606086013561505481614fe5565b809150509295509295909350565b6001600160801b0381168114614f77575f5ffd5b67ffffffffffffffff81168114614f77575f5ffd5b5f5f5f5f5f5f60a087890312156150a0575f5ffd5b863567ffffffffffffffff8111156150b6575f5ffd5b6150c289828a01614fa4565b90975095505060208701356150d681615062565b935060408701356150e681615076565b925060608701356150f681614fe5565b9150608087013561510681614fe5565b809150509295509295509295565b8015158114614f77575f5ffd5b5f5f5f5f60608587031215615134575f5ffd5b843561513f81614f63565b9350602085013561514f81615114565b9250604085013567ffffffffffffffff81111561516a575f5ffd5b61517687828801614fa4565b95989497509550505050565b5f8151808452602084019350602083015f5b828110156151d9578151865f5b60028110156151c05782518252602092830192909101906001016151a1565b5050506040959095019460209190910190600101615194565b5093949350505050565b838152826020820152606060408201525f6152016060830184615182565b95945050505050565b5f5f5f6040848603121561521c575f5ffd5b833561522781614f63565b9250602084013567ffffffffffffffff811115615242575f5ffd5b61524e86828701614fa4565b9497909650939450505050565b5f5f6040838503121561526c575f5ffd5b50508035926020909101359150565b5f5f5f5f6060858703121561528e575f5ffd5b843567ffffffffffffffff8111156152a4575f5ffd5b6152b087828801614fa4565b90955093505060208501356152c481614f63565b9396929550929360400135925050565b5f5f602083850312156152e5575f5ffd5b823567ffffffffffffffff8111156152fb575f5ffd5b61530785828601614fa4565b90969095509350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561538b57603f19878603018452815180518087528060208301602089015e5f602082890101526020601f19601f83011688010196505050602082019150602084019350600181019050615339565b50929695505050505050565b5f5f5f5f5f5f608087890312156153ac575f5ffd5b863567ffffffffffffffff8111156153c2575f5ffd5b6153ce89828a01614fa4565b909750955050602087013567ffffffffffffffff8111156153ed575f5ffd5b6153f989828a01614fa4565b909550935050604087013561540d81614fe5565b9150606087013561510681614fe5565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561545a5761545a61541d565b604052919050565b5f82601f830112615471575f5ffd5b813567ffffffffffffffff81111561548b5761548b61541d565b8060051b61549b60208201615431565b918252602081850181019290810190868411156154b6575f5ffd5b6020860192505b83831015613c505782358252602092830192909101906154bd565b5f82601f8301126154e7575f5ffd5b813567ffffffffffffffff8111156155015761550161541d565b615514601f8201601f1916602001615431565b818152846020838601011115615528575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f60a08688031215615558575f5ffd5b853561556381614f63565b9450602086013561557381614f63565b9350604086013567ffffffffffffffff81111561558e575f5ffd5b61559a88828901615462565b935050606086013567ffffffffffffffff8111156155b6575f5ffd5b6155c288828901615462565b925050608086013567ffffffffffffffff8111156155de575f5ffd5b6155ea888289016154d8565b9150509295509295909350565b5f60208284031215615607575f5ffd5b81356127e481614f63565b5f5f5f5f5f60608688031215615626575f5ffd5b853567ffffffffffffffff81111561563c575f5ffd5b61564888828901614fa4565b909650945050602086013561565c81614f63565b9250604086013567ffffffffffffffff811115615677575f5ffd5b61568388828901614fa4565b969995985093965092949392505050565b5f5f5f5f5f60a086880312156156a8575f5ffd5b85356156b381614f63565b945060208601356156c381614f63565b935060408601356156d381614f63565b925060608601356156e381614f63565b9150608086013561505481614f63565b5f5f5f5f5f5f60808789031215615708575f5ffd5b863561571381614f63565b955060208701359450604087013567ffffffffffffffff811115615735575f5ffd5b61574189828a01614fa4565b909550935050606087013567ffffffffffffffff811115615760575f5ffd5b61576c89828a01614fa4565b979a9699509497509295939492505050565b5f5f5f5f5f60a08688031215615792575f5ffd5b853561579d81614f63565b945060208601356157ad81614f63565b93506040860135925060608601359150608086013567ffffffffffffffff8111156155de575f5ffd5b5f5f5f5f5f5f5f60e0888a0312156157ec575f5ffd5b87516157f781614fe5565b602089015190975061580881614fe5565b604089015190965061581981614fe5565b606089015190955061582a81614fe5565b608089015160a08a015160c08b0151929650909450925061584a81615062565b8091505092959891949750929550565b805161ffff811681146148cb575f5ffd5b5f5f5f5f5f5f5f60e0888a031215615881575f5ffd5b875161588c81614f63565b602089015190975061589d81614fe5565b95506158ab6040890161585a565b94506158b96060890161585a565b93506158c76080890161585a565b925060a088015160ff811681146158dc575f5ffd5b60c089015190925061584a81615114565b5f602082840312156158fd575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561053857610538615904565b634e487b7160e01b5f52603260045260245ffd5b5f5f60408385031215615950575f5ffd5b825161595b81615062565b602084015190925061596c81615062565b809150509250929050565b634e487b7160e01b5f52601260045260245ffd5b5f6020828403121561599b575f5ffd5b815180600f0b81146127e4575f5ffd5b5f5f8335601e198436030181126159c0575f5ffd5b83018035915067ffffffffffffffff8211156159da575f5ffd5b602001915036819003821315613e10575f5ffd5b818382375f9101908152919050565b5f5f5f5f5f60a08688031215615a11575f5ffd5b8551615a1c81614fe5565b6020870151909550615a2d81614fe5565b6040870151909450615a3e81614fe5565b6060870151909350615a4f81614fe5565b60809690960151949793965091949392915050565b6001600160a01b03861681528460020b602082015260a060408201525f615a8e60a0830186615182565b6001600160801b03948516606084015292909316608090910152949350505050565b600282810b9082900b03627fffff198112627fffff8213171561053857610538615904565b600281810b9083900b01627fffff8113627fffff198212171561053857610538615904565b5f5f60408385031215615b0b575f5ffd5b505080516020909101519092909150565b5f8151808452602084019350602083015f5b828110156151d9578151865f5b6004811015615b5a578251825260209283019290910190600101615b3b565b5050506080959095019460209190910190600101615b2e565b5f61010082016001600160a01b038b1683526101006020840152808a518083526101208501915060208c0192505f5b81811015615bc0578351835260209384019390920191600101615ba2565b50508381036040850152615bd4818b615b1c565b92505050866060830152615bf360808301876001600160a01b03169052565b6001600160a01b03851660a08301526001600160a01b03841660c08301528260e08301529998505050505050505050565b5f5f60408385031215615c35575f5ffd5b8251615c4081614fe5565b6020939093015192949293505050565b6001600160801b038316815260a0810160208201835f5b60048110156127e0578151835260209283019290910190600101615c67565b5f60208284031215615c96575f5ffd5b81516127e481615076565b808202811582820484141761053857610538615904565b5f600160ff1b8201615ccc57615ccc615904565b505f0390565b5f60208284031215615ce2575f5ffd5b81516127e481614fe5565b5f5f60a08385031215615cfe575f5ffd5b83601f840112615d0c575f5ffd5b6040516080810167ffffffffffffffff81118282101715615d2f57615d2f61541d565b604052806080850186811115615d43575f5ffd5b855b81811015615d5d578051835260209283019201615d45565b50519196919550909350505050565b80825b600185111561475957808604811115615d8a57615d8a615904565b6001851615615d9857908102905b60019490941c938002615d6f565b5f828015615dbb5760018114615dc557615dce565b6001915050610538565b82915050610538565b5081615ddb57505f610538565b5060015f8213808214615df3578015615e1157615e2a565b826001600160ff1b0304831115615e0c57615e0c615904565b615e2a565b826001600160ff1b0305831215615e2a57615e2a615904565b5080831615615e365750805b615e4e6001600160ff1b038460011c84850284615d6c565b806001600160ff1b030482115f83131615615e6b57615e6b615904565b5f8212600160ff1b82900583121615615e8657615e86615904565b029392505050565b5f6127e460ff841683615da6565b8082018281125f831280158216821582161715615ebb57615ebb615904565b505092915050565b60ff818116838216019081111561053857610538615904565b5f8260020b8260020b028060020b9150808214610ee557610ee5615904565b5f8160020b8360020b80615f1d57634e487b7160e01b5f52601260045260245ffd5b627fffff1982145f1982141615615f3657615f36615904565b90059392505050565b62ffffff8181168382160290811690818114610ee557610ee5615904565b8082018082111561053857610538615904565b5f5f60408385031215615f81575f5ffd5b825163ffffffff8116811461595b575f5ffd5b6001600160801b038181168382160290811690818114610ee557610ee561590456fea26469706673582212209a7029415c79458e37edd6b66f7dc0481346f8963781f8c393badf464b2872a764736f6c634300081c00330000000000000000000000003620388bc1e8b888fb4cee57158ba6b9d74a87bb0000000000000000000000000000000000000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000646112e8ac000000000000000000000000bf24cbfe40482980ad88b11add53600edcf0faedbf24cbfe40482980ad88b11add53600edcf0faedd0898a9b4b2d68eeaeddfac3000000000000000000000000000000000000000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005d6461ff715fbf24cbfe40482980ad88b11add53600edcf0faedd0898a9b4b2d68eeaeddfac300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000005ce360e060405234801561000f575f5ffd5b50604051615c83380380615c8383398101604081905261002e91610047565b6001600160a01b0390921660805260a05260c052610086565b5f5f5f60608486031215610059575f5ffd5b83516001600160a01b038116811461006f575f5ffd5b602085015160409095015190969495509392505050565b60805160a05160c051615b9b6100e85f395f8181610ee2015281816110330152818161143e01526114d001525f8181610ebe0152818161100f0152818161141a01526114ac01525f8181611234015281816116b801526117da0152615b9b5ff3fe608060405260043610610156575f3560e01c8063b909a0b3116100bb578063e985e9c511610071578063f242432a11610057578063f242432a1461058c578063fa461e33146105ab578063fdf90cc1146105ca575f5ffd5b8063e985e9c5146104a5578063eb1de2e2146104de575f5ffd5b8063caa9a08d116100a1578063caa9a08d1461039d578063d3487997146103ea578063e53dec3814610409575f5ffd5b8063b909a0b31461035f578063c035e2421461037e575f5ffd5b80633f8e156e11610110578063a22cb465116100f6578063a22cb465146102e7578063a734bda814610306578063ac9650d81461033f575f5ffd5b80633f8e156e146102655780634e1273f4146102bb575f5ffd5b8063266601a311610140578063266601a3146101cf5780632eb2c2d6146101fc5780633cc3c1da1461021d575f5ffd5b8062fdd58e1461015a57806301ffc9a7146101a0575b5f5ffd5b348015610165575f5ffd5b5061018d610174366004614d2f565b5f60208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b3480156101ab575f5ffd5b506101bf6101ba366004614d86565b6105e9565b6040519015158152602001610197565b3480156101da575f5ffd5b506101ee6101e9366004614dcc565b610681565b604051610197929190614e1c565b348015610207575f5ffd5b5061021b610216366004614ed2565b61079d565b005b348015610228575f5ffd5b5061023c610237366004614f95565b61088b565b604080516fffffffffffffffffffffffffffffffff938416815292909116602083015201610197565b348015610270575f5ffd5b506102a361027f366004615015565b67ffffffffffffffff165f908152600360205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610197565b3480156102c6575f5ffd5b506102da6102d536600461503c565b610af0565b60405161019791906150a8565b3480156102f2575f5ffd5b5061021b6103013660046150f7565b610bdf565b348015610311575f5ffd5b5061032561032036600461512e565b610c68565b60408051600f93840b81529190920b602082015201610197565b61035261034d366004615192565b610d0e565b604051610197919061521d565b34801561036a575f5ffd5b5061021b610379366004615015565b610e1c565b348015610389575f5ffd5b5061021b6103983660046152ae565b6111be565b3480156103a8575f5ffd5b506103d16103b73660046152f6565b6001600160a01b03165f9081526002602052604090205490565b60405167ffffffffffffffff9091168152602001610197565b3480156103f5575f5ffd5b5061021b610404366004615311565b6116a3565b348015610414575f5ffd5b5061018d61042336600461512e565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606097881b81166020808401919091529690971b9096166034870152604886019390935260e891821b6068860152901b606b8401528051808403604e018152606e90930181528251928201929092205f9081526004909152205490565b3480156104b0575f5ffd5b506101bf6104bf366004615354565b600160209081525f928352604080842090915290825290205460ff1681565b3480156104e9575f5ffd5b506105726104f8366004615015565b67ffffffffffffffff165f90815260036020908152604091829020825160608101845290546001600160a01b0381168252740100000000000000000000000000000000000000008104600290810b93830184905277010000000000000000000000000000000000000000000000909104900b920182905291565b60408051600293840b81529190920b602082015201610197565b348015610597575f5ffd5b5061021b6105a6366004615380565b61171e565b3480156105b6575f5ffd5b5061021b6105c5366004615311565b6117c5565b3480156105d5575f5ffd5b506101ee6105e4366004614dcc565b611846565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061067b57507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610689614cfa565b5f681face81baddeadbeef805c159030905d80610707576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5245454e5452414e43590000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6107243388886fffffffffffffffffffffffffffffffff16611943565b6040516fffffffffffffffffffffffffffffffff87168152879033907f23833bcc608a225445893342669a9bc035de4ef96cc1edd47cead470f1f7817a9060200160405180910390a361078385858861077c8b6119c5565b6001611ac1565b925092505f681face81baddeadbeef5d5094509492505050565b681face81baddeadbeef805c159030905d80610815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5245454e5452414e43590000000000000000000000000000000000000000000060448201526064016106fe565b5f5b868110156108635761085b8a8a8a8a85818110610836576108366153f7565b9050602002013589898681811061084f5761084f6153f7565b90506020020135611e89565b600101610817565b5061087489898989898989896120da565b5f681face81baddeadbeef5d505050505050505050565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606089811b8216602084015288901b1660348201526048810186905260e885811b606883015284901b606b8201525f9081908190606e01604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291815281516020928301205f81815260049093529082205490925081819050627fffff600289900b12801561095757506fffffffffffffffffffffffffffffffff811615155b15610aa4576040517f3f6391010000000000000000000000000000000000000000000000000000000081526001600160a01b038e166004820152600289810b60248301528b810b60448301528a900b60648201526fffffffffffffffffffffffffffffffff821660848201525f908e908c908c9084907315fc36f2bd9403e85023b59b617f512f8fe0593590633f6391019060a401602060405180830381865af4158015610a07573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2b9190615424565b5f8a815260076020526040902054909150610a47908290612357565b9450505050505f5f610a598584612467565b5f89815260056020908152604080832054600690925290912054929450909250610a85918490846125f9565b909250905060018a14610a985780610a9a565b815b9550505050610ad1565b86600114610abf575f84815260066020526040902054610ace565b5f848152600560205260409020545b92505b82610adc8460801c90565b955095505050505097509795505050505050565b60608367ffffffffffffffff811115610b0b57610b0b61543b565b604051908082528060200260200182016040528015610b34578160200160208202803683370190505b5090505f5b84811015610bd6575f5f878784818110610b5557610b556153f7565b9050602002016020810190610b6a91906152f6565b6001600160a01b03166001600160a01b031681526020019081526020015f205f858584818110610b9c57610b9c6153f7565b9050602002013581526020019081526020015f2054828281518110610bc357610bc36153f7565b6020908102919091010152600101610b39565b50949350505050565b335f8181526001602090815260408083206001600160a01b0387168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087811b8216602084015286901b1660348201526048810184905260e883811b606883015282901b606b8201525f90819081906007908290606e016040516020818303038152906040528051906020012081526020019081526020015f20549050610cf58190565b9250610d018160801d90565b9150509550959350505050565b60608167ffffffffffffffff811115610d2957610d2961543b565b604051908082528060200260200182016040528015610d5c57816020015b6060815260200190600190039081610d475790505b5090505f5b82811015610e15575f8030868685818110610d7e57610d7e6153f7565b9050602002810190610d909190615468565b604051610d9e9291906154c9565b5f60405180830381855af49150503d805f8114610dd6576040519150601f19603f3d011682016040523d82523d5f602084013e610ddb565b606091505b509150915081610ded57805160208201fd5b80848481518110610e0057610e006153f7565b60209081029190910101525050600101610d61565b5092915050565b67ffffffffffffffff81165f908152600360209081526040808320815160608101835290546001600160a01b0381168252740100000000000000000000000000000000000000008104600290810b9483019490945277010000000000000000000000000000000000000000000000900490920b908201529061ffff603084901c1690610ea7826127bb565b90505f5f610ffa856020015160020b610ff0610fd77f00000000000000000000000000000000000000000000000000000000000000006127107f00000000000000000000000000000000000000000000000000000000000000008b5f01516001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f40573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6491906154d8565b6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f9f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc39190615424565b0281610fd157610fd16154f3565b04612805565b87876fffffffffffffffffffffffffffffffff1661281c565b5f0360020b61287b565b9150611099856040015160020b611091610fd77f00000000000000000000000000000000000000000000000000000000000000006127107f00000000000000000000000000000000000000000000000000000000000000008b5f01516001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f40573d5f5f3e3d5ffd5b60020b612889565b6040805160608101825287516001600160a01b039081168252600286810b60208085018281529287900b85870181815267ffffffffffffffff8f165f9081526003845288902096518754955191519087167fffffffffffffffffff0000000000000000000000000000000000000000000000909616959095177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000009190951602939093179094558a5185519182529381019190915293945016917fac639863cf263ec4d7f6c93d2b312174ee3ec131a2f5789cc0dcc96a7e697226910160405180910390a2505050505050565b816001600160a01b0316836001600160a01b0316106111de5781836111e1565b82825b6040517f1698ee820000000000000000000000000000000000000000000000000000000081526001600160a01b038084166004830152808316602483015262ffffff851660448301529295509093505f917f00000000000000000000000000000000000000000000000000000000000000001690631698ee8290606401602060405180830381865afa158015611279573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061129d91906154d8565b905073ba3f945812a83471d709bce9c3ca699a19fb46f76001600160a01b038216146112c7575f5ffd5b6001600160a01b038116611307576040517f4f361fe400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381165f908152600260205260409020541561132a5750505050565b5f816001600160a01b031663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611367573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061138b9190615520565b9050607082901c65ffffffffffff16603082901b68ffffff00000000000016015b67ffffffffffffffff81165f908152600360205260409020546001600160a01b0316156113f2576001810165ffffffffffff1667ffff00000000000082160190506113ac565b5f6113fc836127bb565b6fffffffffffffffffffffffffffffffff1690505f5f6114a06114997f00000000000000000000000000000000000000000000000000000000000000006127107f00000000000000000000000000000000000000000000000000000000000000008c6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f9f573d5f5f3e3d5ffd5b868561281c565b5f03915061152b6114997f00000000000000000000000000000000000000000000000000000000000000006127107f00000000000000000000000000000000000000000000000000000000000000008d6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f9f573d5f5f3e3d5ffd5b604080516060810182526001600160a01b03808a16808352600287810b602080860191825287830b86880190815267ffffffffffffffff8d165f81815260038452898120985189549551935162ffffff90811677010000000000000000000000000000000000000000000000027fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff9190951674010000000000000000000000000000000000000000027fffffffffffffffffff000000000000000000000000000000000000000000000090971691909916179490941796909616179095558281529352918390207f800000000000000000000000000000000000000000000000000000000000000090910190559051919250907f4bd4bcef57942fad6bb34f8b7d1b53da46f96eefc173461c3be68165a9e729d1906116909087908690869067ffffffffffffffff939093168352600291820b6020840152900b604082015260600190565b60405180910390a2505050505050505050565b5f6116b082840184615589565b90506116e0337f0000000000000000000000000000000000000000000000000000000000000000835f0151612897565b84156116fa5780515160208201516116fa9190338861297f565b831561171757611717815f0151602001518260200151338761297f565b5050505050565b681face81baddeadbeef805c159030905d80611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5245454e5452414e43590000000000000000000000000000000000000000000060448201526064016106fe565b6117a287878787611e89565b6117b0878787878787612a0a565b5f681face81baddeadbeef5d50505050505050565b5f6117d282840184615589565b9050611802337f0000000000000000000000000000000000000000000000000000000000000000835f0151612897565b5f5f861361181557815160200151611819565b8151515b90505f5f8713611829578561182b565b865b905061183d828460200151338461297f565b50505050505050565b61184e614cfa565b5f681face81baddeadbeef805c159030905d806118c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5245454e5452414e43590000000000000000000000000000000000000000000060448201526064016106fe565b6118e43388886fffffffffffffffffffffffffffffffff16612c15565b6040516fffffffffffffffffffffffffffffffff87168152879033907f16695fc037c20a8984b20ffc7aadd6ce10e62756f9ca42933a1aa6459ef064ca9060200160405180910390a361193687612d80565b6107838585888a5f611ac1565b6001600160a01b0383165f908152602081815260408083208584529091528120805483929061197390849061567f565b909155505060408051838152602081018390525f916001600160a01b0386169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b5f7afe0000000000fe0000000000fe0000000000fe00000000000000008216680100000000000000008110156119fc57505f611a6f565b6e010000000000000000000000000000811015611a1b57506001611a6f565b74010000000000000000000000000000000000000000811015611a4057506002611a6f565b7a010000000000000000000000000000000000000000000000000000811015611a6b57506003611a6f565b5060045b7fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000816004036030027b01000000000001000000000001000000000001000000000000000000901c168318915050919050565b611ac9614cfa565b67ffffffffffffffff83165f908152600360209081526040808320815160608101835290546001600160a01b038116808352740100000000000000000000000000000000000000008204600290810b958401959095527701000000000000000000000000000000000000000000000090910490930b9181019190915290611b7c576040517f4f361fe400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5f5f611b8989613135565b90505f5b81811015611cec575f611ba18b838e6131e8565b905089611c435761ffff60308c901c1660e882901c60d083901c611bc58383615692565b60020b151580611be05750611bda8382615692565b60020b15155b80611bf45750896020015160020b8260020b125b80611c085750896040015160020b8160020b135b15611c3f576040517f1577d96600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505b611c4c81613253565b86019550611c59816132ce565b87519501945f90611c6d908d85858f613316565b8b8560048110611c7f57611c7f6153f7565b60200201529050611c9089826135a5565b9850611cdd611c9f8d85613667565b15611cc357611cbe825b6fffffffffffffffffffffffffffffffff1690565b611cd6565b611cd6611cd08360801d90565b60801b90565b86906135a5565b94508260010192505050611b8d565b50611d0860046f7fffffffffffffffffffffffffffffff6156b3565b6fffffffffffffffffffffffffffffffff16841180611d525750611d3d60046f7fffffffffffffffffffffffffffffff6156b3565b6fffffffffffffffffffffffffffffffff1683115b15611d89576040517f543a6e1000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8a60020b8c60020b1315611dbb578115611db757611db486611dae875f0151856136b8565b906135a5565b95505b999a995b5f855f01516001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015611dfb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e1f9190615712565b50505050509150508b60020b8160020b121580611e4257508c60020b8160020b13155b15611e79576040517ffd26c92800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050509550959350505050565b67ffffffffffffffff82165f908152600360205260408120546001600160a01b031690611eb584613135565b90505f5b8181101561183d575f611ecd8683876131e8565b90505f8489611edc8986613667565b611ee68560e81c90565b611ef08660d01c90565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606096871b811660208301529490951b9093166034850152604884019190915260e890811b60688401521b606b820152606e01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012090505f8589611f8c8a87613667565b611f968660e81c90565b611fa08760d01c90565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606096871b811660208301529490951b9093166034850152604884019190915260e890811b60688401521b606b820152606e01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301205f8581526004909352818320548184529190922054919250901515806120655750836fffffffffffffffffffffffffffffffff168114155b1561209c576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281526004602090815260408083209390935584825282822082905560079052818120805493825291812092909255918152905550600101611eb9565b336001600160a01b038916148061211357506001600160a01b0388165f90815260016020908152604080832033845290915290205460ff165b612149576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80805b878110156121f157888882818110612167576121676153f7565b905060200201359250868682818110612182576121826153f7565b6001600160a01b038e165f90815260208181526040808320898452825282208054939091029490940135955085939250906121be90849061567f565b90915550506001600160a01b038a165f90815260208181526040808320868452909152902080548301905560010161214d565b50886001600160a01b03168a6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b60405161224594939291906157ed565b60405180910390a46001600160a01b0389163b1561234b576040517fbc197c8100000000000000000000000000000000000000000000000000000000808252906001600160a01b038b169063bc197c81906122b29033908f908e908e908e908e908e908e9060040161585a565b6020604051808303815f875af11580156122ce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122f291906158b3565b7fffffffff00000000000000000000000000000000000000000000000000000000161461234b576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050505050565b5f5f6123638360801d90565b600f0b6123708560801d90565b600f0b039050805f84600f0b86600f0b0390505f8190508383600f0b14158061239c57508181600f0b14155b156123d3576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61245c6123e384600f0b5f612889565b6124326123f384600f0b5f612889565b889081016fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff00000000000000000000000000000000919091160190565b9060801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b979650505050505050565b5f5f5f6124748560801c90565b6fffffffffffffffffffffffffffffffff908116915085168082015f808781608082901c90506124c5826fffffffffffffffffffffffffffffffff168668010000000000000000026002890a613a37565b93506124f2816fffffffffffffffffffffffffffffffff168668010000000000000000026002890a613a37565b92505f915081905060048704860161251361250e868389613a37565b613ae1565b925061252361250e858389613a37565b91506125656fffffffffffffffffffffffffffffffff84168360801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b99505f925082915081905060046002890a048887026002880a0301905061259361250e868360028a0a613a37565b92506125a661250e858360028a0a613a37565b91506125e86fffffffffffffffffffffffffffffffff84168360801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b985050505050505050509250929050565b5f8080612631865b6fffffffffffffffffffffffffffffffff16885b6fffffffffffffffffffffffffffffffff1661250e91906158ce565b90505f61265d6126418860801c90565b6fffffffffffffffffffffffffffffffff166126158a60801c90565b90505f61266986612601565b90505f6126796126418860801c90565b90505f6fffffffffffffffffffffffffffffffff85811614806126ad57506fffffffffffffffffffffffffffffffff838116145b1590505f6fffffffffffffffffffffffffffffffff85811614806126e257506fffffffffffffffffffffffffffffffff838116145b159050612747816126fc576126f78d60801c90565b6126fe565b855b83612709578d61270b565b875b6fffffffffffffffffffffffffffffffff169060801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b6127a88261275e576127598c60801c90565b612760565b845b8461276b578c61270b565b866fffffffffffffffffffffffffffffffff169060801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b9750975050505050505094509492505050565b5f600282900b620d89e8816127d2576127d26154f3565b0560020260010162ffffff166fffffffffffffffffffffffffffffffff8016816127fe576127fe6154f3565b0492915050565b5f8183116128135781612815565b825b9392505050565b5f61287361286c857c01000000000000000000000000000000000000000000000000000000006c0100000000000000000000000061285988613b13565b036001600160a01b031686026080613e54565b600d613f25565b949350505050565b5f8183126128135781612815565b5f8183136128135781612815565b8051602082015160408084015190517f1698ee820000000000000000000000000000000000000000000000000000000081526001600160a01b039384166004820152918316602483015262ffffff16604482015284821691841690631698ee8290606401602060405180830381865afa158015612916573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061293a91906154d8565b6001600160a01b03161461297a576040517f3a94c70500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815284816004015283816024015282816044015260205f6064835f8a5af13d15601f3d1160015f511416171691505080611717576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336001600160a01b0387161480612a4357506001600160a01b0386165f90815260016020908152604080832033845290915290205460ff165b612a79576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0386165f9081526020818152604080832087845290915281208054859290612aa990849061567f565b90915550506001600160a01b038581165f818152602081815260408083208984528252918290208054880190558151888152908101879052919289169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0385163b15612c0d576040517ff23a6e6100000000000000000000000000000000000000000000000000000000808252906001600160a01b0387169063f23a6e6190612b749033908b908a908a908a908a906004016158e1565b6020604051808303815f875af1158015612b90573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bb491906158b3565b7fffffffff000000000000000000000000000000000000000000000000000000001614612c0d576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6001600160a01b0383165f818152602081815260408083208684528252808320805486019055805186815291820185905233917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0383163b1561297a576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082523360048301525f60248301819052604483018590526064830184905260a0608484015260a4830152906001600160a01b0385169063f23a6e619060c4016020604051808303815f875af1158015612d03573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d2791906158b3565b7fffffffff00000000000000000000000000000000000000000000000000000000161461297a576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612d8a815f614020565b5f03612dc5576040517f93db0263000000000000000000000000000000000000000000000000000000008152600160048201526024016106fe565b77fffffffff200fffffffff200fffffffff200fffffffff200604082901c165f5b600481101561297a57612df98382614020565b5f03612e43576040603082020183901c1561297a576040517f93db0263000000000000000000000000000000000000000000000000000000008152600160048201526024016106fe565b5f612e4d84613135565b9050600182015b81811015612ebc578060300284901c65ffffffffffff168360300285901c65ffffffffffff1603612eb4576040517f93db0263000000000000000000000000000000000000000000000000000000008152600660048201526024016106fe565b600101612e54565b50612ec78483614032565b60020b5f03612f05576040517f93db0263000000000000000000000000000000000000000000000000000000008152600560048201526024016106fe565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618612f358584603002604c011c90565b60020b1480612f575750620d89e8612f528584603002604c011c90565b60020b145b15612f90576040517f93db02630000000000000000000000000000000000000000000000000000000081526004818101526024016106fe565b5f612f9b8584614045565b905082811461312b5782612faf8683614045565b14612fe9576040517f93db0263000000000000000000000000000000000000000000000000000000008152600360048201526024016106fe565b612ff38584614057565b612ffd8683614057565b14158061301c575061300f8584614020565b6130198683614020565b14155b15613056576040517f93db0263000000000000000000000000000000000000000000000000000000008152600360048201526024016106fe565b5f6130618685614069565b90505f61306e8784614069565b90505f61307b8887613667565b90505f6130888986613667565b9050828414801561309857508082145b156130d1576040517f93db02630000000000000000000000000000000000000000000000000000000081526004818101526024016106fe565b82841415806130e05750836001145b80156130ec5750808214155b15613126576040517f93db0263000000000000000000000000000000000000000000000000000000008152600560048201526024016106fe565b505050505b5050600101612de6565b5f7afe0000000000fe0000000000fe0000000000fe000000000000000082166801000000000000000081101561316d57505f92915050565b6e01000000000000000000000000000081101561318d5750600192915050565b740100000000000000000000000000000000000000008110156131b35750600292915050565b7a0100000000000000000000000000000000000000000000000000008110156131df5750600392915050565b50600492915050565b5f80806131f5868661407b565b90925090505f6132058787614020565b613221906fffffffffffffffffffffffffffffffff871661592a565b905061322d8787614057565b5f036132485761323e8383836140b2565b9350505050612815565b61323e83838361417a565b5f5f6132676132628460e81c90565b613b13565b90505f6132776132628560d01c90565b90506001600160a01b0382166132b86060866fffffffffffffffffffffffffffffffff16901b8484036001600160a01b0316846001600160a01b0316613a37565b816132c5576132c56154f3565b04949350505050565b5f5f6132dd6132628460e81c90565b90505f6132ed6132628560d01c90565b9050612873846fffffffffffffffffffffffffffffffff168383036001600160a01b03166141be565b5f808087336133258989613667565b61332f8860e81c90565b6133398960d01c90565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606096871b811660208301529490951b9093166034850152604884019190915260e890811b60688401521b606b820152606e01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012090505f806133d48989614069565b5f848152600460205260408120549192508190608082901c9050896fffffffffffffffffffffffffffffffff81165f0361343a576040517f1007454800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845f036134655761344b8184615941565b955089156134605761345d8183615969565b91505b6134da565b806fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff1610156134c3576040517f4323a55500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8083039550896134da576134d78183615941565b91505b61351a6fffffffffffffffffffffffffffffffff87168360801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b5f888152600460205260409020555050821590506135415761353c888c61423f565b61354b565b61354b888c614328565b95506fffffffffffffffffffffffffffffffff81161561357657613573888c83878a8761458e565b94505b6135838b848a600161475c565b5f94855260076020526040909420939093555092989197509095505050505050565b5f5f6135b18360801d90565b600f0b6135be8560801d90565b600f0b019050805f84600f0b86600f0b0190505f8190508383600f0b1415806135ea57508181600f0b14155b15613621576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61245c837fffffffffffffffffffffffffffffffff0000000000000000000000000000000087168388016fffffffffffffffffffffffffffffffff16015b9060801b0190565b5f60026049603084020184901c5b069392505050565b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000821691016fffffffffffffffffffffffffffffffff160190565b5f80806060858583608082901d905060405180604001604052806040518060600160405280866001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015613719573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061373d91906154d8565b6001600160a01b03168152602001866001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613787573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137ab91906154d8565b6001600160a01b03168152602001866001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137f5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138199190615991565b62ffffff169052815233602091820152604051613872929101815180516001600160a01b03908116835260208083015182168185015260409283015162ffffff1692840192909252920151909116606082015260800190565b604051602081830303815290604052935081600f0b5f14158015613899575080600f0b5f14155b1561392d575f836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156138db573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138ff9190615712565b50505050505090505f61391583600f0b836148c7565b84600f0b0390505f81129750805f039650505061395d565b81600f0b5f1461394c575f82600f0b129550815f03600f0b945061395d565b5f81600f0b139550805f03600f0b94505b845f03613972575f965050505050505061067b565b5f5f846001600160a01b031663128acb08338a8a8c6139a55773fffd8963efd1fc6a506488495d951d5263988d256139ac565b6401000276a45b8b6040518663ffffffff1660e01b81526004016139cd9594939291906159ac565b60408051808303815f875af11580156139e8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a0c91906159ea565b91509150613a28613a1c8261497f565b61365f611ca98561497f565b9b9a5050505050505050505050565b5f80805f19858709858702925082811083820303915050805f03613a6b575f8411613a60575f5ffd5b508290049050612815565b808411613a76575f5ffd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b806fffffffffffffffffffffffffffffffff81168114613b0e57506fffffffffffffffffffffffffffffffff5b919050565b5f5f5f8360020b12613b28578260020b613b2f565b8260020b5f035b9050620d89e8811115613b6e576040517fce8ef7fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816001165f03613b9057700100000000000000000000000000000000613ba2565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615613bd6576ffff97272373d413259a46990580e213a0260801c5b6004821615613bf5576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613c14576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613c33576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613c52576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613c71576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613c90576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613cb0576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613cd0576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613cf0576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613d10576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613d30576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613d50576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613d70576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613d90576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613db1576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613dd1576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615613df0576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615613e0d576b048a170391f7dc42444e8fa20260801c5b5f8460020b1315613e2c57805f1981613e2857613e286154f3565b0490505b640100000000810615613e40576001613e42565b5f5b60ff16602082901c0192505050919050565b5f80805f19868809868802925082811083820303915050805f03613e9b575f8511613e7d575f5ffd5b8482049250613e928360018660020a036149bd565b92505050612873565b80846101000386901c11613eb95760018460020a0392505050612873565b5f858789095f87810388169788900497600260038a028118808b02820302808b02820302808b02820302808b02820302808b02820302808b0290910302918190038190046001018684119095039490940291909403929092049190911791909102915050949350505050565b5f5f613fb2847f0706060506020504060203020504030106050205030304010505030400000000601f6f8421084210842108cc6318c6db6d54be6fffffffffffffffffffffffffffffffff841160071b84811c67ffffffffffffffff1060061b1784811c63ffffffff1060051b1784811c61ffff1060041b1784811c60ff1060031b1793841c1c161a1790565b607f8190039490941b9360800360401b9050603f838103905b81811115613ff657600290950a607f81901c60ff9190911c90811c9590811b909203915f1901613fcb565b50700100000000000000000000000000000000693627a301d786ca58a52f83020495945050505050565b5f60806041603084020184901c613675565b5f6110006064603084020184901c613675565b5f6004604a603084020184901c613675565b5f60026040603084020184901c613675565b5f60026048603084020184901c613675565b5f806140a761408f8585603002604c011c90565b6140998686614032565b603087901c61ffff166149cb565b909590945092505050565b5f5f6140bd85613b13565b90505f6140c985613b13565b90506141708686614109614104886140f3876001600160a01b0316896001600160a01b03166141be565b8888036001600160a01b0316613a37565b6149e9565b7fffffff000000000000000000000000000000000000000000000000000000000060e884901b167cffffff000000000000000000000000000000000000000000000000000060d084901b16016fffffffffffffffffffffffffffffffff8216019392505050565b9695505050505050565b5f5f61418585613b13565b90505f61419185613b13565b90506141708686614109614104886c010000000000000000000000008888036001600160a01b0316613a37565b5f80805f19848609848602925082811083820303915050805f036141e7575060601c905061067b565b806c01000000000000000000000000116141ff575f5ffd5b5f6c0100000000000000000000000085870980840360601c9310909103740100000000000000000000000000000000000000000291909117949350505050565b5f5f5f836001600160a01b031663a34123a761425b8760e81c90565b6142658860d01c90565b886040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600293840b60048201529190920b60248201526fffffffffffffffffffffffffffffffff909116604482015260640160408051808303815f875af11580156142dc573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061430091906159ea565b9150915061431f815f0361365f845f035f61367d90919063ffffffff16565b95945050505050565b5f5f60405180604001604052806040518060600160405280866001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561437c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143a091906154d8565b6001600160a01b03168152602001866001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156143ea573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061440e91906154d8565b6001600160a01b03168152602001866001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa158015614458573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061447c9190615991565b62ffffff1690528152336020918201526040516144d5929101815180516001600160a01b03908116835260208083015182168185015260409283015162ffffff1692840192909252920151909116606082015260800190565b60405160208183030381529060405290505f5f846001600160a01b0316633c8a7d8d306145028960e81c90565b61450c8a60d01c90565b8a886040518663ffffffff1660e01b815260040161452e959493929190615a0c565b60408051808303815f875af1158015614549573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061456d91906159ea565b9092509050614170816fffffffffffffffffffffffffffffffff841661365f565b5f83815260076020526040812054859082906145b6906145b08a858d8661475c565b90612357565b9050836001036145cd576145ca8186614a35565b90505b8015614750575f5f896001600160a01b0316634f1eb3d8336145ef8e60e81c90565b6145f98f60d01c90565b876146048960801c90565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526001600160a01b039095166004860152600293840b60248601529190920b60448401526fffffffffffffffffffffffffffffffff918216606484015216608482015260a40160408051808303815f875af1158015614690573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906146b49190615a57565b915091505f5f5f6146c28a90565b600f0b126146d057836146d4565b8884015b91505f6146e18a60801d90565b600f0b126146ef57826146fc565b6146f98960801d90565b83015b905061473e6fffffffffffffffffffffffffffffffff83168260801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b965061474b8a8c89614aae565b505050505b50509695505050505050565b5f5f5f866001600160a01b031663514ea4bf306147798860e81c90565b6147838960d01c90565b60405160609390931b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602084015260e891821b6034840152901b6037820152603a01604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016147fb91815260200190565b60a060405180830381865afa158015614816573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061483a9190615a84565b50509250925050836148895761488461486582886fffffffffffffffffffffffffffffffff16614b08565b61365f611ca9858a6fffffffffffffffffffffffffffffffff16614b08565b61245c565b61245c6148a882886fffffffffffffffffffffffffffffffff16614b8d565b61365f611ca9858a6fffffffffffffffffffffffffffffffff16614b8d565b5f6fffffffffffffffffffffffffffffffff6001600160a01b0383161015614945575f61492a6149256148f986614bcb565b78010000000000000000000000000000000000000000000000006002876001600160a01b03160a613a37565b614bdf565b90505f8412614939578061493d565b805f035b91505061067b565b5f61492a61492561495586614bcb565b70010000000000000000000000000000000061497a6001600160a01b03881680614c3a565b613a37565b80600f81900b8114613b0e576040517fb668004500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8183106128135781612815565b5f5f5f5f6149d98686614cb7565b9088039897019695505050505050565b806fffffffffffffffffffffffffffffffff81168114613b0e576040517fb668004500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f614a418360801d90565b600f0b614a4e8560801d90565b600f0b039050805f84600f0b86600f0b0390505f8190508383600f0b1415806135ea57508181600f0b14613621576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f614aba8484612467565b5f87815260056020908152604080832054600690925290912054929450909250614ae6918490846125f9565b5f96875260056020908152604080892060069092529097205590945550505050565b5f80805f19848609848602925082811083820303915050805f03614b31575060801c905061067b565b8070010000000000000000000000000000000011614b4d575f5ffd5b5f70010000000000000000000000000000000085870980840360801c93109091037001000000000000000000000000000000000291909117949350505050565b5f614b988383614b08565b90505f700100000000000000000000000000000000838509111561067b575f198110614bc2575f5ffd5b60010192915050565b5f5f8213614bdb57815f0361067b565b5090565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115614bdb576040517fb668004500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80805f19848609848602925082811083820303915050805f03614c63575060401c905061067b565b806801000000000000000011614c77575f5ffd5b5f6801000000000000000085870980840360401c931090910378010000000000000000000000000000000000000000000000000291909117949350505050565b5f806002614cc58486615ad4565b614ccf9190615af3565b614cee614cdc8587615b47565b62ffffff166002808204910615150190565b915091505b9250929050565b60405180608001604052806004906020820280368337509192915050565b6001600160a01b0381168114614d2c575f5ffd5b50565b5f5f60408385031215614d40575f5ffd5b8235614d4b81614d18565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114614d2c575f5ffd5b5f60208284031215614d96575f5ffd5b813561281581614d59565b6fffffffffffffffffffffffffffffffff81168114614d2c575f5ffd5b8060020b8114614d2c575f5ffd5b5f5f5f5f60808587031215614ddf575f5ffd5b843593506020850135614df181614da1565b92506040850135614e0181614dbe565b91506060850135614e1181614dbe565b939692955090935050565b60a0810181845f5b6004811015614e43578151835260209283019290910190600101614e24565b5050508260808301529392505050565b5f5f83601f840112614e63575f5ffd5b50813567ffffffffffffffff811115614e7a575f5ffd5b6020830191508360208260051b8501011115614cf3575f5ffd5b5f5f83601f840112614ea4575f5ffd5b50813567ffffffffffffffff811115614ebb575f5ffd5b602083019150836020828501011115614cf3575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215614ee9575f5ffd5b8835614ef481614d18565b97506020890135614f0481614d18565b9650604089013567ffffffffffffffff811115614f1f575f5ffd5b614f2b8b828c01614e53565b909750955050606089013567ffffffffffffffff811115614f4a575f5ffd5b614f568b828c01614e53565b909550935050608089013567ffffffffffffffff811115614f75575f5ffd5b614f818b828c01614e94565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f5f60e0888a031215614fab575f5ffd5b8735614fb681614d18565b96506020880135614fc681614d18565b9550604088013594506060880135614fdd81614dbe565b93506080880135614fed81614dbe565b925060a0880135614ffd81614dbe565b96999598509396929591949193505060c09091013590565b5f60208284031215615025575f5ffd5b813567ffffffffffffffff81168114612815575f5ffd5b5f5f5f5f6040858703121561504f575f5ffd5b843567ffffffffffffffff811115615065575f5ffd5b61507187828801614e53565b909550935050602085013567ffffffffffffffff811115615090575f5ffd5b61509c87828801614e53565b95989497509550505050565b602080825282518282018190525f918401906040840190835b818110156150df5783518352602093840193909201916001016150c1565b509095945050505050565b8015158114614d2c575f5ffd5b5f5f60408385031215615108575f5ffd5b823561511381614d18565b91506020830135615123816150ea565b809150509250929050565b5f5f5f5f5f60a08688031215615142575f5ffd5b853561514d81614d18565b9450602086013561515d81614d18565b935060408601359250606086013561517481614dbe565b9150608086013561518481614dbe565b809150509295509295909350565b5f5f602083850312156151a3575f5ffd5b823567ffffffffffffffff8111156151b9575f5ffd5b6151c585828601614e53565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015615292577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261527d8583516151d1565b94506020938401939190910190600101615243565b50929695505050505050565b62ffffff81168114614d2c575f5ffd5b5f5f5f606084860312156152c0575f5ffd5b83356152cb81614d18565b925060208401356152db81614d18565b915060408401356152eb8161529e565b809150509250925092565b5f60208284031215615306575f5ffd5b813561281581614d18565b5f5f5f5f60608587031215615324575f5ffd5b8435935060208501359250604085013567ffffffffffffffff811115615348575f5ffd5b61509c87828801614e94565b5f5f60408385031215615365575f5ffd5b823561537081614d18565b9150602083013561512381614d18565b5f5f5f5f5f5f60a08789031215615395575f5ffd5b86356153a081614d18565b955060208701356153b081614d18565b94506040870135935060608701359250608087013567ffffffffffffffff8111156153d9575f5ffd5b6153e589828a01614e94565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215615434575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261549b575f5ffd5b83018035915067ffffffffffffffff8211156154b5575f5ffd5b602001915036819003821315614cf3575f5ffd5b818382375f9101908152919050565b5f602082840312156154e8575f5ffd5b815161281581614d18565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f60208284031215615530575f5ffd5b815161281581614dbe565b6040516060810167ffffffffffffffff81118282101715615583577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405290565b5f81830360808112801561559b575f5ffd5b506040805190810167ffffffffffffffff811182821017156155e4577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405260608212156155f4575f5ffd5b6155fc61553b565b9150833561560981614d18565b8252602084013561561981614d18565b6020830152604084013561562c8161529e565b604083015290815260608301359061564382614d18565b60208101919091529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561067b5761067b615652565b5f8260020b806156a4576156a46154f3565b808360020b0791505092915050565b600f82810b9082900b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081126f7fffffffffffffffffffffffffffffff8213171561067b5761067b615652565b805161ffff81168114613b0e575f5ffd5b5f5f5f5f5f5f5f60e0888a031215615728575f5ffd5b875161573381614d18565b602089015190975061574481614dbe565b955061575260408901615701565b945061576060608901615701565b935061576e60808901615701565b925060a088015160ff81168114615783575f5ffd5b60c0890151909250615794816150ea565b8091505092959891949750929550565b8183525f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156157d4575f5ffd5b8260051b80836020870137939093016020019392505050565b604081525f6158006040830186886157a4565b828103602084015261245c8185876157a4565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03891681526001600160a01b038816602082015260a060408201525f61588b60a08301888a6157a4565b828103606084015261589e8187896157a4565b90508281036080840152613a28818587615813565b5f602082840312156158c3575f5ffd5b815161281581614d59565b8082018082111561067b5761067b615652565b6001600160a01b03871681526001600160a01b038616602082015284604082015283606082015260a060808201525f61591e60a083018486615813565b98975050505050505050565b808202811582820484141761067b5761067b615652565b6fffffffffffffffffffffffffffffffff818116838216019081111561067b5761067b615652565b6fffffffffffffffffffffffffffffffff828116828216039081111561067b5761067b615652565b5f602082840312156159a1575f5ffd5b81516128158161529e565b6001600160a01b038616815284151560208201528360408201526001600160a01b038316606082015260a060808201525f61245c60a08301846151d1565b5f5f604083850312156159fb575f5ffd5b505080516020909101519092909150565b6001600160a01b03861681528460020b60208201528360020b60408201526fffffffffffffffffffffffffffffffff8316606082015260a060808201525f61245c60a08301846151d1565b5f5f60408385031215615a68575f5ffd5b8251615a7381614da1565b602084015190925061512381614da1565b5f5f5f5f5f60a08688031215615a98575f5ffd5b8551615aa381614da1565b6020870151604088015160608901519297509095509350615ac381614da1565b608087015190925061518481614da1565b5f8260020b8260020b028060020b9150808214610e1557610e15615652565b5f8160020b8360020b80615b0957615b096154f3565b5f1981147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000083141615615b3e57615b3e615652565b90059392505050565b62ffffff8181168382160290811690818114610e1557610e1561565256fea2646970667358221220ddc6bec9a8bcc00a26d9cf7a671c9431cd2e9be7011f1029dd81daa07104b1d764736f6c634300081c003300000000000000000000000033128a8fc17869897dce68ed026d694621f6fdfd000000000000000000000000000000000000000000000071d75ab9b92050000000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000001d7347a5f52985844281889e4157a12a84209c4900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084daa4c697000000000000000000000000532f27101965dd16442e59d40670faf5ebb142e40000000000000000000000004200000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041e0c04e02594dd62d9cacad81095469f735096da97dd2d6b4d9168c307d7aaab254eeaa22820951a7b559bf04fb32d1ebb4632e374712218cfbfc8e664fd462331c00000000000000000000000000000000000000000000000000000000000000) (0x0000000000000000000000000000000000000000000000000000000000000001)
    • 1
    • 2
      DELEGATECALL
      24218967 gas SafeL2.fallback (0000000000000000000000009641d764fc13c8b624c04430c7356c1c7c8102e200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ba20000000000000000000000000000000000000000000000000000000000001b8a48d80ff0a0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000001b84900000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000646112e8ac000000000000000000000000bf24cbfe40482980ad88b11add53600edcf0faedbf24cbfe40482980ad88b11add53600edcf0faed6a6708a10fad373b24344a6d000000000000000000000000000000000000000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066461ff715fbf24cbfe40482980ad88b11add53600edcf0faed6a6708a10fad373b24344a6d000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000005e36105af610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610034575f3560e01c80633f63910114610038575b5f5ffd5b61004b610046366004610445565b61005d565b60405190815260200160405180910390f35b5f5f5f61006c888888886100d7565b915091506100cb61008f82866fffffffffffffffffffffffffffffffff16610348565b6100c36100ae85886fffffffffffffffffffffffffffffffff16610348565b6fffffffffffffffffffffffffffffffff1690565b9060801b0190565b98975050505050505050565b6040517ff30dba93000000000000000000000000000000000000000000000000000000008152600283900b60048201525f9081908190819073ffffffffffffffffffffffffffffffffffffffff89169063f30dba939060240161010060405180830381865afa15801561014c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017091906104bb565b50506040517ff30dba9300000000000000000000000000000000000000000000000000000000815260028c900b60048201529397509195505f94508493505073ffffffffffffffffffffffffffffffffffffffff8c169163f30dba93915060240161010060405180830381865afa1580156101ed573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021191906104bb565b505050509350935050508760020b8960020b1215610238578184039550808303945061033b565b8660020b8960020b12610254578382039550828103945061033b565b81848b73ffffffffffffffffffffffffffffffffffffffff1663f30583996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561029f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102c39190610562565b0303955080838b73ffffffffffffffffffffffffffffffffffffffff1663461413196040518163ffffffff1660e01b8152600401602060405180830381865afa158015610312573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103369190610562565b030394505b5050505094509492505050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050805f03610390575060801c90506103e8565b80700100000000000000000000000000000000116103ac575f5ffd5b5f70010000000000000000000000000000000085870980840360801c931090910370010000000000000000000000000000000002919091179150505b92915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461040f575f5ffd5b50565b8035600281900b8114610423575f5ffd5b919050565b6fffffffffffffffffffffffffffffffff8116811461040f575f5ffd5b5f5f5f5f5f60a08688031215610459575f5ffd5b8535610464816103ee565b945061047260208701610412565b935061048060408701610412565b925061048e60608701610412565b9150608086013561049e81610428565b809150509295509295909350565b80518015158114610423575f5ffd5b5f5f5f5f5f5f5f5f610100898b0312156104d3575f5ffd5b88516104de81610428565b80985050602089015180600f0b81146104f5575f5ffd5b60408a015160608b015160808c01519299509097509550600681900b811461051b575f5ffd5b60a08a015190945061052c816103ee565b60c08a015190935063ffffffff81168114610545575f5ffd5b915061055360e08a016104ac565b90509295985092959890939650565b5f60208284031215610572575f5ffd5b505191905056fea2646970667358221220a876a5a2b001389669e73e1d4df7040e0abd691465bd897c5d7b8f39f24de6ec64736f6c634300081c0033000000000000000000000000000000000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000646112e8ac000000000000000000000000bf24cbfe40482980ad88b11add53600edcf0faedbf24cbfe40482980ad88b11add53600edcf0faedfc5dac9daba3ee73b03851bf000000000000000000000000000000000000000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036a461ff715fbf24cbfe40482980ad88b11add53600edcf0faedfc5dac9daba3ee73b03851bf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000003634613600610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610090575f3560e01c80635ac17dfa116100635780635ac17dfa146101575780637679c3921461017d57806395917e7a1461019c578063d42bc5e9146101bc575f5ffd5b80632a7f2f94146100945780633ea648f4146100c15780634a18eb8f14610109578063560191011461012a575b5f5ffd5b6100a76100a2366004612d70565b6101cf565b604080519283526020830191909152015b60405180910390f35b6100d46100cf366004612db5565b610462565b60408051600296870b815294860b602086015292850b9284019290925290920b6060820152608081019190915260a0016100b8565b61011c610117366004612ddf565b61052b565b6040519081526020016100b8565b61013d610138366004612dfa565b610562565b6040805160029390930b83526020830191909152016100b8565b61016a610165366004612e54565b6107ea565b60405160029190910b81526020016100b8565b818015610188575f5ffd5b5061011c610197366004613001565b6109f9565b6101af6101aa366004612ddf565b6110f0565b6040516100b89190613114565b61011c6101ca366004613175565b6111bc565b5f5f5f5f5f5f6101e08b8b8b611792565b915091505f610201600284816101f8576101f86131cb565b048484036118dc565b90506c010000000000000000000000008a73ffffffffffffffffffffffffffffffffffffffff1610156102a2575f61026661023c8e60801c90565b6fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000856118f3565b905061027282826119bc565b955061029a6102948383700100000000000000000000000000000000036119bc565b8c611a60565b9450506102e8565b5f6102b061023c8d60801c90565b90506102bc82826119bc565b94506102e46102de8383700100000000000000000000000000000000036119bc565b8c611ae2565b9550505b5050505f6102f38690565b6fffffffffffffffffffffffffffffffff168a6fffffffffffffffffffffffffffffffff160390505f6103268760801c90565b6fffffffffffffffffffffffffffffffff168a6fffffffffffffffffffffffffffffffff160390505f88600f0b850190505f6103628a60801d90565b600f0b85019050838213801561037757508281135b6103f457838213156103ba5761039a8184036103958685038e611b89565b611c37565b850194506103b56103ad8285038d611c45565b858403611c37565b860395505b828113156103f4576103d48285036103958584038e611c45565b860195506103ef6103e78386038d611b89565b848303611c37565b850394505b89600f0b860191506104068a60801d90565b600f0b8501905061042d856fffffffffffffffffffffffffffffffff88165b9060801b0190565b61044d8285036fffffffffffffffffffffffffffffffff85880316610425565b975097505050505050505b9550959350505050565b5f5f5f5f5f5f5f5f8990508973ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156104b6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104da9190613218565b50939c5091965094506104fe92508391505061ffff80861690851660136001611cff565b90975094506105198361ffff168361ffff16603c8c85610562565b90965093505050509295509295909350565b5f73ffffffffffffffffffffffffffffffffffffffff8216156105595761055182611fc8565b60270361055c565b60285b92915050565b5f806002600862ffffff60cc87901c160660180262ffffff1685901c600860c987901c62ffffff1681610597576105976131cb565b0660180262ffffff1686901c0160020b816105b4576105b46131cb565b05915060d884901c85014210610458575f5f5f8573ffffffffffffffffffffffffffffffffffffffff1663252c09d78a8b60018e0301816105f7576105f76131cb565b066040518263ffffffff1660e01b815260040161061691815260200190565b608060405180830381865afa158015610631573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065591906132b6565b5050915063ffffffff1691505f5f8773ffffffffffffffffffffffffffffffffffffffff1663252c09d78d6040518263ffffffff1660e01b815260040161069e91815260200190565b608060405180830381865afa1580156106b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106dd91906132b6565b5050915063ffffffff16915083820383820360060b816106ff576106ff6131cb565b059450505060c087901c91505f90506001808280805b60088160ff16101561079f57600762ffffff88166003830260ff161c8116935083900361074757600185039450610797565b8260180262ffffff168c901c915083801561076757508160020b8860020b135b15610776576001850194505f93505b6001858260ff16010360030262ffffff168360010162ffffff16901b860195505b600101610715565b508662ffffff1660188c901b77ffffffffffffffffffffffffffffffffffffffffffffffff1660c08762ffffff16901b60d842901b0101019750505050505050509550959350505050565b6040805160148082526102a082019092525f918291906020820161028080368337505060408051601380825261028082019092529293505f92915060208201610260803683370190505090505f5b601481101561087f5760146001820163ffffffff871602048382815181106108625761086261330b565b63ffffffff90921660209283029190910190910152600101610838565b506040517f883bdbfd0000000000000000000000000000000000000000000000000000000081525f9073ffffffffffffffffffffffffffffffffffffffff87169063883bdbfd906108d4908690600401613338565b5f60405180830381865afa1580156108ee573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261093391908101906133e4565b5090505f5b60138110156109c557601463ffffffff87160463ffffffff1660060b8282600101815181106109695761096961330b565b60200260200101518383815181106109835761098361330b565b60200260200101510360060b8161099c5761099c6131cb565b0560020b8382815181106109b2576109b261330b565b6020908102919091010152600101610938565b505f6109d083612158565b9050806009815181106109e5576109e561330b565b602002602001015194505050505092915050565b5f80805b8951811015610a9d575f8a8281518110610a1957610a1961330b565b602002602001015190505f610a2d8261216d565b90505f5b81811015610a8f57610a438382612220565b600103610a8757610a848c8581518110610a5f57610a5f61330b565b60200260200101518260048110610a7857610a7861330b565b60200201518690612236565b94505b600101610a31565b5050508060010190506109fd565b505f610aad885b600f0b5f611c37565b5f0390505f610abf610aa48a60801d90565b5f0390505f82610acc8590565b600f0b128015610ae7575081610ae28560801d90565b600f0b135b15610b515781610b0e85600f0b850361039585610b048960801d90565b600f0b038b611c45565b5f03610b3184610b1e8860801d90565b600f0b0361039588600f0b88038c611b89565b9094509250610b49818401865b600f0b9060801b0190565b915050610c03565b81610b5c8560801d90565b600f0b128015610b6e57508284600f0b135b15610bd75782610b958186600f0b03610395610b8a8860801d90565b600f0b86038b611c45565b610bb6610ba28760801d90565b600f0b85036103958789600f0b038c611b89565b9094505f039250610b49610bca8660801d90565b60801b858301600f0b0190565b610bfa610bf083610be88760801d90565b600f0b611c37565b610b3e8587610be8565b90505f92505f91505b5f8d815b8e51811015610ee0575f8f8281518110610c2357610c2361330b565b602090810291909101015190508e5f5b610c3c8361216d565b811015610ed557610c4d8382612220565b6001148015610c8a5750818481518110610c6957610c6961330b565b60200260200101518160048110610c8257610c8261330b565b602002015115155b15610ecd575f610d8f610d27610ca08a60801d90565b6fffffffffffffffffffffffffffffffff16610ceb868981518110610cc757610cc761330b565b60200260200101518660048110610ce057610ce061330b565b602002015160801d90565b5f036fffffffffffffffffffffffffffffffff1602610d0a8e60801d90565b6fffffffffffffffffffffffffffffffff16808204910615150190565b610b3e8a6fffffffffffffffffffffffffffffffff16610d73878a81518110610d5257610d5261330b565b60200260200101518760048110610d6b57610d6b61330b565b602002015190565b5f036fffffffffffffffffffffffffffffffff1602610d0a8f90565b9050610d9b87826122ff565b96508373ffffffffffffffffffffffffffffffffffffffff87167f4358c577d4c62044fa8caea3ad9778fe842e777c7903f2452d20661f6ff250b784610de15f86612236565b6040805192835260208301919091520160405180910390a35f610e098584603002604c011c90565b610e13868561236a565b610e1d878661237d565b60405160e893841b60208201529190921b60238201526026810191909152604601604051602081830303815290604052805190602001209050610ebc610e9d83610e97878a81518110610e7257610e7261330b565b60200260200101518760048110610e8b57610e8b61330b565b60200201515f90612236565b9061238f565b8f5f8481526020019081526020015f20546122ff90919063ffffffff16565b5f91825260208f9052604090912055505b600101610c33565b505050600101610c07565b50816fffffffffffffffffffffffffffffffff1615610fc85773ffffffffffffffffffffffffffffffffffffffff8b1663083953d9825f8080876040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff9095166004860152600f93840b602486015291830b6044850152820b6064840152900b608482015260a4016020604051808303815f875af1158015610fa2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc691906134a9565b505b610fd28260801c90565b6fffffffffffffffffffffffffffffffff16156110c1578973ffffffffffffffffffffffffffffffffffffffff1663083953d9825f5f5f6110138860801c90565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff9095166004860152600f93840b602486015291830b6044850152820b6064840152900b608482015260a4016020604051808303815f875af115801561109b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110bf91906134a9565b505b6110dd846fffffffffffffffffffffffffffffffff8716610425565b9f9e505050505050505050505050505050565b60608173ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa92505050801561117a57506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261117791908101906134c9565b60015b61055c57505060408051808201909152600381527f3f3f3f0000000000000000000000000000000000000000000000000000000000602082015290565b919050565b5f5f6111c785612494565b6040517fc6e6f5920000000000000000000000000000000000000000000000000000000081525f8881036fffffffffffffffffffffffffffffffff16600483015291925073ffffffffffffffffffffffffffffffffffffffff86169063c6e6f59290602401602060405180830381865afa158015611247573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126b919061357b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301528716906370a0823190602401602060405180830381865afa1580156112d5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f9919061357b565b017effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0390505f8113156114c3576114ba6113328860801d90565b600f0b6113b88773ffffffffffffffffffffffffffffffffffffffff166307a2d13a856040518263ffffffff1660e01b815260040161137391815260200190565b602060405180830381865afa15801561138e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113b2919061357b565b85611a60565b0161042561149f848973ffffffffffffffffffffffffffffffffffffffff166301e1d1146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611409573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061142d919061357b565b8a73ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611476573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061149a919061357b565b6127f4565b600f8b900b036fffffffffffffffffffffffffffffffff1690565b92505050611789565b8373ffffffffffffffffffffffffffffffffffffffff1663c6e6f5926114e98960801d90565b5f036040518263ffffffff1660e01b815260040161151f91906fffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa15801561153a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155e919061357b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301528616906370a0823190602401602060405180830381865afa1580156115c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ec919061357b565b017effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0390505f811315611783576114ba6116d5828673ffffffffffffffffffffffffffffffffffffffff166301e1d1146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611668573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061168c919061357b565b8773ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611476573d5f5f3e3d5ffd5b6116df8960801d90565b600f0b0361042589600f0b61176d8873ffffffffffffffffffffffffffffffffffffffff166307a2d13a876040518263ffffffff1660e01b815260040161172891815260200190565b602060405180830381865afa158015611743573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611767919061357b565b87611ae2565b016fffffffffffffffffffffffffffffffff1690565b50859150505b95945050505050565b5f5f6c010000000000000000000000008373ffffffffffffffffffffffffffffffffffffffff16101561184b576117db846fffffffffffffffffffffffffffffffff1684611ae2565b6117f7906fffffffffffffffffffffffffffffffff8716613592565b61181c6118048660801c90565b6fffffffffffffffffffffffffffffffff168561284f565b6118268760801c90565b6fffffffffffffffffffffffffffffffff166118429190613592565b915091506118d4565b836fffffffffffffffffffffffffffffffff1661187a866fffffffffffffffffffffffffffffffff1685611a60565b6118849190613592565b61188e8560801c90565b6fffffffffffffffffffffffffffffffff166118c56118ad8860801c90565b6fffffffffffffffffffffffffffffffff16866128f1565b6118cf9190613592565b915091505b935093915050565b5f8183106118ea57816118ec565b825b9392505050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050805f03611946575f841161193b575f5ffd5b5082900490506118ec565b808411611951575f5ffd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050805f03611a04575060801c905061055c565b8070010000000000000000000000000000000011611a20575f5ffd5b5f70010000000000000000000000000000000085870980840360801c93109091037001000000000000000000000000000000000291909117949350505050565b5f6fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff83161015611ab957611ab28360028473ffffffffffffffffffffffffffffffffffffffff160a61296c565b905061055c565b611ab283611add73ffffffffffffffffffffffffffffffffffffffff851680612a18565b6119bc565b5f6fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff83161015611b4e57611ab283780100000000000000000000000000000000000000000000000060028573ffffffffffffffffffffffffffffffffffffffff160a6118f3565b611ab283700100000000000000000000000000000000611b8473ffffffffffffffffffffffffffffffffffffffff861680612a18565b6118f3565b5f6fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff83161015611c07575f611bec611be7611bc886612ab4565b60028673ffffffffffffffffffffffffffffffffffffffff160a61296c565b612ac4565b90505f8412611bfb5780611bff565b805f035b91505061055c565b5f611bec611be7611c1786612ab4565b611add73ffffffffffffffffffffffffffffffffffffffff871680612a18565b5f8183126118ea57816118ec565b5f6fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff83161015611cbd575f611bec611be7611c8486612ab4565b780100000000000000000000000000000000000000000000000060028773ffffffffffffffffffffffffffffffffffffffff160a6118f3565b5f611bec611be7611ccd86612ab4565b700100000000000000000000000000000000611b8473ffffffffffffffffffffffffffffffffffffffff881680612a18565b5f5f5f8460010167ffffffffffffffff811115611d1e57611d1e612e8b565b604051908082528060200260200182016040528015611d47578160200160208202803683370190505b5090505f8560010167ffffffffffffffff811115611d6757611d67612e8b565b604051908082528060200260200182016040528015611d90578160200160208202803683370190505b5090505f5b86600101811015611e83578973ffffffffffffffffffffffffffffffffffffffff1663252c09d7898a8985028d030181611dd157611dd16131cb565b066040518263ffffffff1660e01b8152600401611df091815260200190565b608060405180830381865afa158015611e0b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e2f91906132b6565b8363ffffffff1693508260060b9250905050838381518110611e5357611e5361330b565b60200260200101858481518110611e6c57611e6c61330b565b602090810291909101019190915252600101611d95565b505f8667ffffffffffffffff811115611e9e57611e9e612e8b565b604051908082528060200260200182016040528015611ec7578160200160208202803683370190505b5090505f5b87811015611f7757828160010181518110611ee957611ee961330b565b6020026020010151838281518110611f0357611f0361330b565b602002602001015103848260010181518110611f2157611f2161330b565b6020026020010151858381518110611f3b57611f3b61330b565b60200260200101510381611f5157611f516131cb565b05828281518110611f6457611f6461330b565b6020908102919091010152600101611ecc565b50611f8181612158565b6002880481518110611f9557611f9561330b565b6020026020010151815f81518110611faf57611faf61330b565b6020026020010151945094505050509550959350505050565b5f7001000000000000000000000000000000008273ffffffffffffffffffffffffffffffffffffffff161061201b5760808273ffffffffffffffffffffffffffffffffffffffff16901c91506020810190505b680100000000000000008273ffffffffffffffffffffffffffffffffffffffff16106120655760408273ffffffffffffffffffffffffffffffffffffffff16901c91506010810190505b6401000000008273ffffffffffffffffffffffffffffffffffffffff16106120ab5760208273ffffffffffffffffffffffffffffffffffffffff16901c91506008810190505b620100008273ffffffffffffffffffffffffffffffffffffffff16106120ef5760108273ffffffffffffffffffffffffffffffffffffffff16901c91506004810190505b6101008273ffffffffffffffffffffffffffffffffffffffff16106121325760088273ffffffffffffffffffffffffffffffffffffffff16901c91506002810190505b60108273ffffffffffffffffffffffffffffffffffffffff16106111b757600101919050565b6060612169825f6001855103612b1f565b5090565b5f7afe0000000000fe0000000000fe0000000000fe00000000000000008216680100000000000000008110156121a557505f92915050565b6e0100000000000000000000000000008110156121c55750600192915050565b740100000000000000000000000000000000000000008110156121eb5750600292915050565b7a0100000000000000000000000000000000000000000000000000008110156122175750600392915050565b50600492915050565b5f60026048603084020184901c5b069392505050565b5f5f6122428360801d90565b600f0b61224f8560801d90565b600f0b039050805f84600f0b86600f0b0390505f8190508383600f0b14158061227b57508181600f0b14155b156122b2576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122f4837fffffffffffffffffffffffffffffffff0000000000000000000000000000000087168388016fffffffffffffffffffffffffffffffff1601610425565b979650505050505050565b818101828110806123335750826fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff16105b1561055c576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6110006064603084020184901c61222e565b5f60026049603084020184901c61222e565b5f5f61239b8360801d90565b600f0b6123a88560801d90565b600f0b039050805f84600f0b86600f0b0390505f8190508383600f0b1415806123d457508181600f0b14155b1561240b576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122f461241b84600f0b5f612ca8565b61246a61242b84600f0b5f612ca8565b889081016fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff00000000000000000000000000000000919091160190565b9060801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b5f5f5f8360020b126124a9578260020b6124b0565b8260020b5f035b9050620d89e88111156124ef576040517fce8ef7fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816001165f0361251157700100000000000000000000000000000000612523565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612557576ffff97272373d413259a46990580e213a0260801c5b6004821615612576576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612595576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156125b4576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156125d3576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156125f2576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612611576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612631576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612651576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612671576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612691576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156126b1576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156126d1576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156126f1576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612711576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612732576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612752576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612771576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561278e576b048a170391f7dc42444e8fa20260801c5b5f8460020b13156127cc57807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff816127c8576127c86131cb565b0490505b6401000000008106156127e05760016127e2565b5f5b60ff16602082901c0192505050919050565b5f6128008484846118f3565b90505f8280612811576128116131cb565b84860911156118ec577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110612845575f5ffd5b6001019392505050565b5f6fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff831610156128bb57611ab283780100000000000000000000000000000000000000000000000060028573ffffffffffffffffffffffffffffffffffffffff160a6127f4565b611ab28370010000000000000000000000000000000061149a73ffffffffffffffffffffffffffffffffffffffff861680612a18565b5f6fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff8316101561294357611ab28360028473ffffffffffffffffffffffffffffffffffffffff160a612cb6565b611ab28361296773ffffffffffffffffffffffffffffffffffffffff851680612a18565b612d1c565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050805f036129b4575060c01c905061055c565b807801000000000000000000000000000000000000000000000000116129d8575f5ffd5b5f780100000000000000000000000000000000000000000000000085870980840360c01c9310909103680100000000000000000291909117949350505050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050805f03612a60575060401c905061055c565b806801000000000000000011612a74575f5ffd5b5f6801000000000000000085870980840360401c931090910378010000000000000000000000000000000000000000000000000291909117949350505050565b5f5f821361216957815f0361055c565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115612169576040517fb668004500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181808203612b2f575050505050565b5f85600286860305860181518110612b4957612b4961330b565b602002602001015190505b81831215612c7a575b80868481518110612b7057612b7061330b565b60200260200101511215612b8957600190920191612b5d565b858281518110612b9b57612b9b61330b565b6020026020010151811215612bd4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190612b89565b818313612c7557858281518110612bed57612bed61330b565b6020026020010151868481518110612c0757612c0761330b565b6020026020010151878581518110612c2157612c2161330b565b60200260200101888581518110612c3a57612c3a61330b565b6020908102919091010191909152526001909201917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909101905b612b54565b81851215612c8d57612c8d868684612b1f565b83831215612ca057612ca0868486612b1f565b505050505050565b5f8183136118ea57816118ec565b5f612cc1838361296c565b90505f78010000000000000000000000000000000000000000000000005b838509111561055c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110612d13575f5ffd5b60010192915050565b5f612d2783836119bc565b90505f700100000000000000000000000000000000612cdf565b73ffffffffffffffffffffffffffffffffffffffff81168114612d62575f5ffd5b50565b80356111b781612d41565b5f5f5f5f5f60a08688031215612d84575f5ffd5b85359450602086013593506040860135612d9d81612d41565b94979396509394606081013594506080013592915050565b5f5f60408385031215612dc6575f5ffd5b8235612dd181612d41565b946020939093013593505050565b5f60208284031215612def575f5ffd5b81356118ec81612d41565b5f5f5f5f5f60a08688031215612e0e575f5ffd5b853594506020860135935060408601359250606086013591506080860135612e3581612d41565b809150509295509295909350565b63ffffffff81168114612d62575f5ffd5b5f5f60408385031215612e65575f5ffd5b8235612e7081612d41565b91506020830135612e8081612e43565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715612edb57612edb612e8b565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f2857612f28612e8b565b604052919050565b5f67ffffffffffffffff821115612f4957612f49612e8b565b5060051b60200190565b5f82601f830112612f62575f5ffd5b8135612f75612f7082612f30565b612ee1565b8082825260208201915060208360071b860101925085831115612f96575f5ffd5b602085015b83811015612ff75786601f820112612fb1575f5ffd5b612fb9612eb8565b806080830189811115612fca575f5ffd5b835b81811015612fe4578035845260209384019301612fcc565b5050845250602090920191608001612f9b565b5095945050505050565b5f5f5f5f5f5f5f5f610100898b031215613019575f5ffd5b883561302481612d41565b9750602089013567ffffffffffffffff81111561303f575f5ffd5b8901601f81018b1361304f575f5ffd5b803561305d612f7082612f30565b8082825260208201915060208360051b85010192508d83111561307e575f5ffd5b6020840193505b828410156130a0578335825260209384019390910190613085565b9950505050604089013567ffffffffffffffff8111156130be575f5ffd5b6130ca8b828c01612f53565b965050606089013594506130e060808a01612d65565b93506130ee60a08a01612d65565b92506130fc60c08a01612d65565b979a969950949793969295919450919260e001359150565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b8060020b8114612d62575f5ffd5b5f5f5f5f5f60a08688031215613189575f5ffd5b853561319481612d41565b94506020860135935060408601356131ab81613167565b925060608601356131bb81612d41565b91506080860135612e3581612d41565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b805161ffff811681146111b7575f5ffd5b805180151581146111b7575f5ffd5b5f5f5f5f5f5f5f60e0888a03121561322e575f5ffd5b875161323981612d41565b602089015190975061324a81613167565b9550613258604089016131f8565b9450613266606089016131f8565b9350613274608089016131f8565b925060a088015160ff81168114613289575f5ffd5b915061329760c08901613209565b905092959891949750929550565b8051600681900b81146111b7575f5ffd5b5f5f5f5f608085870312156132c9575f5ffd5b84516132d481612e43565b93506132e2602086016132a5565b925060408501516132f281612d41565b915061330060608601613209565b905092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b602080825282518282018190525f918401906040840190835b8181101561337557835163ffffffff16835260209384019390920191600101613351565b509095945050505050565b5f82601f83011261338f575f5ffd5b815161339d612f7082612f30565b8082825260208201915060208360051b8601019250858311156133be575f5ffd5b602085015b83811015612ff75780516133d681612d41565b8352602092830192016133c3565b5f5f604083850312156133f5575f5ffd5b825167ffffffffffffffff81111561340b575f5ffd5b8301601f8101851361341b575f5ffd5b8051613429612f7082612f30565b8082825260208201915060208360051b85010192508783111561344a575f5ffd5b6020840193505b8284101561347357613462846132a5565b825260209384019390910190613451565b80955050505050602083015167ffffffffffffffff811115613493575f5ffd5b61349f85828601613380565b9150509250929050565b5f602082840312156134b9575f5ffd5b815180600f0b81146118ec575f5ffd5b5f602082840312156134d9575f5ffd5b815167ffffffffffffffff8111156134ef575f5ffd5b8201601f810184136134ff575f5ffd5b805167ffffffffffffffff81111561351957613519612e8b565b61354a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612ee1565b81815285602083850101111561355e575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f6020828403121561358b575f5ffd5b5051919050565b8082018082111561055c577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffdfea2646970667358221220adc927a9e79adf287b66a8ca601815395ba6517d458ade6e8da2c538987cdf4864736f6c634300081c003300000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000646112e8ac000000000000000000000000bf24cbfe40482980ad88b11add53600edcf0faedbf24cbfe40482980ad88b11add53600edcf0faed9d0cbaf441aad6a1cdfff7aa000000000000000000000000000000000000000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026461ff715fbf24cbfe40482980ad88b11add53600edcf0faed9d0cbaf441aad6a1cdfff7aa000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001f16101bd610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610034575f3560e01c8063cacfb53514610038575b5f5ffd5b61004b610046366004610170565b6100a0565b60408051600298890b815296880b602088015294870b868601529290950b6060850152608084015260a08301939093526fffffffffffffffffffffffffffffffff90921660c082015290519081900360e00190f35b5f5f5f5f5f5f5f6100b96100b48960a01c90565b6100e7565b929950909750955093506100cc8861014f565b92506100d788610161565b9150879050919395979092949650565b5f80808060a085901b7fffffffffffffffffffffffff0000000000000000000000000000000000000000166bffffffffffffffffffffffff861661012b8260b81c90565b6101358360d01c90565b61013f8460e81c90565b9450945094509450509193509193565b5f62010000608083901c5b0692915050565b5f62010000609083901c61015a565b5f60208284031215610180575f5ffd5b503591905056fea2646970667358221220b06102676e416fc95c1576be150978367e094895857c9e894de3b5665b84c58764736f6c634300081c003300000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000646112e8ac000000000000000000000000bf24cbfe40482980ad88b11add53600edcf0faedbf24cbfe40482980ad88b11add53600edcf0faedbeb8e05e86dd5c1bceb7e349000000000000000000000000000000000000000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f6461ff715fbf24cbfe40482980ad88b11add53600edcf0faedbeb8e05e86dd5c1bceb7e34900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000efc610ec8610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610055575f3560e01c806361de447b1461005957806382f4055114610082578063c2711c7f14610095578063dbfff1ca146100ba575b5f5ffd5b61006c610067366004610a49565b6100db565b6040516100799190610a96565b60405180910390f35b61006c610090366004610ae9565b6101c8565b6100a86100a3366004610b77565b61039d565b60405160ff9091168152602001610079565b8180156100c5575f5ffd5b506100d96100d4366004610b99565b610434565b005b6040517f95917e7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152606090829073b6523900510d44fbf2a19f73dbfc24e13c03a95b906395917e7a906024015f60405180830381865af415801561015b573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526101a09190810190610c06565b6040516020016101b1929190610c92565b604051602081830303815290604052905092915050565b6040517f95917e7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861660048201526060905f9073b6523900510d44fbf2a19f73dbfc24e13c03a95b906395917e7a906024015f60405180830381865af4158015610248573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261028d9190810190610c06565b6040517f95917e7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff881660048201529091505f9073b6523900510d44fbf2a19f73dbfc24e13c03a95b906395917e7a906024015f60405180830381865af415801561030d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103529190810190610c06565b905083866103605781610362565b825b838361036d896106c3565b604051602001610381959493929190610cae565b6040516020818303038152906040529250505095945050505050565b5f8173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610423575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261042091810190610d8b565b60015b61042e57505f919050565b92915050565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602483015283169063095ea7b3906044015f604051808303815f87803b1580156104c0575f5ffd5b505af11580156104d2573d5f5f3e3d5ffd5b50506040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301528416925063095ea7b391506044015f604051808303815f87803b158015610562575f5ffd5b505af1158015610574573d5f5f3e3d5ffd5b50506040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301528516925063095ea7b391506044015f604051808303815f87803b158015610604575f5ffd5b505af1158015610616573d5f5f3e3d5ffd5b50506040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301528416925063095ea7b391506044015f604051808303815f87803b1580156106a6575f5ffd5b505af11580156106b8573d5f5f3e3d5ffd5b505050505050505050565b60606106dd6106d3606484610dd8565b62ffffff16610775565b6106e8606484610dfd565b62ffffff161561073e5761070b600a6107018186610dd8565b6106d39190610dfd565b6107196106d3600a86610dfd565b60405160200161072a929190610e22565b60405160208183030381529060405261074e565b60405180602001604052805f8152505b60405160200161075f929190610e56565b6040516020818303038152906040529050919050565b60605f61078183610831565b60010190505f8167ffffffffffffffff8111156107a0576107a0610936565b6040519080825280601f01601f1916602001820160405280156107ca576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846107d457509392505050565b5f807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610879577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106108a5576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106108c357662386f26fc10000830492506010015b6305f5e10083106108db576305f5e100830492506008015b61271083106108ef57612710830492506004015b60648310610901576064830492506002015b600a831061042e5760010192915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610933575f5ffd5b50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156109aa576109aa610936565b604052919050565b5f67ffffffffffffffff8211156109cb576109cb610936565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610a06575f5ffd5b8135610a19610a14826109b2565b610963565b818152846020838601011115610a2d575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610a5a575f5ffd5b8235610a6581610912565b9150602083013567ffffffffffffffff811115610a80575f5ffd5b610a8c858286016109f7565b9150509250929050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f5f5f5f5f60a08688031215610afd575f5ffd5b8535610b0881610912565b94506020860135610b1881610912565b935060408601358015158114610b2c575f5ffd5b9250606086013562ffffff81168114610b43575f5ffd5b9150608086013567ffffffffffffffff811115610b5e575f5ffd5b610b6a888289016109f7565b9150509295509295909350565b5f60208284031215610b87575f5ffd5b8135610b9281610912565b9392505050565b5f5f5f5f5f60a08688031215610bad575f5ffd5b8535610bb881610912565b94506020860135610bc881610912565b93506040860135610bd881610912565b92506060860135610be881610912565b91506080860135610bf881610912565b809150509295509295909350565b5f60208284031215610c16575f5ffd5b815167ffffffffffffffff811115610c2c575f5ffd5b8201601f81018413610c3c575f5ffd5b8051610c4a610a14826109b2565b818152856020838501011115610c5e575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f81518060208401855e5f93019283525090919050565b5f610ca6610ca08386610c7b565b84610c7b565b949350505050565b5f610cb98288610c7b565b7f20000000000000000000000000000000000000000000000000000000000000008152610ce96001820188610c7b565b90507f204c50206f6e20000000000000000000000000000000000000000000000000008152610d1b6007820187610c7b565b90507f2f000000000000000000000000000000000000000000000000000000000000008152610d4d6001820186610c7b565b90507f20000000000000000000000000000000000000000000000000000000000000008152610d7f6001820185610c7b565b98975050505050505050565b5f60208284031215610d9b575f5ffd5b815160ff81168114610b92575f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62ffffff831680610dec57610dec610dab565b8062ffffff84160491505092915050565b5f62ffffff831680610e1157610e11610dab565b8062ffffff84160691505092915050565b7f2e0000000000000000000000000000000000000000000000000000000000000081525f610ca6610ca06001840186610c7b565b5f610e64610ca08386610c7b565b7f6270730000000000000000000000000000000000000000000000000000000000815260030194935050505056fea264697066735822122096302a2eb6beadd6c4b80f70ac0cf60c87da5ac40a20330880b2fabb7030219864736f6c634300081c00330000000000000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000646112e8ac000000000000000000000000bf24cbfe40482980ad88b11add53600edcf0faedbf24cbfe40482980ad88b11add53600edcf0faedfb91b4b2d99f18b0be792aec000000000000000000000000000000000000000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051c461ff715fbf24cbfe40482980ad88b11add53600edcf0faedfb91b4b2d99f18b0be792aec00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000005154610160604052348015610010575f5ffd5b5060405161507438038061507483398101604081905261002f91610055565b60809690965260a09490945260c09290925260e0526101005261012052610140526100a4565b5f5f5f5f5f5f5f60e0888a03121561006b575f5ffd5b5050855160208701516040880151606089015160808a015160a08b015160c0909b0151949c939b50919990985090965094509092509050565b60805160a05160c05160e051610100516101205161014051614f1d6101575f395f61204101525f818161417e015281816141d101528181614285015281816142fc015261432301525f8181614150015281816141b0015281816141f30152818161423201526142db01525f61261901525f818161425f015281816142b301528181614345015261437501525f61411c01525f818161190101528181611cdd0152818161247b0152612b150152614f1d5ff3fe60806040526004361061025d575f3560e01c806374a8f1031161014b578063c63d75b6116100c6578063dd62ed3e1161007c578063ef8b30f711610062578063ef8b30f714610739578063fb29238b14610758578063fc380c2214610787575f5ffd5b8063dd62ed3e146106e4578063e81c10541461071a575f5ffd5b8063ce96cb77116100ac578063ce96cb7714610687578063d8ba510c146106a6578063d905777e146106c5575f5ffd5b8063c63d75b614610649578063c6e6f59214610668575f5ffd5b8063a9059cbb1161011b578063b3d7f6b911610101578063b3d7f6b9146105ec578063b460af941461060b578063ba0876521461062a575f5ffd5b8063a9059cbb146105ad578063ac9650d8146105cc575f5ffd5b806374a8f1031461053c578063795a1f0d1461055b57806394bf804d1461057a57806395d89b4114610599575f5ffd5b806323b872dd116101db578063402d267d116101ab5780635c19a95c116101915780635c19a95c146104d35780636e553f65146104f257806370a0823114610511575f5ffd5b8063402d267d146104885780634cdad506146104b4575f5ffd5b806323b872dd146103ee578063313ce5671461040d57806338d52e0f146104335780633bec831b14610467575f5ffd5b8063095ea7b3116102305780630a28a477116102165780630a28a4771461036f5780630ebd39061461038e57806318160ddd146103da575f5ffd5b8063095ea7b31461032157806309e0851014610350575f5ffd5b806301e1d1141461026157806306fdde03146102af57806307a2d13a146102d0578063083953d9146102ef575b5f5ffd5b34801561026c575f5ffd5b5060075470010000000000000000000000000000000081046fffffffffffffffffffffffffffffffff9081169116015b6040519081526020015b60405180910390f35b3480156102ba575f5ffd5b506102c36107a6565b6040516102a691906143ee565b3480156102db575f5ffd5b5061029c6102ea366004614400565b6108eb565b3480156102fa575f5ffd5b5061030e61030936600461444c565b610931565b604051600f9190910b81526020016102a6565b34801561032c575f5ffd5b5061034061033b3660046144af565b610ade565b60405190151581526020016102a6565b34801561035b575f5ffd5b5061029c61036a3660046145ae565b610b56565b34801561037a575f5ffd5b5061029c610389366004614400565b610c1a565b348015610399575f5ffd5b506103ad6103a83660046146e6565b610c5d565b6040805163ffffffff90931683526fffffffffffffffffffffffffffffffff9091166020830152016102a6565b3480156103e5575f5ffd5b5061029c5f5481565b3480156103f9575f5ffd5b5061034061040836600461473d565b610e10565b348015610418575f5ffd5b50610421610eec565b60405160ff90911681526020016102a6565b34801561043e575f5ffd5b5060035460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102a6565b348015610472575f5ffd5b5061048661048136600461473d565b610f92565b005b348015610493575f5ffd5b5061029c6104a236600461477b565b506cffffffffffffffffffffffffff90565b3480156104bf575f5ffd5b5061029c6104ce366004614400565b611013565b3480156104de575f5ffd5b506104866104ed36600461477b565b61101d565b3480156104fd575f5ffd5b5061029c61050c366004614796565b6110c9565b34801561051c575f5ffd5b5061029c61052b36600461477b565b60016020525f908152604090205481565b348015610547575f5ffd5b5061048661055636600461477b565b611225565b348015610566575f5ffd5b5061029c610575366004614805565b6112c9565b348015610585575f5ffd5b5061029c610594366004614796565b6114f4565b3480156105a4575f5ffd5b506102c3611641565b3480156105b8575f5ffd5b506103406105c73660046144af565b6116df565b6105df6105da366004614873565b6117b0565b6040516102a691906148b2565b3480156105f7575f5ffd5b5061029c610606366004614400565b6118be565b348015610616575f5ffd5b5061029c610625366004614933565b611934565b348015610635575f5ffd5b5061029c610644366004614933565b611b0b565b348015610654575f5ffd5b5061029c61066336600461477b565b611cd7565b348015610673575f5ffd5b5061029c610682366004614400565b611d29565b348015610692575f5ffd5b5061029c6106a136600461477b565b611d69565b3480156106b1575f5ffd5b506104866106c0366004614972565b611e76565b3480156106d0575f5ffd5b5061029c6106df36600461477b565b6120aa565b3480156106ef575f5ffd5b5061029c6106fe3660046149e4565b600260209081525f928352604080842090915290825290205481565b348015610725575f5ffd5b5061048661073436600461473d565b612146565b348015610744575f5ffd5b5061029c610753366004614400565b612475565b348015610763575f5ffd5b5061076c6124df565b604080519384526020840192909252908201526060016102a6565b348015610792575f5ffd5b5061029c6107a1366004614a10565b61251c565b60048054600554600854604080518082018252600781527f504f50542d563100000000000000000000000000000000000000000000000000602082015290517f82f4055100000000000000000000000000000000000000000000000000000000815260609573f69ba2986753c4a79f6873941dfb1fb46c0ca696956382f40551956108879573ffffffffffffffffffffffffffffffffffffffff92831695928216947401000000000000000000000000000000000000000090920460ff169370010000000000000000000000000000000090910462ffffff16929101614a61565b5f60405180830381865af41580156108a1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108e69190810190614abe565b905090565b5f61092b826109246007546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204160190565b5f546126e2565b92915050565b6006545f9073ffffffffffffffffffffffffffffffffffffffff163314610984576040517f2dd1912a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600754600f84810b6fffffffffffffffffffffffffffffffff9092168290039184820b87890390920b9003035f811315610a0a575f6109f8825f546109f36007546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204160190565b6127ab565b9050610a048982612806565b50610a2c565b5f811215610a2c575f610a1e825f03611d29565b9050610a2a8982612897565b505b610a3a84600f0b8301612922565b600780547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9283161790819055610a9f91898903600f0b7001000000000000000000000000000000009092041603612922565b600780546fffffffffffffffffffffffffffffffff92831670010000000000000000000000000000000002921691909117905591505095945050505050565b335f81815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b459086815260200190565b60405180910390a350600192915050565b5f610c105f855111610b68575f610b8e565b610b8e836fffffffffffffffffffffffffffffffff16610b888888612973565b01612922565b73ffffffffffffffffffffffffffffffffffffffff88165f90815260016020526040902054610bd4906fffffffffffffffffffffffffffffffff871690610b88906108eb565b6fffffffffffffffffffffffffffffffff169060801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b9695505050505050565b5f8054610c5683826109f36007546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204160190565b9392505050565b6006545f90819073ffffffffffffffffffffffffffffffffffffffff163314610cb2576040517f2dd1912a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600754600f85900b6fffffffffffffffffffffffffffffffff909116035f80610cdd89898989612ab8565b915091505f821315610d36575f610d24835f546109f36007546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204160190565b9050610d308b82612806565b50610d58565b5f821215610d58575f610d4a835f03611d29565b9050610d568b82612897565b505b610d6183612922565b600780547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9283161790819055610dc6918b8b03600f0b7001000000000000000000000000000000009092041601612922565b600780546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055610e01612b6a565b9a909950975050505050505050565b6006546040517fc79ee60d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301525f92169063c79ee60d90602401602060405180830381865afa158015610e7e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea29190614b70565b15610ed9576040517f2501f81e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ee4848484612be0565b949350505050565b6003546040517fc2711c7f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201525f9073f69ba2986753c4a79f6873941dfb1fb46c0ca6969063c2711c7f90602401602060405180830381865af4158015610f6e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e69190614b87565b60065473ffffffffffffffffffffffffffffffffffffffff163314610fe3576040517f2dd1912a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81131561100357610ffe8383610ff984611d29565b612d20565b505050565b610ffe8284610ff9845f03611d29565b5f61092b826108eb565b60065473ffffffffffffffffffffffffffffffffffffffff16331461106e576040517f2dd1912a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81165f90815260016020526040812080547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92906110c1908490614bd4565b909155505050565b5f6cffffffffffffffffffffffffff831115611111576040517fc56d46d300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61111a83612475565b6003546006549192506111499173ffffffffffffffffffffffffffffffffffffffff9182169133911686612dc8565b6111538282612897565b600780548491905f906111799084906fffffffffffffffffffffffffffffffff16614be7565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78584604051611217929190918252602082015260400190565b60405180910390a392915050565b60065473ffffffffffffffffffffffffffffffffffffffff163314611276576040517f2dd1912a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81165f90815260016020526040812080547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92906110c1908490614c0f565b5f6112d386610c1a565b90503373ffffffffffffffffffffffffffffffffffffffff8516146113865773ffffffffffffffffffffffffffffffffffffffff84165f9081526002602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611384576113538282614c0f565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526002602090815260408083203384529091529020555b505b6113908482612806565b600780548791905f906113b69084906fffffffffffffffffffffffffffffffff16614c22565b82546fffffffffffffffffffffffffffffffff9182166101009390930a9283029190920219909116179055506006546040517f5036275a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635036275a9061143c90879087908790600401614c4a565b5f6040518083038186803b158015611452575f5ffd5b505afa158015611464573d5f5f3e3d5ffd5b5050600354600654611493935073ffffffffffffffffffffffffffffffffffffffff9182169250168789612dc8565b604080518781526020810183905273ffffffffffffffffffffffffffffffffffffffff808716929088169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a495945050505050565b5f6114fe836118be565b90506cffffffffffffffffffffffffff811115611547576040517fc56d46d300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546006546115739173ffffffffffffffffffffffffffffffffffffffff9081169133911684612dc8565b61157d8284612897565b600780548291905f906115a39084906fffffffffffffffffffffffffffffffff16614be7565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78386604051611217929190918252602082015260400190565b600354604080518082018252600281527f706f000000000000000000000000000000000000000000000000000000000000602082015290517f61de447b00000000000000000000000000000000000000000000000000000000815260609273f69ba2986753c4a79f6873941dfb1fb46c0ca696926361de447b926108879273ffffffffffffffffffffffffffffffffffffffff169190600401614ca2565b6006546040517fc79ee60d0000000000000000000000000000000000000000000000000000000081523360048201525f9173ffffffffffffffffffffffffffffffffffffffff169063c79ee60d90602401602060405180830381865afa15801561174b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061176f9190614b70565b156117a6576040517f2501f81e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c568383612e53565b60608167ffffffffffffffff8111156117cb576117cb6144ea565b6040519080825280602002602001820160405280156117fe57816020015b60608152602001906001900390816117e95790505b5090505f5b828110156118b7575f803086868581811061182057611820614cd0565b90506020028101906118329190614cfd565b604051611840929190614d5e565b5f60405180830381855af49150503d805f8114611878576040519150601f19603f3d011682016040523d82523d5f602084013e61187d565b606091505b50915091508161188f57805160208201fd5b808484815181106118a2576118a2614cd0565b60209081029190910101525050600101611803565b5092915050565b5f61092b6118ce61271084614d6d565b60075470010000000000000000000000000000000081046fffffffffffffffffffffffffffffffff9081169116016119287f0000000000000000000000000000000000000000000000000000000000000000612710614c0f565b5f546109f39190614d6d565b5f61193e82611d69565b841115611977576040517f20adf2ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61198084610c1a565b90503373ffffffffffffffffffffffffffffffffffffffff831614611a335773ffffffffffffffffffffffffffffffffffffffff82165f9081526002602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611a3157611a008282614c0f565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526002602090815260408083203384529091529020555b505b611a3d8282612806565b600780546fffffffffffffffffffffffffffffffff808216879003167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116179055600354600654611aab9173ffffffffffffffffffffffffffffffffffffffff90811691168587612dc8565b604080518581526020810183905273ffffffffffffffffffffffffffffffffffffffff808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db91015b60405180910390a49392505050565b5f611b15826120aa565b841115611b4e576040517f20adf2ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff831614611bff5773ffffffffffffffffffffffffffffffffffffffff82165f9081526002602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611bfd57611bcc8582614c0f565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526002602090815260408083203384529091529020555b505b611c0884611013565b9050611c148285612806565b600780546fffffffffffffffffffffffffffffffff808216849003167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116179055600354600654611c829173ffffffffffffffffffffffffffffffffffffffff90811691168584612dc8565b604080518281526020810186905273ffffffffffffffffffffffffffffffffffffffff808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db9101611afc565b5f6127107f00000000000000000000000000000000000000000000000000000000000000008103611d146cffffffffffffffffffffffffff611d29565b0281611d2257611d22614d84565b0492915050565b5f61092b825f54611d646007546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204160190565b6126e2565b6007545f906fffffffffffffffffffffffffffffffff168181611d8c575f611d91565b600182035b73ffffffffffffffffffffffffffffffffffffffff85165f9081526001602052604081205491925090611dc3906108eb565b6006546040517fc79ee60d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015292935091169063c79ee60d906024015b602060405180830381865afa158015611e34573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e589190614b70565b15611e63575f611e6d565b611e6d8282612ed6565b95945050505050565b60035474010000000000000000000000000000000000000000900460ff1615611ecb576040517f8f02272600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055620f42405f55600780547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016600117905584611f465782611f48565b835b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff93841617909155600680548216848416179055600880547fffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000062ffffff8716908102919091179091556004805490921687841617909155600580549286167fffffffffffffffffffffff00000000000000000000000000000000000000000090931692909217740100000000000000000000000000000000000000008815150217909155612710907f000000000000000000000000000000000000000000000000000000000000000002600880547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016929091046fffffffffffffffffffffffffffffffff169190911790555050505050565b6007545f906fffffffffffffffffffffffffffffffff16816120d9826120d0575f611d29565b60018303611d29565b73ffffffffffffffffffffffffffffffffffffffff8581165f81815260016020526040908190205460065491517fc79ee60d00000000000000000000000000000000000000000000000000000000815260048101939093529394509091169063c79ee60d90602401611e19565b60065473ffffffffffffffffffffffffffffffffffffffff163314612197576040517f2dd1912a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81121561231e576003545f829003906121c99073ffffffffffffffffffffffffffffffffffffffff16853384612dc8565b6121db836121d683611d29565b612897565b600780548291905f906122019084906fffffffffffffffffffffffffffffffff16614be7565b82546fffffffffffffffffffffffffffffffff9182166101009390930a92830291909202199091161790555073ffffffffffffffffffffffffffffffffffffffff83165f908152600160205260409020547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156122cd5773ffffffffffffffffffffffffffffffffffffffff84165f90815260016020526040812081905580547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff839003019055612317565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526001602052604090207fff00000000000000000000000000000000000000000000000000000000000001820190555b5050505050565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600160205260409020547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561239b575f80547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9290920390910181556123be565b7fff00000000000000000000000000000000000000000000000000000000000001015b73ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604081208290556123ee83611d29565b90508181111561246a57612403848684612d20565b5f54612464866121d6856124598882870361245460018361244e6007546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204160190565b03612eeb565b612ef9565b036127108502612ed6565b50612317565b612317848683612d20565b5f61092b7f00000000000000000000000000000000000000000000000000000000000000006127100383025f546127106124d96007546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204160190565b026126e2565b6007546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004165f612515612b6a565b9050909192565b5f6001815b61252a86612f72565b8110156126165761253b8682613025565b1561260e575f61256a61254d8861303b565b612557898561304d565b0262ffffff166002808204910615150190565b90506125a483600283900b6125916125878b87603002604c011c90565b8d0360020b613060565b8161259e5761259e614d84565b0561307a565b9250505f5f5f5f5f6125b78b878c613088565b90506125c38d826130f3565b90955093506125d28c826130f3565b909350915061260790506126008285036fffffffffffffffffffffffffffffffff858803165b9060801b0190565b8890613171565b9650505050505b600101612521565b507f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82011d6126d66127108261266d8760801d90565b600f0b028161267e5761267e614d84565b056125f86127108488600f0b028161269857612698614d84565b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000881691900587016fffffffffffffffffffffffffffffffff160190565b98975050505050505050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050805f03612735575f841161272a575f5ffd5b508290049050610c56565b808411612740575f5ffd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f6127b78484846126e2565b90505f82806127c8576127c8614d84565b8486091115610c56577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81106127fc575f5ffd5b6001019392505050565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600160205260408120805483929061283a908490614c0f565b90915550505f8054829003815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600160205260408120805483019055805482919081906128d3908490614bd4565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161288b565b806fffffffffffffffffffffffffffffffff8116811461296e576040517fb668004500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b80515f90815b81811015612ab0575f84828151811061299457612994614cd0565b60200260200101515f600281106129ad576129ad614cd0565b602002015190505f6129ec8684815181106129ca576129ca614cd0565b60200260200101516001600281106129e4576129e4614cd0565b602002015190565b60055490915074010000000000000000000000000000000000000000900460ff165f81612a5157612a4c888681518110612a2857612a28614cd0565b6020026020010151600160028110612a4257612a42614cd0565b602002015161323a565b612a8a565b612a8a888681518110612a6657612a66614cd0565b6020026020010151600160028110612a8057612a80614cd0565b6020020151613249565b90505f612a9a85858c8587613258565b9790970196505060019093019250612979915050565b505092915050565b5f5f5f868603600f0b85600f0b0390505f815f1480612ad45750845b612b0e57612b09612ae483613060565b6008546fffffffffffffffffffffffffffffffff1602620f4240808204910615150190565b612b10565b5f5b612b587f00000000000000000000000000000000000000000000000000000000000000008a8a016fffffffffffffffffffffffffffffffff1602612710808204910615150190565b01918201989197509095505050505050565b5f612b9f6007546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204160190565b6007546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000909104166127100281612bda57612bda614d84565b04905090565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612c7257612c418382614c0f565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526002602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85165f9081526001602052604081208054859290612ca6908490614c0f565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f81815260016020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612d0d9087815260200190565b60405180910390a3506001949350505050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604081208054839290612d54908490614c0f565b909155505073ffffffffffffffffffffffffffffffffffffffff8083165f81815260016020526040908190208054850190555190918516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612dbb9085815260200190565b60405180910390a3505050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815284816004015283816024015282816044015260205f6064835f8a5af13d15601f3d1160015f511416171691505080612317576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f90815260016020526040812080548391908390612e73908490614c0f565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f81815260016020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b459086815260200190565b5f818310612ee45781610c56565b5090919050565b5f818313612ee45781610c56565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050805f03612f41575f841161272a575f5ffd5b808411612740577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92505050610c56565b5f7afe0000000000fe0000000000fe0000000000fe0000000000000000821668010000000000000000811015612faa57505f92915050565b6e010000000000000000000000000000811015612fca5750600192915050565b74010000000000000000000000000000000000000000811015612ff05750600292915050565b7a01000000000000000000000000000000000000000000000000000081101561301c5750600392915050565b50600492915050565b5f60026048603084020184901c5b069392505050565b5f62010000603083901c5b0692915050565b5f6110006064603084020184901c613033565b5f5f82136130765761307182614db1565b61092b565b5090565b5f818311612ee45781610c56565b5f808061309586866132b4565b90925090505f6130a587876132eb565b6130c1906fffffffffffffffffffffffffffffffff8716614d6d565b90506130cd87876132fd565b5f036130e8576130de83838361330f565b9350505050610c56565b6130de8383836133f4565b5f5f6130ff8360e81c90565b60020b8460020b1361311b5761311483613445565b915061316a565b6131258360d01c90565b60020b8460020b126131415761313a836134e7565b905061316a565b61315361314e848661353c565b613445565b9150613167613162848661358a565b6134e7565b90505b9250929050565b5f5f61317d8360801d90565b600f0b61318a8560801d90565b600f0b039050805f84600f0b86600f0b0390505f8190508383600f0b1415806131b657508181600f0b14155b156131ed576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61322f837fffffffffffffffffffffffffffffffff0000000000000000000000000000000087168388016fffffffffffffffffffffffffffffffff16016125f8565b979650505050505050565b5f62010000609083901c613046565b5f62010000608083901c613046565b5f5f61326387612f72565b90505f5b818110156132a9578361327b57600161327d565b5f5b60ff1661328a89836135d8565b036132a15761329c88828989896135ea565b830192505b600101613267565b505095945050505050565b5f806132e06132c88585603002604c011c90565b6132d2868661304d565b6132db8761303b565b61361a565b909590945092505050565b5f60806041603084020184901c613033565b5f60026040603084020184901c613033565b5f5f61331a85613638565b90505f61332685613638565b9050610c10868661338d6133888861336a8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16613998565b88880373ffffffffffffffffffffffffffffffffffffffff166126e2565b612922565b7fffffff000000000000000000000000000000000000000000000000000000000060e884901b167cffffff000000000000000000000000000000000000000000000000000060d084901b16016fffffffffffffffffffffffffffffffff8216019392505050565b5f5f6133ff85613638565b90505f61340b85613638565b9050610c10868661338d613388886c0100000000000000000000000088880373ffffffffffffffffffffffffffffffffffffffff166126e2565b5f5f6134596134548460e81c90565b613638565b90505f6134696134548560d01c90565b905073ffffffffffffffffffffffffffffffffffffffff82166134d16060866fffffffffffffffffffffffffffffffff16901b84840373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff166126e2565b816134de576134de614d84565b04949350505050565b5f5f6134f66134548460e81c90565b90505f6135066134548560d01c90565b9050610ee4846fffffffffffffffffffffffffffffffff1683830373ffffffffffffffffffffffffffffffffffffffff16613998565b5f610c567cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84168360e81b7fffffff0000000000000000000000000000000000000000000000000000000000160190565b5f610c567fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff84168360d01b7cffffff0000000000000000000000000000000000000000000000000000160190565b5f60026049603084020184901c613033565b5f846135f68782613a38565b1461360d576136088686868686613a4a565b610c10565b610c108686868686613a9f565b5f5f5f5f6136288686613cc7565b9088039897019695505050505050565b5f5f5f8360020b1261364d578260020b613654565b8260020b5f035b9050620d89e8811115613693576040517fce8ef7fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816001165f036136b5577001000000000000000000000000000000006136c7565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156136fb576ffff97272373d413259a46990580e213a0260801c5b600482161561371a576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613739576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613758576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613777576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613796576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156137b5576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156137d5576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156137f5576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613815576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613835576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613855576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613875576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613895576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156138b5576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156138d6576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156138f6576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615613915576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615613932576b048a170391f7dc42444e8fa20260801c5b5f8460020b131561397057807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8161396c5761396c614d84565b0490505b640100000000810615613984576001613986565b5f5b60ff16602082901c0192505050919050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050805f036139e0575060601c905061092b565b806c01000000000000000000000000116139f8575f5ffd5b5f6c0100000000000000000000000085870980840360601c9310909103740100000000000000000000000000000000000000000291909117949350505050565b5f6004604a603084020184901c613033565b5f80613a568787613a38565b90505f613a638888613025565b9050613a6f8883613025565b8114613a925780600103613a8d57613a8a8887898588613d09565b92505b6132a9565b6126d68888888888613ecd565b5f80613aab87876135d8565b90505f613ab9888789613ef2565b90505f8215613ad157613acc8260801c90565b613ad3565b815b90505f613ae08a8a613025565b9050613aed82828861402d565b9450805f03613cba575f80613b028c8c6132b4565b915091508060020b8960020b12158015613b1c5750856001145b80613b3557508160020b8960020b128015613b35575085155b613cb7575f613b498d8d603002604c011c90565b90505f87600114613b8b57613b866134548c84036002027ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186140ac565b613bbd565b613bbd613454838d036002027ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186140ac565b90508360020b8b60020b128015613bd45750876001145b80613bee57508260020b8b60020b12158015613bee575087155b15613c3f5773ffffffffffffffffffffffffffffffffffffffff81166c0100000000000000000000000003613c356fffffffffffffffffffffffffffffffff8816826140c0565b8a01995050613cb4565b5f613c4f85840384860301613638565b90505f613cac886fffffffffffffffffffffffffffffffff1684840373ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000008573ffffffffffffffffffffffffffffffffffffffff16016127ab565b9a909a019950505b50505b50505b5050505095945050505050565b5f806002613cd58486614de7565b613cdf9190614e06565b613cfe613cec8587614e9e565b62ffffff166002808204910615150190565b915091509250929050565b5f5f613d16878787613ef2565b90505f613d24888887613ef2565b905081608081811c90839081901c5f613d3d8d8c6135d8565b905080613d4a8e8d6132fd565b14613df557805f03613da657826fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff1610613d8957828503613d8d565b8483035b6fffffffffffffffffffffffffffffffff169750613e9a565b816fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff1610613dd957818403613d8d565b8382036fffffffffffffffffffffffffffffffff169750613e9a565b5f5f5f83600103613e205750506fffffffffffffffffffffffffffffffff8087169150841685613e3c565b50506fffffffffffffffffffffffffffffffff80861691508316865b818310613e6e57613e69816fffffffffffffffffffffffffffffffff168385030283808204910615150190565b613e94565b613e94816fffffffffffffffffffffffffffffffff168484030284808204910615150190565b9a505050505b613ebc88613eb78315613ead5786613eaf565b875b60018d61402d565b61307a565b9d9c50505050505050505050505050565b5f8160010b5f14613ede5781613ee1565b60015b5f039150610c108686868686613a9f565b5f80808080613f0188876132b4565b915091505f613f4c613f1284613638565b73ffffffffffffffffffffffffffffffffffffffff16613f3184613638565b73ffffffffffffffffffffffffffffffffffffffff16613998565b9050613f5889886132fd565b5f03613f9a57613f6889886132eb565b613f729089614ebc565b9450613f93613388866fffffffffffffffffffffffffffffffff16836140c0565b9350613fe0565b613fa489886132eb565b613fae9089614ebc565b9350613fdd613388856fffffffffffffffffffffffffffffffff166c01000000000000000000000000846127ab565b94505b6140206fffffffffffffffffffffffffffffffff86168560801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b9998505050505050505050565b5f825f03614072575f6140428360010b614119565b905061406a81866fffffffffffffffffffffffffffffffff1602612710808204910615150190565b915050610c56565b82600103610c56575f6140848361422f565b9050611e6d81866fffffffffffffffffffffffffffffffff1602612710808204910615150190565b5f8160020b8360020b13612ee45781610c56565b5f6140cb8383613998565b90505f6c01000000000000000000000000838509111561092b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110614110575f5ffd5b60010192915050565b5f7f00000000000000000000000000000000000000000000000000000000000000008183121561414e575f9290920391600290045b7f000000000000000000000000000000000000000000000000000000000000000083101561417c5792915050565b7f00000000000000000000000000000000000000000000000000000000000000008311156141ae575061271092915050565b7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000037f000000000000000000000000000000000000000000000000000000000000000084038261271003028161422757614227614d84565b040192915050565b5f7f00000000000000000000000000000000000000000000000000000000000000008261ffff16101561428357507f0000000000000000000000000000000000000000000000000000000000000000919050565b7f00000000000000000000000000000000000000000000000000000000000000008261ffff1611156142d75760027f0000000000000000000000000000000000000000000000000000000000000000611d22565b60027f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000038361ffff167f0000000000000000000000000000000000000000000000000000000000000000037f0000000000000000000000000000000000000000000000000000000000000000028161437257614372614d84565b047f00000000000000000000000000000000000000000000000000000000000000000181611d2257611d22614d84565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610c5660208301846143a2565b5f60208284031215614410575f5ffd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114614438575f5ffd5b50565b8035600f81900b811461296e575f5ffd5b5f5f5f5f5f60a08688031215614460575f5ffd5b853561446b81614417565b94506144796020870161443b565b93506144876040870161443b565b92506144956060870161443b565b91506144a36080870161443b565b90509295509295909350565b5f5f604083850312156144c0575f5ffd5b82356144cb81614417565b946020939093013593505050565b8035600281900b811461296e575f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff8111828210171561453a5761453a6144ea565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614587576145876144ea565b604052919050565b80356fffffffffffffffffffffffffffffffff8116811461296e575f5ffd5b5f5f5f5f5f60a086880312156145c2575f5ffd5b85356145cd81614417565b94506145db602087016144d9565b9350604086013567ffffffffffffffff8111156145f6575f5ffd5b8601601f81018813614606575f5ffd5b803567ffffffffffffffff811115614620576146206144ea565b61462f60208260051b01614540565b8082825260208201915060208360061b85010192508a831115614650575f5ffd5b6020840193505b828410156146b7578a601f85011261466d575f5ffd5b614675614517565b80604086018d811115614686575f5ffd5b865b818110156146a0578035845260209384019301614688565b505083525060409390930192602090910190614657565b95506146c9925050506060870161458f565b91506144a36080870161458f565b8035801515811461296e575f5ffd5b5f5f5f5f5f60a086880312156146fa575f5ffd5b853561470581614417565b94506147136020870161443b565b93506147216040870161443b565b925061472f6060870161443b565b91506144a3608087016146d7565b5f5f5f6060848603121561474f575f5ffd5b833561475a81614417565b9250602084013561476a81614417565b929592945050506040919091013590565b5f6020828403121561478b575f5ffd5b8135610c5681614417565b5f5f604083850312156147a7575f5ffd5b8235915060208301356147b981614417565b809150509250929050565b5f5f83601f8401126147d4575f5ffd5b50813567ffffffffffffffff8111156147eb575f5ffd5b6020830191508360208260051b850101111561316a575f5ffd5b5f5f5f5f5f60808688031215614819575f5ffd5b85359450602086013561482b81614417565b9350604086013561483b81614417565b9250606086013567ffffffffffffffff811115614856575f5ffd5b614862888289016147c4565b969995985093965092949392505050565b5f5f60208385031215614884575f5ffd5b823567ffffffffffffffff81111561489a575f5ffd5b6148a6858286016147c4565b90969095509350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614927577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526149128583516143a2565b945060209384019391909101906001016148d8565b50929695505050505050565b5f5f5f60608486031215614945575f5ffd5b83359250602084013561495781614417565b9150604084013561496781614417565b809150509250925092565b5f5f5f5f5f60a08688031215614986575f5ffd5b61498f866146d7565b9450602086013561499f81614417565b935060408601356149af81614417565b9250606086013562ffffff811681146149c6575f5ffd5b915060808601356149d681614417565b809150509295509295909350565b5f5f604083850312156149f5575f5ffd5b8235614a0081614417565b915060208301356147b981614417565b5f5f5f5f5f60a08688031215614a24575f5ffd5b614a2d866144d9565b9450614a3b602087016144d9565b935060408601359250614a506060870161458f565b949793965091946080013592915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152831515604082015262ffffff8316606082015260a060808201525f61322f60a08301846143a2565b5f60208284031215614ace575f5ffd5b815167ffffffffffffffff811115614ae4575f5ffd5b8201601f81018413614af4575f5ffd5b805167ffffffffffffffff811115614b0e57614b0e6144ea565b614b3f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614540565b818152856020838501011115614b53575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f60208284031215614b80575f5ffd5b5051919050565b5f60208284031215614b97575f5ffd5b815160ff81168114610c56575f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561092b5761092b614ba7565b6fffffffffffffffffffffffffffffffff818116838216019081111561092b5761092b614ba7565b8181038181111561092b5761092b614ba7565b6fffffffffffffffffffffffffffffffff828116828216039081111561092b5761092b614ba7565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820181905281018290525f8360608301825b85811015614c97578235825260209283019290910190600101614c79565b509695505050505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f610ee460408301846143a2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614d30575f5ffd5b83018035915067ffffffffffffffff821115614d4a575f5ffd5b60200191503681900382131561316a575f5ffd5b818382375f9101908152919050565b808202811582820484141761092b5761092b614ba7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f7f80000000000000000000000000000000000000000000000000000000000000008203614de157614de1614ba7565b505f0390565b5f8260020b8260020b028060020b91508082146118b7576118b7614ba7565b5f8160020b8360020b80614e41577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000083141615614e9557614e95614ba7565b90059392505050565b62ffffff81811683821602908116908181146118b7576118b7614ba7565b6fffffffffffffffffffffffffffffffff81811683821602908116908181146118b7576118b7614ba756fea2646970667358221220e097d0dba8ea87530a18246f8894c3a0b1b6f21e9e39e8977400d0b149c305b164736f6c634300081c0033000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000007d000000000000000000000000000000000000000000000000000000000000003e8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000138800000000000000000000000000000000000000000000000000000000000023280000000000000000000000000000000000000000000000000000000000004e2000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000646112e8ac000000000000000000000000bf24cbfe40482980ad88b11add53600edcf0faedbf24cbfe40482980ad88b11add53600edcf0faed6ce1da12dd8ef5c21e16fc86000000000000000000000000000000000000000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004fc461ff715fbf24cbfe40482980ad88b11add53600edcf0faed6ce1da12dd8ef5c21e16fc8600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000004f52610100604052348015610010575f5ffd5b50604051614e12380380614e1283398101604081905261002f91610358565b82828260405180602001604052805f81525060405180602001604052805f8152508484845f5f90505b8351811015610138575f5b8382815181106100755761007561042b565b60200260200101515181101561012f578282815181106100975761009761042b565b602002602001015181815181106100b0576100b061042b565b60200260200101515f5f8785815181106100cc576100cc61042b565b602002602001015181526020019081526020015f205f8685815181106100f4576100f461042b565b6020026020010151848151811061010d5761010d61042b565b60209081029190910181015182528101919091526040015f2055600101610063565b50600101610058565b50505050816001908161014b91906104c3565b50600261015882826104c3565b5050506001600160a01b03998a1660a052505050509385166080525090831660c05290911660e0525061057d565b6001600160a01b038116811461019a575f5ffd5b50565b80516101a881610186565b919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156101e9576101e96101ad565b604052919050565b5f6001600160401b03821115610209576102096101ad565b5060051b60200190565b5f82601f830112610222575f5ffd5b8151610235610230826101f1565b6101c1565b8082825260208201915060208360051b860101925085831115610256575f5ffd5b602085015b8381101561027357805183526020928301920161025b565b5095945050505050565b5f82601f83011261028c575f5ffd5b815161029a610230826101f1565b8082825260208201915060208360051b8601019250858311156102bb575f5ffd5b602085015b838110156102735780516001600160401b038111156102dd575f5ffd5b8601603f810188136102ed575f5ffd5b60208101516102fe610230826101f1565b808282526020820191506020808460051b8601010192508a831115610321575f5ffd5b6040840193505b82841015610343578351825260209384019390910190610328565b865250506020938401939190910190506102c0565b5f5f5f5f5f5f5f60e0888a03121561036e575f5ffd5b875161037981610186565b96506103876020890161019d565b95506103956040890161019d565b94506103a36060890161019d565b60808901519094506001600160401b038111156103be575f5ffd5b6103ca8a828b01610213565b60a08a015190945090506001600160401b038111156103e7575f5ffd5b6103f38a828b0161027d565b60c08a015190935090506001600160401b03811115610410575f5ffd5b61041c8a828b0161027d565b91505092959891949750929550565b634e487b7160e01b5f52603260045260245ffd5b600181811c9082168061045357607f821691505b60208210810361047157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156104be57805f5260205f20601f840160051c8101602085101561049c5750805b601f840160051c820191505b818110156104bb575f81556001016104a8565b50505b505050565b81516001600160401b038111156104dc576104dc6101ad565b6104f0816104ea845461043f565b84610477565b6020601f821160018114610522575f831561050b5750848201515b5f19600385901b1c1916600184901b1784556104bb565b5f84815260208120601f198516915b828110156105515787850151825560209485019460019092019101610531565b508482101561056e57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805160a05160c05160e05161485b6105b75f395f611ba701525f81816107ba0152611b5901525f611a6301525f6118f5015261485b5ff3fe608060405260043610610123575f3560e01c806395d89b41116100a1578063b88d4fde11610071578063daa4c69711610057578063daa4c69714610380578063e985e9c51461039f578063f2626ead146103d8575f5ffd5b8063b88d4fde14610342578063c87b56dd14610361575f5ffd5b806395d89b41146102d0578063a03ba02f146102e4578063a22cb46514610303578063ac9650d814610322575f5ffd5b80630efb8bac116100f657806342842e0e116100dc57806342842e0e146102655780636352211e1461028457806370a08231146102a3575f5ffd5b80630efb8bac1461020357806323b872dd14610246575f5ffd5b806301ffc9a71461012757806306fdde031461015b578063081812fc1461017c578063095ea7b3146101e2575b5f5ffd5b348015610132575f5ffd5b506101466101413660046139a2565b61041c565b60405190151581526020015b60405180910390f35b348015610166575f5ffd5b5061016f610500565b6040516101529190613a09565b348015610187575f5ffd5b506101bd610196366004613a1b565b60056020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610152565b3480156101ed575f5ffd5b506102016101fc366004613a53565b61058c565b005b34801561020e575f5ffd5b5061022261021d366004613a98565b6106d8565b604080516bffffffffffffffffffffffff9093168352602083019190915201610152565b348015610251575f5ffd5b50610201610260366004613aed565b6108fc565b348015610270575f5ffd5b5061020161027f366004613aed565b610bbf565b34801561028f575f5ffd5b506101bd61029e366004613a1b565b610d22565b3480156102ae575f5ffd5b506102c26102bd366004613b2b565b610db2565b604051908152602001610152565b3480156102db575f5ffd5b5061016f610e58565b3480156102ef575f5ffd5b5061016f6102fe366004613c59565b610e65565b34801561030e575f5ffd5b5061020161031d366004613cd7565b61112f565b610335610330366004613d12565b6111c5565b6040516101529190613d83565b34801561034d575f5ffd5b5061020161035c366004613e04565b6112d3565b34801561036c575f5ffd5b5061016f61037b366004613a1b565b611427565b34801561038b575f5ffd5b506101bd61039a366004613ead565b611857565b3480156103aa575f5ffd5b506101466103b9366004613f04565b600660209081525f928352604080842090915290825290205460ff1681565b3480156103e3575f5ffd5b506101bd6103f2366004613b2b565b73ffffffffffffffffffffffffffffffffffffffff9081165f908152600760205260409020541690565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806104ae57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806104fa57507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6001805461050d90613f30565b80601f016020809104026020016040519081016040528092919081815260200182805461053990613f30565b80156105845780601f1061055b57610100808354040283529160200191610584565b820191905f5260205f20905b81548152906001019060200180831161056757829003601f168201915b505050505081565b5f8181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806105ed575073ffffffffffffffffffffffffffffffffffffffff81165f90815260066020908152604080832033845290915290205460ff165b610658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b5f8281526005602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b5f806bffffffffffffffffffffffff851684015b80866bffffffffffffffffffffffff1610156108f157604080517fffffffffffffffffffff0000000000000000000000000000000000000000000060608b811b821660208401528a901b16602a8201527fffffffffffffffffffffffff000000000000000000000000000000000000000060a089901b1660348201525f910160405160208183030381529060405261078390613f81565b90505f73b6523900510d44fbf2a19f73dbfc24e13c03a95b634a18eb8f61083573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016856040513060388201526f5af43d82803e903d91602b57fd5bf3ff60248201526014810192909252733d602d80600a3d3981f3363d3d373d3d3d363d73825260588201526037600c8201206078820152605560439091012090565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865af415801561089c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c09190613fc3565b9050838111156108d1578093508794505b8581106108e45787945092506108f19050565b60018801975050506106ec565b509550959350505050565b5f8181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d00000000000000000000000000000000000000000000604482015260640161064f565b73ffffffffffffffffffffffffffffffffffffffff8216610a08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e54000000000000000000000000000000604482015260640161064f565b3373ffffffffffffffffffffffffffffffffffffffff84161480610a5b575073ffffffffffffffffffffffffffffffffffffffff83165f90815260066020908152604080832033845290915290205460ff165b80610a8857505f8181526005602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b610aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015260640161064f565b73ffffffffffffffffffffffffffffffffffffffff8084165f81815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055938616808352848320805460010190558583526003825284832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168317909155600590925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610bca8383836108fc565b73ffffffffffffffffffffffffffffffffffffffff82163b15610d1d576040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401525f608484015290919084169063150b7a029060a4016020604051808303815f875af1158015610c70573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c949190613fda565b7fffffffff000000000000000000000000000000000000000000000000000000001614610d1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161064f565b505050565b5f8181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610dad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e54454400000000000000000000000000000000000000000000604482015260640161064f565b919050565b5f73ffffffffffffffffffffffffffffffffffffffff8216610e30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015260640161064f565b5073ffffffffffffffffffffffffffffffffffffffff165f9081526004602052604090205490565b6002805461050d90613f30565b6040517f4a18eb8f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152606090600f8616905f9073b6523900510d44fbf2a19f73dbfc24e13c03a95b90634a18eb8f90602401602060405180830381865af4158015610eeb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f0f9190613fc3565b90505f610f1c8383611ef8565b9050610f2b8189848a8a6121a1565b9050611103610f518973ffffffffffffffffffffffffffffffffffffffff1660146123b9565b5f8581527f7f98b23ecc45ef8113f30246eedf02ba90aaeca2cd03443f1b6caef9aed885f96020526040902054610f87906123fd565b610f9085612408565b604051602001610fa192919061400c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610fdd929160200161400c565b6040516020818303038152906040528888610ff789612468565b60405160200161100993929190614050565b60405160208183030381529060405261102185612408565b5f8681527f934fcfd0ac41364bf414d3f5dd474e8c0fa3c5e6745ad2c3cf0573b1c870f1786020526040902054611057906123fd565b604051602001611068929190614113565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181525f8881527f7f98b23ecc45ef8113f30246eedf02ba90aaeca2cd03443f1b6caef9aed885f960205220546110c9906123fd565b6110d161251a565b6110da87612d02565b6040516020016110ef9695949392919061414e565b604051602081830303815290604052612d02565b6040516020016111139190614348565b6040516020818303038152906040529350505050949350505050565b335f81815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60608167ffffffffffffffff8111156111e0576111e0613b46565b60405190808252806020026020018201604052801561121357816020015b60608152602001906001900390816111fe5790505b5090505f5b828110156112cc575f803086868581811061123557611235614379565b905060200281019061124791906143a6565b60405161125592919061440e565b5f60405180830381855af49150503d805f811461128d576040519150601f19603f3d011682016040523d82523d5f602084013e611292565b606091505b5091509150816112a457805160208201fd5b808484815181106112b7576112b7614379565b60209081029190910101525050600101611218565b5092915050565b6112de8585856108fc565b73ffffffffffffffffffffffffffffffffffffffff84163b15611420576040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063150b7a02906113579033908a9089908990899060040161441d565b6020604051808303815f875af1158015611373573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113979190613fda565b7fffffffff000000000000000000000000000000000000000000000000000000001614611420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161064f565b5050505050565b60605f8290506118508173b6523900510d44fbf2a19f73dbfc24e13c03a95b6395917e7a8473ffffffffffffffffffffffffffffffffffffffff16634f94c5306040518163ffffffff1660e01b8152600401602060405180830381865afa158015611494573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114b891906144aa565b73ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611500573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152491906144aa565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024015f60405180830381865af415801561158a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526115cf91908101906144c5565b73b6523900510d44fbf2a19f73dbfc24e13c03a95b6395917e7a8573ffffffffffffffffffffffffffffffffffffffff16634f94c5306040518163ffffffff1660e01b8152600401602060405180830381865afa158015611632573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061165691906144aa565b73ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561169e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c291906144aa565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024015f60405180830381865af4158015611728573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261176d91908101906144c5565b8473ffffffffffffffffffffffffffffffffffffffff16634f94c5306040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117b6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117da91906144aa565b73ffffffffffffffffffffffffffffffffffffffff1663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa158015611822573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611846919061453a565b62ffffff16610e65565b9392505050565b5f8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610611892578385611895565b84845b6040517f1698ee8200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8084166004830152808316602483015262ffffff871660448301529297509095505f917f00000000000000000000000000000000000000000000000000000000000000001690631698ee8290606401602060405180830381865afa15801561193a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061195e91906144aa565b905073ffffffffffffffffffffffffffffffffffffffff81166119ad576040517f4f361fe400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8181165f908152600760205260409020541615611a0b576040517f7983c05100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc035e24200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152868116602483015262ffffff861660448301527f0000000000000000000000000000000000000000000000000000000000000000169063c035e242906064015f604051808303815f87803b158015611aa4575f5ffd5b505af1158015611ab6573d5f5f3e3d5ffd5b5050604080517fffffffffffffffffffff0000000000000000000000000000000000000000000033606090811b8216602084015286901b16602a8201527fffffffffffffffffffffffff000000000000000000000000000000000000000060a088901b1660348201525f9350019050604051602081830303815290604052611b3d90613f81565b9050611b7f73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682612d0f565b92505f611bcd611b90836001614582565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690612d0f565b90505f611bde611b90846002614582565b6040517fd8ba510c0000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff8b811660248301528a8116604483015262ffffff8a16606483015287811660848301529192509083169063d8ba510c9060a4015f604051808303815f87803b158015611c6a575f5ffd5b505af1158015611c7c573d5f5f3e3d5ffd5b50506040517fd8ba510c0000000000000000000000000000000000000000000000000000000081525f600482015273ffffffffffffffffffffffffffffffffffffffff8c811660248301528b8116604483015262ffffff8b16606483015288811660848301528416925063d8ba510c915060a4015f604051808303815f87803b158015611d07575f5ffd5b505af1158015611d19573d5f5f3e3d5ffd5b50506040517fe8a792fc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301528c811660248301528b81166044830152858116606483015284811660848301528816925063e8a792fc915060a4015f604051808303815f87803b158015611da3575f5ffd5b505af1158015611db5573d5f5f3e3d5ffd5b5050505073ffffffffffffffffffffffffffffffffffffffff8481165f818152600760205260409081902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169389169390931790925590517f32148f67000000000000000000000000000000000000000000000000000000008152603360048201526332148f67906024015f604051808303815f87803b158015611e5a575f5ffd5b505af1158015611e6c573d5f5f3e3d5ffd5b50505073ffffffffffffffffffffffffffffffffffffffff86169050611e923382612dd0565b6040805173ffffffffffffffffffffffffffffffffffffffff8581168252848116602083015280881692908916917f5f7560a5797edc6f72421362defa094d690eb9f7ced3cc5a5c13383502e4fcc5910160405180910390a35050505050949350505050565b7f6672616d657300000000000000000000000000000000000000000000000000005f9081526020819052606090611f8f907fb91d8243643df86448a69427c49e640b48570a9d7972520807ad21ce3b248bf29060128510611f715760178510611f61575f611f7c565b611f6c856017614595565b611f7c565b611f7c6003866145d5565b81526020019081526020015f2054612f67565b604080518082018252600e81527f3c212d2d204c4142454c202d2d3e0000000000000000000000000000000000006020808301919091525f8781527f7f98b23ecc45ef8113f30246eedf02ba90aaeca2cd03443f1b6caef9aed885f9909152919091205491925061201d9161201590612007906123fd565b61201086612f7a565b612fb0565b839190613214565b604080518082018252600f81527f3c212d2d2046494c544552202d2d3e00000000000000000000000000000000006020808301919091525f8681527f1947e2f3b28d67acaca05a6bfbe5324d3779c5816467e7d5ae12cabf6a56bd6990915291909120549192506118509161209190612f67565b604080518082018252600c81527f3c212d2d20415254202d2d3e00000000000000000000000000000000000000006020808301919091525f8981527ff6ff15696fcd98b5c1a0b33d3221f7a9ec7068f5e0d630b9a639a13fb9203b85909152919091205461219a919061210390612f67565b61219a6040518060400160405280600d81526020017f3c212d2d2054455854202d2d3e000000000000000000000000000000000000008152506121925f5f7f6465736372697074696f6e73000000000000000000000000000000000000000081526020019081526020015f205f60088d61217d91906145d5565b6121889060106145e8565b611f7c908f614582565b899190613214565b9190613214565b60606122466040518060400160405280601081526020017f3c212d2d20434841494e4944202d2d3e000000000000000000000000000000008152506121e461251a565b61219a6040518060400160405280601481526020017f3c212d2d20504f4f4c41444452455353202d2d3e00000000000000000000000081525061223e8a73ffffffffffffffffffffffffffffffffffffffff1660146123b9565b8b9190613214565b604080518082018252601481527f3c212d2d205241524954595f4e414d45202d2d3e0000000000000000000000006020808301919091525f8881527f934fcfd0ac41364bf414d3f5dd474e8c0fa3c5e6745ad2c3cf0573b1c870f17890915291909120549197506122cf916122c7906122be906123fd565b61201088613352565b889190613214565b95506123af6040518060400160405280601081526020017f3c212d2d2053594d424f4c31202d2d3e00000000000000000000000000000000815250612317846120108861340f565b61219a6040518060400160405280601081526020017f3c212d2d2053594d424f4c30202d2d3e0000000000000000000000000000000081525061235d886120108b61340f565b61219a6040518060400160405280600f81526020017f3c212d2d20524152495459202d2d3e00000000000000000000000000000000008152506123a76123a28d612408565b6134b1565b8e9190613214565b9695505050505050565b60606123c583836134dd565b805161307882526002017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9091019081529392505050565b60606104fa82613581565b60606080604051019050602081016040525f8152805f19835b928101926030600a8206018453600a9004806124215750508190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909101908152919050565b60606124826124786064846145ff565b62ffffff166135ee565b61248d606484614624565b62ffffff16156124e3576124b0600a6124a681866145ff565b6124789190614624565b6124be612478600a86614624565b6040516020016124cf929190614649565b6040516020818303038152906040526124f3565b60405180602001604052805f8152505b60405160200161250492919061468b565b6040516020818303038152906040529050919050565b60604660010361255c575060408051808201909152600881527f457468657265756d000000000000000000000000000000000000000000000000602082015290565b4660380361259c575060408051808201909152600f81527f424e4220536d61727420436861696e0000000000000000000000000000000000602082015290565b4661a4b1036125dd575060408051808201909152600c81527f417262697472756d204f6e650000000000000000000000000000000000000000602082015290565b466121050361261e575060408051808201909152600481527f4261736500000000000000000000000000000000000000000000000000000000602082015290565b4661a86a0361265f575060408051808201909152601181527f4176616c616e63686520432d436861696e000000000000000000000000000000602082015290565b4660890361269f575060408051808201909152600781527f506f6c79676f6e00000000000000000000000000000000000000000000000000602082015290565b46600a036126df575060408051808201909152600881527f4f7074696d69736d000000000000000000000000000000000000000000000000602082015290565b4661a4ec03612720575060408051808201909152600481527f43454c4f00000000000000000000000000000000000000000000000000000000602082015290565b4660ee03612760575060408051808201909152600581527f426c617374000000000000000000000000000000000000000000000000000000602082015290565b46611388036127a1575060408051808201909152600681527f4d616e746c650000000000000000000000000000000000000000000000000000602082015290565b4661e708036127e2575060408051808201909152600581527f4c696e6561000000000000000000000000000000000000000000000000000000602082015290565b466208275003612824575060408051808201909152600681527f5363726f6c6c0000000000000000000000000000000000000000000000000000602082015290565b46606403612864575060408051808201909152600681527f476e6f7369730000000000000000000000000000000000000000000000000000602082015290565b4661868b036128a5575060408051808201909152600481527f4d6f646500000000000000000000000000000000000000000000000000000000602082015290565b4661bf04036128e6575060408051808201909152600781527f5a69726375697400000000000000000000000000000000000000000000000000602082015290565b4661045c03612927575060408051808201909152600f81527f436f726520426c6f636b636861696e0000000000000000000000000000000000602082015290565b4660fa03612967575060408051808201909152600681527f46616e746f6d0000000000000000000000000000000000000000000000000000602082015290565b466082036129a7575060408051808201909152600881527f556e69636861696e000000000000000000000000000000000000000000000000602082015290565b46610144036129e8575060408051808201909152600a81527f5a6b53796e632045726100000000000000000000000000000000000000000000602082015290565b4661053103612a29575060408051808201909152600381527f5365690000000000000000000000000000000000000000000000000000000000602082015290565b4661ed8803612a6a575060408051808201909152600381527f424f420000000000000000000000000000000000000000000000000000000000602082015290565b46601e03612aaa575060408051808201909152600981527f526f6f7473746f636b0000000000000000000000000000000000000000000000602082015290565b4662028c5803612aec575060408051808201909152600581527f5461696b6f000000000000000000000000000000000000000000000000000000602082015290565b4661013a03612b2d575060408051808201909152600881527f46696c65636f696e000000000000000000000000000000000000000000000000602082015290565b466101e003612b6e575060408051808201909152600b81527f576f726c6420436861696e000000000000000000000000000000000000000000602082015290565b4661050403612baf575060408051808201909152600881527f4d6f6f6e6265616d000000000000000000000000000000000000000000000000602082015290565b4661046f03612bf0575060408051808201909152600481527f4c69736b00000000000000000000000000000000000000000000000000000000602082015290565b4661012003612c31575060408051808201909152600481527f426f626100000000000000000000000000000000000000000000000000000000602082015290565b4661044d03612c72575060408051808201909152600d81527f506f6c79676f6e207a6b45564d00000000000000000000000000000000000000602082015290565b4660a903612cb2575060408051808201909152600581527f4d616e7461000000000000000000000000000000000000000000000000000000602082015290565b466276adf103612cf4575060408051808201909152600481527f5a6f726100000000000000000000000000000000000000000000000000000000602082015290565b612cfd46612408565b905090565b60606104fa825f5f6136ab565b5f763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c175f526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760095ff5905073ffffffffffffffffffffffffffffffffffffffff81166104fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f455243313136373a2063726561746532206661696c6564000000000000000000604482015260640161064f565b73ffffffffffffffffffffffffffffffffffffffff8216612e4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e54000000000000000000000000000000604482015260640161064f565b5f8181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1615612ed8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e544544000000000000000000000000000000000000604482015260640161064f565b73ffffffffffffffffffffffffffffffffffffffff82165f81815260046020908152604080832080546001019055848352600390915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60606104fa612f7583613581565b6137b7565b5f6006821015612f8d5750612328919050565b60168211612f9e5750610f3c919050565b6016821115610dad5750612328919050565b60605f805b845181101561312f575f6130415f5f7f636861724f66667365747300000000000000000000000000000000000000000081526020019081526020015f205f88858151811061300557613005614379565b016020908101517fff000000000000000000000000000000000000000000000000000000000000001682528101919091526040015f2054613581565b61304a90613f81565b90506130568184614582565b925061306181612408565b846130e45f5f7f636861725061746873000000000000000000000000000000000000000000000081526020019081526020015f205f8a87815181106130a8576130a8614379565b016020908101517fff000000000000000000000000000000000000000000000000000000000000001682528101919091526040015f20546123fd565b6040516020016130f6939291906146c7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052935050600101612fb5565b5060608382111561319e575f8261314886610d486145e8565b61315291906145d5565b9050606381111561316d5761316681612408565b9150613198565b61317681612408565b6040516020016131869190614761565b60405160208183030381529060405291505b506131d4565b5060408051808201909152600281527f333400000000000000000000000000000000000000000000000000000000000060208201525b806131e86131e36002856145d5565b612408565b846040516020016131fb93929190614792565b6040516020818303038152906040529250505092915050565b606083518351835160208701965060208601955060208501945060206040510193508287018383116132e4576001838203015f6020851061325457508388205b601f851660200360031b89515b8b51818118831c6132cb57831561329b5783888e201461329b57808a5260019c8d019c90990198848d1061329557506132df565b50613261565b5f5b8b8101518b82015260200187811061329d57509b87019b9886019887156132cb57848d1061329557506132df565b895260019b8c019b90980197838c10613261575b505050505b84935060206040510194508781038585030192505b808810156133145787518452602097880197909301926132f9565b50505f8184019081526020016040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201918252509392505050565b5f6003821015613364575060d2919050565b6006821015613375575060dc919050565b6009821015613386575060d2919050565b600c821015613397575060dc919050565b600f8210156133a95750610104919050565b60138210156133ba575060e1919050565b60148210156133cc5750610104919050565b60158210156133dd575060dc919050565b60168210156133ee575060d2919050565b60178210156133ff575060dc919050565b60178210610dad575060d2919050565b5f60038210156134225750610640919050565b60098210156134345750610546919050565b600c82101561344657506105aa919050565b600f8210156134585750610546919050565b601382101561346a57506104e2919050565b601482101561347c5750610546919050565b601582101561348e57506105aa919050565b60178210156134a05750610546919050565b60178210610dad5750610640919050565b60606104fa827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612fb0565b6060601f1960428360011b0116604051019050602081016040525f8152806f30313233343536373839616263646566600f528283018203600119855b600f811651948201946001860153600f8160041c1651855360081c84830361351957801561354e57632194895a5f526004601cfd5b5050508190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090910190815292915050565b60608160a081901c65ffffffffffff1660d082901c5f8167ffffffffffffffff8111156135b0576135b0613b46565b6040519080825280601f01601f1916602001820160405280156135da576020820181803683370190505b509050818360208301863c95945050505050565b60605f6135fa83613891565b60010190505f8167ffffffffffffffff81111561361957613619613b46565b6040519080825280601f01601f191660200182016040528015613643576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461364d575b509392505050565b6060835180156136a3576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f5184526004840193508284106137265790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f861515909102918290035290038252509392505050565b60405181516020838101938184019201015b8084101561385b578351805f1a8060051c806137fb5750600186810151855295810160020195930190920191506137c9565b600781148360011a600701821881028218600201600185836001011a85601f1660081b0101808803602082186020831102821891505f5b818101518a8201528201838110613832579a84016002019a9883019850505050505050506137c9565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08282030182525f8152602001604052919050565b5f807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106138d9577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310613905576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061392357662386f26fc10000830492506010015b6305f5e100831061393b576305f5e100830492506008015b612710831061394f57612710830492506004015b60648310613961576064830492506002015b600a83106104fa5760010192915050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461399f575f5ffd5b50565b5f602082840312156139b2575f5ffd5b813561185081613972565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61185060208301846139bd565b5f60208284031215613a2b575f5ffd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461399f575f5ffd5b5f5f60408385031215613a64575f5ffd5b8235613a6f81613a32565b946020939093013593505050565b80356bffffffffffffffffffffffff81168114610dad575f5ffd5b5f5f5f5f5f60a08688031215613aac575f5ffd5b8535613ab781613a32565b94506020860135613ac781613a32565b9350613ad560408701613a7d565b94979396509394606081013594506080013592915050565b5f5f5f60608486031215613aff575f5ffd5b8335613b0a81613a32565b92506020840135613b1a81613a32565b929592945050506040919091013590565b5f60208284031215613b3b575f5ffd5b813561185081613a32565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613bba57613bba613b46565b604052919050565b5f67ffffffffffffffff821115613bdb57613bdb613b46565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112613c16575f5ffd5b8135613c29613c2482613bc2565b613b73565b818152846020838601011115613c3d575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f60808587031215613c6c575f5ffd5b8435613c7781613a32565b9350602085013567ffffffffffffffff811115613c92575f5ffd5b613c9e87828801613c07565b935050604085013567ffffffffffffffff811115613cba575f5ffd5b613cc687828801613c07565b949793965093946060013593505050565b5f5f60408385031215613ce8575f5ffd5b8235613cf381613a32565b915060208301358015158114613d07575f5ffd5b809150509250929050565b5f5f60208385031215613d23575f5ffd5b823567ffffffffffffffff811115613d39575f5ffd5b8301601f81018513613d49575f5ffd5b803567ffffffffffffffff811115613d5f575f5ffd5b8560208260051b8401011115613d73575f5ffd5b6020919091019590945092505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015613df8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452613de38583516139bd565b94506020938401939190910190600101613da9565b50929695505050505050565b5f5f5f5f5f60808688031215613e18575f5ffd5b8535613e2381613a32565b94506020860135613e3381613a32565b935060408601359250606086013567ffffffffffffffff811115613e55575f5ffd5b8601601f81018813613e65575f5ffd5b803567ffffffffffffffff811115613e7b575f5ffd5b886020828401011115613e8c575f5ffd5b959894975092955050506020019190565b62ffffff8116811461399f575f5ffd5b5f5f5f5f60808587031215613ec0575f5ffd5b8435613ecb81613a32565b93506020850135613edb81613a32565b92506040850135613eeb81613e9d565b9150613ef960608601613a7d565b905092959194509250565b5f5f60408385031215613f15575f5ffd5b8235613f2081613a32565b91506020830135613d0781613a32565b600181811c90821680613f4457607f821691505b602082108103613f7b577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b80516020808301519190811015613f7b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b5f60208284031215613fd3575f5ffd5b5051919050565b5f60208284031215613fea575f5ffd5b815161185081613972565b5f81518060208401855e5f93019283525090919050565b5f6140178285613ff5565b7f2d0000000000000000000000000000000000000000000000000000000000000081526140476001820185613ff5565b95945050505050565b7f50616e6f7074696320506f6f6c20666f7220746865200000000000000000000081525f6140816016830186613ff5565b7f2d0000000000000000000000000000000000000000000000000000000000000081526140b16001820186613ff5565b90507f2d0000000000000000000000000000000000000000000000000000000000000081526140e36001820185613ff5565b7f206d61726b65740000000000000000000000000000000000000000000000000081526007019695505050505050565b5f61411e8285613ff5565b7f202d20000000000000000000000000000000000000000000000000000000000081526140476003820185613ff5565b7f7b226e616d65223a22000000000000000000000000000000000000000000000081525f61417f6009830189613ff5565b7f222c20226465736372697074696f6e223a22000000000000000000000000000081526141af6012820189613ff5565b90507f222c202261747472696275746573223a205b7b2274726169745f74797065223a81527f2022526172697479222c202276616c7565223a2022000000000000000000000060208201526142076035820188613ff5565b90507f227d2c207b2274726169745f74797065223a20225374726174656779222c202281527f76616c7565223a20220000000000000000000000000000000000000000000000602082015261425f6029820187613ff5565b90507f227d2c207b2274726169745f74797065223a2022436861696e4964222c20227681527f616c7565223a202200000000000000000000000000000000000000000000000060208201526142b76028820186613ff5565b90507f227d5d2c2022696d616765223a2022646174613a696d6167652f7376672b786d81527f6c3b6261736536342c0000000000000000000000000000000000000000000000602082015261433b6143126029830186613ff5565b7f227d000000000000000000000000000000000000000000000000000000000000815260020190565b9998505050505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f611850601d830184613ff5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126143d9575f5ffd5b83018035915067ffffffffffffffff8211156143f3575f5ffd5b602001915036819003821315614407575f5ffd5b9250929050565b818382375f9101908152919050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152816080820152818360a08301375f81830160a090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101949350505050565b5f602082840312156144ba575f5ffd5b815161185081613a32565b5f602082840312156144d5575f5ffd5b815167ffffffffffffffff8111156144eb575f5ffd5b8201601f810184136144fb575f5ffd5b8051614509613c2482613bc2565b81815285602083850101111561451d575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f6020828403121561454a575f5ffd5b815161185081613e9d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156104fa576104fa614555565b818103818111156104fa576104fa614555565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f826145e3576145e36145a8565b500490565b80820281158282048414176104fa576104fa614555565b5f62ffffff831680614613576146136145a8565b8062ffffff84160491505092915050565b5f62ffffff831680614638576146386145a8565b8062ffffff84160691505092915050565b7f2e0000000000000000000000000000000000000000000000000000000000000081525f61468361467d6001840186613ff5565b84613ff5565b949350505050565b5f61469961467d8386613ff5565b7f62707300000000000000000000000000000000000000000000000000000000008152600301949350505050565b7f3c67207472616e73666f726d3d227472616e736c617465282d0000000000000081525f6146f86019830186613ff5565b7f2c203029223e0000000000000000000000000000000000000000000000000000815261473161472b6006830187613ff5565b85613ff5565b7f3c2f673e0000000000000000000000000000000000000000000000000000000081526004019695505050505050565b7f300000000000000000000000000000000000000000000000000000000000000081525f6118506001830184613ff5565b7f3c67207472616e73666f726d3d227363616c6528302e3000000000000000000081525f6147c36017830186613ff5565b7f29207472616e736c61746528000000000000000000000000000000000000000081526147f3600c820186613ff5565b90507f2c203029223e000000000000000000000000000000000000000000000000000081526147316006820185613ff556fea26469706673582212205ec44727df1d3c341b8de35bd33490549e2d5a346eded5598606be0b7c5fed6e64736f6c634300081c00330000000000000000000000003620388bc1e8b888fb4cee57158ba6b9d74a87bb00000000000000000000000033128a8fc17869897dce68ed026d694621f6fdfd0000000000000000000000003bef7b81d931004f8912b611227246d6af58ad890000000000000000000000008f0024f28af02cbd54f07855c94132d291eb91e400000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000646112e8ac000000000000000000000000bf24cbfe40482980ad88b11add53600edcf0faedbf24cbfe40482980ad88b11add53600edcf0faedd43ab7bdbd12ecec00b8da94000000000000000000000000000000000000000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000614461ff715fbf24cbfe40482980ad88b11add53600edcf0faedd43ab7bdbd12ecec00b8da94000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000060c160a060405234801561000f575f5ffd5b506040516160a13803806160a183398101604081905261002e9161003f565b6001600160a01b031660805261006c565b5f6020828403121561004f575f5ffd5b81516001600160a01b0381168114610065575f5ffd5b9392505050565b608051615fec6100b55f395f8181610a02015281816118f4015281816121aa01528181612ffc01528181613446015281816135600152818161386f01526143af0152615fec5ff3fe60806040526004361061016d575f3560e01c8063ac9650d8116100c6578063c79ee60d1161007c578063efb46dc311610057578063efb46dc3146104aa578063f23a6e61146104c9578063f34f6c1a146104f4575f5ffd5b8063c79ee60d14610427578063e4ecc2391461046c578063e8a792fc1461048b575f5ffd5b8063b7e0ca96116100ac578063b7e0ca9614610386578063bc197c81146103cf578063be22465d14610413575f5ffd5b8063ac9650d814610347578063acd9cb9014610367575f5ffd5b80634d7b0900116101265780636e29ebfb116101015780636e29ebfb146102ec5780637594cdc31461030b578063a461adce14610328575f5ffd5b80634d7b0900146102805780634f94c530146102b15780635036275a146102cd575f5ffd5b80632997633f116101565780632997633f146102125780632a3f8025146102335780632dda106b14610252575f5ffd5b806301ffc9a7146101715780630828a2f8146101a5575b5f5ffd5b34801561017c575f5ffd5b5061019061018b366004614f3c565b610508565b60405190151581526020015b60405180910390f35b3480156101b0575f5ffd5b506101c46101bf366004614f7a565b61053e565b60408051600298890b815296880b602088015294870b948601949094529190940b6060840152608083019390935260a08201929092526001600160801b0390911660c082015260e00161019c565b34801561021d575f5ffd5b5061023161022c366004614ff3565b6105f8565b005b34801561023e575f5ffd5b5061023161024d36600461508b565b61062d565b34801561025d575f5ffd5b5061027161026c366004615121565b61063b565b60405161019c939291906151e3565b34801561028b575f5ffd5b506003546001600160a01b03165b6040516001600160a01b03909116815260200161019c565b3480156102bc575f5ffd5b505f546001600160a01b0316610299565b3480156102d8575f5ffd5b506102316102e736600461520a565b6106db565b3480156102f7575f5ffd5b5061023161030636600461525b565b6106ef565b348015610316575f5ffd5b506002546001600160a01b0316610299565b348015610333575f5ffd5b5061023161034236600461527b565b6108bd565b61035a6103553660046152d4565b610dde565b60405161019c9190615313565b348015610372575f5ffd5b50610231610381366004615397565b610eec565b348015610391575f5ffd5b5061039a610f23565b60408051600296870b815294860b602086015292850b9284019290925290920b6060820152608081019190915260a00161019c565b3480156103da575f5ffd5b506103fa6103e9366004615544565b63bc197c8160e01b95945050505050565b6040516001600160e01b0319909116815260200161019c565b34801561041e575f5ffd5b50610190610fc6565b348015610432575f5ffd5b5061045e6104413660046155f7565b6001600160a01b03165f9081526008602052604090205460f81c90565b60405190815260200161019c565b348015610477575f5ffd5b50610231610486366004615612565b6110ba565b348015610496575f5ffd5b506102316104a5366004615694565b6117d8565b3480156104b5575f5ffd5b506102316104c43660046156f3565b611990565b3480156104d4575f5ffd5b506103fa6104e336600461577e565b63f23a6e6160e01b95945050505050565b3480156104ff575f5ffd5b50610231611eb1565b5f6001600160e01b03198216630271189760e51b148061053857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001600160a01b0382165f90815260076020908152604080832084845290915280822054905163cacfb53560e01b81526004810191909152819081908190819081908190737bd4fc901291e995cc791946fde0248a2bcc61299063cacfb5359060240160e060405180830381865af41580156105bc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e091906157d6565b959f949e50929c50909a509850965090945092505050565b610606600186338585611fdc565b50505f61061733868661271061206d565b905080156106255760018190555b505050505050565b61062586868686868661215d565b5f5f60605f5f5f9054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa15801561068f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b3919061586b565b50505050509150506106ca88878760018b86612422565b935093509350509450945094915050565b6106e983838361341561206d565b50505050565b6002546003546040516370a0823160e01b81523360048201526001600160a01b039283169290911690849083906307a2d13a9082906370a0823190602401602060405180830381865afa158015610748573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076c91906158ed565b6040518263ffffffff1660e01b815260040161078a91815260200190565b602060405180830381865afa1580156107a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107c991906158ed565b108061089f57506040516370a0823160e01b815233600482015283906001600160a01b038316906307a2d13a9082906370a0823190602401602060405180830381865afa15801561081c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084091906158ed565b6040518263ffffffff1660e01b815260040161085e91815260200190565b602060405180830381865afa158015610879573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061089d91906158ed565b105b156106e9576040516334b3313560e11b815260040160405180910390fd5b6108c98285855f6126f0565b5f84846108d7600182615918565b8181106108e6576108e661592b565b905060200201359050610902828261276590919063ffffffff16565b158061090e5750600382115b1561092c57604051635bea27bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260076020908152604080832084845290915281205461095c908390859061277e565b90505f5f5f9054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156109ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d2919061586b565b50505050509150505f5f6109ef86866127eb90919063ffffffff16565b5f80549192509081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691633cc3c1da91163086610a378b60e81c90565b610a418c60d01c90565b6040516001600160e01b031960e088901b1681526001600160a01b0395861660048201529490931660248501526044840191909152600290810b606484015290810b608483015288900b60a4820152600160c482015260e4016040805180830381865afa158015610ab4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad8919061593f565b9092509050610afc6001600160801b0383168260801b6001600160801b0319160190565b6001600160a01b038a165f9081526004602090815260408083208b845282528083208c84529091529020805490829055909450610b39858261280e565b9450505050505f610b478490565b6001600160801b031690505f610ba8600160401b83610b668660801c90565b6001600160801b03160281610b7d57610b7d615977565b04610ba0600160401b6001600160801b03871686025b046001600160801b031690565b9060801b0190565b6002549091506001600160a01b031663083953d9895f8080866040516001600160e01b031960e088901b1681526001600160a01b039095166004860152600f93840b602486015291830b6044850152820b60648401525f03900b608482015260a4016020604051808303815f875af1158015610c26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4a919061598b565b506003546001600160a01b031663083953d9895f8080610c6a8760801d90565b6040516001600160e01b031960e088901b1681526001600160a01b039095166004860152600f93840b602486015291830b6044850152820b60648401525f03900b608482015260a4016020604051808303815f875af1158015610ccf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf3919061598b565b505f610d048789603002604c011c90565b610d0e888a61284e565b610d18898b6127eb565b60405160e893841b60208201529190921b6023820152602681019190915260460160408051601f1981840301815291815281516020928301205f8181526006909352912054909150610d6a9083612861565b5f828152600660209081526040918290209290925580518a815291820184905288916001600160a01b038c16917f4358c577d4c62044fa8caea3ad9778fe842e777c7903f2452d20661f6ff250b7910160405180910390a3505050610dd386898961271061206d565b505050505050505050565b60608167ffffffffffffffff811115610df957610df961541d565b604051908082528060200260200182016040528015610e2c57816020015b6060815260200190600190039081610e175790505b5090505f5b82811015610ee5575f8030868685818110610e4e57610e4e61592b565b9050602002810190610e6091906159ab565b604051610e6e9291906159ee565b5f60405180830381855af49150503d805f8114610ea6576040519150601f19603f3d011682016040523d82523d5f602084013e610eab565b606091505b509150915081610ebd57805160208201fd5b80848481518110610ed057610ed061592b565b60209081029190910101525050600101610e31565b5092915050565b610efb33838360018a8a6128a0565b50505f610f0c33868661271061206d565b90508015610f1a5760018190555b50505050505050565b5f8054600154604051630fa9923d60e21b81526001600160a01b0390921660048301526024820152819081908190819073b6523900510d44fbf2a19f73dbfc24e13c03a95b90633ea648f49060440160a060405180830381865af4158015610f8d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fb191906159fd565b50600154939992985090965094509092509050565b5f805460408051633850c7bd60e01b8152905183926001600160a01b031691633850c7bd9160048083019260e09291908290030181865afa15801561100d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611031919061586b565b50505050509150505f60015490505f6002600860cc84901c62ffffff168161105b5761105b615977565b0660180262ffffff1683901c600860c985901c62ffffff168161108057611080615977565b0660180262ffffff1684901c0160020b8161109d5761109d615977565b0590506103b96110b182850360020b612968565b13935050505090565b6110c68383835f6126f0565b5f6110cf612982565b5f8054600154604051630fa9923d60e21b81526001600160a01b0390921660048301526024820152919250908190819073b6523900510d44fbf2a19f73dbfc24e13c03a95b90633ea648f49060440160a060405180830381865af4158015611139573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061115d91906159fd565b50929550909350909150610201905061117a85850360020b612968565b131561119957604051630e7248fb60e41b815260040160405180910390fd5b60408051600480825260a082019092525f916020820160808036833701905050905082815f815181106111ce576111ce61592b565b602002602001019060020b908160020b8152505084816001815181106111f6576111f661592b565b600292830b6020918202929092010152815183918391811061121a5761121a61592b565b602002602001019060020b908160020b8152505083816003815181106112425761124261592b565b602002602001019060020b908160020b8152505061126788888887856127105f612a0d565b505f915081905080808667ffffffffffffffff8111156112895761128961541d565b6040519080825280602002602001820160405280156112c257816020015b6112af614ed3565b8152602001906001900390816112a75790505b5090505f6112d58a8a8a60015f8b612422565b600254929550935091506001600160a01b03166309e085108b898587866040518663ffffffff1660e01b8152600401611312959493929190615a64565b602060405180830381865afa15801561132d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135191906158ed565b6003549095506001600160a01b03166309e085108b89856113728860801c90565b61137c8760801c90565b6040518663ffffffff1660e01b815260040161139c959493929190615a64565b602060405180830381865afa1580156113b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113db91906158ed565b6002546040516317066a5760e21b81526001600160a01b038d8116600483015292965091169250635c19a95c91506024015f604051808303815f87803b158015611423575f5ffd5b505af1158015611435573d5f5f3e3d5ffd5b50506003546040516317066a5760e21b81526001600160a01b038c811660048301529091169250635c19a95c91506024015f604051808303815f87803b15801561147d575f5ffd5b505af115801561148f573d5f5f3e3d5ffd5b505050505f5f60606114c28b6001620d89e7196114ac9190615ab0565b6114ba620d89e86001615ad5565b5f8e8e6128a0565b90925090505f73b6523900510d44fbf2a19f73dbfc24e13c03a95b632a7f2f9488886114ed8d612adf565b6040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b03166044820152606481018690526084810188905260a4016040805180830381865af415801561154a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156e9190615afa565b80925081955050505f8c90505f8a90505f8d8d808060200260200160405190810160405280939291908181526020018383602002808284375f920182905250600254600354959650909473b6523900510d44fbf2a19f73dbfc24e13c03a95b9450637679c392935088925086918b918b916001600160a01b0390811691166115f58b612adf565b60066040518963ffffffff1660e01b815260040161161a989796959493929190615b73565b602060405180830381865af4158015611635573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061165991906158ed565b90506116658882612dfa565b6002549098506001600160a01b0316965063e81c105495503394508f9350611692925087915061277b9050565b6040516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152600f0b60448201526064015f604051808303815f87803b1580156116e1575f5ffd5b505af11580156116f3573d5f5f3e3d5ffd5b50506003546001600160a01b0316915063e81c10549050338b6117168560801d90565b6040516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152600f0b60448201526064015f604051808303815f87803b158015611765575f5ffd5b505af1158015611777573d5f5f3e3d5ffd5b50505050611789338c8c61271061206d565b506040518181526001600160a01b038a169033907f6f365e31bb09bf241744307ce951bb36bbc5d4a332da9714f77b420a84962de8906020015b60405180910390a35050505050505050505050565b5f546001600160a01b03161561180157604051637983c05160e01b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b038716908117825560408051633850c7bd60e01b81529051633850c7bd9160048082019260e0929091908290030181865afa158015611856573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061187a919061586b565b50505050504260d81b65ffffff000000601883901b160162ffffff8216017af590a6f276170d89e9f276170d89e9f276170d89e900000000000001600155600280546001600160a01b038781166001600160a01b0319928316811790935560038054888316931683179055604051636dfff8e560e11b81527f0000000000000000000000000000000000000000000000000000000000000000821660048201526024810193909352604483019190915288811660648301528716608482015290925073f69ba2986753c4a79f6873941dfb1fb46c0ca696915063dbfff1ca9060a4015f6040518083038186803b158015611972575f5ffd5b505af4158015611984573d5f5f3e3d5ffd5b50505050505050505050565b61199c3383835f6126f0565b5f6119a5612982565b90506119b18682612e89565b5f805460408051633850c7bd60e01b8152905183926001600160a01b031691633850c7bd9160048083019260e09291908290030181865afa1580156119f8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a1c919061586b565b505050506001600160a01b038c165f9081526007602090815260408083208e84529091528120549294509250611a4f9050565b90505f611a5c8a83612f39565b5060028054604051637e1c061160e11b815286830b60048201529188900b6024830152604482018d90526001600160801b0385166064830152608482018390529192506001600160a01b039091169063fc380c229060a401602060405180830381865afa158015611acf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611af391906158ed565b6002546040516317066a5760e21b81526001600160a01b038e8116600483015292965091169350635c19a95c925060240190505f604051808303815f87803b158015611b3d575f5ffd5b505af1158015611b4f573d5f5f3e3d5ffd5b50506003546040516317066a5760e21b81526001600160a01b038c811660048301529091169250635c19a95c91506024015f604051808303815f87803b158015611b97575f5ffd5b505af1158015611ba9573d5f5f3e3d5ffd5b50505050611bd86001888a6001620d89e719611bc59190615ab0565b611bd3620d89e86001615ad5565b611fdc565b50506002805460035460405163d42bc5e960e01b81526001600160a01b03808d166004830152602482018690529386900b604482015291831660648301529190911660848201525f9073b6523900510d44fbf2a19f73dbfc24e13c03a95b9063d42bc5e99060a401602060405180830381865af4158015611c5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c7f91906158ed565b6002549091506001600160a01b0316633bec831b8a33846040516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152600f0b60448201526064015f604051808303815f87803b158015611ce5575f5ffd5b505af1158015611cf7573d5f5f3e3d5ffd5b50506003546001600160a01b03169150633bec831b90508a33611d1a8560801d90565b6040516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152600f0b60448201526064015f604051808303815f87803b158015611d69575f5ffd5b505af1158015611d7b573d5f5f3e3d5ffd5b50506002546040516374a8f10360e01b81526001600160a01b038d8116600483015290911692506374a8f10391506024015f604051808303815f87803b158015611dc3575f5ffd5b505af1158015611dd5573d5f5f3e3d5ffd5b50506003546040516374a8f10360e01b81526001600160a01b038d8116600483015290911692506374a8f10391506024015f604051808303815f87803b158015611e1d575f5ffd5b505af1158015611e2f573d5f5f3e3d5ffd5b50505050611e4189888861271061206d565b508315611e5857611e5633868661341561206d565b505b87896001600160a01b0316336001600160a01b03167f0678d01a4d4354dc7b249ea5bc59dcd8ce288bfb79e3522e80134a85807f35a285604051611e9e91815260200190565b60405180910390a4505050505050505050565b5f805460408051633850c7bd60e01b8152905183926001600160a01b031691633850c7bd9160048083019260e09291908290030181865afa158015611ef8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f1c919061586b565b50506001545f8054604051635601910160e01b815261ffff808816600483015286166024820152603c604482015260648101939093526001600160a01b0316608483015293975091955091935073b6523900510d44fbf2a19f73dbfc24e13c03a95b92506356019101915060a4016040805180830381865af4158015611fa4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fc89190615c24565b9150508015611fd75760018190555b505050565b5f611fe5614ef1565b6001600160a01b0385165f9081526007602090815260408083208984529091529020546120168886868a858b612f91565b809450819350505086866001600160a01b03167fd7b5aa501d6c32aac0775207ad2e590a1ef403c1c04f5ec35e0f3fa31695e031838560405161205a929190615c50565b60405180910390a3509550959350505050565b5f8054600154604051630fa9923d60e21b81526001600160a01b03909216600483015260248201528190819081908190819073b6523900510d44fbf2a19f73dbfc24e13c03a95b90633ea648f49060440160a060405180830381865af41580156120d9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120fd91906159fd565b93985091965094509250905062ffffff851665ffffff000000601886901b160168ffffff000000000000603085901b16016bffffff000000000000000000604884901b160161214f8b8b8b848c61322e565b509998505050505050505050565b5f86865f1981018181106121735761217361592b565b90506020020135905061218933888860016126f0565b5f5460405163caa9a08d60e01b81526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063caa9a08d90602401602060405180830381865afa1580156121f1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122159190615c86565b67ffffffffffffffff168167ffffffffffffffff161461224e576040516393db026360e01b81525f600482015260240160405180910390fd5b335f90815260076020908152604080832084845290915290205415612286576040516314c1cb9960e31b815260040160405180910390fd5b5f5f61229583888888886133de565b5f8054600154604051630fa9923d60e21b81526001600160a01b0390921660048301526024820152929450909250908190819081908190819073b6523900510d44fbf2a19f73dbfc24e13c03a95b90633ea648f49060440160a060405180830381865af4158015612308573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061232c91906159fd565b939850919650945092509050604882901b6bffffff00000000000000000016603084901b68ffffff00000000000016601886901b65ffffff0000001662ffffff88160101019550801561237f5760018190555b5050335f8181526007602090815260408083208b845290915290206001600160801b038d16608089901b73ffffffff000000000000000000000000000000001660a088901b6001600160a01b03191601019081905593506123e8925090508c8c8561341561322e565b6040805182815260208101859052869133917fd25e9c8a7c7dd9c3d0d451d7f1fae7c97675a289891e1003df62e9a9f064d28191016117c3565b5f806060868067ffffffffffffffff8111156124405761244061541d565b60405190808252806020026020018201604052801561247957816020015b612466614ed3565b81526020019060019003908161245e5790505b509150895f5b828110156126e1575f8b8b8381811061249a5761249a61592b565b905060200201359050808583815181106124b6576124b661592b565b60200260200101515f600281106124cf576124cf61592b565b602090810291909101919091526001600160a01b0384165f9081526007825260408082208483529092522054855186908490811061250f5761250f61592b565b60200260200101516001600281106125295761252961592b565b6020020181815250505f5f6125778361256f89878151811061254d5761254d61592b565b60200260200101516001600281106125675761256761592b565b602002015190565b878f8e6134f4565b915091505f612585846137af565b90505f5b818110156126d15761259b8582612765565b5f036126a5578c61267d575f6125b68683603002604c011c90565b6125c0878461284e565b6125ca88856127eb565b60405160e893841b60208201529190921b602382015260268101919091526046016040516020818303038152906040528051906020012090505f61260e878461384c565b50505f83815260066020908152604080832054600590925282205492935090916126679184918a88600481106126465761264661592b565b60200201518a896004811061265d5761265d61592b565b6020020151613952565b90506126738e82612861565b9d505050506126c9565b61269e8482600481106126925761269261592b565b60200201518c90612861565b9a506126c9565b6126c68482600481106126ba576126ba61592b565b60200201518b90613a41565b99505b600101612589565b508460010194505050505061247f565b50505096509650969350505050565b6001600160a01b0384165f9081526008602052604081205482840391805b838110156127445761273a8288888481811061272c5761272c61592b565b905060200201356001613aa1565b915060010161270e565b50818114610f1a57604051634cf43be760e11b815260040160405180910390fd5b5f60026048603084020184901c5b069392505050565b90565b5f808061278b8686613b40565b90925090505f61279b8787613b77565b6127ae906001600160801b038716615ca1565b90506127ba8787613b89565b5f036127d5576127cb838383613b9b565b93505050506127e4565b6127cb838383613c5a565b5050505b9392505050565b5f60026049603084020184901c612773565b60801b6001600160801b0319160190565b808203828111806128305750826001600160801b0316816001600160801b0316115b1561053857604051633486405d60e21b815260040160405180910390fd5b5f6110006064603084020184901c612773565b818101828110806128305750826001600160801b0316816001600160801b0316101561053857604051633486405d60e21b815260040160405180910390fd5b5f60608267ffffffffffffffff8111156128bc576128bc61541d565b6040519080825280602002602001820160405280156128f557816020015b6128e2614ef1565b8152602001906001900390816128da5790505b5090505f5b8381101561295c575f612928878787858181106129195761291961592b565b905060200201358c8c8c611fdc565b84848151811061293a5761293a61592b565b602090810291909101015290506129518482612dfa565b9350506001016128fa565b50965096945050505050565b5f5f821361297e5761297982615cb8565b610538565b5090565b5f8054604051632d60befd60e11b81526001600160a01b039091166004820152610258602482015273b6523900510d44fbf2a19f73dbfc24e13c03a95b90635ac17dfa90604401602060405180830381865af41580156129e4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a089190615cd2565b905090565b5f5f5f612a1f8a8a8a60015f8c612422565b885192955090935091505f805b82811015612a7457612a5b8d8a8381518110612a4a57612a4a61592b565b60200260200101518689898d613c95565b612a65575f612a68565b60015b90910190600101612a2c565b50858015612a855750818160ff1614155b15612aa3576040516334b3313560e11b815260040160405180910390fd5b85158015612ab3575060ff811615155b15612ad157604051632a23f1ad60e01b815260040160405180910390fd5b505050505050505050505050565b5f5f5f8360020b12612af4578260020b612afb565b8260020b5f035b9050620d89e8811115612b21576040516333a3bdff60e21b815260040160405180910390fd5b5f816001165f03612b3657600160801b612b48565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612b7c576ffff97272373d413259a46990580e213a0260801c5b6004821615612b9b576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612bba576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612bd9576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612bf8576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612c17576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612c36576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612c56576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612c76576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612c96576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612cb6576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612cd6576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612cf6576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612d16576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612d36576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612d57576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612d77576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612d96576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612db3576b048a170391f7dc42444e8fa20260801c5b5f8460020b1315612dd257805f1981612dce57612dce615977565b0490505b640100000000810615612de6576001612de8565b5f5b60ff16602082901c0192505050919050565b5f5f612e068360801d90565b600f0b612e138560801d90565b600f0b019050805f84600f0b86600f0b0190505f8190508383600f0b141580612e3f57508181600f0b14155b15612e5d57604051633486405d60e21b815260040160405180910390fd5b612e7e836001600160801b031987168388016001600160801b031601610ba0565b979650505050505050565b5f612e93836137af565b90505f5b81811015612f1e575f80612ebc612eae878561284e565b603088901c61ffff16613dd4565b90925090505f612ed18785603002604c011c90565b905081810160020b8660020b121580612ef1575082810360020b8660020b125b15612f1057612f008785612765565b600103612f105750505050505050565b505050806001019050612e97565b5050604051633b90fbed60e11b815260040160405180910390fd5b5f5f5f612f45856137af565b90505f5b81811015612f88575f5f612f5e888885613e17565b9092509050612f6d8683612dfa565b9550612f798582612dfa565b94508260010192505050612f49565b50509250929050565b612f99614ef1565b5f612fa2610fc6565b15612fb9578560020b8760020b1315612fb9579495945b60405163266601a360e01b8152600481018690526001600160801b0385166024820152600288810b604483015287900b60648201525f9081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063266601a39060840160a0604051808303815f875af1158015613042573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130669190615ced565b915091505f6130788689858a8f613eef565b955090505f806130888a8a612f39565b60025491935091505f906001600160a01b031663083953d98a858589896040516001600160e01b031960e088901b1681526001600160a01b039095166004860152600f93840b602486015291830b6044850152820b6064840152900b608482015260a4016020604051808303815f875af1158015613108573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061312c919061598b565b90506001600160801b031987168782016001600160801b0316016003549097505f91506001600160a01b031663083953d98a6131688660801d90565b6131728660801d90565b61317c8a60801d90565b6131868a60801d90565b6040516001600160e01b031960e088901b1681526001600160a01b039095166004860152600f93840b602486015291830b6044850152820b6064840152900b608482015260a4016020604051808303815f875af11580156131e9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061320d919061598b565b905061321b878260801b0190565b9650505050505050965096945050505050565b61323a8585855f6126f0565b5f5f5f5f6132478661425f565b9350935093509350606060026103b96132609190615e8e565b600261326c8588615ab0565b60020b6132799190615e8e565b60026132858686615ab0565b60020b6132929190615e8e565b600261329e8789615ab0565b60020b6132ab9190615e8e565b6132b59190615e9c565b6132bf9190615e9c565b13156133865760408051600480825260a08201909252906020820160808036833701905050905083815f815181106132f9576132f961592b565b602002602001019060020b908160020b8152505082816001815181106133215761332161592b565b600292830b602091820292909201015281518391839181106133455761334561592b565b602002602001019060020b908160020b81525050848160038151811061336d5761336d61592b565b602002602001019060020b908160020b815250506133ce565b604080516001808252818301909252906020808301908036833701905050905083815f815181106133b9576133b961592b565b602002602001019060020b908160020b815250505b6119848a8a8a88858b6001612a0d565b5f5f5f6133e9610fc6565b90508015613403578360020b8560020b1315613403579293925b60405163fdf90cc160e01b8152600481018990526001600160801b0388166024820152600286810b604483015285900b60648201525f9081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fdf90cc19060840160a0604051808303815f875af115801561348c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134b09190615ced565b915091506134c08a838b8b6142af565b6134d48a8a838960020b8b60020b126145a8565b909550935082156134e757632710271094505b5050509550959350505050565b6134fc614ef1565b613504614f0f565b5f61350e886137af565b90505f5b818110156137a3575f6135258a83612765565b905080600114806135335750865b1561379a575f6135448b848c61277e565b90505f6135518c856127eb565b5f549091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691633cc3c1da911630846135958760e81c90565b61359f8860d01c90565b6040516001600160e01b031960e088901b1681526001600160a01b0395861660048201529490931660248501526044840191909152600290810b606484015290810b60848301528b900b60a482015260c4810186905260e4016040805180830381865afa158015613612573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613636919061593f565b6001600160801b0391821691168786600481106136555761365561592b565b602002015188876004811061366c5761366c61592b565b60209081029190910151810192909252919091526001600160a01b038b165f9081526004825260408082208f83528352808220878352909252205461373d600160401b846001600160801b03166136c38460801c90565b6001600160801b03168a89600481106136de576136de61592b565b6020020151600160200201510302816136f9576136f9615977565b04610ba0600160401b866001600160801b0316856001600160801b03168c8b600481106137285761372861592b565b602002015151030281610b9357610b93615977565b88866004811061374f5761374f61592b565b60200201525060018390036137975761377f8785600481106137735761377361592b565b60200201515f90613a41565b8785600481106137915761379161592b565b60200201525b50505b50600101613512565b50509550959350505050565b5f7afe0000000000fe0000000000fe0000000000fe00000000000000008216600160401b8110156137e257505f92915050565b6e0100000000000000000000000000008110156138025750600192915050565b600160a01b8110156138175750600292915050565b7a0100000000000000000000000000000000000000000000000000008110156138435750600392915050565b50600492915050565b5f8080808061385b8787613b40565b5f8054929450909250906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169163e53dec389116306138a38c8c6127eb565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152600286810b606483015285900b608482015260a401602060405180830381865afa158015613905573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061392991906158ed565b90508094506139388160801c90565b93508385016001600160801b031695505050509250925092565b805160208201515f91600160401b6001600160801b038716909103880281900491608087901c9003880204613a356139df821561398f5782613992565b5f195b61399c8a60801c90565b6001600160801b03166139af8960801c90565b6001600160801b031602816139c6576139c6615977565b046139d18860801c90565b6001600160801b0316614762565b613a1a84156139ee57846139f1565b5f195b8a6001600160801b0316896001600160801b03160281613a1357613a13615977565b04886139d1565b6001600160801b03169060801b6001600160801b0319160190565b98975050505050505050565b5f5f613a4d8360801d90565b600f0b613a5a8560801d90565b600f0b039050805f84600f0b86600f0b0390505f8190508383600f0b141580612e3f57508181600f0b14612e5d57604051633486405d60e21b815260040160405180910390fd5b5f5f83604051602001613ab691815260200190565b604051602081830303815290604052805190602001205f1c85187effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690505f83613b1557613b02856137af565b613b109060f888901c615918565b613b30565b613b1e856137af565b613b2c9060f888901c615ec3565b60ff165b60f81b9190910195945050505050565b5f80613b6c613b548585603002604c011c90565b613b5e868661284e565b603087901c61ffff16614777565b909590945092505050565b5f60806041603084020184901c612773565b5f60026040603084020184901c612773565b5f5f613ba685612adf565b90505f613bb285612adf565b9050613c508686613bf2613bed88613bdc876001600160a01b0316896001600160a01b0316614799565b8888036001600160a01b03166147f7565b6148a1565b7fffffff000000000000000000000000000000000000000000000000000000000060e884901b167cffffff000000000000000000000000000000000000000000000000000060d084901b16016001600160801b038216019392505050565b9695505050505050565b5f5f613c6585612adf565b90505f613c7185612adf565b9050613c508686613bf2613bed88600160601b8888036001600160a01b03166147f7565b6002545f9081906001600160a01b03166309e0851089898989896040518663ffffffff1660e01b8152600401613ccf959493929190615a64565b602060405180830381865afa158015613cea573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d0e91906158ed565b6003549091505f906001600160a01b03166309e085108a8a8a613d318b60801c90565b613d3b8b60801c90565b6040518663ffffffff1660e01b8152600401613d5b959493929190615a64565b602060405180830381865afa158015613d76573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d9a91906158ed565b90505f5f613db18484613dac8d612adf565b6148d0565b91509150613dc281876127106149bb565b909110159a9950505050505050505050565b5f806002613de28486615edc565b613dec9190615efb565b613e0b613df98587615f3f565b62ffffff166002808204910615150190565b915091505b9250929050565b5f5f5f613e258686866149f7565b90505f613e328786612765565b159050613e3f87866127eb565b5f03613eac578015613e7e57613e77613e5c83614adc565b614adc565b6001600160801b031985169085016001600160801b03160190565b9250613ee5565b613ea5613e8a83614adc565b6001600160801b031986169086016001600160801b03160190565b9350613ee5565b8015613eca57613e77613ec2613e578460801c90565b60801b840190565b613ee2613eda613e578460801c90565b60801b850190565b93505b5050935093915050565b5f613ef8614ef1565b5f613f02876137af565b9050613f0c614f0f565b613f1d88878b6001627fffff6134f4565b90935090505f5b8281101561422c575f848260048110613f3f57613f3f61592b565b602002015190505f613f568b84603002604c011c90565b613f608c8561284e565b613f6a8d866127eb565b60405160e893841b60208201529190921b602382015260268101919091526046016040516020818303038152906040528051906020012090505f613fde8b8560048110613fb957613fb961592b565b602002015160065f8581526020019081526020015f205461286190919063ffffffff16565b9050613fea8c85612765565b600103614015578815614004576140018184613a41565b90505b61400e8884612dfa565b97506141ec565b5f5f5f6140238f888f61277e565b9050806001600160801b031692506140418f88640900000000614b02565b91505f90506140508383615f5d565b5f8681526005602052604081205491925061408361406e8686615f5d565b87848b8e8e6004811061265d5761265d61592b565b905061408f868261280e565b955061409b8d82612dfa565b9c50808c8a600481106140b0576140b061592b565b602002015289895f86900361411d576141188c82600481106140d4576140d461592b565b6020020151600160200201518d83600481106140f2576140f261592b565b60200201515f60200201516001600160801b03169060801b6001600160801b0319160190565b6141d6565b6141d68661417461412e8d60801d90565b600f0b600160401b028a86866004811061414a5761414a61592b565b60200201516001602002015102896141628a60801c90565b6001600160801b03160203015f614b97565b8161418157614181615977565b04876141b18d600160401b02600f0b8b8787600481106141a3576141a361592b565b602002015151028a8a614162565b816141be576141be615977565b046001600160801b03166127fd90919063ffffffff16565b5f8a815260056020526040902055505050505050505b5f918252600660209081526040808420929092556001600160a01b038e168352600481528183208d84528152818320858452905281205550600101613f24565b506001600160a01b0389165f9081526007602090815260408083208b845290915281208190556137a3908a908a90614ba5565b5f80808060a085901b6001600160a01b0319166bffffffffffffffffffffffff861661428b8260b81c90565b6142958360d01c90565b61429f8460e81c90565b9450945094509450509193509193565b6142bb33856001614ba5565b5f6142c5856137af565b90505f5b81811015610625575f6142dc8783612765565b90505f6142ee8884603002604c011c90565b6142f8898561284e565b6143028a866127eb565b60405160e893841b60208201529190921b602382015260268101919091526046016040516020818303038152906040528051906020012090506143758784600481106143505761435061592b565b602002015160065f8481526020019081526020015f205461286190919063ffffffff16565b5f8281526006602052604081209190915561439189858961277e565b90505f80806143a08c886127eb565b5f549091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691633cc3c1da911630846143e48960e81c90565b6143ee8a60d01c90565b6040516001600160e01b031960e088901b1681526001600160a01b0395861660048201529490931660248501526044840191909152600290810b60648401520b6084820152627fffff60a482015260c4810189905260e4016040805180830381865afa158015614460573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614484919061593f565b6001600160801b0391821694501691506144aa838360801b6001600160801b0319160190565b60045f336001600160a01b03166001600160a01b031681526020019081526020015f205f8e81526020019081526020015f205f8981526020019081526020015f2081905550505f6145268c88885f1461451b5761451667ffffffffffffffff8d16640900000000614762565b614b02565b640900000000614b02565b9050855f03614597575f858152600560205260409020546001600160801b03851680830361458584868402608086901c8402018161456657614566615977565b048583866001600160801b031602858a0201816141be576141be615977565b5f898152600560205260409020555050505b5050505050508060010190506142c9565b5f5f5f5f6145b68888612f39565b60025491935091505f9081906001600160a01b0316630ebd39063386868c6040516001600160e01b031960e087901b1681526001600160a01b039094166004850152600f92830b602485015290820b6044840152900b6064820152891515608482015260a40160408051808303815f875af1158015614637573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061465b9190615f70565b60035491935091505f9081906001600160a01b0316630ebd3906336146808960801d90565b61468a8960801d90565b6146948f60801d90565b6040516001600160e01b031960e087901b1681526001600160a01b039094166004850152600f92830b602485015290820b6044840152900b60648201528b1515608482015260a40160408051808303815f875af11580156146f7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061471b9190615f70565b909250905065ffffffff0000601083901b16840161474e6001600160801b0385168360801b6001600160801b0319160190565b975097505050505050505b94509492505050565b5f81831061477057816127e4565b5090919050565b5f5f5f5f6147858686613dd4565b90880394508701925050505b935093915050565b5f80805f19848609848602925082811083820303915050805f036147c2575060601c9050610538565b80600160601b116147d1575f5ffd5b5f600160601b85870980840360601c9310909103600160a01b0291909117949350505050565b5f80805f19858709858702925082811083820303915050805f0361482b575f8411614820575f5ffd5b5082900490506127e4565b808411614836575f5ffd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b806001600160801b03811681146148cb5760405163b668004560e01b815260040160405180910390fd5b919050565b5f5f600160601b836001600160a01b0316101561494f576148fa846001600160801b031684614c10565b61490d906001600160801b038716615f5d565b61492961491a8660801c90565b6001600160801b031685614c6c565b6149338760801c90565b6001600160801b03166149469190615f5d565b91509150614791565b836001600160801b031661496c866001600160801b031685614cc1565b6149769190615f5d565b6149808560801c90565b6001600160801b03166149a56149968860801c90565b6001600160801b031686614d0c565b6149af9190615f5d565b91509150935093915050565b5f6149c78484846147f7565b90505f82806149d8576149d8615977565b84860911156127e4575f1981106149ed575f5ffd5b6001019392505050565b5f80808080614a068887613b40565b915091505f614a37614a1784612adf565b6001600160a01b0316614a2984612adf565b6001600160a01b0316614799565b9050614a438988613b89565b5f03614a7c57614a538988613b77565b614a5d9089615f94565b9450614a75613bed866001600160801b031683614d57565b9350614ab0565b614a868988613b77565b614a909089615f94565b9350614aad613bed856001600160801b0316600160601b846149bb565b94505b614acf6001600160801b0386168560801b6001600160801b0319160190565b9998505050505050505050565b805f600f82900b12156148cb5760405163b668004560e01b815260040160405180910390fd5b5f5f5f614b0f868661384c565b919450925090506001600160801b038216158015614b3457506001600160801b038116155b15614b405750506127e4565b5f826001600160801b0316826001600160801b03166401000000000281614b6957614b69615977565b0490508467ffffffffffffffff168111156127e057604051631d43cae160e11b815260040160405180910390fd5b5f81831361477057816127e4565b6001600160a01b0383165f90815260086020526040812054614bc8908484613aa1565b9050601960f882901c1115614bf057604051630ed7e77760e01b815260040160405180910390fd5b6001600160a01b039093165f908152600860205260409020929092555050565b5f6001600160801b036001600160a01b0383161015614c4b57614c4483600160c01b6002856001600160a01b03160a6147f7565b9050610538565b614c4483600160801b614c676001600160a01b03861680614d89565b6147f7565b5f6001600160801b036001600160a01b0383161015614ca057614c4483600160c01b6002856001600160a01b03160a6149bb565b614c4483600160801b614cbc6001600160a01b03861680614d89565b6149bb565b5f6001600160801b036001600160a01b0383161015614cf057614c44836002846001600160a01b03160a614de7565b614c4483614d076001600160a01b03851680614d89565b614e45565b5f6001600160801b036001600160a01b0383161015614d3b57614c44836002846001600160a01b03160a614ea3565b614c4483614d526001600160a01b03851680614d89565b614ebb565b5f614d628383614799565b90505f600160601b5b8385091115610538575f198110614d80575f5ffd5b60010192915050565b5f80805f19848609848602925082811083820303915050805f03614db2575060401c9050610538565b80600160401b11614dc1575f5ffd5b5f600160401b85870980840360401c9310909103600160c01b0291909117949350505050565b5f80805f19848609848602925082811083820303915050805f03614e10575060c01c9050610538565b80600160c01b11614e1f575f5ffd5b5f600160c01b85870980840360c01c9310909103600160401b0291909117949350505050565b5f80805f19848609848602925082811083820303915050805f03614e6e575060801c9050610538565b80600160801b11614e7d575f5ffd5b5f600160801b85870980840360801c9310909103600160801b0291909117949350505050565b5f614eae8383614de7565b90505f600160c01b614d6b565b5f614ec68383614e45565b90505f600160801b614d6b565b60405180604001604052806002906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180608001604052806004905b614f26614ed3565b815260200190600190039081614f1e5790505090565b5f60208284031215614f4c575f5ffd5b81356001600160e01b0319811681146127e4575f5ffd5b6001600160a01b0381168114614f77575f5ffd5b50565b5f5f60408385031215614f8b575f5ffd5b8235614f9681614f63565b946020939093013593505050565b5f5f83601f840112614fb4575f5ffd5b50813567ffffffffffffffff811115614fcb575f5ffd5b6020830191508360208260051b8501011115613e10575f5ffd5b8060020b8114614f77575f5ffd5b5f5f5f5f5f60808688031215615007575f5ffd5b85359450602086013567ffffffffffffffff811115615024575f5ffd5b61503088828901614fa4565b909550935050604086013561504481614fe5565b9150606086013561505481614fe5565b809150509295509295909350565b6001600160801b0381168114614f77575f5ffd5b67ffffffffffffffff81168114614f77575f5ffd5b5f5f5f5f5f5f60a087890312156150a0575f5ffd5b863567ffffffffffffffff8111156150b6575f5ffd5b6150c289828a01614fa4565b90975095505060208701356150d681615062565b935060408701356150e681615076565b925060608701356150f681614fe5565b9150608087013561510681614fe5565b809150509295509295509295565b8015158114614f77575f5ffd5b5f5f5f5f60608587031215615134575f5ffd5b843561513f81614f63565b9350602085013561514f81615114565b9250604085013567ffffffffffffffff81111561516a575f5ffd5b61517687828801614fa4565b95989497509550505050565b5f8151808452602084019350602083015f5b828110156151d9578151865f5b60028110156151c05782518252602092830192909101906001016151a1565b5050506040959095019460209190910190600101615194565b5093949350505050565b838152826020820152606060408201525f6152016060830184615182565b95945050505050565b5f5f5f6040848603121561521c575f5ffd5b833561522781614f63565b9250602084013567ffffffffffffffff811115615242575f5ffd5b61524e86828701614fa4565b9497909650939450505050565b5f5f6040838503121561526c575f5ffd5b50508035926020909101359150565b5f5f5f5f6060858703121561528e575f5ffd5b843567ffffffffffffffff8111156152a4575f5ffd5b6152b087828801614fa4565b90955093505060208501356152c481614f63565b9396929550929360400135925050565b5f5f602083850312156152e5575f5ffd5b823567ffffffffffffffff8111156152fb575f5ffd5b61530785828601614fa4565b90969095509350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561538b57603f19878603018452815180518087528060208301602089015e5f602082890101526020601f19601f83011688010196505050602082019150602084019350600181019050615339565b50929695505050505050565b5f5f5f5f5f5f608087890312156153ac575f5ffd5b863567ffffffffffffffff8111156153c2575f5ffd5b6153ce89828a01614fa4565b909750955050602087013567ffffffffffffffff8111156153ed575f5ffd5b6153f989828a01614fa4565b909550935050604087013561540d81614fe5565b9150606087013561510681614fe5565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561545a5761545a61541d565b604052919050565b5f82601f830112615471575f5ffd5b813567ffffffffffffffff81111561548b5761548b61541d565b8060051b61549b60208201615431565b918252602081850181019290810190868411156154b6575f5ffd5b6020860192505b83831015613c505782358252602092830192909101906154bd565b5f82601f8301126154e7575f5ffd5b813567ffffffffffffffff8111156155015761550161541d565b615514601f8201601f1916602001615431565b818152846020838601011115615528575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f60a08688031215615558575f5ffd5b853561556381614f63565b9450602086013561557381614f63565b9350604086013567ffffffffffffffff81111561558e575f5ffd5b61559a88828901615462565b935050606086013567ffffffffffffffff8111156155b6575f5ffd5b6155c288828901615462565b925050608086013567ffffffffffffffff8111156155de575f5ffd5b6155ea888289016154d8565b9150509295509295909350565b5f60208284031215615607575f5ffd5b81356127e481614f63565b5f5f5f5f5f60608688031215615626575f5ffd5b853567ffffffffffffffff81111561563c575f5ffd5b61564888828901614fa4565b909650945050602086013561565c81614f63565b9250604086013567ffffffffffffffff811115615677575f5ffd5b61568388828901614fa4565b969995985093965092949392505050565b5f5f5f5f5f60a086880312156156a8575f5ffd5b85356156b381614f63565b945060208601356156c381614f63565b935060408601356156d381614f63565b925060608601356156e381614f63565b9150608086013561505481614f63565b5f5f5f5f5f5f60808789031215615708575f5ffd5b863561571381614f63565b955060208701359450604087013567ffffffffffffffff811115615735575f5ffd5b61574189828a01614fa4565b909550935050606087013567ffffffffffffffff811115615760575f5ffd5b61576c89828a01614fa4565b979a9699509497509295939492505050565b5f5f5f5f5f60a08688031215615792575f5ffd5b853561579d81614f63565b945060208601356157ad81614f63565b93506040860135925060608601359150608086013567ffffffffffffffff8111156155de575f5ffd5b5f5f5f5f5f5f5f60e0888a0312156157ec575f5ffd5b87516157f781614fe5565b602089015190975061580881614fe5565b604089015190965061581981614fe5565b606089015190955061582a81614fe5565b608089015160a08a015160c08b0151929650909450925061584a81615062565b8091505092959891949750929550565b805161ffff811681146148cb575f5ffd5b5f5f5f5f5f5f5f60e0888a031215615881575f5ffd5b875161588c81614f63565b602089015190975061589d81614fe5565b95506158ab6040890161585a565b94506158b96060890161585a565b93506158c76080890161585a565b925060a088015160ff811681146158dc575f5ffd5b60c089015190925061584a81615114565b5f602082840312156158fd575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561053857610538615904565b634e487b7160e01b5f52603260045260245ffd5b5f5f60408385031215615950575f5ffd5b825161595b81615062565b602084015190925061596c81615062565b809150509250929050565b634e487b7160e01b5f52601260045260245ffd5b5f6020828403121561599b575f5ffd5b815180600f0b81146127e4575f5ffd5b5f5f8335601e198436030181126159c0575f5ffd5b83018035915067ffffffffffffffff8211156159da575f5ffd5b602001915036819003821315613e10575f5ffd5b818382375f9101908152919050565b5f5f5f5f5f60a08688031215615a11575f5ffd5b8551615a1c81614fe5565b6020870151909550615a2d81614fe5565b6040870151909450615a3e81614fe5565b6060870151909350615a4f81614fe5565b60809690960151949793965091949392915050565b6001600160a01b03861681528460020b602082015260a060408201525f615a8e60a0830186615182565b6001600160801b03948516606084015292909316608090910152949350505050565b600282810b9082900b03627fffff198112627fffff8213171561053857610538615904565b600281810b9083900b01627fffff8113627fffff198212171561053857610538615904565b5f5f60408385031215615b0b575f5ffd5b505080516020909101519092909150565b5f8151808452602084019350602083015f5b828110156151d9578151865f5b6004811015615b5a578251825260209283019290910190600101615b3b565b5050506080959095019460209190910190600101615b2e565b5f61010082016001600160a01b038b1683526101006020840152808a518083526101208501915060208c0192505f5b81811015615bc0578351835260209384019390920191600101615ba2565b50508381036040850152615bd4818b615b1c565b92505050866060830152615bf360808301876001600160a01b03169052565b6001600160a01b03851660a08301526001600160a01b03841660c08301528260e08301529998505050505050505050565b5f5f60408385031215615c35575f5ffd5b8251615c4081614fe5565b6020939093015192949293505050565b6001600160801b038316815260a0810160208201835f5b60048110156127e0578151835260209283019290910190600101615c67565b5f60208284031215615c96575f5ffd5b81516127e481615076565b808202811582820484141761053857610538615904565b5f600160ff1b8201615ccc57615ccc615904565b505f0390565b5f60208284031215615ce2575f5ffd5b81516127e481614fe5565b5f5f60a08385031215615cfe575f5ffd5b83601f840112615d0c575f5ffd5b6040516080810167ffffffffffffffff81118282101715615d2f57615d2f61541d565b604052806080850186811115615d43575f5ffd5b855b81811015615d5d578051835260209283019201615d45565b50519196919550909350505050565b80825b600185111561475957808604811115615d8a57615d8a615904565b6001851615615d9857908102905b60019490941c938002615d6f565b5f828015615dbb5760018114615dc557615dce565b6001915050610538565b82915050610538565b5081615ddb57505f610538565b5060015f8213808214615df3578015615e1157615e2a565b826001600160ff1b0304831115615e0c57615e0c615904565b615e2a565b826001600160ff1b0305831215615e2a57615e2a615904565b5080831615615e365750805b615e4e6001600160ff1b038460011c84850284615d6c565b806001600160ff1b030482115f83131615615e6b57615e6b615904565b5f8212600160ff1b82900583121615615e8657615e86615904565b029392505050565b5f6127e460ff841683615da6565b8082018281125f831280158216821582161715615ebb57615ebb615904565b505092915050565b60ff818116838216019081111561053857610538615904565b5f8260020b8260020b028060020b9150808214610ee557610ee5615904565b5f8160020b8360020b80615f1d57634e487b7160e01b5f52601260045260245ffd5b627fffff1982145f1982141615615f3657615f36615904565b90059392505050565b62ffffff8181168382160290811690818114610ee557610ee5615904565b8082018082111561053857610538615904565b5f5f60408385031215615f81575f5ffd5b825163ffffffff8116811461595b575f5ffd5b6001600160801b038181168382160290811690818114610ee557610ee561590456fea26469706673582212209a7029415c79458e37edd6b66f7dc0481346f8963781f8c393badf464b2872a764736f6c634300081c00330000000000000000000000003620388bc1e8b888fb4cee57158ba6b9d74a87bb0000000000000000000000000000000000000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000646112e8ac000000000000000000000000bf24cbfe40482980ad88b11add53600edcf0faedbf24cbfe40482980ad88b11add53600edcf0faedd0898a9b4b2d68eeaeddfac3000000000000000000000000000000000000000000000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005d6461ff715fbf24cbfe40482980ad88b11add53600edcf0faedd0898a9b4b2d68eeaeddfac300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000005ce360e060405234801561000f575f5ffd5b50604051615c83380380615c8383398101604081905261002e91610047565b6001600160a01b0390921660805260a05260c052610086565b5f5f5f60608486031215610059575f5ffd5b83516001600160a01b038116811461006f575f5ffd5b602085015160409095015190969495509392505050565b60805160a05160c051615b9b6100e85f395f8181610ee2015281816110330152818161143e01526114d001525f8181610ebe0152818161100f0152818161141a01526114ac01525f8181611234015281816116b801526117da0152615b9b5ff3fe608060405260043610610156575f3560e01c8063b909a0b3116100bb578063e985e9c511610071578063f242432a11610057578063f242432a1461058c578063fa461e33146105ab578063fdf90cc1146105ca575f5ffd5b8063e985e9c5146104a5578063eb1de2e2146104de575f5ffd5b8063caa9a08d116100a1578063caa9a08d1461039d578063d3487997146103ea578063e53dec3814610409575f5ffd5b8063b909a0b31461035f578063c035e2421461037e575f5ffd5b80633f8e156e11610110578063a22cb465116100f6578063a22cb465146102e7578063a734bda814610306578063ac9650d81461033f575f5ffd5b80633f8e156e146102655780634e1273f4146102bb575f5ffd5b8063266601a311610140578063266601a3146101cf5780632eb2c2d6146101fc5780633cc3c1da1461021d575f5ffd5b8062fdd58e1461015a57806301ffc9a7146101a0575b5f5ffd5b348015610165575f5ffd5b5061018d610174366004614d2f565b5f60208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b3480156101ab575f5ffd5b506101bf6101ba366004614d86565b6105e9565b6040519015158152602001610197565b3480156101da575f5ffd5b506101ee6101e9366004614dcc565b610681565b604051610197929190614e1c565b348015610207575f5ffd5b5061021b610216366004614ed2565b61079d565b005b348015610228575f5ffd5b5061023c610237366004614f95565b61088b565b604080516fffffffffffffffffffffffffffffffff938416815292909116602083015201610197565b348015610270575f5ffd5b506102a361027f366004615015565b67ffffffffffffffff165f908152600360205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610197565b3480156102c6575f5ffd5b506102da6102d536600461503c565b610af0565b60405161019791906150a8565b3480156102f2575f5ffd5b5061021b6103013660046150f7565b610bdf565b348015610311575f5ffd5b5061032561032036600461512e565b610c68565b60408051600f93840b81529190920b602082015201610197565b61035261034d366004615192565b610d0e565b604051610197919061521d565b34801561036a575f5ffd5b5061021b610379366004615015565b610e1c565b348015610389575f5ffd5b5061021b6103983660046152ae565b6111be565b3480156103a8575f5ffd5b506103d16103b73660046152f6565b6001600160a01b03165f9081526002602052604090205490565b60405167ffffffffffffffff9091168152602001610197565b3480156103f5575f5ffd5b5061021b610404366004615311565b6116a3565b348015610414575f5ffd5b5061018d61042336600461512e565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606097881b81166020808401919091529690971b9096166034870152604886019390935260e891821b6068860152901b606b8401528051808403604e018152606e90930181528251928201929092205f9081526004909152205490565b3480156104b0575f5ffd5b506101bf6104bf366004615354565b600160209081525f928352604080842090915290825290205460ff1681565b3480156104e9575f5ffd5b506105726104f8366004615015565b67ffffffffffffffff165f90815260036020908152604091829020825160608101845290546001600160a01b0381168252740100000000000000000000000000000000000000008104600290810b93830184905277010000000000000000000000000000000000000000000000909104900b920182905291565b60408051600293840b81529190920b602082015201610197565b348015610597575f5ffd5b5061021b6105a6366004615380565b61171e565b3480156105b6575f5ffd5b5061021b6105c5366004615311565b6117c5565b3480156105d5575f5ffd5b506101ee6105e4366004614dcc565b611846565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061067b57507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610689614cfa565b5f681face81baddeadbeef805c159030905d80610707576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5245454e5452414e43590000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6107243388886fffffffffffffffffffffffffffffffff16611943565b6040516fffffffffffffffffffffffffffffffff87168152879033907f23833bcc608a225445893342669a9bc035de4ef96cc1edd47cead470f1f7817a9060200160405180910390a361078385858861077c8b6119c5565b6001611ac1565b925092505f681face81baddeadbeef5d5094509492505050565b681face81baddeadbeef805c159030905d80610815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5245454e5452414e43590000000000000000000000000000000000000000000060448201526064016106fe565b5f5b868110156108635761085b8a8a8a8a85818110610836576108366153f7565b9050602002013589898681811061084f5761084f6153f7565b90506020020135611e89565b600101610817565b5061087489898989898989896120da565b5f681face81baddeadbeef5d505050505050505050565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606089811b8216602084015288901b1660348201526048810186905260e885811b606883015284901b606b8201525f9081908190606e01604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291815281516020928301205f81815260049093529082205490925081819050627fffff600289900b12801561095757506fffffffffffffffffffffffffffffffff811615155b15610aa4576040517f3f6391010000000000000000000000000000000000000000000000000000000081526001600160a01b038e166004820152600289810b60248301528b810b60448301528a900b60648201526fffffffffffffffffffffffffffffffff821660848201525f908e908c908c9084907315fc36f2bd9403e85023b59b617f512f8fe0593590633f6391019060a401602060405180830381865af4158015610a07573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2b9190615424565b5f8a815260076020526040902054909150610a47908290612357565b9450505050505f5f610a598584612467565b5f89815260056020908152604080832054600690925290912054929450909250610a85918490846125f9565b909250905060018a14610a985780610a9a565b815b9550505050610ad1565b86600114610abf575f84815260066020526040902054610ace565b5f848152600560205260409020545b92505b82610adc8460801c90565b955095505050505097509795505050505050565b60608367ffffffffffffffff811115610b0b57610b0b61543b565b604051908082528060200260200182016040528015610b34578160200160208202803683370190505b5090505f5b84811015610bd6575f5f878784818110610b5557610b556153f7565b9050602002016020810190610b6a91906152f6565b6001600160a01b03166001600160a01b031681526020019081526020015f205f858584818110610b9c57610b9c6153f7565b9050602002013581526020019081526020015f2054828281518110610bc357610bc36153f7565b6020908102919091010152600101610b39565b50949350505050565b335f8181526001602090815260408083206001600160a01b0387168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087811b8216602084015286901b1660348201526048810184905260e883811b606883015282901b606b8201525f90819081906007908290606e016040516020818303038152906040528051906020012081526020019081526020015f20549050610cf58190565b9250610d018160801d90565b9150509550959350505050565b60608167ffffffffffffffff811115610d2957610d2961543b565b604051908082528060200260200182016040528015610d5c57816020015b6060815260200190600190039081610d475790505b5090505f5b82811015610e15575f8030868685818110610d7e57610d7e6153f7565b9050602002810190610d909190615468565b604051610d9e9291906154c9565b5f60405180830381855af49150503d805f8114610dd6576040519150601f19603f3d011682016040523d82523d5f602084013e610ddb565b606091505b509150915081610ded57805160208201fd5b80848481518110610e0057610e006153f7565b60209081029190910101525050600101610d61565b5092915050565b67ffffffffffffffff81165f908152600360209081526040808320815160608101835290546001600160a01b0381168252740100000000000000000000000000000000000000008104600290810b9483019490945277010000000000000000000000000000000000000000000000900490920b908201529061ffff603084901c1690610ea7826127bb565b90505f5f610ffa856020015160020b610ff0610fd77f00000000000000000000000000000000000000000000000000000000000000006127107f00000000000000000000000000000000000000000000000000000000000000008b5f01516001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f40573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6491906154d8565b6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f9f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc39190615424565b0281610fd157610fd16154f3565b04612805565b87876fffffffffffffffffffffffffffffffff1661281c565b5f0360020b61287b565b9150611099856040015160020b611091610fd77f00000000000000000000000000000000000000000000000000000000000000006127107f00000000000000000000000000000000000000000000000000000000000000008b5f01516001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f40573d5f5f3e3d5ffd5b60020b612889565b6040805160608101825287516001600160a01b039081168252600286810b60208085018281529287900b85870181815267ffffffffffffffff8f165f9081526003845288902096518754955191519087167fffffffffffffffffff0000000000000000000000000000000000000000000000909616959095177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000009190951602939093179094558a5185519182529381019190915293945016917fac639863cf263ec4d7f6c93d2b312174ee3ec131a2f5789cc0dcc96a7e697226910160405180910390a2505050505050565b816001600160a01b0316836001600160a01b0316106111de5781836111e1565b82825b6040517f1698ee820000000000000000000000000000000000000000000000000000000081526001600160a01b038084166004830152808316602483015262ffffff851660448301529295509093505f917f00000000000000000000000000000000000000000000000000000000000000001690631698ee8290606401602060405180830381865afa158015611279573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061129d91906154d8565b905073ba3f945812a83471d709bce9c3ca699a19fb46f76001600160a01b038216146112c7575f5ffd5b6001600160a01b038116611307576040517f4f361fe400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381165f908152600260205260409020541561132a5750505050565b5f816001600160a01b031663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611367573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061138b9190615520565b9050607082901c65ffffffffffff16603082901b68ffffff00000000000016015b67ffffffffffffffff81165f908152600360205260409020546001600160a01b0316156113f2576001810165ffffffffffff1667ffff00000000000082160190506113ac565b5f6113fc836127bb565b6fffffffffffffffffffffffffffffffff1690505f5f6114a06114997f00000000000000000000000000000000000000000000000000000000000000006127107f00000000000000000000000000000000000000000000000000000000000000008c6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f9f573d5f5f3e3d5ffd5b868561281c565b5f03915061152b6114997f00000000000000000000000000000000000000000000000000000000000000006127107f00000000000000000000000000000000000000000000000000000000000000008d6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f9f573d5f5f3e3d5ffd5b604080516060810182526001600160a01b03808a16808352600287810b602080860191825287830b86880190815267ffffffffffffffff8d165f81815260038452898120985189549551935162ffffff90811677010000000000000000000000000000000000000000000000027fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff9190951674010000000000000000000000000000000000000000027fffffffffffffffffff000000000000000000000000000000000000000000000090971691909916179490941796909616179095558281529352918390207f800000000000000000000000000000000000000000000000000000000000000090910190559051919250907f4bd4bcef57942fad6bb34f8b7d1b53da46f96eefc173461c3be68165a9e729d1906116909087908690869067ffffffffffffffff939093168352600291820b6020840152900b604082015260600190565b60405180910390a2505050505050505050565b5f6116b082840184615589565b90506116e0337f0000000000000000000000000000000000000000000000000000000000000000835f0151612897565b84156116fa5780515160208201516116fa9190338861297f565b831561171757611717815f0151602001518260200151338761297f565b5050505050565b681face81baddeadbeef805c159030905d80611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5245454e5452414e43590000000000000000000000000000000000000000000060448201526064016106fe565b6117a287878787611e89565b6117b0878787878787612a0a565b5f681face81baddeadbeef5d50505050505050565b5f6117d282840184615589565b9050611802337f0000000000000000000000000000000000000000000000000000000000000000835f0151612897565b5f5f861361181557815160200151611819565b8151515b90505f5f8713611829578561182b565b865b905061183d828460200151338461297f565b50505050505050565b61184e614cfa565b5f681face81baddeadbeef805c159030905d806118c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5245454e5452414e43590000000000000000000000000000000000000000000060448201526064016106fe565b6118e43388886fffffffffffffffffffffffffffffffff16612c15565b6040516fffffffffffffffffffffffffffffffff87168152879033907f16695fc037c20a8984b20ffc7aadd6ce10e62756f9ca42933a1aa6459ef064ca9060200160405180910390a361193687612d80565b6107838585888a5f611ac1565b6001600160a01b0383165f908152602081815260408083208584529091528120805483929061197390849061567f565b909155505060408051838152602081018390525f916001600160a01b0386169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b5f7afe0000000000fe0000000000fe0000000000fe00000000000000008216680100000000000000008110156119fc57505f611a6f565b6e010000000000000000000000000000811015611a1b57506001611a6f565b74010000000000000000000000000000000000000000811015611a4057506002611a6f565b7a010000000000000000000000000000000000000000000000000000811015611a6b57506003611a6f565b5060045b7fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000816004036030027b01000000000001000000000001000000000001000000000000000000901c168318915050919050565b611ac9614cfa565b67ffffffffffffffff83165f908152600360209081526040808320815160608101835290546001600160a01b038116808352740100000000000000000000000000000000000000008204600290810b958401959095527701000000000000000000000000000000000000000000000090910490930b9181019190915290611b7c576040517f4f361fe400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5f5f611b8989613135565b90505f5b81811015611cec575f611ba18b838e6131e8565b905089611c435761ffff60308c901c1660e882901c60d083901c611bc58383615692565b60020b151580611be05750611bda8382615692565b60020b15155b80611bf45750896020015160020b8260020b125b80611c085750896040015160020b8160020b135b15611c3f576040517f1577d96600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505b611c4c81613253565b86019550611c59816132ce565b87519501945f90611c6d908d85858f613316565b8b8560048110611c7f57611c7f6153f7565b60200201529050611c9089826135a5565b9850611cdd611c9f8d85613667565b15611cc357611cbe825b6fffffffffffffffffffffffffffffffff1690565b611cd6565b611cd6611cd08360801d90565b60801b90565b86906135a5565b94508260010192505050611b8d565b50611d0860046f7fffffffffffffffffffffffffffffff6156b3565b6fffffffffffffffffffffffffffffffff16841180611d525750611d3d60046f7fffffffffffffffffffffffffffffff6156b3565b6fffffffffffffffffffffffffffffffff1683115b15611d89576040517f543a6e1000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8a60020b8c60020b1315611dbb578115611db757611db486611dae875f0151856136b8565b906135a5565b95505b999a995b5f855f01516001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015611dfb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e1f9190615712565b50505050509150508b60020b8160020b121580611e4257508c60020b8160020b13155b15611e79576040517ffd26c92800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050509550959350505050565b67ffffffffffffffff82165f908152600360205260408120546001600160a01b031690611eb584613135565b90505f5b8181101561183d575f611ecd8683876131e8565b90505f8489611edc8986613667565b611ee68560e81c90565b611ef08660d01c90565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606096871b811660208301529490951b9093166034850152604884019190915260e890811b60688401521b606b820152606e01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012090505f8589611f8c8a87613667565b611f968660e81c90565b611fa08760d01c90565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606096871b811660208301529490951b9093166034850152604884019190915260e890811b60688401521b606b820152606e01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301205f8581526004909352818320548184529190922054919250901515806120655750836fffffffffffffffffffffffffffffffff168114155b1561209c576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281526004602090815260408083209390935584825282822082905560079052818120805493825291812092909255918152905550600101611eb9565b336001600160a01b038916148061211357506001600160a01b0388165f90815260016020908152604080832033845290915290205460ff165b612149576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80805b878110156121f157888882818110612167576121676153f7565b905060200201359250868682818110612182576121826153f7565b6001600160a01b038e165f90815260208181526040808320898452825282208054939091029490940135955085939250906121be90849061567f565b90915550506001600160a01b038a165f90815260208181526040808320868452909152902080548301905560010161214d565b50886001600160a01b03168a6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b60405161224594939291906157ed565b60405180910390a46001600160a01b0389163b1561234b576040517fbc197c8100000000000000000000000000000000000000000000000000000000808252906001600160a01b038b169063bc197c81906122b29033908f908e908e908e908e908e908e9060040161585a565b6020604051808303815f875af11580156122ce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122f291906158b3565b7fffffffff00000000000000000000000000000000000000000000000000000000161461234b576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050505050565b5f5f6123638360801d90565b600f0b6123708560801d90565b600f0b039050805f84600f0b86600f0b0390505f8190508383600f0b14158061239c57508181600f0b14155b156123d3576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61245c6123e384600f0b5f612889565b6124326123f384600f0b5f612889565b889081016fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff00000000000000000000000000000000919091160190565b9060801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b979650505050505050565b5f5f5f6124748560801c90565b6fffffffffffffffffffffffffffffffff908116915085168082015f808781608082901c90506124c5826fffffffffffffffffffffffffffffffff168668010000000000000000026002890a613a37565b93506124f2816fffffffffffffffffffffffffffffffff168668010000000000000000026002890a613a37565b92505f915081905060048704860161251361250e868389613a37565b613ae1565b925061252361250e858389613a37565b91506125656fffffffffffffffffffffffffffffffff84168360801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b99505f925082915081905060046002890a048887026002880a0301905061259361250e868360028a0a613a37565b92506125a661250e858360028a0a613a37565b91506125e86fffffffffffffffffffffffffffffffff84168360801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b985050505050505050509250929050565b5f8080612631865b6fffffffffffffffffffffffffffffffff16885b6fffffffffffffffffffffffffffffffff1661250e91906158ce565b90505f61265d6126418860801c90565b6fffffffffffffffffffffffffffffffff166126158a60801c90565b90505f61266986612601565b90505f6126796126418860801c90565b90505f6fffffffffffffffffffffffffffffffff85811614806126ad57506fffffffffffffffffffffffffffffffff838116145b1590505f6fffffffffffffffffffffffffffffffff85811614806126e257506fffffffffffffffffffffffffffffffff838116145b159050612747816126fc576126f78d60801c90565b6126fe565b855b83612709578d61270b565b875b6fffffffffffffffffffffffffffffffff169060801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b6127a88261275e576127598c60801c90565b612760565b845b8461276b578c61270b565b866fffffffffffffffffffffffffffffffff169060801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b9750975050505050505094509492505050565b5f600282900b620d89e8816127d2576127d26154f3565b0560020260010162ffffff166fffffffffffffffffffffffffffffffff8016816127fe576127fe6154f3565b0492915050565b5f8183116128135781612815565b825b9392505050565b5f61287361286c857c01000000000000000000000000000000000000000000000000000000006c0100000000000000000000000061285988613b13565b036001600160a01b031686026080613e54565b600d613f25565b949350505050565b5f8183126128135781612815565b5f8183136128135781612815565b8051602082015160408084015190517f1698ee820000000000000000000000000000000000000000000000000000000081526001600160a01b039384166004820152918316602483015262ffffff16604482015284821691841690631698ee8290606401602060405180830381865afa158015612916573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061293a91906154d8565b6001600160a01b03161461297a576040517f3a94c70500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815284816004015283816024015282816044015260205f6064835f8a5af13d15601f3d1160015f511416171691505080611717576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336001600160a01b0387161480612a4357506001600160a01b0386165f90815260016020908152604080832033845290915290205460ff165b612a79576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0386165f9081526020818152604080832087845290915281208054859290612aa990849061567f565b90915550506001600160a01b038581165f818152602081815260408083208984528252918290208054880190558151888152908101879052919289169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0385163b15612c0d576040517ff23a6e6100000000000000000000000000000000000000000000000000000000808252906001600160a01b0387169063f23a6e6190612b749033908b908a908a908a908a906004016158e1565b6020604051808303815f875af1158015612b90573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bb491906158b3565b7fffffffff000000000000000000000000000000000000000000000000000000001614612c0d576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6001600160a01b0383165f818152602081815260408083208684528252808320805486019055805186815291820185905233917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0383163b1561297a576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082523360048301525f60248301819052604483018590526064830184905260a0608484015260a4830152906001600160a01b0385169063f23a6e619060c4016020604051808303815f875af1158015612d03573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d2791906158b3565b7fffffffff00000000000000000000000000000000000000000000000000000000161461297a576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612d8a815f614020565b5f03612dc5576040517f93db0263000000000000000000000000000000000000000000000000000000008152600160048201526024016106fe565b77fffffffff200fffffffff200fffffffff200fffffffff200604082901c165f5b600481101561297a57612df98382614020565b5f03612e43576040603082020183901c1561297a576040517f93db0263000000000000000000000000000000000000000000000000000000008152600160048201526024016106fe565b5f612e4d84613135565b9050600182015b81811015612ebc578060300284901c65ffffffffffff168360300285901c65ffffffffffff1603612eb4576040517f93db0263000000000000000000000000000000000000000000000000000000008152600660048201526024016106fe565b600101612e54565b50612ec78483614032565b60020b5f03612f05576040517f93db0263000000000000000000000000000000000000000000000000000000008152600560048201526024016106fe565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618612f358584603002604c011c90565b60020b1480612f575750620d89e8612f528584603002604c011c90565b60020b145b15612f90576040517f93db02630000000000000000000000000000000000000000000000000000000081526004818101526024016106fe565b5f612f9b8584614045565b905082811461312b5782612faf8683614045565b14612fe9576040517f93db0263000000000000000000000000000000000000000000000000000000008152600360048201526024016106fe565b612ff38584614057565b612ffd8683614057565b14158061301c575061300f8584614020565b6130198683614020565b14155b15613056576040517f93db0263000000000000000000000000000000000000000000000000000000008152600360048201526024016106fe565b5f6130618685614069565b90505f61306e8784614069565b90505f61307b8887613667565b90505f6130888986613667565b9050828414801561309857508082145b156130d1576040517f93db02630000000000000000000000000000000000000000000000000000000081526004818101526024016106fe565b82841415806130e05750836001145b80156130ec5750808214155b15613126576040517f93db0263000000000000000000000000000000000000000000000000000000008152600560048201526024016106fe565b505050505b5050600101612de6565b5f7afe0000000000fe0000000000fe0000000000fe000000000000000082166801000000000000000081101561316d57505f92915050565b6e01000000000000000000000000000081101561318d5750600192915050565b740100000000000000000000000000000000000000008110156131b35750600292915050565b7a0100000000000000000000000000000000000000000000000000008110156131df5750600392915050565b50600492915050565b5f80806131f5868661407b565b90925090505f6132058787614020565b613221906fffffffffffffffffffffffffffffffff871661592a565b905061322d8787614057565b5f036132485761323e8383836140b2565b9350505050612815565b61323e83838361417a565b5f5f6132676132628460e81c90565b613b13565b90505f6132776132628560d01c90565b90506001600160a01b0382166132b86060866fffffffffffffffffffffffffffffffff16901b8484036001600160a01b0316846001600160a01b0316613a37565b816132c5576132c56154f3565b04949350505050565b5f5f6132dd6132628460e81c90565b90505f6132ed6132628560d01c90565b9050612873846fffffffffffffffffffffffffffffffff168383036001600160a01b03166141be565b5f808087336133258989613667565b61332f8860e81c90565b6133398960d01c90565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606096871b811660208301529490951b9093166034850152604884019190915260e890811b60688401521b606b820152606e01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012090505f806133d48989614069565b5f848152600460205260408120549192508190608082901c9050896fffffffffffffffffffffffffffffffff81165f0361343a576040517f1007454800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845f036134655761344b8184615941565b955089156134605761345d8183615969565b91505b6134da565b806fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff1610156134c3576040517f4323a55500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8083039550896134da576134d78183615941565b91505b61351a6fffffffffffffffffffffffffffffffff87168360801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b5f888152600460205260409020555050821590506135415761353c888c61423f565b61354b565b61354b888c614328565b95506fffffffffffffffffffffffffffffffff81161561357657613573888c83878a8761458e565b94505b6135838b848a600161475c565b5f94855260076020526040909420939093555092989197509095505050505050565b5f5f6135b18360801d90565b600f0b6135be8560801d90565b600f0b019050805f84600f0b86600f0b0190505f8190508383600f0b1415806135ea57508181600f0b14155b15613621576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61245c837fffffffffffffffffffffffffffffffff0000000000000000000000000000000087168388016fffffffffffffffffffffffffffffffff16015b9060801b0190565b5f60026049603084020184901c5b069392505050565b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000821691016fffffffffffffffffffffffffffffffff160190565b5f80806060858583608082901d905060405180604001604052806040518060600160405280866001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015613719573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061373d91906154d8565b6001600160a01b03168152602001866001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613787573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137ab91906154d8565b6001600160a01b03168152602001866001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137f5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138199190615991565b62ffffff169052815233602091820152604051613872929101815180516001600160a01b03908116835260208083015182168185015260409283015162ffffff1692840192909252920151909116606082015260800190565b604051602081830303815290604052935081600f0b5f14158015613899575080600f0b5f14155b1561392d575f836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156138db573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138ff9190615712565b50505050505090505f61391583600f0b836148c7565b84600f0b0390505f81129750805f039650505061395d565b81600f0b5f1461394c575f82600f0b129550815f03600f0b945061395d565b5f81600f0b139550805f03600f0b94505b845f03613972575f965050505050505061067b565b5f5f846001600160a01b031663128acb08338a8a8c6139a55773fffd8963efd1fc6a506488495d951d5263988d256139ac565b6401000276a45b8b6040518663ffffffff1660e01b81526004016139cd9594939291906159ac565b60408051808303815f875af11580156139e8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a0c91906159ea565b91509150613a28613a1c8261497f565b61365f611ca98561497f565b9b9a5050505050505050505050565b5f80805f19858709858702925082811083820303915050805f03613a6b575f8411613a60575f5ffd5b508290049050612815565b808411613a76575f5ffd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b806fffffffffffffffffffffffffffffffff81168114613b0e57506fffffffffffffffffffffffffffffffff5b919050565b5f5f5f8360020b12613b28578260020b613b2f565b8260020b5f035b9050620d89e8811115613b6e576040517fce8ef7fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816001165f03613b9057700100000000000000000000000000000000613ba2565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615613bd6576ffff97272373d413259a46990580e213a0260801c5b6004821615613bf5576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613c14576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613c33576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613c52576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613c71576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613c90576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613cb0576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613cd0576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613cf0576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613d10576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613d30576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613d50576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613d70576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613d90576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613db1576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613dd1576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615613df0576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615613e0d576b048a170391f7dc42444e8fa20260801c5b5f8460020b1315613e2c57805f1981613e2857613e286154f3565b0490505b640100000000810615613e40576001613e42565b5f5b60ff16602082901c0192505050919050565b5f80805f19868809868802925082811083820303915050805f03613e9b575f8511613e7d575f5ffd5b8482049250613e928360018660020a036149bd565b92505050612873565b80846101000386901c11613eb95760018460020a0392505050612873565b5f858789095f87810388169788900497600260038a028118808b02820302808b02820302808b02820302808b02820302808b02820302808b0290910302918190038190046001018684119095039490940291909403929092049190911791909102915050949350505050565b5f5f613fb2847f0706060506020504060203020504030106050205030304010505030400000000601f6f8421084210842108cc6318c6db6d54be6fffffffffffffffffffffffffffffffff841160071b84811c67ffffffffffffffff1060061b1784811c63ffffffff1060051b1784811c61ffff1060041b1784811c60ff1060031b1793841c1c161a1790565b607f8190039490941b9360800360401b9050603f838103905b81811115613ff657600290950a607f81901c60ff9190911c90811c9590811b909203915f1901613fcb565b50700100000000000000000000000000000000693627a301d786ca58a52f83020495945050505050565b5f60806041603084020184901c613675565b5f6110006064603084020184901c613675565b5f6004604a603084020184901c613675565b5f60026040603084020184901c613675565b5f60026048603084020184901c613675565b5f806140a761408f8585603002604c011c90565b6140998686614032565b603087901c61ffff166149cb565b909590945092505050565b5f5f6140bd85613b13565b90505f6140c985613b13565b90506141708686614109614104886140f3876001600160a01b0316896001600160a01b03166141be565b8888036001600160a01b0316613a37565b6149e9565b7fffffff000000000000000000000000000000000000000000000000000000000060e884901b167cffffff000000000000000000000000000000000000000000000000000060d084901b16016fffffffffffffffffffffffffffffffff8216019392505050565b9695505050505050565b5f5f61418585613b13565b90505f61419185613b13565b90506141708686614109614104886c010000000000000000000000008888036001600160a01b0316613a37565b5f80805f19848609848602925082811083820303915050805f036141e7575060601c905061067b565b806c01000000000000000000000000116141ff575f5ffd5b5f6c0100000000000000000000000085870980840360601c9310909103740100000000000000000000000000000000000000000291909117949350505050565b5f5f5f836001600160a01b031663a34123a761425b8760e81c90565b6142658860d01c90565b886040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600293840b60048201529190920b60248201526fffffffffffffffffffffffffffffffff909116604482015260640160408051808303815f875af11580156142dc573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061430091906159ea565b9150915061431f815f0361365f845f035f61367d90919063ffffffff16565b95945050505050565b5f5f60405180604001604052806040518060600160405280866001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561437c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143a091906154d8565b6001600160a01b03168152602001866001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156143ea573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061440e91906154d8565b6001600160a01b03168152602001866001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa158015614458573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061447c9190615991565b62ffffff1690528152336020918201526040516144d5929101815180516001600160a01b03908116835260208083015182168185015260409283015162ffffff1692840192909252920151909116606082015260800190565b60405160208183030381529060405290505f5f846001600160a01b0316633c8a7d8d306145028960e81c90565b61450c8a60d01c90565b8a886040518663ffffffff1660e01b815260040161452e959493929190615a0c565b60408051808303815f875af1158015614549573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061456d91906159ea565b9092509050614170816fffffffffffffffffffffffffffffffff841661365f565b5f83815260076020526040812054859082906145b6906145b08a858d8661475c565b90612357565b9050836001036145cd576145ca8186614a35565b90505b8015614750575f5f896001600160a01b0316634f1eb3d8336145ef8e60e81c90565b6145f98f60d01c90565b876146048960801c90565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526001600160a01b039095166004860152600293840b60248601529190920b60448401526fffffffffffffffffffffffffffffffff918216606484015216608482015260a40160408051808303815f875af1158015614690573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906146b49190615a57565b915091505f5f5f6146c28a90565b600f0b126146d057836146d4565b8884015b91505f6146e18a60801d90565b600f0b126146ef57826146fc565b6146f98960801d90565b83015b905061473e6fffffffffffffffffffffffffffffffff83168260801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b965061474b8a8c89614aae565b505050505b50509695505050505050565b5f5f5f866001600160a01b031663514ea4bf306147798860e81c90565b6147838960d01c90565b60405160609390931b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602084015260e891821b6034840152901b6037820152603a01604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016147fb91815260200190565b60a060405180830381865afa158015614816573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061483a9190615a84565b50509250925050836148895761488461486582886fffffffffffffffffffffffffffffffff16614b08565b61365f611ca9858a6fffffffffffffffffffffffffffffffff16614b08565b61245c565b61245c6148a882886fffffffffffffffffffffffffffffffff16614b8d565b61365f611ca9858a6fffffffffffffffffffffffffffffffff16614b8d565b5f6fffffffffffffffffffffffffffffffff6001600160a01b0383161015614945575f61492a6149256148f986614bcb565b78010000000000000000000000000000000000000000000000006002876001600160a01b03160a613a37565b614bdf565b90505f8412614939578061493d565b805f035b91505061067b565b5f61492a61492561495586614bcb565b70010000000000000000000000000000000061497a6001600160a01b03881680614c3a565b613a37565b80600f81900b8114613b0e576040517fb668004500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8183106128135781612815565b5f5f5f5f6149d98686614cb7565b9088039897019695505050505050565b806fffffffffffffffffffffffffffffffff81168114613b0e576040517fb668004500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f614a418360801d90565b600f0b614a4e8560801d90565b600f0b039050805f84600f0b86600f0b0390505f8190508383600f0b1415806135ea57508181600f0b14613621576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f614aba8484612467565b5f87815260056020908152604080832054600690925290912054929450909250614ae6918490846125f9565b5f96875260056020908152604080892060069092529097205590945550505050565b5f80805f19848609848602925082811083820303915050805f03614b31575060801c905061067b565b8070010000000000000000000000000000000011614b4d575f5ffd5b5f70010000000000000000000000000000000085870980840360801c93109091037001000000000000000000000000000000000291909117949350505050565b5f614b988383614b08565b90505f700100000000000000000000000000000000838509111561067b575f198110614bc2575f5ffd5b60010192915050565b5f5f8213614bdb57815f0361067b565b5090565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115614bdb576040517fb668004500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80805f19848609848602925082811083820303915050805f03614c63575060401c905061067b565b806801000000000000000011614c77575f5ffd5b5f6801000000000000000085870980840360401c931090910378010000000000000000000000000000000000000000000000000291909117949350505050565b5f806002614cc58486615ad4565b614ccf9190615af3565b614cee614cdc8587615b47565b62ffffff166002808204910615150190565b915091505b9250929050565b60405180608001604052806004906020820280368337509192915050565b6001600160a01b0381168114614d2c575f5ffd5b50565b5f5f60408385031215614d40575f5ffd5b8235614d4b81614d18565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114614d2c575f5ffd5b5f60208284031215614d96575f5ffd5b813561281581614d59565b6fffffffffffffffffffffffffffffffff81168114614d2c575f5ffd5b8060020b8114614d2c575f5ffd5b5f5f5f5f60808587031215614ddf575f5ffd5b843593506020850135614df181614da1565b92506040850135614e0181614dbe565b91506060850135614e1181614dbe565b939692955090935050565b60a0810181845f5b6004811015614e43578151835260209283019290910190600101614e24565b5050508260808301529392505050565b5f5f83601f840112614e63575f5ffd5b50813567ffffffffffffffff811115614e7a575f5ffd5b6020830191508360208260051b8501011115614cf3575f5ffd5b5f5f83601f840112614ea4575f5ffd5b50813567ffffffffffffffff811115614ebb575f5ffd5b602083019150836020828501011115614cf3575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215614ee9575f5ffd5b8835614ef481614d18565b97506020890135614f0481614d18565b9650604089013567ffffffffffffffff811115614f1f575f5ffd5b614f2b8b828c01614e53565b909750955050606089013567ffffffffffffffff811115614f4a575f5ffd5b614f568b828c01614e53565b909550935050608089013567ffffffffffffffff811115614f75575f5ffd5b614f818b828c01614e94565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f5f60e0888a031215614fab575f5ffd5b8735614fb681614d18565b96506020880135614fc681614d18565b9550604088013594506060880135614fdd81614dbe565b93506080880135614fed81614dbe565b925060a0880135614ffd81614dbe565b96999598509396929591949193505060c09091013590565b5f60208284031215615025575f5ffd5b813567ffffffffffffffff81168114612815575f5ffd5b5f5f5f5f6040858703121561504f575f5ffd5b843567ffffffffffffffff811115615065575f5ffd5b61507187828801614e53565b909550935050602085013567ffffffffffffffff811115615090575f5ffd5b61509c87828801614e53565b95989497509550505050565b602080825282518282018190525f918401906040840190835b818110156150df5783518352602093840193909201916001016150c1565b509095945050505050565b8015158114614d2c575f5ffd5b5f5f60408385031215615108575f5ffd5b823561511381614d18565b91506020830135615123816150ea565b809150509250929050565b5f5f5f5f5f60a08688031215615142575f5ffd5b853561514d81614d18565b9450602086013561515d81614d18565b935060408601359250606086013561517481614dbe565b9150608086013561518481614dbe565b809150509295509295909350565b5f5f602083850312156151a3575f5ffd5b823567ffffffffffffffff8111156151b9575f5ffd5b6151c585828601614e53565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015615292577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261527d8583516151d1565b94506020938401939190910190600101615243565b50929695505050505050565b62ffffff81168114614d2c575f5ffd5b5f5f5f606084860312156152c0575f5ffd5b83356152cb81614d18565b925060208401356152db81614d18565b915060408401356152eb8161529e565b809150509250925092565b5f60208284031215615306575f5ffd5b813561281581614d18565b5f5f5f5f60608587031215615324575f5ffd5b8435935060208501359250604085013567ffffffffffffffff811115615348575f5ffd5b61509c87828801614e94565b5f5f60408385031215615365575f5ffd5b823561537081614d18565b9150602083013561512381614d18565b5f5f5f5f5f5f60a08789031215615395575f5ffd5b86356153a081614d18565b955060208701356153b081614d18565b94506040870135935060608701359250608087013567ffffffffffffffff8111156153d9575f5ffd5b6153e589828a01614e94565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215615434575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261549b575f5ffd5b83018035915067ffffffffffffffff8211156154b5575f5ffd5b602001915036819003821315614cf3575f5ffd5b818382375f9101908152919050565b5f602082840312156154e8575f5ffd5b815161281581614d18565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f60208284031215615530575f5ffd5b815161281581614dbe565b6040516060810167ffffffffffffffff81118282101715615583577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405290565b5f81830360808112801561559b575f5ffd5b506040805190810167ffffffffffffffff811182821017156155e4577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405260608212156155f4575f5ffd5b6155fc61553b565b9150833561560981614d18565b8252602084013561561981614d18565b6020830152604084013561562c8161529e565b604083015290815260608301359061564382614d18565b60208101919091529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561067b5761067b615652565b5f8260020b806156a4576156a46154f3565b808360020b0791505092915050565b600f82810b9082900b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081126f7fffffffffffffffffffffffffffffff8213171561067b5761067b615652565b805161ffff81168114613b0e575f5ffd5b5f5f5f5f5f5f5f60e0888a031215615728575f5ffd5b875161573381614d18565b602089015190975061574481614dbe565b955061575260408901615701565b945061576060608901615701565b935061576e60808901615701565b925060a088015160ff81168114615783575f5ffd5b60c0890151909250615794816150ea565b8091505092959891949750929550565b8183525f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156157d4575f5ffd5b8260051b80836020870137939093016020019392505050565b604081525f6158006040830186886157a4565b828103602084015261245c8185876157a4565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03891681526001600160a01b038816602082015260a060408201525f61588b60a08301888a6157a4565b828103606084015261589e8187896157a4565b90508281036080840152613a28818587615813565b5f602082840312156158c3575f5ffd5b815161281581614d59565b8082018082111561067b5761067b615652565b6001600160a01b03871681526001600160a01b038616602082015284604082015283606082015260a060808201525f61591e60a083018486615813565b98975050505050505050565b808202811582820484141761067b5761067b615652565b6fffffffffffffffffffffffffffffffff818116838216019081111561067b5761067b615652565b6fffffffffffffffffffffffffffffffff828116828216039081111561067b5761067b615652565b5f602082840312156159a1575f5ffd5b81516128158161529e565b6001600160a01b038616815284151560208201528360408201526001600160a01b038316606082015260a060808201525f61245c60a08301846151d1565b5f5f604083850312156159fb575f5ffd5b505080516020909101519092909150565b6001600160a01b03861681528460020b60208201528360020b60408201526fffffffffffffffffffffffffffffffff8316606082015260a060808201525f61245c60a08301846151d1565b5f5f60408385031215615a68575f5ffd5b8251615a7381614da1565b602084015190925061512381614da1565b5f5f5f5f5f60a08688031215615a98575f5ffd5b8551615aa381614da1565b6020870151604088015160608901519297509095509350615ac381614da1565b608087015190925061518481614da1565b5f8260020b8260020b028060020b9150808214610e1557610e15615652565b5f8160020b8360020b80615b0957615b096154f3565b5f1981147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000083141615615b3e57615b3e615652565b90059392505050565b62ffffff8181168382160290811690818114610e1557610e1561565256fea2646970667358221220ddc6bec9a8bcc00a26d9cf7a671c9431cd2e9be7011f1029dd81daa07104b1d764736f6c634300081c003300000000000000000000000033128a8fc17869897dce68ed026d694621f6fdfd000000000000000000000000000000000000000000000071d75ab9b92050000000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000001d7347a5f52985844281889e4157a12a84209c4900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084daa4c697000000000000000000000000532f27101965dd16442e59d40670faf5ebb142e40000000000000000000000004200000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041e0c04e02594dd62d9cacad81095469f735096da97dd2d6b4d9168c307d7aaab254eeaa22820951a7b559bf04fb32d1ebb4632e374712218cfbfc8e664fd462331c00000000000000000000000000000000000000000000000000000000000000) (0x0000000000000000000000000000000000000000000000000000000000000001)