0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80637571336a11610104578063c492f046116100a2578063dd62ed3e11610071578063dd62ed3e14610549578063e2f4560514610579578063f2fde38b14610597578063f8b45b05146105b3576101da565b8063c492f046146104d7578063c8c8ebe4146104f3578063cf38287714610511578063d257b34f1461052d576101da565b806395d89b41116100de57806395d89b411461043d578063a457c2d71461045b578063a9059cbb1461048b578063c18bc195146104bb576101da565b80637571336a146103e557806375f0a874146104015780638da5cb5b1461041f576101da565b8063313ce5671161017c5780636b67c4df1161014b5780636b67c4df1461036f57806370a082311461038d578063715018a6146103bd578063751039fc146103c7576101da565b8063313ce567146102e5578063395093511461030357806349bd5a5e146103335780634a62bb6514610351576101da565b80631694505e116101b85780631694505e1461025d57806318160ddd1461027b578063203e727e1461029957806323b872dd146102b5576101da565b806306fdde03146101df578063095ea7b3146101fd57806310d5de531461022d575b600080fd5b6101e76105d1565b6040516101f491906125f4565b60405180910390f35b610217600480360381019061021291906126b4565b610663565b604051610224919061270f565b60405180910390f35b6102476004803603810190610242919061272a565b610681565b604051610254919061270f565b60405180910390f35b6102656106a1565b60405161027291906127b6565b60405180910390f35b6102836106c7565b60405161029091906127e0565b60405180910390f35b6102b360048036038101906102ae91906127fb565b6106d1565b005b6102cf60048036038101906102ca9190612828565b610785565b6040516102dc919061270f565b60405180910390f35b6102ed61085e565b6040516102fa9190612897565b60405180910390f35b61031d600480360381019061031891906126b4565b610867565b60405161032a919061270f565b60405180910390f35b61033b61091a565b60405161034891906128c1565b60405180910390f35b61035961093e565b604051610366919061270f565b60405180910390f35b610377610951565b60405161038491906127e0565b60405180910390f35b6103a760048036038101906103a2919061272a565b610957565b6040516103b491906127e0565b60405180910390f35b6103c561099f565b005b6103cf610af7565b6040516103dc919061270f565b60405180910390f35b6103ff60048036038101906103fa9190612908565b610bb2565b005b610409610ca4565b60405161041691906128c1565b60405180910390f35b610427610cca565b60405161043491906128c1565b60405180910390f35b610445610cf4565b60405161045291906125f4565b60405180910390f35b610475600480360381019061047091906126b4565b610d86565b604051610482919061270f565b60405180910390f35b6104a560048036038101906104a091906126b4565b610e53565b6040516104b2919061270f565b60405180910390f35b6104d560048036038101906104d091906127fb565b610e71565b005b6104f160048036038101906104ec91906129ad565b610f25565b005b6104fb611061565b60405161050891906127e0565b60405180910390f35b61052b600480360381019061052691906127fb565b611067565b005b610547600480360381019061054291906127fb565b61114c565b005b610563600480360381019061055e9190612a0d565b6111ed565b60405161057091906127e0565b60405180910390f35b610581611274565b60405161058e91906127e0565b60405180910390f35b6105b160048036038101906105ac919061272a565b61127a565b005b6105bb611440565b6040516105c891906127e0565b60405180910390f35b6060600380546105e090612a7c565b80601f016020809104026020016040519081016040528092919081815260200182805461060c90612a7c565b80156106595780601f1061062e57610100808354040283529160200191610659565b820191906000526020600020905b81548152906001019060200180831161063c57829003601f168201915b5050505050905090565b60006106776106706114a4565b84846114ac565b6001905092915050565b600e6020528060005260406000206000915054906101000a900460ff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6106d96114a4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075f90612af9565b60405180910390fd5b670de0b6b3a76400008161077c9190612b48565b600c8190555050565b6000610792848484611675565b6108538461079e6114a4565b61084e8560405180606001604052806028815260200161348860289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108046114a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e859092919063ffffffff16565b6114ac565b600190509392505050565b60006012905090565b60006109106108746114a4565b8461090b85600160006108856114a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461144690919063ffffffff16565b6114ac565b6001905092915050565b7f0000000000000000000000006d4718cc4b949d3cf277e67322529d36050bdd1281565b600b60009054906101000a900460ff1681565b60105481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109a76114a4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2d90612af9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610b016114a4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8790612af9565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b610bba6114a4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4090612af9565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610d0390612a7c565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2f90612a7c565b8015610d7c5780601f10610d5157610100808354040283529160200191610d7c565b820191906000526020600020905b815481529060010190602001808311610d5f57829003601f168201915b5050505050905090565b6000610e49610d936114a4565b84610e44856040518060600160405280602581526020016134b06025913960016000610dbd6114a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e859092919063ffffffff16565b6114ac565b6001905092915050565b6000610e67610e606114a4565b8484611675565b6001905092915050565b610e796114a4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eff90612af9565b60405180910390fd5b670de0b6b3a764000081610f1c9190612b48565b600d8190555050565b610f2d6114a4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb390612af9565b60405180910390fd5b60005b8383905081101561105b578160076000868685818110610fe257610fe1612b8a565b5b9050602002016020810190610ff7919061272a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061105390612bb9565b915050610fbf565b50505050565b600c5481565b61106f6114a4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f590612af9565b60405180910390fd5b6064811115611142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113990612c4d565b60405180910390fd5b8060108190555050565b6111546114a4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111da90612af9565b60405180910390fd5b80600a8190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b6112826114a4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611311576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130890612af9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137790612cdf565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5481565b60008082846114559190612cff565b90508381101561149a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149190612d7f565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361151b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151290612e11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361158a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158190612ea3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161166891906127e0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116db90612f35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174a90612fc7565b60405180910390fd5b6000810361176c5761176783836000611ee9565b611e80565b600b60009054906101000a900460ff1615611b7657611789610cca565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117f757506117c7610cca565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118305750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561186a575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118835750600f60009054906101000a900460ff16155b15611b75577f0000000000000000000000006d4718cc4b949d3cf277e67322529d36050bdd1273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561192d5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119d457600c54811115611977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196e90613059565b60405180910390fd5b600d5461198383610957565b8261198e9190612cff565b11156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c6906130c5565b60405180910390fd5b611b74565b7f0000000000000000000000006d4718cc4b949d3cf277e67322529d36050bdd1273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611a795750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ac857600c54811115611ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aba90613157565b60405180910390fd5b611b73565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b7257600d54611b2583610957565b82611b309190612cff565b1115611b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b68906130c5565b60405180910390fd5b5b5b5b5b5b611b7e610cca565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611bec5750611bbc610cca565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d6e576000611bfc30610957565b90506000600a548210159050808015611c225750600f60009054906101000a900460ff16155b8015611c7a57507f0000000000000000000000006d4718cc4b949d3cf277e67322529d36050bdd1273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611cd05750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d265750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d6b576001600f60006101000a81548160ff021916908315150217905550611d4f8261217c565b6000600f60006101000a81548160ff0219169083151502179055505b50505b600060019050600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e155750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e1f57600090505b8015611e73576000611e4f6064611e41601054866123ee90919063ffffffff16565b61246890919063ffffffff16565b9050611e6481846124b290919063ffffffff16565b9250611e71853083611ee9565b505b611e7e848484611ee9565b505b505050565b6000838311158290611ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec491906125f4565b60405180910390fd5b5060008385611edc9190613177565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4f90612f35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbe90612fc7565b60405180910390fd5b611fd28383836124fc565b61203d81604051806060016040528060268152602001613462602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e859092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120d0816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461144690919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161216f91906127e0565b60405180910390a3505050565b6000600267ffffffffffffffff811115612199576121986131ab565b5b6040519080825280602002602001820160405280156121c75781602001602082028036833780820191505090505b50905030816000815181106121df576121de612b8a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612286573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122aa91906131ef565b816001815181106122be576122bd612b8a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061232530600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114ac565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661012c426123989190612cff565b6040518663ffffffff1660e01b81526004016123b8959493929190613315565b600060405180830381600087803b1580156123d257600080fd5b505af11580156123e6573d6000803e3d6000fd5b505050505050565b60008083036124005760009050612462565b6000828461240e9190612b48565b905082848261241d919061339e565b1461245d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245490613441565b60405180910390fd5b809150505b92915050565b60006124aa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612501565b905092915050565b60006124f483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e85565b905092915050565b505050565b60008083118290612548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253f91906125f4565b60405180910390fd5b5060008385612557919061339e565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561259e578082015181840152602081019050612583565b60008484015250505050565b6000601f19601f8301169050919050565b60006125c682612564565b6125d0818561256f565b93506125e0818560208601612580565b6125e9816125aa565b840191505092915050565b6000602082019050818103600083015261260e81846125bb565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061264b82612620565b9050919050565b61265b81612640565b811461266657600080fd5b50565b60008135905061267881612652565b92915050565b6000819050919050565b6126918161267e565b811461269c57600080fd5b50565b6000813590506126ae81612688565b92915050565b600080604083850312156126cb576126ca612616565b5b60006126d985828601612669565b92505060206126ea8582860161269f565b9150509250929050565b60008115159050919050565b612709816126f4565b82525050565b60006020820190506127246000830184612700565b92915050565b6000602082840312156127405761273f612616565b5b600061274e84828501612669565b91505092915050565b6000819050919050565b600061277c61277761277284612620565b612757565b612620565b9050919050565b600061278e82612761565b9050919050565b60006127a082612783565b9050919050565b6127b081612795565b82525050565b60006020820190506127cb60008301846127a7565b92915050565b6127da8161267e565b82525050565b60006020820190506127f560008301846127d1565b92915050565b60006020828403121561281157612810612616565b5b600061281f8482850161269f565b91505092915050565b60008060006060848603121561284157612840612616565b5b600061284f86828701612669565b935050602061286086828701612669565b92505060406128718682870161269f565b9150509250925092565b600060ff82169050919050565b6128918161287b565b82525050565b60006020820190506128ac6000830184612888565b92915050565b6128bb81612640565b82525050565b60006020820190506128d660008301846128b2565b92915050565b6128e5816126f4565b81146128f057600080fd5b50565b600081359050612902816128dc565b92915050565b6000806040838503121561291f5761291e612616565b5b600061292d85828601612669565b925050602061293e858286016128f3565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261296d5761296c612948565b5b8235905067ffffffffffffffff81111561298a5761298961294d565b5b6020830191508360208202830111156129a6576129a5612952565b5b9250929050565b6000806000604084860312156129c6576129c5612616565b5b600084013567ffffffffffffffff8111156129e4576129e361261b565b5b6129f086828701612957565b93509350506020612a03868287016128f3565b9150509250925092565b60008060408385031215612a2457612a23612616565b5b6000612a3285828601612669565b9250506020612a4385828601612669565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612a9457607f821691505b602082108103612aa757612aa6612a4d565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ae360208361256f565b9150612aee82612aad565b602082019050919050565b60006020820190508181036000830152612b1281612ad6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b538261267e565b9150612b5e8361267e565b9250828202612b6c8161267e565b91508282048414831517612b8357612b82612b19565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612bc48261267e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612bf657612bf5612b19565b5b600182019050919050565b7f73686f756c64206265206c657373206f7220657175616c203130302000000000600082015250565b6000612c37601c8361256f565b9150612c4282612c01565b602082019050919050565b60006020820190508181036000830152612c6681612c2a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612cc960268361256f565b9150612cd482612c6d565b604082019050919050565b60006020820190508181036000830152612cf881612cbc565b9050919050565b6000612d0a8261267e565b9150612d158361267e565b9250828201905080821115612d2d57612d2c612b19565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612d69601b8361256f565b9150612d7482612d33565b602082019050919050565b60006020820190508181036000830152612d9881612d5c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612dfb60248361256f565b9150612e0682612d9f565b604082019050919050565b60006020820190508181036000830152612e2a81612dee565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612e8d60228361256f565b9150612e9882612e31565b604082019050919050565b60006020820190508181036000830152612ebc81612e80565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612f1f60258361256f565b9150612f2a82612ec3565b604082019050919050565b60006020820190508181036000830152612f4e81612f12565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612fb160238361256f565b9150612fbc82612f55565b604082019050919050565b60006020820190508181036000830152612fe081612fa4565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061304360358361256f565b915061304e82612fe7565b604082019050919050565b6000602082019050818103600083015261307281613036565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006130af60138361256f565b91506130ba82613079565b602082019050919050565b600060208201905081810360008301526130de816130a2565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061314160368361256f565b915061314c826130e5565b604082019050919050565b6000602082019050818103600083015261317081613134565b9050919050565b60006131828261267e565b915061318d8361267e565b92508282039050818111156131a5576131a4612b19565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506131e981612652565b92915050565b60006020828403121561320557613204612616565b5b6000613213848285016131da565b91505092915050565b6000819050919050565b600061324161323c6132378461321c565b612757565b61267e565b9050919050565b61325181613226565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61328c81612640565b82525050565b600061329e8383613283565b60208301905092915050565b6000602082019050919050565b60006132c282613257565b6132cc8185613262565b93506132d783613273565b8060005b838110156133085781516132ef8882613292565b97506132fa836132aa565b9250506001810190506132db565b5085935050505092915050565b600060a08201905061332a60008301886127d1565b6133376020830187613248565b818103604083015261334981866132b7565b905061335860608301856128b2565b61336560808301846127d1565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133a98261267e565b91506133b48361267e565b9250826133c4576133c361336f565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061342b60218361256f565b9150613436826133cf565b604082019050919050565b6000602082019050818103600083015261345a8161341e565b905091905056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203d271a810cce4df69cc8f76910ef5a50d91e667edeaf8d487b40c485da0d039c64736f6c63430008120033
0x60a0604052683635c9adc5dea00000600a556001600b60006101000a81548160ff0219169083151502179055503480156200003957600080fd5b506040518060400160405280600981526020017f44616c6d617469616e00000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f44414c00000000000000000000000000000000000000000000000000000000008152508160039081620000b7919062000bd8565b508060049081620000c9919062000bd8565b5050506000620000de6200060f60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001993369d3c21bcecceda10000006200061760201b60201c565b600560108190555073346c5bc36612bac35c3d13b0591d7c010a13a41d600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606460026200020a620007c560201b60201c565b62000216919062000cee565b62000222919062000d68565b600c81905550606460036200023c620007c560201b60201c565b62000248919062000cee565b62000254919062000d68565b600d8190555060016007600062000270620007cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000420919062000e0a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000488573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ae919062000e0a565b6040518363ffffffff1660e01b8152600401620004cd92919062000e4d565b6020604051808303816000875af1158015620004ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000513919062000e0a565b905062000528826001620007f960201b60201c565b6200053b816001620007f960201b60201c565b62000570600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620007f960201b60201c565b6200059262000584620007cf60201b60201c565b6001620007f960201b60201c565b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050506200104a565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000689576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006809062000edb565b60405180910390fd5b6200069d60008383620008f660201b60201c565b620006b981600254620008fb60201b620014461790919060201c565b60028190555062000717816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620008fb60201b620014461790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007b9919062000f0e565b60405180910390a35050565b6000600254905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008096200060f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200089b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008929062000f7b565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b505050565b60008082846200090c919062000f9d565b90508381101562000954576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200094b9062001028565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620009e057607f821691505b602082108103620009f657620009f562000998565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a21565b62000a6c868362000a21565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000ab962000ab362000aad8462000a84565b62000a8e565b62000a84565b9050919050565b6000819050919050565b62000ad58362000a98565b62000aed62000ae48262000ac0565b84845462000a2e565b825550505050565b600090565b62000b0462000af5565b62000b1181848462000aca565b505050565b5b8181101562000b395762000b2d60008262000afa565b60018101905062000b17565b5050565b601f82111562000b885762000b5281620009fc565b62000b5d8462000a11565b8101602085101562000b6d578190505b62000b8562000b7c8562000a11565b83018262000b16565b50505b505050565b600082821c905092915050565b600062000bad6000198460080262000b8d565b1980831691505092915050565b600062000bc8838362000b9a565b9150826002028217905092915050565b62000be3826200095e565b67ffffffffffffffff81111562000bff5762000bfe62000969565b5b62000c0b8254620009c7565b62000c1882828562000b3d565b600060209050601f83116001811462000c50576000841562000c3b578287015190505b62000c47858262000bba565b86555062000cb7565b601f19841662000c6086620009fc565b60005b8281101562000c8a5784890151825560018201915060208501945060208101905062000c63565b8683101562000caa578489015162000ca6601f89168262000b9a565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000cfb8262000a84565b915062000d088362000a84565b925082820262000d188162000a84565b9150828204841483151762000d325762000d3162000cbf565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d758262000a84565b915062000d828362000a84565b92508262000d955762000d9462000d39565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000dd28262000da5565b9050919050565b62000de48162000dc5565b811462000df057600080fd5b50565b60008151905062000e048162000dd9565b92915050565b60006020828403121562000e235762000e2262000da0565b5b600062000e338482850162000df3565b91505092915050565b62000e478162000dc5565b82525050565b600060408201905062000e64600083018562000e3c565b62000e73602083018462000e3c565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ec3601f8362000e7a565b915062000ed08262000e8b565b602082019050919050565b6000602082019050818103600083015262000ef68162000eb4565b9050919050565b62000f088162000a84565b82525050565b600060208201905062000f25600083018462000efd565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f6360208362000e7a565b915062000f708262000f2b565b602082019050919050565b6000602082019050818103600083015262000f968162000f54565b9050919050565b600062000faa8262000a84565b915062000fb78362000a84565b925082820190508082111562000fd25762000fd162000cbf565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001010601b8362000e7a565b91506200101d8262000fd8565b602082019050919050565b60006020820190508181036000830152620010438162001001565b9050919050565b60805161350a6200107b6000396000818161091c0152818161188a015281816119d60152611c2b015261350a6000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80637571336a11610104578063c492f046116100a2578063dd62ed3e11610071578063dd62ed3e14610549578063e2f4560514610579578063f2fde38b14610597578063f8b45b05146105b3576101da565b8063c492f046146104d7578063c8c8ebe4146104f3578063cf38287714610511578063d257b34f1461052d576101da565b806395d89b41116100de57806395d89b411461043d578063a457c2d71461045b578063a9059cbb1461048b578063c18bc195146104bb576101da565b80637571336a146103e557806375f0a874146104015780638da5cb5b1461041f576101da565b8063313ce5671161017c5780636b67c4df1161014b5780636b67c4df1461036f57806370a082311461038d578063715018a6146103bd578063751039fc146103c7576101da565b8063313ce567146102e5578063395093511461030357806349bd5a5e146103335780634a62bb6514610351576101da565b80631694505e116101b85780631694505e1461025d57806318160ddd1461027b578063203e727e1461029957806323b872dd146102b5576101da565b806306fdde03146101df578063095ea7b3146101fd57806310d5de531461022d575b600080fd5b6101e76105d1565b6040516101f491906125f4565b60405180910390f35b610217600480360381019061021291906126b4565b610663565b604051610224919061270f565b60405180910390f35b6102476004803603810190610242919061272a565b610681565b604051610254919061270f565b60405180910390f35b6102656106a1565b60405161027291906127b6565b60405180910390f35b6102836106c7565b60405161029091906127e0565b60405180910390f35b6102b360048036038101906102ae91906127fb565b6106d1565b005b6102cf60048036038101906102ca9190612828565b610785565b6040516102dc919061270f565b60405180910390f35b6102ed61085e565b6040516102fa9190612897565b60405180910390f35b61031d600480360381019061031891906126b4565b610867565b60405161032a919061270f565b60405180910390f35b61033b61091a565b60405161034891906128c1565b60405180910390f35b61035961093e565b604051610366919061270f565b60405180910390f35b610377610951565b60405161038491906127e0565b60405180910390f35b6103a760048036038101906103a2919061272a565b610957565b6040516103b491906127e0565b60405180910390f35b6103c561099f565b005b6103cf610af7565b6040516103dc919061270f565b60405180910390f35b6103ff60048036038101906103fa9190612908565b610bb2565b005b610409610ca4565b60405161041691906128c1565b60405180910390f35b610427610cca565b60405161043491906128c1565b60405180910390f35b610445610cf4565b60405161045291906125f4565b60405180910390f35b610475600480360381019061047091906126b4565b610d86565b604051610482919061270f565b60405180910390f35b6104a560048036038101906104a091906126b4565b610e53565b6040516104b2919061270f565b60405180910390f35b6104d560048036038101906104d091906127fb565b610e71565b005b6104f160048036038101906104ec91906129ad565b610f25565b005b6104fb611061565b60405161050891906127e0565b60405180910390f35b61052b600480360381019061052691906127fb565b611067565b005b610547600480360381019061054291906127fb565b61114c565b005b610563600480360381019061055e9190612a0d565b6111ed565b60405161057091906127e0565b60405180910390f35b610581611274565b60405161058e91906127e0565b60405180910390f35b6105b160048036038101906105ac919061272a565b61127a565b005b6105bb611440565b6040516105c891906127e0565b60405180910390f35b6060600380546105e090612a7c565b80601f016020809104026020016040519081016040528092919081815260200182805461060c90612a7c565b80156106595780601f1061062e57610100808354040283529160200191610659565b820191906000526020600020905b81548152906001019060200180831161063c57829003601f168201915b5050505050905090565b60006106776106706114a4565b84846114ac565b6001905092915050565b600e6020528060005260406000206000915054906101000a900460ff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6106d96114a4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075f90612af9565b60405180910390fd5b670de0b6b3a76400008161077c9190612b48565b600c8190555050565b6000610792848484611675565b6108538461079e6114a4565b61084e8560405180606001604052806028815260200161348860289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108046114a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e859092919063ffffffff16565b6114ac565b600190509392505050565b60006012905090565b60006109106108746114a4565b8461090b85600160006108856114a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461144690919063ffffffff16565b6114ac565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900460ff1681565b60105481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109a76114a4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2d90612af9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610b016114a4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8790612af9565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b610bba6114a4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4090612af9565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610d0390612a7c565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2f90612a7c565b8015610d7c5780601f10610d5157610100808354040283529160200191610d7c565b820191906000526020600020905b815481529060010190602001808311610d5f57829003601f168201915b5050505050905090565b6000610e49610d936114a4565b84610e44856040518060600160405280602581526020016134b06025913960016000610dbd6114a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e859092919063ffffffff16565b6114ac565b6001905092915050565b6000610e67610e606114a4565b8484611675565b6001905092915050565b610e796114a4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eff90612af9565b60405180910390fd5b670de0b6b3a764000081610f1c9190612b48565b600d8190555050565b610f2d6114a4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb390612af9565b60405180910390fd5b60005b8383905081101561105b578160076000868685818110610fe257610fe1612b8a565b5b9050602002016020810190610ff7919061272a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061105390612bb9565b915050610fbf565b50505050565b600c5481565b61106f6114a4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f590612af9565b60405180910390fd5b6064811115611142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113990612c4d565b60405180910390fd5b8060108190555050565b6111546114a4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111da90612af9565b60405180910390fd5b80600a8190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b6112826114a4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611311576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130890612af9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137790612cdf565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5481565b60008082846114559190612cff565b90508381101561149a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149190612d7f565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361151b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151290612e11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361158a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158190612ea3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161166891906127e0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116db90612f35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174a90612fc7565b60405180910390fd5b6000810361176c5761176783836000611ee9565b611e80565b600b60009054906101000a900460ff1615611b7657611789610cca565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117f757506117c7610cca565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118305750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561186a575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118835750600f60009054906101000a900460ff16155b15611b75577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561192d5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119d457600c54811115611977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196e90613059565b60405180910390fd5b600d5461198383610957565b8261198e9190612cff565b11156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c6906130c5565b60405180910390fd5b611b74565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611a795750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ac857600c54811115611ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aba90613157565b60405180910390fd5b611b73565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b7257600d54611b2583610957565b82611b309190612cff565b1115611b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b68906130c5565b60405180910390fd5b5b5b5b5b5b611b7e610cca565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611bec5750611bbc610cca565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d6e576000611bfc30610957565b90506000600a548210159050808015611c225750600f60009054906101000a900460ff16155b8015611c7a57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611cd05750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d265750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d6b576001600f60006101000a81548160ff021916908315150217905550611d4f8261217c565b6000600f60006101000a81548160ff0219169083151502179055505b50505b600060019050600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e155750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e1f57600090505b8015611e73576000611e4f6064611e41601054866123ee90919063ffffffff16565b61246890919063ffffffff16565b9050611e6481846124b290919063ffffffff16565b9250611e71853083611ee9565b505b611e7e848484611ee9565b505b505050565b6000838311158290611ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec491906125f4565b60405180910390fd5b5060008385611edc9190613177565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4f90612f35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbe90612fc7565b60405180910390fd5b611fd28383836124fc565b61203d81604051806060016040528060268152602001613462602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e859092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120d0816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461144690919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161216f91906127e0565b60405180910390a3505050565b6000600267ffffffffffffffff811115612199576121986131ab565b5b6040519080825280602002602001820160405280156121c75781602001602082028036833780820191505090505b50905030816000815181106121df576121de612b8a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612286573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122aa91906131ef565b816001815181106122be576122bd612b8a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061232530600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114ac565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661012c426123989190612cff565b6040518663ffffffff1660e01b81526004016123b8959493929190613315565b600060405180830381600087803b1580156123d257600080fd5b505af11580156123e6573d6000803e3d6000fd5b505050505050565b60008083036124005760009050612462565b6000828461240e9190612b48565b905082848261241d919061339e565b1461245d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245490613441565b60405180910390fd5b809150505b92915050565b60006124aa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612501565b905092915050565b60006124f483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e85565b905092915050565b505050565b60008083118290612548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253f91906125f4565b60405180910390fd5b5060008385612557919061339e565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561259e578082015181840152602081019050612583565b60008484015250505050565b6000601f19601f8301169050919050565b60006125c682612564565b6125d0818561256f565b93506125e0818560208601612580565b6125e9816125aa565b840191505092915050565b6000602082019050818103600083015261260e81846125bb565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061264b82612620565b9050919050565b61265b81612640565b811461266657600080fd5b50565b60008135905061267881612652565b92915050565b6000819050919050565b6126918161267e565b811461269c57600080fd5b50565b6000813590506126ae81612688565b92915050565b600080604083850312156126cb576126ca612616565b5b60006126d985828601612669565b92505060206126ea8582860161269f565b9150509250929050565b60008115159050919050565b612709816126f4565b82525050565b60006020820190506127246000830184612700565b92915050565b6000602082840312156127405761273f612616565b5b600061274e84828501612669565b91505092915050565b6000819050919050565b600061277c61277761277284612620565b612757565b612620565b9050919050565b600061278e82612761565b9050919050565b60006127a082612783565b9050919050565b6127b081612795565b82525050565b60006020820190506127cb60008301846127a7565b92915050565b6127da8161267e565b82525050565b60006020820190506127f560008301846127d1565b92915050565b60006020828403121561281157612810612616565b5b600061281f8482850161269f565b91505092915050565b60008060006060848603121561284157612840612616565b5b600061284f86828701612669565b935050602061286086828701612669565b92505060406128718682870161269f565b9150509250925092565b600060ff82169050919050565b6128918161287b565b82525050565b60006020820190506128ac6000830184612888565b92915050565b6128bb81612640565b82525050565b60006020820190506128d660008301846128b2565b92915050565b6128e5816126f4565b81146128f057600080fd5b50565b600081359050612902816128dc565b92915050565b6000806040838503121561291f5761291e612616565b5b600061292d85828601612669565b925050602061293e858286016128f3565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261296d5761296c612948565b5b8235905067ffffffffffffffff81111561298a5761298961294d565b5b6020830191508360208202830111156129a6576129a5612952565b5b9250929050565b6000806000604084860312156129c6576129c5612616565b5b600084013567ffffffffffffffff8111156129e4576129e361261b565b5b6129f086828701612957565b93509350506020612a03868287016128f3565b9150509250925092565b60008060408385031215612a2457612a23612616565b5b6000612a3285828601612669565b9250506020612a4385828601612669565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612a9457607f821691505b602082108103612aa757612aa6612a4d565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ae360208361256f565b9150612aee82612aad565b602082019050919050565b60006020820190508181036000830152612b1281612ad6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b538261267e565b9150612b5e8361267e565b9250828202612b6c8161267e565b91508282048414831517612b8357612b82612b19565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612bc48261267e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612bf657612bf5612b19565b5b600182019050919050565b7f73686f756c64206265206c657373206f7220657175616c203130302000000000600082015250565b6000612c37601c8361256f565b9150612c4282612c01565b602082019050919050565b60006020820190508181036000830152612c6681612c2a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612cc960268361256f565b9150612cd482612c6d565b604082019050919050565b60006020820190508181036000830152612cf881612cbc565b9050919050565b6000612d0a8261267e565b9150612d158361267e565b9250828201905080821115612d2d57612d2c612b19565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612d69601b8361256f565b9150612d7482612d33565b602082019050919050565b60006020820190508181036000830152612d9881612d5c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612dfb60248361256f565b9150612e0682612d9f565b604082019050919050565b60006020820190508181036000830152612e2a81612dee565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612e8d60228361256f565b9150612e9882612e31565b604082019050919050565b60006020820190508181036000830152612ebc81612e80565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612f1f60258361256f565b9150612f2a82612ec3565b604082019050919050565b60006020820190508181036000830152612f4e81612f12565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612fb160238361256f565b9150612fbc82612f55565b604082019050919050565b60006020820190508181036000830152612fe081612fa4565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061304360358361256f565b915061304e82612fe7565b604082019050919050565b6000602082019050818103600083015261307281613036565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006130af60138361256f565b91506130ba82613079565b602082019050919050565b600060208201905081810360008301526130de816130a2565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061314160368361256f565b915061314c826130e5565b604082019050919050565b6000602082019050818103600083015261317081613134565b9050919050565b60006131828261267e565b915061318d8361267e565b92508282039050818111156131a5576131a4612b19565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506131e981612652565b92915050565b60006020828403121561320557613204612616565b5b6000613213848285016131da565b91505092915050565b6000819050919050565b600061324161323c6132378461321c565b612757565b61267e565b9050919050565b61325181613226565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61328c81612640565b82525050565b600061329e8383613283565b60208301905092915050565b6000602082019050919050565b60006132c282613257565b6132cc8185613262565b93506132d783613273565b8060005b838110156133085781516132ef8882613292565b97506132fa836132aa565b9250506001810190506132db565b5085935050505092915050565b600060a08201905061332a60008301886127d1565b6133376020830187613248565b818103604083015261334981866132b7565b905061335860608301856128b2565b61336560808301846127d1565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133a98261267e565b91506133b48361267e565b9250826133c4576133c361336f565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061342b60218361256f565b9150613436826133cf565b604082019050919050565b6000602082019050818103600083015261345a8161341e565b905091905056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203d271a810cce4df69cc8f76910ef5a50d91e667edeaf8d487b40c485da0d039c64736f6c63430008120033