0x608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063b4b5ea571161008c578063dd62ed3e11610066578063dd62ed3e146102f6578063e7a324dc14610309578063f1127ed81461031157610177565b8063b4b5ea57146102bd578063c3cda520146102d0578063d505accf146102e357610177565b80637ecebe00116100bd5780637ecebe001461028f57806395d89b41146102a2578063a9059cbb146102aa57610177565b806370a082311461025c578063782d6fe11461026f57610177565b806330adf81f1161012f578063587cde1e11610114578063587cde1e146102075780635c19a95c146102275780636fcfff451461023c57610177565b806330adf81f146101ea578063313ce567146101f257610177565b806318160ddd1161016057806318160ddd146101ba57806320606b70146101cf57806323b872dd146101d757610177565b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610332565b6040516101919190611f3e565b60405180910390f35b6101ad6101a83660046117de565b61036b565b6040516101919190611e3a565b6101c2610445565b6040516101919190611e48565b6101c2610454565b6101ad6101e53660046116f5565b61046b565b6101c26105d7565b6101fa6105e3565b6040516101919190612008565b61021a610215366004611695565b6105e8565b6040516101919190611e2c565b61023a610235366004611695565b610603565b005b61024f61024a366004611695565b610610565b6040516101919190611fdf565b6101c261026a366004611695565b610628565b61028261027d3660046117de565b610651565b6040516101919190612024565b6101c261029d366004611695565b61087a565b61018461088c565b6101ad6102b83660046117de565b6108c5565b6102826102cb366004611695565b610901565b61023a6102de36600461180e565b610977565b61023a6102f1366004611742565b610b94565b6101c26103043660046116bb565b610ebc565b6101c2610ef3565b61032461031f366004611895565b610eff565b604051610191929190611fed565b6040518060400160405280601c81526020017f5368617265645374616b6520476f7665726e616e636520546f6b656e0000000081525081565b60008060001983141561038157506000196103a6565b6103a38360405180606001604052806024815260200161215060249139610f3a565b90505b336000818152602081815260408083206001600160a01b03891680855292529182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610431908590612016565b60405180910390a360019150505b92915050565b6a084595161401484a00000081565b60405161046090611e16565b604051809103902081565b6001600160a01b0383166000908152602081815260408083203380855290835281842054825160608101909352602480845291936bffffffffffffffffffffffff9091169285926104c6928892919061215090830139610f3a565b9050866001600160a01b0316836001600160a01b0316141580156104f857506bffffffffffffffffffffffff82811614155b156105bd57600061052283836040518060600160405280603c815260200161227d603c9139610f72565b6001600160a01b03898116600081815260208181526040808320948a16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff86161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105b3908590612016565b60405180910390a3505b6105c8878783610fbb565b600193505050505b9392505050565b60405161046090611e0b565b601281565b6002602052600090815260409020546001600160a01b031681565b61060d33826111a5565b50565b60046020526000908152604090205463ffffffff1681565b6001600160a01b03166000908152600160205260409020546bffffffffffffffffffffffff1690565b600043821061067b5760405162461bcd60e51b815260040161067290611f5f565b60405180910390fd5b6001600160a01b03831660009081526004602052604090205463ffffffff16806106a957600091505061043f565b6001600160a01b038416600090815260036020908152604080832063ffffffff60001986018116855292529091205416831061072b576001600160a01b03841660009081526003602090815260408083206000199490940163ffffffff168352929052205464010000000090046bffffffffffffffffffffffff16905061043f565b6001600160a01b038416600090815260036020908152604080832083805290915290205463ffffffff1683101561076657600091505061043f565b600060001982015b8163ffffffff168163ffffffff16111561082f57600282820363ffffffff16048103610798611652565b506001600160a01b038716600090815260036020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046bffffffffffffffffffffffff16918101919091529087141561080a5760200151945061043f9350505050565b805163ffffffff1687111561082157819350610828565b6001820392505b505061076e565b506001600160a01b038516600090815260036020908152604080832063ffffffff909416835292905220546bffffffffffffffffffffffff6401000000009091041691505092915050565b60056020526000908152604090205481565b6040518060400160405280600381526020017f534754000000000000000000000000000000000000000000000000000000000081525081565b6000806108ea836040518060600160405280602581526020016121a960259139610f3a565b90506108f7338583610fbb565b5060019392505050565b6001600160a01b03811660009081526004602052604081205463ffffffff168061092c5760006105d0565b6001600160a01b0383166000908152600360209081526040808320600019850163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff169392505050565b600060405161098590611e16565b60408051918290038220828201909152601c82527f5368617265645374616b6520476f7665726e616e636520546f6b656e000000006020909201919091527f1d29d98686b9ace8e3c58b98aa5282d12b66c1766bb71d0a2270049fdd640f576109ec61124c565b30604051602001610a009493929190611eee565b6040516020818303038152906040528051906020012090506000604051610a2690611e21565b604051908190038120610a41918a908a908a90602001611eb0565b60405160208183030381529060405280519060200120905060008282604051602001610a6e929190611dda565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610aab9493929190611f23565b6020604051602081039080840390855afa158015610acd573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116610b1e5760405162461bcd60e51b815260040161067290611f9f565b6001600160a01b03811660009081526005602052604090208054600181019091558914610b5d5760405162461bcd60e51b815260040161067290611fbf565b87421115610b7d5760405162461bcd60e51b815260040161067290611faf565b610b87818b6111a5565b505050505b505050505050565b6000600019861415610ba95750600019610bce565b610bcb8660405180606001604052806023815260200161212d60239139610f3a565b90505b6000604051610bdc90611e16565b60408051918290038220828201909152601c82527f5368617265645374616b6520476f7665726e616e636520546f6b656e000000006020909201919091527f1d29d98686b9ace8e3c58b98aa5282d12b66c1766bb71d0a2270049fdd640f57610c4361124c565b30604051602001610c579493929190611eee565b6040516020818303038152906040528051906020012090506000604051610c7d90611e0b565b604080519182900382206001600160a01b038d16600090815260056020908152929020805460018101909155610cbf9391928e928e928e9290918e9101611e56565b60405160208183030381529060405280519060200120905060008282604051602001610cec929190611dda565b604051602081830303815290604052805190602001209050600060018289898960405160008152602001604052604051610d299493929190611f23565b6020604051602081039080840390855afa158015610d4b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116610d9c5760405162461bcd60e51b815260040161067290611f8f565b8b6001600160a01b0316816001600160a01b031614610dcd5760405162461bcd60e51b815260040161067290611f6f565b88421115610ded5760405162461bcd60e51b815260040161067290611f4f565b846000808e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a6001600160a01b03168c6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051610ea69190612016565b60405180910390a3505050505050505050505050565b6001600160a01b039182166000908152602081815260408083209390941682529190915220546bffffffffffffffffffffffff1690565b60405161046090611e21565b600360209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b6000816c010000000000000000000000008410610f6a5760405162461bcd60e51b81526004016106729190611f3e565b509192915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290610fb35760405162461bcd60e51b81526004016106729190611f3e565b505050900390565b6001600160a01b038316610fe15760405162461bcd60e51b815260040161067290611fcf565b6001600160a01b0382166110075760405162461bcd60e51b815260040161067290611f7f565b6001600160a01b038316600090815260016020908152604091829020548251606081019093526035808452611057936bffffffffffffffffffffffff909216928592919061217490830139610f72565b6001600160a01b03848116600090815260016020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff96871617905592861682529082902054825160608101909352602f8084526110dc949190911692859290919061224e90830139611250565b6001600160a01b038381166000818152600160205260409081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff95909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611166908590612016565b60405180910390a36001600160a01b038084166000908152600260205260408082205485841683529120546111a092918216911683611291565b505050565b6001600160a01b03808316600081815260026020818152604080842080546001845282862054949093528787167fffffffffffffffffffffffff000000000000000000000000000000000000000084168117909155905191909516946bffffffffffffffffffffffff9092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611246828483611291565b50505050565b4690565b6000838301826bffffffffffffffffffffffff80871690831610156112885760405162461bcd60e51b81526004016106729190611f3e565b50949350505050565b816001600160a01b0316836001600160a01b0316141580156112c157506000816bffffffffffffffffffffffff16115b156111a0576001600160a01b0383161561137f576001600160a01b03831660009081526004602052604081205463ffffffff169081611301576000611346565b6001600160a01b0385166000908152600360209081526040808320600019860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b9050600061136d82856040518060600160405280602781526020016121ce60279139610f72565b905061137b86848484611430565b5050505b6001600160a01b038216156111a0576001600160a01b03821660009081526004602052604081205463ffffffff1690816113ba5760006113ff565b6001600160a01b0384166000908152600360209081526040808320600019860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611426828560405180606001604052806026815260200161222860269139611250565b9050610b8c858484845b6000611454436040518060600160405280603381526020016121f56033913961162a565b905060008463ffffffff1611801561149d57506001600160a01b038516600090815260036020908152604080832063ffffffff6000198901811685529252909120548282169116145b15611511576001600160a01b0385166000908152600360209081526040808320600019880163ffffffff168452909152902080547fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff166401000000006bffffffffffffffffffffffff8516021790556115e0565b60408051808201825263ffffffff80841682526bffffffffffffffffffffffff80861660208085019182526001600160a01b038b166000818152600383528781208c871682528352878120965187549451909516640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff9587167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000958616179590951694909417909555938252600490935292909220805460018801909316929091169190911790555b846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405161161b929190612032565b60405180910390a25050505050565b6000816401000000008410610f6a5760405162461bcd60e51b81526004016106729190611f3e565b604080518082019091526000808252602082015290565b803561043f816120fd565b803561043f81612111565b803561043f8161211a565b803561043f81612123565b6000602082840312156116a757600080fd5b60006116b38484611669565b949350505050565b600080604083850312156116ce57600080fd5b60006116da8585611669565b92505060206116eb85828601611669565b9150509250929050565b60008060006060848603121561170a57600080fd5b60006117168686611669565b935050602061172786828701611669565b925050604061173886828701611674565b9150509250925092565b600080600080600080600060e0888a03121561175d57600080fd5b60006117698a8a611669565b975050602061177a8a828b01611669565b965050604061178b8a828b01611674565b955050606061179c8a828b01611674565b94505060806117ad8a828b0161168a565b93505060a06117be8a828b01611674565b92505060c06117cf8a828b01611674565b91505092959891949750929550565b600080604083850312156117f157600080fd5b60006117fd8585611669565b92505060206116eb85828601611674565b60008060008060008060c0878903121561182757600080fd5b60006118338989611669565b965050602061184489828a01611674565b955050604061185589828a01611674565b945050606061186689828a0161168a565b935050608061187789828a01611674565b92505060a061188889828a01611674565b9150509295509295509295565b600080604083850312156118a857600080fd5b60006118b48585611669565b92505060206116eb8582860161167f565b6118ce8161205f565b82525050565b6118ce8161206a565b6118ce8161206f565b6118ce6118f28261206f565b61206f565b60006119028261204d565b61190c8185612051565b935061191c8185602086016120a9565b611925816120d5565b9093019392505050565b600061193c601e83612051565b7f5347543a3a7065726d69743a207369676e617475726520657870697265640000815260200192915050565b6000611975602683612051565b7f5347543a3a6765745072696f72566f7465733a206e6f7420796574206465746581527f726d696e65640000000000000000000000000000000000000000000000000000602082015260400192915050565b60006119d460028361205a565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000611a0d601983612051565b7f5347543a3a7065726d69743a20756e617574686f72697a656400000000000000815260200192915050565b6000611a4660528361205a565b7f5065726d69742861646472657373206f776e65722c616464726573732073706581527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208201527f2c75696e7432353620646561646c696e65290000000000000000000000000000604082015260520192915050565b6000611acb60438361205a565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b6000611b50603983612051565b7f5347543a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e7366657220746f20746865207a65726f206164647265737300000000000000602082015260400192915050565b6000611baf601e83612051565b7f5347543a3a7065726d69743a20696e76616c6964207369676e61747572650000815260200192915050565b6000611be8602583612051565b7f5347543a3a64656c656761746542795369673a20696e76616c6964207369676e81527f6174757265000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611c47602583612051565b7f5347543a3a64656c656761746542795369673a207369676e617475726520657881527f7069726564000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611ca6602183612051565b7f5347543a3a64656c656761746542795369673a20696e76616c6964206e6f6e6381527f6500000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611d05603b83612051565b7f5347543a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e736665722066726f6d20746865207a65726f20616464726573730000000000602082015260400192915050565b6000611d64603a8361205a565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b6118ce8161207e565b6118ce81612087565b6118ce8161209e565b6118ce8161208d565b6000611de5826119c7565b9150611df182856118e6565b602082019150611e0182846118e6565b5060200192915050565b600061043f82611a39565b600061043f82611abe565b600061043f82611d57565b6020810161043f82846118c5565b6020810161043f82846118d4565b6020810161043f82846118dd565b60c08101611e6482896118dd565b611e7160208301886118c5565b611e7e60408301876118c5565b611e8b60608301866118dd565b611e9860808301856118dd565b611ea560a08301846118dd565b979650505050505050565b60808101611ebe82876118dd565b611ecb60208301866118c5565b611ed860408301856118dd565b611ee560608301846118dd565b95945050505050565b60808101611efc82876118dd565b611f0960208301866118dd565b611f1660408301856118dd565b611ee560608301846118c5565b60808101611f3182876118dd565b611ecb6020830186611dbf565b602080825281016105d081846118f7565b6020808252810161043f8161192f565b6020808252810161043f81611968565b6020808252810161043f81611a00565b6020808252810161043f81611b43565b6020808252810161043f81611ba2565b6020808252810161043f81611bdb565b6020808252810161043f81611c3a565b6020808252810161043f81611c99565b6020808252810161043f81611cf8565b6020810161043f8284611db6565b60408101611ffb8285611db6565b6105d06020830184611dd1565b6020810161043f8284611dbf565b6020810161043f8284611dc8565b6020810161043f8284611dd1565b604081016120408285611dc8565b6105d06020830184611dc8565b5190565b90815260200190565b919050565b600061043f82612072565b151590565b90565b6001600160a01b031690565b63ffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b600061043f8261208d565b60005b838110156120c45781810151838201526020016120ac565b838111156112465750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6121068161205f565b811461060d57600080fd5b6121068161206f565b6121068161207e565b6121068161208756fe5347543a3a7065726d69743a20616d6f756e74206578636565647320393620626974735347543a3a617070726f76653a20616d6f756e74206578636565647320393620626974735347543a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e63655347543a3a7472616e736665723a20616d6f756e74206578636565647320393620626974735347543a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f77735347543a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974735347543a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f77735347543a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f77735347543a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365a365627a7a723158205fe3190f9025ab282544b7f1c6ca45ceb7b262ec6ccc497294250f05f30256256c6578706572696d656e74616cf564736f6c63430005110040
0x60806040523480156200001157600080fd5b5060405162002440380380620024408339810160408190526200003491620000bc565b6001600160a01b03811660008181526001602052604080822080546001600160601b0319166a084595161401484a00000090811790915590517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200009a91620000f6565b60405180910390a35062000135565b8051620000b6816200011b565b92915050565b600060208284031215620000cf57600080fd5b6000620000dd8484620000a9565b949350505050565b620000f08162000118565b82525050565b60208101620000b68284620000e5565b60006001600160a01b038216620000b6565b90565b620001268162000106565b81146200013257600080fd5b50565b6122fb80620001456000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063b4b5ea571161008c578063dd62ed3e11610066578063dd62ed3e146102f6578063e7a324dc14610309578063f1127ed81461031157610177565b8063b4b5ea57146102bd578063c3cda520146102d0578063d505accf146102e357610177565b80637ecebe00116100bd5780637ecebe001461028f57806395d89b41146102a2578063a9059cbb146102aa57610177565b806370a082311461025c578063782d6fe11461026f57610177565b806330adf81f1161012f578063587cde1e11610114578063587cde1e146102075780635c19a95c146102275780636fcfff451461023c57610177565b806330adf81f146101ea578063313ce567146101f257610177565b806318160ddd1161016057806318160ddd146101ba57806320606b70146101cf57806323b872dd146101d757610177565b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610332565b6040516101919190611f3e565b60405180910390f35b6101ad6101a83660046117de565b61036b565b6040516101919190611e3a565b6101c2610445565b6040516101919190611e48565b6101c2610454565b6101ad6101e53660046116f5565b61046b565b6101c26105d7565b6101fa6105e3565b6040516101919190612008565b61021a610215366004611695565b6105e8565b6040516101919190611e2c565b61023a610235366004611695565b610603565b005b61024f61024a366004611695565b610610565b6040516101919190611fdf565b6101c261026a366004611695565b610628565b61028261027d3660046117de565b610651565b6040516101919190612024565b6101c261029d366004611695565b61087a565b61018461088c565b6101ad6102b83660046117de565b6108c5565b6102826102cb366004611695565b610901565b61023a6102de36600461180e565b610977565b61023a6102f1366004611742565b610b94565b6101c26103043660046116bb565b610ebc565b6101c2610ef3565b61032461031f366004611895565b610eff565b604051610191929190611fed565b6040518060400160405280601c81526020017f5368617265645374616b6520476f7665726e616e636520546f6b656e0000000081525081565b60008060001983141561038157506000196103a6565b6103a38360405180606001604052806024815260200161215060249139610f3a565b90505b336000818152602081815260408083206001600160a01b03891680855292529182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610431908590612016565b60405180910390a360019150505b92915050565b6a084595161401484a00000081565b60405161046090611e16565b604051809103902081565b6001600160a01b0383166000908152602081815260408083203380855290835281842054825160608101909352602480845291936bffffffffffffffffffffffff9091169285926104c6928892919061215090830139610f3a565b9050866001600160a01b0316836001600160a01b0316141580156104f857506bffffffffffffffffffffffff82811614155b156105bd57600061052283836040518060600160405280603c815260200161227d603c9139610f72565b6001600160a01b03898116600081815260208181526040808320948a16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff86161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105b3908590612016565b60405180910390a3505b6105c8878783610fbb565b600193505050505b9392505050565b60405161046090611e0b565b601281565b6002602052600090815260409020546001600160a01b031681565b61060d33826111a5565b50565b60046020526000908152604090205463ffffffff1681565b6001600160a01b03166000908152600160205260409020546bffffffffffffffffffffffff1690565b600043821061067b5760405162461bcd60e51b815260040161067290611f5f565b60405180910390fd5b6001600160a01b03831660009081526004602052604090205463ffffffff16806106a957600091505061043f565b6001600160a01b038416600090815260036020908152604080832063ffffffff60001986018116855292529091205416831061072b576001600160a01b03841660009081526003602090815260408083206000199490940163ffffffff168352929052205464010000000090046bffffffffffffffffffffffff16905061043f565b6001600160a01b038416600090815260036020908152604080832083805290915290205463ffffffff1683101561076657600091505061043f565b600060001982015b8163ffffffff168163ffffffff16111561082f57600282820363ffffffff16048103610798611652565b506001600160a01b038716600090815260036020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046bffffffffffffffffffffffff16918101919091529087141561080a5760200151945061043f9350505050565b805163ffffffff1687111561082157819350610828565b6001820392505b505061076e565b506001600160a01b038516600090815260036020908152604080832063ffffffff909416835292905220546bffffffffffffffffffffffff6401000000009091041691505092915050565b60056020526000908152604090205481565b6040518060400160405280600381526020017f534754000000000000000000000000000000000000000000000000000000000081525081565b6000806108ea836040518060600160405280602581526020016121a960259139610f3a565b90506108f7338583610fbb565b5060019392505050565b6001600160a01b03811660009081526004602052604081205463ffffffff168061092c5760006105d0565b6001600160a01b0383166000908152600360209081526040808320600019850163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff169392505050565b600060405161098590611e16565b60408051918290038220828201909152601c82527f5368617265645374616b6520476f7665726e616e636520546f6b656e000000006020909201919091527f1d29d98686b9ace8e3c58b98aa5282d12b66c1766bb71d0a2270049fdd640f576109ec61124c565b30604051602001610a009493929190611eee565b6040516020818303038152906040528051906020012090506000604051610a2690611e21565b604051908190038120610a41918a908a908a90602001611eb0565b60405160208183030381529060405280519060200120905060008282604051602001610a6e929190611dda565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610aab9493929190611f23565b6020604051602081039080840390855afa158015610acd573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116610b1e5760405162461bcd60e51b815260040161067290611f9f565b6001600160a01b03811660009081526005602052604090208054600181019091558914610b5d5760405162461bcd60e51b815260040161067290611fbf565b87421115610b7d5760405162461bcd60e51b815260040161067290611faf565b610b87818b6111a5565b505050505b505050505050565b6000600019861415610ba95750600019610bce565b610bcb8660405180606001604052806023815260200161212d60239139610f3a565b90505b6000604051610bdc90611e16565b60408051918290038220828201909152601c82527f5368617265645374616b6520476f7665726e616e636520546f6b656e000000006020909201919091527f1d29d98686b9ace8e3c58b98aa5282d12b66c1766bb71d0a2270049fdd640f57610c4361124c565b30604051602001610c579493929190611eee565b6040516020818303038152906040528051906020012090506000604051610c7d90611e0b565b604080519182900382206001600160a01b038d16600090815260056020908152929020805460018101909155610cbf9391928e928e928e9290918e9101611e56565b60405160208183030381529060405280519060200120905060008282604051602001610cec929190611dda565b604051602081830303815290604052805190602001209050600060018289898960405160008152602001604052604051610d299493929190611f23565b6020604051602081039080840390855afa158015610d4b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116610d9c5760405162461bcd60e51b815260040161067290611f8f565b8b6001600160a01b0316816001600160a01b031614610dcd5760405162461bcd60e51b815260040161067290611f6f565b88421115610ded5760405162461bcd60e51b815260040161067290611f4f565b846000808e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a6001600160a01b03168c6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051610ea69190612016565b60405180910390a3505050505050505050505050565b6001600160a01b039182166000908152602081815260408083209390941682529190915220546bffffffffffffffffffffffff1690565b60405161046090611e21565b600360209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b6000816c010000000000000000000000008410610f6a5760405162461bcd60e51b81526004016106729190611f3e565b509192915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290610fb35760405162461bcd60e51b81526004016106729190611f3e565b505050900390565b6001600160a01b038316610fe15760405162461bcd60e51b815260040161067290611fcf565b6001600160a01b0382166110075760405162461bcd60e51b815260040161067290611f7f565b6001600160a01b038316600090815260016020908152604091829020548251606081019093526035808452611057936bffffffffffffffffffffffff909216928592919061217490830139610f72565b6001600160a01b03848116600090815260016020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff96871617905592861682529082902054825160608101909352602f8084526110dc949190911692859290919061224e90830139611250565b6001600160a01b038381166000818152600160205260409081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff95909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611166908590612016565b60405180910390a36001600160a01b038084166000908152600260205260408082205485841683529120546111a092918216911683611291565b505050565b6001600160a01b03808316600081815260026020818152604080842080546001845282862054949093528787167fffffffffffffffffffffffff000000000000000000000000000000000000000084168117909155905191909516946bffffffffffffffffffffffff9092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611246828483611291565b50505050565b4690565b6000838301826bffffffffffffffffffffffff80871690831610156112885760405162461bcd60e51b81526004016106729190611f3e565b50949350505050565b816001600160a01b0316836001600160a01b0316141580156112c157506000816bffffffffffffffffffffffff16115b156111a0576001600160a01b0383161561137f576001600160a01b03831660009081526004602052604081205463ffffffff169081611301576000611346565b6001600160a01b0385166000908152600360209081526040808320600019860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b9050600061136d82856040518060600160405280602781526020016121ce60279139610f72565b905061137b86848484611430565b5050505b6001600160a01b038216156111a0576001600160a01b03821660009081526004602052604081205463ffffffff1690816113ba5760006113ff565b6001600160a01b0384166000908152600360209081526040808320600019860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611426828560405180606001604052806026815260200161222860269139611250565b9050610b8c858484845b6000611454436040518060600160405280603381526020016121f56033913961162a565b905060008463ffffffff1611801561149d57506001600160a01b038516600090815260036020908152604080832063ffffffff6000198901811685529252909120548282169116145b15611511576001600160a01b0385166000908152600360209081526040808320600019880163ffffffff168452909152902080547fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff166401000000006bffffffffffffffffffffffff8516021790556115e0565b60408051808201825263ffffffff80841682526bffffffffffffffffffffffff80861660208085019182526001600160a01b038b166000818152600383528781208c871682528352878120965187549451909516640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff9587167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000958616179590951694909417909555938252600490935292909220805460018801909316929091169190911790555b846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405161161b929190612032565b60405180910390a25050505050565b6000816401000000008410610f6a5760405162461bcd60e51b81526004016106729190611f3e565b604080518082019091526000808252602082015290565b803561043f816120fd565b803561043f81612111565b803561043f8161211a565b803561043f81612123565b6000602082840312156116a757600080fd5b60006116b38484611669565b949350505050565b600080604083850312156116ce57600080fd5b60006116da8585611669565b92505060206116eb85828601611669565b9150509250929050565b60008060006060848603121561170a57600080fd5b60006117168686611669565b935050602061172786828701611669565b925050604061173886828701611674565b9150509250925092565b600080600080600080600060e0888a03121561175d57600080fd5b60006117698a8a611669565b975050602061177a8a828b01611669565b965050604061178b8a828b01611674565b955050606061179c8a828b01611674565b94505060806117ad8a828b0161168a565b93505060a06117be8a828b01611674565b92505060c06117cf8a828b01611674565b91505092959891949750929550565b600080604083850312156117f157600080fd5b60006117fd8585611669565b92505060206116eb85828601611674565b60008060008060008060c0878903121561182757600080fd5b60006118338989611669565b965050602061184489828a01611674565b955050604061185589828a01611674565b945050606061186689828a0161168a565b935050608061187789828a01611674565b92505060a061188889828a01611674565b9150509295509295509295565b600080604083850312156118a857600080fd5b60006118b48585611669565b92505060206116eb8582860161167f565b6118ce8161205f565b82525050565b6118ce8161206a565b6118ce8161206f565b6118ce6118f28261206f565b61206f565b60006119028261204d565b61190c8185612051565b935061191c8185602086016120a9565b611925816120d5565b9093019392505050565b600061193c601e83612051565b7f5347543a3a7065726d69743a207369676e617475726520657870697265640000815260200192915050565b6000611975602683612051565b7f5347543a3a6765745072696f72566f7465733a206e6f7420796574206465746581527f726d696e65640000000000000000000000000000000000000000000000000000602082015260400192915050565b60006119d460028361205a565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000611a0d601983612051565b7f5347543a3a7065726d69743a20756e617574686f72697a656400000000000000815260200192915050565b6000611a4660528361205a565b7f5065726d69742861646472657373206f776e65722c616464726573732073706581527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208201527f2c75696e7432353620646561646c696e65290000000000000000000000000000604082015260520192915050565b6000611acb60438361205a565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b6000611b50603983612051565b7f5347543a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e7366657220746f20746865207a65726f206164647265737300000000000000602082015260400192915050565b6000611baf601e83612051565b7f5347543a3a7065726d69743a20696e76616c6964207369676e61747572650000815260200192915050565b6000611be8602583612051565b7f5347543a3a64656c656761746542795369673a20696e76616c6964207369676e81527f6174757265000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611c47602583612051565b7f5347543a3a64656c656761746542795369673a207369676e617475726520657881527f7069726564000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611ca6602183612051565b7f5347543a3a64656c656761746542795369673a20696e76616c6964206e6f6e6381527f6500000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611d05603b83612051565b7f5347543a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e736665722066726f6d20746865207a65726f20616464726573730000000000602082015260400192915050565b6000611d64603a8361205a565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b6118ce8161207e565b6118ce81612087565b6118ce8161209e565b6118ce8161208d565b6000611de5826119c7565b9150611df182856118e6565b602082019150611e0182846118e6565b5060200192915050565b600061043f82611a39565b600061043f82611abe565b600061043f82611d57565b6020810161043f82846118c5565b6020810161043f82846118d4565b6020810161043f82846118dd565b60c08101611e6482896118dd565b611e7160208301886118c5565b611e7e60408301876118c5565b611e8b60608301866118dd565b611e9860808301856118dd565b611ea560a08301846118dd565b979650505050505050565b60808101611ebe82876118dd565b611ecb60208301866118c5565b611ed860408301856118dd565b611ee560608301846118dd565b95945050505050565b60808101611efc82876118dd565b611f0960208301866118dd565b611f1660408301856118dd565b611ee560608301846118c5565b60808101611f3182876118dd565b611ecb6020830186611dbf565b602080825281016105d081846118f7565b6020808252810161043f8161192f565b6020808252810161043f81611968565b6020808252810161043f81611a00565b6020808252810161043f81611b43565b6020808252810161043f81611ba2565b6020808252810161043f81611bdb565b6020808252810161043f81611c3a565b6020808252810161043f81611c99565b6020808252810161043f81611cf8565b6020810161043f8284611db6565b60408101611ffb8285611db6565b6105d06020830184611dd1565b6020810161043f8284611dbf565b6020810161043f8284611dc8565b6020810161043f8284611dd1565b604081016120408285611dc8565b6105d06020830184611dc8565b5190565b90815260200190565b919050565b600061043f82612072565b151590565b90565b6001600160a01b031690565b63ffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b600061043f8261208d565b60005b838110156120c45781810151838201526020016120ac565b838111156112465750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6121068161205f565b811461060d57600080fd5b6121068161206f565b6121068161207e565b6121068161208756fe5347543a3a7065726d69743a20616d6f756e74206578636565647320393620626974735347543a3a617070726f76653a20616d6f756e74206578636565647320393620626974735347543a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e63655347543a3a7472616e736665723a20616d6f756e74206578636565647320393620626974735347543a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f77735347543a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974735347543a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f77735347543a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f77735347543a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365a365627a7a723158205fe3190f9025ab282544b7f1c6ca45ceb7b262ec6ccc497294250f05f30256256c6578706572696d656e74616cf564736f6c6343000511004000000000000000000000000018691f528659d0abd08f79498dcc7b6fbdc1e91d