60806040523480156200001157600080fd5b5060405162001f5e38038062001f5e833981810160405281019062000037919062000259565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260ff16600a6200008b919062000418565b633b9aca006200009c919062000469565b600081905550600054600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735720fcd0b2503dd9d1db57e5ee6cccbb9d371bb8600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600054604051620001e09190620004c5565b60405180910390a350620004e2565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200022182620001f4565b9050919050565b620002338162000214565b81146200023f57600080fd5b50565b600081519050620002538162000228565b92915050565b600060208284031215620002725762000271620001ef565b5b6000620002828482850162000242565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200031957808604811115620002f157620002f06200028b565b5b6001851615620003015780820291505b80810290506200031185620002ba565b9450620002d1565b94509492505050565b60008262000334576001905062000407565b8162000344576000905062000407565b81600181146200035d576002811462000368576200039e565b600191505062000407565b60ff8411156200037d576200037c6200028b565b5b8360020a9150848211156200039757620003966200028b565b5b5062000407565b5060208310610133831016604e8410600b8410161715620003d85782820a905083811115620003d257620003d16200028b565b5b62000407565b620003e78484846001620002c7565b925090508184048111156200040157620004006200028b565b5b81810290505b9392505050565b6000819050919050565b600062000425826200040e565b915062000432836200040e565b9250620004617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000322565b905092915050565b600062000476826200040e565b915062000483836200040e565b925082820262000493816200040e565b91508282048414831517620004ad57620004ac6200028b565b5b5092915050565b620004bf816200040e565b82525050565b6000602082019050620004dc6000830184620004b4565b92915050565b611a6c80620004f26000396000f3fe6080604052600436106100f35760003560e01c8063469048401161008a578063961bdfbf11610059578063961bdfbf14610337578063a9059cbb14610362578063dd62ed3e1461039f578063e74b981b146103dc576100f3565b8063469048401461027957806370a08231146102a45780638da5cb5b146102e157806395d89b411461030c576100f3565b806323b872dd116100c657806323b872dd146101bb57806323d1b06c146101f8578063313ce56714610223578063378dc3dc1461024e576100f3565b806306fdde03146100f857806308acece214610123578063095ea7b31461015357806318160ddd14610190575b600080fd5b34801561010457600080fd5b5061010d610405565b60405161011a91906110a6565b60405180910390f35b61013d60048036038101906101389190611161565b61043e565b60405161014a91906111bc565b60405180910390f35b34801561015f57600080fd5b5061017a60048036038101906101759190611161565b610704565b60405161018791906111bc565b60405180910390f35b34801561019c57600080fd5b506101a56107f6565b6040516101b291906111e6565b60405180910390f35b3480156101c757600080fd5b506101e260048036038101906101dd9190611201565b6107fc565b6040516101ef91906111bc565b60405180910390f35b34801561020457600080fd5b5061020d610b5c565b60405161021a91906111e6565b60405180910390f35b34801561022f57600080fd5b50610238610b67565b6040516102459190611270565b60405180910390f35b34801561025a57600080fd5b50610263610b6c565b60405161027091906111e6565b60405180910390f35b34801561028557600080fd5b5061028e610b8f565b60405161029b91906112ac565b60405180910390f35b3480156102b057600080fd5b506102cb60048036038101906102c691906112c7565b610bb5565b6040516102d891906111e6565b60405180910390f35b3480156102ed57600080fd5b506102f6610bcd565b6040516103039190611303565b60405180910390f35b34801561031857600080fd5b50610321610bf3565b60405161032e91906110a6565b60405180910390f35b34801561034357600080fd5b5061034c610c2c565b60405161035991906111e6565b60405180910390f35b34801561036e57600080fd5b5061038960048036038101906103849190611161565b610d10565b60405161039691906111bc565b60405180910390f35b3480156103ab57600080fd5b506103c660048036038101906103c1919061131e565b610f1d565b6040516103d391906111e6565b60405180910390f35b3480156103e857600080fd5b5061040360048036038101906103fe919061138a565b610f42565b005b6040518060400160405280600781526020017f426974636f696e0000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a590611429565b60405180910390fd5b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610530576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610527906114bb565b60405180910390fd5b66020f81c5f840003414610579576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057090611527565b60405180910390fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105c89190611576565b9250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461061e91906115aa565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161068291906111e6565b60405180910390a3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc66020f81c5f840009081150290604051600060405180830381858888f193505050501580156106f9573d6000803e3d6000fd5b506001905092915050565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107e491906111e6565b60405180910390a36001905092915050565b60005481565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361086c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086390611429565b60405180910390fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156108ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e5906114bb565b60405180910390fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156109ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a490611650565b60405180910390fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109fc9190611576565b9250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a5291906115aa565b9250508190555081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ae59190611576565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b4991906111e6565b60405180910390a3600190509392505050565b66020f81c5f8400081565b601281565b601260ff16600a610b7d91906117a3565b633b9aca00610b8c91906117ee565b81565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915090505481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600381526020017f425443000000000000000000000000000000000000000000000000000000000081525081565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc091906118bd565b50505091505060008113610d09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0090611984565b60405180910390fd5b8091505090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7790611429565b60405180910390fd5b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610e02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df9906114bb565b60405180910390fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e519190611576565b9250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ea791906115aa565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f0b91906111e6565b60405180910390a36001905092915050565b6005602052816000526040600020602052806000526040600020600091509150505481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc990611a16565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611050578082015181840152602081019050611035565b60008484015250505050565b6000601f19601f8301169050919050565b600061107882611016565b6110828185611021565b9350611092818560208601611032565b61109b8161105c565b840191505092915050565b600060208201905081810360008301526110c0818461106d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006110f8826110cd565b9050919050565b611108816110ed565b811461111357600080fd5b50565b600081359050611125816110ff565b92915050565b6000819050919050565b61113e8161112b565b811461114957600080fd5b50565b60008135905061115b81611135565b92915050565b60008060408385031215611178576111776110c8565b5b600061118685828601611116565b92505060206111978582860161114c565b9150509250929050565b60008115159050919050565b6111b6816111a1565b82525050565b60006020820190506111d160008301846111ad565b92915050565b6111e08161112b565b82525050565b60006020820190506111fb60008301846111d7565b92915050565b60008060006060848603121561121a576112196110c8565b5b600061122886828701611116565b935050602061123986828701611116565b925050604061124a8682870161114c565b9150509250925092565b600060ff82169050919050565b61126a81611254565b82525050565b60006020820190506112856000830184611261565b92915050565b6000611296826110cd565b9050919050565b6112a68161128b565b82525050565b60006020820190506112c1600083018461129d565b92915050565b6000602082840312156112dd576112dc6110c8565b5b60006112eb84828501611116565b91505092915050565b6112fd816110ed565b82525050565b600060208201905061131860008301846112f4565b92915050565b60008060408385031215611335576113346110c8565b5b600061134385828601611116565b925050602061135485828601611116565b9150509250929050565b6113678161128b565b811461137257600080fd5b50565b6000813590506113848161135e565b92915050565b6000602082840312156113a05761139f6110c8565b5b60006113ae84828501611375565b91505092915050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611413602383611021565b915061141e826113b7565b604082019050919050565b6000602082019050818103600083015261144281611406565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006114a5602683611021565b91506114b082611449565b604082019050919050565b600060208201905081810360008301526114d481611498565b9050919050565b7f496e636f7272656374206665652070726f766964656400000000000000000000600082015250565b6000611511601683611021565b915061151c826114db565b602082019050919050565b6000602082019050818103600083015261154081611504565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115818261112b565b915061158c8361112b565b92508282039050818111156115a4576115a3611547565b5b92915050565b60006115b58261112b565b91506115c08361112b565b92508282019050808211156115d8576115d7611547565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061163a602883611021565b9150611645826115de565b604082019050919050565b600060208201905081810360008301526116698161162d565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156116c7578086048111156116a3576116a2611547565b5b60018516156116b25780820291505b80810290506116c085611670565b9450611687565b94509492505050565b6000826116e0576001905061179c565b816116ee576000905061179c565b8160018114611704576002811461170e5761173d565b600191505061179c565b60ff8411156117205761171f611547565b5b8360020a91508482111561173757611736611547565b5b5061179c565b5060208310610133831016604e8410600b84101617156117725782820a90508381111561176d5761176c611547565b5b61179c565b61177f848484600161167d565b9250905081840481111561179657611795611547565b5b81810290505b9392505050565b60006117ae8261112b565b91506117b98361112b565b92506117e67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846116d0565b905092915050565b60006117f98261112b565b91506118048361112b565b92508282026118128161112b565b9150828204841483151761182957611828611547565b5b5092915050565b600069ffffffffffffffffffff82169050919050565b61184f81611830565b811461185a57600080fd5b50565b60008151905061186c81611846565b92915050565b6000819050919050565b61188581611872565b811461189057600080fd5b50565b6000815190506118a28161187c565b92915050565b6000815190506118b781611135565b92915050565b600080600080600060a086880312156118d9576118d86110c8565b5b60006118e78882890161185d565b95505060206118f888828901611893565b9450506040611909888289016118a8565b935050606061191a888289016118a8565b925050608061192b8882890161185d565b9150509295509295909350565b7f496e76616c69642070726963652076616c756500000000000000000000000000600082015250565b600061196e601383611021565b915061197982611938565b602082019050919050565b6000602082019050818103600083015261199d81611961565b9050919050565b7f4f6e6c792074686520636f6e7472616374206f776e65722063616e2063616c6c60008201527f20746869732066756e6374696f6e000000000000000000000000000000000000602082015250565b6000611a00602e83611021565b9150611a0b826119a4565b604082019050919050565b60006020820190508181036000830152611a2f816119f3565b905091905056fea264697066735822122036075dbd0e0bc2b275237fd419440fc8340a099634cc129412ceaed19506330c64736f6c6343000812003300000000000000000000000055011c23dd85be3a17784f3850ab7cf0401c18d0