60a06040523480156200001157600080fd5b5060405162001cfd38038062001cfd833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b506040525050503360601b608052815182908290620001bf90600390602085019062000218565b508051620001d590600490602084019062000218565b50506005805460ff1916601217905550620001fa60086001600160e01b036200020216565b5050620002bd565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025b57805160ff19168380011785556200028b565b828001600101855582156200028b579182015b828111156200028b5782518255916020019190600101906200026e565b50620002999291506200029d565b5090565b620002ba91905b80821115620002995760008155600101620002a4565b90565b60805160601c611a22620002db600039806111475250611a226000f3fe6080604052600436106101485760003560e01c8063679aefce116100c0578063a457c2d711610074578063aa271e1a11610059578063aa271e1a1461055a578063dd62ed3e1461059a578063f05fcdf2146105e257610186565b8063a457c2d7146104ce578063a9059cbb1461051457610186565b8063903d8e77116100a5578063903d8e771461046057806395d89b41146104a45780639975038c146104b957610186565b8063679aefce146103dc57806370a082311461042057610186565b80632f13b60c1161011757806339509351116100fc578063395093511461032657806340c10f191461036c57806342966c68146103b257610186565b80632f13b60c146102e6578063313ce567146102fb57610186565b806306fdde031461018b578063095ea7b31461021557806318160ddd1461026f57806323b872dd1461029657610186565b3661018657604080513481529051309133917fdd4e7375a5084e0c4cc4e1bfc7ba67beb26a368120ea78d2e0948123910bbf7c9181900360200190a3005b600080fd5b34801561019757600080fd5b506101a0610628565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101da5781810151838201526020016101c2565b50505050905090810190601f1680156102075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022157600080fd5b5061025b6004803603604081101561023857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106dc565b604080519115158252519081900360200190f35b34801561027b57600080fd5b506102846106fa565b60408051918252519081900360200190f35b3480156102a257600080fd5b5061025b600480360360608110156102b957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610700565b3480156102f257600080fd5b5061025b610755565b34801561030757600080fd5b50610310610783565b6040805160ff9092168252519081900360200190f35b34801561033257600080fd5b5061025b6004803603604081101561034957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561078c565b34801561037857600080fd5b5061025b6004803603604081101561038f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107ed565b3480156103be57600080fd5b5061025b600480360360208110156103d557600080fd5b50356108cb565b3480156103e857600080fd5b506103f1610999565b604080516fffffffffffffffffffffffffffffffff938416815291909216602082015281519081900390910190f35b34801561042c57600080fd5b506102846004803603602081101561044357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166109ca565b34801561046c57600080fd5b5061025b6004803603604081101561048357600080fd5b506fffffffffffffffffffffffffffffffff813581169160200135166109f2565b3480156104b057600080fd5b506101a0610afe565b3480156104c557600080fd5b50610284610b7d565b3480156104da57600080fd5b5061025b600480360360408110156104f157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610ba5565b34801561052057600080fd5b5061025b6004803603604081101561053757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c20565b34801561056657600080fd5b5061025b6004803603602081101561057d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c2d565b3480156105a657600080fd5b50610284600480360360408110156105bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610c38565b3480156105ee57600080fd5b5061025b6004803603604081101561060557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c70565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d25780601f106106a7576101008083540402835291602001916106d2565b820191906000526020600020905b8154815290600101906020018083116106b557829003601f168201915b5050505050905090565b60006106f06106e9610cf2565b8484610cf6565b5060015b92915050565b60025490565b600061070d848484610e3d565b61074b843361074685604051806060016040528060288152602001611936602891396107398a33610c38565b919063ffffffff61101916565b610cf6565b5060019392505050565b60065470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16151590565b60055460ff1690565b60006106f0610799610cf2565b8461074685600160006107aa610cf2565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6110ca16565b60006107f833611145565b61084d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806118ac602e913960400191505060405180910390fd5b610855610755565b156108c157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f7468697320746f6b656e20636f6e747261637420686173206578706972656400604482015290519081900360640190fd5b6106f08383611184565b60006108d5610755565b6108e157506000610994565b6108eb33836112c1565b6006546fffffffffffffffffffffffffffffffff161561099057600654600090610969906fffffffffffffffffffffffffffffffff700100000000000000000000000000000000820481169161095d9116610951876402540be40063ffffffff61141716565b9063ffffffff61141716565b9063ffffffff61148a16565b905061098e338260405180606001604052806022815260200161188a602291396114cc565b505b5060015b919050565b6006546fffffffffffffffffffffffffffffffff808216927001000000000000000000000000000000009092041690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60006109fd33611145565b610a52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806118ac602e913960400191505060405180910390fd5b610a5a610755565b1590508015610aa457610aa46040518060400160405280856fffffffffffffffffffffffffffffffff168152602001846fffffffffffffffffffffffffffffffff1681525061165d565b604080516fffffffffffffffffffffffffffffffff8086168252841660208201528215158183015290517fcdcd2e977c58a9c82d799c0986ab5c6fe48d43a9b96bbf60a654b46728c6f6679181900360600190a192915050565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d25780601f106106a7576101008083540402835291602001916106d2565b6000610b88336109ca565b90506000610b95826108cb565b905080610ba157600091505b5090565b60006106f0610bb2610cf2565b84610746856040518060600160405280602581526020016119c86025913960016000610bdc610cf2565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61101916565b60006106f0338484610e3d565b60006106f482611145565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000610c7b33611145565b610cd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806118ac602e913960400191505060405180910390fd5b610cd9836109ca565b821115610ce8575060006106f4565b6106f083836112c1565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316610d62576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806119a46024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610dce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806118426022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610ea9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061197f6025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610f15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806117fd6023913960400191505060405180910390fd5b610f2083838361172f565b610f70816040518060600160405280602681526020016118646026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260208190526040902054919063ffffffff61101916565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610fb2908263ffffffff6110ca16565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156110c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561108757818101518382015260200161106f565b50505050905090810190601f1680156110b45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008282018381101561113e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff90811691161490565b73ffffffffffffffffffffffffffffffffffffffff821661120657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6112126000838361172f565b600254611225908263ffffffff6110ca16565b60025573ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461125e908263ffffffff6110ca16565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff821661132d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061195e6021913960400191505060405180910390fd5b6113398260008361172f565b611389816040518060600160405280602281526020016118206022913973ffffffffffffffffffffffffffffffffffffffff8516600090815260208190526040902054919063ffffffff61101916565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020556002546113c2908263ffffffff61173416565b60025560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600082611426575060006106f4565b8282028284828161143357fe5b041461113e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806119156021913960400191505060405180910390fd5b600061113e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611776565b6114d5826117f5565b819061153c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835190928392604490910191908501908083836000831561108757818101518382015260200161106f565b5060405160009073ffffffffffffffffffffffffffffffffffffffff85169084908381818185875af1925050503d8060008114611595576040519150601f19603f3d011682016040523d82523d6000602084013e61159a565b606091505b505090508061160a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f7472616e7366657272696e67204574686572206661696c656400000000000000604482015290519081900360640190fd5b60408051848152905173ffffffffffffffffffffffffffffffffffffffff86169130917fdd4e7375a5084e0c4cc4e1bfc7ba67beb26a368120ea78d2e0948123910bbf7c9181900360200190a350505050565b60208101516fffffffffffffffffffffffffffffffff166116c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001806118da603b913960400191505060405180910390fd5b8051600680546020909301516fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029281167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090941693909317909216179055565b505050565b600061113e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611019565b600081836117df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835190928392604490910191908501908083836000831561108757818101518382015260200161106f565b5060008385816117eb57fe5b0495945050505050565b303110159056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636573797374656d206572726f723a20696e73756666696369656e742062616c616e63656f6e6c79206465706c6f79657220697320616c6c6f77656420746f2063616c6c20746869732066756e6374696f6e73797374656d206572726f723a207468652065786368616e67652072617465206d757374206265206e6f6e2d6e65676174697665206e756d626572536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122067d5ac09826869f1fb77d8e93a21a2892912fd988b8f917a9f6013483862ab6964736f6c634300060600330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000104c42542032303230313230342035303000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b4c42543132303430353030000000000000000000000000000000000000000000