0x60a06040523480156200001157600080fd5b506200001c620000b2565b6200002733620000ff565b62000032816200014f565b50604051620000446020820162000204565b601f19828203810183526000601f9092011690815260208101604090815262000071913091810162000253565b60408051601f198184030181529082905262000091929160200162000297565b60408051601f198184030181529190528051602090910120608052620002ca565b6000806000604051620000c59062000212565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620000f9573d6000803e3d6000fd5b50905090565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6200016581620001fe60201b620008f71760201c565b620001dc5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b3b151590565b610a848062001b4483390190565b615ad580620025c883390190565b60005b838110156200023d57818101518382015260200162000223565b838111156200024d576000848401525b50505050565b60018060a01b038316815260406020820152600082518060408401526200028281606085016020870162000220565b601f01601f1916919091016060019392505050565b60008351620002ab81846020880162000220565b835190830190620002c181836020880162000220565b01949350505050565b60805161185e620002e66000396000610698015261185e6000f3fe60806040523480156200001157600080fd5b5060043610620000d95760003560e01c80635c60da1b116200008b578063bec595821162000062578063bec5958214620001ea578063e74b981b1462000201578063f2fde38b146200021857600080fd5b80635c60da1b14620001a2578063715018a614620001c15780638da5cb5b14620001cb57600080fd5b806331f8a7f311620000c057806331f8a7f3146200012d5780633659cfe6146200016a57806346904840146200018157600080fd5b80630e986d7f14620000de5780632ccc552e1462000114575b600080fd5b62000101620000ef36600462000ae1565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b6200012b6200012536600462000b25565b6200022f565b005b620001446200013e36600462000bea565b6200037f565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016200010b565b6200012b6200017b36600462000c26565b620004ed565b600254620001449073ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1662000144565b6200012b620005bf565b60005473ffffffffffffffffffffffffffffffffffffffff1662000144565b62000144620001fb36600462000c46565b62000650565b6200012b6200021236600462000c26565b620006c5565b6200012b6200022936600462000c26565b620007c1565b60005473ffffffffffffffffffffffffffffffffffffffff163314620002b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60005b8281101562000379576000848483818110620002d957620002d962000c80565b9050602002016020810190620002f0919062000ae1565b7fffffffff0000000000000000000000000000000000000000000000000000000081166000818152600360205260409081902086905551919250907f42cefd6e3811b091d9fd2b2afcc062bae53bc3290e79b6ee03fa8f2f0c1ac49f906200035b9086815260200190565b60405180910390a25080620003708162000caf565b915050620002b9565b50505050565b604080516000808252602082019092523360a085901b7fffffffffffffffffffffffff000000000000000000000000000000000000000016179081903090604051620003cb9062000ad3565b620003d892919062000d10565b8190604051809103906000f5905080158015620003f9573d6000803e3d6000fd5b506040517f485cc95500000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff85811660248301529193509083169063485cc95590604401600060405180830381600087803b1580156200046e57600080fd5b505af115801562000483573d6000803e3d6000fd5b50506040516bffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff80871693508516915033907f59da2778b791ed5f2be380282959631fc07669426505cc411dce116af076d56e9060200160405180910390a45092915050565b60005473ffffffffffffffffffffffffffffffffffffffff16331462000570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620002ad565b6200057b81620008fd565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff16331462000642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620002ad565b6200064e6000620009d4565b565b60007fffffffffffffffffffffffff000000000000000000000000000000000000000060a083901b1673ffffffffffffffffffffffffffffffffffffffff841617620006bd817f000000000000000000000000000000000000000000000000000000000000000062000a49565b949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331462000748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620002ad565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f6632de8ab33c46549f7bb29f647ea0d751157b25fe6a14b1bcc7527cdfbeb79c9060200160405180910390a150565b60005473ffffffffffffffffffffffffffffffffffffffff16331462000844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620002ad565b73ffffffffffffffffffffffffffffffffffffffff8116620008e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401620002ad565b620008f481620009d4565b50565b3b151590565b803b6200098d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e7472616374000000000000000000000000006064820152608401620002ad565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080517fff000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000905b9392505050565b610a848062000da583390190565b60006020828403121562000af457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811462000acc57600080fd5b60008060006040848603121562000b3b57600080fd5b833567ffffffffffffffff8082111562000b5457600080fd5b818601915086601f83011262000b6957600080fd5b81358181111562000b7957600080fd5b8760208260051b850101111562000b8f57600080fd5b6020928301989097509590910135949350505050565b80356bffffffffffffffffffffffff8116811462000bc257600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff81168114620008f457600080fd5b6000806040838503121562000bfe57600080fd5b62000c098362000ba5565b9150602083013562000c1b8162000bc7565b809150509250929050565b60006020828403121562000c3957600080fd5b813562000acc8162000bc7565b6000806040838503121562000c5a57600080fd5b823562000c678162000bc7565b915062000c776020840162000ba5565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000d09577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8316815260006020604081840152835180604085015260005b8181101562000d5c5785810183015185820160600152820162000d3e565b8181111562000d6f576000606083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160600194935050505056fe608060405260405162000a8438038062000a848339810160408190526200002691620004d4565b6200005360017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d51620005a2565b60008051602062000a3d83398151915214620000735762000073620005c8565b620000818282600062000089565b50506200064f565b62000094836200016e565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a2600082511180620000d65750805b15620001695762000167836001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200011a57600080fd5b505afa1580156200012f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001559190620005de565b836200031f60201b620000291760201c565b505b505050565b62000184816200034e60201b620000551760201c565b620001e45760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6200026e816001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022257600080fd5b505afa15801562000237573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025d9190620005de565b6200034e60201b620000551760201c565b620002d55760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401620001db565b80620002fe60008051602062000a3d83398151915260001b6200035460201b6200005b1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b606062000347838360405180606001604052806027815260200162000a5d6027913962000357565b9392505050565b3b151590565b90565b6060833b620003b85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001db565b600080856001600160a01b031685604051620003d59190620005fc565b600060405180830381855af49150503d806000811462000412576040519150601f19603f3d011682016040523d82523d6000602084013e62000417565b606091505b5090925090506200042a82828662000434565b9695505050505050565b606083156200044557508162000347565b825115620004565782518084602001fd5b8160405162461bcd60e51b8152600401620001db91906200061a565b80516001600160a01b03811681146200048a57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004c2578181015183820152602001620004a8565b83811115620001675750506000910152565b60008060408385031215620004e857600080fd5b620004f38362000472565b60208401519092506001600160401b03808211156200051157600080fd5b818501915085601f8301126200052657600080fd5b8151818111156200053b576200053b6200048f565b604051601f8201601f19908116603f011681019083821181831017156200056657620005666200048f565b816040528281528860208487010111156200058057600080fd5b62000593836020830160208801620004a5565b80955050505050509250929050565b600082821015620005c357634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600060208284031215620005f157600080fd5b620003478262000472565b6000825162000610818460208701620004a5565b9190910192915050565b60208152600082518060208401526200063b816040850160208701620004a5565b601f01601f19169190910160400192915050565b6103de806200065f6000396000f3fe60806040523661001357610011610017565b005b6100115b61002761002261005e565b610120565b565b606061004e838360405180606001604052806027815260200161038260279139610144565b9392505050565b3b151590565b90565b600061009e7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d505473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100e357600080fd5b505afa1580156100f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011b91906102ae565b905090565b3660008037600080366000845af43d6000803e80801561013f573d6000f35b3d6000fd5b6060833b6101d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516102019190610314565b600060405180830381855af49150503d806000811461023c576040519150601f19603f3d011682016040523d82523d6000602084013e610241565b606091505b509150915061025182828661025b565b9695505050505050565b6060831561026a57508161004e565b82511561027a5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d09190610330565b6000602082840312156102c057600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461004e57600080fd5b60005b838110156102ff5781810151838201526020016102e7565b8381111561030e576000848401525b50505050565b600082516103268184602087016102e4565b9190910192915050565b602081526000825180602084015261034f8160408501602087016102e4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cc40463d762d54130ecace4a06e8dae4a0d1c925a882d9104aa13a995affe78c64736f6c63430008090033a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ddd0f4b6690049b8fa1e020d21c56655d4a3c2faf90110e1cfb00132e3f61c5f64736f6c63430008090033608060405260405162000a8438038062000a848339810160408190526200002691620004d4565b6200005360017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d51620005a2565b60008051602062000a3d83398151915214620000735762000073620005c8565b620000818282600062000089565b50506200064f565b62000094836200016e565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a2600082511180620000d65750805b15620001695762000167836001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200011a57600080fd5b505afa1580156200012f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001559190620005de565b836200031f60201b620000291760201c565b505b505050565b62000184816200034e60201b620000551760201c565b620001e45760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6200026e816001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022257600080fd5b505afa15801562000237573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025d9190620005de565b6200034e60201b620000551760201c565b620002d55760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401620001db565b80620002fe60008051602062000a3d83398151915260001b6200035460201b6200005b1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b606062000347838360405180606001604052806027815260200162000a5d6027913962000357565b9392505050565b3b151590565b90565b6060833b620003b85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001db565b600080856001600160a01b031685604051620003d59190620005fc565b600060405180830381855af49150503d806000811462000412576040519150601f19603f3d011682016040523d82523d6000602084013e62000417565b606091505b5090925090506200042a82828662000434565b9695505050505050565b606083156200044557508162000347565b825115620004565782518084602001fd5b8160405162461bcd60e51b8152600401620001db91906200061a565b80516001600160a01b03811681146200048a57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004c2578181015183820152602001620004a8565b83811115620001675750506000910152565b60008060408385031215620004e857600080fd5b620004f38362000472565b60208401519092506001600160401b03808211156200051157600080fd5b818501915085601f8301126200052657600080fd5b8151818111156200053b576200053b6200048f565b604051601f8201601f19908116603f011681019083821181831017156200056657620005666200048f565b816040528281528860208487010111156200058057600080fd5b62000593836020830160208801620004a5565b80955050505050509250929050565b600082821015620005c357634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600060208284031215620005f157600080fd5b620003478262000472565b6000825162000610818460208701620004a5565b9190910192915050565b60208152600082518060208401526200063b816040850160208701620004a5565b601f01601f19169190910160400192915050565b6103de806200065f6000396000f3fe60806040523661001357610011610017565b005b6100115b61002761002261005e565b610120565b565b606061004e838360405180606001604052806027815260200161038260279139610144565b9392505050565b3b151590565b90565b600061009e7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d505473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100e357600080fd5b505afa1580156100f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011b91906102ae565b905090565b3660008037600080366000845af43d6000803e80801561013f573d6000f35b3d6000fd5b6060833b6101d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516102019190610314565b600060405180830381855af49150503d806000811461023c576040519150601f19603f3d011682016040523d82523d6000602084013e610241565b606091505b509150915061025182828661025b565b9695505050505050565b6060831561026a57508161004e565b82511561027a5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d09190610330565b6000602082840312156102c057600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461004e57600080fd5b60005b838110156102ff5781810151838201526020016102e7565b8381111561030e576000848401525b50505050565b600082516103268184602087016102e4565b9190910192915050565b602081526000825180602084015261034f8160408501602087016102e4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cc40463d762d54130ecace4a06e8dae4a0d1c925a882d9104aa13a995affe78c64736f6c63430008090033a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656460806040523480156200001157600080fd5b5060405162005ad538038062005ad58339810160408190526200003491620001f1565b6200003f3362000058565b6001600255620000508282620000aa565b505062000229565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600354610100900460ff1680620000c4575060035460ff16155b6200012c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b600354610100900460ff161580156200014f576003805461ffff19166101011790555b6200015a8362000193565b600b80546001600160a01b0319166001600160a01b038416179055600019600f5580156200018e576003805461ff00191690555b505050565b6200019e8162000058565b506003805462010000600160b01b031916336201000002179055426005556009805460ff19169055670de0b6b3a7640000600a55565b80516001600160a01b0381168114620001ec57600080fd5b919050565b600080604083850312156200020557600080fd5b6200021083620001d4565b91506200022060208401620001d4565b90509250929050565b61589c80620002396000396000f3fe6080604052600436106102e65760003560e01c806388e271b611610184578063cbecf6b5116100d6578063dfe138a61161008a578063f23a6e6111610064578063f23a6e611461094a578063f2fde38b1461098f578063f8077fae146109af57600080fd5b8063dfe138a6146108fa578063e6ab485414610914578063e72f6e301461092a57600080fd5b8063d1941b06116100bb578063d1941b06146108b4578063d568f00e146108c7578063dd467064146108da57600080fd5b8063cbecf6b514610809578063cc33c8751461086b57600080fd5b80639f181b5e11610138578063bc197c8111610112578063bc197c8114610733578063c3bfeb53146107a9578063c45a0155146107d657600080fd5b80639f181b5e146106e8578063aad30e42146106fe578063abb06b951461071e57600080fd5b80638ed955b9116101695780638ed955b9146106a057806395b881de146106a85780639ced7e76146106c857600080fd5b806388e271b6146106555780638da5cb5b1461067557600080fd5b8063485cc9551161023d5780636bd3b87c116101f1578063715018a6116101cb578063715018a6146106005780637811dd3a146106155780637de1e5361461062857600080fd5b80636bd3b87c146105735780636eef7a78146105ca5780636f2c590a146105ea57600080fd5b80635d0cde97116102225780635d0cde97146104aa5780635f3b443a146104bf57806366993646146104db57600080fd5b8063485cc95514610445578063509b6c3f1461046557600080fd5b806318c08f261161029f5780633a98ef39116102795780633a98ef39146103e25780633d509c97146103f857806343dcbe691461041857600080fd5b806318c08f261461038f5780631c03e6cc146103a25780633355ffac146103c257600080fd5b8063043063bc116102d0578063043063bc1461034257806307c4e48b146103665780630e5c011e1461037c57600080fd5b806206c617146102eb57806301ffc9a71461030d575b600080fd5b3480156102f757600080fd5b5061030b610306366004614d99565b6109c5565b005b34801561031957600080fd5b5061032d610328366004614dc5565b610b37565b60405190151581526020015b60405180910390f35b34801561034e57600080fd5b5061035861016d81565b604051908152602001610339565b34801561037257600080fd5b50610358600e5481565b61030b61038a366004614e07565b610bd0565b61030b61039d366004614e69565b610e6a565b3480156103ae57600080fd5b5061030b6103bd366004614e07565b611338565b3480156103ce57600080fd5b5061030b6103dd366004614eab565b611580565b3480156103ee57600080fd5b5061035860045481565b34801561040457600080fd5b5061030b610413366004614e07565b611734565b34801561042457600080fd5b50610358610433366004614e07565b60086020526000908152604090205481565b34801561045157600080fd5b5061030b610460366004614ecd565b611a40565b34801561047157600080fd5b50610485610480366004614f06565b611bc5565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610339565b3480156104b657600080fd5b50610358600a81565b3480156104cb57600080fd5b50610358670de0b6b3a764000081565b3480156104e757600080fd5b506105586104f6366004614ecd565b6040805180820182526000808252602091820181905273ffffffffffffffffffffffffffffffffffffffff9485168152600882528281209390941684526001928301815292819020815180830190925280548252909101549181019190915290565b60408051825181526020928301519281019290925201610339565b34801561057f57600080fd5b506105af61058e366004614e07565b60006020819052908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610339565b3480156105d657600080fd5b5061030b6105e5366004614f2d565b611bfc565b3480156105f657600080fd5b50610358600a5481565b34801561060c57600080fd5b5061030b611d03565b61030b610623366004614f4a565b611d90565b34801561063457600080fd5b50600b546104859073ffffffffffffffffffffffffffffffffffffffff1681565b34801561066157600080fd5b5061030b610670366004614d99565b61238e565b34801561068157600080fd5b5060015473ffffffffffffffffffffffffffffffffffffffff16610485565b61030b612590565b3480156106b457600080fd5b506103586106c3366004614e07565b6127d4565b3480156106d457600080fd5b506103586106e3366004614ecd565b6128aa565b3480156106f457600080fd5b50610358600c5481565b34801561070a57600080fd5b5061030b610719366004614fce565b6129f5565b34801561072a57600080fd5b50600654610358565b34801561073f57600080fd5b5061077861074e3660046151c9565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610339565b3480156107b557600080fd5b506103586107c4366004614e07565b60106020526000908152604090205481565b3480156107e257600080fd5b506003546104859062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561081557600080fd5b5061084b610824366004614e07565b60076020526000908152604090208054600182015460028301546003909301549192909184565b604080519485526020850193909352918301526060820152608001610339565b34801561087757600080fd5b5061089f610886366004614f06565b600d602052600090815260409020805460019091015482565b60408051928352602083019190915201610339565b61030b6108c2366004614e69565b612e0e565b61030b6108d5366004614f4a565b6132cd565b3480156108e657600080fd5b5061030b6108f5366004614f06565b61392b565b34801561090657600080fd5b5060095461032d9060ff1681565b34801561092057600080fd5b50610358600f5481565b34801561093657600080fd5b50610358610945366004614e07565b613a48565b34801561095657600080fd5b50610778610965366004615277565b7ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b34801561099b57600080fd5b5061030b6109aa366004614e07565b613bca565b3480156109bb57600080fd5b5061035860055481565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b610a53613cfa565b73ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604090208054610ae0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f756e6b6e6f776e20746f6b656e000000000000000000000000000000000000006044820152606401610a42565b6002810182905560405182815273ffffffffffffffffffffffffffffffffffffffff8416907f1db4bb723cb902ca89ee9de44648632638ceb6623dcfa7366a851881852300d49060200160405180910390a2505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e0000000000000000000000000000000000000000000000000000000001480610bca57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600280541415610c3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a42565b60028055600080610c4d36826152e0565b6003546040517f0e986d7f0000000000000000000000000000000000000000000000000000000081527fffffffff00000000000000000000000000000000000000000000000000000000831660048201529192506000916201000090910473ffffffffffffffffffffffffffffffffffffffff1690630e986d7f9060240160206040518083038186803b158015610ce357600080fd5b505afa158015610cf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1b9190615328565b9050610d278184615370565b3414610d8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c69642076616c7565000000000000000000000000000000000000006044820152606401610a42565b8015610e5557610e5581600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663469048406040518163ffffffff1660e01b815260040160206040518083038186803b158015610e0157600080fd5b505afa158015610e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e399190615388565b73ffffffffffffffffffffffffffffffffffffffff1690613e3c565b5050610e613383613f96565b50506001600255565b600280541415610ed6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a42565b60028055600080610ee736826152e0565b6003546040517f0e986d7f0000000000000000000000000000000000000000000000000000000081527fffffffff00000000000000000000000000000000000000000000000000000000831660048201529192506000916201000090910473ffffffffffffffffffffffffffffffffffffffff1690630e986d7f9060240160206040518083038186803b158015610f7d57600080fd5b505afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615328565b9050610fc18184615370565b3414611029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c69642076616c7565000000000000000000000000000000000000006044820152606401610a42565b801561109b5761109b81600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663469048406040518163ffffffff1660e01b815260040160206040518083038186803b158015610e0157600080fd5b50506110a633613fe7565b503360009081526010602052604081208391808367ffffffffffffffff8111156110d2576110d2615048565b6040519080825280602002602001820160405280156110fb578160200160208202803683370190505b50905060005b848110156111a457600088888381811061111d5761111d6153a5565b60209081029290920135600081815260018901845260408082208054838255600d909652908220805493965090949350839290919061115d9084906153d4565b9091555061116d90508187615370565b955080858581518110611182576111826153a5565b602002602001018181525050505050808061119c906153eb565b915050611101565b508254828114611210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e636f6d706c657465206c69737400000000000000000000000000000000006044820152606401610a42565b82156112ce576000808555600b546040805192835260208301908190527f2eb2c2d600000000000000000000000000000000000000000000000000000000905273ffffffffffffffffffffffffffffffffffffffff1690632eb2c2d69061128490309033908d908d90899060248101615524565b600060405180830381600087803b15801561129e57600080fd5b505af11580156112b2573d6000803e3d6000fd5b5050505082600c60008282546112c891906153d4565b90915550505b3373ffffffffffffffffffffffffffffffffffffffff167f4f38ef0b69449514b53d993e432ebc310902345b0a770ae4dc83b99ae12aff6c89898560405161131893929190615591565b60405180910390a2611329336140c1565b50506001600255505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146113b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a42565b6113c1613cfa565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260076020526040902080541561144f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6475706c696361746520746f6b656e00000000000000000000000000000000006044820152606401610a42565b600654600a81106114bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6c696d69742072656163686564000000000000000000000000000000000000006044820152606401610a42565b60068054600180820183556000929092527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616179055611538908290615370565b825560405173ffffffffffffffffffffffffffffffffffffffff8416907f851bbb4304bf0768ed98b97e429b5bd1dcc1f194b36cd1650f40293e951ae39390600090a2505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314611601576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a42565b8082111561166b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c6964206c696d6974730000000000000000000000000000000000006044820152606401610a42565b600c54156116ed57600e548211158015611687575080600f5411155b6116ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f756e657870616e646564206c696d6974730000000000000000000000000000006044820152606401610a42565b600e829055600f81905560408051838152602081018390527f7b0e4f7d04c9ce35dcb1e1370d62110185eb169c88452622c70f96d78a3cad3f910160405180910390a15050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146117b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a42565b6117bd613cfa565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260076020526040902080548061184b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f756e6b6e6f776e20746f6b656e000000000000000000000000000000000000006044820152606401610a42565b6001820154156118b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f70656e64696e67207265776172640000000000000000000000000000000000006044820152606401610a42565b60008083556002830181905560038301556006548082101561199057600060066118e26001846153d4565b815481106118f2576118f26153a5565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168083526007909152604090912084905590508060066119366001866153d4565b81548110611946576119466153a5565b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b60068054806119a1576119a16155c1565b60008281526020812082017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590910190915560405173ffffffffffffffffffffffffffffffffffffffff8616917f36bd04094fa067bb9471a8fbdb0a6e8a43424a2566ad3a740c88973fa40a311891a250505050565b600354610100900460ff1680611a59575060035460ff16155b611ae5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610a42565b600354610100900460ff16158015611b2457600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b611b2d8361413a565b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600f558015611bc057600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b505050565b60068181548110611bd557600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60015473ffffffffffffffffffffffffffffffffffffffff163314611c7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a42565b611c85613cfa565b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682151517905580611cc457670de0b6b3a7640000611cc8565b6004545b600a5560405181151581527f3070602ec40a9344ebb1e5efa4731dc84be5f7b23bbe1ee962a966176e696bbf9060200160405180910390a150565b60015473ffffffffffffffffffffffffffffffffffffffff163314611d84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a42565b611d8e60006141ad565b565b600280541415611dfc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a42565b60028055600080611e0d36826152e0565b6003546040517f0e986d7f0000000000000000000000000000000000000000000000000000000081527fffffffff00000000000000000000000000000000000000000000000000000000831660048201529192506000916201000090910473ffffffffffffffffffffffffffffffffffffffff1690630e986d7f9060240160206040518083038186803b158015611ea357600080fd5b505afa158015611eb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611edb9190615328565b9050611ee78184615370565b3414611f4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c69642076616c7565000000000000000000000000000000000000006044820152606401610a42565b8015611fc157611fc181600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663469048406040518163ffffffff1660e01b815260040160206040518083038186803b158015610e0157600080fd5b50508115611fd257611fd233614224565b8483811461203c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c6964206c656e6774680000000000000000000000000000000000006044820152606401610a42565b33600090815260106020526040812090805b838110156121025760008a8a8381811061206a5761206a6153a5565b9050602002013590506000898984818110612087576120876153a5565b9050602002013590508085600101600084815260200190815260200160002060000160008282546120b89190615370565b90915550506000828152600d6020526040812080548392906120db908490615370565b909155506120eb90508185615370565b9350505080806120fa906153eb565b91505061204e565b50815460006121118383615370565b905080156121935780600e541115801561212d5750600f548111155b612193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c69642062616c616e636500000000000000000000000000000000006044820152606401610a42565b821561225957808455600b5473ffffffffffffffffffffffffffffffffffffffff16632eb2c2d633308e8e8e8e60006040519080825280601f01601f1916602001820160405280156121ec576020820181803683370190505b506040518863ffffffff1660e01b815260040161220f97969594939291906155f0565b600060405180830381600087803b15801561222957600080fd5b505af115801561223d573d6000803e3d6000fd5b5050505082600c60008282546122539190615370565b90915550505b3373ffffffffffffffffffffffffffffffffffffffff167fb9dbc1274cee7131d155a093abd5d0ee37b318bb61a5a10b916a7ebfbf2e06118c8c8c8c6040516122a5949392919061565f565b60405180910390a260006122b8336142b4565b90506000805b8781101561234957600d60008f8f848181106122dc576122dc6153a5565b90506020020135815260200190815260200160002060010154670de0b6b3a76400006123089190615686565b8c8c8381811061231a5761231a6153a5565b9050602002013561232b91906156fa565b6123359083615370565b915080612341816153eb565b9150506122be565b5061237a33670de0b6b3a764000061236185856156fa565b61236b9190615766565b6123759084615370565b6142f6565b505060016002555050505050505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff16331461240f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a42565b60028054141561247b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a42565b60028055612487613cfa565b73ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604090208054612514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f756e6b6e6f776e20746f6b656e000000000000000000000000000000000000006044820152606401610a42565b61253673ffffffffffffffffffffffffffffffffffffffff841633308561437b565b8273ffffffffffffffffffffffffffffffffffffffff167f2386108be9237e6cebb631ec77ea4474231e519e0b4963993a76350110b011738360405161257e91815260200190565b60405180910390a25050600160025550565b6002805414156125fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a42565b6002805560008061260d36826152e0565b6003546040517f0e986d7f0000000000000000000000000000000000000000000000000000000081527fffffffff00000000000000000000000000000000000000000000000000000000831660048201529192506000916201000090910473ffffffffffffffffffffffffffffffffffffffff1690630e986d7f9060240160206040518083038186803b1580156126a357600080fd5b505afa1580156126b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126db9190615328565b90506126e78184615370565b341461274f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c69642076616c7565000000000000000000000000000000000000006044820152606401610a42565b80156127c1576127c181600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663469048406040518163ffffffff1660e01b815260040160206040518083038186803b158015610e0157600080fd5b50506127cc33614224565b506001600255565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8316906370a082319060240160206040518083038186803b15801561283c57600080fd5b505afa158015612850573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128749190615328565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260076020526040902060010154909150610bca90826153d4565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260076020526040812060038101546005544211156129755760045415612975576000670de0b6b3a7640000600a5484600201546005544261290791906153d4565b61291191906156fa565b61291b91906156fa565b6129259190615766565b90506000612932866127d4565b905080821115612940578091505b81156129725760045461295b83670de0b6b3a76400006156fa565b6129659190615766565b61296f9084615370565b92505b50505b73ffffffffffffffffffffffffffffffffffffffff808616600090815260086020908152604080832093881683526001808501909252909120908101548254670de0b6b3a764000091906129ca9086906156fa565b6129d491906153d4565b6129de9190615766565b81546129ea9190615370565b979650505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314612a76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a42565b83818114612ae0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c6964206c656e6774680000000000000000000000000000000000006044820152606401610a42565b837ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000013158015612b185750670de0b6b3a76400008413155b612b7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c6964207765696768740000000000000000000000000000000000006044820152606401610a42565b60005b81811015612dca576000878783818110612b9d57612b9d6153a5565b602090810292909201356000818152600d90935260408320600181018054908b90559194509290915080888887818110612bd957612bd96153a5565b9050602002810190612beb919061577a565b9050905060005b81811015612d475760008a8a89818110612c0e57612c0e6153a5565b9050602002810190612c20919061577a565b83818110612c3057612c306153a5565b9050602002016020810190612c459190614e07565b73ffffffffffffffffffffffffffffffffffffffff811660008181526010602090815260408083208c845260010182528083205493835290829052812060020154929350909190612c9e88670de0b6b3a7640000615686565b612ca890846156fa565b905060008f670de0b6b3a7640000612cc09190615686565b612cca90856156fa565b9050612d2385670de0b6b3a7640000612ce386866156fa565b612ced9190615766565b612cf79085615370565b670de0b6b3a7640000612d0a87866156fa565b612d149190615766565b612d1e9085615370565b614457565b612d2d8489615370565b975050505050508080612d3f906153eb565b915050612bf2565b5083548214612db2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e636f6d706c657465206c69737400000000000000000000000000000000006044820152606401610a42565b50505050508080612dc2906153eb565b915050612b81565b507fc5ae678582efeb4645ec116c037eca8fd76f6f9a12a0ee11b59f453d0c1153ee868686604051612dfe939291906157e2565b60405180910390a1505050505050565b600280541415612e7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a42565b60028055600080612e8b36826152e0565b6003546040517f0e986d7f0000000000000000000000000000000000000000000000000000000081527fffffffff00000000000000000000000000000000000000000000000000000000831660048201529192506000916201000090910473ffffffffffffffffffffffffffffffffffffffff1690630e986d7f9060240160206040518083038186803b158015612f2157600080fd5b505afa158015612f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f599190615328565b9050612f658184615370565b3414612fcd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c69642076616c7565000000000000000000000000000000000000006044820152606401610a42565b801561303f5761303f81600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663469048406040518163ffffffff1660e01b815260040160206040518083038186803b158015610e0157600080fd5b505061304a33613fe7565b503360009081526010602052604081208391808367ffffffffffffffff81111561307657613076615048565b60405190808252806020026020018201604052801561309f578160200160208202803683370190505b50905060005b848110156131485760008888838181106130c1576130c16153a5565b60209081029290920135600081815260018901845260408082208054838255600d90965290822080549396509094935083929091906131019084906153d4565b9091555061311190508187615370565b955080858581518110613126576131266153a5565b6020026020010181815250505050508080613140906153eb565b9150506130a5565b5082548281146131b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e636f6d706c657465206c69737400000000000000000000000000000000006044820152606401610a42565b8215613272576000808555600b546040805192835260208301908190527f2eb2c2d600000000000000000000000000000000000000000000000000000000905273ffffffffffffffffffffffffffffffffffffffff1690632eb2c2d69061322890309033908d908d90899060248101615524565b600060405180830381600087803b15801561324257600080fd5b505af1158015613256573d6000803e3d6000fd5b5050505082600c600082825461326c91906153d4565b90915550505b3373ffffffffffffffffffffffffffffffffffffffff167f0773ba041ec4aebd5a807d39e676fc384093c30e91ce1dfb778f07326eff3f098989856040516132bc93929190615591565b60405180910390a2611329336144eb565b600280541415613339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a42565b6002805560008061334a36826152e0565b6003546040517f0e986d7f0000000000000000000000000000000000000000000000000000000081527fffffffff00000000000000000000000000000000000000000000000000000000831660048201529192506000916201000090910473ffffffffffffffffffffffffffffffffffffffff1690630e986d7f9060240160206040518083038186803b1580156133e057600080fd5b505afa1580156133f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134189190615328565b90506134248184615370565b341461348c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c69642076616c7565000000000000000000000000000000000000006044820152606401610a42565b80156134fe576134fe81600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663469048406040518163ffffffff1660e01b815260040160206040518083038186803b158015610e0157600080fd5b5050811561350f5761350f33614224565b600061351a33613fe7565b905085848114613586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c6964206c656e6774680000000000000000000000000000000000006044820152606401610a42565b33600090815260106020526040812090805b838110156136c05760008b8b838181106135b4576135b46153a5565b90506020020135905060008a8a848181106135d1576135d16153a5565b905060200201359050600085600101600084815260200190815260200160002090508060000154821115613661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610a42565b8181600001600082825461367591906153d4565b90915550506000838152600d6020526040812080548492906136989084906153d4565b909155506136a890508286615370565b945050505080806136b8906153eb565b915050613598565b50815460006136cf83836153d4565b905080156137515780600e54111580156136eb5750600f548111155b613751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c69642062616c616e636500000000000000000000000000000000006044820152606401610a42565b821561381757808455600b5473ffffffffffffffffffffffffffffffffffffffff16632eb2c2d630338f8f8f8f60006040519080825280601f01601f1916602001820160405280156137aa576020820181803683370190505b506040518863ffffffff1660e01b81526004016137cd97969594939291906155f0565b600060405180830381600087803b1580156137e757600080fd5b505af11580156137fb573d6000803e3d6000fd5b5050505082600c600082825461381191906153d4565b90915550505b3373ffffffffffffffffffffffffffffffffffffffff167f0866fb01a49fbab3dd981edf27be5d63eb272fc376f9adbce67a67f6632257528d8d8d8d604051613863949392919061565f565b60405180910390a26000805b868110156138fa57600d60008f8f8481811061388d5761388d6153a5565b90506020020135815260200190815260200160002060010154670de0b6b3a76400006138b99190615686565b8c8c838181106138cb576138cb6153a5565b905060200201356138dc91906156fa565b6138e69083615370565b9150806138f2816153eb565b91505061386f565b5061237a33670de0b6b3a76400006139128a856156fa565b61391c9190615766565b6139269084615370565b614553565b600280541415613997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a42565b600280556000806139a833846145b9565b33600081815260086020908152604091829020805483518a81529283018690529597509395509293927f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b910160405180910390a2600081118015613a0c5750828414155b15613a3c57613a3c33670de0b6b3a7640000613a2887856156fa565b613a329190615766565b612cf79084615370565b50506001600255505050565b60015460009073ffffffffffffffffffffffffffffffffffffffff163314613acc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a42565b600280541415613b38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a42565b60028055613b44613cfa565b613b4d826127d4565b9050613b7073ffffffffffffffffffffffffffffffffffffffff83163383614793565b8173ffffffffffffffffffffffffffffffffffffffff167f4ba2f3b044735356db52c2c595cfedd05fa9d53ba8ae3c34bbe10a7096e1888d82604051613bb891815260200190565b60405180910390a26001600255919050565b60015473ffffffffffffffffffffffffffffffffffffffff163314613c4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a42565b73ffffffffffffffffffffffffffffffffffffffff8116613cee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610a42565b613cf7816141ad565b50565b600554421115611d8e5760045415613e3657600060055442613d1c91906153d4565b60065490915060005b81811015613e3257600060068281548110613d4257613d426153a5565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16808352600790915260408220600a546002820154929450909291670de0b6b3a76400009190613d9590896156fa565b613d9f91906156fa565b613da99190615766565b90506000613db6846127d4565b905080821115613dc4578091505b8115613e1b5781836001016000828254613dde9190615370565b9091555050600454613df883670de0b6b3a76400006156fa565b613e029190615766565b836003016000828254613e159190615370565b90915550505b505050508080613e2a906153eb565b915050613d25565b5050505b42600555565b80471015613ea6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610a42565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114613f00576040519150601f19603f3d011682016040523d82523d6000602084013e613f05565b606091505b5050905080611bc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610a42565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260086020526040902080548015613fd657613fcb613cfa565b613fd68282836147e9565b613fe18483856148bf565b50505050565b600080613ff76201518042615766565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208190526040902060018101549192509080156140b5578154808411801561404d57506140418282615806565b61404b8386615806565b145b6140b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6e6f7420617661696c61626c65000000000000000000000000000000000000006044820152606401610a42565b505b50600201549392505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040902080548015614130576140f6613cfa565b614102828260006147e9565b6000808355600480548392906141199084906153d4565b909155505060095460ff161561413057600454600a555b611bc083836149c0565b614143816141ad565b50600380547fffffffffffffffffffff0000000000000000000000000000000000000000ffff1633620100000217905542600555600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055670de0b6b3a7640000600a55565b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604090208054801561426457614259613cfa565b6142648282836147e9565b61426e83836149c0565b60405173ffffffffffffffffffffffffffffffffffffffff8416907f951da9d56bc4c88666815902e196576135a88dc5bdbcc4e8511e2054f61a152490600090a2505050565b6000806142c46201518042615766565b73ffffffffffffffffffffffffffffffffffffffff909316600090815260208190526040902092835550506002015490565b80156143775773ffffffffffffffffffffffffffffffffffffffff821660009081526008602052604081208054909161432f8483615370565b9050614339613cfa565b6143448383836147e9565b8083556004805485919060009061435c908490615370565b909155505060095460ff161561437357600454600a555b5050505b5050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052613fe19085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614a1f565b808214611bc05773ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260408120805490918361449286846153d4565b61449c9190615370565b90506144a6613cfa565b6144b18383836147e9565b80835560045484906144c49087906153d4565b6144ce9190615370565b60045560095460ff16156144e357600454600a555b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040902080548015611bc05761452182614b2b565b6000808355600480548392906145389084906153d4565b909155505060095460ff1615611bc057600454600a55505050565b80156143775773ffffffffffffffffffffffffffffffffffffffff821660009081526008602052604081208054909161458c84836153d4565b9050614596613cfa565b6145a18383836147e9565b8083556004805485919060009061435c9084906153d4565b600080806145ca6201518042615766565b73ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020600181015491925090808610156146e6578154600061460e8383615806565b9050600061461c8487615806565b9050600082821161465c578282106146425786841061463c576000614666565b84614666565b8261464d8684615370565b61465791906153d4565b614666565b61466683836153d4565b9050600061467482876153d4565b9050808b10156146e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f62656c6f77206d696e696d756d000000000000000000000000000000000000006044820152606401610a42565b50505050505b61016d861115614752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f61626f7665206d6178696d756d000000000000000000000000000000000000006044820152606401610a42565b6002820154945061016d61476e87670de0b6b3a76400006156fa565b6147789190615766565b928255506001810185905560020181905590505b9250929050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611bc09084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016143d5565b60065460005b818110156143735760006006828154811061480c5761480c6153a5565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168083526007825260408084206003015460018b0190935290922091925090861561489a576001810154670de0b6b3a76400009061486d848a6156fa565b61487791906153d4565b6148819190615766565b8160000160008282546148949190615370565b90915550505b6148a482876156fa565b600190910155508190506148b7816153eb565b9150506147ef565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600183016020526040902080548015614373576000825561491373ffffffffffffffffffffffffffffffffffffffff84168683614793565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600760205260408120600101805483929061494b9084906153d4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fa0306f61d3fafe13787b78e276cb6b644382854a66cb46daae14227d3ec26797836040516149b191815260200190565b60405180910390a35050505050565b60065460005b81811015613fe157614a0d8484600684815481106149e6576149e66153a5565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff166148bf565b80614a17816153eb565b9150506149c6565b6000614a81826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16614b9b9092919063ffffffff16565b805190915015611bc05780806020019051810190614a9f919061581a565b611bc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610a42565b60065460005b81811015611bc057600083600101600060068481548110614b5457614b546153a5565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190206001015580614b93816153eb565b915050614b31565b6060614baa8484600085614bb4565b90505b9392505050565b606082471015614c46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610a42565b843b614cae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a42565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051614cd79190615837565b60006040518083038185875af1925050503d8060008114614d14576040519150601f19603f3d011682016040523d82523d6000602084013e614d19565b606091505b50915091506129ea82828660608315614d33575081614bad565b825115614d435782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a429190615853565b73ffffffffffffffffffffffffffffffffffffffff81168114613cf757600080fd5b60008060408385031215614dac57600080fd5b8235614db781614d77565b946020939093013593505050565b600060208284031215614dd757600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114614bad57600080fd5b600060208284031215614e1957600080fd5b8135614bad81614d77565b60008083601f840112614e3657600080fd5b50813567ffffffffffffffff811115614e4e57600080fd5b6020830191508360208260051b850101111561478c57600080fd5b60008060208385031215614e7c57600080fd5b823567ffffffffffffffff811115614e9357600080fd5b614e9f85828601614e24565b90969095509350505050565b60008060408385031215614ebe57600080fd5b50508035926020909101359150565b60008060408385031215614ee057600080fd5b8235614eeb81614d77565b91506020830135614efb81614d77565b809150509250929050565b600060208284031215614f1857600080fd5b5035919050565b8015158114613cf757600080fd5b600060208284031215614f3f57600080fd5b8135614bad81614f1f565b600080600080600060608688031215614f6257600080fd5b853567ffffffffffffffff80821115614f7a57600080fd5b614f8689838a01614e24565b90975095506020880135915080821115614f9f57600080fd5b50614fac88828901614e24565b9094509250506040860135614fc081614f1f565b809150509295509295909350565b600080600080600060608688031215614fe657600080fd5b853567ffffffffffffffff80821115614ffe57600080fd5b61500a89838a01614e24565b909750955060208801359450604088013591508082111561502a57600080fd5b5061503788828901614e24565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156150be576150be615048565b604052919050565b600082601f8301126150d757600080fd5b8135602067ffffffffffffffff8211156150f3576150f3615048565b8160051b615102828201615077565b928352848101820192828101908785111561511c57600080fd5b83870192505b848310156129ea57823582529183019190830190615122565b600082601f83011261514c57600080fd5b813567ffffffffffffffff81111561516657615166615048565b61519760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601615077565b8181528460208386010111156151ac57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156151e157600080fd5b85356151ec81614d77565b945060208601356151fc81614d77565b9350604086013567ffffffffffffffff8082111561521957600080fd5b61522589838a016150c6565b9450606088013591508082111561523b57600080fd5b61524789838a016150c6565b9350608088013591508082111561525d57600080fd5b5061526a8882890161513b565b9150509295509295909350565b600080600080600060a0868803121561528f57600080fd5b853561529a81614d77565b945060208601356152aa81614d77565b93506040860135925060608601359150608086013567ffffffffffffffff8111156152d457600080fd5b61526a8882890161513b565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156153205780818660040360031b1b83161692505b505092915050565b60006020828403121561533a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561538357615383615341565b500190565b60006020828403121561539a57600080fd5b8151614bad81614d77565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000828210156153e6576153e6615341565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561541d5761541d615341565b5060010190565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561545657600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b838110156154a357815187529582019590820190600101615487565b509495945050505050565b60005b838110156154c95781810151838201526020016154b1565b83811115613fe15750506000910152565b600081518084526154f28160208601602086016154ae565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525060a0604083015261555e60a083018688615424565b82810360608401526155708186615473565b9050828103608084015261558481856154da565b9998505050505050505050565b6040815260006155a5604083018587615424565b82810360208401526155b78185615473565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525060a0604083015261562a60a083018789615424565b828103606084015261563d818688615424565b9050828103608084015261565181856154da565b9a9950505050505050505050565b604081526000615673604083018688615424565b82810360208401526129ea818587615424565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038413811516156156c0576156c0615341565b827f80000000000000000000000000000000000000000000000000000000000000000384128116156156f4576156f4615341565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561573257615732615341565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261577557615775615737565b500490565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126157af57600080fd5b83018035915067ffffffffffffffff8211156157ca57600080fd5b6020019150600581901b360382131561478c57600080fd5b6040815260006157f6604083018587615424565b9050826020830152949350505050565b60008261581557615815615737565b500690565b60006020828403121561582c57600080fd5b8151614bad81614f1f565b600082516158498184602087016154ae565b9190910192915050565b602081526000614bad60208301846154da56fea264697066735822122071d14efbc08b4c27218c72f2d896243b4de91d51e699dd737137022bb1235fd364736f6c63430008090033