0x60806040526002805460ff60a01b1916600160a01b1790556004805462ffffff60a01b191661010160a01b1790553480156200003a57600080fd5b506040516200498e3803806200498e8339810160408190526200005d91620005bf565b60016000556001600160a01b038516158015906200008357506001600160a01b03841615155b80156200009857506001600160a01b03831615155b8015620000ad57506001600160a01b03821615155b8015620000c257506001600160a01b03811615155b620001145760405162461bcd60e51b815260206004820152601e60248201527f63616e277420636f6e737472756374207769746820302061646472657373000060448201526064015b60405180910390fd5b60018054336001600160a01b0319918216179091556005805482166001600160a01b038781169190911790915560068054831686831690811790915560038054841686841690811790915560048054851686851617905560088054909416928916929092179092556200019691906000620001d0602090811b6200154f17901c565b600354620001c5906001600160a01b0385811691166001600160801b03620001d0602090811b6200154f17901c565b5050505050620006ef565b8015806200025e5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b1580156200022157600080fd5b505afa15801562000236573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025c919062000650565b155b620002d25760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016200010b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b179091526200032a9185916200032f16565b505050565b60006200038b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166200040d60201b6200171c179092919060201c565b8051909150156200032a5780806020019051810190620003ac91906200062e565b6200032a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016200010b565b60606200041e848460008562000428565b90505b9392505050565b6060824710156200048b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016200010b565b6001600160a01b0385163b620004e45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200010b565b600080866001600160a01b0316858760405162000502919062000669565b60006040518083038185875af1925050503d806000811462000541576040519150601f19603f3d011682016040523d82523d6000602084013e62000546565b606091505b5090925090506200055982828662000564565b979650505050505050565b606083156200057557508162000421565b825115620005865782518084602001fd5b8160405162461bcd60e51b81526004016200010b919062000687565b80516001600160a01b0381168114620005ba57600080fd5b919050565b600080600080600060a08688031215620005d7578081fd5b620005e286620005a2565b9450620005f260208701620005a2565b93506200060260408701620005a2565b92506200061260608701620005a2565b91506200062260808701620005a2565b90509295509295909350565b60006020828403121562000640578081fd5b8151801515811462000421578182fd5b60006020828403121562000662578081fd5b5051919050565b600082516200067d818460208701620006bc565b9190910192915050565b6020815260008251806020840152620006a8816040850160208701620006bc565b601f01601f19169190910160400192915050565b60005b83811015620006d9578181015183820152602001620006bf565b83811115620006e9576000848401525b50505050565b61428f80620006ff6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638cab0f9911610104578063cdea6858116100a2578063ee7890a811610071578063ee7890a814610480578063f285903f14610493578063f2a63596146104b9578063f545c9c7146103ed57600080fd5b8063cdea68581461041e578063d65c971b14610426578063de9231891461044d578063e59654971461046d57600080fd5b8063a7dbff3e116100de578063a7dbff3e146103e5578063b82a2065146103ed578063c236c34814610403578063cbc1cfd21461041657600080fd5b80638cab0f991461039f578063980cdc82146103bf578063a740b25a146103d257600080fd5b806356b6099b1161017c5780636d8bb5dd1161014b5780636d8bb5dd146103275780636f0b2a961461033a57806371ee027d1461035f578063857d18231461037f57600080fd5b806356b6099b146102c15780635aa6e675146102d4578063697fad6a146102f45780636ae123431461030757600080fd5b806324b85a73116101b857806324b85a73146102685780633020cc371461027b578063313c06a01461028e5780634e7dda82146102ae57600080fd5b806303eadcfc146101df5780631484c1b814610229578063233b8a2714610233575b600080fd5b6008546101ff9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6102316104cc565b005b6002546102589074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610220565b610231610276366004613842565b610533565b610231610289366004613b26565b610600565b6005546101ff9073ffffffffffffffffffffffffffffffffffffffff1681565b6102316102bc366004613af6565b610874565b6102316102cf366004613abe565b61097d565b6001546101ff9073ffffffffffffffffffffffffffffffffffffffff1681565b610231610302366004613842565b610a49565b6003546101ff9073ffffffffffffffffffffffffffffffffffffffff1681565b610231610335366004613996565b610b8e565b6004546102589074010000000000000000000000000000000000000000900460ff1681565b6002546101ff9073ffffffffffffffffffffffffffffffffffffffff1681565b6007546101ff9073ffffffffffffffffffffffffffffffffffffffff1681565b6006546101ff9073ffffffffffffffffffffffffffffffffffffffff1681565b6102316103cd3660046138b2565b610bfa565b6102316103e036600461387a565b610c91565b610231610ebd565b6103f5610f76565b604051908152602001610220565b610231610411366004613842565b61101d565b6102316110e5565b6102316111e4565b60045461025890760100000000000000000000000000000000000000000000900460ff1681565b6004546101ff9073ffffffffffffffffffffffffffffffffffffffff1681565b61023161047b366004613abe565b6112ec565b61023161048e366004613abe565b6113b9565b600454610258907501000000000000000000000000000000000000000000900460ff1681565b6102316104c7366004613abe565b611484565b6003546005546104f79173ffffffffffffffffffffffffffffffffffffffff9182169116600061154f565b6003546005546105319173ffffffffffffffffffffffffffffffffffffffff91821691166fffffffffffffffffffffffffffffffff61154f565b565b60015473ffffffffffffffffffffffffffffffffffffffff1633146105b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6d75737420626520676f7665726e616e6365000000000000000000000000000060448201526064015b60405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60085473ffffffffffffffffffffffffffffffffffffffff163314610681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6d7573742062652061646170746572000000000000000000000000000000000060448201526064016105b0565b6003546040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff90911690632e1a7d4d90602401600060405180830381600087803b1580156106ed57600080fd5b505af1158015610701573d6000803e3d6000fd5b5050505060006103e8836103e761071891906140e3565b6107229190613ff2565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561078c57600080fd5b505afa1580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c4919061385e565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063a9059cbb90604401602060405180830381600087803b15801561083657600080fd5b505af115801561084a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e9190613ada565b50505050565b60085473ffffffffffffffffffffffffffffffffffffffff1633146108f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6d7573742062652061646170746572000000000000000000000000000000000060448201526064016105b0565b6003546040517fb6b55f250000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff9091169063b6b55f25906024015b600060405180830381600087803b15801561096257600080fd5b505af1158015610976573d6000803e3d6000fd5b5050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146109fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6d75737420626520676f7665726e616e6365000000000000000000000000000060448201526064016105b0565b600480549115157501000000000000000000000000000000000000000000027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff163314610aca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6d75737420626520676f7665726e616e6365000000000000000000000000000060448201526064016105b0565b73ffffffffffffffffffffffffffffffffffffffff8116610b47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f63616e27742073657420746f203000000000000000000000000000000000000060448201526064016105b0565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005b8151811015610bf657610be3828281518110610bd6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151611735565b5080610bee81614163565b915050610b91565b5050565b60026000541415610c67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016105b0565b6002600055610c7f8b8b8b8b8b8b8b8b8b8b8b6118c3565b50506001600055505050505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610d12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6d75737420626520676f7665726e616e6365000000000000000000000000000060448201526064016105b0565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152829060009073ffffffffffffffffffffffffffffffffffffffff8316906370a082319060240160206040518083038186803b158015610d7c57600080fd5b505afa158015610d90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db49190613b0e565b6040805133815273ffffffffffffffffffffffffffffffffffffffff86811660208301528716818301526060810183905290519192507f2c4e64c7c0957a81c0076a0a3f3c7d9f0a5d6158292071c794436f829d12cfb7919081900360800190a16040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820183905283169063a9059cbb90604401602060405180830381600087803b158015610e8557600080fd5b505af1158015610e99573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109769190613ada565b60025473ffffffffffffffffffffffffffffffffffffffff163314610f3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6d757374206265206e657720676f7665726e616e63650000000000000000000060448201526064016105b0565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600280549091169055565b6003546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a082319060240160206040518083038186803b158015610fe057600080fd5b505afa158015610ff4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110189190613b0e565b905090565b60015473ffffffffffffffffffffffffffffffffffffffff16331461109e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6d75737420626520676f7665726e616e6365000000000000000000000000000060448201526064016105b0565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff163314611166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6d75737420626520676f7665726e616e6365000000000000000000000000000060448201526064016105b0565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663853828b66040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156111d057600080fd5b505af115801561086e573d6000803e3d6000fd5b6006546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a082319060240160206040518083038186803b15801561124e57600080fd5b505afa158015611262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112869190613b0e565b90506103e88111156112e9576003546040517fb6b55f250000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff9091169063b6b55f2590602401610948565b50565b60015473ffffffffffffffffffffffffffffffffffffffff16331461136d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6d75737420626520676f7665726e616e6365000000000000000000000000000060448201526064016105b0565b60048054911515760100000000000000000000000000000000000000000000027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff16331461143a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6d75737420626520676f7665726e616e6365000000000000000000000000000060448201526064016105b0565b6004805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff163314611505576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6d75737420626520676f7665726e616e6365000000000000000000000000000060448201526064016105b0565b6002805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b8015806115fe57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e9060440160206040518083038186803b1580156115c457600080fd5b505afa1580156115d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fc9190613b0e565b155b61168a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016105b0565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261171790849061199c565b505050565b606061172b8484600085611aa8565b90505b9392505050565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff8416906370a082319060240160206040518083038186803b15801561179f57600080fd5b505afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613b0e565b90506103e88110156117ec5750600092915050565b600073ffffffffffffffffffffffffffffffffffffffff841673c0c293ce456ff0ed870add98a0828dd4d2903dbf14156118305761182982611c40565b90506118b0565b73ffffffffffffffffffffffffffffffffffffffff841673616e8bfa43f920657b3497dbf40d6b1a02d4608d141561186b5761182982611cbd565b73ffffffffffffffffffffffffffffffffffffffff8416737b50775383d3d6f0215a8f290f2c9e2eebbeceb214156118a65761182982611d28565b5060009392505050565b60006118ba611d94565b95945050505050565b60025474010000000000000000000000000000000000000000900460ff166118ea5761198f565b600480546040517fb16eb35100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169163b16eb35191611951918f918f918f918f918f918f918f918f918f918f9101613c7c565b600060405180830381600087803b15801561196b57600080fd5b505af115801561197f573d6000803e3d6000fd5b5050505061198f8b8b8b8b6120a4565b5050505050505050505050565b60006119fe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661171c9092919063ffffffff16565b8051909150156117175780806020019051810190611a1c9190613ada565b611717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016105b0565b606082471015611b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016105b0565b73ffffffffffffffffffffffffffffffffffffffff85163b611bb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105b0565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611be19190613c60565b60006040518083038185875af1925050503d8060008114611c1e576040519150601f19603f3d011682016040523d82523d6000602084013e611c23565b606091505b5091509150611c338282866123f6565b925050505b949350505050565b60045460009074010000000000000000000000000000000000000000900460ff16151560011415611cb057611caa73c0c293ce456ff0ed870add98a0828dd4d2903dbf837fcfca23ca9ca720b6e98e3eb9b6aa0ffc4a5c08b9000200000000000000000274612449565b92915050565b506000919050565b919050565b6004546000907501000000000000000000000000000000000000000000900460ff16151560011415611cb057611caa73616e8bfa43f920657b3497dbf40d6b1a02d4608d837f0578292cb20a443ba1cde459c985ce14ca2bdee5000100000000000000000269612449565b600454600090760100000000000000000000000000000000000000000000900460ff16151560011415611cb057611caa737b50775383d3d6f0215a8f290f2c9e2eebbeceb2837f70b7d3b3209a59fb0400e17f67f3ee8c37363f4900020000000000000000018f612449565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a082319060240160206040518083038186803b158015611dfc57600080fd5b505afa158015611e10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e349190613b0e565b905060006064611e458360146140e3565b611e4f9190613ff2565b90506000611e5d8284614120565b90506103e8821015611e73576000935050505090565b6000611ec973c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2732260fac5e5542a773aa44fbcfedf7c193bc2c599857fa6f548df93de924d73be7d25dc02554c6bd66db500020000000000000000000e6128f1565b90506000811215611f0157611efe817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61402b565b90505b6000611f0c83612e0d565b90506000811215611f4457611f41817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61402b565b90505b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073b460daa847c45f1c4a41cb05bfb3b51c92e41b36906370a082319060240160206040518083038186803b158015611faa57600080fd5b505afa158015611fbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe29190613b0e565b9050611fee838361344f565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073b460daa847c45f1c4a41cb05bfb3b51c92e41b36906370a082319060240160206040518083038186803b15801561205457600080fd5b505afa158015612068573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208c9190613b0e565b90506120988282614120565b97505050505050505090565b60008080805b8681101561227e5760008888838181106120ed577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906121029190613842565b905073ffffffffffffffffffffffffffffffffffffffff81167337d9d2c6035b744849c15f1bfee8f268a20fcbd8141561217d5786868381811061216f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135945061226b565b73ffffffffffffffffffffffffffffffffffffffff81167306d756861de0724fad5b5636124e0f252d3c140414156121f6578686838181106121e8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135925061226b565b73ffffffffffffffffffffffffffffffffffffffff811673ba485b556399123261a5f9c95d413b4f93107407141561226b57868683818110612261577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013593505b508061227681614163565b9150506120aa565b506040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490527337d9d2c6035b744849c15f1bfee8f268a20fcbd890632e1a7d4d90602401600060405180830381600087803b1580156122e557600080fd5b505af11580156122f9573d6000803e3d6000fd5b50506040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490527306d756861de0724fad5b5636124e0f252d3c14049250632e1a7d4d9150602401600060405180830381600087803b15801561236357600080fd5b505af1158015612377573d6000803e3d6000fd5b50506040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810185905273ba485b556399123261a5f9c95d413b4f931074079250632e1a7d4d91506024015b600060405180830381600087803b1580156123e257600080fd5b505af115801561198f573d6000803e3d6000fd5b6060831561240557508161172e565b8251156124155782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b09190613f6c565b6040805160028082526060820183526000928392919060208301908036833701905050905084816000815181106124a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110612532577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff929092166020928302919091018201526040805160808082018352308083526000838601819052838501919091526060808401829052845160a08101865289815280870183905260018187018190529181018b9052855196870186528287529283019590955283518581528085019094529193909290816020015b6125f76040518060a0016040528060008019168152602001600081526020016000815260200160008152602001606081525090565b8152602001906001900390816125c25790505090508181600081518110612647577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60209081029190910101526040805160028082526060820190925273ba12222222228d8ba445958a75a0704d566bf2c8916000919081602001602082028036833701905050905068056bc75e2d63100000816000815181106126d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505068056bc75e2d6310000081600181518110612722577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60209081029190910101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61278473ffffffffffffffffffffffffffffffffffffffff8c1673ba12222222228d8ba445958a75a0704d566bf2c8600061154f565b6127c973ffffffffffffffffffffffffffffffffffffffff8c1673ba12222222228d8ba445958a75a0704d566bf2c86fffffffffffffffffffffffffffffffff61154f565b6040517f945bcec900000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063945bcec99061282890849089908d908d908a908a90600401613e1f565b600060405180830381600087803b15801561284257600080fd5b505af1158015612856573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261289c9190810190613a37565b9050806001815181106128d8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151985050505050505050509392505050565b60006103e883101561290557506000611c38565b73ffffffffffffffffffffffffffffffffffffffff851673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2148015612967575073ffffffffffffffffffffffffffffffffffffffff8416733472a5a71965499acd81997a54bba8d852c6e53d145b1561297c5761297583612e0d565b9050611c38565b60408051600280825260608201835260009260208301908036833701905050905085816000815181106129d8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508481600181518110612a4d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff929092166020928302919091018201526040805160808082018352308083526000838601819052838501919091526060808401829052845160a08101865289815280870183905260018187018190529181018b9052855196870186528287529283019590955283518581528085019094529193909290816020015b612b126040518060a0016040528060008019168152602001600081526020016000815260200160008152602001606081525090565b815260200190600190039081612add5790505090508181600081518110612b62577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60209081029190910101526040805160028082526060820190925273ba12222222228d8ba445958a75a0704d566bf2c8916000919081602001602082028036833701905050905068056bc75e2d6310000081600081518110612bed577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505068056bc75e2d6310000081600181518110612c3d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60209081029190910101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612c9f73ffffffffffffffffffffffffffffffffffffffff8d1673ba12222222228d8ba445958a75a0704d566bf2c8600061154f565b612ce473ffffffffffffffffffffffffffffffffffffffff8d1673ba12222222228d8ba445958a75a0704d566bf2c86fffffffffffffffffffffffffffffffff61154f565b6040517f945bcec900000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063945bcec990612d4390849089908d908d908a908a90600401613e1f565b600060405180830381600087803b158015612d5d57600080fd5b505af1158015612d71573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612db79190810190613a37565b905080600181518110612df3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015198505050505050505050949350505050565b604080516003808252608082019092526000918291906020820160608036833701905050905073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600081518110612e82577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050732260fac5e5542a773aa44fbcfedf7c193bc2c59981600181518110612f0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050733472a5a71965499acd81997a54bba8d852c6e53d81600281518110612f94577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff929092166020928302919091018201526040805160808082018352308083526000838601819052838501919091526060808401829052845160a080820187527fa6f548df93de924d73be7d25dc02554c6bd66db500020000000000000000000e825281880184905260018288018190528284018c90528751808a01895285815283870152875191820188527fb460daa847c45f1c4a41cb05bfb3b51c92e41b360002000000000000000001948252818901526002818801819052818401859052875198890188528489529481019790975285518481529182019095529294929091816020015b6130c46040518060a0016040528060008019168152602001600081526020016000815260200160008152602001606081525090565b81526020019060019003908161308f5790505090508281600081518110613114577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181905250818160018151811061315a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60209081029190910101526040805160038082526080820190925273ba12222222228d8ba445958a75a0704d566bf2c8916000919081602001602082028036833701905050905068056bc75e2d63100000816000815181106131e5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505068056bc75e2d6310000081600181518110613235577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505068056bc75e2d6310000081600281518110613285577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60209081029190910101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6132e573c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ba12222222228d8ba445958a75a0704d566bf2c8600061154f565b61332873c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ba12222222228d8ba445958a75a0704d566bf2c86fffffffffffffffffffffffffffffffff61154f565b6040517f945bcec900000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063945bcec99061338790849089908e908e908a908a90600401613e1f565b600060405180830381600087803b1580156133a157600080fd5b505af11580156133b5573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526133fb9190810190613a37565b905080600281518110613437577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519950505050505050505050919050565b604080516002808252606082018352600092602083019080368337019050509050732260fac5e5542a773aa44fbcfedf7c193bc2c599816000815181106134bf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050733472a5a71965499acd81997a54bba8d852c6e53d81600181518110613548577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff92909216602092830291909101820152604080516002808252606082018352600093919290918301908036833701905050905083816000815181106135cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250508281600181518110613612577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250506000600182600160405160200161363793929190613de6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181526080830182528583526020830185905290820181905260006060830181905290925073ba12222222228d8ba445958a75a0704d566bf2c8906136bb90732260fac5e5542a773aa44fbcfedf7c193bc2c59990839061154f565b6136fe732260fac5e5542a773aa44fbcfedf7c193bc2c59973ba12222222228d8ba445958a75a0704d566bf2c86fffffffffffffffffffffffffffffffff61154f565b613732733472a5a71965499acd81997a54bba8d852c6e53d73ba12222222228d8ba445958a75a0704d566bf2c8600061154f565b613775733472a5a71965499acd81997a54bba8d852c6e53d73ba12222222228d8ba445958a75a0704d566bf2c86fffffffffffffffffffffffffffffffff61154f565b6040517fb95cac2800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063b95cac28906123c8907fb460daa847c45f1c4a41cb05bfb3b51c92e41b3600020000000000000000019490309081908890600401613d28565b8035611cb881614229565b60008083601f840112613809578182fd5b50813567ffffffffffffffff811115613820578182fd5b6020830191508360208260051b850101111561383b57600080fd5b9250929050565b600060208284031215613853578081fd5b813561172e81614229565b60006020828403121561386f578081fd5b815161172e81614229565b6000806040838503121561388c578081fd5b823561389781614229565b915060208301356138a781614229565b809150509250929050565b600080600080600080600080600080600060e08c8e0312156138d2578687fd5b67ffffffffffffffff808d3511156138e8578788fd5b6138f58e8e358f016137f8565b909c509a5060208d013581101561390a578788fd5b61391a8e60208f01358f016137f8565b909a50985060408d0135975060608d0135965060808d013581101561393d578586fd5b61394d8e60808f01358f016137f8565b909650945060a08d0135811015613962578384fd5b506139738d60a08e01358e016137f8565b909350915061398460c08d016137ed565b90509295989b509295989b9093969950565b600060208083850312156139a8578182fd5b823567ffffffffffffffff8111156139be578283fd5b8301601f810185136139ce578283fd5b80356139e16139dc82613fce565b613f7f565b80828252848201915084840188868560051b8701011115613a00578687fd5b8694505b83851015613a2b578035613a1781614229565b835260019490940193918501918501613a04565b50979650505050505050565b60006020808385031215613a49578182fd5b825167ffffffffffffffff811115613a5f578283fd5b8301601f81018513613a6f578283fd5b8051613a7d6139dc82613fce565b80828252848201915084840188868560051b8701011115613a9c578687fd5b8694505b83851015613a2b578051835260019490940193918501918501613aa0565b600060208284031215613acf578081fd5b813561172e8161424b565b600060208284031215613aeb578081fd5b815161172e8161424b565b600060208284031215613b07578081fd5b5035919050565b600060208284031215613b1f578081fd5b5051919050565b60008060408385031215613b38578182fd5b8235915060208301356138a781614229565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613b7b578081fd5b8260051b80836020870137939093016020019283525090919050565b6000815180845260208085019450808401835b83811015613bdc57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613baa565b509495945050505050565b6000815180845260208085019450808401835b83811015613bdc57815187529582019590820190600101613bfa565b60008151808452613c2e816020860160208601614137565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008251613c72818460208701614137565b9190910192915050565b60c080825281018a905260008b60e08301825b8d811015613ccc578235613ca281614229565b73ffffffffffffffffffffffffffffffffffffffff16825260209283019290910190600101613c8f565b508381036020850152613ce0818c8e613b4a565b9150508860408401528760608401528281036080840152613d02818789613b4a565b905082810360a0840152613d17818587613b4a565b9d9c50505050505050505050505050565b848152600073ffffffffffffffffffffffffffffffffffffffff8086166020840152808516604084015250608060608301528251608080840152613d70610100840182613b97565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80808584030160a0860152613dac8383613be7565b925060408601519150808584030160c086015250613dca8282613c16565b9150506060840151151560e08401528091505095945050505050565b600060058510613df857613df86141cb565b84825260606020830152613e0f6060830185613be7565b9050826040830152949350505050565b600061012080830160028a10613e3757613e376141cb565b89845260208085019290925288519081905261014080850192600583901b8601909101918a8201855b82811015613ee0578785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec00186528151805186528481015185870152604080820151908701526060808201519087015260809081015160a091870182905290613ecc81880183613c16565b978601979650505090830190600101613e60565b505050508381036040850152613ef68189613b97565b915050613f45606084018773ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e0840152613f578186613be7565b91505082610100830152979650505050505050565b60208152600061172e6020830184613c16565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613fc657613fc66141fa565b604052919050565b600067ffffffffffffffff821115613fe857613fe86141fa565b5060051b60200190565b600082614026577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8184138284138583048511828216161561406a5761406a61419c565b7f8000000000000000000000000000000000000000000000000000000000000000848712868205881281841616156140a4576140a461419c565b8587129250878205871284841616156140bf576140bf61419c565b878505871281841616156140d5576140d561419c565b505050929093029392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561411b5761411b61419c565b500290565b6000828210156141325761413261419c565b500390565b60005b8381101561415257818101518382015260200161413a565b8381111561086e5750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156141955761419561419c565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146112e957600080fd5b80151581146112e957600080fdfea26469706673582212201e5cabfc1f3f7ad74b58332a8667185105772c92cac259ac2410d76be5e14ddd64736f6c63430008040033000000000000000000000000d49fe5eab1037a31eb2cef87172debcc55f3677e00000000000000000000000063ad745506bd6a3e57f764409a47ed004bec40b1000000000000000000000000b460daa847c45f1c4a41cb05bfb3b51c92e41b3600000000000000000000000063ad745506bd6a3e57f764409a47ed004bec40b1000000000000000000000000660802fc641b154aba66a62137e71f331b6d787a