0x6080604052600436106100655760003560e01c80636b2ace87116100435780636b2ace8714610128578063ac9650d81461015c578063f24286211461017c57600080fd5b8063061251b11461006a57806314b70579146100ba578063489bb0b214610113575b600080fd5b61007d61007836600461099c565b6101b0565b6040805194855260208501939093526fffffffffffffffffffffffffffffffff918216928401929092521660608201526080015b60405180910390f35b3480156100c657600080fd5b506100ee7f000000000000000000000000bda8a8423b7f02cd935412fb9f13cb88f787599181565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b1565b610126610121366004610a6a565b6103ea565b005b34801561013457600080fd5b506100ee7f000000000000000000000000e43ca1dee3f0fc1e2df73a0745674545f11a59f581565b61016f61016a366004610ac9565b6104b7565b6040516100b19190610bb8565b34801561018857600080fd5b506100ee7f000000000000000000000000413cefea29f2d07b8f2acfa69d92466b9535f71781565b6000806000806101e2866000015133308960e001516fffffffffffffffffffffffffffffffff168a6101000151610632565b93508484101561021e576040517f3999656700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b855173ffffffffffffffffffffffffffffffffffffffff166102745773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000413cefea29f2d07b8f2acfa69d92466b9535f7171686525b60016101008701526040517fe9d163c900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000bda8a8423b7f02cd935412fb9f13cb88f7875991169063e9d163c9906102ee908990600401610c38565b6080604051808303816000875af115801561030d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103319190610d39565b6040517f7192711f00000000000000000000000000000000000000000000000000000000815260048101849052336024820152939750919550935091507f000000000000000000000000bda8a8423b7f02cd935412fb9f13cb88f787599173ffffffffffffffffffffffffffffffffffffffff1690637192711f90604401600060405180830381600087803b1580156103c957600080fd5b505af11580156103dd573d6000803e3d6000fd5b5050505092959194509250565b6040517fc0a47c9300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152306024830152851515604483015260ff851660648301526084820184905260a482018390527f000000000000000000000000e43ca1dee3f0fc1e2df73a0745674545f11a59f5169063c0a47c939060c401600060405180830381600087803b15801561049857600080fd5b505af11580156104ac573d6000803e3d6000fd5b505050505050505050565b60608167ffffffffffffffff8111156104d2576104d26108c1565b60405190808252806020026020018201604052801561050557816020015b60608152602001906001900390816104f05790505b50905060005b8281101561062b576000803086868581811061052957610529610d84565b905060200281019061053b9190610db3565b604051610549929190610e1f565b600060405180830381855af49150503d8060008114610584576040519150601f19603f3d011682016040523d82523d6000602084013e610589565b606091505b5091509150816105f8576044815110156105a257600080fd5b600481019050808060200190518101906105bc9190610e2f565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ef9190610efa565b60405180910390fd5b8084848151811061060b5761060b610d84565b60200260200101819052505050808061062390610f14565b91505061050b565b5092915050565b600081156107ba576040517fda5139ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015260248201859052600060448301527f000000000000000000000000e43ca1dee3f0fc1e2df73a0745674545f11a59f5169063da5139ca90606401602060405180830381865afa1580156106d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f89190610f74565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301528681166044830152606482018390529192507f000000000000000000000000e43ca1dee3f0fc1e2df73a0745674545f11a59f59091169063f18d03cc90608401600060405180830381600087803b15801561079d57600080fd5b505af11580156107b1573d6000803e3d6000fd5b505050506108b8565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000e43ca1dee3f0fc1e2df73a0745674545f11a59f58116906302b9446c90881615610807576000610809565b845b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff808b166004830152808a16602483015288166044820152606481018790526000608482015260a401604080518083038185885af115801561088f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108b49190610f8d565b9150505b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610120810167ffffffffffffffff81118282101715610914576109146108c1565b60405290565b73ffffffffffffffffffffffffffffffffffffffff8116811461093c57600080fd5b50565b803561094a8161091a565b919050565b803563ffffffff8116811461094a57600080fd5b6fffffffffffffffffffffffffffffffff8116811461093c57600080fd5b803561094a81610963565b8035801515811461094a57600080fd5b6000808284036101408112156109b157600080fd5b610120808212156109c157600080fd5b6109c96108f0565b91506109d48561093f565b82526109e26020860161093f565b60208301526109f36040860161094f565b6040830152610a046060860161094f565b6060830152610a156080860161094f565b6080830152610a2660a0860161094f565b60a0830152610a3760c08601610981565b60c0830152610a4860e08601610981565b60e0830152610100610a5b81870161098c565b90830152909593013593505050565b600080600080600060a08688031215610a8257600080fd5b8535610a8d8161091a565b9450610a9b6020870161098c565b9350604086013560ff81168114610ab157600080fd5b94979396509394606081013594506080013592915050565b60008060208385031215610adc57600080fd5b823567ffffffffffffffff80821115610af457600080fd5b818501915085601f830112610b0857600080fd5b813581811115610b1757600080fd5b8660208260051b8501011115610b2c57600080fd5b60209290920196919550909350505050565b60005b83811015610b59578181015183820152602001610b41565b83811115610b68576000848401525b50505050565b60008151808452610b86816020860160208601610b3e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610c2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452610c19858351610b6e565b94509285019290850190600101610bdf565b5092979650505050505050565b815173ffffffffffffffffffffffffffffffffffffffff168152602080830151610120830191610c7f9084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610c97604084018263ffffffff169052565b506060830151610caf606084018263ffffffff169052565b506080830151610cc7608084018263ffffffff169052565b5060a0830151610cdf60a084018263ffffffff169052565b5060c0830151610d0360c08401826fffffffffffffffffffffffffffffffff169052565b5060e0830151610d2760e08401826fffffffffffffffffffffffffffffffff169052565b50610100928301511515919092015290565b60008060008060808587031215610d4f57600080fd5b84519350602085015192506040850151610d6881610963565b6060860151909250610d7981610963565b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610de857600080fd5b83018035915067ffffffffffffffff821115610e0357600080fd5b602001915036819003821315610e1857600080fd5b9250929050565b8183823760009101908152919050565b600060208284031215610e4157600080fd5b815167ffffffffffffffff80821115610e5957600080fd5b818401915084601f830112610e6d57600080fd5b815181811115610e7f57610e7f6108c1565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610ec557610ec56108c1565b81604052828152876020848701011115610ede57600080fd5b610eef836020830160208801610b3e565b979650505050505050565b602081526000610f0d6020830184610b6e565b9392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610f6d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b600060208284031215610f8657600080fd5b5051919050565b60008060408385031215610fa057600080fd5b50508051602090910151909290915056fea264697066735822122049bcbbf0a89ac983114c7f890b19f0fe7df7b1650ed79540e392224ec75e9fe264736f6c634300080a0033