diff --git a/consumer/consumer.go b/consumer/consumer.go index 7e9838a5..ac3206ec 100644 --- a/consumer/consumer.go +++ b/consumer/consumer.go @@ -1,214 +1,141 @@ package consumer import ( - "encoding/json" + "encoding/hex" "sync" "time" "github.com/kthomas/go-natsutil" "github.com/nats-io/stan.go" "github.com/provideplatform/nchain/common" + "github.com/vmihailenco/msgpack/v5" ) // TODO: audit arbitrary max in flight & timeouts -const natsPacketFragmentIngestSubject = "prvd.packet.fragment.ingest" -const natsPacketFragmentIngestMaxInFlight = 1024 -const natsPacketFragmentIngestInvocationTimeout = time.Second * 5 // FIXME!!! (see above) -const natsPacketFragmentIngestTimeout = int64(time.Second * 8) // FIXME!!! (see above) +const packetFragmentIngestSubject = "prvd.packet.fragment.ingest" +const packetFragmentIngestMaxInFlight = 1024 +const packetFragmentIngestInvocationTimeout = time.Second * 5 // FIXME!!! (see above) +const packetFragmentIngestTimeout = int64(time.Second * 8) // FIXME!!! (see above) // TODO: audit arbitrary max in flight & timeouts; investigate dynamic timeout based on reassembled packet size -const natsPacketReassembleSubject = "prvd.packet.reassemble" -const natsPacketReassembleMaxInFlight = 256 -const natsPacketReassembleInvocationTimeout = time.Second * 30 // FIXME!!! (see above) -const natsPacketReassembleTimeout = int64(time.Second * 52) // FIXME!!! (see above) - -var ( - waitGroup sync.WaitGroup - currencyPairs = []string{} -) +const packetReassembleSubject = "prvd.packet.reassemble.ingest" +const packetReassembleMaxInFlight = 256 +const packetReassembleInvocationTimeout = time.Second * 30 // FIXME!!! (see above) +const packetReassembleTimeout = int64(time.Second * 52) // FIXME!!! (see above) + +const packetCompleteSubject = "prvd.packet.reassemble.finalize" + +// PacketConsumer ingests packets that have been broadcasted out, and sends completion messages when a whole message has been ingested +type PacketConsumer struct { + network INetwork + db IDatabase + waitGroup sync.WaitGroup +} -func init() { +// Setup initialises a PacketConsumer and sets up the network as well as subscribing to the fragment and reassembly messages +func (consumer *PacketConsumer) Setup() { if !common.ConsumeNATSStreamingSubscriptions { common.Log.Debug("Consumer package configured to skip NATS streaming subscription setup") return } - natsutil.EstablishSharedNatsStreamingConnection(nil) - - createNatsPacketReassemblySubscriptions(&waitGroup) - createNatsPacketFragmentIngestSubscriptions(&waitGroup) + consumer.network.Setup() + consumer.setupFragmentIngestSubscription() + consumer.setupReassemblyIngestSubscription() } -func createNatsPacketFragmentIngestSubscriptions(wg *sync.WaitGroup) { - for i := uint64(0); i < natsutil.GetNatsConsumerConcurrency(); i++ { - natsutil.RequireNatsStreamingSubscription(wg, - natsPacketFragmentIngestInvocationTimeout, - natsPacketFragmentIngestSubject, - natsPacketFragmentIngestSubject, - consumePacketFragmentIngestMsg, - natsPacketFragmentIngestInvocationTimeout, - natsPacketFragmentIngestMaxInFlight, +func (consumer *PacketConsumer) setupFragmentIngestSubscription() { + for i := uint64(0); i < consumer.network.GetConsumerConcurrency(); i++ { + consumer.network.Subscribe(&consumer.waitGroup, + packetFragmentIngestInvocationTimeout, + packetFragmentIngestSubject, + packetFragmentIngestSubject, + consumer.consumePacketFragmentIngestMsg, + packetFragmentIngestInvocationTimeout, + packetFragmentIngestMaxInFlight, nil, ) } } -func createNatsPacketReassemblySubscriptions(wg *sync.WaitGroup) { - for i := uint64(0); i < natsutil.GetNatsConsumerConcurrency(); i++ { - natsutil.RequireNatsStreamingSubscription(wg, - natsPacketReassembleInvocationTimeout, - natsPacketReassembleSubject, - natsPacketReassembleSubject, - consumePacketReassembleMsg, - natsPacketReassembleInvocationTimeout, - natsPacketReassembleMaxInFlight, +func (consumer *PacketConsumer) setupReassemblyIngestSubscription() { + for i := uint64(0); i < consumer.network.GetConsumerConcurrency(); i++ { + consumer.network.Subscribe(&consumer.waitGroup, + packetReassembleInvocationTimeout, + packetReassembleSubject, + packetReassembleSubject, + consumer.consumePacketReassembleMsg, + packetReassembleInvocationTimeout, + packetReassembleMaxInFlight, nil, ) } } -func consumePacketFragmentIngestMsg(msg *stan.Msg) { - common.Log.Debugf("Consuming NATS packet fragment ingest message: %s", msg) +// Common reassembly code - this is called once all fragments & the header have been consumed +func (consumer *PacketConsumer) handleReassembly(msg *stan.Msg, reassembly *packetReassembly) { + common.Log.Debugf("All fragments ingested for packet with checksum %s", hex.EncodeToString(*reassembly.Checksum)) - fragment := &packetFragment{} - err := json.Unmarshal(msg.Data, &fragment) + payload, _ := msgpack.Marshal(reassembly) + _, err := consumer.network.Send(packetCompleteSubject, payload) if err != nil { - common.Log.Warningf("Failed to umarshal packet fragment ingest message; %s", err.Error()) - natsutil.Nack(msg) - return - } - - if fragment.Checksum == nil { - common.Log.Warning("Failed to ingest packet fragment; nil checksum") - natsutil.Nack(msg) - return - } - - if fragment.Payload == nil { - common.Log.Warning("Failed to ingest packet fragment; nil payload") - natsutil.Nack(msg) - return - } - - if fragment.Cardinality == 0 { - common.Log.Warning("Failed to ingest packet fragment; cardinality must be greater than zero") - natsutil.Nack(msg) - return + common.Log.Warningf("Failed to publish %d-byte packet reassembly message on subject: %s; %s", len(payload), packetReassembleSubject, err.Error()) + natsutil.AttemptNack(msg, packetFragmentIngestTimeout) } +} - if fragment.Index >= fragment.Cardinality { - common.Log.Warning("Failed to ingest packet fragment; fragment index must be less than the packet cardinality") - natsutil.Nack(msg) +func (consumer *PacketConsumer) consumePacketFragmentIngestMsg(msg *stan.Msg) { + fragment := &packetFragment{} + err := msgpack.Unmarshal(msg.Data, &fragment) + if err != nil { + common.Log.Warningf("Failed to umarshal packet fragment ingest message; %s", err.Error()) + consumer.network.Acknowledge(msg) // Acknowledge the bad packet so it's not resent return } - if fragment.Index == 0 { - if fragment.Reassembly == nil { - common.Log.Warning("Failed to ingest packet fragment; reassembly 'header' required within 'fragment 0' encapsulation") - natsutil.Nack(msg) - return - } - } - - common.Log.Debugf("Attempting to ingest %d-byte packet fragment containing %d-byte fragment payload (%d of %d)", len(msg.Data), len(*fragment.Payload), fragment.Index+1, fragment.Cardinality) - ingestVerified, i, ingestErr := fragment.Ingest() - if ingestErr != nil || !ingestVerified { - common.Log.Warningf("Failed to ingest %d-byte packet fragment containing %d-byte fragment payload (%d of %d); %s", len(msg.Data), len(*fragment.Payload), fragment.Index+1, fragment.Cardinality, ingestErr.Error()) - natsutil.AttemptNack(msg, natsPacketFragmentIngestTimeout) + ingestVerified, ingestCounter, err := fragment.Ingest(consumer.db) + if err != nil || !ingestVerified { + common.Log.Warningf("Failed to ingest %d-byte packet fragment containing %d-byte fragment payload (%d of %d); %s", len(msg.Data), len(*fragment.Payload), fragment.Index+1, fragment.Cardinality, err.Error()) + // No acknowledgement here - so we can try again return } - progress := float64(*i) / float64(fragment.Cardinality) - if progress == 1 { - common.Log.Debugf("All fragments ingested for packet with checksum %s; dispatching reassembly message on subject: %s", *fragment.Checksum, *fragment.Reassembly.Next) - - if fragment.Reassembly == nil { - _, err := fragment.FetchReassemblyHeader() - if err != nil { - common.Log.Warningf("Unable to publish packet reassembly message on subject: %s; %s", natsPacketReassembleSubject, err.Error()) - natsutil.AttemptNack(msg, natsPacketFragmentIngestTimeout) - return - } - } - - payload, _ := json.Marshal(fragment.Reassembly) - err = natsutil.NatsPublish(natsPacketReassembleSubject, payload) + // Add one to cardinality as we need to account for the reassembly message too + common.Log.Tracef("Successfully ingested fragment #%d with checksum %s; %d of %d total fragments needed for reassembly have been ingested", fragment.Index, hex.EncodeToString(*fragment.Checksum), *ingestCounter, fragment.Cardinality+1) + remaining := (fragment.Cardinality + 1) - *ingestCounter + if remaining == 0 { + reassembly, err := fragment.FetchReassemblyHeader(consumer.db) if err != nil { - common.Log.Warningf("Failed to publish %d-byte packet reassembly message on subject: %s; %s", len(payload), natsPacketReassembleSubject, err.Error()) - natsutil.AttemptNack(msg, natsPacketFragmentIngestTimeout) - return + common.Log.Warningf("Unable to publish packet reassembly message on subject: %s; %s", packetReassembleSubject, err.Error()) + } else { + consumer.handleReassembly(msg, reassembly) } } - common.Log.Debugf("Successfully ingested fragment #%d with checksum %s; %d of %d total fragments needed for reassembly have been ingested (%f%%)", fragment.Index+1, *fragment.Checksum, i, fragment.Cardinality, progress) - msg.Ack() + consumer.network.Acknowledge(msg) } -func consumePacketReassembleMsg(msg *stan.Msg) { - common.Log.Debugf("Consuming NATS packet reassembly message: %s", msg) - +func (consumer *PacketConsumer) consumePacketReassembleMsg(msg *stan.Msg) { reassembly := &packetReassembly{} - err := json.Unmarshal(msg.Data, &reassembly) + err := msgpack.Unmarshal(msg.Data, &reassembly) if err != nil { common.Log.Warningf("Failed to umarshal packet reassembly message; %s", err.Error()) - natsutil.Nack(msg) + consumer.network.Acknowledge(msg) // Acknowledge the bad packet so it's not resent return } - if reassembly.Checksum == nil { - common.Log.Warning("Failed to reassemble packet; nil checksum") - natsutil.Nack(msg) + ingestVerified, ingestCounter, err := reassembly.Ingest(consumer.db) + if err != nil || !ingestVerified { + common.Log.Warningf("Failed to ingest %d-byte packet header; %s", len(msg.Data), err.Error()) + // No acknowledgement here - so we can try again return } - if reassembly.Next == nil { - common.Log.Warning("Failed to reassemble packet; next hop not specified") // TODO-- relax this to support pure p2p file transfer - natsutil.Nack(msg) - return + common.Log.Tracef("Successfully ingested reassembly header. %d of %d total fragments needed for reassembly have been ingested", *ingestCounter, reassembly.Cardinality+1) + remaining := (reassembly.Cardinality + 1) - *ingestCounter + if remaining == 0 { + consumer.handleReassembly(msg, reassembly) } - if reassembly.Cardinality == 0 { - common.Log.Warning("Failed to reassemble packet; cardinality must be greater than zero") - natsutil.Nack(msg) - return - } - - fragSize := reassembly.Size / reassembly.Cardinality - progress, i, err := reassembly.fragmentIngestProgress() - if err != nil { - common.Log.Warningf("Failed to reassemble %d-byte packet consisting of %d %d-byte fragment(s); failed atomically reading or parsing fragment ingest progress; %s", reassembly.Size, reassembly.Cardinality, fragSize, err.Error()) - natsutil.AttemptNack(msg, natsPacketReassembleTimeout) - return - } - - if *progress == 1 { - common.Log.Debugf("All fragments ingested for packet with checksum %s; dispatching next hop with pointer to reconstituted packet as message on subject: %s", *reassembly.Checksum, *reassembly.Next) - - reassemblyVerified, reassemblyErr := reassembly.Reassemble() - if reassemblyErr != nil || !reassemblyVerified { - if reassemblyErr != nil { - common.Log.Warningf(reassemblyErr.Error()) - } else { - common.Log.Warningf("Failed to reassemble packet with checksum %s; verification failed", *reassembly.Checksum) - } - - natsutil.AttemptNack(msg, natsPacketReassembleTimeout) - return - } - - payload, _ := json.Marshal(reassembly) - err = natsutil.NatsPublish(*reassembly.Next, payload) - if err != nil { - common.Log.Warningf("Failed to publish %d-byte next hop message on subject: %s; %s", len(payload), *reassembly.Next, err.Error()) - natsutil.AttemptNack(msg, natsPacketReassembleTimeout) - return - } - - common.Log.Debugf("Published %d-byte next hop message after successful reassembly of packet with checksum %s on subject: %s", len(payload), *reassembly.Checksum, *reassembly.Next) - msg.Ack() - } else { - common.Log.Warningf("Failed to reassemble %d-byte packet consisting of %d %d-byte fragment(s); only %d fragments ingested (%f%%)", reassembly.Size, reassembly.Cardinality, fragSize, *i, *progress) - natsutil.AttemptNack(msg, natsPacketReassembleTimeout) - return - } + consumer.network.Acknowledge(msg) } diff --git a/consumer/consumer_stubbed_test.go b/consumer/consumer_stubbed_test.go new file mode 100644 index 00000000..d0e70e52 --- /dev/null +++ b/consumer/consumer_stubbed_test.go @@ -0,0 +1,176 @@ +package consumer + +import ( + "math/rand" + "sync" + "sync/atomic" + "testing" + "time" + + "github.com/nats-io/stan.go" + "github.com/vmihailenco/msgpack/v5" +) + +// +// Stubbed NetworkInterface +// + +type testQueue struct { + queue chan []byte + subject string + connected bool + index uint64 +} + +type testStream struct { + queues map[string]*testQueue + acksRecieved uint64 + onSend func(subject string, message []byte) +} + +func (queue *testQueue) waitLoop(handler stan.MsgHandler) { + for queue.connected { + data := <-queue.queue + + msg := new(stan.Msg) + msg.Data = data + msg.Subject = queue.subject + msg.Sequence = queue.index + + atomic.AddUint64(&queue.index, 1) + + go handler(msg) + } +} + +func (sub *testStream) Send(subject string, message []byte) (*string, error) { + if sub.onSend != nil { + sub.onSend(subject, message) + } + + if queue, ok := sub.queues[subject]; ok { + go func() { + // Add a random delay + time.Sleep(time.Duration(rand.Intn(20)) * time.Millisecond) + queue.queue <- message + }() + } + + return nil, nil +} + +func (sub *testStream) Acknowledge(handler *stan.Msg) { +} + +func (sub *testStream) Setup() { +} + +func (sub *testStream) GetConsumerConcurrency() uint64 { + return 4 +} + +func (sub *testStream) Subscribe(wg *sync.WaitGroup, _ time.Duration, subject string, queuegroup string, handler stan.MsgHandler, _ time.Duration, _ int, _ *string) { + var queue *testQueue + if q, ok := sub.queues[subject]; ok { + queue = q + } else { + queue = new(testQueue) + queue.connected = true + queue.subject = subject + queue.queue = make(chan []byte) + sub.queues[subject] = queue + } + go queue.waitLoop(handler) +} + +// +// Test Helpers +// + +func setupTestNetwork() (*testStream, IDatabase) { + rand.Seed(time.Now().UnixNano()) + + network := new(testStream) + network.queues = make(map[string]*testQueue) + + db := &Redis{} + db.Setup() + + consumer := PacketConsumer{ + network, + db, + wg, + } + consumer.Setup() + + return network, db +} + +func checkReassemblyMsg(t *testing.T, db IDatabase, msg *stan.Msg) { + reassembly := &packetReassembly{} + err := msgpack.Unmarshal(msg.Data, &reassembly) + if err != nil { + t.Errorf("Failed to umarshal packet reassembly message; %s", err.Error()) + } else { + percentComplete, i, err := reassembly.fragmentIngestProgress() + if err != nil { + t.Errorf("Failed to reassemble %d-byte packet consisting of %d fragment(s); failed atomically reading or parsing fragment ingest progress; %s", reassembly.Size, reassembly.Cardinality, err.Error()) + return + } + + if *percentComplete != 1 { + t.Errorf("Failed to reassemble %d-byte packet consisting of %d fragment(s); only %d fragments ingested", reassembly.Size, reassembly.Cardinality, *i) + return + } + + assembled, err := reassembly.Reassemble(db) + if !assembled || err != nil { + t.Errorf("Failed to reassemble data - err: '%s'", err) + } + + t.Logf("Recieved and reassembled %d length packet", reassembly.Size) + } + + testDone.Done() +} + +// +// Tests +// + +func TestStubbedBroadcast(t *testing.T) { + var testNetwork, db = setupTestNetwork() + + numPayloads := 25 + t.Logf("Generating %d payloads...", numPayloads) + var payloads [][]byte + for i := 1; i <= numPayloads; i++ { + payloads = append(payloads, generateRandomBytes(1024*64*i)) + } + t.Log("Generated payloads") + + t.Log("Subscribing..") + var wg sync.WaitGroup + testNetwork.Subscribe(&wg, + time.Second*200, + packetCompleteSubject, + packetCompleteSubject, + func(msg *stan.Msg) { checkReassemblyMsg(t, db, msg) }, + time.Second*200, + 1024, + nil, + ) + t.Log("Subscribed.") + + testDone.Add(numPayloads) + + t.Log("Sending payloads..") + for _, payload := range payloads { + // Add a random delay + time.Sleep(time.Duration(rand.Intn(20)) * time.Millisecond) + go BroadcastFragments(testNetwork, payload, true, nil) + } + + testDone.Wait() + t.Log("Test complete.") +} diff --git a/consumer/consumer_test.go b/consumer/consumer_test.go new file mode 100644 index 00000000..ee37748a --- /dev/null +++ b/consumer/consumer_test.go @@ -0,0 +1,96 @@ +package consumer + +import ( + "bytes" + "sync" + "testing" + "time" + + "github.com/nats-io/stan.go" + "github.com/vmihailenco/msgpack/v5" +) + +var ( + testDone sync.WaitGroup + wg sync.WaitGroup +) + +func setupRealNatsNetwork() (INetwork, IDatabase) { + var db = &Redis{} + db.Setup() + + var nats = &NatsStreaming{} + consumer := PacketConsumer{ + nats, + db, + wg, + } + + consumer.Setup() + + return nats, db +} + +func consumePacketCompleteMsg(t *testing.T, network INetwork, db IDatabase, msg *stan.Msg, expectedPayload *[]byte) { + network.Acknowledge(msg) + + reassembly := &packetReassembly{} + err := msgpack.Unmarshal(msg.Data, &reassembly) + if err != nil { + t.Errorf("Failed to umarshal packet reassembly message; %s", err.Error()) + return + } + + percentComplete, i, err := reassembly.fragmentIngestProgress() + if err != nil { + t.Errorf("Failed to reassemble %d-byte packet consisting of %d fragment(s); failed atomically reading or parsing fragment ingest progress; %s", reassembly.Size, reassembly.Cardinality, err.Error()) + return + } + + if *percentComplete < 1 { + t.Errorf("Failed to reassemble %d-byte packet consisting of %d fragment(s); only %d fragments ingested", reassembly.Size, reassembly.Cardinality, *i) + return + } + + assembled, err := reassembly.Reassemble(db) + if !assembled || err != nil { + t.Errorf("Failed to reassemble data - err: '%s'", err) + } + + // Reassemble does a checksum comparison but just as an extra test we compare payload to expected + if bytes.Compare(*expectedPayload, *reassembly.Payload) != 0 { + t.Error("Reassembled payload did not match expected") + } + + testDone.Done() +} + +// TestConsumerBroadcastAndReassemble uses a real NATS-Streaming connection to test broadcast and reassembly of data +func TestConsumerBroadcastAndReassemble(t *testing.T) { + nats, db := setupRealNatsNetwork() + payload := generateRandomBytes(1024 * 16 * 64) + + nats.Subscribe(&wg, + time.Second*5, + packetCompleteSubject, + packetCompleteSubject, + func(msg *stan.Msg) { + consumePacketCompleteMsg(t, nats, db, msg, &payload) + }, + time.Second*5, + 1024, + nil, + ) + + // TODO: this is crap + time.Sleep(time.Second * 6) + + testDone.Add(1) + + err := BroadcastFragments(nats, payload, true, nil) + if err != nil { + t.Errorf("BroadcastFragments() error; %s", err.Error()) + } + + testDone.Wait() +} diff --git a/consumer/nats_interface.go b/consumer/nats_interface.go new file mode 100644 index 00000000..d6bdf934 --- /dev/null +++ b/consumer/nats_interface.go @@ -0,0 +1,47 @@ +package consumer + +import ( + "sync" + "time" + + "github.com/kthomas/go-natsutil" + "github.com/nats-io/stan.go" +) + +// INetwork abstracts all of the network requests +type INetwork interface { + Send(subject string, msg []byte) (*string, error) + Subscribe(wg *sync.WaitGroup, drainTimeout time.Duration, subject string, qgroup string, cb stan.MsgHandler, ackWait time.Duration, maxInFlight int, jwt *string) + Setup() + Acknowledge(msg *stan.Msg) + GetConsumerConcurrency() uint64 +} + +// NatsStreaming is a NATS wrapper for INetwork +type NatsStreaming struct { +} + +// Subscribe will subscribe to the given Nats Streaming subject +func (n *NatsStreaming) Subscribe(wg *sync.WaitGroup, drainTimeout time.Duration, subject string, qgroup string, cb stan.MsgHandler, ackWait time.Duration, maxInFlight int, jwt *string) { + natsutil.RequireNatsStreamingSubscription(wg, drainTimeout, subject, qgroup, cb, ackWait, maxInFlight, jwt) +} + +// Setup will establish the Nats Streaming connection +func (n *NatsStreaming) Setup() { + natsutil.EstablishSharedNatsStreamingConnection(nil) +} + +// Acknowledge acks the given message +func (n *NatsStreaming) Acknowledge(msg *stan.Msg) { + msg.Ack() +} + +// GetConsumerConcurrency controls how many concurrent subscribers should be setup when listening for messages +func (n *NatsStreaming) GetConsumerConcurrency() uint64 { + return natsutil.GetNatsConsumerConcurrency() +} + +// Send sends an async Nats Streaming message +func (n *NatsStreaming) Send(subject string, msg []byte) (*string, error) { + return natsutil.NatsStreamingPublishAsync(subject, msg) +} diff --git a/consumer/packet_reassembly.go b/consumer/packet_reassembly.go index b3609ab1..f68506b4 100644 --- a/consumer/packet_reassembly.go +++ b/consumer/packet_reassembly.go @@ -4,133 +4,121 @@ import ( "crypto/md5" "crypto/sha256" "encoding/hex" - "encoding/json" "errors" "fmt" "math" "strconv" + "sync" "time" - "github.com/kthomas/go-natsutil" "github.com/kthomas/go-redisutil" "github.com/provideplatform/nchain/common" + "github.com/vmihailenco/msgpack/v5" ) const packetReassemblyHeaderKeySuffix = "header" const packetReassemblyFragmentIngestCountKeySuffix = "fragments.ingest-count" const packetReassemblyFragmentPersistenceKeySuffix = "fragments.persistence" -const packetReassemblyFragmentationChunkSize = float64(4500) +const packetReassemblyFragmentationChunkSize = uint(4500) // Fragmentable interface type Fragmentable interface { // Broadcast marshals and transmits the fragment metadata and payload - Broadcast() error + Broadcast(network INetwork, wg *sync.WaitGroup) error // Ingest verifies the checksum of the fragment, writes the the underlying bytes to persistent // or ephemeral storage, atomically increments the internal ingest counter associated with the // packet reassembly operation and returns the boolean checksum verification result, total number // of fragments ingested (i.e., after ingesting this fragment-- or nil, if ingestion failed) and // any error if the attempt to ingest the fragment fails - Ingest() (bool, *uint, error) + Ingest(db IDatabase) (bool, *uint, error) // Verify the fragment checksum Verify() (bool, error) } -// BroadcastFragments splits the given packet into chunks, optionally padding the last chunk (i.e., with null -// bytes such that all fragments are of equal length). Each chunk is broadcast as a fragment for remote packet -// reassembly, the first such `packetFragment` containing a header describing the `packetReassembly`. If a -// `nextHop` subject is provided, a pointer to the reassembled packet is forwarded upon ingestion of all -// fragments such that reassembly of the packet is guaranteed within the `nextHop` handler at runtime (i.e., -// such a handler can be thought of as an "exit node" for the reassembled packet and terminates execution on it). -func BroadcastFragments(packet []byte, pad bool, nextHop *string) error { - packetSize := len(packet) - chunkSize := int(packetReassemblyFragmentationChunkSize) - common.Log.Debugf("fragmented broadcast of %d-byte packet into %d-byte chunks requested...", packetSize, chunkSize) - - numChunks := 1 +// BroadcastFragments splits the given packet into chunks. Each chunk is broadcast as a fragment for remote packet +// reassembly. If `usePadding` is true then the last packet sent will be padded if required to make sure that all +// packets sent have an equal size. +func BroadcastFragments(network INetwork, packet []byte, usePadding bool, wg *sync.WaitGroup) error { + packetSize := uint(len(packet)) + chunkSize := packetReassemblyFragmentationChunkSize + + numChunks := uint(1) if packetSize > chunkSize { - numChunks = int(math.Ceil(float64(packetSize) / float64(chunkSize))) + numChunks = uint(math.Ceil(float64(packetSize) / float64(chunkSize))) } - packetReassembly := packetReassemblyFactory(packet, nextHop) + PacketReassembly := packetReassemblyFactory(packet, numChunks) fragments := make([]*packetFragment, numChunks) - i := 0 - n := len(packet) // n stores the number of aggregate bytes remaining + index := uint(0) + bytesRemaining := uint(len(packet)) - common.Log.Debugf("chunking %d-byte packet into %d %d-byte chunks", packetSize, numChunks, chunkSize) - for i <= numChunks-1 { - x := i * chunkSize - y := x + chunkSize - 1 + common.Log.Debugf("Chunking %d-byte packet with checksum %s into %d %d-byte chunks", packetSize, hex.EncodeToString(*PacketReassembly.Checksum), numChunks, chunkSize) + for index <= numChunks-1 { + start := index * chunkSize + end := start + chunkSize + padChunk := false - common.Log.Debugf("preparing %d-byte chunk %d of %d for fragmented broadcast; slice: (%d, %d)", chunkSize, i+1, numChunks, x, y) + if bytesRemaining < chunkSize { + end = start + bytesRemaining - padsize := 0 - if n < chunkSize { - if pad { - padsize = chunkSize - n - y = x + chunkSize - padsize - } else { - y = x + n + if usePadding { + padChunk = true } } var fragmentPayload []byte - - if padsize == 0 { - fragmentPayload = packet[x:y] - } else if padsize > 0 { - common.Log.Debugf("adding %d null bytes to pad chunk %d of %d to uniform %d-byte chunksize", padsize, i, numChunks, chunkSize) - fragmentPayload = make([]byte, y-x+padsize) - copy(fragmentPayload[:], packet[x:y]) + if padChunk { + fragmentPayload = make([]byte, chunkSize) + copy(fragmentPayload[:], packet[start:end]) + } else { + fragmentPayload = packet[start:end] } checksum := md5.Sum(fragmentPayload) - - fragments[i] = &packetFragment{ - Index: uint(i), - Cardinality: uint(numChunks), - Checksum: common.StringOrNil(string(checksum[:])), - Nonce: packetReassembly.Nonce, - Padded: padsize > 0, - Payload: common.StringOrNil(string(fragmentPayload)), - PayloadChecksum: packetReassembly.Checksum, + checksumSlice := checksum[:] + + fragments[index] = &packetFragment{ + Index: index, + Cardinality: numChunks, + Checksum: &checksumSlice, + Nonce: PacketReassembly.Nonce, + Payload: &fragmentPayload, + ReassembledChecksum: PacketReassembly.Checksum, } - if i == 0 { - fragments[i].Reassembly = packetReassembly - } - - n = n - chunkSize - i++ - - common.Log.Debugf("%d-byte chunk %d of %d prepared for remote reassembly; %d total bytes remaining", chunkSize, i, numChunks, n) + bytesRemaining = bytesRemaining - chunkSize + index++ } common.Log.Debugf("Prepared %d packet fragments for broadcast", len(fragments)) + if wg != nil { + wg.Add(1) + } + go PacketReassembly.Broadcast(network, wg) for _, fragment := range fragments { - err := fragment.Broadcast() - if err != nil { - common.Log.Warningf("failed to broadcast fragment %d of %d ; %s", fragment.Index, numChunks, err.Error()) - return err + if wg != nil { + wg.Add(1) } + go fragment.Broadcast(network, wg) } return nil } -// packetReassemblyFactory constructs a new packet reassembly instance which can be used +// PacketReassemblyFactory constructs a new packet reassembly instance which can be used // as a header within the first fragment of a distributed packet reassembly operation -func packetReassemblyFactory(packet []byte, nextHop *string) *packetReassembly { +func packetReassemblyFactory(packet []byte, cardinality uint) *packetReassembly { checksum := md5.Sum(packet) + checksumSlice := checksum[:] nonce := time.Now().UnixNano() return &packetReassembly{ - Cardinality: uint(math.Ceil(math.Mod(float64(len(packet)), packetReassemblyFragmentationChunkSize))), - Checksum: common.StringOrNil(string(checksum[:])), - Next: nextHop, + Cardinality: cardinality, + Checksum: &checksumSlice, Nonce: &nonce, Size: uint(len(packet)), Payload: &packet, @@ -141,16 +129,16 @@ func packetReassemblyFactory(packet []byte, nextHop *string) *packetReassembly { // fragment persistent storage facilities, etc. for in-flight packet reassembly operations // for the given Fragmentable func packetReassemblyIndexKeyFactory(fragmentable Fragmentable, suffix *string) *string { - var checksum *string + var checksum *[]byte var nonce *int64 - switch fragmentable.(type) { + switch packet := fragmentable.(type) { case *packetFragment: - checksum = fragmentable.(*packetFragment).PayloadChecksum - nonce = fragmentable.(*packetFragment).Nonce + checksum = packet.ReassembledChecksum + nonce = packet.Nonce case *packetReassembly: - checksum = fragmentable.(*packetReassembly).Checksum - nonce = fragmentable.(*packetReassembly).Nonce + checksum = packet.Checksum + nonce = packet.Nonce default: common.Log.Warning("Reflection not supported for given fragmentable") } @@ -161,7 +149,7 @@ func packetReassemblyIndexKeyFactory(fragmentable Fragmentable, suffix *string) } digest := sha256.New() - digest.Write([]byte(fmt.Sprintf("%s.%d.%s", natsPacketReassembleSubject, *nonce, *checksum))) + digest.Write([]byte(fmt.Sprintf("%s.%d.%s", packetReassembleSubject, *nonce, *checksum))) key := hex.EncodeToString(digest.Sum(nil)) if suffix != nil { @@ -171,50 +159,67 @@ func packetReassemblyIndexKeyFactory(fragmentable Fragmentable, suffix *string) return &key } +func fragmentIndexKeyFactory(nonce *int64, index uint, reassembledChecksum *[]byte, suffix *string) *string { + digest := sha256.New() + key := fmt.Sprintf("%s.%d.%s.%d", packetFragmentIngestSubject, *nonce, hex.EncodeToString(*reassembledChecksum), index) + digest.Write([]byte(key)) + key = hex.EncodeToString(digest.Sum(nil)) + + if suffix != nil { + key = fmt.Sprintf("%s.%s", key, *suffix) + } + + return &key +} + // packetFragment represents a packet fragment ingest message payload; TODO: support marshaling from wire/protocol in addition to JSON type packetFragment struct { - Index uint `json:"index"` // the index of the fragment - Cardinality uint `json:"cardinality"` // # of total fragments comprising the packet - Checksum *string `json:"checksum"` // md5 checksum of the fragment payload - Nonce *int64 `json:"nonce"` // nonce associated with the packet reassembly operation - Padded bool `json:"padded"` // true if the fragment payload is padded with null bytes to match a uniform chunksize - Payload *string `json:"payload"` // the raw fragment payload - PayloadChecksum *string `json:"reassembled_checksum,omitempty"` // md5 checksum of the entire n of n payload - Reassembly *packetReassembly `json:"reassembly,omitempty"` // pointer to the packet reassembly header + Index uint `msgpack:"index"` // the index of the fragment + Cardinality uint `msgpack:"cardinality"` // # of total fragments comprising the packet + Checksum *[]byte `msgpack:"checksum"` // md5 checksum of the fragment payload + Nonce *int64 `msgpack:"nonce"` // nonce associated with the packet reassembly operation + Payload *[]byte `msgpack:"payload,inline"` // the raw fragment payload + ReassembledChecksum *[]byte `msgpack:"reassembled_checksum"` // md5 checksum of the entire n of n payload // TODO: forward secrecy considerations } // Broadcast marshals and transmits the fragment metadata and payload -func (p *packetFragment) Broadcast() error { - payload, err := json.Marshal(p) +func (p *packetFragment) Broadcast(network INetwork, wg *sync.WaitGroup) error { + if wg != nil { + defer wg.Done() + } + + payload, err := msgpack.Marshal(p) if err != nil { return err } - common.Log.Debugf("attempting to broadcast %d-byte fragment", len(payload)) - return natsutil.NatsStreamingPublish(natsPacketFragmentIngestSubject, payload) + + common.Log.Tracef("attempting to broadcast %d-byte fragment for Nonce %d - index #%d", len(payload), p.Nonce, p.Index) + _, err = network.Send(packetFragmentIngestSubject, payload) + return err } // FetchReassemblyHeader fetches the previously-cached packet reassembly header, warms the fragment-local -// `Reassembly` reference and returns the loaded `packetReassembly` -- or returns nil and an error if the +// `Reassembly` reference and returns the loaded `PacketReassembly` -- or returns nil and an error if the // header failed to load for any reason. -func (p *packetFragment) FetchReassemblyHeader() (*packetReassembly, error) { +func (p *packetFragment) FetchReassemblyHeader(db IDatabase) (*packetReassembly, error) { headerKey := packetReassemblyIndexKeyFactory(p, common.StringOrNil(packetReassemblyHeaderKeySuffix)) if headerKey == nil { - return nil, errors.New("Failed to fetch cached reassembly header; packet reassembly key factory returned nil header key") + return nil, errors.New("failed to fetch cached reassembly header; packet reassembly key factory returned nil header key") } - rawval, err := redisutil.Get(*headerKey) + rawval, err := db.Get(*headerKey) if err != nil { - return nil, fmt.Errorf("Failed to fetch cached reassembly header for ; %s", err.Error()) + return nil, fmt.Errorf("failed to fetch cached reassembly header for ; %s", err.Error()) } else if rawval == nil { - return nil, fmt.Errorf("Failed to parse valid reassembly header; received nil value from cache") + return nil, fmt.Errorf("failed to parse valid reassembly header; received nil value from cache") } var reassembly *packetReassembly - err = json.Unmarshal([]byte(*rawval), &reassembly) + err = msgpack.Unmarshal([]byte(*rawval), &reassembly) if err != nil { - return nil, fmt.Errorf("Failed to unmarshal cached reassembly header; %s", err.Error()) + return nil, fmt.Errorf("failed to unmarshal cached reassembly header; %s", err.Error()) } return reassembly, nil @@ -225,57 +230,81 @@ func (p *packetFragment) FetchReassemblyHeader() (*packetReassembly, error) { // packet reassembly operation and returns the boolean checksum verification result, total number // of fragments ingested (i.e., after ingesting this fragment-- or nil, if ingestion failed) and // any error if the attempt to ingest the fragment fails -func (p *packetFragment) Ingest() (bool, *uint, error) { +func (p *packetFragment) Ingest(db IDatabase) (bool, *uint, error) { if p.Checksum == nil { return false, nil, errors.New("no fragment ingestion attempted; nil checksum") } + payload, _ := msgpack.Marshal(p) + if len(*p.Checksum) != 16 { // require 128-bit checksum return false, nil, fmt.Errorf("no fragment ingestion attempted; 128-bit checksum required for verification (%d-bit checksum found: %s)", len(*p.Checksum)*8, *p.Checksum) } - if p.Payload == nil { - return false, nil, errors.New("failed to ingest fragment; nil payload") - } - verified, err := p.Verify() if err != nil || !verified { - msg := fmt.Sprintf("fragment ingest or checksum verification failed") + msg := "fragment ingest or checksum verification failed" if err != nil { msg = fmt.Sprintf("%s; %s", msg, err.Error()) } return false, nil, errors.New(msg) } - common.Log.Debugf("incomplete Ingest() implementation... TODO: persist %d-byte fragment", len(*p.Payload)) + persistKey := fragmentIndexKeyFactory(p.Nonce, p.Index, p.ReassembledChecksum, common.StringOrNil(packetReassemblyFragmentPersistenceKeySuffix)) + if persistKey == nil { + return false, nil, errors.New("failed to cache packet data; fragment index key factory returned nil persist key") + } + err = db.Set(*persistKey, string(payload), nil) + if err != nil { + return false, nil, err + } ingestCountKey := packetReassemblyIndexKeyFactory(p, common.StringOrNil(packetReassemblyFragmentIngestCountKeySuffix)) if ingestCountKey == nil { - return false, nil, errors.New("Failed to ingest packet fragment; packet reassembly key factory returned nil fragment ingest count key") + return false, nil, errors.New("failed to ingest packet fragment; packet reassembly key factory returned nil fragment ingest count key") } - i, err := redisutil.Increment(*ingestCountKey) - if err != nil { + i, err := db.Increment(*ingestCountKey) + if err != nil || i == nil { + // TODO: if this fails but the cache of the payload worked? return false, nil, err } ingestCount := uint(*i) + return verified, &ingestCount, nil } // Verify the fragment checksum func (p *packetFragment) Verify() (bool, error) { + // Check for null data if p.Checksum == nil { return false, errors.New("failed to validate fragment; nil checksum") } - - if len(*p.Checksum) != 16 { // require 128-bit checksum - return false, fmt.Errorf("failed to validate fragment; 128-bit checksum required for verification (%d-bit checksum found: %s)", len(*p.Checksum)*8, *p.Checksum) + if p.ReassembledChecksum == nil { + return false, errors.New("failed to validate fragment; nil reassembled checksum") + } + if p.Nonce == nil { + return false, errors.New("failed to validate fragment; nil nonce") + } + if p.Checksum == nil { + return false, errors.New("failed to validate fragment; nil checksum") } - if p.Payload == nil { return false, errors.New("failed to validate fragment; nil payload") } + // Check for bad data + if p.Cardinality == 0 { + return false, errors.New("failed to validate fragment; cardinality is zero") + } + if p.Index >= p.Cardinality { + return false, fmt.Errorf("failed to validate fragment; invalid index (%d) greater than cardinality (%d)", p.Index, p.Cardinality) + } + + // Verify checksum + if len(*p.Checksum) != 16 { // require 128-bit checksum + return false, fmt.Errorf("failed to validate fragment; 128-bit checksum required for verification (%d-bit checksum found: %s)", len(*p.Checksum)*8, *p.Checksum) + } var checksumBytes [16]byte copy(checksumBytes[:], *p.Checksum) return (checksumBytes == md5.Sum([]byte(*p.Payload))), nil @@ -283,12 +312,11 @@ func (p *packetFragment) Verify() (bool, error) { // packetReassembly represents a NATS packet reassembly message payload type packetReassembly struct { - Cardinality uint `json:"cardinality"` // i.e., # of total fragments comprising the packet - Checksum *string `json:"checksum"` // i.e., md5 checksum of the entire n of n payload - Next *string `json:"next"` // i.e., the "next" hop, represented currently as a subject where the handling of the reconstituted packet will terminate; the message broadcast to the "next" hop will receive a pointer to the reassembled packet - Nonce *int64 `json:"nonce"` // i.e., nonce to prevent replay attacks (accidental or otherwise) - Size uint `json:"size"` // i.e., size of the reassembled packet - Payload *[]byte `json:"-"` // i.e., memory address where the reconstituted packet can be optionally read + Cardinality uint `msgpack:"cardinality"` // i.e., # of total fragments comprising the packet + Checksum *[]byte `msgpack:"checksum"` // i.e., md5 checksum of the entire n of n payload + Nonce *int64 `msgpack:"nonce"` // i.e., nonce to prevent replay attacks (accidental or otherwise) + Size uint `msgpack:"size"` // i.e., size of the reassembled packet + Payload *[]byte `msgpack:"-"` // i.e., memory address where the reconstituted packet can be optionally read // TODO: forward secrecy & key negotiation (i.e., diffie-hellman) } @@ -301,13 +329,13 @@ func (p *packetReassembly) fragmentIngestProgress() (*float64, *uint, error) { return nil, nil, fmt.Errorf("Failed to reassemble packet with checksum %s; reassembly key factory returned nil key", *p.Checksum) } - var i uint + var count uint rawval, err := redisutil.Get(*ingestCountKey) if err == nil && rawval != nil { intval, converr := strconv.Atoi(*rawval) if converr == nil { - i = uint(intval) + count = uint(intval) } else { err = converr } @@ -319,37 +347,52 @@ func (p *packetReassembly) fragmentIngestProgress() (*float64, *uint, error) { return nil, nil, err } - progress := float64(i) / float64(p.Cardinality) - return &progress, &i, nil + progress := float64(count) / float64(p.Cardinality+1) + return &progress, &count, nil } // Broadcast marshals and transmits the packet reassembly header payload -func (p *packetReassembly) Broadcast() error { - payload, err := json.Marshal(p) +func (p *packetReassembly) Broadcast(network INetwork, wg *sync.WaitGroup) error { + if wg != nil { + defer wg.Done() + } + + payload, err := msgpack.Marshal(p) if err != nil { return err } - return natsutil.NatsStreamingPublish(natsPacketReassembleSubject, payload) + _, err = network.Send(packetReassembleSubject, payload) + return err } -// Cache the packet reassembly as a header (i.e., without its payload) -func (p *packetReassembly) Cache() error { +// Ingest and cache the packet reassembly as a header (i.e., without its payload) +func (p *packetReassembly) Ingest(db IDatabase) (bool, *uint, error) { headerKey := packetReassemblyIndexKeyFactory(p, common.StringOrNil(packetReassemblyHeaderKeySuffix)) if headerKey == nil { - return errors.New("Failed to cache reassembly header; packet reassembly key factory returned nil header key") + return false, nil, errors.New("failed to ingest reassembly header; packet reassembly key factory returned nil header key") + } + payload, _ := msgpack.Marshal(p) + err := db.Set(*headerKey, string(payload), nil) + if err != nil { + return false, nil, err } - payload, _ := json.Marshal(p) - return redisutil.Set(*headerKey, string(payload), nil) -} + ingestCountKey := packetReassemblyIndexKeyFactory(p, common.StringOrNil(packetReassemblyFragmentIngestCountKeySuffix)) + if ingestCountKey == nil { + return false, nil, errors.New("failed to ingest packet fragment; packet reassembly key factory returned nil fragment ingest count key") + } + i, err := db.Increment(*ingestCountKey) + if err != nil || i == nil { + // TODO: if this fails but the cache of the payload worked? + return false, nil, err + } -// Ingest a packet -func (p *packetReassembly) Ingest() (bool, *uint, error) { - return false, nil, errors.New("packet reassembly does not currently implement Ingest()") + ingestCount := uint(*i) + return true, &ingestCount, nil } // Reassemble defrags the packet and verifies the checksum of the reconstituted packet -func (p *packetReassembly) Reassemble() (bool, error) { +func (p *packetReassembly) Reassemble(db IDatabase) (bool, error) { if p.Checksum == nil { return false, errors.New("no packet reassembly attempted; nil checksum") } @@ -368,28 +411,52 @@ func (p *packetReassembly) Reassemble() (bool, error) { p.Payload = nil // side-effect of this method sets payload pointer - fragSize := p.Size / p.Cardinality - progress, i, err := p.fragmentIngestProgress() + progress, _, err := p.fragmentIngestProgress() if err != nil { - return false, fmt.Errorf("Failed to reassemble %d-byte packet consisting of %d %d-byte fragment(s); failed atomically reading or parsing fragment ingest progress; %s", p.Size, p.Cardinality, fragSize, err.Error()) + return false, fmt.Errorf("failed to reassemble %d-byte packet consisting of %d fragment(s); failed atomically reading or parsing fragment ingest progress; %s", p.Size, p.Cardinality, err.Error()) } if *progress < 1 { - return false, fmt.Errorf("Failed to reassemble %d-byte packet consisting of %d %d-byte fragment(s); %d (%f%%) of required fragments ingested", p.Size, p.Cardinality, fragSize, *i, *progress) + return false, fmt.Errorf("failed to reassemble %d-byte packet consisting of %d fragment(s); only %.2f%% of packets ingested", p.Size, p.Cardinality, *progress) } - common.Log.Debugf("All %d fragments required to reassemble %d-byte packet with checksum %s have been ingested; attempting reassembly and verification...", p.Cardinality, p.Size, *p.Checksum) + common.Log.Debugf("All %d fragments required to reassemble %d-byte packet with checksum %s have been ingested; attempting reassembly and verification...", p.Cardinality, p.Size, hex.EncodeToString(*p.Checksum)) payload := make([]byte, p.Size) - common.Log.Debugf("incomplete Reassemble() implementation... TODO: reassemble %d fragments", p.Cardinality) + lastIndex := uint(0) + for i := uint(0); i < p.Cardinality; i++ { + // Get fragment from storage + persistKey := fragmentIndexKeyFactory(p.Nonce, i, p.Checksum, common.StringOrNil(packetReassemblyFragmentPersistenceKeySuffix)) + data, err := db.Get(*persistKey) + if err != nil { + return false, fmt.Errorf("failed to get packet index %d with key '%s' from storage", i, *persistKey) + } + + // Decode fragment + fragment := &packetFragment{} + err = msgpack.Unmarshal([]byte(*data), &fragment) + if err != nil { + return false, fmt.Errorf("failed to unmarshal packet index %d with key '%s' from storage", i, *persistKey) + } + + payloadSize := uint(len(*fragment.Payload)) + remainingBytes := p.Size - lastIndex + if remainingBytes < payloadSize { + // Don't copy padding + payloadSize = remainingBytes + } + + copy(payload[lastIndex:lastIndex+payloadSize], *fragment.Payload) + lastIndex += payloadSize + } p.Payload = &payload verified, err := p.Verify() if err != nil || !verified { - msg := fmt.Sprintf("reassembly or checksum verification failed") + msg := "reassembly or checksum verification failed" if err != nil { msg = fmt.Sprintf("%s; %s", msg, err.Error()) } - return false, fmt.Errorf("Failed to reassemble packet with checksum %s; %s", *p.Checksum, msg) + return false, fmt.Errorf("failed to reassemble packet with checksum %s; %s", *p.Checksum, msg) } return verified, nil @@ -411,5 +478,6 @@ func (p *packetReassembly) Verify() (bool, error) { var checksumBytes [16]byte copy(checksumBytes[:], *p.Checksum) + return (checksumBytes == md5.Sum(*p.Payload)), nil } diff --git a/consumer/packet_reassembly_test.go b/consumer/packet_reassembly_test.go old mode 100644 new mode 100755 index c87e3bc9..6f55c834 --- a/consumer/packet_reassembly_test.go +++ b/consumer/packet_reassembly_test.go @@ -1,15412 +1,234 @@ -// +build unit - -package consumer_test +package consumer import ( + "bytes" + "crypto/md5" + "encoding/json" + "math/rand" + "os" + "sync" "testing" - "github.com/provideplatform/nchain/common" - "github.com/provideplatform/nchain/consumer" + "github.com/vmihailenco/msgpack/v5" ) -func TestBroadcastFragments(t *testing.T) { - err := consumer.BroadcastFragments(payloadFactory(), false, common.StringOrNil("org.next.hop")) +func generateRandomBytes(length int) []byte { + data := make([]byte, length) + for i := range data { + data[i] = byte(rand.Intn(255)) + } + return data +} + +func getTestFile(t *testing.T, path string) []byte { + data, err := os.ReadFile(path) if err != nil { - t.Errorf("BroadcastFragments() error; %s", err.Error()) + t.Fatalf("Unable to open test file: '%s'.", path) } + return data } -func payloadFactory() []byte { - return []byte(`{ - "infrastructure":{ - "connector_types":[ - { - "id":"ipfs", - "name":"Public IPFS", - "defaults":{ - "role":"ipfs", - "image": "ipfs/go-ipfs", - "env":{ - "CLIENT":"ipfs" - }, - "api_port":5001, - "gateway_port":8080, - "security":{ - "health_check":{ - "path":"/api/v0/version" - }, - "egress":"*", - "ingress":{ - "0.0.0.0/0":{ - "tcp":[ - 4001, - 5001, - 8080 - ], - "udp":[ - - ] - } - } - }, - "tags":["datastore", "ipfs"] - } - }, - { - "id":"s3", - "name":"S3", - "disabled":true, - "defaults":{ - - }, - "tags":["datastore"] - }, - { - "id":"custom", - "name":"Configure Integration...", - "disabled":true, - "defaults":{ - - }, - "tags":["datastore"] - } - ], - "platforms":[ - { - "id":"evm", - "name":"Ethereum/EVM", - "img_src_dark":"https://s3.amazonaws.com/static.provide.services/img/evm-logo.png", - "img_src_light":"https://s3.amazonaws.com/static.provide.services/img/evm-logo.png", - "clients":[ - { - "id":"geth", - "name":"Geth", - "enabled":true, - "img_src_dark":"https://s3.amazonaws.com/static.provide.services/img/geth-dark.png", - "img_src_light":"https://s3.amazonaws.com/static.provide.services/img/geth-light.png", - "service_container_ids":[ - "providenetwork-node" - ], - "consensus_protocols":[ - { - "id":"pow", - "name":"Proof of Work", - "engines":[ - { - "id":"ethash", - "name":"Ethash", - "enabled":true - } - ], - "roles":[ - { - "id":"full", - "name":"Full Node", - "config":{ - "allows_multiple_deployment":true, - "default_rcd":{ - "docker":{ - "ewasm-testnet":"{\"BOOTNODES\": null, \"CHAIN_SPEC_URL\": null, \"COINBASE\": null, \"LOG_VERBOSITY\": \"11\", \"NETWORK_ID\": null, \"PEER_SET\": null}" - } - }, - "quickclone_recommended_node_count":1 - }, - "supported_provider_ids":[ - "docker" - ] - } - ], - "enabled":true - }, - { - "id":"poa", - "name":"Proof of Authority", - "engines":[ - { - "id":"clique", - "name":"Clique", - "enabled":true - } - ], - "roles":[ - { - "id":"peer", - "name":"Peer", - "config":{ - "allows_multiple_deployment":true, - "default_rcd":{ - "docker":{ - "provide.network":"{\"CHAIN_SPEC_URL\": null, \"JSON_RPC_URL\": null, \"NETWORK_ID\": null}" - }, - "ubuntu-vm":{ - "provide.network":"#!/bin/bash\n\nservice provide.network stop\nrm -rf /opt/provide.network\n\nwget -d --output-document=/opt/spec.json --header=\"authorization: Basic {{ apiAuthorization }}\" {{ chainspecUrl }}\n\nwget -d --output-document=/opt/bootnodes.txt --header=\"authorization: Basic {{ apiAuthorization }}\" {{ bootnodesUrl }}\n\nservice provide.network start\n" - } - }, - "quickclone_recommended_node_count":2 - }, - "supported_provider_ids":[ - "ubuntu-vm", - "docker" - ] - }, - { - "id":"validator", - "name":"Validator", - "config":{ - "allows_multiple_deployment":false, - "default_rcd":{ - "docker":{ - "provide.network":"{\"CHAIN_SPEC_URL\": null, \"ENGINE_SIGNER\": null, \"NETWORK_ID\": null, \"ENGINE_SIGNER_PRIVATE_KEY\": null}" - }, - "ubuntu-vm":{ - "provide.network":"#!/bin/bash\n\nservice provide.network stop\nrm -rf /opt/provide.network\n\nwget -d --output-document=/opt/spec.json --header=\"authorization: Basic {{ apiAuthorization }}\" {{ chainspecUrl }}\n\nwget -d --output-document=/opt/bootnodes.txt --header=\"authorization: Basic {{ apiAuthorization }}\" {{ bootnodesUrl }}\n\nservice provide.network start\n" - } - }, - "quickclone_recommended_node_count":1 - }, - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"explorer", - "name":"Block Explorer", - "config":{ - "allows_multiple_deployment":false, - "default_rcd":{ - "docker":{ - "provide.network":"{\"JSON_RPC_URL\": null}" - } - }, - "quickclone_recommended_node_count":1 - }, - "supported_provider_ids":[ - "docker" - ] - } - ], - "enabled":true - } - ] - }, - { - "id":"parity", - "name":"Parity", - "enabled":true, - "img_src_dark":"https://s3.amazonaws.com/static.provide.services/img/parity-dark.png", - "img_src_light":"https://s3.amazonaws.com/static.provide.services/img/parity-light.png", - "service_container_ids":[ - "providenetwork-node" - ], - "consensus_protocols":[ - { - "id":"pow", - "name":"Proof of Work", - "engines":[ - { - "id":"ethash", - "name":"Ethash", - "enabled":true - } - ], - "roles":[ - { - "id":"full", - "name":"Full Node", - "config":{ - "allows_multiple_deployment":true, - "default_rcd":{ - "docker":{ - "ewasm-testnet":"{\"BOOTNODES\": null, \"CHAIN_SPEC_URL\": null, \"COINBASE\": null, \"LOG_VERBOSITY\": \"11\", \"NETWORK_ID\": null, \"PEER_SET\": null}" - } - }, - "quickclone_recommended_node_count":1 - }, - "supported_provider_ids":[ - "docker" - ] - } - ], - "enabled":true - }, - { - "id":"poa", - "name":"Proof of Authority", - "engines":[ - { - "id":"aura", - "name":"Authority Round", - "enabled":true - } - ], - "roles":[ - { - "id":"peer", - "name":"Peer", - "config":{ - "allows_multiple_deployment":true, - "default_rcd":{ - "docker":{ - "provide.network":"{\"CHAIN_SPEC_URL\": null, \"JSON_RPC_URL\": null, \"NETWORK_ID\": null}" - }, - "ubuntu-vm":{ - "provide.network":"#!/bin/bash\n\nservice provide.network stop\nrm -rf /opt/provide.network\n\nwget -d --output-document=/opt/spec.json --header=\"authorization: Basic {{ apiAuthorization }}\" {{ chainspecUrl }}\n\nwget -d --output-document=/opt/bootnodes.txt --header=\"authorization: Basic {{ apiAuthorization }}\" {{ bootnodesUrl }}\n\nservice provide.network start\n" - } - }, - "quickclone_recommended_node_count":2 - }, - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"validator", - "name":"Validator", - "config":{ - "allows_multiple_deployment":false, - "default_rcd":{ - "docker":{ - "provide.network":"{\"CHAIN_SPEC_URL\": null, \"ENGINE_SIGNER\": null, \"NETWORK_ID\": null, \"ENGINE_SIGNER_PRIVATE_KEY\": null}" - }, - "ubuntu-vm":{ - "provide.network":"#!/bin/bash\n\nservice provide.network stop\nrm -rf /opt/provide.network\n\nwget -d --output-document=/opt/spec.json --header=\"authorization: Basic {{ apiAuthorization }}\" {{ chainspecUrl }}\n\nwget -d --output-document=/opt/bootnodes.txt --header=\"authorization: Basic {{ apiAuthorization }}\" {{ bootnodesUrl }}\n\nservice provide.network start\n" - } - }, - "quickclone_recommended_node_count":1 - }, - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"explorer", - "name":"Block Explorer", - "config":{ - "allows_multiple_deployment":false, - "default_rcd":{ - "docker":{ - "provide.network":"{\"JSON_RPC_URL\": null}" - } - }, - "quickclone_recommended_node_count":1 - }, - "supported_provider_ids":[ - "docker" - ] - } - ], - "enabled":true - } - ] - }, - { - "id":"quorum", - "name":"Quorum", - "enabled":true, - "img_src_dark":"https://s3.amazonaws.com/static.provide.services/img/quorum-dark.png", - "img_src_light":"https://s3.amazonaws.com/static.provide.services/img/quorum-light.png", - "service_container_ids":[ - "providenetwork-node" - ], - "consensus_protocols":[ - { - "id":"ibft", - "name":"IBFT", - "engines":[ - { - "id":"ibft", - "name":"IBFT", - "enabled":true - } - ], - "roles":[ - { - "id":"peer", - "name":"Peer", - "config":{ - "allows_multiple_deployment":true, - "default_rcd":{ - "docker":{ - "provide.network":"{\"CHAIN_SPEC_URL\": null, \"JSON_RPC_URL\": null, \"NETWORK_ID\": null}" - } - }, - "quickclone_recommended_node_count":2 - }, - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"validator", - "name":"Validator", - "config":{ - "allows_multiple_deployment":false, - "default_rcd":{ - "docker":{ - "provide.network":"{\"CHAIN_SPEC_URL\": null, \"ENGINE_SIGNER\": null, \"NETWORK_ID\": null, \"ENGINE_SIGNER_PRIVATE_KEY\": null}" - } - }, - "quickclone_recommended_node_count":1 - }, - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"explorer", - "name":"Block Explorer", - "config":{ - "allows_multiple_deployment":false, - "default_rcd":{ - "docker":{ - "provide.network":"{\"JSON_RPC_URL\": null}" - } - }, - "quickclone_recommended_node_count":1 - }, - "supported_provider_ids":[ - "docker" - ] - } - ], - "enabled":true - }, - { - "id":"raft", - "name":"Raft", - "engines":[ - { - "id":"raft", - "name":"Raft", - "enabled":true - } - ], - "roles":[ - { - "id":"peer", - "name":"Peer", - "config":{ - "allows_multiple_deployment":true, - "default_rcd":{ - "docker":{ - "provide.network":"{\"CHAIN_SPEC_URL\": null, \"JSON_RPC_URL\": null, \"NETWORK_ID\": null}" - } - }, - "quickclone_recommended_node_count":2 - }, - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"validator", - "name":"Validator", - "config":{ - "allows_multiple_deployment":false, - "default_rcd":{ - "docker":{ - "provide.network":"{\"CHAIN_SPEC_URL\": null, \"ENGINE_SIGNER\": null, \"NETWORK_ID\": null, \"ENGINE_SIGNER_PRIVATE_KEY\": null}" - } - }, - "quickclone_recommended_node_count":1 - }, - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"explorer", - "name":"Block Explorer", - "config":{ - "allows_multiple_deployment":false, - "default_rcd":{ - "docker":{ - "provide.network":"{\"JSON_RPC_URL\": null}" - } - }, - "quickclone_recommended_node_count":1 - }, - "supported_provider_ids":[ - "docker" - ] - } - ], - "enabled":true - } - ] - } - ] - }, - { - "id":"btc", - "name":"Bitcoin", - "img_src_dark":"https://s3.amazonaws.com/static.provide.services/img/bitcoin-dark.png", - "img_src_light":"https://s3.amazonaws.com/static.provide.services/img/bitcoin-light.png", - "clients":[ - { - "id":"bcoin", - "name":"Bcoin", - "enabled":true, - "img_src_dark":"https://s3.amazonaws.com/static.provide.services/img/bcoin-dark.png", - "img_src_light":"https://s3.amazonaws.com/static.provide.services/img/bcoin-light.png", - "service_container_ids":[ - "providenetwork-node" - ], - "consensus_protocols":[ - { - "id":"pow", - "name":"Proof of Work", - "engines":[ - { - "id":"hashcash", - "name":"Hashcash", - "enabled":true - } - ], - "roles":[ - { - "id":"full", - "name":"Full Node", - "config":{ - "allows_multiple_deployment":true, - "default_rcd":{ - "docker":{ - "ewasm-testnet":"{\"BOOTNODES\": null, \"CHAIN_SPEC_URL\": null, \"COINBASE\": null, \"LOG_VERBOSITY\": \"11\", \"NETWORK_ID\": null, \"PEER_SET\": null}" - } - }, - "quickclone_recommended_node_count":1 - }, - "supported_provider_ids":[ - "docker" - ] - } - ], - "enabled":true - } - ] - }, - { - "id":"handshake", - "name":"Handshake", - "enabled":true, - "img_src_dark":"https://s3.amazonaws.com/static.provide.services/img/handshake-dark.png", - "img_src_light":"https://s3.amazonaws.com/static.provide.services/img/handshake-light.png", - "service_container_ids":[ - "providenetwork-node" - ], - "consensus_protocols":[ - { - "id":"pow", - "name":"Proof of Work", - "engines":[ - { - "id":"handshake", - "name":"Handshake", - "enabled":true - } - ], - "roles":[ - { - "id":"full", - "name":"Full Node", - "config":{ - "allows_multiple_deployment":true, - "default_rcd":{ - "docker":{ - "ewasm-testnet":"{\"BOOTNODES\": null, \"CHAIN_SPEC_URL\": null, \"COINBASE\": null, \"LOG_VERBOSITY\": \"11\", \"NETWORK_ID\": null, \"PEER_SET\": null}" - } - }, - "quickclone_recommended_node_count":1 - }, - "supported_provider_ids":[ - "docker" - ] - } - ], - "enabled":true - } - ] - } - ] - }, - { - "id":"hyperledger", - "name":"Hyperledger", - "img_src_dark":"https://s3.amazonaws.com/static.provide.services/img/hyperledger-dark.png", - "img_src_light":"https://s3.amazonaws.com/static.provide.services/img/hyperledger-light.png", - "service_container_ids":[ - "providenetwork-node" - ], - "consensus_protocols":[ - - ] - } - ], - "public_cloud_providers":[ - { - "id":"aws", - "name":"AWS", - "img_src_dark":"https://s3.amazonaws.com/static.provide.services/img/aws-dark.png", - "img_src_light":"https://s3.amazonaws.com/static.provide.services/img/aws-light.png", - "regions":[ - { - "name":"United States", - "zones":[ - { - "id":"us-east-1", - "name":"N. Virginia", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"us-east-2", - "name":"Ohio", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"us-west-1", - "name":"N. California", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"us-west-2", - "name":"Oregon", - "supported_provider_ids":[ - "docker" - ] - } - ] - }, - { - "name":"Canada", - "zones":[ - { - "id":"ca-central-1", - "name":"Central Canada", - "supported_provider_ids":[ - "docker" - ] - } - ] - }, - { - "name":"Asia Pacific", - "zones":[ - { - "id":"ap-northeast-1", - "name":"Tokyo", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"ap-northeast-2", - "name":"Seoul", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"ap-southeast-1", - "name":"Singapore", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"ap-southeast-2", - "name":"Sydney", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"ap-south-1", - "name":"Mumbai", - "supported_provider_ids":[ - "docker" - ] - } - ] - }, - { - "name":"Europe", - "zones":[ - { - "id":"eu-central-1", - "name":"Frankfurt", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"eu-west-1", - "name":"Ireland", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"eu-west-2", - "name":"London", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"eu-west-3", - "name":"Paris", - "supported_provider_ids":[ - "docker" - ] - } - ] - }, - { - "name":"South America", - "zones":[ - { - "id":"sa-east-1", - "name":"São Paulo", - "supported_provider_ids":[ - "docker" - ] - } - ] - } - ], - "providers":[ - { - "id":"docker", - "name":"Docker", - "img_src_dark":"https://s3.amazonaws.com/static.provide.services/img/docker-dark.png", - "img_src_light":"https://s3.amazonaws.com/static.provide.services/img/docker-light.png", - "enabled":true - } - ] - }, - { - "id":"azure", - "name":"Microsoft Azure", - "img_src_dark":"https://s3.amazonaws.com/static.provide.services/img/azure-dark.png", - "img_src_light":"https://s3.amazonaws.com/static.provide.services/img/azure-light.png", - "regions":[ - { - "name":"United States", - "zones": [ - { - "id":"eastus", - "name":"East US", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"eastus2", - "name":"East US 2", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"southcentralus", - "name":"South Central US", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"centralus", - "name":"Central US", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"northcentralus", - "name":"North Central US", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"westus", - "name":"West US", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"westus2", - "name":"West US 2", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"westcentralus", - "name":"West Central US", - "supported_provider_ids":[ - "docker" - ] - } - ] - }, - { - "name":"Canada", - "zones":[ - { - "id":"centralcanada", - "name":"Central Canada", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"canadaeast", - "name":"Canada East", - "supported_provider_ids":[ - "docker" - ] - } - ] - }, - { - "name":"Asia Pacific", - "zones":[ - { - "id":"australiaeast", - "name":"Australia East", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"australiacentral", - "name":"Australia Central", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"australiacentral2", - "name":"Australia Central 2", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"southeastasia", - "name":"Southeast Asia", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"eastasia", - "name":"East Asia", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"japaneast", - "name":"Japan East", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"japanwest", - "name":"Japan West", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"koreacentral", - "name":"Korea Central", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"koreasouth", - "name":"Korea South", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"centralindia", - "name":"Central India", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"southindia", - "name":"South India", - "supported_provider_ids":[ - "docker" - ] - } - ] - }, - { - "name":"Europe", - "zones":[ - { - "id":"northeurope", - "name":"North Europe", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"uksouth", - "name":"UK South", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"ukwest", - "name":"UK West", - "supported_provider_ids":[ - "docker" - ] - }, - { - "id":"westeurope", - "name":"West Europe", - "supported_provider_ids":[ - "docker" - ] - } - ] - }, - { - "name":"South America", - "zones":[ - { - "id":"brazilsouth", - "name":"Brazil South", - "supported_provider_ids":[ - "docker" - ] - } - ] - } - ], - "providers":[ - { - "id":"docker", - "name":"Docker", - "img_src_dark":"https://s3.amazonaws.com/static.provide.services/img/docker-dark.png", - "img_src_light":"https://s3.amazonaws.com/static.provide.services/img/docker-light.png", - "enabled":false - } - ] - }, - { - "id":"google", - "name":"Google Cloud Platform", - "img_src_dark":"https://s3.amazonaws.com/static.provide.services/img/google-dark.png", - "img_src_light":"https://s3.amazonaws.com/static.provide.services/img/google-light.png", - "regions":[ - - ], - "providers":[ - { - "id":"docker", - "name":"Docker", - "img_src_dark":"https://s3.amazonaws.com/static.provide.services/img/docker-dark.png", - "img_src_light":"https://s3.amazonaws.com/static.provide.services/img/docker-light.png", - "enabled":false - } - ] +func checkFragmentIsValid(t *testing.T, db IDatabase, msg []byte) { + // Decode data into a fragment + fragment := &packetFragment{} + err := msgpack.Unmarshal(msg, &fragment) + + if err != nil { + t.Errorf("Unable to decode message") + return + } + + // Check that fragment has a payload + if fragment.Payload == nil { + t.Errorf("Fragment contained no Payload,") + return + } + + // Check that the checksum is present & correct + if fragment.Checksum == nil { + t.Errorf("Fragment contained no checksum,") + return + } + + // Manually check the checksum + // Hash the Payload & compare with Checksum + hashBytes := md5.Sum(*fragment.Payload) + + if !bytes.Equal(*fragment.Checksum, hashBytes[:]) { + t.Errorf("Fragment hash was not as expected.") + } + + // Ensure Index is within Cardinality range + if fragment.Index >= fragment.Cardinality { + t.Errorf("Fragment index was out of bounds. Index: %d, Cardinality: %d", + fragment.Index, fragment.Cardinality) + } + + // Ingest the fragment + valid, _, verr := fragment.Ingest(db) + if !valid { + t.Errorf("Fragment Ingest returned false.") + } + if verr != nil { + t.Errorf("Fragment Ingest encountered error: '%s'", verr) + } +} + +func checkReassemblyIsValid(t *testing.T, db IDatabase, msg []byte) *packetReassembly { + // Decode data into a reassembly packet + reassembly := &packetReassembly{} + err := msgpack.Unmarshal(msg, &reassembly) + + if err != nil { + t.Errorf("Unable to reassembly packet") + return nil + } + + // Ingest the fragment + valid, _, verr := reassembly.Ingest(db) + if !valid { + t.Error("Reassembly Ingest returned false") + } + if verr != nil { + t.Errorf("Reassembly Ingest encountered error: '%s'", verr) + } + + return reassembly +} + +func TestBroadcastFragments(t *testing.T) { + testNetwork, db := setupTestNetwork() + + payload := generateRandomBytes(1024 * 128) + + // Stub out the publish function so that BroadcastFragments will use our stub above to "send" data. + var reassembly *packetReassembly = nil + var totalMsgSize uint = 0 + testNetwork.onSend = func(subject string, msg []byte) { + length := uint(len(msg)) + totalMsgSize += length + + if length > 7000 { + t.Errorf("Large fragment found. Expected size: <= 7000, Actual: %d. subject: '%s'", len(msg), subject) + } + + // Subject is always packetFragmentIngestSubject? + if subject == packetFragmentIngestSubject { + checkFragmentIsValid(t, db, msg) + } else if subject == packetReassembleSubject { + if reassembly != nil { + t.Error("Recieved more than one reassembly packet") } - ], - "private_network_providers":[ - { - "id":"docker", - "name":"Docker", - "img_src_dark":"https://s3.amazonaws.com/static.provide.services/img/docker-dark.png", - "img_src_light":"https://s3.amazonaws.com/static.provide.services/img/docker-light.png", - "enabled":true + reassembly = checkReassemblyIsValid(t, db, msg) + } else if subject == packetCompleteSubject { + // Reassemble the packets + if reassembly == nil { + t.Error("BroadcastFragments() error; did not get reassembly packet") + return } - ], - "containers":[ - { - "id":"providenetwork-node", - "name":"provide.network node", - "description":"monorepo containing supported and experimental platform images", - "img_src_dark":null, - "img_src_light":null, - "github_url":"https://github.com/providenetwork/node", - "dockerhub_url":null, - "enabled":true, - "tags":[] - }, - { - "id":"providenetwork-indra", - "name":"provide.network indra v2.x.x payment hub", - "description":"the connext.network indra hub, but with some additional convenience and orchestration capabilities", - "img_src_dark":null, - "img_src_light":null, - "github_url":"https://github.com/providenetwork/indra-v2", - "dockerhub_url":null, - "enabled":false, - "tags":["layer2", "payments"] - }, - { - "id":"provide/nats-server", - "name":"provide nats server", - "description":"provide NATS server fork with bearer JWT and embedded websockets support", - "img_src_dark":null, - "img_src_light":null, - "github_url":"https://github.com/kthomas/nats-server", - "dockerhub_url":null, - "image": "provide/nats-server", - "enabled":true, - "tags":["messaging"], - "type":"nats", - "api_port":4222, - "security": { - "egress":"*", - "ingress": { - "0.0.0.0/0": { - "tcp": [4221, 4222], - "udp":[] - } - } - } - }, - { - "id":"provide/baseline-messenger", - "name":"messenger", - "description":"baseline messenger api", - "img_src_dark":null, - "img_src_light":null, - "github_url":"https://github.com/ethereum-oasis/baseline", - "dockerhub_url":null, - "image": "provide/baseline-messenger", - "enabled":true, - "tags":["messaging", "whisper"], - "type":"rest", - "api_port":4001, - "security": { - "egress":"*", - "ingress": { - "0.0.0.0/0": { - "tcp": [4001], - "udp":[] - } - } - } - }, - { - "id":"provide/baseline-api", - "name":"radish-api", - "description":"baseline radish api", - "img_src_dark":null, - "img_src_light":null, - "github_url":"https://github.com/ethereum-oasis/baseline", - "dockerhub_url":null, - "image": "provide/baseline-api", - "enabled":true, - "tags":["baseline"], - "type":"rest", - "api_port":8101, - "security": { - "egress":"*", - "ingress": { - "0.0.0.0/0": { - "tcp": [8001, 8101], - "udp":[] - } - } - } - }, - { - "id":"go/go-ipfs", - "name":"ipfs", - "description":"IPFS", - "img_src_dark":null, - "img_src_light":null, - "github_url":"https://github.com/ipfs/go-ipfs", - "dockerhub_url":null, - "image": "go/go-ipfs", - "enabled":true, - "api_port":5001, - "tags":["datastore", "ipfs"], - "type":"ipfs", - "security": { - "health_check":{ - "path":"/api/v0/version" - }, - "egress":"*", - "ingress": { - "0.0.0.0/0": { - "tcp":[4001, 5001, 8080, 8081], - "udp":[] - } - } - } - }, - { - "id":"elasticsearch", - "name":"elasticsearch", - "description":"elasticsearch 7.6.0", - "img_src_dark":null, - "img_src_light":null, - "github_url":"https://github.com/kthomas/nats-server", - "dockerhub_url":null, - "image": "docker.elastic.co/elasticsearch/elasticsearch:7.6.0", - "enabled":true, - "api_port":9300, - "tags":["search", "datastore"], - "type":"ipfs", - "security": { - "egress":"*", - "ingress": { - "0.0.0.0/0": { - "tcp":[9300, 9400], - "udp":[] - } - } - } - }, - { - "id":"mongo", - "name":"mongodb", - "description":"mongodb", - "img_src_dark":null, - "img_src_light":null, - "github_url":"https://github.com/mongodb/mongo", - "dockerhub_url":null, - "image": "mongo", - "enabled":true, - "api_port":27017, - "tags":["datastore"], - "type":"mongodb", - "security": { - "egress":"*", - "ingress": { - "0.0.0.0/0": { - "tcp":[27017], - "udp":[] - } - } - } - }, - { - "id":"redis", - "name":"redis", - "description":"redis server", - "img_src_dark":null, - "img_src_light":null, - "github_url":"https://github.com/antirez/redis", - "dockerhub_url":null, - "image": "redis", - "enabled":true, - "api_port":6379, - "tags":["datastore"], - "type":"redis", - "security": { - "egress":"*", - "ingress": { - "0.0.0.0/0": { - "tcp":[6379], - "udp":[] - } - } - } - }, - { - "id":"zokrates/zokrates", - "name":"zokrates", - "description":"zokrates zero-knowledge circuit", - "img_src_dark":null, - "img_src_light":null, - "github_url":"https://github.com/zokrates/zokrates", - "dockerhub_url":null, - "image": "zokrates/zokrates", - "enabled":true, - "tags":["zeroknowledge", "zksnarks"], - "type":"zokrates" + ret, err := reassembly.Reassemble(db) + if !ret { + t.Error("reassembly.Reassemble() returned false") } - ] - }, - "baseline":{ - "contracts":[ - - ], - "default_organization_containers":[ - "mongo", - "provide/baseline-api", - "provide/baseline-messenger", - "redis", - "zokrates/zokrates" - ] - }, - "message_bus":{ - "project_containers":[ - "elasticsearch", - "provide/nats-server" - ], - "registry_contracts":[ - { - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "_subject", - "type": "string" - }, - { - "name": "_hash", - "type": "bytes" - } - ], - "name": "publish", - "outputs": null, - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_page", - "type": "uint256" - }, - { - "name": "_rpp", - "type": "uint256" - } - ], - "name": "listMessages", - "outputs": [ - { - "components": [ - { - "name": "sender", - "type": "address" - }, - { - "name": "timestamp", - "type": "uint256" - }, - { - "name": "subject", - "type": "string" - }, - { - "name": "hash", - "type": "bytes" - } - ], - "name": "_msgs", - "type": "tuple[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "subject", - "type": "string" - }, - { - "indexed": false, - "name": "key", - "type": "bytes32" - }, - { - "indexed": false, - "name": "sender", - "type": "address" - } - ], - "name": "Published", - "type": "event" - } - ], - "assembly": { - ".code": [ - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "80" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "40" - }, - { - "begin": 58, - "end": 1543, - "name": "MSTORE" - }, - { - "begin": 58, - "end": 1543, - "name": "CALLVALUE" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "1" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 30, - "end": 31, - "name": "PUSH", - "value": "0" - }, - { - "begin": 27, - "end": 28, - "name": "DUP1" - }, - { - "begin": 20, - "end": 32, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "1" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 58, - "end": 1543, - "name": "POP" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH #[$]", - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP1" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH [$]", - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "0" - }, - { - "begin": 58, - "end": 1543, - "name": "CODECOPY" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "0" - }, - { - "begin": 58, - "end": 1543, - "name": "RETURN" - } - ], - ".data": { - "0": { - ".auxdata": "a265627a7a72305820bc6fd206f999fbcfe9512092d362c4a7e7309d2bd608f91b9e3120086bea36646c6578706572696d656e74616cf50037", - ".code": [ - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "80" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "40" - }, - { - "begin": 58, - "end": 1543, - "name": "MSTORE" - }, - { - "begin": 58, - "end": 1543, - "name": "CALLVALUE" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "1" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 30, - "end": 31, - "name": "PUSH", - "value": "0" - }, - { - "begin": 27, - "end": 28, - "name": "DUP1" - }, - { - "begin": 20, - "end": 32, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "1" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 58, - "end": 1543, - "name": "POP" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "4" - }, - { - "begin": 58, - "end": 1543, - "name": "CALLDATASIZE" - }, - { - "begin": 58, - "end": 1543, - "name": "LT" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH [tag]", - "value": "2" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPI" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "0" - }, - { - "begin": 58, - "end": 1543, - "name": "CALLDATALOAD" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "100000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "DIV" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP1" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "44E8FD08" - }, - { - "begin": 58, - "end": 1543, - "name": "EQ" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH [tag]", - "value": "3" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPI" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP1" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "AC45FCD9" - }, - { - "begin": 58, - "end": 1543, - "name": "EQ" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH [tag]", - "value": "4" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPI" - }, - { - "begin": 58, - "end": 1543, - "name": "tag", - "value": "2" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPDEST" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "0" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP1" - }, - { - "begin": 58, - "end": 1543, - "name": "REVERT" - }, - { - "begin": 420, - "end": 781, - "name": "tag", - "value": "3" - }, - { - "begin": 420, - "end": 781, - "name": "JUMPDEST" - }, - { - "begin": 420, - "end": 781, - "name": "PUSH [tag]", - "value": "5" - }, - { - "begin": 420, - "end": 781, - "name": "PUSH", - "value": "4" - }, - { - "begin": 420, - "end": 781, - "name": "DUP1" - }, - { - "begin": 420, - "end": 781, - "name": "CALLDATASIZE" - }, - { - "begin": 420, - "end": 781, - "name": "SUB" - }, - { - "begin": 420, - "end": 781, - "name": "PUSH [tag]", - "value": "6" - }, - { - "begin": 420, - "end": 781, - "name": "SWAP2" - }, - { - "begin": 420, - "end": 781, - "name": "SWAP1" - }, - { - "begin": 420, - "end": 781, - "name": "DUP2" - }, - { - "begin": 420, - "end": 781, - "name": "ADD" - }, - { - "begin": 420, - "end": 781, - "name": "SWAP1" - }, - { - "begin": 420, - "end": 781, - "name": "PUSH [tag]", - "value": "7" - }, - { - "begin": 420, - "end": 781, - "name": "JUMP" - }, - { - "begin": 420, - "end": 781, - "name": "tag", - "value": "6" - }, - { - "begin": 420, - "end": 781, - "name": "JUMPDEST" - }, - { - "begin": 420, - "end": 781, - "name": "PUSH [tag]", - "value": "8" - }, - { - "begin": 420, - "end": 781, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 420, - "end": 781, - "name": "tag", - "value": "5" - }, - { - "begin": 420, - "end": 781, - "name": "JUMPDEST" - }, - { - "begin": 420, - "end": 781, - "name": "STOP" - }, - { - "begin": 787, - "end": 1541, - "name": "tag", - "value": "4" - }, - { - "begin": 787, - "end": 1541, - "name": "JUMPDEST" - }, - { - "begin": 787, - "end": 1541, - "name": "PUSH [tag]", - "value": "9" - }, - { - "begin": 787, - "end": 1541, - "name": "PUSH", - "value": "4" - }, - { - "begin": 787, - "end": 1541, - "name": "DUP1" - }, - { - "begin": 787, - "end": 1541, - "name": "CALLDATASIZE" - }, - { - "begin": 787, - "end": 1541, - "name": "SUB" - }, - { - "begin": 787, - "end": 1541, - "name": "PUSH [tag]", - "value": "10" - }, - { - "begin": 787, - "end": 1541, - "name": "SWAP2" - }, - { - "begin": 787, - "end": 1541, - "name": "SWAP1" - }, - { - "begin": 787, - "end": 1541, - "name": "DUP2" - }, - { - "begin": 787, - "end": 1541, - "name": "ADD" - }, - { - "begin": 787, - "end": 1541, - "name": "SWAP1" - }, - { - "begin": 787, - "end": 1541, - "name": "PUSH [tag]", - "value": "11" - }, - { - "begin": 787, - "end": 1541, - "name": "JUMP" - }, - { - "begin": 787, - "end": 1541, - "name": "tag", - "value": "10" - }, - { - "begin": 787, - "end": 1541, - "name": "JUMPDEST" - }, - { - "begin": 787, - "end": 1541, - "name": "PUSH [tag]", - "value": "12" - }, - { - "begin": 787, - "end": 1541, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 787, - "end": 1541, - "name": "tag", - "value": "9" - }, - { - "begin": 787, - "end": 1541, - "name": "JUMPDEST" - }, - { - "begin": 787, - "end": 1541, - "name": "PUSH", - "value": "40" - }, - { - "begin": 787, - "end": 1541, - "name": "MLOAD" - }, - { - "begin": 787, - "end": 1541, - "name": "PUSH [tag]", - "value": "13" - }, - { - "begin": 787, - "end": 1541, - "name": "SWAP2" - }, - { - "begin": 787, - "end": 1541, - "name": "SWAP1" - }, - { - "begin": 787, - "end": 1541, - "name": "PUSH [tag]", - "value": "14" - }, - { - "begin": 787, - "end": 1541, - "name": "JUMP" - }, - { - "begin": 787, - "end": 1541, - "name": "tag", - "value": "13" - }, - { - "begin": 787, - "end": 1541, - "name": "JUMPDEST" - }, - { - "begin": 787, - "end": 1541, - "name": "PUSH", - "value": "40" - }, - { - "begin": 787, - "end": 1541, - "name": "MLOAD" - }, - { - "begin": 787, - "end": 1541, - "name": "DUP1" - }, - { - "begin": 787, - "end": 1541, - "name": "SWAP2" - }, - { - "begin": 787, - "end": 1541, - "name": "SUB" - }, - { - "begin": 787, - "end": 1541, - "name": "SWAP1" - }, - { - "begin": 787, - "end": 1541, - "name": "RETURN" - }, - { - "begin": 420, - "end": 781, - "name": "tag", - "value": "8" - }, - { - "begin": 420, - "end": 781, - "name": "JUMPDEST" - }, - { - "begin": 498, - "end": 517, - "name": "PUSH [tag]", - "value": "16" - }, - { - "begin": 498, - "end": 517, - "name": "PUSH [tag]", - "value": "17" - }, - { - "begin": 498, - "end": 517, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 498, - "end": 517, - "name": "tag", - "value": "16" - }, - { - "begin": 498, - "end": 517, - "name": "JUMPDEST" - }, - { - "begin": 520, - "end": 561, - "name": "PUSH", - "value": "80" - }, - { - "begin": 520, - "end": 561, - "name": "PUSH", - "value": "40" - }, - { - "begin": 520, - "end": 561, - "name": "MLOAD" - }, - { - "begin": 520, - "end": 561, - "name": "SWAP1" - }, - { - "begin": 520, - "end": 561, - "name": "DUP2" - }, - { - "begin": 520, - "end": 561, - "name": "ADD" - }, - { - "begin": 520, - "end": 561, - "name": "PUSH", - "value": "40" - }, - { - "begin": 520, - "end": 561, - "name": "MSTORE" - }, - { - "begin": 520, - "end": 561, - "name": "DUP1" - }, - { - "begin": 528, - "end": 538, - "name": "CALLER" - }, - { - "begin": 520, - "end": 561, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 520, - "end": 561, - "name": "AND" - }, - { - "begin": 520, - "end": 561, - "name": "DUP2" - }, - { - "begin": 520, - "end": 561, - "name": "MSTORE" - }, - { - "begin": 520, - "end": 561, - "name": "PUSH", - "value": "20" - }, - { - "begin": 520, - "end": 561, - "name": "ADD" - }, - { - "begin": 540, - "end": 543, - "name": "TIMESTAMP" - }, - { - "begin": 520, - "end": 561, - "name": "DUP2" - }, - { - "begin": 520, - "end": 561, - "name": "MSTORE" - }, - { - "begin": 520, - "end": 561, - "name": "PUSH", - "value": "20" - }, - { - "begin": 520, - "end": 561, - "name": "ADD" - }, - { - "begin": 545, - "end": 553, - "name": "DUP5" - }, - { - "begin": 520, - "end": 561, - "name": "DUP2" - }, - { - "begin": 520, - "end": 561, - "name": "MSTORE" - }, - { - "begin": 520, - "end": 561, - "name": "PUSH", - "value": "20" - }, - { - "begin": 520, - "end": 561, - "name": "ADD" - }, - { - "begin": 555, - "end": 560, - "name": "DUP4" - }, - { - "begin": 520, - "end": 561, - "name": "DUP2" - }, - { - "begin": 520, - "end": 561, - "name": "MSTORE" - }, - { - "begin": 520, - "end": 561, - "name": "POP" - }, - { - "begin": 498, - "end": 561, - "name": "SWAP1" - }, - { - "begin": 498, - "end": 561, - "name": "POP" - }, - { - "begin": 571, - "end": 582, - "name": "PUSH", - "value": "0" - }, - { - "begin": 606, - "end": 610, - "name": "DUP2" - }, - { - "begin": 595, - "end": 611, - "name": "PUSH", - "value": "40" - }, - { - "begin": 595, - "end": 611, - "name": "MLOAD" - }, - { - "begin": 595, - "end": 611, - "name": "PUSH", - "value": "20" - }, - { - "begin": 595, - "end": 611, - "name": "ADD" - }, - { - "begin": 595, - "end": 611, - "name": "PUSH [tag]", - "value": "18" - }, - { - "begin": 595, - "end": 611, - "name": "SWAP2" - }, - { - "begin": 595, - "end": 611, - "name": "SWAP1" - }, - { - "begin": 595, - "end": 611, - "name": "PUSH [tag]", - "value": "19" - }, - { - "begin": 595, - "end": 611, - "name": "JUMP" - }, - { - "begin": 595, - "end": 611, - "name": "tag", - "value": "18" - }, - { - "begin": 595, - "end": 611, - "name": "JUMPDEST" - }, - { - "begin": 595, - "end": 611, - "name": "PUSH", - "value": "40" - }, - { - "begin": 595, - "end": 611, - "name": "MLOAD" - }, - { - "begin": 49, - "end": 53, - "name": "PUSH", - "value": "20" - }, - { - "begin": 39, - "end": 46, - "name": "DUP2" - }, - { - "begin": 30, - "end": 37, - "name": "DUP4" - }, - { - "begin": 26, - "end": 47, - "name": "SUB" - }, - { - "begin": 22, - "end": 54, - "name": "SUB" - }, - { - "begin": 13, - "end": 20, - "name": "DUP2" - }, - { - "begin": 6, - "end": 55, - "name": "MSTORE" - }, - { - "begin": 595, - "end": 611, - "name": "SWAP1" - }, - { - "begin": 595, - "end": 611, - "name": "PUSH", - "value": "40" - }, - { - "begin": 595, - "end": 611, - "name": "MSTORE" - }, - { - "begin": 585, - "end": 612, - "name": "DUP1" - }, - { - "begin": 585, - "end": 612, - "name": "MLOAD" - }, - { - "begin": 585, - "end": 612, - "name": "SWAP1" - }, - { - "begin": 585, - "end": 612, - "name": "PUSH", - "value": "20" - }, - { - "begin": 585, - "end": 612, - "name": "ADD" - }, - { - "begin": 585, - "end": 612, - "name": "KECCAK256" - }, - { - "begin": 571, - "end": 612, - "name": "SWAP1" - }, - { - "begin": 571, - "end": 612, - "name": "POP" - }, - { - "begin": 644, - "end": 648, - "name": "DUP2" - }, - { - "begin": 622, - "end": 636, - "name": "PUSH", - "value": "1" - }, - { - "begin": 622, - "end": 641, - "name": "PUSH", - "value": "0" - }, - { - "begin": 637, - "end": 640, - "name": "DUP4" - }, - { - "begin": 622, - "end": 641, - "name": "DUP2" - }, - { - "begin": 622, - "end": 641, - "name": "MSTORE" - }, - { - "begin": 622, - "end": 641, - "name": "PUSH", - "value": "20" - }, - { - "begin": 622, - "end": 641, - "name": "ADD" - }, - { - "begin": 622, - "end": 641, - "name": "SWAP1" - }, - { - "begin": 622, - "end": 641, - "name": "DUP2" - }, - { - "begin": 622, - "end": 641, - "name": "MSTORE" - }, - { - "begin": 622, - "end": 641, - "name": "PUSH", - "value": "20" - }, - { - "begin": 622, - "end": 641, - "name": "ADD" - }, - { - "begin": 622, - "end": 641, - "name": "PUSH", - "value": "0" - }, - { - "begin": 622, - "end": 641, - "name": "KECCAK256" - }, - { - "begin": 622, - "end": 648, - "name": "PUSH", - "value": "0" - }, - { - "begin": 622, - "end": 648, - "name": "DUP3" - }, - { - "begin": 622, - "end": 648, - "name": "ADD" - }, - { - "begin": 622, - "end": 648, - "name": "MLOAD" - }, - { - "begin": 622, - "end": 648, - "name": "DUP2" - }, - { - "begin": 622, - "end": 648, - "name": "PUSH", - "value": "0" - }, - { - "begin": 622, - "end": 648, - "name": "ADD" - }, - { - "begin": 622, - "end": 648, - "name": "PUSH", - "value": "0" - }, - { - "begin": 622, - "end": 648, - "name": "PUSH", - "value": "100" - }, - { - "begin": 622, - "end": 648, - "name": "EXP" - }, - { - "begin": 622, - "end": 648, - "name": "DUP2" - }, - { - "begin": 622, - "end": 648, - "name": "SLOAD" - }, - { - "begin": 622, - "end": 648, - "name": "DUP2" - }, - { - "begin": 622, - "end": 648, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 622, - "end": 648, - "name": "MUL" - }, - { - "begin": 622, - "end": 648, - "name": "NOT" - }, - { - "begin": 622, - "end": 648, - "name": "AND" - }, - { - "begin": 622, - "end": 648, - "name": "SWAP1" - }, - { - "begin": 622, - "end": 648, - "name": "DUP4" - }, - { - "begin": 622, - "end": 648, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 622, - "end": 648, - "name": "AND" - }, - { - "begin": 622, - "end": 648, - "name": "MUL" - }, - { - "begin": 622, - "end": 648, - "name": "OR" - }, - { - "begin": 622, - "end": 648, - "name": "SWAP1" - }, - { - "begin": 622, - "end": 648, - "name": "SSTORE" - }, - { - "begin": 622, - "end": 648, - "name": "POP" - }, - { - "begin": 622, - "end": 648, - "name": "PUSH", - "value": "20" - }, - { - "begin": 622, - "end": 648, - "name": "DUP3" - }, - { - "begin": 622, - "end": 648, - "name": "ADD" - }, - { - "begin": 622, - "end": 648, - "name": "MLOAD" - }, - { - "begin": 622, - "end": 648, - "name": "DUP2" - }, - { - "begin": 622, - "end": 648, - "name": "PUSH", - "value": "1" - }, - { - "begin": 622, - "end": 648, - "name": "ADD" - }, - { - "begin": 622, - "end": 648, - "name": "SSTORE" - }, - { - "begin": 622, - "end": 648, - "name": "PUSH", - "value": "40" - }, - { - "begin": 622, - "end": 648, - "name": "DUP3" - }, - { - "begin": 622, - "end": 648, - "name": "ADD" - }, - { - "begin": 622, - "end": 648, - "name": "MLOAD" - }, - { - "begin": 622, - "end": 648, - "name": "DUP2" - }, - { - "begin": 622, - "end": 648, - "name": "PUSH", - "value": "2" - }, - { - "begin": 622, - "end": 648, - "name": "ADD" - }, - { - "begin": 622, - "end": 648, - "name": "SWAP1" - }, - { - "begin": 622, - "end": 648, - "name": "DUP1" - }, - { - "begin": 622, - "end": 648, - "name": "MLOAD" - }, - { - "begin": 622, - "end": 648, - "name": "SWAP1" - }, - { - "begin": 622, - "end": 648, - "name": "PUSH", - "value": "20" - }, - { - "begin": 622, - "end": 648, - "name": "ADD" - }, - { - "begin": 622, - "end": 648, - "name": "SWAP1" - }, - { - "begin": 622, - "end": 648, - "name": "PUSH [tag]", - "value": "20" - }, - { - "begin": 622, - "end": 648, - "name": "SWAP3" - }, - { - "begin": 622, - "end": 648, - "name": "SWAP2" - }, - { - "begin": 622, - "end": 648, - "name": "SWAP1" - }, - { - "begin": 622, - "end": 648, - "name": "PUSH [tag]", - "value": "21" - }, - { - "begin": 622, - "end": 648, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 622, - "end": 648, - "name": "tag", - "value": "20" - }, - { - "begin": 622, - "end": 648, - "name": "JUMPDEST" - }, - { - "begin": 622, - "end": 648, - "name": "POP" - }, - { - "begin": 622, - "end": 648, - "name": "PUSH", - "value": "60" - }, - { - "begin": 622, - "end": 648, - "name": "DUP3" - }, - { - "begin": 622, - "end": 648, - "name": "ADD" - }, - { - "begin": 622, - "end": 648, - "name": "MLOAD" - }, - { - "begin": 622, - "end": 648, - "name": "DUP2" - }, - { - "begin": 622, - "end": 648, - "name": "PUSH", - "value": "3" - }, - { - "begin": 622, - "end": 648, - "name": "ADD" - }, - { - "begin": 622, - "end": 648, - "name": "SWAP1" - }, - { - "begin": 622, - "end": 648, - "name": "DUP1" - }, - { - "begin": 622, - "end": 648, - "name": "MLOAD" - }, - { - "begin": 622, - "end": 648, - "name": "SWAP1" - }, - { - "begin": 622, - "end": 648, - "name": "PUSH", - "value": "20" - }, - { - "begin": 622, - "end": 648, - "name": "ADD" - }, - { - "begin": 622, - "end": 648, - "name": "SWAP1" - }, - { - "begin": 622, - "end": 648, - "name": "PUSH [tag]", - "value": "22" - }, - { - "begin": 622, - "end": 648, - "name": "SWAP3" - }, - { - "begin": 622, - "end": 648, - "name": "SWAP2" - }, - { - "begin": 622, - "end": 648, - "name": "SWAP1" - }, - { - "begin": 622, - "end": 648, - "name": "PUSH [tag]", - "value": "23" - }, - { - "begin": 622, - "end": 648, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 622, - "end": 648, - "name": "tag", - "value": "22" - }, - { - "begin": 622, - "end": 648, - "name": "JUMPDEST" - }, - { - "begin": 622, - "end": 648, - "name": "POP" - }, - { - "begin": 622, - "end": 648, - "name": "SWAP1" - }, - { - "begin": 622, - "end": 648, - "name": "POP" - }, - { - "begin": 622, - "end": 648, - "name": "POP" - }, - { - "begin": 658, - "end": 672, - "name": "PUSH", - "value": "2" - }, - { - "begin": 658, - "end": 684, - "name": "PUSH", - "value": "0" - }, - { - "begin": 673, - "end": 683, - "name": "CALLER" - }, - { - "begin": 658, - "end": 684, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 658, - "end": 684, - "name": "AND" - }, - { - "begin": 658, - "end": 684, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 658, - "end": 684, - "name": "AND" - }, - { - "begin": 658, - "end": 684, - "name": "DUP2" - }, - { - "begin": 658, - "end": 684, - "name": "MSTORE" - }, - { - "begin": 658, - "end": 684, - "name": "PUSH", - "value": "20" - }, - { - "begin": 658, - "end": 684, - "name": "ADD" - }, - { - "begin": 658, - "end": 684, - "name": "SWAP1" - }, - { - "begin": 658, - "end": 684, - "name": "DUP2" - }, - { - "begin": 658, - "end": 684, - "name": "MSTORE" - }, - { - "begin": 658, - "end": 684, - "name": "PUSH", - "value": "20" - }, - { - "begin": 658, - "end": 684, - "name": "ADD" - }, - { - "begin": 658, - "end": 684, - "name": "PUSH", - "value": "0" - }, - { - "begin": 658, - "end": 684, - "name": "KECCAK256" - }, - { - "begin": 690, - "end": 693, - "name": "DUP2" - }, - { - "begin": 658, - "end": 694, - "name": "SWAP1" - }, - { - "begin": 658, - "end": 694, - "name": "DUP1" - }, - { - "begin": 39, - "end": 40, - "name": "PUSH", - "value": "1" - }, - { - "begin": 33, - "end": 36, - "name": "DUP2" - }, - { - "begin": 27, - "end": 37, - "name": "SLOAD" - }, - { - "begin": 23, - "end": 41, - "name": "ADD" - }, - { - "begin": 57, - "end": 67, - "name": "DUP1" - }, - { - "begin": 52, - "end": 55, - "name": "DUP3" - }, - { - "begin": 45, - "end": 68, - "name": "SSTORE" - }, - { - "begin": 79, - "end": 89, - "name": "DUP1" - }, - { - "begin": 72, - "end": 89, - "name": "SWAP2" - }, - { - "begin": 72, - "end": 89, - "name": "POP" - }, - { - "begin": 0, - "end": 93, - "name": "POP" - }, - { - "begin": 658, - "end": 694, - "name": "SWAP1" - }, - { - "begin": 658, - "end": 694, - "name": "PUSH", - "value": "1" - }, - { - "begin": 658, - "end": 694, - "name": "DUP3" - }, - { - "begin": 658, - "end": 694, - "name": "SUB" - }, - { - "begin": 658, - "end": 694, - "name": "SWAP1" - }, - { - "begin": 658, - "end": 694, - "name": "PUSH", - "value": "0" - }, - { - "begin": 658, - "end": 694, - "name": "MSTORE" - }, - { - "begin": 658, - "end": 694, - "name": "PUSH", - "value": "20" - }, - { - "begin": 658, - "end": 694, - "name": "PUSH", - "value": "0" - }, - { - "begin": 658, - "end": 694, - "name": "KECCAK256" - }, - { - "begin": 658, - "end": 694, - "name": "ADD" - }, - { - "begin": 658, - "end": 694, - "name": "PUSH", - "value": "0" - }, - { - "begin": 658, - "end": 694, - "name": "SWAP1" - }, - { - "begin": 658, - "end": 694, - "name": "SWAP2" - }, - { - "begin": 658, - "end": 694, - "name": "SWAP3" - }, - { - "begin": 658, - "end": 694, - "name": "SWAP1" - }, - { - "begin": 658, - "end": 694, - "name": "SWAP2" - }, - { - "begin": 658, - "end": 694, - "name": "SWAP1" - }, - { - "begin": 658, - "end": 694, - "name": "SWAP2" - }, - { - "begin": 658, - "end": 694, - "name": "POP" - }, - { - "begin": 658, - "end": 694, - "name": "SSTORE" - }, - { - "begin": 658, - "end": 694, - "name": "POP" - }, - { - "begin": 704, - "end": 712, - "name": "PUSH", - "value": "0" - }, - { - "begin": 718, - "end": 722, - "name": "DUP3" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP1" - }, - { - "begin": 704, - "end": 723, - "name": "DUP1" - }, - { - "begin": 39, - "end": 40, - "name": "PUSH", - "value": "1" - }, - { - "begin": 33, - "end": 36, - "name": "DUP2" - }, - { - "begin": 27, - "end": 37, - "name": "SLOAD" - }, - { - "begin": 23, - "end": 41, - "name": "ADD" - }, - { - "begin": 57, - "end": 67, - "name": "DUP1" - }, - { - "begin": 52, - "end": 55, - "name": "DUP3" - }, - { - "begin": 45, - "end": 68, - "name": "SSTORE" - }, - { - "begin": 79, - "end": 89, - "name": "DUP1" - }, - { - "begin": 72, - "end": 89, - "name": "SWAP2" - }, - { - "begin": 72, - "end": 89, - "name": "POP" - }, - { - "begin": 0, - "end": 93, - "name": "POP" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP1" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH", - "value": "1" - }, - { - "begin": 704, - "end": 723, - "name": "DUP3" - }, - { - "begin": 704, - "end": 723, - "name": "SUB" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP1" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH", - "value": "0" - }, - { - "begin": 704, - "end": 723, - "name": "MSTORE" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH", - "value": "20" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH", - "value": "0" - }, - { - "begin": 704, - "end": 723, - "name": "KECCAK256" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP1" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH", - "value": "4" - }, - { - "begin": 704, - "end": 723, - "name": "MUL" - }, - { - "begin": 704, - "end": 723, - "name": "ADD" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH", - "value": "0" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP1" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP2" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP3" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP1" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP2" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP1" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP2" - }, - { - "begin": 704, - "end": 723, - "name": "POP" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH", - "value": "0" - }, - { - "begin": 704, - "end": 723, - "name": "DUP3" - }, - { - "begin": 704, - "end": 723, - "name": "ADD" - }, - { - "begin": 704, - "end": 723, - "name": "MLOAD" - }, - { - "begin": 704, - "end": 723, - "name": "DUP2" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH", - "value": "0" - }, - { - "begin": 704, - "end": 723, - "name": "ADD" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH", - "value": "0" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH", - "value": "100" - }, - { - "begin": 704, - "end": 723, - "name": "EXP" - }, - { - "begin": 704, - "end": 723, - "name": "DUP2" - }, - { - "begin": 704, - "end": 723, - "name": "SLOAD" - }, - { - "begin": 704, - "end": 723, - "name": "DUP2" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 704, - "end": 723, - "name": "MUL" - }, - { - "begin": 704, - "end": 723, - "name": "NOT" - }, - { - "begin": 704, - "end": 723, - "name": "AND" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP1" - }, - { - "begin": 704, - "end": 723, - "name": "DUP4" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 704, - "end": 723, - "name": "AND" - }, - { - "begin": 704, - "end": 723, - "name": "MUL" - }, - { - "begin": 704, - "end": 723, - "name": "OR" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP1" - }, - { - "begin": 704, - "end": 723, - "name": "SSTORE" - }, - { - "begin": 704, - "end": 723, - "name": "POP" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH", - "value": "20" - }, - { - "begin": 704, - "end": 723, - "name": "DUP3" - }, - { - "begin": 704, - "end": 723, - "name": "ADD" - }, - { - "begin": 704, - "end": 723, - "name": "MLOAD" - }, - { - "begin": 704, - "end": 723, - "name": "DUP2" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH", - "value": "1" - }, - { - "begin": 704, - "end": 723, - "name": "ADD" - }, - { - "begin": 704, - "end": 723, - "name": "SSTORE" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH", - "value": "40" - }, - { - "begin": 704, - "end": 723, - "name": "DUP3" - }, - { - "begin": 704, - "end": 723, - "name": "ADD" - }, - { - "begin": 704, - "end": 723, - "name": "MLOAD" - }, - { - "begin": 704, - "end": 723, - "name": "DUP2" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH", - "value": "2" - }, - { - "begin": 704, - "end": 723, - "name": "ADD" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP1" - }, - { - "begin": 704, - "end": 723, - "name": "DUP1" - }, - { - "begin": 704, - "end": 723, - "name": "MLOAD" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP1" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH", - "value": "20" - }, - { - "begin": 704, - "end": 723, - "name": "ADD" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP1" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH [tag]", - "value": "26" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP3" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP2" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP1" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH [tag]", - "value": "21" - }, - { - "begin": 704, - "end": 723, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 704, - "end": 723, - "name": "tag", - "value": "26" - }, - { - "begin": 704, - "end": 723, - "name": "JUMPDEST" - }, - { - "begin": 704, - "end": 723, - "name": "POP" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH", - "value": "60" - }, - { - "begin": 704, - "end": 723, - "name": "DUP3" - }, - { - "begin": 704, - "end": 723, - "name": "ADD" - }, - { - "begin": 704, - "end": 723, - "name": "MLOAD" - }, - { - "begin": 704, - "end": 723, - "name": "DUP2" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH", - "value": "3" - }, - { - "begin": 704, - "end": 723, - "name": "ADD" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP1" - }, - { - "begin": 704, - "end": 723, - "name": "DUP1" - }, - { - "begin": 704, - "end": 723, - "name": "MLOAD" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP1" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH", - "value": "20" - }, - { - "begin": 704, - "end": 723, - "name": "ADD" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP1" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH [tag]", - "value": "27" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP3" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP2" - }, - { - "begin": 704, - "end": 723, - "name": "SWAP1" - }, - { - "begin": 704, - "end": 723, - "name": "PUSH [tag]", - "value": "23" - }, - { - "begin": 704, - "end": 723, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 704, - "end": 723, - "name": "tag", - "value": "27" - }, - { - "begin": 704, - "end": 723, - "name": "JUMPDEST" - }, - { - "begin": 704, - "end": 723, - "name": "POP" - }, - { - "begin": 704, - "end": 723, - "name": "POP" - }, - { - "begin": 704, - "end": 723, - "name": "POP" - }, - { - "begin": 704, - "end": 723, - "name": "POP" - }, - { - "begin": 738, - "end": 774, - "name": "PUSH", - "value": "4CBC6AABDD0942D8DF984AE683445CC9D498EFF032CED24070239D9A65603BB3" - }, - { - "begin": 748, - "end": 756, - "name": "DUP5" - }, - { - "begin": 758, - "end": 761, - "name": "DUP3" - }, - { - "begin": 763, - "end": 773, - "name": "CALLER" - }, - { - "begin": 738, - "end": 774, - "name": "PUSH", - "value": "40" - }, - { - "begin": 738, - "end": 774, - "name": "MLOAD" - }, - { - "begin": 738, - "end": 774, - "name": "PUSH [tag]", - "value": "28" - }, - { - "begin": 738, - "end": 774, - "name": "SWAP4" - }, - { - "begin": 738, - "end": 774, - "name": "SWAP3" - }, - { - "begin": 738, - "end": 774, - "name": "SWAP2" - }, - { - "begin": 738, - "end": 774, - "name": "SWAP1" - }, - { - "begin": 738, - "end": 774, - "name": "PUSH [tag]", - "value": "29" - }, - { - "begin": 738, - "end": 774, - "name": "JUMP" - }, - { - "begin": 738, - "end": 774, - "name": "tag", - "value": "28" - }, - { - "begin": 738, - "end": 774, - "name": "JUMPDEST" - }, - { - "begin": 738, - "end": 774, - "name": "PUSH", - "value": "40" - }, - { - "begin": 738, - "end": 774, - "name": "MLOAD" - }, - { - "begin": 738, - "end": 774, - "name": "DUP1" - }, - { - "begin": 738, - "end": 774, - "name": "SWAP2" - }, - { - "begin": 738, - "end": 774, - "name": "SUB" - }, - { - "begin": 738, - "end": 774, - "name": "SWAP1" - }, - { - "begin": 738, - "end": 774, - "name": "LOG1" - }, - { - "begin": 420, - "end": 781, - "name": "POP" - }, - { - "begin": 420, - "end": 781, - "name": "POP" - }, - { - "begin": 420, - "end": 781, - "name": "POP" - }, - { - "begin": 420, - "end": 781, - "name": "POP" - }, - { - "begin": 420, - "end": 781, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 787, - "end": 1541, - "name": "tag", - "value": "12" - }, - { - "begin": 787, - "end": 1541, - "name": "JUMPDEST" - }, - { - "begin": 861, - "end": 883, - "name": "PUSH", - "value": "60" - }, - { - "begin": 918, - "end": 919, - "name": "PUSH", - "value": "0" - }, - { - "begin": 899, - "end": 907, - "name": "DUP1" - }, - { - "begin": 899, - "end": 914, - "name": "DUP1" - }, - { - "begin": 899, - "end": 914, - "name": "SLOAD" - }, - { - "begin": 899, - "end": 914, - "name": "SWAP1" - }, - { - "begin": 899, - "end": 914, - "name": "POP" - }, - { - "begin": 899, - "end": 919, - "name": "EQ" - }, - { - "begin": 895, - "end": 969, - "name": "ISZERO" - }, - { - "begin": 895, - "end": 969, - "name": "PUSH [tag]", - "value": "31" - }, - { - "begin": 895, - "end": 969, - "name": "JUMPI" - }, - { - "begin": 956, - "end": 957, - "name": "PUSH", - "value": "0" - }, - { - "begin": 942, - "end": 958, - "name": "PUSH", - "value": "40" - }, - { - "begin": 942, - "end": 958, - "name": "MLOAD" - }, - { - "begin": 942, - "end": 958, - "name": "SWAP1" - }, - { - "begin": 942, - "end": 958, - "name": "DUP1" - }, - { - "begin": 942, - "end": 958, - "name": "DUP3" - }, - { - "begin": 942, - "end": 958, - "name": "MSTORE" - }, - { - "begin": 942, - "end": 958, - "name": "DUP1" - }, - { - "begin": 942, - "end": 958, - "name": "PUSH", - "value": "20" - }, - { - "begin": 942, - "end": 958, - "name": "MUL" - }, - { - "begin": 942, - "end": 958, - "name": "PUSH", - "value": "20" - }, - { - "begin": 942, - "end": 958, - "name": "ADD" - }, - { - "begin": 942, - "end": 958, - "name": "DUP3" - }, - { - "begin": 942, - "end": 958, - "name": "ADD" - }, - { - "begin": 942, - "end": 958, - "name": "PUSH", - "value": "40" - }, - { - "begin": 942, - "end": 958, - "name": "MSTORE" - }, - { - "begin": 942, - "end": 958, - "name": "DUP1" - }, - { - "begin": 942, - "end": 958, - "name": "ISZERO" - }, - { - "begin": 942, - "end": 958, - "name": "PUSH [tag]", - "value": "32" - }, - { - "begin": 942, - "end": 958, - "name": "JUMPI" - }, - { - "begin": 942, - "end": 958, - "name": "DUP2" - }, - { - "begin": 942, - "end": 958, - "name": "PUSH", - "value": "20" - }, - { - "begin": 942, - "end": 958, - "name": "ADD" - }, - { - "begin": 942, - "end": 958, - "name": "tag", - "value": "33" - }, - { - "begin": 942, - "end": 958, - "name": "JUMPDEST" - }, - { - "begin": 942, - "end": 958, - "name": "PUSH [tag]", - "value": "34" - }, - { - "begin": 942, - "end": 958, - "name": "PUSH [tag]", - "value": "35" - }, - { - "begin": 942, - "end": 958, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 942, - "end": 958, - "name": "tag", - "value": "34" - }, - { - "begin": 942, - "end": 958, - "name": "JUMPDEST" - }, - { - "begin": 942, - "end": 958, - "name": "DUP2" - }, - { - "begin": 942, - "end": 958, - "name": "MSTORE" - }, - { - "begin": 942, - "end": 958, - "name": "PUSH", - "value": "20" - }, - { - "begin": 942, - "end": 958, - "name": "ADD" - }, - { - "begin": 942, - "end": 958, - "name": "SWAP1" - }, - { - "begin": 942, - "end": 958, - "name": "PUSH", - "value": "1" - }, - { - "begin": 942, - "end": 958, - "name": "SWAP1" - }, - { - "begin": 942, - "end": 958, - "name": "SUB" - }, - { - "begin": 942, - "end": 958, - "name": "SWAP1" - }, - { - "begin": 942, - "end": 958, - "name": "DUP2" - }, - { - "begin": 942, - "end": 958, - "name": "PUSH [tag]", - "value": "33" - }, - { - "begin": 942, - "end": 958, - "name": "JUMPI" - }, - { - "begin": 942, - "end": 958, - "name": "SWAP1" - }, - { - "begin": 942, - "end": 958, - "name": "POP" - }, - { - "begin": 942, - "end": 958, - "name": "tag", - "value": "32" - }, - { - "begin": 942, - "end": 958, - "name": "JUMPDEST" - }, - { - "begin": 942, - "end": 958, - "name": "POP" - }, - { - "begin": 935, - "end": 958, - "name": "SWAP1" - }, - { - "begin": 935, - "end": 958, - "name": "POP" - }, - { - "begin": 935, - "end": 958, - "name": "PUSH [tag]", - "value": "30" - }, - { - "begin": 935, - "end": 958, - "name": "JUMP" - }, - { - "begin": 895, - "end": 969, - "name": "tag", - "value": "31" - }, - { - "begin": 895, - "end": 969, - "name": "JUMPDEST" - }, - { - "begin": 979, - "end": 994, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1013, - "end": 1014, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1005, - "end": 1010, - "name": "DUP5" - }, - { - "begin": 1005, - "end": 1014, - "name": "SUB" - }, - { - "begin": 997, - "end": 1001, - "name": "DUP4" - }, - { - "begin": 997, - "end": 1015, - "name": "MUL" - }, - { - "begin": 979, - "end": 1015, - "name": "SWAP1" - }, - { - "begin": 979, - "end": 1015, - "name": "POP" - }, - { - "begin": 1025, - "end": 1039, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1064, - "end": 1071, - "name": "DUP2" - }, - { - "begin": 1060, - "end": 1061, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1042, - "end": 1050, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1042, - "end": 1057, - "name": "DUP1" - }, - { - "begin": 1042, - "end": 1057, - "name": "SLOAD" - }, - { - "begin": 1042, - "end": 1057, - "name": "SWAP1" - }, - { - "begin": 1042, - "end": 1057, - "name": "POP" - }, - { - "begin": 1042, - "end": 1061, - "name": "SUB" - }, - { - "begin": 1042, - "end": 1071, - "name": "SUB" - }, - { - "begin": 1025, - "end": 1071, - "name": "SWAP1" - }, - { - "begin": 1025, - "end": 1071, - "name": "POP" - }, - { - "begin": 1112, - "end": 1113, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1094, - "end": 1102, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1094, - "end": 1109, - "name": "DUP1" - }, - { - "begin": 1094, - "end": 1109, - "name": "SLOAD" - }, - { - "begin": 1094, - "end": 1109, - "name": "SWAP1" - }, - { - "begin": 1094, - "end": 1109, - "name": "POP" - }, - { - "begin": 1094, - "end": 1113, - "name": "SUB" - }, - { - "begin": 1085, - "end": 1091, - "name": "DUP2" - }, - { - "begin": 1085, - "end": 1113, - "name": "GT" - }, - { - "begin": 1081, - "end": 1163, - "name": "ISZERO" - }, - { - "begin": 1081, - "end": 1163, - "name": "PUSH [tag]", - "value": "36" - }, - { - "begin": 1081, - "end": 1163, - "name": "JUMPI" - }, - { - "begin": 1150, - "end": 1151, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1136, - "end": 1152, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1136, - "end": 1152, - "name": "MLOAD" - }, - { - "begin": 1136, - "end": 1152, - "name": "SWAP1" - }, - { - "begin": 1136, - "end": 1152, - "name": "DUP1" - }, - { - "begin": 1136, - "end": 1152, - "name": "DUP3" - }, - { - "begin": 1136, - "end": 1152, - "name": "MSTORE" - }, - { - "begin": 1136, - "end": 1152, - "name": "DUP1" - }, - { - "begin": 1136, - "end": 1152, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1136, - "end": 1152, - "name": "MUL" - }, - { - "begin": 1136, - "end": 1152, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1136, - "end": 1152, - "name": "ADD" - }, - { - "begin": 1136, - "end": 1152, - "name": "DUP3" - }, - { - "begin": 1136, - "end": 1152, - "name": "ADD" - }, - { - "begin": 1136, - "end": 1152, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1136, - "end": 1152, - "name": "MSTORE" - }, - { - "begin": 1136, - "end": 1152, - "name": "DUP1" - }, - { - "begin": 1136, - "end": 1152, - "name": "ISZERO" - }, - { - "begin": 1136, - "end": 1152, - "name": "PUSH [tag]", - "value": "37" - }, - { - "begin": 1136, - "end": 1152, - "name": "JUMPI" - }, - { - "begin": 1136, - "end": 1152, - "name": "DUP2" - }, - { - "begin": 1136, - "end": 1152, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1136, - "end": 1152, - "name": "ADD" - }, - { - "begin": 1136, - "end": 1152, - "name": "tag", - "value": "38" - }, - { - "begin": 1136, - "end": 1152, - "name": "JUMPDEST" - }, - { - "begin": 1136, - "end": 1152, - "name": "PUSH [tag]", - "value": "39" - }, - { - "begin": 1136, - "end": 1152, - "name": "PUSH [tag]", - "value": "35" - }, - { - "begin": 1136, - "end": 1152, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 1136, - "end": 1152, - "name": "tag", - "value": "39" - }, - { - "begin": 1136, - "end": 1152, - "name": "JUMPDEST" - }, - { - "begin": 1136, - "end": 1152, - "name": "DUP2" - }, - { - "begin": 1136, - "end": 1152, - "name": "MSTORE" - }, - { - "begin": 1136, - "end": 1152, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1136, - "end": 1152, - "name": "ADD" - }, - { - "begin": 1136, - "end": 1152, - "name": "SWAP1" - }, - { - "begin": 1136, - "end": 1152, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1136, - "end": 1152, - "name": "SWAP1" - }, - { - "begin": 1136, - "end": 1152, - "name": "SUB" - }, - { - "begin": 1136, - "end": 1152, - "name": "SWAP1" - }, - { - "begin": 1136, - "end": 1152, - "name": "DUP2" - }, - { - "begin": 1136, - "end": 1152, - "name": "PUSH [tag]", - "value": "38" - }, - { - "begin": 1136, - "end": 1152, - "name": "JUMPI" - }, - { - "begin": 1136, - "end": 1152, - "name": "SWAP1" - }, - { - "begin": 1136, - "end": 1152, - "name": "POP" - }, - { - "begin": 1136, - "end": 1152, - "name": "tag", - "value": "37" - }, - { - "begin": 1136, - "end": 1152, - "name": "JUMPDEST" - }, - { - "begin": 1136, - "end": 1152, - "name": "POP" - }, - { - "begin": 1129, - "end": 1152, - "name": "SWAP3" - }, - { - "begin": 1129, - "end": 1152, - "name": "POP" - }, - { - "begin": 1129, - "end": 1152, - "name": "POP" - }, - { - "begin": 1129, - "end": 1152, - "name": "POP" - }, - { - "begin": 1129, - "end": 1152, - "name": "PUSH [tag]", - "value": "30" - }, - { - "begin": 1129, - "end": 1152, - "name": "JUMP" - }, - { - "begin": 1081, - "end": 1163, - "name": "tag", - "value": "36" - }, - { - "begin": 1081, - "end": 1163, - "name": "JUMPDEST" - }, - { - "begin": 1173, - "end": 1191, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1203, - "end": 1207, - "name": "DUP5" - }, - { - "begin": 1194, - "end": 1200, - "name": "DUP3" - }, - { - "begin": 1194, - "end": 1207, - "name": "SUB" - }, - { - "begin": 1173, - "end": 1207, - "name": "SWAP1" - }, - { - "begin": 1173, - "end": 1207, - "name": "POP" - }, - { - "begin": 1234, - "end": 1240, - "name": "DUP2" - }, - { - "begin": 1221, - "end": 1231, - "name": "DUP2" - }, - { - "begin": 1221, - "end": 1240, - "name": "GT" - }, - { - "begin": 1217, - "end": 1281, - "name": "ISZERO" - }, - { - "begin": 1217, - "end": 1281, - "name": "PUSH [tag]", - "value": "40" - }, - { - "begin": 1217, - "end": 1281, - "name": "JUMPI" - }, - { - "begin": 1269, - "end": 1270, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1256, - "end": 1270, - "name": "SWAP1" - }, - { - "begin": 1256, - "end": 1270, - "name": "POP" - }, - { - "begin": 1217, - "end": 1281, - "name": "tag", - "value": "40" - }, - { - "begin": 1217, - "end": 1281, - "name": "JUMPDEST" - }, - { - "begin": 1291, - "end": 1303, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1328, - "end": 1329, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1315, - "end": 1325, - "name": "DUP3" - }, - { - "begin": 1306, - "end": 1312, - "name": "DUP5" - }, - { - "begin": 1306, - "end": 1325, - "name": "SUB" - }, - { - "begin": 1306, - "end": 1329, - "name": "ADD" - }, - { - "begin": 1291, - "end": 1329, - "name": "SWAP1" - }, - { - "begin": 1291, - "end": 1329, - "name": "POP" - }, - { - "begin": 1350, - "end": 1354, - "name": "DUP6" - }, - { - "begin": 1343, - "end": 1347, - "name": "DUP2" - }, - { - "begin": 1343, - "end": 1354, - "name": "GT" - }, - { - "begin": 1339, - "end": 1392, - "name": "ISZERO" - }, - { - "begin": 1339, - "end": 1392, - "name": "PUSH [tag]", - "value": "41" - }, - { - "begin": 1339, - "end": 1392, - "name": "JUMPI" - }, - { - "begin": 1377, - "end": 1381, - "name": "DUP6" - }, - { - "begin": 1370, - "end": 1381, - "name": "SWAP1" - }, - { - "begin": 1370, - "end": 1381, - "name": "POP" - }, - { - "begin": 1339, - "end": 1392, - "name": "tag", - "value": "41" - }, - { - "begin": 1339, - "end": 1392, - "name": "JUMPDEST" - }, - { - "begin": 1424, - "end": 1428, - "name": "DUP1" - }, - { - "begin": 1410, - "end": 1429, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1410, - "end": 1429, - "name": "MLOAD" - }, - { - "begin": 1410, - "end": 1429, - "name": "SWAP1" - }, - { - "begin": 1410, - "end": 1429, - "name": "DUP1" - }, - { - "begin": 1410, - "end": 1429, - "name": "DUP3" - }, - { - "begin": 1410, - "end": 1429, - "name": "MSTORE" - }, - { - "begin": 1410, - "end": 1429, - "name": "DUP1" - }, - { - "begin": 1410, - "end": 1429, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1410, - "end": 1429, - "name": "MUL" - }, - { - "begin": 1410, - "end": 1429, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1410, - "end": 1429, - "name": "ADD" - }, - { - "begin": 1410, - "end": 1429, - "name": "DUP3" - }, - { - "begin": 1410, - "end": 1429, - "name": "ADD" - }, - { - "begin": 1410, - "end": 1429, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1410, - "end": 1429, - "name": "MSTORE" - }, - { - "begin": 1410, - "end": 1429, - "name": "DUP1" - }, - { - "begin": 1410, - "end": 1429, - "name": "ISZERO" - }, - { - "begin": 1410, - "end": 1429, - "name": "PUSH [tag]", - "value": "42" - }, - { - "begin": 1410, - "end": 1429, - "name": "JUMPI" - }, - { - "begin": 1410, - "end": 1429, - "name": "DUP2" - }, - { - "begin": 1410, - "end": 1429, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1410, - "end": 1429, - "name": "ADD" - }, - { - "begin": 1410, - "end": 1429, - "name": "tag", - "value": "43" - }, - { - "begin": 1410, - "end": 1429, - "name": "JUMPDEST" - }, - { - "begin": 1410, - "end": 1429, - "name": "PUSH [tag]", - "value": "44" - }, - { - "begin": 1410, - "end": 1429, - "name": "PUSH [tag]", - "value": "35" - }, - { - "begin": 1410, - "end": 1429, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 1410, - "end": 1429, - "name": "tag", - "value": "44" - }, - { - "begin": 1410, - "end": 1429, - "name": "JUMPDEST" - }, - { - "begin": 1410, - "end": 1429, - "name": "DUP2" - }, - { - "begin": 1410, - "end": 1429, - "name": "MSTORE" - }, - { - "begin": 1410, - "end": 1429, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1410, - "end": 1429, - "name": "ADD" - }, - { - "begin": 1410, - "end": 1429, - "name": "SWAP1" - }, - { - "begin": 1410, - "end": 1429, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1410, - "end": 1429, - "name": "SWAP1" - }, - { - "begin": 1410, - "end": 1429, - "name": "SUB" - }, - { - "begin": 1410, - "end": 1429, - "name": "SWAP1" - }, - { - "begin": 1410, - "end": 1429, - "name": "DUP2" - }, - { - "begin": 1410, - "end": 1429, - "name": "PUSH [tag]", - "value": "43" - }, - { - "begin": 1410, - "end": 1429, - "name": "JUMPI" - }, - { - "begin": 1410, - "end": 1429, - "name": "SWAP1" - }, - { - "begin": 1410, - "end": 1429, - "name": "POP" - }, - { - "begin": 1410, - "end": 1429, - "name": "tag", - "value": "42" - }, - { - "begin": 1410, - "end": 1429, - "name": "JUMPDEST" - }, - { - "begin": 1410, - "end": 1429, - "name": "POP" - }, - { - "begin": 1402, - "end": 1429, - "name": "SWAP5" - }, - { - "begin": 1402, - "end": 1429, - "name": "POP" - }, - { - "begin": 1444, - "end": 1454, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1457, - "end": 1458, - "name": "DUP1" - }, - { - "begin": 1444, - "end": 1458, - "name": "SWAP1" - }, - { - "begin": 1444, - "end": 1458, - "name": "POP" - }, - { - "begin": 1439, - "end": 1535, - "name": "tag", - "value": "45" - }, - { - "begin": 1439, - "end": 1535, - "name": "JUMPDEST" - }, - { - "begin": 1465, - "end": 1469, - "name": "DUP2" - }, - { - "begin": 1460, - "end": 1462, - "name": "DUP2" - }, - { - "begin": 1460, - "end": 1469, - "name": "LT" - }, - { - "begin": 1439, - "end": 1535, - "name": "ISZERO" - }, - { - "begin": 1439, - "end": 1535, - "name": "PUSH [tag]", - "value": "46" - }, - { - "begin": 1439, - "end": 1535, - "name": "JUMPI" - }, - { - "begin": 1503, - "end": 1511, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1521, - "end": 1523, - "name": "DUP2" - }, - { - "begin": 1512, - "end": 1518, - "name": "DUP6" - }, - { - "begin": 1512, - "end": 1523, - "name": "SUB" - }, - { - "begin": 1503, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1503, - "end": 1524, - "name": "SLOAD" - }, - { - "begin": 1503, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1503, - "end": 1524, - "name": "LT" - }, - { - "begin": 1503, - "end": 1524, - "name": "ISZERO" - }, - { - "begin": 1503, - "end": 1524, - "name": "ISZERO" - }, - { - "begin": 1503, - "end": 1524, - "name": "PUSH [tag]", - "value": "48" - }, - { - "begin": 1503, - "end": 1524, - "name": "JUMPI" - }, - { - "begin": 1503, - "end": 1524, - "name": "INVALID" - }, - { - "begin": 1503, - "end": 1524, - "name": "tag", - "value": "48" - }, - { - "begin": 1503, - "end": 1524, - "name": "JUMPDEST" - }, - { - "begin": 1503, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1503, - "end": 1524, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1503, - "end": 1524, - "name": "MSTORE" - }, - { - "begin": 1503, - "end": 1524, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1503, - "end": 1524, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1503, - "end": 1524, - "name": "KECCAK256" - }, - { - "begin": 1503, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1503, - "end": 1524, - "name": "PUSH", - "value": "4" - }, - { - "begin": 1503, - "end": 1524, - "name": "MUL" - }, - { - "begin": 1503, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "80" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1491, - "end": 1524, - "name": "MLOAD" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1491, - "end": 1524, - "name": "MSTORE" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP3" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "SLOAD" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "100" - }, - { - "begin": 1491, - "end": 1524, - "name": "EXP" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "DIV" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1491, - "end": 1524, - "name": "AND" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1491, - "end": 1524, - "name": "AND" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1491, - "end": 1524, - "name": "AND" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "MSTORE" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP3" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "SLOAD" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "MSTORE" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "2" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP3" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "SLOAD" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1491, - "end": 1524, - "name": "AND" - }, - { - "begin": 1491, - "end": 1524, - "name": "ISZERO" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "100" - }, - { - "begin": 1491, - "end": 1524, - "name": "MUL" - }, - { - "begin": 1491, - "end": 1524, - "name": "SUB" - }, - { - "begin": 1491, - "end": 1524, - "name": "AND" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "2" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "DIV" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "1F" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "DIV" - }, - { - "begin": 1491, - "end": 1524, - "name": "MUL" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1491, - "end": 1524, - "name": "MLOAD" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1491, - "end": 1524, - "name": "MSTORE" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP3" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "MSTORE" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP3" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "SLOAD" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1491, - "end": 1524, - "name": "AND" - }, - { - "begin": 1491, - "end": 1524, - "name": "ISZERO" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "100" - }, - { - "begin": 1491, - "end": 1524, - "name": "MUL" - }, - { - "begin": 1491, - "end": 1524, - "name": "SUB" - }, - { - "begin": 1491, - "end": 1524, - "name": "AND" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "2" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "DIV" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "ISZERO" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH [tag]", - "value": "50" - }, - { - "begin": 1491, - "end": 1524, - "name": "JUMPI" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "1F" - }, - { - "begin": 1491, - "end": 1524, - "name": "LT" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH [tag]", - "value": "51" - }, - { - "begin": 1491, - "end": 1524, - "name": "JUMPI" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "100" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP4" - }, - { - "begin": 1491, - "end": 1524, - "name": "SLOAD" - }, - { - "begin": 1491, - "end": 1524, - "name": "DIV" - }, - { - "begin": 1491, - "end": 1524, - "name": "MUL" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP4" - }, - { - "begin": 1491, - "end": 1524, - "name": "MSTORE" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH [tag]", - "value": "50" - }, - { - "begin": 1491, - "end": 1524, - "name": "JUMP" - }, - { - "begin": 1491, - "end": 1524, - "name": "tag", - "value": "51" - }, - { - "begin": 1491, - "end": 1524, - "name": "JUMPDEST" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP3" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1491, - "end": 1524, - "name": "MSTORE" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1491, - "end": 1524, - "name": "KECCAK256" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "tag", - "value": "52" - }, - { - "begin": 1491, - "end": 1524, - "name": "JUMPDEST" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "SLOAD" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "MSTORE" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP4" - }, - { - "begin": 1491, - "end": 1524, - "name": "GT" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH [tag]", - "value": "52" - }, - { - "begin": 1491, - "end": 1524, - "name": "JUMPI" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP3" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "SUB" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "1F" - }, - { - "begin": 1491, - "end": 1524, - "name": "AND" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP3" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "tag", - "value": "50" - }, - { - "begin": 1491, - "end": 1524, - "name": "JUMPDEST" - }, - { - "begin": 1491, - "end": 1524, - "name": "POP" - }, - { - "begin": 1491, - "end": 1524, - "name": "POP" - }, - { - "begin": 1491, - "end": 1524, - "name": "POP" - }, - { - "begin": 1491, - "end": 1524, - "name": "POP" - }, - { - "begin": 1491, - "end": 1524, - "name": "POP" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "MSTORE" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "3" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP3" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "SLOAD" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1491, - "end": 1524, - "name": "AND" - }, - { - "begin": 1491, - "end": 1524, - "name": "ISZERO" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "100" - }, - { - "begin": 1491, - "end": 1524, - "name": "MUL" - }, - { - "begin": 1491, - "end": 1524, - "name": "SUB" - }, - { - "begin": 1491, - "end": 1524, - "name": "AND" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "2" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "DIV" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "1F" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "DIV" - }, - { - "begin": 1491, - "end": 1524, - "name": "MUL" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1491, - "end": 1524, - "name": "MLOAD" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1491, - "end": 1524, - "name": "MSTORE" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP3" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "MSTORE" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP3" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "SLOAD" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1491, - "end": 1524, - "name": "AND" - }, - { - "begin": 1491, - "end": 1524, - "name": "ISZERO" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "100" - }, - { - "begin": 1491, - "end": 1524, - "name": "MUL" - }, - { - "begin": 1491, - "end": 1524, - "name": "SUB" - }, - { - "begin": 1491, - "end": 1524, - "name": "AND" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "2" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "DIV" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "ISZERO" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH [tag]", - "value": "53" - }, - { - "begin": 1491, - "end": 1524, - "name": "JUMPI" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "1F" - }, - { - "begin": 1491, - "end": 1524, - "name": "LT" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH [tag]", - "value": "54" - }, - { - "begin": 1491, - "end": 1524, - "name": "JUMPI" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "100" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP4" - }, - { - "begin": 1491, - "end": 1524, - "name": "SLOAD" - }, - { - "begin": 1491, - "end": 1524, - "name": "DIV" - }, - { - "begin": 1491, - "end": 1524, - "name": "MUL" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP4" - }, - { - "begin": 1491, - "end": 1524, - "name": "MSTORE" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH [tag]", - "value": "53" - }, - { - "begin": 1491, - "end": 1524, - "name": "JUMP" - }, - { - "begin": 1491, - "end": 1524, - "name": "tag", - "value": "54" - }, - { - "begin": 1491, - "end": 1524, - "name": "JUMPDEST" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP3" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1491, - "end": 1524, - "name": "MSTORE" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1491, - "end": 1524, - "name": "KECCAK256" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "tag", - "value": "55" - }, - { - "begin": 1491, - "end": 1524, - "name": "JUMPDEST" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "SLOAD" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "MSTORE" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP4" - }, - { - "begin": 1491, - "end": 1524, - "name": "GT" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH [tag]", - "value": "55" - }, - { - "begin": 1491, - "end": 1524, - "name": "JUMPI" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP3" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "SUB" - }, - { - "begin": 1491, - "end": 1524, - "name": "PUSH", - "value": "1F" - }, - { - "begin": 1491, - "end": 1524, - "name": "AND" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP3" - }, - { - "begin": 1491, - "end": 1524, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "tag", - "value": "53" - }, - { - "begin": 1491, - "end": 1524, - "name": "JUMPDEST" - }, - { - "begin": 1491, - "end": 1524, - "name": "POP" - }, - { - "begin": 1491, - "end": 1524, - "name": "POP" - }, - { - "begin": 1491, - "end": 1524, - "name": "POP" - }, - { - "begin": 1491, - "end": 1524, - "name": "POP" - }, - { - "begin": 1491, - "end": 1524, - "name": "POP" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "MSTORE" - }, - { - "begin": 1491, - "end": 1524, - "name": "POP" - }, - { - "begin": 1491, - "end": 1524, - "name": "POP" - }, - { - "begin": 1491, - "end": 1496, - "name": "DUP7" - }, - { - "begin": 1497, - "end": 1499, - "name": "DUP3" - }, - { - "begin": 1491, - "end": 1500, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1500, - "name": "MLOAD" - }, - { - "begin": 1491, - "end": 1500, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1500, - "name": "LT" - }, - { - "begin": 1491, - "end": 1500, - "name": "ISZERO" - }, - { - "begin": 1491, - "end": 1500, - "name": "ISZERO" - }, - { - "begin": 1491, - "end": 1500, - "name": "PUSH [tag]", - "value": "56" - }, - { - "begin": 1491, - "end": 1500, - "name": "JUMPI" - }, - { - "begin": 1491, - "end": 1500, - "name": "INVALID" - }, - { - "begin": 1491, - "end": 1500, - "name": "tag", - "value": "56" - }, - { - "begin": 1491, - "end": 1500, - "name": "JUMPDEST" - }, - { - "begin": 1491, - "end": 1500, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1500, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1491, - "end": 1500, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1500, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1500, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1491, - "end": 1500, - "name": "MUL" - }, - { - "begin": 1491, - "end": 1500, - "name": "ADD" - }, - { - "begin": 1491, - "end": 1524, - "name": "DUP2" - }, - { - "begin": 1491, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1491, - "end": 1524, - "name": "MSTORE" - }, - { - "begin": 1491, - "end": 1524, - "name": "POP" - }, - { - "begin": 1471, - "end": 1475, - "name": "DUP1" - }, - { - "begin": 1471, - "end": 1475, - "name": "DUP1" - }, - { - "begin": 1471, - "end": 1475, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1471, - "end": 1475, - "name": "ADD" - }, - { - "begin": 1471, - "end": 1475, - "name": "SWAP2" - }, - { - "begin": 1471, - "end": 1475, - "name": "POP" - }, - { - "begin": 1471, - "end": 1475, - "name": "POP" - }, - { - "begin": 1439, - "end": 1535, - "name": "PUSH [tag]", - "value": "45" - }, - { - "begin": 1439, - "end": 1535, - "name": "JUMP" - }, - { - "begin": 1439, - "end": 1535, - "name": "tag", - "value": "46" - }, - { - "begin": 1439, - "end": 1535, - "name": "JUMPDEST" - }, - { - "begin": 1439, - "end": 1535, - "name": "POP" - }, - { - "begin": 787, - "end": 1541, - "name": "POP" - }, - { - "begin": 787, - "end": 1541, - "name": "POP" - }, - { - "begin": 787, - "end": 1541, - "name": "POP" - }, - { - "begin": 787, - "end": 1541, - "name": "POP" - }, - { - "begin": 787, - "end": 1541, - "name": "tag", - "value": "30" - }, - { - "begin": 787, - "end": 1541, - "name": "JUMPDEST" - }, - { - "begin": 787, - "end": 1541, - "name": "SWAP3" - }, - { - "begin": 787, - "end": 1541, - "name": "SWAP2" - }, - { - "begin": 787, - "end": 1541, - "name": "POP" - }, - { - "begin": 787, - "end": 1541, - "name": "POP" - }, - { - "begin": 787, - "end": 1541, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 58, - "end": 1543, - "name": "tag", - "value": "17" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPDEST" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "80" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "40" - }, - { - "begin": 58, - "end": 1543, - "name": "MLOAD" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP2" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "40" - }, - { - "begin": 58, - "end": 1543, - "name": "MSTORE" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP1" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "0" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 58, - "end": 1543, - "name": "AND" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP2" - }, - { - "begin": 58, - "end": 1543, - "name": "MSTORE" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "20" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "0" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP2" - }, - { - "begin": 58, - "end": 1543, - "name": "MSTORE" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "20" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "60" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP2" - }, - { - "begin": 58, - "end": 1543, - "name": "MSTORE" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "20" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "60" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP2" - }, - { - "begin": 58, - "end": 1543, - "name": "MSTORE" - }, - { - "begin": 58, - "end": 1543, - "name": "POP" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 58, - "end": 1543, - "name": "tag", - "value": "21" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPDEST" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP3" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP1" - }, - { - "begin": 58, - "end": 1543, - "name": "SLOAD" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "1" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP2" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "1" - }, - { - "begin": 58, - "end": 1543, - "name": "AND" - }, - { - "begin": 58, - "end": 1543, - "name": "ISZERO" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "100" - }, - { - "begin": 58, - "end": 1543, - "name": "MUL" - }, - { - "begin": 58, - "end": 1543, - "name": "SUB" - }, - { - "begin": 58, - "end": 1543, - "name": "AND" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "2" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "DIV" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "0" - }, - { - "begin": 58, - "end": 1543, - "name": "MSTORE" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "20" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "0" - }, - { - "begin": 58, - "end": 1543, - "name": "KECCAK256" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "1F" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "20" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "DIV" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP2" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP3" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP3" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "1F" - }, - { - "begin": 58, - "end": 1543, - "name": "LT" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH [tag]", - "value": "58" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPI" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP1" - }, - { - "begin": 58, - "end": 1543, - "name": "MLOAD" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "FF" - }, - { - "begin": 58, - "end": 1543, - "name": "NOT" - }, - { - "begin": 58, - "end": 1543, - "name": "AND" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP4" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP1" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "OR" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP6" - }, - { - "begin": 58, - "end": 1543, - "name": "SSTORE" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH [tag]", - "value": "57" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMP" - }, - { - "begin": 58, - "end": 1543, - "name": "tag", - "value": "58" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPDEST" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP3" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP1" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "1" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP6" - }, - { - "begin": 58, - "end": 1543, - "name": "SSTORE" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP3" - }, - { - "begin": 58, - "end": 1543, - "name": "ISZERO" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH [tag]", - "value": "57" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPI" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP2" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP3" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "tag", - "value": "59" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPDEST" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP3" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP2" - }, - { - "begin": 58, - "end": 1543, - "name": "GT" - }, - { - "begin": 58, - "end": 1543, - "name": "ISZERO" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH [tag]", - "value": "60" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPI" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP3" - }, - { - "begin": 58, - "end": 1543, - "name": "MLOAD" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP3" - }, - { - "begin": 58, - "end": 1543, - "name": "SSTORE" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP2" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "20" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP2" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "1" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH [tag]", - "value": "59" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMP" - }, - { - "begin": 58, - "end": 1543, - "name": "tag", - "value": "60" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPDEST" - }, - { - "begin": 58, - "end": 1543, - "name": "tag", - "value": "57" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPDEST" - }, - { - "begin": 58, - "end": 1543, - "name": "POP" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "POP" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH [tag]", - "value": "61" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP2" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH [tag]", - "value": "62" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 58, - "end": 1543, - "name": "tag", - "value": "61" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPDEST" - }, - { - "begin": 58, - "end": 1543, - "name": "POP" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 58, - "end": 1543, - "name": "tag", - "value": "23" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPDEST" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP3" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP1" - }, - { - "begin": 58, - "end": 1543, - "name": "SLOAD" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "1" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP2" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "1" - }, - { - "begin": 58, - "end": 1543, - "name": "AND" - }, - { - "begin": 58, - "end": 1543, - "name": "ISZERO" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "100" - }, - { - "begin": 58, - "end": 1543, - "name": "MUL" - }, - { - "begin": 58, - "end": 1543, - "name": "SUB" - }, - { - "begin": 58, - "end": 1543, - "name": "AND" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "2" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "DIV" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "0" - }, - { - "begin": 58, - "end": 1543, - "name": "MSTORE" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "20" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "0" - }, - { - "begin": 58, - "end": 1543, - "name": "KECCAK256" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "1F" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "20" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "DIV" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP2" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP3" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP3" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "1F" - }, - { - "begin": 58, - "end": 1543, - "name": "LT" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH [tag]", - "value": "64" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPI" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP1" - }, - { - "begin": 58, - "end": 1543, - "name": "MLOAD" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "FF" - }, - { - "begin": 58, - "end": 1543, - "name": "NOT" - }, - { - "begin": 58, - "end": 1543, - "name": "AND" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP4" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP1" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "OR" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP6" - }, - { - "begin": 58, - "end": 1543, - "name": "SSTORE" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH [tag]", - "value": "63" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMP" - }, - { - "begin": 58, - "end": 1543, - "name": "tag", - "value": "64" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPDEST" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP3" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP1" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "1" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP6" - }, - { - "begin": 58, - "end": 1543, - "name": "SSTORE" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP3" - }, - { - "begin": 58, - "end": 1543, - "name": "ISZERO" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH [tag]", - "value": "63" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPI" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP2" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP3" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "tag", - "value": "65" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPDEST" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP3" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP2" - }, - { - "begin": 58, - "end": 1543, - "name": "GT" - }, - { - "begin": 58, - "end": 1543, - "name": "ISZERO" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH [tag]", - "value": "66" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPI" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP3" - }, - { - "begin": 58, - "end": 1543, - "name": "MLOAD" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP3" - }, - { - "begin": 58, - "end": 1543, - "name": "SSTORE" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP2" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "20" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP2" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "1" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH [tag]", - "value": "65" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMP" - }, - { - "begin": 58, - "end": 1543, - "name": "tag", - "value": "66" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPDEST" - }, - { - "begin": 58, - "end": 1543, - "name": "tag", - "value": "63" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPDEST" - }, - { - "begin": 58, - "end": 1543, - "name": "POP" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "POP" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH [tag]", - "value": "67" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP2" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH [tag]", - "value": "62" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 58, - "end": 1543, - "name": "tag", - "value": "67" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPDEST" - }, - { - "begin": 58, - "end": 1543, - "name": "POP" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 58, - "end": 1543, - "name": "tag", - "value": "35" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPDEST" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "80" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "40" - }, - { - "begin": 58, - "end": 1543, - "name": "MLOAD" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP2" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "40" - }, - { - "begin": 58, - "end": 1543, - "name": "MSTORE" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP1" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "0" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 58, - "end": 1543, - "name": "AND" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP2" - }, - { - "begin": 58, - "end": 1543, - "name": "MSTORE" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "20" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "0" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP2" - }, - { - "begin": 58, - "end": 1543, - "name": "MSTORE" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "20" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "60" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP2" - }, - { - "begin": 58, - "end": 1543, - "name": "MSTORE" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "20" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "60" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP2" - }, - { - "begin": 58, - "end": 1543, - "name": "MSTORE" - }, - { - "begin": 58, - "end": 1543, - "name": "POP" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 58, - "end": 1543, - "name": "tag", - "value": "62" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPDEST" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH [tag]", - "value": "68" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP2" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "tag", - "value": "69" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPDEST" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP1" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP3" - }, - { - "begin": 58, - "end": 1543, - "name": "GT" - }, - { - "begin": 58, - "end": 1543, - "name": "ISZERO" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH [tag]", - "value": "70" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPI" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "0" - }, - { - "begin": 58, - "end": 1543, - "name": "DUP2" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "0" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "SSTORE" - }, - { - "begin": 58, - "end": 1543, - "name": "POP" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH", - "value": "1" - }, - { - "begin": 58, - "end": 1543, - "name": "ADD" - }, - { - "begin": 58, - "end": 1543, - "name": "PUSH [tag]", - "value": "69" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMP" - }, - { - "begin": 58, - "end": 1543, - "name": "tag", - "value": "70" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPDEST" - }, - { - "begin": 58, - "end": 1543, - "name": "POP" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMP" - }, - { - "begin": 58, - "end": 1543, - "name": "tag", - "value": "68" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMPDEST" - }, - { - "begin": 58, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 58, - "end": 1543, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 6, - "end": 446, - "name": "tag", - "value": "72" - }, - { - "begin": 6, - "end": 446, - "name": "JUMPDEST" - }, - { - "begin": 6, - "end": 446, - "name": "PUSH", - "value": "0" - }, - { - "begin": 107, - "end": 110, - "name": "DUP3" - }, - { - "begin": 100, - "end": 104, - "name": "PUSH", - "value": "1F" - }, - { - "begin": 92, - "end": 98, - "name": "DUP4" - }, - { - "begin": 88, - "end": 105, - "name": "ADD" - }, - { - "begin": 84, - "end": 111, - "name": "SLT" - }, - { - "begin": 77, - "end": 112, - "name": "ISZERO" - }, - { - "begin": 74, - "end": 76, - "name": "ISZERO" - }, - { - "begin": 74, - "end": 76, - "name": "PUSH [tag]", - "value": "73" - }, - { - "begin": 74, - "end": 76, - "name": "JUMPI" - }, - { - "begin": 125, - "end": 126, - "name": "PUSH", - "value": "0" - }, - { - "begin": 122, - "end": 123, - "name": "DUP1" - }, - { - "begin": 115, - "end": 127, - "name": "REVERT" - }, - { - "begin": 74, - "end": 76, - "name": "tag", - "value": "73" - }, - { - "begin": 74, - "end": 76, - "name": "JUMPDEST" - }, - { - "begin": 162, - "end": 168, - "name": "DUP2" - }, - { - "begin": 149, - "end": 169, - "name": "CALLDATALOAD" - }, - { - "begin": 184, - "end": 248, - "name": "PUSH [tag]", - "value": "74" - }, - { - "begin": 199, - "end": 247, - "name": "PUSH [tag]", - "value": "75" - }, - { - "begin": 240, - "end": 246, - "name": "DUP3" - }, - { - "begin": 199, - "end": 247, - "name": "PUSH [tag]", - "value": "76" - }, - { - "begin": 199, - "end": 247, - "name": "JUMP" - }, - { - "begin": 199, - "end": 247, - "name": "tag", - "value": "75" - }, - { - "begin": 199, - "end": 247, - "name": "JUMPDEST" - }, - { - "begin": 184, - "end": 248, - "name": "PUSH [tag]", - "value": "77" - }, - { - "begin": 184, - "end": 248, - "name": "JUMP" - }, - { - "begin": 184, - "end": 248, - "name": "tag", - "value": "74" - }, - { - "begin": 184, - "end": 248, - "name": "JUMPDEST" - }, - { - "begin": 175, - "end": 248, - "name": "SWAP2" - }, - { - "begin": 175, - "end": 248, - "name": "POP" - }, - { - "begin": 268, - "end": 274, - "name": "DUP1" - }, - { - "begin": 261, - "end": 266, - "name": "DUP3" - }, - { - "begin": 254, - "end": 275, - "name": "MSTORE" - }, - { - "begin": 304, - "end": 308, - "name": "PUSH", - "value": "20" - }, - { - "begin": 296, - "end": 302, - "name": "DUP4" - }, - { - "begin": 292, - "end": 309, - "name": "ADD" - }, - { - "begin": 337, - "end": 341, - "name": "PUSH", - "value": "20" - }, - { - "begin": 330, - "end": 335, - "name": "DUP4" - }, - { - "begin": 326, - "end": 342, - "name": "ADD" - }, - { - "begin": 372, - "end": 375, - "name": "DUP6" - }, - { - "begin": 363, - "end": 369, - "name": "DUP4" - }, - { - "begin": 358, - "end": 361, - "name": "DUP4" - }, - { - "begin": 354, - "end": 370, - "name": "ADD" - }, - { - "begin": 351, - "end": 376, - "name": "GT" - }, - { - "begin": 348, - "end": 350, - "name": "ISZERO" - }, - { - "begin": 348, - "end": 350, - "name": "PUSH [tag]", - "value": "78" - }, - { - "begin": 348, - "end": 350, - "name": "JUMPI" - }, - { - "begin": 389, - "end": 390, - "name": "PUSH", - "value": "0" - }, - { - "begin": 386, - "end": 387, - "name": "DUP1" - }, - { - "begin": 379, - "end": 391, - "name": "REVERT" - }, - { - "begin": 348, - "end": 350, - "name": "tag", - "value": "78" - }, - { - "begin": 348, - "end": 350, - "name": "JUMPDEST" - }, - { - "begin": 399, - "end": 440, - "name": "PUSH [tag]", - "value": "79" - }, - { - "begin": 433, - "end": 439, - "name": "DUP4" - }, - { - "begin": 428, - "end": 431, - "name": "DUP3" - }, - { - "begin": 423, - "end": 426, - "name": "DUP5" - }, - { - "begin": 399, - "end": 440, - "name": "PUSH [tag]", - "value": "80" - }, - { - "begin": 399, - "end": 440, - "name": "JUMP" - }, - { - "begin": 399, - "end": 440, - "name": "tag", - "value": "79" - }, - { - "begin": 399, - "end": 440, - "name": "JUMPDEST" - }, - { - "begin": 67, - "end": 446, - "name": "POP" - }, - { - "begin": 67, - "end": 446, - "name": "POP" - }, - { - "begin": 67, - "end": 446, - "name": "POP" - }, - { - "begin": 67, - "end": 446, - "name": "SWAP3" - }, - { - "begin": 67, - "end": 446, - "name": "SWAP2" - }, - { - "begin": 67, - "end": 446, - "name": "POP" - }, - { - "begin": 67, - "end": 446, - "name": "POP" - }, - { - "begin": 67, - "end": 446, - "name": "JUMP" - }, - { - "begin": 455, - "end": 897, - "name": "tag", - "value": "82" - }, - { - "begin": 455, - "end": 897, - "name": "JUMPDEST" - }, - { - "begin": 455, - "end": 897, - "name": "PUSH", - "value": "0" - }, - { - "begin": 557, - "end": 560, - "name": "DUP3" - }, - { - "begin": 550, - "end": 554, - "name": "PUSH", - "value": "1F" - }, - { - "begin": 542, - "end": 548, - "name": "DUP4" - }, - { - "begin": 538, - "end": 555, - "name": "ADD" - }, - { - "begin": 534, - "end": 561, - "name": "SLT" - }, - { - "begin": 527, - "end": 562, - "name": "ISZERO" - }, - { - "begin": 524, - "end": 526, - "name": "ISZERO" - }, - { - "begin": 524, - "end": 526, - "name": "PUSH [tag]", - "value": "83" - }, - { - "begin": 524, - "end": 526, - "name": "JUMPI" - }, - { - "begin": 575, - "end": 576, - "name": "PUSH", - "value": "0" - }, - { - "begin": 572, - "end": 573, - "name": "DUP1" - }, - { - "begin": 565, - "end": 577, - "name": "REVERT" - }, - { - "begin": 524, - "end": 526, - "name": "tag", - "value": "83" - }, - { - "begin": 524, - "end": 526, - "name": "JUMPDEST" - }, - { - "begin": 612, - "end": 618, - "name": "DUP2" - }, - { - "begin": 599, - "end": 619, - "name": "CALLDATALOAD" - }, - { - "begin": 634, - "end": 699, - "name": "PUSH [tag]", - "value": "84" - }, - { - "begin": 649, - "end": 698, - "name": "PUSH [tag]", - "value": "85" - }, - { - "begin": 691, - "end": 697, - "name": "DUP3" - }, - { - "begin": 649, - "end": 698, - "name": "PUSH [tag]", - "value": "86" - }, - { - "begin": 649, - "end": 698, - "name": "JUMP" - }, - { - "begin": 649, - "end": 698, - "name": "tag", - "value": "85" - }, - { - "begin": 649, - "end": 698, - "name": "JUMPDEST" - }, - { - "begin": 634, - "end": 699, - "name": "PUSH [tag]", - "value": "77" - }, - { - "begin": 634, - "end": 699, - "name": "JUMP" - }, - { - "begin": 634, - "end": 699, - "name": "tag", - "value": "84" - }, - { - "begin": 634, - "end": 699, - "name": "JUMPDEST" - }, - { - "begin": 625, - "end": 699, - "name": "SWAP2" - }, - { - "begin": 625, - "end": 699, - "name": "POP" - }, - { - "begin": 719, - "end": 725, - "name": "DUP1" - }, - { - "begin": 712, - "end": 717, - "name": "DUP3" - }, - { - "begin": 705, - "end": 726, - "name": "MSTORE" - }, - { - "begin": 755, - "end": 759, - "name": "PUSH", - "value": "20" - }, - { - "begin": 747, - "end": 753, - "name": "DUP4" - }, - { - "begin": 743, - "end": 760, - "name": "ADD" - }, - { - "begin": 788, - "end": 792, - "name": "PUSH", - "value": "20" - }, - { - "begin": 781, - "end": 786, - "name": "DUP4" - }, - { - "begin": 777, - "end": 793, - "name": "ADD" - }, - { - "begin": 823, - "end": 826, - "name": "DUP6" - }, - { - "begin": 814, - "end": 820, - "name": "DUP4" - }, - { - "begin": 809, - "end": 812, - "name": "DUP4" - }, - { - "begin": 805, - "end": 821, - "name": "ADD" - }, - { - "begin": 802, - "end": 827, - "name": "GT" - }, - { - "begin": 799, - "end": 801, - "name": "ISZERO" - }, - { - "begin": 799, - "end": 801, - "name": "PUSH [tag]", - "value": "87" - }, - { - "begin": 799, - "end": 801, - "name": "JUMPI" - }, - { - "begin": 840, - "end": 841, - "name": "PUSH", - "value": "0" - }, - { - "begin": 837, - "end": 838, - "name": "DUP1" - }, - { - "begin": 830, - "end": 842, - "name": "REVERT" - }, - { - "begin": 799, - "end": 801, - "name": "tag", - "value": "87" - }, - { - "begin": 799, - "end": 801, - "name": "JUMPDEST" - }, - { - "begin": 850, - "end": 891, - "name": "PUSH [tag]", - "value": "88" - }, - { - "begin": 884, - "end": 890, - "name": "DUP4" - }, - { - "begin": 879, - "end": 882, - "name": "DUP3" - }, - { - "begin": 874, - "end": 877, - "name": "DUP5" - }, - { - "begin": 850, - "end": 891, - "name": "PUSH [tag]", - "value": "80" - }, - { - "begin": 850, - "end": 891, - "name": "JUMP" - }, - { - "begin": 850, - "end": 891, - "name": "tag", - "value": "88" - }, - { - "begin": 850, - "end": 891, - "name": "JUMPDEST" - }, - { - "begin": 517, - "end": 897, - "name": "POP" - }, - { - "begin": 517, - "end": 897, - "name": "POP" - }, - { - "begin": 517, - "end": 897, - "name": "POP" - }, - { - "begin": 517, - "end": 897, - "name": "SWAP3" - }, - { - "begin": 517, - "end": 897, - "name": "SWAP2" - }, - { - "begin": 517, - "end": 897, - "name": "POP" - }, - { - "begin": 517, - "end": 897, - "name": "POP" - }, - { - "begin": 517, - "end": 897, - "name": "JUMP" - }, - { - "begin": 905, - "end": 1023, - "name": "tag", - "value": "90" - }, - { - "begin": 905, - "end": 1023, - "name": "JUMPDEST" - }, - { - "begin": 905, - "end": 1023, - "name": "PUSH", - "value": "0" - }, - { - "begin": 972, - "end": 1018, - "name": "PUSH [tag]", - "value": "91" - }, - { - "begin": 1010, - "end": 1016, - "name": "DUP3" - }, - { - "begin": 997, - "end": 1017, - "name": "CALLDATALOAD" - }, - { - "begin": 972, - "end": 1018, - "name": "PUSH [tag]", - "value": "92" - }, - { - "begin": 972, - "end": 1018, - "name": "JUMP" - }, - { - "begin": 972, - "end": 1018, - "name": "tag", - "value": "91" - }, - { - "begin": 972, - "end": 1018, - "name": "JUMPDEST" - }, - { - "begin": 963, - "end": 1018, - "name": "SWAP1" - }, - { - "begin": 963, - "end": 1018, - "name": "POP" - }, - { - "begin": 957, - "end": 1023, - "name": "SWAP3" - }, - { - "begin": 957, - "end": 1023, - "name": "SWAP2" - }, - { - "begin": 957, - "end": 1023, - "name": "POP" - }, - { - "begin": 957, - "end": 1023, - "name": "POP" - }, - { - "begin": 957, - "end": 1023, - "name": "JUMP" - }, - { - "begin": 1030, - "end": 1606, - "name": "tag", - "value": "7" - }, - { - "begin": 1030, - "end": 1606, - "name": "JUMPDEST" - }, - { - "begin": 1030, - "end": 1606, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1030, - "end": 1606, - "name": "DUP1" - }, - { - "begin": 1170, - "end": 1172, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1158, - "end": 1167, - "name": "DUP4" - }, - { - "begin": 1149, - "end": 1156, - "name": "DUP6" - }, - { - "begin": 1145, - "end": 1168, - "name": "SUB" - }, - { - "begin": 1141, - "end": 1173, - "name": "SLT" - }, - { - "begin": 1138, - "end": 1140, - "name": "ISZERO" - }, - { - "begin": 1138, - "end": 1140, - "name": "PUSH [tag]", - "value": "94" - }, - { - "begin": 1138, - "end": 1140, - "name": "JUMPI" - }, - { - "begin": 1186, - "end": 1187, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1183, - "end": 1184, - "name": "DUP1" - }, - { - "begin": 1176, - "end": 1188, - "name": "REVERT" - }, - { - "begin": 1138, - "end": 1140, - "name": "tag", - "value": "94" - }, - { - "begin": 1138, - "end": 1140, - "name": "JUMPDEST" - }, - { - "begin": 1249, - "end": 1250, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1238, - "end": 1247, - "name": "DUP4" - }, - { - "begin": 1234, - "end": 1251, - "name": "ADD" - }, - { - "begin": 1221, - "end": 1252, - "name": "CALLDATALOAD" - }, - { - "begin": 1272, - "end": 1290, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFF" - }, - { - "begin": 1264, - "end": 1270, - "name": "DUP2" - }, - { - "begin": 1261, - "end": 1291, - "name": "GT" - }, - { - "begin": 1258, - "end": 1260, - "name": "ISZERO" - }, - { - "begin": 1258, - "end": 1260, - "name": "PUSH [tag]", - "value": "95" - }, - { - "begin": 1258, - "end": 1260, - "name": "JUMPI" - }, - { - "begin": 1304, - "end": 1305, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1301, - "end": 1302, - "name": "DUP1" - }, - { - "begin": 1294, - "end": 1306, - "name": "REVERT" - }, - { - "begin": 1258, - "end": 1260, - "name": "tag", - "value": "95" - }, - { - "begin": 1258, - "end": 1260, - "name": "JUMPDEST" - }, - { - "begin": 1324, - "end": 1387, - "name": "PUSH [tag]", - "value": "96" - }, - { - "begin": 1379, - "end": 1386, - "name": "DUP6" - }, - { - "begin": 1370, - "end": 1376, - "name": "DUP3" - }, - { - "begin": 1359, - "end": 1368, - "name": "DUP7" - }, - { - "begin": 1355, - "end": 1377, - "name": "ADD" - }, - { - "begin": 1324, - "end": 1387, - "name": "PUSH [tag]", - "value": "82" - }, - { - "begin": 1324, - "end": 1387, - "name": "JUMP" - }, - { - "begin": 1324, - "end": 1387, - "name": "tag", - "value": "96" - }, - { - "begin": 1324, - "end": 1387, - "name": "JUMPDEST" - }, - { - "begin": 1314, - "end": 1387, - "name": "SWAP3" - }, - { - "begin": 1314, - "end": 1387, - "name": "POP" - }, - { - "begin": 1200, - "end": 1393, - "name": "POP" - }, - { - "begin": 1452, - "end": 1454, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1441, - "end": 1450, - "name": "DUP4" - }, - { - "begin": 1437, - "end": 1455, - "name": "ADD" - }, - { - "begin": 1424, - "end": 1456, - "name": "CALLDATALOAD" - }, - { - "begin": 1476, - "end": 1494, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFF" - }, - { - "begin": 1468, - "end": 1474, - "name": "DUP2" - }, - { - "begin": 1465, - "end": 1495, - "name": "GT" - }, - { - "begin": 1462, - "end": 1464, - "name": "ISZERO" - }, - { - "begin": 1462, - "end": 1464, - "name": "PUSH [tag]", - "value": "97" - }, - { - "begin": 1462, - "end": 1464, - "name": "JUMPI" - }, - { - "begin": 1508, - "end": 1509, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1505, - "end": 1506, - "name": "DUP1" - }, - { - "begin": 1498, - "end": 1510, - "name": "REVERT" - }, - { - "begin": 1462, - "end": 1464, - "name": "tag", - "value": "97" - }, - { - "begin": 1462, - "end": 1464, - "name": "JUMPDEST" - }, - { - "begin": 1528, - "end": 1590, - "name": "PUSH [tag]", - "value": "98" - }, - { - "begin": 1582, - "end": 1589, - "name": "DUP6" - }, - { - "begin": 1573, - "end": 1579, - "name": "DUP3" - }, - { - "begin": 1562, - "end": 1571, - "name": "DUP7" - }, - { - "begin": 1558, - "end": 1580, - "name": "ADD" - }, - { - "begin": 1528, - "end": 1590, - "name": "PUSH [tag]", - "value": "72" - }, - { - "begin": 1528, - "end": 1590, - "name": "JUMP" - }, - { - "begin": 1528, - "end": 1590, - "name": "tag", - "value": "98" - }, - { - "begin": 1528, - "end": 1590, - "name": "JUMPDEST" - }, - { - "begin": 1518, - "end": 1590, - "name": "SWAP2" - }, - { - "begin": 1518, - "end": 1590, - "name": "POP" - }, - { - "begin": 1403, - "end": 1596, - "name": "POP" - }, - { - "begin": 1132, - "end": 1606, - "name": "SWAP3" - }, - { - "begin": 1132, - "end": 1606, - "name": "POP" - }, - { - "begin": 1132, - "end": 1606, - "name": "SWAP3" - }, - { - "begin": 1132, - "end": 1606, - "name": "SWAP1" - }, - { - "begin": 1132, - "end": 1606, - "name": "POP" - }, - { - "begin": 1132, - "end": 1606, - "name": "JUMP" - }, - { - "begin": 1613, - "end": 1979, - "name": "tag", - "value": "11" - }, - { - "begin": 1613, - "end": 1979, - "name": "JUMPDEST" - }, - { - "begin": 1613, - "end": 1979, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1613, - "end": 1979, - "name": "DUP1" - }, - { - "begin": 1734, - "end": 1736, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1722, - "end": 1731, - "name": "DUP4" - }, - { - "begin": 1713, - "end": 1720, - "name": "DUP6" - }, - { - "begin": 1709, - "end": 1732, - "name": "SUB" - }, - { - "begin": 1705, - "end": 1737, - "name": "SLT" - }, - { - "begin": 1702, - "end": 1704, - "name": "ISZERO" - }, - { - "begin": 1702, - "end": 1704, - "name": "PUSH [tag]", - "value": "100" - }, - { - "begin": 1702, - "end": 1704, - "name": "JUMPI" - }, - { - "begin": 1750, - "end": 1751, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1747, - "end": 1748, - "name": "DUP1" - }, - { - "begin": 1740, - "end": 1752, - "name": "REVERT" - }, - { - "begin": 1702, - "end": 1704, - "name": "tag", - "value": "100" - }, - { - "begin": 1702, - "end": 1704, - "name": "JUMPDEST" - }, - { - "begin": 1785, - "end": 1786, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1802, - "end": 1855, - "name": "PUSH [tag]", - "value": "101" - }, - { - "begin": 1847, - "end": 1854, - "name": "DUP6" - }, - { - "begin": 1838, - "end": 1844, - "name": "DUP3" - }, - { - "begin": 1827, - "end": 1836, - "name": "DUP7" - }, - { - "begin": 1823, - "end": 1845, - "name": "ADD" - }, - { - "begin": 1802, - "end": 1855, - "name": "PUSH [tag]", - "value": "90" - }, - { - "begin": 1802, - "end": 1855, - "name": "JUMP" - }, - { - "begin": 1802, - "end": 1855, - "name": "tag", - "value": "101" - }, - { - "begin": 1802, - "end": 1855, - "name": "JUMPDEST" - }, - { - "begin": 1792, - "end": 1855, - "name": "SWAP3" - }, - { - "begin": 1792, - "end": 1855, - "name": "POP" - }, - { - "begin": 1764, - "end": 1861, - "name": "POP" - }, - { - "begin": 1892, - "end": 1894, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1910, - "end": 1963, - "name": "PUSH [tag]", - "value": "102" - }, - { - "begin": 1955, - "end": 1962, - "name": "DUP6" - }, - { - "begin": 1946, - "end": 1952, - "name": "DUP3" - }, - { - "begin": 1935, - "end": 1944, - "name": "DUP7" - }, - { - "begin": 1931, - "end": 1953, - "name": "ADD" - }, - { - "begin": 1910, - "end": 1963, - "name": "PUSH [tag]", - "value": "90" - }, - { - "begin": 1910, - "end": 1963, - "name": "JUMP" - }, - { - "begin": 1910, - "end": 1963, - "name": "tag", - "value": "102" - }, - { - "begin": 1910, - "end": 1963, - "name": "JUMPDEST" - }, - { - "begin": 1900, - "end": 1963, - "name": "SWAP2" - }, - { - "begin": 1900, - "end": 1963, - "name": "POP" - }, - { - "begin": 1871, - "end": 1969, - "name": "POP" - }, - { - "begin": 1696, - "end": 1979, - "name": "SWAP3" - }, - { - "begin": 1696, - "end": 1979, - "name": "POP" - }, - { - "begin": 1696, - "end": 1979, - "name": "SWAP3" - }, - { - "begin": 1696, - "end": 1979, - "name": "SWAP1" - }, - { - "begin": 1696, - "end": 1979, - "name": "POP" - }, - { - "begin": 1696, - "end": 1979, - "name": "JUMP" - }, - { - "begin": 1987, - "end": 2218, - "name": "tag", - "value": "104" - }, - { - "begin": 1987, - "end": 2218, - "name": "JUMPDEST" - }, - { - "begin": 1987, - "end": 2218, - "name": "PUSH", - "value": "0" - }, - { - "begin": 2125, - "end": 2212, - "name": "PUSH [tag]", - "value": "105" - }, - { - "begin": 2208, - "end": 2211, - "name": "DUP4" - }, - { - "begin": 2201, - "end": 2206, - "name": "DUP4" - }, - { - "begin": 2125, - "end": 2212, - "name": "PUSH [tag]", - "value": "106" - }, - { - "begin": 2125, - "end": 2212, - "name": "JUMP" - }, - { - "begin": 2125, - "end": 2212, - "name": "tag", - "value": "105" - }, - { - "begin": 2125, - "end": 2212, - "name": "JUMPDEST" - }, - { - "begin": 2111, - "end": 2212, - "name": "SWAP1" - }, - { - "begin": 2111, - "end": 2212, - "name": "POP" - }, - { - "begin": 2104, - "end": 2218, - "name": "SWAP3" - }, - { - "begin": 2104, - "end": 2218, - "name": "SWAP2" - }, - { - "begin": 2104, - "end": 2218, - "name": "POP" - }, - { - "begin": 2104, - "end": 2218, - "name": "POP" - }, - { - "begin": 2104, - "end": 2218, - "name": "JUMP" - }, - { - "begin": 2226, - "end": 2368, - "name": "tag", - "value": "108" - }, - { - "begin": 2226, - "end": 2368, - "name": "JUMPDEST" - }, - { - "begin": 2317, - "end": 2362, - "name": "PUSH [tag]", - "value": "109" - }, - { - "begin": 2356, - "end": 2361, - "name": "DUP2" - }, - { - "begin": 2317, - "end": 2362, - "name": "PUSH [tag]", - "value": "110" - }, - { - "begin": 2317, - "end": 2362, - "name": "JUMP" - }, - { - "begin": 2317, - "end": 2362, - "name": "tag", - "value": "109" - }, - { - "begin": 2317, - "end": 2362, - "name": "JUMPDEST" - }, - { - "begin": 2312, - "end": 2315, - "name": "DUP3" - }, - { - "begin": 2305, - "end": 2363, - "name": "MSTORE" - }, - { - "begin": 2299, - "end": 2368, - "name": "POP" - }, - { - "begin": 2299, - "end": 2368, - "name": "POP" - }, - { - "begin": 2299, - "end": 2368, - "name": "JUMP" - }, - { - "begin": 2375, - "end": 2485, - "name": "tag", - "value": "112" - }, - { - "begin": 2375, - "end": 2485, - "name": "JUMPDEST" - }, - { - "begin": 2448, - "end": 2479, - "name": "PUSH [tag]", - "value": "113" - }, - { - "begin": 2473, - "end": 2478, - "name": "DUP2" - }, - { - "begin": 2448, - "end": 2479, - "name": "PUSH [tag]", - "value": "114" - }, - { - "begin": 2448, - "end": 2479, - "name": "JUMP" - }, - { - "begin": 2448, - "end": 2479, - "name": "tag", - "value": "113" - }, - { - "begin": 2448, - "end": 2479, - "name": "JUMPDEST" - }, - { - "begin": 2443, - "end": 2446, - "name": "DUP3" - }, - { - "begin": 2436, - "end": 2480, - "name": "MSTORE" - }, - { - "begin": 2430, - "end": 2485, - "name": "POP" - }, - { - "begin": 2430, - "end": 2485, - "name": "POP" - }, - { - "begin": 2430, - "end": 2485, - "name": "JUMP" - }, - { - "begin": 2555, - "end": 3486, - "name": "tag", - "value": "116" - }, - { - "begin": 2555, - "end": 3486, - "name": "JUMPDEST" - }, - { - "begin": 2555, - "end": 3486, - "name": "PUSH", - "value": "0" - }, - { - "begin": 2738, - "end": 2811, - "name": "PUSH [tag]", - "value": "117" - }, - { - "begin": 2805, - "end": 2810, - "name": "DUP3" - }, - { - "begin": 2738, - "end": 2811, - "name": "PUSH [tag]", - "value": "118" - }, - { - "begin": 2738, - "end": 2811, - "name": "JUMP" - }, - { - "begin": 2738, - "end": 2811, - "name": "tag", - "value": "117" - }, - { - "begin": 2738, - "end": 2811, - "name": "JUMPDEST" - }, - { - "begin": 2824, - "end": 2929, - "name": "PUSH [tag]", - "value": "119" - }, - { - "begin": 2922, - "end": 2928, - "name": "DUP2" - }, - { - "begin": 2917, - "end": 2920, - "name": "DUP6" - }, - { - "begin": 2824, - "end": 2929, - "name": "PUSH [tag]", - "value": "120" - }, - { - "begin": 2824, - "end": 2929, - "name": "JUMP" - }, - { - "begin": 2824, - "end": 2929, - "name": "tag", - "value": "119" - }, - { - "begin": 2824, - "end": 2929, - "name": "JUMPDEST" - }, - { - "begin": 2817, - "end": 2929, - "name": "SWAP4" - }, - { - "begin": 2817, - "end": 2929, - "name": "POP" - }, - { - "begin": 2952, - "end": 2955, - "name": "DUP4" - }, - { - "begin": 2994, - "end": 2998, - "name": "PUSH", - "value": "20" - }, - { - "begin": 2986, - "end": 2992, - "name": "DUP3" - }, - { - "begin": 2982, - "end": 2999, - "name": "MUL" - }, - { - "begin": 2977, - "end": 2980, - "name": "DUP6" - }, - { - "begin": 2973, - "end": 3000, - "name": "ADD" - }, - { - "begin": 3020, - "end": 3095, - "name": "PUSH [tag]", - "value": "121" - }, - { - "begin": 3089, - "end": 3094, - "name": "DUP6" - }, - { - "begin": 3020, - "end": 3095, - "name": "PUSH [tag]", - "value": "122" - }, - { - "begin": 3020, - "end": 3095, - "name": "JUMP" - }, - { - "begin": 3020, - "end": 3095, - "name": "tag", - "value": "121" - }, - { - "begin": 3020, - "end": 3095, - "name": "JUMPDEST" - }, - { - "begin": 3116, - "end": 3117, - "name": "PUSH", - "value": "0" - }, - { - "begin": 3101, - "end": 3447, - "name": "tag", - "value": "123" - }, - { - "begin": 3101, - "end": 3447, - "name": "JUMPDEST" - }, - { - "begin": 3126, - "end": 3132, - "name": "DUP5" - }, - { - "begin": 3123, - "end": 3124, - "name": "DUP2" - }, - { - "begin": 3120, - "end": 3133, - "name": "LT" - }, - { - "begin": 3101, - "end": 3447, - "name": "ISZERO" - }, - { - "begin": 3101, - "end": 3447, - "name": "PUSH [tag]", - "value": "124" - }, - { - "begin": 3101, - "end": 3447, - "name": "JUMPI" - }, - { - "begin": 3188, - "end": 3197, - "name": "DUP4" - }, - { - "begin": 3182, - "end": 3186, - "name": "DUP4" - }, - { - "begin": 3178, - "end": 3198, - "name": "SUB" - }, - { - "begin": 3173, - "end": 3176, - "name": "DUP9" - }, - { - "begin": 3166, - "end": 3199, - "name": "MSTORE" - }, - { - "begin": 3214, - "end": 3316, - "name": "PUSH [tag]", - "value": "126" - }, - { - "begin": 3311, - "end": 3315, - "name": "DUP4" - }, - { - "begin": 3302, - "end": 3308, - "name": "DUP4" - }, - { - "begin": 3296, - "end": 3309, - "name": "MLOAD" - }, - { - "begin": 3214, - "end": 3316, - "name": "PUSH [tag]", - "value": "104" - }, - { - "begin": 3214, - "end": 3316, - "name": "JUMP" - }, - { - "begin": 3214, - "end": 3316, - "name": "tag", - "value": "126" - }, - { - "begin": 3214, - "end": 3316, - "name": "JUMPDEST" - }, - { - "begin": 3206, - "end": 3316, - "name": "SWAP3" - }, - { - "begin": 3206, - "end": 3316, - "name": "POP" - }, - { - "begin": 3333, - "end": 3412, - "name": "PUSH [tag]", - "value": "127" - }, - { - "begin": 3405, - "end": 3411, - "name": "DUP3" - }, - { - "begin": 3333, - "end": 3412, - "name": "PUSH [tag]", - "value": "128" - }, - { - "begin": 3333, - "end": 3412, - "name": "JUMP" - }, - { - "begin": 3333, - "end": 3412, - "name": "tag", - "value": "127" - }, - { - "begin": 3333, - "end": 3412, - "name": "JUMPDEST" - }, - { - "begin": 3323, - "end": 3412, - "name": "SWAP2" - }, - { - "begin": 3323, - "end": 3412, - "name": "POP" - }, - { - "begin": 3435, - "end": 3439, - "name": "PUSH", - "value": "20" - }, - { - "begin": 3430, - "end": 3433, - "name": "DUP9" - }, - { - "begin": 3426, - "end": 3440, - "name": "ADD" - }, - { - "begin": 3419, - "end": 3440, - "name": "SWAP8" - }, - { - "begin": 3419, - "end": 3440, - "name": "POP" - }, - { - "begin": 3148, - "end": 3149, - "name": "PUSH", - "value": "1" - }, - { - "begin": 3145, - "end": 3146, - "name": "DUP2" - }, - { - "begin": 3141, - "end": 3150, - "name": "ADD" - }, - { - "begin": 3136, - "end": 3150, - "name": "SWAP1" - }, - { - "begin": 3136, - "end": 3150, - "name": "POP" - }, - { - "begin": 3101, - "end": 3447, - "name": "PUSH [tag]", - "value": "123" - }, - { - "begin": 3101, - "end": 3447, - "name": "JUMP" - }, - { - "begin": 3101, - "end": 3447, - "name": "tag", - "value": "124" - }, - { - "begin": 3101, - "end": 3447, - "name": "JUMPDEST" - }, - { - "begin": 3105, - "end": 3119, - "name": "POP" - }, - { - "begin": 3460, - "end": 3464, - "name": "DUP2" - }, - { - "begin": 3453, - "end": 3464, - "name": "SWAP7" - }, - { - "begin": 3453, - "end": 3464, - "name": "POP" - }, - { - "begin": 3477, - "end": 3480, - "name": "DUP7" - }, - { - "begin": 3470, - "end": 3480, - "name": "SWAP5" - }, - { - "begin": 3470, - "end": 3480, - "name": "POP" - }, - { - "begin": 2717, - "end": 3486, - "name": "POP" - }, - { - "begin": 2717, - "end": 3486, - "name": "POP" - }, - { - "begin": 2717, - "end": 3486, - "name": "POP" - }, - { - "begin": 2717, - "end": 3486, - "name": "POP" - }, - { - "begin": 2717, - "end": 3486, - "name": "SWAP3" - }, - { - "begin": 2717, - "end": 3486, - "name": "SWAP2" - }, - { - "begin": 2717, - "end": 3486, - "name": "POP" - }, - { - "begin": 2717, - "end": 3486, - "name": "POP" - }, - { - "begin": 2717, - "end": 3486, - "name": "JUMP" - }, - { - "begin": 3494, - "end": 3614, - "name": "tag", - "value": "130" - }, - { - "begin": 3494, - "end": 3614, - "name": "JUMPDEST" - }, - { - "begin": 3577, - "end": 3608, - "name": "PUSH [tag]", - "value": "131" - }, - { - "begin": 3602, - "end": 3607, - "name": "DUP2" - }, - { - "begin": 3577, - "end": 3608, - "name": "PUSH [tag]", - "value": "132" - }, - { - "begin": 3577, - "end": 3608, - "name": "JUMP" - }, - { - "begin": 3577, - "end": 3608, - "name": "tag", - "value": "131" - }, - { - "begin": 3577, - "end": 3608, - "name": "JUMPDEST" - }, - { - "begin": 3572, - "end": 3575, - "name": "DUP3" - }, - { - "begin": 3565, - "end": 3609, - "name": "MSTORE" - }, - { - "begin": 3559, - "end": 3614, - "name": "POP" - }, - { - "begin": 3559, - "end": 3614, - "name": "POP" - }, - { - "begin": 3559, - "end": 3614, - "name": "JUMP" - }, - { - "begin": 3621, - "end": 3936, - "name": "tag", - "value": "134" - }, - { - "begin": 3621, - "end": 3936, - "name": "JUMPDEST" - }, - { - "begin": 3621, - "end": 3936, - "name": "PUSH", - "value": "0" - }, - { - "begin": 3717, - "end": 3751, - "name": "PUSH [tag]", - "value": "135" - }, - { - "begin": 3745, - "end": 3750, - "name": "DUP3" - }, - { - "begin": 3717, - "end": 3751, - "name": "PUSH [tag]", - "value": "136" - }, - { - "begin": 3717, - "end": 3751, - "name": "JUMP" - }, - { - "begin": 3717, - "end": 3751, - "name": "tag", - "value": "135" - }, - { - "begin": 3717, - "end": 3751, - "name": "JUMPDEST" - }, - { - "begin": 3763, - "end": 3823, - "name": "PUSH [tag]", - "value": "137" - }, - { - "begin": 3816, - "end": 3822, - "name": "DUP2" - }, - { - "begin": 3811, - "end": 3814, - "name": "DUP6" - }, - { - "begin": 3763, - "end": 3823, - "name": "PUSH [tag]", - "value": "138" - }, - { - "begin": 3763, - "end": 3823, - "name": "JUMP" - }, - { - "begin": 3763, - "end": 3823, - "name": "tag", - "value": "137" - }, - { - "begin": 3763, - "end": 3823, - "name": "JUMPDEST" - }, - { - "begin": 3756, - "end": 3823, - "name": "SWAP4" - }, - { - "begin": 3756, - "end": 3823, - "name": "POP" - }, - { - "begin": 3828, - "end": 3880, - "name": "PUSH [tag]", - "value": "139" - }, - { - "begin": 3873, - "end": 3879, - "name": "DUP2" - }, - { - "begin": 3868, - "end": 3871, - "name": "DUP6" - }, - { - "begin": 3861, - "end": 3865, - "name": "PUSH", - "value": "20" - }, - { - "begin": 3854, - "end": 3859, - "name": "DUP7" - }, - { - "begin": 3850, - "end": 3866, - "name": "ADD" - }, - { - "begin": 3828, - "end": 3880, - "name": "PUSH [tag]", - "value": "140" - }, - { - "begin": 3828, - "end": 3880, - "name": "JUMP" - }, - { - "begin": 3828, - "end": 3880, - "name": "tag", - "value": "139" - }, - { - "begin": 3828, - "end": 3880, - "name": "JUMPDEST" - }, - { - "begin": 3901, - "end": 3930, - "name": "PUSH [tag]", - "value": "141" - }, - { - "begin": 3923, - "end": 3929, - "name": "DUP2" - }, - { - "begin": 3901, - "end": 3930, - "name": "PUSH [tag]", - "value": "142" - }, - { - "begin": 3901, - "end": 3930, - "name": "JUMP" - }, - { - "begin": 3901, - "end": 3930, - "name": "tag", - "value": "141" - }, - { - "begin": 3901, - "end": 3930, - "name": "JUMPDEST" - }, - { - "begin": 3896, - "end": 3899, - "name": "DUP5" - }, - { - "begin": 3892, - "end": 3931, - "name": "ADD" - }, - { - "begin": 3885, - "end": 3931, - "name": "SWAP2" - }, - { - "begin": 3885, - "end": 3931, - "name": "POP" - }, - { - "begin": 3697, - "end": 3936, - "name": "POP" - }, - { - "begin": 3697, - "end": 3936, - "name": "SWAP3" - }, - { - "begin": 3697, - "end": 3936, - "name": "SWAP2" - }, - { - "begin": 3697, - "end": 3936, - "name": "POP" - }, - { - "begin": 3697, - "end": 3936, - "name": "POP" - }, - { - "begin": 3697, - "end": 3936, - "name": "JUMP" - }, - { - "begin": 3943, - "end": 4290, - "name": "tag", - "value": "144" - }, - { - "begin": 3943, - "end": 4290, - "name": "JUMPDEST" - }, - { - "begin": 3943, - "end": 4290, - "name": "PUSH", - "value": "0" - }, - { - "begin": 4055, - "end": 4094, - "name": "PUSH [tag]", - "value": "145" - }, - { - "begin": 4088, - "end": 4093, - "name": "DUP3" - }, - { - "begin": 4055, - "end": 4094, - "name": "PUSH [tag]", - "value": "146" - }, - { - "begin": 4055, - "end": 4094, - "name": "JUMP" - }, - { - "begin": 4055, - "end": 4094, - "name": "tag", - "value": "145" - }, - { - "begin": 4055, - "end": 4094, - "name": "JUMPDEST" - }, - { - "begin": 4106, - "end": 4177, - "name": "PUSH [tag]", - "value": "147" - }, - { - "begin": 4170, - "end": 4176, - "name": "DUP2" - }, - { - "begin": 4165, - "end": 4168, - "name": "DUP6" - }, - { - "begin": 4106, - "end": 4177, - "name": "PUSH [tag]", - "value": "148" - }, - { - "begin": 4106, - "end": 4177, - "name": "JUMP" - }, - { - "begin": 4106, - "end": 4177, - "name": "tag", - "value": "147" - }, - { - "begin": 4106, - "end": 4177, - "name": "JUMPDEST" - }, - { - "begin": 4099, - "end": 4177, - "name": "SWAP4" - }, - { - "begin": 4099, - "end": 4177, - "name": "POP" - }, - { - "begin": 4182, - "end": 4234, - "name": "PUSH [tag]", - "value": "149" - }, - { - "begin": 4227, - "end": 4233, - "name": "DUP2" - }, - { - "begin": 4222, - "end": 4225, - "name": "DUP6" - }, - { - "begin": 4215, - "end": 4219, - "name": "PUSH", - "value": "20" - }, - { - "begin": 4208, - "end": 4213, - "name": "DUP7" - }, - { - "begin": 4204, - "end": 4220, - "name": "ADD" - }, - { - "begin": 4182, - "end": 4234, - "name": "PUSH [tag]", - "value": "140" - }, - { - "begin": 4182, - "end": 4234, - "name": "JUMP" - }, - { - "begin": 4182, - "end": 4234, - "name": "tag", - "value": "149" - }, - { - "begin": 4182, - "end": 4234, - "name": "JUMPDEST" - }, - { - "begin": 4255, - "end": 4284, - "name": "PUSH [tag]", - "value": "150" - }, - { - "begin": 4277, - "end": 4283, - "name": "DUP2" - }, - { - "begin": 4255, - "end": 4284, - "name": "PUSH [tag]", - "value": "142" - }, - { - "begin": 4255, - "end": 4284, - "name": "JUMP" - }, - { - "begin": 4255, - "end": 4284, - "name": "tag", - "value": "150" - }, - { - "begin": 4255, - "end": 4284, - "name": "JUMPDEST" - }, - { - "begin": 4250, - "end": 4253, - "name": "DUP5" - }, - { - "begin": 4246, - "end": 4285, - "name": "ADD" - }, - { - "begin": 4239, - "end": 4285, - "name": "SWAP2" - }, - { - "begin": 4239, - "end": 4285, - "name": "POP" - }, - { - "begin": 4035, - "end": 4290, - "name": "POP" - }, - { - "begin": 4035, - "end": 4290, - "name": "SWAP3" - }, - { - "begin": 4035, - "end": 4290, - "name": "SWAP2" - }, - { - "begin": 4035, - "end": 4290, - "name": "POP" - }, - { - "begin": 4035, - "end": 4290, - "name": "POP" - }, - { - "begin": 4035, - "end": 4290, - "name": "JUMP" - }, - { - "begin": 4297, - "end": 4616, - "name": "tag", - "value": "152" - }, - { - "begin": 4297, - "end": 4616, - "name": "JUMPDEST" - }, - { - "begin": 4297, - "end": 4616, - "name": "PUSH", - "value": "0" - }, - { - "begin": 4395, - "end": 4430, - "name": "PUSH [tag]", - "value": "153" - }, - { - "begin": 4424, - "end": 4429, - "name": "DUP3" - }, - { - "begin": 4395, - "end": 4430, - "name": "PUSH [tag]", - "value": "154" - }, - { - "begin": 4395, - "end": 4430, - "name": "JUMP" - }, - { - "begin": 4395, - "end": 4430, - "name": "tag", - "value": "153" - }, - { - "begin": 4395, - "end": 4430, - "name": "JUMPDEST" - }, - { - "begin": 4442, - "end": 4503, - "name": "PUSH [tag]", - "value": "155" - }, - { - "begin": 4496, - "end": 4502, - "name": "DUP2" - }, - { - "begin": 4491, - "end": 4494, - "name": "DUP6" - }, - { - "begin": 4442, - "end": 4503, - "name": "PUSH [tag]", - "value": "156" - }, - { - "begin": 4442, - "end": 4503, - "name": "JUMP" - }, - { - "begin": 4442, - "end": 4503, - "name": "tag", - "value": "155" - }, - { - "begin": 4442, - "end": 4503, - "name": "JUMPDEST" - }, - { - "begin": 4435, - "end": 4503, - "name": "SWAP4" - }, - { - "begin": 4435, - "end": 4503, - "name": "POP" - }, - { - "begin": 4508, - "end": 4560, - "name": "PUSH [tag]", - "value": "157" - }, - { - "begin": 4553, - "end": 4559, - "name": "DUP2" - }, - { - "begin": 4548, - "end": 4551, - "name": "DUP6" - }, - { - "begin": 4541, - "end": 4545, - "name": "PUSH", - "value": "20" - }, - { - "begin": 4534, - "end": 4539, - "name": "DUP7" - }, - { - "begin": 4530, - "end": 4546, - "name": "ADD" - }, - { - "begin": 4508, - "end": 4560, - "name": "PUSH [tag]", - "value": "140" - }, - { - "begin": 4508, - "end": 4560, - "name": "JUMP" - }, - { - "begin": 4508, - "end": 4560, - "name": "tag", - "value": "157" - }, - { - "begin": 4508, - "end": 4560, - "name": "JUMPDEST" - }, - { - "begin": 4581, - "end": 4610, - "name": "PUSH [tag]", - "value": "158" - }, - { - "begin": 4603, - "end": 4609, - "name": "DUP2" - }, - { - "begin": 4581, - "end": 4610, - "name": "PUSH [tag]", - "value": "142" - }, - { - "begin": 4581, - "end": 4610, - "name": "JUMP" - }, - { - "begin": 4581, - "end": 4610, - "name": "tag", - "value": "158" - }, - { - "begin": 4581, - "end": 4610, - "name": "JUMPDEST" - }, - { - "begin": 4576, - "end": 4579, - "name": "DUP5" - }, - { - "begin": 4572, - "end": 4611, - "name": "ADD" - }, - { - "begin": 4565, - "end": 4611, - "name": "SWAP2" - }, - { - "begin": 4565, - "end": 4611, - "name": "POP" - }, - { - "begin": 4375, - "end": 4616, - "name": "POP" - }, - { - "begin": 4375, - "end": 4616, - "name": "SWAP3" - }, - { - "begin": 4375, - "end": 4616, - "name": "SWAP2" - }, - { - "begin": 4375, - "end": 4616, - "name": "POP" - }, - { - "begin": 4375, - "end": 4616, - "name": "POP" - }, - { - "begin": 4375, - "end": 4616, - "name": "JUMP" - }, - { - "begin": 4680, - "end": 5621, - "name": "tag", - "value": "160" - }, - { - "begin": 4680, - "end": 5621, - "name": "JUMPDEST" - }, - { - "begin": 4680, - "end": 5621, - "name": "PUSH", - "value": "0" - }, - { - "begin": 4827, - "end": 4831, - "name": "PUSH", - "value": "80" - }, - { - "begin": 4822, - "end": 4825, - "name": "DUP4" - }, - { - "begin": 4818, - "end": 4832, - "name": "ADD" - }, - { - "begin": 4911, - "end": 4914, - "name": "PUSH", - "value": "0" - }, - { - "begin": 4904, - "end": 4909, - "name": "DUP4" - }, - { - "begin": 4900, - "end": 4915, - "name": "ADD" - }, - { - "begin": 4894, - "end": 4916, - "name": "MLOAD" - }, - { - "begin": 4922, - "end": 4983, - "name": "PUSH [tag]", - "value": "161" - }, - { - "begin": 4978, - "end": 4981, - "name": "PUSH", - "value": "0" - }, - { - "begin": 4973, - "end": 4976, - "name": "DUP7" - }, - { - "begin": 4969, - "end": 4982, - "name": "ADD" - }, - { - "begin": 4956, - "end": 4967, - "name": "DUP3" - }, - { - "begin": 4922, - "end": 4983, - "name": "PUSH [tag]", - "value": "112" - }, - { - "begin": 4922, - "end": 4983, - "name": "JUMP" - }, - { - "begin": 4922, - "end": 4983, - "name": "tag", - "value": "161" - }, - { - "begin": 4922, - "end": 4983, - "name": "JUMPDEST" - }, - { - "begin": 4847, - "end": 4989, - "name": "POP" - }, - { - "begin": 5066, - "end": 5070, - "name": "PUSH", - "value": "20" - }, - { - "begin": 5059, - "end": 5064, - "name": "DUP4" - }, - { - "begin": 5055, - "end": 5071, - "name": "ADD" - }, - { - "begin": 5049, - "end": 5072, - "name": "MLOAD" - }, - { - "begin": 5078, - "end": 5140, - "name": "PUSH [tag]", - "value": "162" - }, - { - "begin": 5134, - "end": 5138, - "name": "PUSH", - "value": "20" - }, - { - "begin": 5129, - "end": 5132, - "name": "DUP7" - }, - { - "begin": 5125, - "end": 5139, - "name": "ADD" - }, - { - "begin": 5112, - "end": 5123, - "name": "DUP3" - }, - { - "begin": 5078, - "end": 5140, - "name": "PUSH [tag]", - "value": "163" - }, - { - "begin": 5078, - "end": 5140, - "name": "JUMP" - }, - { - "begin": 5078, - "end": 5140, - "name": "tag", - "value": "162" - }, - { - "begin": 5078, - "end": 5140, - "name": "JUMPDEST" - }, - { - "begin": 4999, - "end": 5146, - "name": "POP" - }, - { - "begin": 5221, - "end": 5225, - "name": "PUSH", - "value": "40" - }, - { - "begin": 5214, - "end": 5219, - "name": "DUP4" - }, - { - "begin": 5210, - "end": 5226, - "name": "ADD" - }, - { - "begin": 5204, - "end": 5227, - "name": "MLOAD" - }, - { - "begin": 5273, - "end": 5276, - "name": "DUP5" - }, - { - "begin": 5267, - "end": 5271, - "name": "DUP3" - }, - { - "begin": 5263, - "end": 5277, - "name": "SUB" - }, - { - "begin": 5256, - "end": 5260, - "name": "PUSH", - "value": "40" - }, - { - "begin": 5251, - "end": 5254, - "name": "DUP7" - }, - { - "begin": 5247, - "end": 5261, - "name": "ADD" - }, - { - "begin": 5240, - "end": 5278, - "name": "MSTORE" - }, - { - "begin": 5293, - "end": 5361, - "name": "PUSH [tag]", - "value": "164" - }, - { - "begin": 5356, - "end": 5360, - "name": "DUP3" - }, - { - "begin": 5343, - "end": 5354, - "name": "DUP3" - }, - { - "begin": 5293, - "end": 5361, - "name": "PUSH [tag]", - "value": "152" - }, - { - "begin": 5293, - "end": 5361, - "name": "JUMP" - }, - { - "begin": 5293, - "end": 5361, - "name": "tag", - "value": "164" - }, - { - "begin": 5293, - "end": 5361, - "name": "JUMPDEST" - }, - { - "begin": 5285, - "end": 5361, - "name": "SWAP2" - }, - { - "begin": 5285, - "end": 5361, - "name": "POP" - }, - { - "begin": 5156, - "end": 5373, - "name": "POP" - }, - { - "begin": 5445, - "end": 5449, - "name": "PUSH", - "value": "60" - }, - { - "begin": 5438, - "end": 5443, - "name": "DUP4" - }, - { - "begin": 5434, - "end": 5450, - "name": "ADD" - }, - { - "begin": 5428, - "end": 5451, - "name": "MLOAD" - }, - { - "begin": 5497, - "end": 5500, - "name": "DUP5" - }, - { - "begin": 5491, - "end": 5495, - "name": "DUP3" - }, - { - "begin": 5487, - "end": 5501, - "name": "SUB" - }, - { - "begin": 5480, - "end": 5484, - "name": "PUSH", - "value": "60" - }, - { - "begin": 5475, - "end": 5478, - "name": "DUP7" - }, - { - "begin": 5471, - "end": 5485, - "name": "ADD" - }, - { - "begin": 5464, - "end": 5502, - "name": "MSTORE" - }, - { - "begin": 5517, - "end": 5583, - "name": "PUSH [tag]", - "value": "165" - }, - { - "begin": 5578, - "end": 5582, - "name": "DUP3" - }, - { - "begin": 5565, - "end": 5576, - "name": "DUP3" - }, - { - "begin": 5517, - "end": 5583, - "name": "PUSH [tag]", - "value": "134" - }, - { - "begin": 5517, - "end": 5583, - "name": "JUMP" - }, - { - "begin": 5517, - "end": 5583, - "name": "tag", - "value": "165" - }, - { - "begin": 5517, - "end": 5583, - "name": "JUMPDEST" - }, - { - "begin": 5509, - "end": 5583, - "name": "SWAP2" - }, - { - "begin": 5509, - "end": 5583, - "name": "POP" - }, - { - "begin": 5383, - "end": 5595, - "name": "POP" - }, - { - "begin": 5612, - "end": 5616, - "name": "DUP1" - }, - { - "begin": 5605, - "end": 5616, - "name": "SWAP2" - }, - { - "begin": 5605, - "end": 5616, - "name": "POP" - }, - { - "begin": 4800, - "end": 5621, - "name": "POP" - }, - { - "begin": 4800, - "end": 5621, - "name": "SWAP3" - }, - { - "begin": 4800, - "end": 5621, - "name": "SWAP2" - }, - { - "begin": 4800, - "end": 5621, - "name": "POP" - }, - { - "begin": 4800, - "end": 5621, - "name": "POP" - }, - { - "begin": 4800, - "end": 5621, - "name": "JUMP" - }, - { - "begin": 5685, - "end": 6612, - "name": "tag", - "value": "106" - }, - { - "begin": 5685, - "end": 6612, - "name": "JUMPDEST" - }, - { - "begin": 5685, - "end": 6612, - "name": "PUSH", - "value": "0" - }, - { - "begin": 5818, - "end": 5822, - "name": "PUSH", - "value": "80" - }, - { - "begin": 5813, - "end": 5816, - "name": "DUP4" - }, - { - "begin": 5809, - "end": 5823, - "name": "ADD" - }, - { - "begin": 5902, - "end": 5905, - "name": "PUSH", - "value": "0" - }, - { - "begin": 5895, - "end": 5900, - "name": "DUP4" - }, - { - "begin": 5891, - "end": 5906, - "name": "ADD" - }, - { - "begin": 5885, - "end": 5907, - "name": "MLOAD" - }, - { - "begin": 5913, - "end": 5974, - "name": "PUSH [tag]", - "value": "167" - }, - { - "begin": 5969, - "end": 5972, - "name": "PUSH", - "value": "0" - }, - { - "begin": 5964, - "end": 5967, - "name": "DUP7" - }, - { - "begin": 5960, - "end": 5973, - "name": "ADD" - }, - { - "begin": 5947, - "end": 5958, - "name": "DUP3" - }, - { - "begin": 5913, - "end": 5974, - "name": "PUSH [tag]", - "value": "112" - }, - { - "begin": 5913, - "end": 5974, - "name": "JUMP" - }, - { - "begin": 5913, - "end": 5974, - "name": "tag", - "value": "167" - }, - { - "begin": 5913, - "end": 5974, - "name": "JUMPDEST" - }, - { - "begin": 5838, - "end": 5980, - "name": "POP" - }, - { - "begin": 6057, - "end": 6061, - "name": "PUSH", - "value": "20" - }, - { - "begin": 6050, - "end": 6055, - "name": "DUP4" - }, - { - "begin": 6046, - "end": 6062, - "name": "ADD" - }, - { - "begin": 6040, - "end": 6063, - "name": "MLOAD" - }, - { - "begin": 6069, - "end": 6131, - "name": "PUSH [tag]", - "value": "168" - }, - { - "begin": 6125, - "end": 6129, - "name": "PUSH", - "value": "20" - }, - { - "begin": 6120, - "end": 6123, - "name": "DUP7" - }, - { - "begin": 6116, - "end": 6130, - "name": "ADD" - }, - { - "begin": 6103, - "end": 6114, - "name": "DUP3" - }, - { - "begin": 6069, - "end": 6131, - "name": "PUSH [tag]", - "value": "163" - }, - { - "begin": 6069, - "end": 6131, - "name": "JUMP" - }, - { - "begin": 6069, - "end": 6131, - "name": "tag", - "value": "168" - }, - { - "begin": 6069, - "end": 6131, - "name": "JUMPDEST" - }, - { - "begin": 5990, - "end": 6137, - "name": "POP" - }, - { - "begin": 6212, - "end": 6216, - "name": "PUSH", - "value": "40" - }, - { - "begin": 6205, - "end": 6210, - "name": "DUP4" - }, - { - "begin": 6201, - "end": 6217, - "name": "ADD" - }, - { - "begin": 6195, - "end": 6218, - "name": "MLOAD" - }, - { - "begin": 6264, - "end": 6267, - "name": "DUP5" - }, - { - "begin": 6258, - "end": 6262, - "name": "DUP3" - }, - { - "begin": 6254, - "end": 6268, - "name": "SUB" - }, - { - "begin": 6247, - "end": 6251, - "name": "PUSH", - "value": "40" - }, - { - "begin": 6242, - "end": 6245, - "name": "DUP7" - }, - { - "begin": 6238, - "end": 6252, - "name": "ADD" - }, - { - "begin": 6231, - "end": 6269, - "name": "MSTORE" - }, - { - "begin": 6284, - "end": 6352, - "name": "PUSH [tag]", - "value": "169" - }, - { - "begin": 6347, - "end": 6351, - "name": "DUP3" - }, - { - "begin": 6334, - "end": 6345, - "name": "DUP3" - }, - { - "begin": 6284, - "end": 6352, - "name": "PUSH [tag]", - "value": "152" - }, - { - "begin": 6284, - "end": 6352, - "name": "JUMP" - }, - { - "begin": 6284, - "end": 6352, - "name": "tag", - "value": "169" - }, - { - "begin": 6284, - "end": 6352, - "name": "JUMPDEST" - }, - { - "begin": 6276, - "end": 6352, - "name": "SWAP2" - }, - { - "begin": 6276, - "end": 6352, - "name": "POP" - }, - { - "begin": 6147, - "end": 6364, - "name": "POP" - }, - { - "begin": 6436, - "end": 6440, - "name": "PUSH", - "value": "60" - }, - { - "begin": 6429, - "end": 6434, - "name": "DUP4" - }, - { - "begin": 6425, - "end": 6441, - "name": "ADD" - }, - { - "begin": 6419, - "end": 6442, - "name": "MLOAD" - }, - { - "begin": 6488, - "end": 6491, - "name": "DUP5" - }, - { - "begin": 6482, - "end": 6486, - "name": "DUP3" - }, - { - "begin": 6478, - "end": 6492, - "name": "SUB" - }, - { - "begin": 6471, - "end": 6475, - "name": "PUSH", - "value": "60" - }, - { - "begin": 6466, - "end": 6469, - "name": "DUP7" - }, - { - "begin": 6462, - "end": 6476, - "name": "ADD" - }, - { - "begin": 6455, - "end": 6493, - "name": "MSTORE" - }, - { - "begin": 6508, - "end": 6574, - "name": "PUSH [tag]", - "value": "170" - }, - { - "begin": 6569, - "end": 6573, - "name": "DUP3" - }, - { - "begin": 6556, - "end": 6567, - "name": "DUP3" - }, - { - "begin": 6508, - "end": 6574, - "name": "PUSH [tag]", - "value": "134" - }, - { - "begin": 6508, - "end": 6574, - "name": "JUMP" - }, - { - "begin": 6508, - "end": 6574, - "name": "tag", - "value": "170" - }, - { - "begin": 6508, - "end": 6574, - "name": "JUMPDEST" - }, - { - "begin": 6500, - "end": 6574, - "name": "SWAP2" - }, - { - "begin": 6500, - "end": 6574, - "name": "POP" - }, - { - "begin": 6374, - "end": 6586, - "name": "POP" - }, - { - "begin": 6603, - "end": 6607, - "name": "DUP1" - }, - { - "begin": 6596, - "end": 6607, - "name": "SWAP2" - }, - { - "begin": 6596, - "end": 6607, - "name": "POP" - }, - { - "begin": 5791, - "end": 6612, - "name": "POP" - }, - { - "begin": 5791, - "end": 6612, - "name": "SWAP3" - }, - { - "begin": 5791, - "end": 6612, - "name": "SWAP2" - }, - { - "begin": 5791, - "end": 6612, - "name": "POP" - }, - { - "begin": 5791, - "end": 6612, - "name": "POP" - }, - { - "begin": 5791, - "end": 6612, - "name": "JUMP" - }, - { - "begin": 6619, - "end": 6729, - "name": "tag", - "value": "163" - }, - { - "begin": 6619, - "end": 6729, - "name": "JUMPDEST" - }, - { - "begin": 6692, - "end": 6723, - "name": "PUSH [tag]", - "value": "172" - }, - { - "begin": 6717, - "end": 6722, - "name": "DUP2" - }, - { - "begin": 6692, - "end": 6723, - "name": "PUSH [tag]", - "value": "173" - }, - { - "begin": 6692, - "end": 6723, - "name": "JUMP" - }, - { - "begin": 6692, - "end": 6723, - "name": "tag", - "value": "172" - }, - { - "begin": 6692, - "end": 6723, - "name": "JUMPDEST" - }, - { - "begin": 6687, - "end": 6690, - "name": "DUP3" - }, - { - "begin": 6680, - "end": 6724, - "name": "MSTORE" - }, - { - "begin": 6674, - "end": 6729, - "name": "POP" - }, - { - "begin": 6674, - "end": 6729, - "name": "POP" - }, - { - "begin": 6674, - "end": 6729, - "name": "JUMP" - }, - { - "begin": 6736, - "end": 7173, - "name": "tag", - "value": "14" - }, - { - "begin": 6736, - "end": 7173, - "name": "JUMPDEST" - }, - { - "begin": 6736, - "end": 7173, - "name": "PUSH", - "value": "0" - }, - { - "begin": 6942, - "end": 6944, - "name": "PUSH", - "value": "20" - }, - { - "begin": 6931, - "end": 6940, - "name": "DUP3" - }, - { - "begin": 6927, - "end": 6945, - "name": "ADD" - }, - { - "begin": 6919, - "end": 6945, - "name": "SWAP1" - }, - { - "begin": 6919, - "end": 6945, - "name": "POP" - }, - { - "begin": 6992, - "end": 7001, - "name": "DUP2" - }, - { - "begin": 6986, - "end": 6990, - "name": "DUP2" - }, - { - "begin": 6982, - "end": 7002, - "name": "SUB" - }, - { - "begin": 6978, - "end": 6979, - "name": "PUSH", - "value": "0" - }, - { - "begin": 6967, - "end": 6976, - "name": "DUP4" - }, - { - "begin": 6963, - "end": 6980, - "name": "ADD" - }, - { - "begin": 6956, - "end": 7003, - "name": "MSTORE" - }, - { - "begin": 7017, - "end": 7163, - "name": "PUSH [tag]", - "value": "175" - }, - { - "begin": 7158, - "end": 7162, - "name": "DUP2" - }, - { - "begin": 7149, - "end": 7155, - "name": "DUP5" - }, - { - "begin": 7017, - "end": 7163, - "name": "PUSH [tag]", - "value": "116" - }, - { - "begin": 7017, - "end": 7163, - "name": "JUMP" - }, - { - "begin": 7017, - "end": 7163, - "name": "tag", - "value": "175" - }, - { - "begin": 7017, - "end": 7163, - "name": "JUMPDEST" - }, - { - "begin": 7009, - "end": 7163, - "name": "SWAP1" - }, - { - "begin": 7009, - "end": 7163, - "name": "POP" - }, - { - "begin": 6913, - "end": 7173, - "name": "SWAP3" - }, - { - "begin": 6913, - "end": 7173, - "name": "SWAP2" - }, - { - "begin": 6913, - "end": 7173, - "name": "POP" - }, - { - "begin": 6913, - "end": 7173, - "name": "POP" - }, - { - "begin": 6913, - "end": 7173, - "name": "JUMP" - }, - { - "begin": 7180, - "end": 7719, - "name": "tag", - "value": "29" - }, - { - "begin": 7180, - "end": 7719, - "name": "JUMPDEST" - }, - { - "begin": 7180, - "end": 7719, - "name": "PUSH", - "value": "0" - }, - { - "begin": 7382, - "end": 7384, - "name": "PUSH", - "value": "60" - }, - { - "begin": 7371, - "end": 7380, - "name": "DUP3" - }, - { - "begin": 7367, - "end": 7385, - "name": "ADD" - }, - { - "begin": 7359, - "end": 7385, - "name": "SWAP1" - }, - { - "begin": 7359, - "end": 7385, - "name": "POP" - }, - { - "begin": 7432, - "end": 7441, - "name": "DUP2" - }, - { - "begin": 7426, - "end": 7430, - "name": "DUP2" - }, - { - "begin": 7422, - "end": 7442, - "name": "SUB" - }, - { - "begin": 7418, - "end": 7419, - "name": "PUSH", - "value": "0" - }, - { - "begin": 7407, - "end": 7416, - "name": "DUP4" - }, - { - "begin": 7403, - "end": 7420, - "name": "ADD" - }, - { - "begin": 7396, - "end": 7443, - "name": "MSTORE" - }, - { - "begin": 7457, - "end": 7535, - "name": "PUSH [tag]", - "value": "177" - }, - { - "begin": 7530, - "end": 7534, - "name": "DUP2" - }, - { - "begin": 7521, - "end": 7527, - "name": "DUP7" - }, - { - "begin": 7457, - "end": 7535, - "name": "PUSH [tag]", - "value": "144" - }, - { - "begin": 7457, - "end": 7535, - "name": "JUMP" - }, - { - "begin": 7457, - "end": 7535, - "name": "tag", - "value": "177" - }, - { - "begin": 7457, - "end": 7535, - "name": "JUMPDEST" - }, - { - "begin": 7449, - "end": 7535, - "name": "SWAP1" - }, - { - "begin": 7449, - "end": 7535, - "name": "POP" - }, - { - "begin": 7546, - "end": 7618, - "name": "PUSH [tag]", - "value": "178" - }, - { - "begin": 7614, - "end": 7616, - "name": "PUSH", - "value": "20" - }, - { - "begin": 7603, - "end": 7612, - "name": "DUP4" - }, - { - "begin": 7599, - "end": 7617, - "name": "ADD" - }, - { - "begin": 7590, - "end": 7596, - "name": "DUP6" - }, - { - "begin": 7546, - "end": 7618, - "name": "PUSH [tag]", - "value": "130" - }, - { - "begin": 7546, - "end": 7618, - "name": "JUMP" - }, - { - "begin": 7546, - "end": 7618, - "name": "tag", - "value": "178" - }, - { - "begin": 7546, - "end": 7618, - "name": "JUMPDEST" - }, - { - "begin": 7629, - "end": 7709, - "name": "PUSH [tag]", - "value": "179" - }, - { - "begin": 7705, - "end": 7707, - "name": "PUSH", - "value": "40" - }, - { - "begin": 7694, - "end": 7703, - "name": "DUP4" - }, - { - "begin": 7690, - "end": 7708, - "name": "ADD" - }, - { - "begin": 7681, - "end": 7687, - "name": "DUP5" - }, - { - "begin": 7629, - "end": 7709, - "name": "PUSH [tag]", - "value": "108" - }, - { - "begin": 7629, - "end": 7709, - "name": "JUMP" - }, - { - "begin": 7629, - "end": 7709, - "name": "tag", - "value": "179" - }, - { - "begin": 7629, - "end": 7709, - "name": "JUMPDEST" - }, - { - "begin": 7353, - "end": 7719, - "name": "SWAP5" - }, - { - "begin": 7353, - "end": 7719, - "name": "SWAP4" - }, - { - "begin": 7353, - "end": 7719, - "name": "POP" - }, - { - "begin": 7353, - "end": 7719, - "name": "POP" - }, - { - "begin": 7353, - "end": 7719, - "name": "POP" - }, - { - "begin": 7353, - "end": 7719, - "name": "POP" - }, - { - "begin": 7353, - "end": 7719, - "name": "JUMP" - }, - { - "begin": 7726, - "end": 8079, - "name": "tag", - "value": "19" - }, - { - "begin": 7726, - "end": 8079, - "name": "JUMPDEST" - }, - { - "begin": 7726, - "end": 8079, - "name": "PUSH", - "value": "0" - }, - { - "begin": 7890, - "end": 7892, - "name": "PUSH", - "value": "20" - }, - { - "begin": 7879, - "end": 7888, - "name": "DUP3" - }, - { - "begin": 7875, - "end": 7893, - "name": "ADD" - }, - { - "begin": 7867, - "end": 7893, - "name": "SWAP1" - }, - { - "begin": 7867, - "end": 7893, - "name": "POP" - }, - { - "begin": 7940, - "end": 7949, - "name": "DUP2" - }, - { - "begin": 7934, - "end": 7938, - "name": "DUP2" - }, - { - "begin": 7930, - "end": 7950, - "name": "SUB" - }, - { - "begin": 7926, - "end": 7927, - "name": "PUSH", - "value": "0" - }, - { - "begin": 7915, - "end": 7924, - "name": "DUP4" - }, - { - "begin": 7911, - "end": 7928, - "name": "ADD" - }, - { - "begin": 7904, - "end": 7951, - "name": "MSTORE" - }, - { - "begin": 7965, - "end": 8069, - "name": "PUSH [tag]", - "value": "181" - }, - { - "begin": 8064, - "end": 8068, - "name": "DUP2" - }, - { - "begin": 8055, - "end": 8061, - "name": "DUP5" - }, - { - "begin": 7965, - "end": 8069, - "name": "PUSH [tag]", - "value": "160" - }, - { - "begin": 7965, - "end": 8069, - "name": "JUMP" - }, - { - "begin": 7965, - "end": 8069, - "name": "tag", - "value": "181" - }, - { - "begin": 7965, - "end": 8069, - "name": "JUMPDEST" - }, - { - "begin": 7957, - "end": 8069, - "name": "SWAP1" - }, - { - "begin": 7957, - "end": 8069, - "name": "POP" - }, - { - "begin": 7861, - "end": 8079, - "name": "SWAP3" - }, - { - "begin": 7861, - "end": 8079, - "name": "SWAP2" - }, - { - "begin": 7861, - "end": 8079, - "name": "POP" - }, - { - "begin": 7861, - "end": 8079, - "name": "POP" - }, - { - "begin": 7861, - "end": 8079, - "name": "JUMP" - }, - { - "begin": 8086, - "end": 8342, - "name": "tag", - "value": "77" - }, - { - "begin": 8086, - "end": 8342, - "name": "JUMPDEST" - }, - { - "begin": 8086, - "end": 8342, - "name": "PUSH", - "value": "0" - }, - { - "begin": 8148, - "end": 8150, - "name": "PUSH", - "value": "40" - }, - { - "begin": 8142, - "end": 8151, - "name": "MLOAD" - }, - { - "begin": 8132, - "end": 8151, - "name": "SWAP1" - }, - { - "begin": 8132, - "end": 8151, - "name": "POP" - }, - { - "begin": 8186, - "end": 8190, - "name": "DUP2" - }, - { - "begin": 8178, - "end": 8184, - "name": "DUP2" - }, - { - "begin": 8174, - "end": 8191, - "name": "ADD" - }, - { - "begin": 8285, - "end": 8291, - "name": "DUP2" - }, - { - "begin": 8273, - "end": 8283, - "name": "DUP2" - }, - { - "begin": 8270, - "end": 8292, - "name": "LT" - }, - { - "begin": 8249, - "end": 8267, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFF" - }, - { - "begin": 8237, - "end": 8247, - "name": "DUP3" - }, - { - "begin": 8234, - "end": 8268, - "name": "GT" - }, - { - "begin": 8231, - "end": 8293, - "name": "OR" - }, - { - "begin": 8228, - "end": 8230, - "name": "ISZERO" - }, - { - "begin": 8228, - "end": 8230, - "name": "PUSH [tag]", - "value": "183" - }, - { - "begin": 8228, - "end": 8230, - "name": "JUMPI" - }, - { - "begin": 8306, - "end": 8307, - "name": "PUSH", - "value": "0" - }, - { - "begin": 8303, - "end": 8304, - "name": "DUP1" - }, - { - "begin": 8296, - "end": 8308, - "name": "REVERT" - }, - { - "begin": 8228, - "end": 8230, - "name": "tag", - "value": "183" - }, - { - "begin": 8228, - "end": 8230, - "name": "JUMPDEST" - }, - { - "begin": 8326, - "end": 8336, - "name": "DUP1" - }, - { - "begin": 8322, - "end": 8324, - "name": "PUSH", - "value": "40" - }, - { - "begin": 8315, - "end": 8337, - "name": "MSTORE" - }, - { - "begin": 8126, - "end": 8342, - "name": "POP" - }, - { - "begin": 8126, - "end": 8342, - "name": "SWAP2" - }, - { - "begin": 8126, - "end": 8342, - "name": "SWAP1" - }, - { - "begin": 8126, - "end": 8342, - "name": "POP" - }, - { - "begin": 8126, - "end": 8342, - "name": "JUMP" - }, - { - "begin": 8349, - "end": 8607, - "name": "tag", - "value": "76" - }, - { - "begin": 8349, - "end": 8607, - "name": "JUMPDEST" - }, - { - "begin": 8349, - "end": 8607, - "name": "PUSH", - "value": "0" - }, - { - "begin": 8492, - "end": 8510, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFF" - }, - { - "begin": 8484, - "end": 8490, - "name": "DUP3" - }, - { - "begin": 8481, - "end": 8511, - "name": "GT" - }, - { - "begin": 8478, - "end": 8480, - "name": "ISZERO" - }, - { - "begin": 8478, - "end": 8480, - "name": "PUSH [tag]", - "value": "185" - }, - { - "begin": 8478, - "end": 8480, - "name": "JUMPI" - }, - { - "begin": 8524, - "end": 8525, - "name": "PUSH", - "value": "0" - }, - { - "begin": 8521, - "end": 8522, - "name": "DUP1" - }, - { - "begin": 8514, - "end": 8526, - "name": "REVERT" - }, - { - "begin": 8478, - "end": 8480, - "name": "tag", - "value": "185" - }, - { - "begin": 8478, - "end": 8480, - "name": "JUMPDEST" - }, - { - "begin": 8568, - "end": 8572, - "name": "PUSH", - "value": "1F" - }, - { - "begin": 8564, - "end": 8573, - "name": "NOT" - }, - { - "begin": 8557, - "end": 8561, - "name": "PUSH", - "value": "1F" - }, - { - "begin": 8549, - "end": 8555, - "name": "DUP4" - }, - { - "begin": 8545, - "end": 8562, - "name": "ADD" - }, - { - "begin": 8541, - "end": 8574, - "name": "AND" - }, - { - "begin": 8533, - "end": 8574, - "name": "SWAP1" - }, - { - "begin": 8533, - "end": 8574, - "name": "POP" - }, - { - "begin": 8597, - "end": 8601, - "name": "PUSH", - "value": "20" - }, - { - "begin": 8591, - "end": 8595, - "name": "DUP2" - }, - { - "begin": 8587, - "end": 8602, - "name": "ADD" - }, - { - "begin": 8579, - "end": 8602, - "name": "SWAP1" - }, - { - "begin": 8579, - "end": 8602, - "name": "POP" - }, - { - "begin": 8415, - "end": 8607, - "name": "SWAP2" - }, - { - "begin": 8415, - "end": 8607, - "name": "SWAP1" - }, - { - "begin": 8415, - "end": 8607, - "name": "POP" - }, - { - "begin": 8415, - "end": 8607, - "name": "JUMP" - }, - { - "begin": 8614, - "end": 8873, - "name": "tag", - "value": "86" - }, - { - "begin": 8614, - "end": 8873, - "name": "JUMPDEST" - }, - { - "begin": 8614, - "end": 8873, - "name": "PUSH", - "value": "0" - }, - { - "begin": 8758, - "end": 8776, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFF" - }, - { - "begin": 8750, - "end": 8756, - "name": "DUP3" - }, - { - "begin": 8747, - "end": 8777, - "name": "GT" - }, - { - "begin": 8744, - "end": 8746, - "name": "ISZERO" - }, - { - "begin": 8744, - "end": 8746, - "name": "PUSH [tag]", - "value": "187" - }, - { - "begin": 8744, - "end": 8746, - "name": "JUMPI" - }, - { - "begin": 8790, - "end": 8791, - "name": "PUSH", - "value": "0" - }, - { - "begin": 8787, - "end": 8788, - "name": "DUP1" - }, - { - "begin": 8780, - "end": 8792, - "name": "REVERT" - }, - { - "begin": 8744, - "end": 8746, - "name": "tag", - "value": "187" - }, - { - "begin": 8744, - "end": 8746, - "name": "JUMPDEST" - }, - { - "begin": 8834, - "end": 8838, - "name": "PUSH", - "value": "1F" - }, - { - "begin": 8830, - "end": 8839, - "name": "NOT" - }, - { - "begin": 8823, - "end": 8827, - "name": "PUSH", - "value": "1F" - }, - { - "begin": 8815, - "end": 8821, - "name": "DUP4" - }, - { - "begin": 8811, - "end": 8828, - "name": "ADD" - }, - { - "begin": 8807, - "end": 8840, - "name": "AND" - }, - { - "begin": 8799, - "end": 8840, - "name": "SWAP1" - }, - { - "begin": 8799, - "end": 8840, - "name": "POP" - }, - { - "begin": 8863, - "end": 8867, - "name": "PUSH", - "value": "20" - }, - { - "begin": 8857, - "end": 8861, - "name": "DUP2" - }, - { - "begin": 8853, - "end": 8868, - "name": "ADD" - }, - { - "begin": 8845, - "end": 8868, - "name": "SWAP1" - }, - { - "begin": 8845, - "end": 8868, - "name": "POP" - }, - { - "begin": 8681, - "end": 8873, - "name": "SWAP2" - }, - { - "begin": 8681, - "end": 8873, - "name": "SWAP1" - }, - { - "begin": 8681, - "end": 8873, - "name": "POP" - }, - { - "begin": 8681, - "end": 8873, - "name": "JUMP" - }, - { - "begin": 8882, - "end": 9022, - "name": "tag", - "value": "122" - }, - { - "begin": 8882, - "end": 9022, - "name": "JUMPDEST" - }, - { - "begin": 8882, - "end": 9022, - "name": "PUSH", - "value": "0" - }, - { - "begin": 9010, - "end": 9014, - "name": "PUSH", - "value": "20" - }, - { - "begin": 9002, - "end": 9008, - "name": "DUP3" - }, - { - "begin": 8998, - "end": 9015, - "name": "ADD" - }, - { - "begin": 8987, - "end": 9015, - "name": "SWAP1" - }, - { - "begin": 8987, - "end": 9015, - "name": "POP" - }, - { - "begin": 8979, - "end": 9022, - "name": "SWAP2" - }, - { - "begin": 8979, - "end": 9022, - "name": "SWAP1" - }, - { - "begin": 8979, - "end": 9022, - "name": "POP" - }, - { - "begin": 8979, - "end": 9022, - "name": "JUMP" - }, - { - "begin": 9031, - "end": 9157, - "name": "tag", - "value": "118" - }, - { - "begin": 9031, - "end": 9157, - "name": "JUMPDEST" - }, - { - "begin": 9031, - "end": 9157, - "name": "PUSH", - "value": "0" - }, - { - "begin": 9146, - "end": 9151, - "name": "DUP2" - }, - { - "begin": 9140, - "end": 9152, - "name": "MLOAD" - }, - { - "begin": 9130, - "end": 9152, - "name": "SWAP1" - }, - { - "begin": 9130, - "end": 9152, - "name": "POP" - }, - { - "begin": 9124, - "end": 9157, - "name": "SWAP2" - }, - { - "begin": 9124, - "end": 9157, - "name": "SWAP1" - }, - { - "begin": 9124, - "end": 9157, - "name": "POP" - }, - { - "begin": 9124, - "end": 9157, - "name": "JUMP" - }, - { - "begin": 9164, - "end": 9251, - "name": "tag", - "value": "136" - }, - { - "begin": 9164, - "end": 9251, - "name": "JUMPDEST" - }, - { - "begin": 9164, - "end": 9251, - "name": "PUSH", - "value": "0" - }, - { - "begin": 9240, - "end": 9245, - "name": "DUP2" - }, - { - "begin": 9234, - "end": 9246, - "name": "MLOAD" - }, - { - "begin": 9224, - "end": 9246, - "name": "SWAP1" - }, - { - "begin": 9224, - "end": 9246, - "name": "POP" - }, - { - "begin": 9218, - "end": 9251, - "name": "SWAP2" - }, - { - "begin": 9218, - "end": 9251, - "name": "SWAP1" - }, - { - "begin": 9218, - "end": 9251, - "name": "POP" - }, - { - "begin": 9218, - "end": 9251, - "name": "JUMP" - }, - { - "begin": 9258, - "end": 9346, - "name": "tag", - "value": "154" - }, - { - "begin": 9258, - "end": 9346, - "name": "JUMPDEST" - }, - { - "begin": 9258, - "end": 9346, - "name": "PUSH", - "value": "0" - }, - { - "begin": 9335, - "end": 9340, - "name": "DUP2" - }, - { - "begin": 9329, - "end": 9341, - "name": "MLOAD" - }, - { - "begin": 9319, - "end": 9341, - "name": "SWAP1" - }, - { - "begin": 9319, - "end": 9341, - "name": "POP" - }, - { - "begin": 9313, - "end": 9346, - "name": "SWAP2" - }, - { - "begin": 9313, - "end": 9346, - "name": "SWAP1" - }, - { - "begin": 9313, - "end": 9346, - "name": "POP" - }, - { - "begin": 9313, - "end": 9346, - "name": "JUMP" - }, - { - "begin": 9353, - "end": 9445, - "name": "tag", - "value": "146" - }, - { - "begin": 9353, - "end": 9445, - "name": "JUMPDEST" - }, - { - "begin": 9353, - "end": 9445, - "name": "PUSH", - "value": "0" - }, - { - "begin": 9434, - "end": 9439, - "name": "DUP2" - }, - { - "begin": 9428, - "end": 9440, - "name": "MLOAD" - }, - { - "begin": 9418, - "end": 9440, - "name": "SWAP1" - }, - { - "begin": 9418, - "end": 9440, - "name": "POP" - }, - { - "begin": 9412, - "end": 9445, - "name": "SWAP2" - }, - { - "begin": 9412, - "end": 9445, - "name": "SWAP1" - }, - { - "begin": 9412, - "end": 9445, - "name": "POP" - }, - { - "begin": 9412, - "end": 9445, - "name": "JUMP" - }, - { - "begin": 9453, - "end": 9594, - "name": "tag", - "value": "128" - }, - { - "begin": 9453, - "end": 9594, - "name": "JUMPDEST" - }, - { - "begin": 9453, - "end": 9594, - "name": "PUSH", - "value": "0" - }, - { - "begin": 9583, - "end": 9587, - "name": "PUSH", - "value": "20" - }, - { - "begin": 9575, - "end": 9581, - "name": "DUP3" - }, - { - "begin": 9571, - "end": 9588, - "name": "ADD" - }, - { - "begin": 9560, - "end": 9588, - "name": "SWAP1" - }, - { - "begin": 9560, - "end": 9588, - "name": "POP" - }, - { - "begin": 9553, - "end": 9594, - "name": "SWAP2" - }, - { - "begin": 9553, - "end": 9594, - "name": "SWAP1" - }, - { - "begin": 9553, - "end": 9594, - "name": "POP" - }, - { - "begin": 9553, - "end": 9594, - "name": "JUMP" - }, - { - "begin": 9603, - "end": 9800, - "name": "tag", - "value": "120" - }, - { - "begin": 9603, - "end": 9800, - "name": "JUMPDEST" - }, - { - "begin": 9603, - "end": 9800, - "name": "PUSH", - "value": "0" - }, - { - "begin": 9752, - "end": 9758, - "name": "DUP3" - }, - { - "begin": 9747, - "end": 9750, - "name": "DUP3" - }, - { - "begin": 9740, - "end": 9759, - "name": "MSTORE" - }, - { - "begin": 9789, - "end": 9793, - "name": "PUSH", - "value": "20" - }, - { - "begin": 9784, - "end": 9787, - "name": "DUP3" - }, - { - "begin": 9780, - "end": 9794, - "name": "ADD" - }, - { - "begin": 9765, - "end": 9794, - "name": "SWAP1" - }, - { - "begin": 9765, - "end": 9794, - "name": "POP" - }, - { - "begin": 9733, - "end": 9800, - "name": "SWAP3" - }, - { - "begin": 9733, - "end": 9800, - "name": "SWAP2" - }, - { - "begin": 9733, - "end": 9800, - "name": "POP" - }, - { - "begin": 9733, - "end": 9800, - "name": "POP" - }, - { - "begin": 9733, - "end": 9800, - "name": "JUMP" - }, - { - "begin": 9809, - "end": 9961, - "name": "tag", - "value": "138" - }, - { - "begin": 9809, - "end": 9961, - "name": "JUMPDEST" - }, - { - "begin": 9809, - "end": 9961, - "name": "PUSH", - "value": "0" - }, - { - "begin": 9913, - "end": 9919, - "name": "DUP3" - }, - { - "begin": 9908, - "end": 9911, - "name": "DUP3" - }, - { - "begin": 9901, - "end": 9920, - "name": "MSTORE" - }, - { - "begin": 9950, - "end": 9954, - "name": "PUSH", - "value": "20" - }, - { - "begin": 9945, - "end": 9948, - "name": "DUP3" - }, - { - "begin": 9941, - "end": 9955, - "name": "ADD" - }, - { - "begin": 9926, - "end": 9955, - "name": "SWAP1" - }, - { - "begin": 9926, - "end": 9955, - "name": "POP" - }, - { - "begin": 9894, - "end": 9961, - "name": "SWAP3" - }, - { - "begin": 9894, - "end": 9961, - "name": "SWAP2" - }, - { - "begin": 9894, - "end": 9961, - "name": "POP" - }, - { - "begin": 9894, - "end": 9961, - "name": "POP" - }, - { - "begin": 9894, - "end": 9961, - "name": "JUMP" - }, - { - "begin": 9970, - "end": 10123, - "name": "tag", - "value": "156" - }, - { - "begin": 9970, - "end": 10123, - "name": "JUMPDEST" - }, - { - "begin": 9970, - "end": 10123, - "name": "PUSH", - "value": "0" - }, - { - "begin": 10075, - "end": 10081, - "name": "DUP3" - }, - { - "begin": 10070, - "end": 10073, - "name": "DUP3" - }, - { - "begin": 10063, - "end": 10082, - "name": "MSTORE" - }, - { - "begin": 10112, - "end": 10116, - "name": "PUSH", - "value": "20" - }, - { - "begin": 10107, - "end": 10110, - "name": "DUP3" - }, - { - "begin": 10103, - "end": 10117, - "name": "ADD" - }, - { - "begin": 10088, - "end": 10117, - "name": "SWAP1" - }, - { - "begin": 10088, - "end": 10117, - "name": "POP" - }, - { - "begin": 10056, - "end": 10123, - "name": "SWAP3" - }, - { - "begin": 10056, - "end": 10123, - "name": "SWAP2" - }, - { - "begin": 10056, - "end": 10123, - "name": "POP" - }, - { - "begin": 10056, - "end": 10123, - "name": "POP" - }, - { - "begin": 10056, - "end": 10123, - "name": "JUMP" - }, - { - "begin": 10132, - "end": 10295, - "name": "tag", - "value": "148" - }, - { - "begin": 10132, - "end": 10295, - "name": "JUMPDEST" - }, - { - "begin": 10132, - "end": 10295, - "name": "PUSH", - "value": "0" - }, - { - "begin": 10247, - "end": 10253, - "name": "DUP3" - }, - { - "begin": 10242, - "end": 10245, - "name": "DUP3" - }, - { - "begin": 10235, - "end": 10254, - "name": "MSTORE" - }, - { - "begin": 10284, - "end": 10288, - "name": "PUSH", - "value": "20" - }, - { - "begin": 10279, - "end": 10282, - "name": "DUP3" - }, - { - "begin": 10275, - "end": 10289, - "name": "ADD" - }, - { - "begin": 10260, - "end": 10289, - "name": "SWAP1" - }, - { - "begin": 10260, - "end": 10289, - "name": "POP" - }, - { - "begin": 10228, - "end": 10295, - "name": "SWAP3" - }, - { - "begin": 10228, - "end": 10295, - "name": "SWAP2" - }, - { - "begin": 10228, - "end": 10295, - "name": "POP" - }, - { - "begin": 10228, - "end": 10295, - "name": "POP" - }, - { - "begin": 10228, - "end": 10295, - "name": "JUMP" - }, - { - "begin": 10303, - "end": 10408, - "name": "tag", - "value": "114" - }, - { - "begin": 10303, - "end": 10408, - "name": "JUMPDEST" - }, - { - "begin": 10303, - "end": 10408, - "name": "PUSH", - "value": "0" - }, - { - "begin": 10372, - "end": 10403, - "name": "PUSH [tag]", - "value": "199" - }, - { - "begin": 10397, - "end": 10402, - "name": "DUP3" - }, - { - "begin": 10372, - "end": 10403, - "name": "PUSH [tag]", - "value": "200" - }, - { - "begin": 10372, - "end": 10403, - "name": "JUMP" - }, - { - "begin": 10372, - "end": 10403, - "name": "tag", - "value": "199" - }, - { - "begin": 10372, - "end": 10403, - "name": "JUMPDEST" - }, - { - "begin": 10361, - "end": 10403, - "name": "SWAP1" - }, - { - "begin": 10361, - "end": 10403, - "name": "POP" - }, - { - "begin": 10355, - "end": 10408, - "name": "SWAP2" - }, - { - "begin": 10355, - "end": 10408, - "name": "SWAP1" - }, - { - "begin": 10355, - "end": 10408, - "name": "POP" - }, - { - "begin": 10355, - "end": 10408, - "name": "JUMP" - }, - { - "begin": 10415, - "end": 10494, - "name": "tag", - "value": "132" - }, - { - "begin": 10415, - "end": 10494, - "name": "JUMPDEST" - }, - { - "begin": 10415, - "end": 10494, - "name": "PUSH", - "value": "0" - }, - { - "begin": 10484, - "end": 10489, - "name": "DUP2" - }, - { - "begin": 10473, - "end": 10489, - "name": "SWAP1" - }, - { - "begin": 10473, - "end": 10489, - "name": "POP" - }, - { - "begin": 10467, - "end": 10494, - "name": "SWAP2" - }, - { - "begin": 10467, - "end": 10494, - "name": "SWAP1" - }, - { - "begin": 10467, - "end": 10494, - "name": "POP" - }, - { - "begin": 10467, - "end": 10494, - "name": "JUMP" - }, - { - "begin": 10501, - "end": 10629, - "name": "tag", - "value": "200" - }, - { - "begin": 10501, - "end": 10629, - "name": "JUMPDEST" - }, - { - "begin": 10501, - "end": 10629, - "name": "PUSH", - "value": "0" - }, - { - "begin": 10581, - "end": 10623, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 10574, - "end": 10579, - "name": "DUP3" - }, - { - "begin": 10570, - "end": 10624, - "name": "AND" - }, - { - "begin": 10559, - "end": 10624, - "name": "SWAP1" - }, - { - "begin": 10559, - "end": 10624, - "name": "POP" - }, - { - "begin": 10553, - "end": 10629, - "name": "SWAP2" - }, - { - "begin": 10553, - "end": 10629, - "name": "SWAP1" - }, - { - "begin": 10553, - "end": 10629, - "name": "POP" - }, - { - "begin": 10553, - "end": 10629, - "name": "JUMP" - }, - { - "begin": 10636, - "end": 10715, - "name": "tag", - "value": "173" - }, - { - "begin": 10636, - "end": 10715, - "name": "JUMPDEST" - }, - { - "begin": 10636, - "end": 10715, - "name": "PUSH", - "value": "0" - }, - { - "begin": 10705, - "end": 10710, - "name": "DUP2" - }, - { - "begin": 10694, - "end": 10710, - "name": "SWAP1" - }, - { - "begin": 10694, - "end": 10710, - "name": "POP" - }, - { - "begin": 10688, - "end": 10715, - "name": "SWAP2" - }, - { - "begin": 10688, - "end": 10715, - "name": "SWAP1" - }, - { - "begin": 10688, - "end": 10715, - "name": "POP" - }, - { - "begin": 10688, - "end": 10715, - "name": "JUMP" - }, - { - "begin": 10722, - "end": 10801, - "name": "tag", - "value": "92" - }, - { - "begin": 10722, - "end": 10801, - "name": "JUMPDEST" - }, - { - "begin": 10722, - "end": 10801, - "name": "PUSH", - "value": "0" - }, - { - "begin": 10791, - "end": 10796, - "name": "DUP2" - }, - { - "begin": 10780, - "end": 10796, - "name": "SWAP1" - }, - { - "begin": 10780, - "end": 10796, - "name": "POP" - }, - { - "begin": 10774, - "end": 10801, - "name": "SWAP2" - }, - { - "begin": 10774, - "end": 10801, - "name": "SWAP1" - }, - { - "begin": 10774, - "end": 10801, - "name": "POP" - }, - { - "begin": 10774, - "end": 10801, - "name": "JUMP" - }, - { - "begin": 10808, - "end": 10937, - "name": "tag", - "value": "110" - }, - { - "begin": 10808, - "end": 10937, - "name": "JUMPDEST" - }, - { - "begin": 10808, - "end": 10937, - "name": "PUSH", - "value": "0" - }, - { - "begin": 10895, - "end": 10932, - "name": "PUSH [tag]", - "value": "206" - }, - { - "begin": 10926, - "end": 10931, - "name": "DUP3" - }, - { - "begin": 10895, - "end": 10932, - "name": "PUSH [tag]", - "value": "207" - }, - { - "begin": 10895, - "end": 10932, - "name": "JUMP" - }, - { - "begin": 10895, - "end": 10932, - "name": "tag", - "value": "206" - }, - { - "begin": 10895, - "end": 10932, - "name": "JUMPDEST" - }, - { - "begin": 10882, - "end": 10932, - "name": "SWAP1" - }, - { - "begin": 10882, - "end": 10932, - "name": "POP" - }, - { - "begin": 10876, - "end": 10937, - "name": "SWAP2" - }, - { - "begin": 10876, - "end": 10937, - "name": "SWAP1" - }, - { - "begin": 10876, - "end": 10937, - "name": "POP" - }, - { - "begin": 10876, - "end": 10937, - "name": "JUMP" - }, - { - "begin": 10944, - "end": 11065, - "name": "tag", - "value": "207" - }, - { - "begin": 10944, - "end": 11065, - "name": "JUMPDEST" - }, - { - "begin": 10944, - "end": 11065, - "name": "PUSH", - "value": "0" - }, - { - "begin": 11023, - "end": 11060, - "name": "PUSH [tag]", - "value": "209" - }, - { - "begin": 11054, - "end": 11059, - "name": "DUP3" - }, - { - "begin": 11023, - "end": 11060, - "name": "PUSH [tag]", - "value": "210" - }, - { - "begin": 11023, - "end": 11060, - "name": "JUMP" - }, - { - "begin": 11023, - "end": 11060, - "name": "tag", - "value": "209" - }, - { - "begin": 11023, - "end": 11060, - "name": "JUMPDEST" - }, - { - "begin": 11010, - "end": 11060, - "name": "SWAP1" - }, - { - "begin": 11010, - "end": 11060, - "name": "POP" - }, - { - "begin": 11004, - "end": 11065, - "name": "SWAP2" - }, - { - "begin": 11004, - "end": 11065, - "name": "SWAP1" - }, - { - "begin": 11004, - "end": 11065, - "name": "POP" - }, - { - "begin": 11004, - "end": 11065, - "name": "JUMP" - }, - { - "begin": 11072, - "end": 11187, - "name": "tag", - "value": "210" - }, - { - "begin": 11072, - "end": 11187, - "name": "JUMPDEST" - }, - { - "begin": 11072, - "end": 11187, - "name": "PUSH", - "value": "0" - }, - { - "begin": 11151, - "end": 11182, - "name": "PUSH [tag]", - "value": "212" - }, - { - "begin": 11176, - "end": 11181, - "name": "DUP3" - }, - { - "begin": 11151, - "end": 11182, - "name": "PUSH [tag]", - "value": "200" - }, - { - "begin": 11151, - "end": 11182, - "name": "JUMP" - }, - { - "begin": 11151, - "end": 11182, - "name": "tag", - "value": "212" - }, - { - "begin": 11151, - "end": 11182, - "name": "JUMPDEST" - }, - { - "begin": 11138, - "end": 11182, - "name": "SWAP1" - }, - { - "begin": 11138, - "end": 11182, - "name": "POP" - }, - { - "begin": 11132, - "end": 11187, - "name": "SWAP2" - }, - { - "begin": 11132, - "end": 11187, - "name": "SWAP1" - }, - { - "begin": 11132, - "end": 11187, - "name": "POP" - }, - { - "begin": 11132, - "end": 11187, - "name": "JUMP" - }, - { - "begin": 11195, - "end": 11340, - "name": "tag", - "value": "80" - }, - { - "begin": 11195, - "end": 11340, - "name": "JUMPDEST" - }, - { - "begin": 11276, - "end": 11282, - "name": "DUP3" - }, - { - "begin": 11271, - "end": 11274, - "name": "DUP2" - }, - { - "begin": 11266, - "end": 11269, - "name": "DUP4" - }, - { - "begin": 11253, - "end": 11283, - "name": "CALLDATACOPY" - }, - { - "begin": 11332, - "end": 11333, - "name": "PUSH", - "value": "0" - }, - { - "begin": 11323, - "end": 11329, - "name": "DUP4" - }, - { - "begin": 11318, - "end": 11321, - "name": "DUP4" - }, - { - "begin": 11314, - "end": 11330, - "name": "ADD" - }, - { - "begin": 11307, - "end": 11334, - "name": "MSTORE" - }, - { - "begin": 11246, - "end": 11340, - "name": "POP" - }, - { - "begin": 11246, - "end": 11340, - "name": "POP" - }, - { - "begin": 11246, - "end": 11340, - "name": "POP" - }, - { - "begin": 11246, - "end": 11340, - "name": "JUMP" - }, - { - "begin": 11349, - "end": 11617, - "name": "tag", - "value": "140" - }, - { - "begin": 11349, - "end": 11617, - "name": "JUMPDEST" - }, - { - "begin": 11414, - "end": 11415, - "name": "PUSH", - "value": "0" - }, - { - "begin": 11421, - "end": 11522, - "name": "tag", - "value": "215" - }, - { - "begin": 11421, - "end": 11522, - "name": "JUMPDEST" - }, - { - "begin": 11435, - "end": 11441, - "name": "DUP4" - }, - { - "begin": 11432, - "end": 11433, - "name": "DUP2" - }, - { - "begin": 11429, - "end": 11442, - "name": "LT" - }, - { - "begin": 11421, - "end": 11522, - "name": "ISZERO" - }, - { - "begin": 11421, - "end": 11522, - "name": "PUSH [tag]", - "value": "216" - }, - { - "begin": 11421, - "end": 11522, - "name": "JUMPI" - }, - { - "begin": 11511, - "end": 11512, - "name": "DUP1" - }, - { - "begin": 11506, - "end": 11509, - "name": "DUP3" - }, - { - "begin": 11502, - "end": 11513, - "name": "ADD" - }, - { - "begin": 11496, - "end": 11514, - "name": "MLOAD" - }, - { - "begin": 11492, - "end": 11493, - "name": "DUP2" - }, - { - "begin": 11487, - "end": 11490, - "name": "DUP5" - }, - { - "begin": 11483, - "end": 11494, - "name": "ADD" - }, - { - "begin": 11476, - "end": 11515, - "name": "MSTORE" - }, - { - "begin": 11457, - "end": 11459, - "name": "PUSH", - "value": "20" - }, - { - "begin": 11454, - "end": 11455, - "name": "DUP2" - }, - { - "begin": 11450, - "end": 11460, - "name": "ADD" - }, - { - "begin": 11445, - "end": 11460, - "name": "SWAP1" - }, - { - "begin": 11445, - "end": 11460, - "name": "POP" - }, - { - "begin": 11421, - "end": 11522, - "name": "PUSH [tag]", - "value": "215" - }, - { - "begin": 11421, - "end": 11522, - "name": "JUMP" - }, - { - "begin": 11421, - "end": 11522, - "name": "tag", - "value": "216" - }, - { - "begin": 11421, - "end": 11522, - "name": "JUMPDEST" - }, - { - "begin": 11537, - "end": 11543, - "name": "DUP4" - }, - { - "begin": 11534, - "end": 11535, - "name": "DUP2" - }, - { - "begin": 11531, - "end": 11544, - "name": "GT" - }, - { - "begin": 11528, - "end": 11530, - "name": "ISZERO" - }, - { - "begin": 11528, - "end": 11530, - "name": "PUSH [tag]", - "value": "218" - }, - { - "begin": 11528, - "end": 11530, - "name": "JUMPI" - }, - { - "begin": 11602, - "end": 11603, - "name": "PUSH", - "value": "0" - }, - { - "begin": 11593, - "end": 11599, - "name": "DUP5" - }, - { - "begin": 11588, - "end": 11591, - "name": "DUP5" - }, - { - "begin": 11584, - "end": 11600, - "name": "ADD" - }, - { - "begin": 11577, - "end": 11604, - "name": "MSTORE" - }, - { - "begin": 11528, - "end": 11530, - "name": "tag", - "value": "218" - }, - { - "begin": 11528, - "end": 11530, - "name": "JUMPDEST" - }, - { - "begin": 11398, - "end": 11617, - "name": "POP" - }, - { - "begin": 11398, - "end": 11617, - "name": "POP" - }, - { - "begin": 11398, - "end": 11617, - "name": "POP" - }, - { - "begin": 11398, - "end": 11617, - "name": "POP" - }, - { - "begin": 11398, - "end": 11617, - "name": "JUMP" - }, - { - "begin": 11625, - "end": 11722, - "name": "tag", - "value": "142" - }, - { - "begin": 11625, - "end": 11722, - "name": "JUMPDEST" - }, - { - "begin": 11625, - "end": 11722, - "name": "PUSH", - "value": "0" - }, - { - "begin": 11713, - "end": 11715, - "name": "PUSH", - "value": "1F" - }, - { - "begin": 11709, - "end": 11716, - "name": "NOT" - }, - { - "begin": 11704, - "end": 11706, - "name": "PUSH", - "value": "1F" - }, - { - "begin": 11697, - "end": 11702, - "name": "DUP4" - }, - { - "begin": 11693, - "end": 11707, - "name": "ADD" - }, - { - "begin": 11689, - "end": 11717, - "name": "AND" - }, - { - "begin": 11679, - "end": 11717, - "name": "SWAP1" - }, - { - "begin": 11679, - "end": 11717, - "name": "POP" - }, - { - "begin": 11673, - "end": 11722, - "name": "SWAP2" - }, - { - "begin": 11673, - "end": 11722, - "name": "SWAP1" - }, - { - "begin": 11673, - "end": 11722, - "name": "POP" - }, - { - "begin": 11673, - "end": 11722, - "name": "JUMP" - } - ] - } - } - }, - "bytecode": "0x608060405234801561001057600080fd5b50610e40806100206000396000f3fe608060405234801561001057600080fd5b5060043610610053576000357c01000000000000000000000000000000000000000000000000000000009004806344e8fd0814610058578063ac45fcd914610074575b600080fd5b610072600480360361006d91908101906108b4565b6100a4565b005b61008e60048036036100899190810190610920565b610319565b60405161009b9190610b9c565b60405180910390f35b6100ac610651565b6080604051908101604052803373ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018481526020018381525090506000816040516020016100f99190610bfc565b604051602081830303815290604052805190602001209050816001600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002019080519060200190610192929190610690565b5060608201518160030190805190602001906101af929190610710565b50905050600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055506000829080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020190805190602001906102b7929190610690565b5060608201518160030190805190602001906102d4929190610710565b505050507f4cbc6aabdd0942d8df984ae683445cc9d498eff032ced24070239d9a65603bb384823360405161030b93929190610bbe565b60405180910390a150505050565b606060008080549050141561036b57600060405190808252806020026020018201604052801561036357816020015b610350610790565b8152602001906001900390816103485790505b50905061064b565b600060018403830290506000816001600080549050030390506001600080549050038111156103d95760006040519080825280602002602001820160405280156103cf57816020015b6103bc610790565b8152602001906001900390816103b45790505b509250505061064b565b60008482039050818111156103ed57600090505b6000600182840301905085811115610403578590505b8060405190808252806020026020018201604052801561043d57816020015b61042a610790565b8152602001906001900390816104225790505b50945060008090505b8181101561064557600081850381548110151561045f57fe5b9060005260206000209060040201608060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105725780601f1061054757610100808354040283529160200191610572565b820191906000526020600020905b81548152906001019060200180831161055557829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106145780601f106105e957610100808354040283529160200191610614565b820191906000526020600020905b8154815290600101906020018083116105f757829003601f168201915b505050505081525050868281518110151561062b57fe5b906020019060200201819052508080600101915050610446565b50505050505b92915050565b608060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106106d157805160ff19168380011785556106ff565b828001600101855582156106ff579182015b828111156106fe5782518255916020019190600101906106e3565b5b50905061070c91906107cf565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061075157805160ff191683800117855561077f565b8280016001018555821561077f579182015b8281111561077e578251825591602001919060010190610763565b5b50905061078c91906107cf565b5090565b608060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081525090565b6107f191905b808211156107ed5760008160009055506001016107d5565b5090565b90565b600082601f830112151561080757600080fd5b813561081a61081582610c4b565b610c1e565b9150808252602083016020830185838301111561083657600080fd5b610841838284610db3565b50505092915050565b600082601f830112151561085d57600080fd5b813561087061086b82610c77565b610c1e565b9150808252602083016020830185838301111561088c57600080fd5b610897838284610db3565b50505092915050565b60006108ac8235610d73565b905092915050565b600080604083850312156108c757600080fd5b600083013567ffffffffffffffff8111156108e157600080fd5b6108ed8582860161084a565b925050602083013567ffffffffffffffff81111561090a57600080fd5b610916858286016107f4565b9150509250929050565b6000806040838503121561093357600080fd5b6000610941858286016108a0565b9250506020610952858286016108a0565b9150509250929050565b60006109688383610b23565b905092915050565b61097981610d7d565b82525050565b61098881610d2d565b82525050565b600061099982610cb0565b6109a38185610ce9565b9350836020820285016109b585610ca3565b60005b848110156109ee5783830388526109d083835161095c565b92506109db82610cdc565b91506020880197506001810190506109b8565b508196508694505050505092915050565b610a0881610d3f565b82525050565b6000610a1982610cbb565b610a238185610cfa565b9350610a33818560208601610dc2565b610a3c81610df5565b840191505092915050565b6000610a5282610cd1565b610a5c8185610d1c565b9350610a6c818560208601610dc2565b610a7581610df5565b840191505092915050565b6000610a8b82610cc6565b610a958185610d0b565b9350610aa5818560208601610dc2565b610aae81610df5565b840191505092915050565b6000608083016000830151610ad1600086018261097f565b506020830151610ae46020860182610b8d565b5060408301518482036040860152610afc8282610a80565b91505060608301518482036060860152610b168282610a0e565b9150508091505092915050565b6000608083016000830151610b3b600086018261097f565b506020830151610b4e6020860182610b8d565b5060408301518482036040860152610b668282610a80565b91505060608301518482036060860152610b808282610a0e565b9150508091505092915050565b610b9681610d69565b82525050565b60006020820190508181036000830152610bb6818461098e565b905092915050565b60006060820190508181036000830152610bd88186610a47565b9050610be760208301856109ff565b610bf46040830184610970565b949350505050565b60006020820190508181036000830152610c168184610ab9565b905092915050565b6000604051905081810181811067ffffffffffffffff82111715610c4157600080fd5b8060405250919050565b600067ffffffffffffffff821115610c6257600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115610c8e57600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610d3882610d49565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000819050919050565b6000610d8882610d8f565b9050919050565b6000610d9a82610da1565b9050919050565b6000610dac82610d49565b9050919050565b82818337600083830152505050565b60005b83811015610de0578082015181840152602081019050610dc5565b83811115610def576000848401525b50505050565b6000601f19601f830116905091905056fea265627a7a72305820bc6fd206f999fbcfe9512092d362c4a7e7309d2bd608f91b9e3120086bea36646c6578706572696d656e74616cf50037", - "deps": null, - "fingerprint": "a265627a7a72305820bc6fd206f999fbcfe9512092d362c4a7e7309d2bd608f91b9e3120086bea36646c6578706572696d656e74616cf50037", - "name": "Registry", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE40 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x53 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP1 PUSH4 0x44E8FD08 EQ PUSH2 0x58 JUMPI DUP1 PUSH4 0xAC45FCD9 EQ PUSH2 0x74 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x72 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x6D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x8B4 JUMP JUMPDEST PUSH2 0xA4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x8E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x89 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x920 JUMP JUMPDEST PUSH2 0x319 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x9B SWAP2 SWAP1 PUSH2 0xB9C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xAC PUSH2 0x651 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0xBFC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 PUSH1 0x1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x192 SWAP3 SWAP2 SWAP1 PUSH2 0x690 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x1AF SWAP3 SWAP2 SWAP1 PUSH2 0x710 JUMP JUMPDEST POP SWAP1 POP POP PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP SWAP1 PUSH1 0x1 DUP3 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE POP PUSH1 0x0 DUP3 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP SWAP1 PUSH1 0x1 DUP3 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2B7 SWAP3 SWAP2 SWAP1 PUSH2 0x690 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2D4 SWAP3 SWAP2 SWAP1 PUSH2 0x710 JUMP JUMPDEST POP POP POP POP PUSH32 0x4CBC6AABDD0942D8DF984AE683445CC9D498EFF032CED24070239D9A65603BB3 DUP5 DUP3 CALLER PUSH1 0x40 MLOAD PUSH2 0x30B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xBBE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP1 SLOAD SWAP1 POP EQ ISZERO PUSH2 0x36B JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x363 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x350 PUSH2 0x790 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x348 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x64B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP5 SUB DUP4 MUL SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD SWAP1 POP SUB SUB SWAP1 POP PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD SWAP1 POP SUB DUP2 GT ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3CF JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x3BC PUSH2 0x790 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x3B4 JUMPI SWAP1 POP JUMPDEST POP SWAP3 POP POP POP PUSH2 0x64B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x3ED JUMPI PUSH1 0x0 SWAP1 POP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 DUP5 SUB ADD SWAP1 POP DUP6 DUP2 GT ISZERO PUSH2 0x403 JUMPI DUP6 SWAP1 POP JUMPDEST DUP1 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x43D JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x42A PUSH2 0x790 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x422 JUMPI SWAP1 POP JUMPDEST POP SWAP5 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x645 JUMPI PUSH1 0x0 DUP2 DUP6 SUB DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x45F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x80 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x572 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x547 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x572 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x555 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x614 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5E9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x614 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x5F7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE POP POP DUP7 DUP3 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x62B JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x446 JUMP JUMPDEST POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x6D1 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x6FF JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x6FF JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x6FE JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x6E3 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x70C SWAP2 SWAP1 PUSH2 0x7CF JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x751 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x77F JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x77F JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x77E JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x763 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x78C SWAP2 SWAP1 PUSH2 0x7CF JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x7F1 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x7ED JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x7D5 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO ISZERO PUSH2 0x807 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x81A PUSH2 0x815 DUP3 PUSH2 0xC4B JUMP JUMPDEST PUSH2 0xC1E JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x836 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x841 DUP4 DUP3 DUP5 PUSH2 0xDB3 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO ISZERO PUSH2 0x85D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x870 PUSH2 0x86B DUP3 PUSH2 0xC77 JUMP JUMPDEST PUSH2 0xC1E JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x88C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x897 DUP4 DUP3 DUP5 PUSH2 0xDB3 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8AC DUP3 CALLDATALOAD PUSH2 0xD73 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x8C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8ED DUP6 DUP3 DUP7 ADD PUSH2 0x84A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x90A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x916 DUP6 DUP3 DUP7 ADD PUSH2 0x7F4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x933 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x941 DUP6 DUP3 DUP7 ADD PUSH2 0x8A0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x952 DUP6 DUP3 DUP7 ADD PUSH2 0x8A0 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x968 DUP4 DUP4 PUSH2 0xB23 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x979 DUP2 PUSH2 0xD7D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x988 DUP2 PUSH2 0xD2D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x999 DUP3 PUSH2 0xCB0 JUMP JUMPDEST PUSH2 0x9A3 DUP2 DUP6 PUSH2 0xCE9 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x9B5 DUP6 PUSH2 0xCA3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x9EE JUMPI DUP4 DUP4 SUB DUP9 MSTORE PUSH2 0x9D0 DUP4 DUP4 MLOAD PUSH2 0x95C JUMP JUMPDEST SWAP3 POP PUSH2 0x9DB DUP3 PUSH2 0xCDC JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP9 ADD SWAP8 POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x9B8 JUMP JUMPDEST POP DUP2 SWAP7 POP DUP7 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA08 DUP2 PUSH2 0xD3F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA19 DUP3 PUSH2 0xCBB JUMP JUMPDEST PUSH2 0xA23 DUP2 DUP6 PUSH2 0xCFA JUMP JUMPDEST SWAP4 POP PUSH2 0xA33 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xDC2 JUMP JUMPDEST PUSH2 0xA3C DUP2 PUSH2 0xDF5 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA52 DUP3 PUSH2 0xCD1 JUMP JUMPDEST PUSH2 0xA5C DUP2 DUP6 PUSH2 0xD1C JUMP JUMPDEST SWAP4 POP PUSH2 0xA6C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xDC2 JUMP JUMPDEST PUSH2 0xA75 DUP2 PUSH2 0xDF5 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA8B DUP3 PUSH2 0xCC6 JUMP JUMPDEST PUSH2 0xA95 DUP2 DUP6 PUSH2 0xD0B JUMP JUMPDEST SWAP4 POP PUSH2 0xAA5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xDC2 JUMP JUMPDEST PUSH2 0xAAE DUP2 PUSH2 0xDF5 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD PUSH2 0xAD1 PUSH1 0x0 DUP7 ADD DUP3 PUSH2 0x97F JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0xAE4 PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0xB8D JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0xAFC DUP3 DUP3 PUSH2 0xA80 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x60 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0xB16 DUP3 DUP3 PUSH2 0xA0E JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD PUSH2 0xB3B PUSH1 0x0 DUP7 ADD DUP3 PUSH2 0x97F JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0xB4E PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0xB8D JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0xB66 DUP3 DUP3 PUSH2 0xA80 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x60 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0xB80 DUP3 DUP3 PUSH2 0xA0E JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xB96 DUP2 PUSH2 0xD69 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xBB6 DUP2 DUP5 PUSH2 0x98E JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xBD8 DUP2 DUP7 PUSH2 0xA47 JUMP JUMPDEST SWAP1 POP PUSH2 0xBE7 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x9FF JUMP JUMPDEST PUSH2 0xBF4 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x970 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xC16 DUP2 DUP5 PUSH2 0xAB9 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xC41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xC62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xC8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD38 DUP3 PUSH2 0xD49 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD88 DUP3 PUSH2 0xD8F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD9A DUP3 PUSH2 0xDA1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDAC DUP3 PUSH2 0xD49 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDE0 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xDC5 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xDEF JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH6 0x627A7A723058 KECCAK256 0xbc PUSH16 0xD206F999FBCFE9512092D362C4A7E730 SWAP14 0x2b 0xd6 ADDMOD 0xf9 SHL SWAP15 BALANCE KECCAK256 ADDMOD PUSH12 0xEA36646C6578706572696D65 PUSH15 0x74616CF50037000000000000000000 ", - "raw": "{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"_subject\",\"type\":\"string\"},{\"name\":\"_hash\",\"type\":\"bytes\"}],\"name\":\"publish\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_page\",\"type\":\"uint256\"},{\"name\":\"_rpp\",\"type\":\"uint256\"}],\"name\":\"listMessages\",\"outputs\":[{\"components\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"timestamp\",\"type\":\"uint256\"},{\"name\":\"subject\",\"type\":\"string\"},{\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"_msgs\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"subject\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"key\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"Published\",\"type\":\"event\"}],\"evm\":{\"assembly\":\" /* \\\"user-input\\\":58:1543 contract Registry {... */\\n mstore(0x40, 0x80)\\n callvalue\\n /* \\\"--CODEGEN--\\\":8:17 */\\n dup1\\n /* \\\"--CODEGEN--\\\":5:7 */\\n iszero\\n tag_1\\n jumpi\\n /* \\\"--CODEGEN--\\\":30:31 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":27:28 */\\n dup1\\n /* \\\"--CODEGEN--\\\":20:32 */\\n revert\\n /* \\\"--CODEGEN--\\\":5:7 */\\ntag_1:\\n /* \\\"user-input\\\":58:1543 contract Registry {... */\\n pop\\n dataSize(sub_0)\\n dup1\\n dataOffset(sub_0)\\n 0x00\\n codecopy\\n 0x00\\n return\\nstop\\n\\nsub_0: assembly {\\n /* \\\"user-input\\\":58:1543 contract Registry {... */\\n mstore(0x40, 0x80)\\n callvalue\\n /* \\\"--CODEGEN--\\\":8:17 */\\n dup1\\n /* \\\"--CODEGEN--\\\":5:7 */\\n iszero\\n tag_1\\n jumpi\\n /* \\\"--CODEGEN--\\\":30:31 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":27:28 */\\n dup1\\n /* \\\"--CODEGEN--\\\":20:32 */\\n revert\\n /* \\\"--CODEGEN--\\\":5:7 */\\n tag_1:\\n /* \\\"user-input\\\":58:1543 contract Registry {... */\\n pop\\n jumpi(tag_2, lt(calldatasize, 0x04))\\n calldataload(0x00)\\n 0x0100000000000000000000000000000000000000000000000000000000\\n swap1\\n div\\n dup1\\n 0x44e8fd08\\n eq\\n tag_3\\n jumpi\\n dup1\\n 0xac45fcd9\\n eq\\n tag_4\\n jumpi\\n tag_2:\\n 0x00\\n dup1\\n revert\\n /* \\\"user-input\\\":420:781 function publish(string memory _subject, bytes memory _hash) public {... */\\n tag_3:\\n tag_5\\n 0x04\\n dup1\\n calldatasize\\n sub\\n tag_6\\n swap2\\n swap1\\n dup2\\n add\\n swap1\\n jump(tag_7)\\n tag_6:\\n tag_8\\n jump\\t// in\\n tag_5:\\n stop\\n /* \\\"user-input\\\":787:1541 function listMessages(uint256 _page, uint256 _rpp) external view returns (message[] memory _msgs) {... */\\n tag_4:\\n tag_9\\n 0x04\\n dup1\\n calldatasize\\n sub\\n tag_10\\n swap2\\n swap1\\n dup2\\n add\\n swap1\\n jump(tag_11)\\n tag_10:\\n tag_12\\n jump\\t// in\\n tag_9:\\n mload(0x40)\\n tag_13\\n swap2\\n swap1\\n jump(tag_14)\\n tag_13:\\n mload(0x40)\\n dup1\\n swap2\\n sub\\n swap1\\n return\\n /* \\\"user-input\\\":420:781 function publish(string memory _subject, bytes memory _hash) public {... */\\n tag_8:\\n /* \\\"user-input\\\":498:517 message memory _msg */\\n tag_16\\n tag_17\\n jump\\t// in\\n tag_16:\\n /* \\\"user-input\\\":520:561 message(msg.sender, now, _subject, _hash) */\\n 0x80\\n mload(0x40)\\n swap1\\n dup2\\n add\\n 0x40\\n mstore\\n dup1\\n /* \\\"user-input\\\":528:538 msg.sender */\\n caller\\n /* \\\"user-input\\\":520:561 message(msg.sender, now, _subject, _hash) */\\n 0xffffffffffffffffffffffffffffffffffffffff\\n and\\n dup2\\n mstore\\n 0x20\\n add\\n /* \\\"user-input\\\":540:543 now */\\n timestamp\\n /* \\\"user-input\\\":520:561 message(msg.sender, now, _subject, _hash) */\\n dup2\\n mstore\\n 0x20\\n add\\n /* \\\"user-input\\\":545:553 _subject */\\n dup5\\n /* \\\"user-input\\\":520:561 message(msg.sender, now, _subject, _hash) */\\n dup2\\n mstore\\n 0x20\\n add\\n /* \\\"user-input\\\":555:560 _hash */\\n dup4\\n /* \\\"user-input\\\":520:561 message(msg.sender, now, _subject, _hash) */\\n dup2\\n mstore\\n pop\\n /* \\\"user-input\\\":498:561 message memory _msg = message(msg.sender, now, _subject, _hash) */\\n swap1\\n pop\\n /* \\\"user-input\\\":571:582 bytes32 key */\\n 0x00\\n /* \\\"user-input\\\":606:610 _msg */\\n dup2\\n /* \\\"user-input\\\":595:611 abi.encode(_msg) */\\n add(0x20, mload(0x40))\\n tag_18\\n swap2\\n swap1\\n jump(tag_19)\\n tag_18:\\n mload(0x40)\\n /* \\\"--CODEGEN--\\\":49:53 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":39:46 */\\n dup2\\n /* \\\"--CODEGEN--\\\":30:37 */\\n dup4\\n /* \\\"--CODEGEN--\\\":26:47 */\\n sub\\n /* \\\"--CODEGEN--\\\":22:54 */\\n sub\\n /* \\\"--CODEGEN--\\\":13:20 */\\n dup2\\n /* \\\"--CODEGEN--\\\":6:55 */\\n mstore\\n /* \\\"user-input\\\":595:611 abi.encode(_msg) */\\n swap1\\n 0x40\\n mstore\\n /* \\\"user-input\\\":585:612 keccak256(abi.encode(_msg)) */\\n dup1\\n mload\\n swap1\\n 0x20\\n add\\n keccak256\\n /* \\\"user-input\\\":571:612 bytes32 key = keccak256(abi.encode(_msg)) */\\n swap1\\n pop\\n /* \\\"user-input\\\":644:648 _msg */\\n dup2\\n /* \\\"user-input\\\":622:636 hashedMessages */\\n 0x01\\n /* \\\"user-input\\\":622:641 hashedMessages[key] */\\n 0x00\\n /* \\\"user-input\\\":637:640 key */\\n dup4\\n /* \\\"user-input\\\":622:641 hashedMessages[key] */\\n dup2\\n mstore\\n 0x20\\n add\\n swap1\\n dup2\\n mstore\\n 0x20\\n add\\n 0x00\\n keccak256\\n /* \\\"user-input\\\":622:648 hashedMessages[key] = _msg */\\n 0x00\\n dup3\\n add\\n mload\\n dup2\\n 0x00\\n add\\n exp(0x0100, 0x00)\\n dup2\\n sload\\n dup2\\n 0xffffffffffffffffffffffffffffffffffffffff\\n mul\\n not\\n and\\n swap1\\n dup4\\n 0xffffffffffffffffffffffffffffffffffffffff\\n and\\n mul\\n or\\n swap1\\n sstore\\n pop\\n 0x20\\n dup3\\n add\\n mload\\n dup2\\n 0x01\\n add\\n sstore\\n 0x40\\n dup3\\n add\\n mload\\n dup2\\n 0x02\\n add\\n swap1\\n dup1\\n mload\\n swap1\\n 0x20\\n add\\n swap1\\n tag_20\\n swap3\\n swap2\\n swap1\\n tag_21\\n jump\\t// in\\n tag_20:\\n pop\\n 0x60\\n dup3\\n add\\n mload\\n dup2\\n 0x03\\n add\\n swap1\\n dup1\\n mload\\n swap1\\n 0x20\\n add\\n swap1\\n tag_22\\n swap3\\n swap2\\n swap1\\n tag_23\\n jump\\t// in\\n tag_22:\\n pop\\n swap1\\n pop\\n pop\\n /* \\\"user-input\\\":658:672 senderMessages */\\n 0x02\\n /* \\\"user-input\\\":658:684 senderMessages[msg.sender] */\\n 0x00\\n /* \\\"user-input\\\":673:683 msg.sender */\\n caller\\n /* \\\"user-input\\\":658:684 senderMessages[msg.sender] */\\n 0xffffffffffffffffffffffffffffffffffffffff\\n and\\n 0xffffffffffffffffffffffffffffffffffffffff\\n and\\n dup2\\n mstore\\n 0x20\\n add\\n swap1\\n dup2\\n mstore\\n 0x20\\n add\\n 0x00\\n keccak256\\n /* \\\"user-input\\\":690:693 key */\\n dup2\\n /* \\\"user-input\\\":658:694 senderMessages[msg.sender].push(key) */\\n swap1\\n dup1\\n /* \\\"--CODEGEN--\\\":39:40 */\\n 0x01\\n /* \\\"--CODEGEN--\\\":33:36 */\\n dup2\\n /* \\\"--CODEGEN--\\\":27:37 */\\n sload\\n /* \\\"--CODEGEN--\\\":23:41 */\\n add\\n /* \\\"--CODEGEN--\\\":57:67 */\\n dup1\\n /* \\\"--CODEGEN--\\\":52:55 */\\n dup3\\n /* \\\"--CODEGEN--\\\":45:68 */\\n sstore\\n /* \\\"--CODEGEN--\\\":79:89 */\\n dup1\\n /* \\\"--CODEGEN--\\\":72:89 */\\n swap2\\n pop\\n /* \\\"--CODEGEN--\\\":0:93 */\\n pop\\n /* \\\"user-input\\\":658:694 senderMessages[msg.sender].push(key) */\\n swap1\\n 0x01\\n dup3\\n sub\\n swap1\\n 0x00\\n mstore\\n keccak256(0x00, 0x20)\\n add\\n 0x00\\n swap1\\n swap2\\n swap3\\n swap1\\n swap2\\n swap1\\n swap2\\n pop\\n sstore\\n pop\\n /* \\\"user-input\\\":704:712 messages */\\n 0x00\\n /* \\\"user-input\\\":718:722 _msg */\\n dup3\\n /* \\\"user-input\\\":704:723 messages.push(_msg) */\\n swap1\\n dup1\\n /* \\\"--CODEGEN--\\\":39:40 */\\n 0x01\\n /* \\\"--CODEGEN--\\\":33:36 */\\n dup2\\n /* \\\"--CODEGEN--\\\":27:37 */\\n sload\\n /* \\\"--CODEGEN--\\\":23:41 */\\n add\\n /* \\\"--CODEGEN--\\\":57:67 */\\n dup1\\n /* \\\"--CODEGEN--\\\":52:55 */\\n dup3\\n /* \\\"--CODEGEN--\\\":45:68 */\\n sstore\\n /* \\\"--CODEGEN--\\\":79:89 */\\n dup1\\n /* \\\"--CODEGEN--\\\":72:89 */\\n swap2\\n pop\\n /* \\\"--CODEGEN--\\\":0:93 */\\n pop\\n /* \\\"user-input\\\":704:723 messages.push(_msg) */\\n swap1\\n 0x01\\n dup3\\n sub\\n swap1\\n 0x00\\n mstore\\n keccak256(0x00, 0x20)\\n swap1\\n 0x04\\n mul\\n add\\n 0x00\\n swap1\\n swap2\\n swap3\\n swap1\\n swap2\\n swap1\\n swap2\\n pop\\n 0x00\\n dup3\\n add\\n mload\\n dup2\\n 0x00\\n add\\n exp(0x0100, 0x00)\\n dup2\\n sload\\n dup2\\n 0xffffffffffffffffffffffffffffffffffffffff\\n mul\\n not\\n and\\n swap1\\n dup4\\n 0xffffffffffffffffffffffffffffffffffffffff\\n and\\n mul\\n or\\n swap1\\n sstore\\n pop\\n 0x20\\n dup3\\n add\\n mload\\n dup2\\n 0x01\\n add\\n sstore\\n 0x40\\n dup3\\n add\\n mload\\n dup2\\n 0x02\\n add\\n swap1\\n dup1\\n mload\\n swap1\\n 0x20\\n add\\n swap1\\n tag_26\\n swap3\\n swap2\\n swap1\\n tag_21\\n jump\\t// in\\n tag_26:\\n pop\\n 0x60\\n dup3\\n add\\n mload\\n dup2\\n 0x03\\n add\\n swap1\\n dup1\\n mload\\n swap1\\n 0x20\\n add\\n swap1\\n tag_27\\n swap3\\n swap2\\n swap1\\n tag_23\\n jump\\t// in\\n tag_27:\\n pop\\n pop\\n pop\\n pop\\n /* \\\"user-input\\\":738:774 Published(_subject, key, msg.sender) */\\n 0x4cbc6aabdd0942d8df984ae683445cc9d498eff032ced24070239d9a65603bb3\\n /* \\\"user-input\\\":748:756 _subject */\\n dup5\\n /* \\\"user-input\\\":758:761 key */\\n dup3\\n /* \\\"user-input\\\":763:773 msg.sender */\\n caller\\n /* \\\"user-input\\\":738:774 Published(_subject, key, msg.sender) */\\n mload(0x40)\\n tag_28\\n swap4\\n swap3\\n swap2\\n swap1\\n jump(tag_29)\\n tag_28:\\n mload(0x40)\\n dup1\\n swap2\\n sub\\n swap1\\n log1\\n /* \\\"user-input\\\":420:781 function publish(string memory _subject, bytes memory _hash) public {... */\\n pop\\n pop\\n pop\\n pop\\n jump\\t// out\\n /* \\\"user-input\\\":787:1541 function listMessages(uint256 _page, uint256 _rpp) external view returns (message[] memory _msgs) {... */\\n tag_12:\\n /* \\\"user-input\\\":861:883 message[] memory _msgs */\\n 0x60\\n /* \\\"user-input\\\":918:919 0 */\\n 0x00\\n /* \\\"user-input\\\":899:907 messages */\\n dup1\\n /* \\\"user-input\\\":899:914 messages.length */\\n dup1\\n sload\\n swap1\\n pop\\n /* \\\"user-input\\\":899:919 messages.length == 0 */\\n eq\\n /* \\\"user-input\\\":895:969 if (messages.length == 0) {... */\\n iszero\\n tag_31\\n jumpi\\n /* \\\"user-input\\\":956:957 0 */\\n 0x00\\n /* \\\"user-input\\\":942:958 new message[](0) */\\n mload(0x40)\\n swap1\\n dup1\\n dup3\\n mstore\\n dup1\\n 0x20\\n mul\\n 0x20\\n add\\n dup3\\n add\\n 0x40\\n mstore\\n dup1\\n iszero\\n tag_32\\n jumpi\\n dup2\\n 0x20\\n add\\n tag_33:\\n tag_34\\n tag_35\\n jump\\t// in\\n tag_34:\\n dup2\\n mstore\\n 0x20\\n add\\n swap1\\n 0x01\\n swap1\\n sub\\n swap1\\n dup2\\n tag_33\\n jumpi\\n swap1\\n pop\\n tag_32:\\n pop\\n /* \\\"user-input\\\":935:958 return new message[](0) */\\n swap1\\n pop\\n jump(tag_30)\\n /* \\\"user-input\\\":895:969 if (messages.length == 0) {... */\\n tag_31:\\n /* \\\"user-input\\\":979:994 uint256 _offset */\\n 0x00\\n /* \\\"user-input\\\":1013:1014 1 */\\n 0x01\\n /* \\\"user-input\\\":1005:1010 _page */\\n dup5\\n /* \\\"user-input\\\":1005:1014 _page - 1 */\\n sub\\n /* \\\"user-input\\\":997:1001 _rpp */\\n dup4\\n /* \\\"user-input\\\":997:1015 _rpp * (_page - 1) */\\n mul\\n /* \\\"user-input\\\":979:1015 uint256 _offset = _rpp * (_page - 1) */\\n swap1\\n pop\\n /* \\\"user-input\\\":1025:1039 uint256 _index */\\n 0x00\\n /* \\\"user-input\\\":1064:1071 _offset */\\n dup2\\n /* \\\"user-input\\\":1060:1061 1 */\\n 0x01\\n /* \\\"user-input\\\":1042:1050 messages */\\n 0x00\\n /* \\\"user-input\\\":1042:1057 messages.length */\\n dup1\\n sload\\n swap1\\n pop\\n /* \\\"user-input\\\":1042:1061 messages.length - 1 */\\n sub\\n /* \\\"user-input\\\":1042:1071 messages.length - 1 - _offset */\\n sub\\n /* \\\"user-input\\\":1025:1071 uint256 _index = messages.length - 1 - _offset */\\n swap1\\n pop\\n /* \\\"user-input\\\":1112:1113 1 */\\n 0x01\\n /* \\\"user-input\\\":1094:1102 messages */\\n 0x00\\n /* \\\"user-input\\\":1094:1109 messages.length */\\n dup1\\n sload\\n swap1\\n pop\\n /* \\\"user-input\\\":1094:1113 messages.length - 1 */\\n sub\\n /* \\\"user-input\\\":1085:1091 _index */\\n dup2\\n /* \\\"user-input\\\":1085:1113 _index > messages.length - 1 */\\n gt\\n /* \\\"user-input\\\":1081:1163 if (_index > messages.length - 1) {... */\\n iszero\\n tag_36\\n jumpi\\n /* \\\"user-input\\\":1150:1151 0 */\\n 0x00\\n /* \\\"user-input\\\":1136:1152 new message[](0) */\\n mload(0x40)\\n swap1\\n dup1\\n dup3\\n mstore\\n dup1\\n 0x20\\n mul\\n 0x20\\n add\\n dup3\\n add\\n 0x40\\n mstore\\n dup1\\n iszero\\n tag_37\\n jumpi\\n dup2\\n 0x20\\n add\\n tag_38:\\n tag_39\\n tag_35\\n jump\\t// in\\n tag_39:\\n dup2\\n mstore\\n 0x20\\n add\\n swap1\\n 0x01\\n swap1\\n sub\\n swap1\\n dup2\\n tag_38\\n jumpi\\n swap1\\n pop\\n tag_37:\\n pop\\n /* \\\"user-input\\\":1129:1152 return new message[](0) */\\n swap3\\n pop\\n pop\\n pop\\n jump(tag_30)\\n /* \\\"user-input\\\":1081:1163 if (_index > messages.length - 1) {... */\\n tag_36:\\n /* \\\"user-input\\\":1173:1191 uint256 _lastIndex */\\n 0x00\\n /* \\\"user-input\\\":1203:1207 _rpp */\\n dup5\\n /* \\\"user-input\\\":1194:1200 _index */\\n dup3\\n /* \\\"user-input\\\":1194:1207 _index - _rpp */\\n sub\\n /* \\\"user-input\\\":1173:1207 uint256 _lastIndex = _index - _rpp */\\n swap1\\n pop\\n /* \\\"user-input\\\":1234:1240 _index */\\n dup2\\n /* \\\"user-input\\\":1221:1231 _lastIndex */\\n dup2\\n /* \\\"user-input\\\":1221:1240 _lastIndex > _index */\\n gt\\n /* \\\"user-input\\\":1217:1281 if (_lastIndex > _index) {... */\\n iszero\\n tag_40\\n jumpi\\n /* \\\"user-input\\\":1269:1270 0 */\\n 0x00\\n /* \\\"user-input\\\":1256:1270 _lastIndex = 0 */\\n swap1\\n pop\\n /* \\\"user-input\\\":1217:1281 if (_lastIndex > _index) {... */\\n tag_40:\\n /* \\\"user-input\\\":1291:1303 uint256 _len */\\n 0x00\\n /* \\\"user-input\\\":1328:1329 1 */\\n 0x01\\n /* \\\"user-input\\\":1315:1325 _lastIndex */\\n dup3\\n /* \\\"user-input\\\":1306:1312 _index */\\n dup5\\n /* \\\"user-input\\\":1306:1325 _index - _lastIndex */\\n sub\\n /* \\\"user-input\\\":1306:1329 _index - _lastIndex + 1 */\\n add\\n /* \\\"user-input\\\":1291:1329 uint256 _len = _index - _lastIndex + 1 */\\n swap1\\n pop\\n /* \\\"user-input\\\":1350:1354 _rpp */\\n dup6\\n /* \\\"user-input\\\":1343:1347 _len */\\n dup2\\n /* \\\"user-input\\\":1343:1354 _len > _rpp */\\n gt\\n /* \\\"user-input\\\":1339:1392 if (_len > _rpp) {... */\\n iszero\\n tag_41\\n jumpi\\n /* \\\"user-input\\\":1377:1381 _rpp */\\n dup6\\n /* \\\"user-input\\\":1370:1381 _len = _rpp */\\n swap1\\n pop\\n /* \\\"user-input\\\":1339:1392 if (_len > _rpp) {... */\\n tag_41:\\n /* \\\"user-input\\\":1424:1428 _len */\\n dup1\\n /* \\\"user-input\\\":1410:1429 new message[](_len) */\\n mload(0x40)\\n swap1\\n dup1\\n dup3\\n mstore\\n dup1\\n 0x20\\n mul\\n 0x20\\n add\\n dup3\\n add\\n 0x40\\n mstore\\n dup1\\n iszero\\n tag_42\\n jumpi\\n dup2\\n 0x20\\n add\\n tag_43:\\n tag_44\\n tag_35\\n jump\\t// in\\n tag_44:\\n dup2\\n mstore\\n 0x20\\n add\\n swap1\\n 0x01\\n swap1\\n sub\\n swap1\\n dup2\\n tag_43\\n jumpi\\n swap1\\n pop\\n tag_42:\\n pop\\n /* \\\"user-input\\\":1402:1429 _msgs = new message[](_len) */\\n swap5\\n pop\\n /* \\\"user-input\\\":1444:1454 uint256 _i */\\n 0x00\\n /* \\\"user-input\\\":1457:1458 0 */\\n dup1\\n /* \\\"user-input\\\":1444:1458 uint256 _i = 0 */\\n swap1\\n pop\\n /* \\\"user-input\\\":1439:1535 for (uint256 _i = 0; _i < _len; _i++) {... */\\n tag_45:\\n /* \\\"user-input\\\":1465:1469 _len */\\n dup2\\n /* \\\"user-input\\\":1460:1462 _i */\\n dup2\\n /* \\\"user-input\\\":1460:1469 _i < _len */\\n lt\\n /* \\\"user-input\\\":1439:1535 for (uint256 _i = 0; _i < _len; _i++) {... */\\n iszero\\n tag_46\\n jumpi\\n /* \\\"user-input\\\":1503:1511 messages */\\n 0x00\\n /* \\\"user-input\\\":1521:1523 _i */\\n dup2\\n /* \\\"user-input\\\":1512:1518 _index */\\n dup6\\n /* \\\"user-input\\\":1512:1523 _index - _i */\\n sub\\n /* \\\"user-input\\\":1503:1524 messages[_index - _i] */\\n dup2\\n sload\\n dup2\\n lt\\n iszero\\n iszero\\n tag_48\\n jumpi\\n invalid\\n tag_48:\\n swap1\\n 0x00\\n mstore\\n keccak256(0x00, 0x20)\\n swap1\\n 0x04\\n mul\\n add\\n /* \\\"user-input\\\":1491:1524 _msgs[_i] = messages[_index - _i] */\\n 0x80\\n mload(0x40)\\n swap1\\n dup2\\n add\\n 0x40\\n mstore\\n swap1\\n dup2\\n 0x00\\n dup3\\n add\\n 0x00\\n swap1\\n sload\\n swap1\\n 0x0100\\n exp\\n swap1\\n div\\n 0xffffffffffffffffffffffffffffffffffffffff\\n and\\n 0xffffffffffffffffffffffffffffffffffffffff\\n and\\n 0xffffffffffffffffffffffffffffffffffffffff\\n and\\n dup2\\n mstore\\n 0x20\\n add\\n 0x01\\n dup3\\n add\\n sload\\n dup2\\n mstore\\n 0x20\\n add\\n 0x02\\n dup3\\n add\\n dup1\\n sload\\n 0x01\\n dup2\\n 0x01\\n and\\n iszero\\n 0x0100\\n mul\\n sub\\n and\\n 0x02\\n swap1\\n div\\n dup1\\n 0x1f\\n add\\n 0x20\\n dup1\\n swap2\\n div\\n mul\\n 0x20\\n add\\n mload(0x40)\\n swap1\\n dup2\\n add\\n 0x40\\n mstore\\n dup1\\n swap3\\n swap2\\n swap1\\n dup2\\n dup2\\n mstore\\n 0x20\\n add\\n dup3\\n dup1\\n sload\\n 0x01\\n dup2\\n 0x01\\n and\\n iszero\\n 0x0100\\n mul\\n sub\\n and\\n 0x02\\n swap1\\n div\\n dup1\\n iszero\\n tag_50\\n jumpi\\n dup1\\n 0x1f\\n lt\\n tag_51\\n jumpi\\n 0x0100\\n dup1\\n dup4\\n sload\\n div\\n mul\\n dup4\\n mstore\\n swap2\\n 0x20\\n add\\n swap2\\n jump(tag_50)\\n tag_51:\\n dup3\\n add\\n swap2\\n swap1\\n 0x00\\n mstore\\n keccak256(0x00, 0x20)\\n swap1\\n tag_52:\\n dup2\\n sload\\n dup2\\n mstore\\n swap1\\n 0x01\\n add\\n swap1\\n 0x20\\n add\\n dup1\\n dup4\\n gt\\n tag_52\\n jumpi\\n dup3\\n swap1\\n sub\\n 0x1f\\n and\\n dup3\\n add\\n swap2\\n tag_50:\\n pop\\n pop\\n pop\\n pop\\n pop\\n dup2\\n mstore\\n 0x20\\n add\\n 0x03\\n dup3\\n add\\n dup1\\n sload\\n 0x01\\n dup2\\n 0x01\\n and\\n iszero\\n 0x0100\\n mul\\n sub\\n and\\n 0x02\\n swap1\\n div\\n dup1\\n 0x1f\\n add\\n 0x20\\n dup1\\n swap2\\n div\\n mul\\n 0x20\\n add\\n mload(0x40)\\n swap1\\n dup2\\n add\\n 0x40\\n mstore\\n dup1\\n swap3\\n swap2\\n swap1\\n dup2\\n dup2\\n mstore\\n 0x20\\n add\\n dup3\\n dup1\\n sload\\n 0x01\\n dup2\\n 0x01\\n and\\n iszero\\n 0x0100\\n mul\\n sub\\n and\\n 0x02\\n swap1\\n div\\n dup1\\n iszero\\n tag_53\\n jumpi\\n dup1\\n 0x1f\\n lt\\n tag_54\\n jumpi\\n 0x0100\\n dup1\\n dup4\\n sload\\n div\\n mul\\n dup4\\n mstore\\n swap2\\n 0x20\\n add\\n swap2\\n jump(tag_53)\\n tag_54:\\n dup3\\n add\\n swap2\\n swap1\\n 0x00\\n mstore\\n keccak256(0x00, 0x20)\\n swap1\\n tag_55:\\n dup2\\n sload\\n dup2\\n mstore\\n swap1\\n 0x01\\n add\\n swap1\\n 0x20\\n add\\n dup1\\n dup4\\n gt\\n tag_55\\n jumpi\\n dup3\\n swap1\\n sub\\n 0x1f\\n and\\n dup3\\n add\\n swap2\\n tag_53:\\n pop\\n pop\\n pop\\n pop\\n pop\\n dup2\\n mstore\\n pop\\n pop\\n /* \\\"user-input\\\":1491:1496 _msgs */\\n dup7\\n /* \\\"user-input\\\":1497:1499 _i */\\n dup3\\n /* \\\"user-input\\\":1491:1500 _msgs[_i] */\\n dup2\\n mload\\n dup2\\n lt\\n iszero\\n iszero\\n tag_56\\n jumpi\\n invalid\\n tag_56:\\n swap1\\n 0x20\\n add\\n swap1\\n 0x20\\n mul\\n add\\n /* \\\"user-input\\\":1491:1524 _msgs[_i] = messages[_index - _i] */\\n dup2\\n swap1\\n mstore\\n pop\\n /* \\\"user-input\\\":1471:1475 _i++ */\\n dup1\\n dup1\\n 0x01\\n add\\n swap2\\n pop\\n pop\\n /* \\\"user-input\\\":1439:1535 for (uint256 _i = 0; _i < _len; _i++) {... */\\n jump(tag_45)\\n tag_46:\\n pop\\n /* \\\"user-input\\\":787:1541 function listMessages(uint256 _page, uint256 _rpp) external view returns (message[] memory _msgs) {... */\\n pop\\n pop\\n pop\\n pop\\n tag_30:\\n swap3\\n swap2\\n pop\\n pop\\n jump\\t// out\\n /* \\\"user-input\\\":58:1543 contract Registry {... */\\n tag_17:\\n 0x80\\n mload(0x40)\\n swap1\\n dup2\\n add\\n 0x40\\n mstore\\n dup1\\n and(0xffffffffffffffffffffffffffffffffffffffff, 0x00)\\n dup2\\n mstore\\n 0x20\\n add\\n 0x00\\n dup2\\n mstore\\n 0x20\\n add\\n 0x60\\n dup2\\n mstore\\n 0x20\\n add\\n 0x60\\n dup2\\n mstore\\n pop\\n swap1\\n jump\\t// out\\n tag_21:\\n dup3\\n dup1\\n sload\\n 0x01\\n dup2\\n 0x01\\n and\\n iszero\\n 0x0100\\n mul\\n sub\\n and\\n 0x02\\n swap1\\n div\\n swap1\\n 0x00\\n mstore\\n keccak256(0x00, 0x20)\\n swap1\\n 0x1f\\n add\\n 0x20\\n swap1\\n div\\n dup2\\n add\\n swap3\\n dup3\\n 0x1f\\n lt\\n tag_58\\n jumpi\\n dup1\\n mload\\n not(0xff)\\n and\\n dup4\\n dup1\\n add\\n or\\n dup6\\n sstore\\n jump(tag_57)\\n tag_58:\\n dup3\\n dup1\\n add\\n 0x01\\n add\\n dup6\\n sstore\\n dup3\\n iszero\\n tag_57\\n jumpi\\n swap2\\n dup3\\n add\\n tag_59:\\n dup3\\n dup2\\n gt\\n iszero\\n tag_60\\n jumpi\\n dup3\\n mload\\n dup3\\n sstore\\n swap2\\n 0x20\\n add\\n swap2\\n swap1\\n 0x01\\n add\\n swap1\\n jump(tag_59)\\n tag_60:\\n tag_57:\\n pop\\n swap1\\n pop\\n tag_61\\n swap2\\n swap1\\n tag_62\\n jump\\t// in\\n tag_61:\\n pop\\n swap1\\n jump\\t// out\\n tag_23:\\n dup3\\n dup1\\n sload\\n 0x01\\n dup2\\n 0x01\\n and\\n iszero\\n 0x0100\\n mul\\n sub\\n and\\n 0x02\\n swap1\\n div\\n swap1\\n 0x00\\n mstore\\n keccak256(0x00, 0x20)\\n swap1\\n 0x1f\\n add\\n 0x20\\n swap1\\n div\\n dup2\\n add\\n swap3\\n dup3\\n 0x1f\\n lt\\n tag_64\\n jumpi\\n dup1\\n mload\\n not(0xff)\\n and\\n dup4\\n dup1\\n add\\n or\\n dup6\\n sstore\\n jump(tag_63)\\n tag_64:\\n dup3\\n dup1\\n add\\n 0x01\\n add\\n dup6\\n sstore\\n dup3\\n iszero\\n tag_63\\n jumpi\\n swap2\\n dup3\\n add\\n tag_65:\\n dup3\\n dup2\\n gt\\n iszero\\n tag_66\\n jumpi\\n dup3\\n mload\\n dup3\\n sstore\\n swap2\\n 0x20\\n add\\n swap2\\n swap1\\n 0x01\\n add\\n swap1\\n jump(tag_65)\\n tag_66:\\n tag_63:\\n pop\\n swap1\\n pop\\n tag_67\\n swap2\\n swap1\\n tag_62\\n jump\\t// in\\n tag_67:\\n pop\\n swap1\\n jump\\t// out\\n tag_35:\\n 0x80\\n mload(0x40)\\n swap1\\n dup2\\n add\\n 0x40\\n mstore\\n dup1\\n and(0xffffffffffffffffffffffffffffffffffffffff, 0x00)\\n dup2\\n mstore\\n 0x20\\n add\\n 0x00\\n dup2\\n mstore\\n 0x20\\n add\\n 0x60\\n dup2\\n mstore\\n 0x20\\n add\\n 0x60\\n dup2\\n mstore\\n pop\\n swap1\\n jump\\t// out\\n tag_62:\\n tag_68\\n swap2\\n swap1\\n tag_69:\\n dup1\\n dup3\\n gt\\n iszero\\n tag_70\\n jumpi\\n 0x00\\n dup2\\n 0x00\\n swap1\\n sstore\\n pop\\n 0x01\\n add\\n jump(tag_69)\\n tag_70:\\n pop\\n swap1\\n jump\\n tag_68:\\n swap1\\n jump\\t// out\\n /* \\\"--CODEGEN--\\\":6:446 */\\n tag_72:\\n 0x00\\n /* \\\"--CODEGEN--\\\":107:110 */\\n dup3\\n /* \\\"--CODEGEN--\\\":100:104 */\\n 0x1f\\n /* \\\"--CODEGEN--\\\":92:98 */\\n dup4\\n /* \\\"--CODEGEN--\\\":88:105 */\\n add\\n /* \\\"--CODEGEN--\\\":84:111 */\\n slt\\n /* \\\"--CODEGEN--\\\":77:112 */\\n iszero\\n /* \\\"--CODEGEN--\\\":74:76 */\\n iszero\\n tag_73\\n jumpi\\n /* \\\"--CODEGEN--\\\":125:126 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":122:123 */\\n dup1\\n /* \\\"--CODEGEN--\\\":115:127 */\\n revert\\n /* \\\"--CODEGEN--\\\":74:76 */\\n tag_73:\\n /* \\\"--CODEGEN--\\\":162:168 */\\n dup2\\n /* \\\"--CODEGEN--\\\":149:169 */\\n calldataload\\n /* \\\"--CODEGEN--\\\":184:248 */\\n tag_74\\n /* \\\"--CODEGEN--\\\":199:247 */\\n tag_75\\n /* \\\"--CODEGEN--\\\":240:246 */\\n dup3\\n /* \\\"--CODEGEN--\\\":199:247 */\\n jump(tag_76)\\n tag_75:\\n /* \\\"--CODEGEN--\\\":184:248 */\\n jump(tag_77)\\n tag_74:\\n /* \\\"--CODEGEN--\\\":175:248 */\\n swap2\\n pop\\n /* \\\"--CODEGEN--\\\":268:274 */\\n dup1\\n /* \\\"--CODEGEN--\\\":261:266 */\\n dup3\\n /* \\\"--CODEGEN--\\\":254:275 */\\n mstore\\n /* \\\"--CODEGEN--\\\":304:308 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":296:302 */\\n dup4\\n /* \\\"--CODEGEN--\\\":292:309 */\\n add\\n /* \\\"--CODEGEN--\\\":337:341 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":330:335 */\\n dup4\\n /* \\\"--CODEGEN--\\\":326:342 */\\n add\\n /* \\\"--CODEGEN--\\\":372:375 */\\n dup6\\n /* \\\"--CODEGEN--\\\":363:369 */\\n dup4\\n /* \\\"--CODEGEN--\\\":358:361 */\\n dup4\\n /* \\\"--CODEGEN--\\\":354:370 */\\n add\\n /* \\\"--CODEGEN--\\\":351:376 */\\n gt\\n /* \\\"--CODEGEN--\\\":348:350 */\\n iszero\\n tag_78\\n jumpi\\n /* \\\"--CODEGEN--\\\":389:390 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":386:387 */\\n dup1\\n /* \\\"--CODEGEN--\\\":379:391 */\\n revert\\n /* \\\"--CODEGEN--\\\":348:350 */\\n tag_78:\\n /* \\\"--CODEGEN--\\\":399:440 */\\n tag_79\\n /* \\\"--CODEGEN--\\\":433:439 */\\n dup4\\n /* \\\"--CODEGEN--\\\":428:431 */\\n dup3\\n /* \\\"--CODEGEN--\\\":423:426 */\\n dup5\\n /* \\\"--CODEGEN--\\\":399:440 */\\n jump(tag_80)\\n tag_79:\\n /* \\\"--CODEGEN--\\\":67:446 */\\n pop\\n pop\\n pop\\n swap3\\n swap2\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":455:897 */\\n tag_82:\\n 0x00\\n /* \\\"--CODEGEN--\\\":557:560 */\\n dup3\\n /* \\\"--CODEGEN--\\\":550:554 */\\n 0x1f\\n /* \\\"--CODEGEN--\\\":542:548 */\\n dup4\\n /* \\\"--CODEGEN--\\\":538:555 */\\n add\\n /* \\\"--CODEGEN--\\\":534:561 */\\n slt\\n /* \\\"--CODEGEN--\\\":527:562 */\\n iszero\\n /* \\\"--CODEGEN--\\\":524:526 */\\n iszero\\n tag_83\\n jumpi\\n /* \\\"--CODEGEN--\\\":575:576 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":572:573 */\\n dup1\\n /* \\\"--CODEGEN--\\\":565:577 */\\n revert\\n /* \\\"--CODEGEN--\\\":524:526 */\\n tag_83:\\n /* \\\"--CODEGEN--\\\":612:618 */\\n dup2\\n /* \\\"--CODEGEN--\\\":599:619 */\\n calldataload\\n /* \\\"--CODEGEN--\\\":634:699 */\\n tag_84\\n /* \\\"--CODEGEN--\\\":649:698 */\\n tag_85\\n /* \\\"--CODEGEN--\\\":691:697 */\\n dup3\\n /* \\\"--CODEGEN--\\\":649:698 */\\n jump(tag_86)\\n tag_85:\\n /* \\\"--CODEGEN--\\\":634:699 */\\n jump(tag_77)\\n tag_84:\\n /* \\\"--CODEGEN--\\\":625:699 */\\n swap2\\n pop\\n /* \\\"--CODEGEN--\\\":719:725 */\\n dup1\\n /* \\\"--CODEGEN--\\\":712:717 */\\n dup3\\n /* \\\"--CODEGEN--\\\":705:726 */\\n mstore\\n /* \\\"--CODEGEN--\\\":755:759 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":747:753 */\\n dup4\\n /* \\\"--CODEGEN--\\\":743:760 */\\n add\\n /* \\\"--CODEGEN--\\\":788:792 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":781:786 */\\n dup4\\n /* \\\"--CODEGEN--\\\":777:793 */\\n add\\n /* \\\"--CODEGEN--\\\":823:826 */\\n dup6\\n /* \\\"--CODEGEN--\\\":814:820 */\\n dup4\\n /* \\\"--CODEGEN--\\\":809:812 */\\n dup4\\n /* \\\"--CODEGEN--\\\":805:821 */\\n add\\n /* \\\"--CODEGEN--\\\":802:827 */\\n gt\\n /* \\\"--CODEGEN--\\\":799:801 */\\n iszero\\n tag_87\\n jumpi\\n /* \\\"--CODEGEN--\\\":840:841 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":837:838 */\\n dup1\\n /* \\\"--CODEGEN--\\\":830:842 */\\n revert\\n /* \\\"--CODEGEN--\\\":799:801 */\\n tag_87:\\n /* \\\"--CODEGEN--\\\":850:891 */\\n tag_88\\n /* \\\"--CODEGEN--\\\":884:890 */\\n dup4\\n /* \\\"--CODEGEN--\\\":879:882 */\\n dup3\\n /* \\\"--CODEGEN--\\\":874:877 */\\n dup5\\n /* \\\"--CODEGEN--\\\":850:891 */\\n jump(tag_80)\\n tag_88:\\n /* \\\"--CODEGEN--\\\":517:897 */\\n pop\\n pop\\n pop\\n swap3\\n swap2\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":905:1023 */\\n tag_90:\\n 0x00\\n /* \\\"--CODEGEN--\\\":972:1018 */\\n tag_91\\n /* \\\"--CODEGEN--\\\":1010:1016 */\\n dup3\\n /* \\\"--CODEGEN--\\\":997:1017 */\\n calldataload\\n /* \\\"--CODEGEN--\\\":972:1018 */\\n jump(tag_92)\\n tag_91:\\n /* \\\"--CODEGEN--\\\":963:1018 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":957:1023 */\\n swap3\\n swap2\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":1030:1606 */\\n tag_7:\\n 0x00\\n dup1\\n /* \\\"--CODEGEN--\\\":1170:1172 */\\n 0x40\\n /* \\\"--CODEGEN--\\\":1158:1167 */\\n dup4\\n /* \\\"--CODEGEN--\\\":1149:1156 */\\n dup6\\n /* \\\"--CODEGEN--\\\":1145:1168 */\\n sub\\n /* \\\"--CODEGEN--\\\":1141:1173 */\\n slt\\n /* \\\"--CODEGEN--\\\":1138:1140 */\\n iszero\\n tag_94\\n jumpi\\n /* \\\"--CODEGEN--\\\":1186:1187 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":1183:1184 */\\n dup1\\n /* \\\"--CODEGEN--\\\":1176:1188 */\\n revert\\n /* \\\"--CODEGEN--\\\":1138:1140 */\\n tag_94:\\n /* \\\"--CODEGEN--\\\":1249:1250 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":1238:1247 */\\n dup4\\n /* \\\"--CODEGEN--\\\":1234:1251 */\\n add\\n /* \\\"--CODEGEN--\\\":1221:1252 */\\n calldataload\\n /* \\\"--CODEGEN--\\\":1272:1290 */\\n 0xffffffffffffffff\\n /* \\\"--CODEGEN--\\\":1264:1270 */\\n dup2\\n /* \\\"--CODEGEN--\\\":1261:1291 */\\n gt\\n /* \\\"--CODEGEN--\\\":1258:1260 */\\n iszero\\n tag_95\\n jumpi\\n /* \\\"--CODEGEN--\\\":1304:1305 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":1301:1302 */\\n dup1\\n /* \\\"--CODEGEN--\\\":1294:1306 */\\n revert\\n /* \\\"--CODEGEN--\\\":1258:1260 */\\n tag_95:\\n /* \\\"--CODEGEN--\\\":1324:1387 */\\n tag_96\\n /* \\\"--CODEGEN--\\\":1379:1386 */\\n dup6\\n /* \\\"--CODEGEN--\\\":1370:1376 */\\n dup3\\n /* \\\"--CODEGEN--\\\":1359:1368 */\\n dup7\\n /* \\\"--CODEGEN--\\\":1355:1377 */\\n add\\n /* \\\"--CODEGEN--\\\":1324:1387 */\\n jump(tag_82)\\n tag_96:\\n /* \\\"--CODEGEN--\\\":1314:1387 */\\n swap3\\n pop\\n /* \\\"--CODEGEN--\\\":1200:1393 */\\n pop\\n /* \\\"--CODEGEN--\\\":1452:1454 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":1441:1450 */\\n dup4\\n /* \\\"--CODEGEN--\\\":1437:1455 */\\n add\\n /* \\\"--CODEGEN--\\\":1424:1456 */\\n calldataload\\n /* \\\"--CODEGEN--\\\":1476:1494 */\\n 0xffffffffffffffff\\n /* \\\"--CODEGEN--\\\":1468:1474 */\\n dup2\\n /* \\\"--CODEGEN--\\\":1465:1495 */\\n gt\\n /* \\\"--CODEGEN--\\\":1462:1464 */\\n iszero\\n tag_97\\n jumpi\\n /* \\\"--CODEGEN--\\\":1508:1509 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":1505:1506 */\\n dup1\\n /* \\\"--CODEGEN--\\\":1498:1510 */\\n revert\\n /* \\\"--CODEGEN--\\\":1462:1464 */\\n tag_97:\\n /* \\\"--CODEGEN--\\\":1528:1590 */\\n tag_98\\n /* \\\"--CODEGEN--\\\":1582:1589 */\\n dup6\\n /* \\\"--CODEGEN--\\\":1573:1579 */\\n dup3\\n /* \\\"--CODEGEN--\\\":1562:1571 */\\n dup7\\n /* \\\"--CODEGEN--\\\":1558:1580 */\\n add\\n /* \\\"--CODEGEN--\\\":1528:1590 */\\n jump(tag_72)\\n tag_98:\\n /* \\\"--CODEGEN--\\\":1518:1590 */\\n swap2\\n pop\\n /* \\\"--CODEGEN--\\\":1403:1596 */\\n pop\\n /* \\\"--CODEGEN--\\\":1132:1606 */\\n swap3\\n pop\\n swap3\\n swap1\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":1613:1979 */\\n tag_11:\\n 0x00\\n dup1\\n /* \\\"--CODEGEN--\\\":1734:1736 */\\n 0x40\\n /* \\\"--CODEGEN--\\\":1722:1731 */\\n dup4\\n /* \\\"--CODEGEN--\\\":1713:1720 */\\n dup6\\n /* \\\"--CODEGEN--\\\":1709:1732 */\\n sub\\n /* \\\"--CODEGEN--\\\":1705:1737 */\\n slt\\n /* \\\"--CODEGEN--\\\":1702:1704 */\\n iszero\\n tag_100\\n jumpi\\n /* \\\"--CODEGEN--\\\":1750:1751 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":1747:1748 */\\n dup1\\n /* \\\"--CODEGEN--\\\":1740:1752 */\\n revert\\n /* \\\"--CODEGEN--\\\":1702:1704 */\\n tag_100:\\n /* \\\"--CODEGEN--\\\":1785:1786 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":1802:1855 */\\n tag_101\\n /* \\\"--CODEGEN--\\\":1847:1854 */\\n dup6\\n /* \\\"--CODEGEN--\\\":1838:1844 */\\n dup3\\n /* \\\"--CODEGEN--\\\":1827:1836 */\\n dup7\\n /* \\\"--CODEGEN--\\\":1823:1845 */\\n add\\n /* \\\"--CODEGEN--\\\":1802:1855 */\\n jump(tag_90)\\n tag_101:\\n /* \\\"--CODEGEN--\\\":1792:1855 */\\n swap3\\n pop\\n /* \\\"--CODEGEN--\\\":1764:1861 */\\n pop\\n /* \\\"--CODEGEN--\\\":1892:1894 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":1910:1963 */\\n tag_102\\n /* \\\"--CODEGEN--\\\":1955:1962 */\\n dup6\\n /* \\\"--CODEGEN--\\\":1946:1952 */\\n dup3\\n /* \\\"--CODEGEN--\\\":1935:1944 */\\n dup7\\n /* \\\"--CODEGEN--\\\":1931:1953 */\\n add\\n /* \\\"--CODEGEN--\\\":1910:1963 */\\n jump(tag_90)\\n tag_102:\\n /* \\\"--CODEGEN--\\\":1900:1963 */\\n swap2\\n pop\\n /* \\\"--CODEGEN--\\\":1871:1969 */\\n pop\\n /* \\\"--CODEGEN--\\\":1696:1979 */\\n swap3\\n pop\\n swap3\\n swap1\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":1987:2218 */\\n tag_104:\\n 0x00\\n /* \\\"--CODEGEN--\\\":2125:2212 */\\n tag_105\\n /* \\\"--CODEGEN--\\\":2208:2211 */\\n dup4\\n /* \\\"--CODEGEN--\\\":2201:2206 */\\n dup4\\n /* \\\"--CODEGEN--\\\":2125:2212 */\\n jump(tag_106)\\n tag_105:\\n /* \\\"--CODEGEN--\\\":2111:2212 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":2104:2218 */\\n swap3\\n swap2\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":2226:2368 */\\n tag_108:\\n /* \\\"--CODEGEN--\\\":2317:2362 */\\n tag_109\\n /* \\\"--CODEGEN--\\\":2356:2361 */\\n dup2\\n /* \\\"--CODEGEN--\\\":2317:2362 */\\n jump(tag_110)\\n tag_109:\\n /* \\\"--CODEGEN--\\\":2312:2315 */\\n dup3\\n /* \\\"--CODEGEN--\\\":2305:2363 */\\n mstore\\n /* \\\"--CODEGEN--\\\":2299:2368 */\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":2375:2485 */\\n tag_112:\\n /* \\\"--CODEGEN--\\\":2448:2479 */\\n tag_113\\n /* \\\"--CODEGEN--\\\":2473:2478 */\\n dup2\\n /* \\\"--CODEGEN--\\\":2448:2479 */\\n jump(tag_114)\\n tag_113:\\n /* \\\"--CODEGEN--\\\":2443:2446 */\\n dup3\\n /* \\\"--CODEGEN--\\\":2436:2480 */\\n mstore\\n /* \\\"--CODEGEN--\\\":2430:2485 */\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":2555:3486 */\\n tag_116:\\n 0x00\\n /* \\\"--CODEGEN--\\\":2738:2811 */\\n tag_117\\n /* \\\"--CODEGEN--\\\":2805:2810 */\\n dup3\\n /* \\\"--CODEGEN--\\\":2738:2811 */\\n jump(tag_118)\\n tag_117:\\n /* \\\"--CODEGEN--\\\":2824:2929 */\\n tag_119\\n /* \\\"--CODEGEN--\\\":2922:2928 */\\n dup2\\n /* \\\"--CODEGEN--\\\":2917:2920 */\\n dup6\\n /* \\\"--CODEGEN--\\\":2824:2929 */\\n jump(tag_120)\\n tag_119:\\n /* \\\"--CODEGEN--\\\":2817:2929 */\\n swap4\\n pop\\n /* \\\"--CODEGEN--\\\":2952:2955 */\\n dup4\\n /* \\\"--CODEGEN--\\\":2994:2998 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":2986:2992 */\\n dup3\\n /* \\\"--CODEGEN--\\\":2982:2999 */\\n mul\\n /* \\\"--CODEGEN--\\\":2977:2980 */\\n dup6\\n /* \\\"--CODEGEN--\\\":2973:3000 */\\n add\\n /* \\\"--CODEGEN--\\\":3020:3095 */\\n tag_121\\n /* \\\"--CODEGEN--\\\":3089:3094 */\\n dup6\\n /* \\\"--CODEGEN--\\\":3020:3095 */\\n jump(tag_122)\\n tag_121:\\n /* \\\"--CODEGEN--\\\":3116:3117 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":3101:3447 */\\n tag_123:\\n /* \\\"--CODEGEN--\\\":3126:3132 */\\n dup5\\n /* \\\"--CODEGEN--\\\":3123:3124 */\\n dup2\\n /* \\\"--CODEGEN--\\\":3120:3133 */\\n lt\\n /* \\\"--CODEGEN--\\\":3101:3447 */\\n iszero\\n tag_124\\n jumpi\\n /* \\\"--CODEGEN--\\\":3188:3197 */\\n dup4\\n /* \\\"--CODEGEN--\\\":3182:3186 */\\n dup4\\n /* \\\"--CODEGEN--\\\":3178:3198 */\\n sub\\n /* \\\"--CODEGEN--\\\":3173:3176 */\\n dup9\\n /* \\\"--CODEGEN--\\\":3166:3199 */\\n mstore\\n /* \\\"--CODEGEN--\\\":3214:3316 */\\n tag_126\\n /* \\\"--CODEGEN--\\\":3311:3315 */\\n dup4\\n /* \\\"--CODEGEN--\\\":3302:3308 */\\n dup4\\n /* \\\"--CODEGEN--\\\":3296:3309 */\\n mload\\n /* \\\"--CODEGEN--\\\":3214:3316 */\\n jump(tag_104)\\n tag_126:\\n /* \\\"--CODEGEN--\\\":3206:3316 */\\n swap3\\n pop\\n /* \\\"--CODEGEN--\\\":3333:3412 */\\n tag_127\\n /* \\\"--CODEGEN--\\\":3405:3411 */\\n dup3\\n /* \\\"--CODEGEN--\\\":3333:3412 */\\n jump(tag_128)\\n tag_127:\\n /* \\\"--CODEGEN--\\\":3323:3412 */\\n swap2\\n pop\\n /* \\\"--CODEGEN--\\\":3435:3439 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":3430:3433 */\\n dup9\\n /* \\\"--CODEGEN--\\\":3426:3440 */\\n add\\n /* \\\"--CODEGEN--\\\":3419:3440 */\\n swap8\\n pop\\n /* \\\"--CODEGEN--\\\":3148:3149 */\\n 0x01\\n /* \\\"--CODEGEN--\\\":3145:3146 */\\n dup2\\n /* \\\"--CODEGEN--\\\":3141:3150 */\\n add\\n /* \\\"--CODEGEN--\\\":3136:3150 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":3101:3447 */\\n jump(tag_123)\\n tag_124:\\n /* \\\"--CODEGEN--\\\":3105:3119 */\\n pop\\n /* \\\"--CODEGEN--\\\":3460:3464 */\\n dup2\\n /* \\\"--CODEGEN--\\\":3453:3464 */\\n swap7\\n pop\\n /* \\\"--CODEGEN--\\\":3477:3480 */\\n dup7\\n /* \\\"--CODEGEN--\\\":3470:3480 */\\n swap5\\n pop\\n /* \\\"--CODEGEN--\\\":2717:3486 */\\n pop\\n pop\\n pop\\n pop\\n swap3\\n swap2\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":3494:3614 */\\n tag_130:\\n /* \\\"--CODEGEN--\\\":3577:3608 */\\n tag_131\\n /* \\\"--CODEGEN--\\\":3602:3607 */\\n dup2\\n /* \\\"--CODEGEN--\\\":3577:3608 */\\n jump(tag_132)\\n tag_131:\\n /* \\\"--CODEGEN--\\\":3572:3575 */\\n dup3\\n /* \\\"--CODEGEN--\\\":3565:3609 */\\n mstore\\n /* \\\"--CODEGEN--\\\":3559:3614 */\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":3621:3936 */\\n tag_134:\\n 0x00\\n /* \\\"--CODEGEN--\\\":3717:3751 */\\n tag_135\\n /* \\\"--CODEGEN--\\\":3745:3750 */\\n dup3\\n /* \\\"--CODEGEN--\\\":3717:3751 */\\n jump(tag_136)\\n tag_135:\\n /* \\\"--CODEGEN--\\\":3763:3823 */\\n tag_137\\n /* \\\"--CODEGEN--\\\":3816:3822 */\\n dup2\\n /* \\\"--CODEGEN--\\\":3811:3814 */\\n dup6\\n /* \\\"--CODEGEN--\\\":3763:3823 */\\n jump(tag_138)\\n tag_137:\\n /* \\\"--CODEGEN--\\\":3756:3823 */\\n swap4\\n pop\\n /* \\\"--CODEGEN--\\\":3828:3880 */\\n tag_139\\n /* \\\"--CODEGEN--\\\":3873:3879 */\\n dup2\\n /* \\\"--CODEGEN--\\\":3868:3871 */\\n dup6\\n /* \\\"--CODEGEN--\\\":3861:3865 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":3854:3859 */\\n dup7\\n /* \\\"--CODEGEN--\\\":3850:3866 */\\n add\\n /* \\\"--CODEGEN--\\\":3828:3880 */\\n jump(tag_140)\\n tag_139:\\n /* \\\"--CODEGEN--\\\":3901:3930 */\\n tag_141\\n /* \\\"--CODEGEN--\\\":3923:3929 */\\n dup2\\n /* \\\"--CODEGEN--\\\":3901:3930 */\\n jump(tag_142)\\n tag_141:\\n /* \\\"--CODEGEN--\\\":3896:3899 */\\n dup5\\n /* \\\"--CODEGEN--\\\":3892:3931 */\\n add\\n /* \\\"--CODEGEN--\\\":3885:3931 */\\n swap2\\n pop\\n /* \\\"--CODEGEN--\\\":3697:3936 */\\n pop\\n swap3\\n swap2\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":3943:4290 */\\n tag_144:\\n 0x00\\n /* \\\"--CODEGEN--\\\":4055:4094 */\\n tag_145\\n /* \\\"--CODEGEN--\\\":4088:4093 */\\n dup3\\n /* \\\"--CODEGEN--\\\":4055:4094 */\\n jump(tag_146)\\n tag_145:\\n /* \\\"--CODEGEN--\\\":4106:4177 */\\n tag_147\\n /* \\\"--CODEGEN--\\\":4170:4176 */\\n dup2\\n /* \\\"--CODEGEN--\\\":4165:4168 */\\n dup6\\n /* \\\"--CODEGEN--\\\":4106:4177 */\\n jump(tag_148)\\n tag_147:\\n /* \\\"--CODEGEN--\\\":4099:4177 */\\n swap4\\n pop\\n /* \\\"--CODEGEN--\\\":4182:4234 */\\n tag_149\\n /* \\\"--CODEGEN--\\\":4227:4233 */\\n dup2\\n /* \\\"--CODEGEN--\\\":4222:4225 */\\n dup6\\n /* \\\"--CODEGEN--\\\":4215:4219 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":4208:4213 */\\n dup7\\n /* \\\"--CODEGEN--\\\":4204:4220 */\\n add\\n /* \\\"--CODEGEN--\\\":4182:4234 */\\n jump(tag_140)\\n tag_149:\\n /* \\\"--CODEGEN--\\\":4255:4284 */\\n tag_150\\n /* \\\"--CODEGEN--\\\":4277:4283 */\\n dup2\\n /* \\\"--CODEGEN--\\\":4255:4284 */\\n jump(tag_142)\\n tag_150:\\n /* \\\"--CODEGEN--\\\":4250:4253 */\\n dup5\\n /* \\\"--CODEGEN--\\\":4246:4285 */\\n add\\n /* \\\"--CODEGEN--\\\":4239:4285 */\\n swap2\\n pop\\n /* \\\"--CODEGEN--\\\":4035:4290 */\\n pop\\n swap3\\n swap2\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":4297:4616 */\\n tag_152:\\n 0x00\\n /* \\\"--CODEGEN--\\\":4395:4430 */\\n tag_153\\n /* \\\"--CODEGEN--\\\":4424:4429 */\\n dup3\\n /* \\\"--CODEGEN--\\\":4395:4430 */\\n jump(tag_154)\\n tag_153:\\n /* \\\"--CODEGEN--\\\":4442:4503 */\\n tag_155\\n /* \\\"--CODEGEN--\\\":4496:4502 */\\n dup2\\n /* \\\"--CODEGEN--\\\":4491:4494 */\\n dup6\\n /* \\\"--CODEGEN--\\\":4442:4503 */\\n jump(tag_156)\\n tag_155:\\n /* \\\"--CODEGEN--\\\":4435:4503 */\\n swap4\\n pop\\n /* \\\"--CODEGEN--\\\":4508:4560 */\\n tag_157\\n /* \\\"--CODEGEN--\\\":4553:4559 */\\n dup2\\n /* \\\"--CODEGEN--\\\":4548:4551 */\\n dup6\\n /* \\\"--CODEGEN--\\\":4541:4545 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":4534:4539 */\\n dup7\\n /* \\\"--CODEGEN--\\\":4530:4546 */\\n add\\n /* \\\"--CODEGEN--\\\":4508:4560 */\\n jump(tag_140)\\n tag_157:\\n /* \\\"--CODEGEN--\\\":4581:4610 */\\n tag_158\\n /* \\\"--CODEGEN--\\\":4603:4609 */\\n dup2\\n /* \\\"--CODEGEN--\\\":4581:4610 */\\n jump(tag_142)\\n tag_158:\\n /* \\\"--CODEGEN--\\\":4576:4579 */\\n dup5\\n /* \\\"--CODEGEN--\\\":4572:4611 */\\n add\\n /* \\\"--CODEGEN--\\\":4565:4611 */\\n swap2\\n pop\\n /* \\\"--CODEGEN--\\\":4375:4616 */\\n pop\\n swap3\\n swap2\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":4680:5621 */\\n tag_160:\\n 0x00\\n /* \\\"--CODEGEN--\\\":4827:4831 */\\n 0x80\\n /* \\\"--CODEGEN--\\\":4822:4825 */\\n dup4\\n /* \\\"--CODEGEN--\\\":4818:4832 */\\n add\\n /* \\\"--CODEGEN--\\\":4911:4914 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":4904:4909 */\\n dup4\\n /* \\\"--CODEGEN--\\\":4900:4915 */\\n add\\n /* \\\"--CODEGEN--\\\":4894:4916 */\\n mload\\n /* \\\"--CODEGEN--\\\":4922:4983 */\\n tag_161\\n /* \\\"--CODEGEN--\\\":4978:4981 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":4973:4976 */\\n dup7\\n /* \\\"--CODEGEN--\\\":4969:4982 */\\n add\\n /* \\\"--CODEGEN--\\\":4956:4967 */\\n dup3\\n /* \\\"--CODEGEN--\\\":4922:4983 */\\n jump(tag_112)\\n tag_161:\\n /* \\\"--CODEGEN--\\\":4847:4989 */\\n pop\\n /* \\\"--CODEGEN--\\\":5066:5070 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":5059:5064 */\\n dup4\\n /* \\\"--CODEGEN--\\\":5055:5071 */\\n add\\n /* \\\"--CODEGEN--\\\":5049:5072 */\\n mload\\n /* \\\"--CODEGEN--\\\":5078:5140 */\\n tag_162\\n /* \\\"--CODEGEN--\\\":5134:5138 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":5129:5132 */\\n dup7\\n /* \\\"--CODEGEN--\\\":5125:5139 */\\n add\\n /* \\\"--CODEGEN--\\\":5112:5123 */\\n dup3\\n /* \\\"--CODEGEN--\\\":5078:5140 */\\n jump(tag_163)\\n tag_162:\\n /* \\\"--CODEGEN--\\\":4999:5146 */\\n pop\\n /* \\\"--CODEGEN--\\\":5221:5225 */\\n 0x40\\n /* \\\"--CODEGEN--\\\":5214:5219 */\\n dup4\\n /* \\\"--CODEGEN--\\\":5210:5226 */\\n add\\n /* \\\"--CODEGEN--\\\":5204:5227 */\\n mload\\n /* \\\"--CODEGEN--\\\":5273:5276 */\\n dup5\\n /* \\\"--CODEGEN--\\\":5267:5271 */\\n dup3\\n /* \\\"--CODEGEN--\\\":5263:5277 */\\n sub\\n /* \\\"--CODEGEN--\\\":5256:5260 */\\n 0x40\\n /* \\\"--CODEGEN--\\\":5251:5254 */\\n dup7\\n /* \\\"--CODEGEN--\\\":5247:5261 */\\n add\\n /* \\\"--CODEGEN--\\\":5240:5278 */\\n mstore\\n /* \\\"--CODEGEN--\\\":5293:5361 */\\n tag_164\\n /* \\\"--CODEGEN--\\\":5356:5360 */\\n dup3\\n /* \\\"--CODEGEN--\\\":5343:5354 */\\n dup3\\n /* \\\"--CODEGEN--\\\":5293:5361 */\\n jump(tag_152)\\n tag_164:\\n /* \\\"--CODEGEN--\\\":5285:5361 */\\n swap2\\n pop\\n /* \\\"--CODEGEN--\\\":5156:5373 */\\n pop\\n /* \\\"--CODEGEN--\\\":5445:5449 */\\n 0x60\\n /* \\\"--CODEGEN--\\\":5438:5443 */\\n dup4\\n /* \\\"--CODEGEN--\\\":5434:5450 */\\n add\\n /* \\\"--CODEGEN--\\\":5428:5451 */\\n mload\\n /* \\\"--CODEGEN--\\\":5497:5500 */\\n dup5\\n /* \\\"--CODEGEN--\\\":5491:5495 */\\n dup3\\n /* \\\"--CODEGEN--\\\":5487:5501 */\\n sub\\n /* \\\"--CODEGEN--\\\":5480:5484 */\\n 0x60\\n /* \\\"--CODEGEN--\\\":5475:5478 */\\n dup7\\n /* \\\"--CODEGEN--\\\":5471:5485 */\\n add\\n /* \\\"--CODEGEN--\\\":5464:5502 */\\n mstore\\n /* \\\"--CODEGEN--\\\":5517:5583 */\\n tag_165\\n /* \\\"--CODEGEN--\\\":5578:5582 */\\n dup3\\n /* \\\"--CODEGEN--\\\":5565:5576 */\\n dup3\\n /* \\\"--CODEGEN--\\\":5517:5583 */\\n jump(tag_134)\\n tag_165:\\n /* \\\"--CODEGEN--\\\":5509:5583 */\\n swap2\\n pop\\n /* \\\"--CODEGEN--\\\":5383:5595 */\\n pop\\n /* \\\"--CODEGEN--\\\":5612:5616 */\\n dup1\\n /* \\\"--CODEGEN--\\\":5605:5616 */\\n swap2\\n pop\\n /* \\\"--CODEGEN--\\\":4800:5621 */\\n pop\\n swap3\\n swap2\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":5685:6612 */\\n tag_106:\\n 0x00\\n /* \\\"--CODEGEN--\\\":5818:5822 */\\n 0x80\\n /* \\\"--CODEGEN--\\\":5813:5816 */\\n dup4\\n /* \\\"--CODEGEN--\\\":5809:5823 */\\n add\\n /* \\\"--CODEGEN--\\\":5902:5905 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":5895:5900 */\\n dup4\\n /* \\\"--CODEGEN--\\\":5891:5906 */\\n add\\n /* \\\"--CODEGEN--\\\":5885:5907 */\\n mload\\n /* \\\"--CODEGEN--\\\":5913:5974 */\\n tag_167\\n /* \\\"--CODEGEN--\\\":5969:5972 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":5964:5967 */\\n dup7\\n /* \\\"--CODEGEN--\\\":5960:5973 */\\n add\\n /* \\\"--CODEGEN--\\\":5947:5958 */\\n dup3\\n /* \\\"--CODEGEN--\\\":5913:5974 */\\n jump(tag_112)\\n tag_167:\\n /* \\\"--CODEGEN--\\\":5838:5980 */\\n pop\\n /* \\\"--CODEGEN--\\\":6057:6061 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":6050:6055 */\\n dup4\\n /* \\\"--CODEGEN--\\\":6046:6062 */\\n add\\n /* \\\"--CODEGEN--\\\":6040:6063 */\\n mload\\n /* \\\"--CODEGEN--\\\":6069:6131 */\\n tag_168\\n /* \\\"--CODEGEN--\\\":6125:6129 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":6120:6123 */\\n dup7\\n /* \\\"--CODEGEN--\\\":6116:6130 */\\n add\\n /* \\\"--CODEGEN--\\\":6103:6114 */\\n dup3\\n /* \\\"--CODEGEN--\\\":6069:6131 */\\n jump(tag_163)\\n tag_168:\\n /* \\\"--CODEGEN--\\\":5990:6137 */\\n pop\\n /* \\\"--CODEGEN--\\\":6212:6216 */\\n 0x40\\n /* \\\"--CODEGEN--\\\":6205:6210 */\\n dup4\\n /* \\\"--CODEGEN--\\\":6201:6217 */\\n add\\n /* \\\"--CODEGEN--\\\":6195:6218 */\\n mload\\n /* \\\"--CODEGEN--\\\":6264:6267 */\\n dup5\\n /* \\\"--CODEGEN--\\\":6258:6262 */\\n dup3\\n /* \\\"--CODEGEN--\\\":6254:6268 */\\n sub\\n /* \\\"--CODEGEN--\\\":6247:6251 */\\n 0x40\\n /* \\\"--CODEGEN--\\\":6242:6245 */\\n dup7\\n /* \\\"--CODEGEN--\\\":6238:6252 */\\n add\\n /* \\\"--CODEGEN--\\\":6231:6269 */\\n mstore\\n /* \\\"--CODEGEN--\\\":6284:6352 */\\n tag_169\\n /* \\\"--CODEGEN--\\\":6347:6351 */\\n dup3\\n /* \\\"--CODEGEN--\\\":6334:6345 */\\n dup3\\n /* \\\"--CODEGEN--\\\":6284:6352 */\\n jump(tag_152)\\n tag_169:\\n /* \\\"--CODEGEN--\\\":6276:6352 */\\n swap2\\n pop\\n /* \\\"--CODEGEN--\\\":6147:6364 */\\n pop\\n /* \\\"--CODEGEN--\\\":6436:6440 */\\n 0x60\\n /* \\\"--CODEGEN--\\\":6429:6434 */\\n dup4\\n /* \\\"--CODEGEN--\\\":6425:6441 */\\n add\\n /* \\\"--CODEGEN--\\\":6419:6442 */\\n mload\\n /* \\\"--CODEGEN--\\\":6488:6491 */\\n dup5\\n /* \\\"--CODEGEN--\\\":6482:6486 */\\n dup3\\n /* \\\"--CODEGEN--\\\":6478:6492 */\\n sub\\n /* \\\"--CODEGEN--\\\":6471:6475 */\\n 0x60\\n /* \\\"--CODEGEN--\\\":6466:6469 */\\n dup7\\n /* \\\"--CODEGEN--\\\":6462:6476 */\\n add\\n /* \\\"--CODEGEN--\\\":6455:6493 */\\n mstore\\n /* \\\"--CODEGEN--\\\":6508:6574 */\\n tag_170\\n /* \\\"--CODEGEN--\\\":6569:6573 */\\n dup3\\n /* \\\"--CODEGEN--\\\":6556:6567 */\\n dup3\\n /* \\\"--CODEGEN--\\\":6508:6574 */\\n jump(tag_134)\\n tag_170:\\n /* \\\"--CODEGEN--\\\":6500:6574 */\\n swap2\\n pop\\n /* \\\"--CODEGEN--\\\":6374:6586 */\\n pop\\n /* \\\"--CODEGEN--\\\":6603:6607 */\\n dup1\\n /* \\\"--CODEGEN--\\\":6596:6607 */\\n swap2\\n pop\\n /* \\\"--CODEGEN--\\\":5791:6612 */\\n pop\\n swap3\\n swap2\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":6619:6729 */\\n tag_163:\\n /* \\\"--CODEGEN--\\\":6692:6723 */\\n tag_172\\n /* \\\"--CODEGEN--\\\":6717:6722 */\\n dup2\\n /* \\\"--CODEGEN--\\\":6692:6723 */\\n jump(tag_173)\\n tag_172:\\n /* \\\"--CODEGEN--\\\":6687:6690 */\\n dup3\\n /* \\\"--CODEGEN--\\\":6680:6724 */\\n mstore\\n /* \\\"--CODEGEN--\\\":6674:6729 */\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":6736:7173 */\\n tag_14:\\n 0x00\\n /* \\\"--CODEGEN--\\\":6942:6944 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":6931:6940 */\\n dup3\\n /* \\\"--CODEGEN--\\\":6927:6945 */\\n add\\n /* \\\"--CODEGEN--\\\":6919:6945 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":6992:7001 */\\n dup2\\n /* \\\"--CODEGEN--\\\":6986:6990 */\\n dup2\\n /* \\\"--CODEGEN--\\\":6982:7002 */\\n sub\\n /* \\\"--CODEGEN--\\\":6978:6979 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":6967:6976 */\\n dup4\\n /* \\\"--CODEGEN--\\\":6963:6980 */\\n add\\n /* \\\"--CODEGEN--\\\":6956:7003 */\\n mstore\\n /* \\\"--CODEGEN--\\\":7017:7163 */\\n tag_175\\n /* \\\"--CODEGEN--\\\":7158:7162 */\\n dup2\\n /* \\\"--CODEGEN--\\\":7149:7155 */\\n dup5\\n /* \\\"--CODEGEN--\\\":7017:7163 */\\n jump(tag_116)\\n tag_175:\\n /* \\\"--CODEGEN--\\\":7009:7163 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":6913:7173 */\\n swap3\\n swap2\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":7180:7719 */\\n tag_29:\\n 0x00\\n /* \\\"--CODEGEN--\\\":7382:7384 */\\n 0x60\\n /* \\\"--CODEGEN--\\\":7371:7380 */\\n dup3\\n /* \\\"--CODEGEN--\\\":7367:7385 */\\n add\\n /* \\\"--CODEGEN--\\\":7359:7385 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":7432:7441 */\\n dup2\\n /* \\\"--CODEGEN--\\\":7426:7430 */\\n dup2\\n /* \\\"--CODEGEN--\\\":7422:7442 */\\n sub\\n /* \\\"--CODEGEN--\\\":7418:7419 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":7407:7416 */\\n dup4\\n /* \\\"--CODEGEN--\\\":7403:7420 */\\n add\\n /* \\\"--CODEGEN--\\\":7396:7443 */\\n mstore\\n /* \\\"--CODEGEN--\\\":7457:7535 */\\n tag_177\\n /* \\\"--CODEGEN--\\\":7530:7534 */\\n dup2\\n /* \\\"--CODEGEN--\\\":7521:7527 */\\n dup7\\n /* \\\"--CODEGEN--\\\":7457:7535 */\\n jump(tag_144)\\n tag_177:\\n /* \\\"--CODEGEN--\\\":7449:7535 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":7546:7618 */\\n tag_178\\n /* \\\"--CODEGEN--\\\":7614:7616 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":7603:7612 */\\n dup4\\n /* \\\"--CODEGEN--\\\":7599:7617 */\\n add\\n /* \\\"--CODEGEN--\\\":7590:7596 */\\n dup6\\n /* \\\"--CODEGEN--\\\":7546:7618 */\\n jump(tag_130)\\n tag_178:\\n /* \\\"--CODEGEN--\\\":7629:7709 */\\n tag_179\\n /* \\\"--CODEGEN--\\\":7705:7707 */\\n 0x40\\n /* \\\"--CODEGEN--\\\":7694:7703 */\\n dup4\\n /* \\\"--CODEGEN--\\\":7690:7708 */\\n add\\n /* \\\"--CODEGEN--\\\":7681:7687 */\\n dup5\\n /* \\\"--CODEGEN--\\\":7629:7709 */\\n jump(tag_108)\\n tag_179:\\n /* \\\"--CODEGEN--\\\":7353:7719 */\\n swap5\\n swap4\\n pop\\n pop\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":7726:8079 */\\n tag_19:\\n 0x00\\n /* \\\"--CODEGEN--\\\":7890:7892 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":7879:7888 */\\n dup3\\n /* \\\"--CODEGEN--\\\":7875:7893 */\\n add\\n /* \\\"--CODEGEN--\\\":7867:7893 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":7940:7949 */\\n dup2\\n /* \\\"--CODEGEN--\\\":7934:7938 */\\n dup2\\n /* \\\"--CODEGEN--\\\":7930:7950 */\\n sub\\n /* \\\"--CODEGEN--\\\":7926:7927 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":7915:7924 */\\n dup4\\n /* \\\"--CODEGEN--\\\":7911:7928 */\\n add\\n /* \\\"--CODEGEN--\\\":7904:7951 */\\n mstore\\n /* \\\"--CODEGEN--\\\":7965:8069 */\\n tag_181\\n /* \\\"--CODEGEN--\\\":8064:8068 */\\n dup2\\n /* \\\"--CODEGEN--\\\":8055:8061 */\\n dup5\\n /* \\\"--CODEGEN--\\\":7965:8069 */\\n jump(tag_160)\\n tag_181:\\n /* \\\"--CODEGEN--\\\":7957:8069 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":7861:8079 */\\n swap3\\n swap2\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":8086:8342 */\\n tag_77:\\n 0x00\\n /* \\\"--CODEGEN--\\\":8148:8150 */\\n 0x40\\n /* \\\"--CODEGEN--\\\":8142:8151 */\\n mload\\n /* \\\"--CODEGEN--\\\":8132:8151 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":8186:8190 */\\n dup2\\n /* \\\"--CODEGEN--\\\":8178:8184 */\\n dup2\\n /* \\\"--CODEGEN--\\\":8174:8191 */\\n add\\n /* \\\"--CODEGEN--\\\":8285:8291 */\\n dup2\\n /* \\\"--CODEGEN--\\\":8273:8283 */\\n dup2\\n /* \\\"--CODEGEN--\\\":8270:8292 */\\n lt\\n /* \\\"--CODEGEN--\\\":8249:8267 */\\n 0xffffffffffffffff\\n /* \\\"--CODEGEN--\\\":8237:8247 */\\n dup3\\n /* \\\"--CODEGEN--\\\":8234:8268 */\\n gt\\n /* \\\"--CODEGEN--\\\":8231:8293 */\\n or\\n /* \\\"--CODEGEN--\\\":8228:8230 */\\n iszero\\n tag_183\\n jumpi\\n /* \\\"--CODEGEN--\\\":8306:8307 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":8303:8304 */\\n dup1\\n /* \\\"--CODEGEN--\\\":8296:8308 */\\n revert\\n /* \\\"--CODEGEN--\\\":8228:8230 */\\n tag_183:\\n /* \\\"--CODEGEN--\\\":8326:8336 */\\n dup1\\n /* \\\"--CODEGEN--\\\":8322:8324 */\\n 0x40\\n /* \\\"--CODEGEN--\\\":8315:8337 */\\n mstore\\n /* \\\"--CODEGEN--\\\":8126:8342 */\\n pop\\n swap2\\n swap1\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":8349:8607 */\\n tag_76:\\n 0x00\\n /* \\\"--CODEGEN--\\\":8492:8510 */\\n 0xffffffffffffffff\\n /* \\\"--CODEGEN--\\\":8484:8490 */\\n dup3\\n /* \\\"--CODEGEN--\\\":8481:8511 */\\n gt\\n /* \\\"--CODEGEN--\\\":8478:8480 */\\n iszero\\n tag_185\\n jumpi\\n /* \\\"--CODEGEN--\\\":8524:8525 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":8521:8522 */\\n dup1\\n /* \\\"--CODEGEN--\\\":8514:8526 */\\n revert\\n /* \\\"--CODEGEN--\\\":8478:8480 */\\n tag_185:\\n /* \\\"--CODEGEN--\\\":8568:8572 */\\n 0x1f\\n /* \\\"--CODEGEN--\\\":8564:8573 */\\n not\\n /* \\\"--CODEGEN--\\\":8557:8561 */\\n 0x1f\\n /* \\\"--CODEGEN--\\\":8549:8555 */\\n dup4\\n /* \\\"--CODEGEN--\\\":8545:8562 */\\n add\\n /* \\\"--CODEGEN--\\\":8541:8574 */\\n and\\n /* \\\"--CODEGEN--\\\":8533:8574 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":8597:8601 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":8591:8595 */\\n dup2\\n /* \\\"--CODEGEN--\\\":8587:8602 */\\n add\\n /* \\\"--CODEGEN--\\\":8579:8602 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":8415:8607 */\\n swap2\\n swap1\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":8614:8873 */\\n tag_86:\\n 0x00\\n /* \\\"--CODEGEN--\\\":8758:8776 */\\n 0xffffffffffffffff\\n /* \\\"--CODEGEN--\\\":8750:8756 */\\n dup3\\n /* \\\"--CODEGEN--\\\":8747:8777 */\\n gt\\n /* \\\"--CODEGEN--\\\":8744:8746 */\\n iszero\\n tag_187\\n jumpi\\n /* \\\"--CODEGEN--\\\":8790:8791 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":8787:8788 */\\n dup1\\n /* \\\"--CODEGEN--\\\":8780:8792 */\\n revert\\n /* \\\"--CODEGEN--\\\":8744:8746 */\\n tag_187:\\n /* \\\"--CODEGEN--\\\":8834:8838 */\\n 0x1f\\n /* \\\"--CODEGEN--\\\":8830:8839 */\\n not\\n /* \\\"--CODEGEN--\\\":8823:8827 */\\n 0x1f\\n /* \\\"--CODEGEN--\\\":8815:8821 */\\n dup4\\n /* \\\"--CODEGEN--\\\":8811:8828 */\\n add\\n /* \\\"--CODEGEN--\\\":8807:8840 */\\n and\\n /* \\\"--CODEGEN--\\\":8799:8840 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":8863:8867 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":8857:8861 */\\n dup2\\n /* \\\"--CODEGEN--\\\":8853:8868 */\\n add\\n /* \\\"--CODEGEN--\\\":8845:8868 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":8681:8873 */\\n swap2\\n swap1\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":8882:9022 */\\n tag_122:\\n 0x00\\n /* \\\"--CODEGEN--\\\":9010:9014 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":9002:9008 */\\n dup3\\n /* \\\"--CODEGEN--\\\":8998:9015 */\\n add\\n /* \\\"--CODEGEN--\\\":8987:9015 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":8979:9022 */\\n swap2\\n swap1\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":9031:9157 */\\n tag_118:\\n 0x00\\n /* \\\"--CODEGEN--\\\":9146:9151 */\\n dup2\\n /* \\\"--CODEGEN--\\\":9140:9152 */\\n mload\\n /* \\\"--CODEGEN--\\\":9130:9152 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":9124:9157 */\\n swap2\\n swap1\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":9164:9251 */\\n tag_136:\\n 0x00\\n /* \\\"--CODEGEN--\\\":9240:9245 */\\n dup2\\n /* \\\"--CODEGEN--\\\":9234:9246 */\\n mload\\n /* \\\"--CODEGEN--\\\":9224:9246 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":9218:9251 */\\n swap2\\n swap1\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":9258:9346 */\\n tag_154:\\n 0x00\\n /* \\\"--CODEGEN--\\\":9335:9340 */\\n dup2\\n /* \\\"--CODEGEN--\\\":9329:9341 */\\n mload\\n /* \\\"--CODEGEN--\\\":9319:9341 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":9313:9346 */\\n swap2\\n swap1\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":9353:9445 */\\n tag_146:\\n 0x00\\n /* \\\"--CODEGEN--\\\":9434:9439 */\\n dup2\\n /* \\\"--CODEGEN--\\\":9428:9440 */\\n mload\\n /* \\\"--CODEGEN--\\\":9418:9440 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":9412:9445 */\\n swap2\\n swap1\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":9453:9594 */\\n tag_128:\\n 0x00\\n /* \\\"--CODEGEN--\\\":9583:9587 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":9575:9581 */\\n dup3\\n /* \\\"--CODEGEN--\\\":9571:9588 */\\n add\\n /* \\\"--CODEGEN--\\\":9560:9588 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":9553:9594 */\\n swap2\\n swap1\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":9603:9800 */\\n tag_120:\\n 0x00\\n /* \\\"--CODEGEN--\\\":9752:9758 */\\n dup3\\n /* \\\"--CODEGEN--\\\":9747:9750 */\\n dup3\\n /* \\\"--CODEGEN--\\\":9740:9759 */\\n mstore\\n /* \\\"--CODEGEN--\\\":9789:9793 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":9784:9787 */\\n dup3\\n /* \\\"--CODEGEN--\\\":9780:9794 */\\n add\\n /* \\\"--CODEGEN--\\\":9765:9794 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":9733:9800 */\\n swap3\\n swap2\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":9809:9961 */\\n tag_138:\\n 0x00\\n /* \\\"--CODEGEN--\\\":9913:9919 */\\n dup3\\n /* \\\"--CODEGEN--\\\":9908:9911 */\\n dup3\\n /* \\\"--CODEGEN--\\\":9901:9920 */\\n mstore\\n /* \\\"--CODEGEN--\\\":9950:9954 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":9945:9948 */\\n dup3\\n /* \\\"--CODEGEN--\\\":9941:9955 */\\n add\\n /* \\\"--CODEGEN--\\\":9926:9955 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":9894:9961 */\\n swap3\\n swap2\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":9970:10123 */\\n tag_156:\\n 0x00\\n /* \\\"--CODEGEN--\\\":10075:10081 */\\n dup3\\n /* \\\"--CODEGEN--\\\":10070:10073 */\\n dup3\\n /* \\\"--CODEGEN--\\\":10063:10082 */\\n mstore\\n /* \\\"--CODEGEN--\\\":10112:10116 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":10107:10110 */\\n dup3\\n /* \\\"--CODEGEN--\\\":10103:10117 */\\n add\\n /* \\\"--CODEGEN--\\\":10088:10117 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":10056:10123 */\\n swap3\\n swap2\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":10132:10295 */\\n tag_148:\\n 0x00\\n /* \\\"--CODEGEN--\\\":10247:10253 */\\n dup3\\n /* \\\"--CODEGEN--\\\":10242:10245 */\\n dup3\\n /* \\\"--CODEGEN--\\\":10235:10254 */\\n mstore\\n /* \\\"--CODEGEN--\\\":10284:10288 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":10279:10282 */\\n dup3\\n /* \\\"--CODEGEN--\\\":10275:10289 */\\n add\\n /* \\\"--CODEGEN--\\\":10260:10289 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":10228:10295 */\\n swap3\\n swap2\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":10303:10408 */\\n tag_114:\\n 0x00\\n /* \\\"--CODEGEN--\\\":10372:10403 */\\n tag_199\\n /* \\\"--CODEGEN--\\\":10397:10402 */\\n dup3\\n /* \\\"--CODEGEN--\\\":10372:10403 */\\n jump(tag_200)\\n tag_199:\\n /* \\\"--CODEGEN--\\\":10361:10403 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":10355:10408 */\\n swap2\\n swap1\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":10415:10494 */\\n tag_132:\\n 0x00\\n /* \\\"--CODEGEN--\\\":10484:10489 */\\n dup2\\n /* \\\"--CODEGEN--\\\":10473:10489 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":10467:10494 */\\n swap2\\n swap1\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":10501:10629 */\\n tag_200:\\n 0x00\\n /* \\\"--CODEGEN--\\\":10581:10623 */\\n 0xffffffffffffffffffffffffffffffffffffffff\\n /* \\\"--CODEGEN--\\\":10574:10579 */\\n dup3\\n /* \\\"--CODEGEN--\\\":10570:10624 */\\n and\\n /* \\\"--CODEGEN--\\\":10559:10624 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":10553:10629 */\\n swap2\\n swap1\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":10636:10715 */\\n tag_173:\\n 0x00\\n /* \\\"--CODEGEN--\\\":10705:10710 */\\n dup2\\n /* \\\"--CODEGEN--\\\":10694:10710 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":10688:10715 */\\n swap2\\n swap1\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":10722:10801 */\\n tag_92:\\n 0x00\\n /* \\\"--CODEGEN--\\\":10791:10796 */\\n dup2\\n /* \\\"--CODEGEN--\\\":10780:10796 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":10774:10801 */\\n swap2\\n swap1\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":10808:10937 */\\n tag_110:\\n 0x00\\n /* \\\"--CODEGEN--\\\":10895:10932 */\\n tag_206\\n /* \\\"--CODEGEN--\\\":10926:10931 */\\n dup3\\n /* \\\"--CODEGEN--\\\":10895:10932 */\\n jump(tag_207)\\n tag_206:\\n /* \\\"--CODEGEN--\\\":10882:10932 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":10876:10937 */\\n swap2\\n swap1\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":10944:11065 */\\n tag_207:\\n 0x00\\n /* \\\"--CODEGEN--\\\":11023:11060 */\\n tag_209\\n /* \\\"--CODEGEN--\\\":11054:11059 */\\n dup3\\n /* \\\"--CODEGEN--\\\":11023:11060 */\\n jump(tag_210)\\n tag_209:\\n /* \\\"--CODEGEN--\\\":11010:11060 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":11004:11065 */\\n swap2\\n swap1\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":11072:11187 */\\n tag_210:\\n 0x00\\n /* \\\"--CODEGEN--\\\":11151:11182 */\\n tag_212\\n /* \\\"--CODEGEN--\\\":11176:11181 */\\n dup3\\n /* \\\"--CODEGEN--\\\":11151:11182 */\\n jump(tag_200)\\n tag_212:\\n /* \\\"--CODEGEN--\\\":11138:11182 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":11132:11187 */\\n swap2\\n swap1\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":11195:11340 */\\n tag_80:\\n /* \\\"--CODEGEN--\\\":11276:11282 */\\n dup3\\n /* \\\"--CODEGEN--\\\":11271:11274 */\\n dup2\\n /* \\\"--CODEGEN--\\\":11266:11269 */\\n dup4\\n /* \\\"--CODEGEN--\\\":11253:11283 */\\n calldatacopy\\n /* \\\"--CODEGEN--\\\":11332:11333 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":11323:11329 */\\n dup4\\n /* \\\"--CODEGEN--\\\":11318:11321 */\\n dup4\\n /* \\\"--CODEGEN--\\\":11314:11330 */\\n add\\n /* \\\"--CODEGEN--\\\":11307:11334 */\\n mstore\\n /* \\\"--CODEGEN--\\\":11246:11340 */\\n pop\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":11349:11617 */\\n tag_140:\\n /* \\\"--CODEGEN--\\\":11414:11415 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":11421:11522 */\\n tag_215:\\n /* \\\"--CODEGEN--\\\":11435:11441 */\\n dup4\\n /* \\\"--CODEGEN--\\\":11432:11433 */\\n dup2\\n /* \\\"--CODEGEN--\\\":11429:11442 */\\n lt\\n /* \\\"--CODEGEN--\\\":11421:11522 */\\n iszero\\n tag_216\\n jumpi\\n /* \\\"--CODEGEN--\\\":11511:11512 */\\n dup1\\n /* \\\"--CODEGEN--\\\":11506:11509 */\\n dup3\\n /* \\\"--CODEGEN--\\\":11502:11513 */\\n add\\n /* \\\"--CODEGEN--\\\":11496:11514 */\\n mload\\n /* \\\"--CODEGEN--\\\":11492:11493 */\\n dup2\\n /* \\\"--CODEGEN--\\\":11487:11490 */\\n dup5\\n /* \\\"--CODEGEN--\\\":11483:11494 */\\n add\\n /* \\\"--CODEGEN--\\\":11476:11515 */\\n mstore\\n /* \\\"--CODEGEN--\\\":11457:11459 */\\n 0x20\\n /* \\\"--CODEGEN--\\\":11454:11455 */\\n dup2\\n /* \\\"--CODEGEN--\\\":11450:11460 */\\n add\\n /* \\\"--CODEGEN--\\\":11445:11460 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":11421:11522 */\\n jump(tag_215)\\n tag_216:\\n /* \\\"--CODEGEN--\\\":11537:11543 */\\n dup4\\n /* \\\"--CODEGEN--\\\":11534:11535 */\\n dup2\\n /* \\\"--CODEGEN--\\\":11531:11544 */\\n gt\\n /* \\\"--CODEGEN--\\\":11528:11530 */\\n iszero\\n tag_218\\n jumpi\\n /* \\\"--CODEGEN--\\\":11602:11603 */\\n 0x00\\n /* \\\"--CODEGEN--\\\":11593:11599 */\\n dup5\\n /* \\\"--CODEGEN--\\\":11588:11591 */\\n dup5\\n /* \\\"--CODEGEN--\\\":11584:11600 */\\n add\\n /* \\\"--CODEGEN--\\\":11577:11604 */\\n mstore\\n /* \\\"--CODEGEN--\\\":11528:11530 */\\n tag_218:\\n /* \\\"--CODEGEN--\\\":11398:11617 */\\n pop\\n pop\\n pop\\n pop\\n jump\\n /* \\\"--CODEGEN--\\\":11625:11722 */\\n tag_142:\\n 0x00\\n /* \\\"--CODEGEN--\\\":11713:11715 */\\n 0x1f\\n /* \\\"--CODEGEN--\\\":11709:11716 */\\n not\\n /* \\\"--CODEGEN--\\\":11704:11706 */\\n 0x1f\\n /* \\\"--CODEGEN--\\\":11697:11702 */\\n dup4\\n /* \\\"--CODEGEN--\\\":11693:11707 */\\n add\\n /* \\\"--CODEGEN--\\\":11689:11717 */\\n and\\n /* \\\"--CODEGEN--\\\":11679:11717 */\\n swap1\\n pop\\n /* \\\"--CODEGEN--\\\":11673:11722 */\\n swap2\\n swap1\\n pop\\n jump\\n\\n auxdata: 0xa265627a7a72305820bc6fd206f999fbcfe9512092d362c4a7e7309d2bd608f91b9e3120086bea36646c6578706572696d656e74616cf50037\\n}\\n\",\"bytecode\":{\"linkReferences\":{},\"object\":\"608060405234801561001057600080fd5b50610e40806100206000396000f3fe608060405234801561001057600080fd5b5060043610610053576000357c01000000000000000000000000000000000000000000000000000000009004806344e8fd0814610058578063ac45fcd914610074575b600080fd5b610072600480360361006d91908101906108b4565b6100a4565b005b61008e60048036036100899190810190610920565b610319565b60405161009b9190610b9c565b60405180910390f35b6100ac610651565b6080604051908101604052803373ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018481526020018381525090506000816040516020016100f99190610bfc565b604051602081830303815290604052805190602001209050816001600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002019080519060200190610192929190610690565b5060608201518160030190805190602001906101af929190610710565b50905050600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055506000829080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020190805190602001906102b7929190610690565b5060608201518160030190805190602001906102d4929190610710565b505050507f4cbc6aabdd0942d8df984ae683445cc9d498eff032ced24070239d9a65603bb384823360405161030b93929190610bbe565b60405180910390a150505050565b606060008080549050141561036b57600060405190808252806020026020018201604052801561036357816020015b610350610790565b8152602001906001900390816103485790505b50905061064b565b600060018403830290506000816001600080549050030390506001600080549050038111156103d95760006040519080825280602002602001820160405280156103cf57816020015b6103bc610790565b8152602001906001900390816103b45790505b509250505061064b565b60008482039050818111156103ed57600090505b6000600182840301905085811115610403578590505b8060405190808252806020026020018201604052801561043d57816020015b61042a610790565b8152602001906001900390816104225790505b50945060008090505b8181101561064557600081850381548110151561045f57fe5b9060005260206000209060040201608060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105725780601f1061054757610100808354040283529160200191610572565b820191906000526020600020905b81548152906001019060200180831161055557829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106145780601f106105e957610100808354040283529160200191610614565b820191906000526020600020905b8154815290600101906020018083116105f757829003601f168201915b505050505081525050868281518110151561062b57fe5b906020019060200201819052508080600101915050610446565b50505050505b92915050565b608060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106106d157805160ff19168380011785556106ff565b828001600101855582156106ff579182015b828111156106fe5782518255916020019190600101906106e3565b5b50905061070c91906107cf565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061075157805160ff191683800117855561077f565b8280016001018555821561077f579182015b8281111561077e578251825591602001919060010190610763565b5b50905061078c91906107cf565b5090565b608060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081525090565b6107f191905b808211156107ed5760008160009055506001016107d5565b5090565b90565b600082601f830112151561080757600080fd5b813561081a61081582610c4b565b610c1e565b9150808252602083016020830185838301111561083657600080fd5b610841838284610db3565b50505092915050565b600082601f830112151561085d57600080fd5b813561087061086b82610c77565b610c1e565b9150808252602083016020830185838301111561088c57600080fd5b610897838284610db3565b50505092915050565b60006108ac8235610d73565b905092915050565b600080604083850312156108c757600080fd5b600083013567ffffffffffffffff8111156108e157600080fd5b6108ed8582860161084a565b925050602083013567ffffffffffffffff81111561090a57600080fd5b610916858286016107f4565b9150509250929050565b6000806040838503121561093357600080fd5b6000610941858286016108a0565b9250506020610952858286016108a0565b9150509250929050565b60006109688383610b23565b905092915050565b61097981610d7d565b82525050565b61098881610d2d565b82525050565b600061099982610cb0565b6109a38185610ce9565b9350836020820285016109b585610ca3565b60005b848110156109ee5783830388526109d083835161095c565b92506109db82610cdc565b91506020880197506001810190506109b8565b508196508694505050505092915050565b610a0881610d3f565b82525050565b6000610a1982610cbb565b610a238185610cfa565b9350610a33818560208601610dc2565b610a3c81610df5565b840191505092915050565b6000610a5282610cd1565b610a5c8185610d1c565b9350610a6c818560208601610dc2565b610a7581610df5565b840191505092915050565b6000610a8b82610cc6565b610a958185610d0b565b9350610aa5818560208601610dc2565b610aae81610df5565b840191505092915050565b6000608083016000830151610ad1600086018261097f565b506020830151610ae46020860182610b8d565b5060408301518482036040860152610afc8282610a80565b91505060608301518482036060860152610b168282610a0e565b9150508091505092915050565b6000608083016000830151610b3b600086018261097f565b506020830151610b4e6020860182610b8d565b5060408301518482036040860152610b668282610a80565b91505060608301518482036060860152610b808282610a0e565b9150508091505092915050565b610b9681610d69565b82525050565b60006020820190508181036000830152610bb6818461098e565b905092915050565b60006060820190508181036000830152610bd88186610a47565b9050610be760208301856109ff565b610bf46040830184610970565b949350505050565b60006020820190508181036000830152610c168184610ab9565b905092915050565b6000604051905081810181811067ffffffffffffffff82111715610c4157600080fd5b8060405250919050565b600067ffffffffffffffff821115610c6257600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115610c8e57600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610d3882610d49565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000819050919050565b6000610d8882610d8f565b9050919050565b6000610d9a82610da1565b9050919050565b6000610dac82610d49565b9050919050565b82818337600083830152505050565b60005b83811015610de0578082015181840152602081019050610dc5565b83811115610def576000848401525b50505050565b6000601f19601f830116905091905056fea265627a7a72305820bc6fd206f999fbcfe9512092d362c4a7e7309d2bd608f91b9e3120086bea36646c6578706572696d656e74616cf50037\",\"opcodes\":\"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE40 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x53 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP1 PUSH4 0x44E8FD08 EQ PUSH2 0x58 JUMPI DUP1 PUSH4 0xAC45FCD9 EQ PUSH2 0x74 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x72 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x6D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x8B4 JUMP JUMPDEST PUSH2 0xA4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x8E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x89 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x920 JUMP JUMPDEST PUSH2 0x319 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x9B SWAP2 SWAP1 PUSH2 0xB9C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xAC PUSH2 0x651 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0xBFC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 PUSH1 0x1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x192 SWAP3 SWAP2 SWAP1 PUSH2 0x690 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x1AF SWAP3 SWAP2 SWAP1 PUSH2 0x710 JUMP JUMPDEST POP SWAP1 POP POP PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP SWAP1 PUSH1 0x1 DUP3 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE POP PUSH1 0x0 DUP3 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP SWAP1 PUSH1 0x1 DUP3 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2B7 SWAP3 SWAP2 SWAP1 PUSH2 0x690 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2D4 SWAP3 SWAP2 SWAP1 PUSH2 0x710 JUMP JUMPDEST POP POP POP POP PUSH32 0x4CBC6AABDD0942D8DF984AE683445CC9D498EFF032CED24070239D9A65603BB3 DUP5 DUP3 CALLER PUSH1 0x40 MLOAD PUSH2 0x30B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xBBE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP1 SLOAD SWAP1 POP EQ ISZERO PUSH2 0x36B JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x363 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x350 PUSH2 0x790 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x348 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x64B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP5 SUB DUP4 MUL SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD SWAP1 POP SUB SUB SWAP1 POP PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD SWAP1 POP SUB DUP2 GT ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3CF JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x3BC PUSH2 0x790 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x3B4 JUMPI SWAP1 POP JUMPDEST POP SWAP3 POP POP POP PUSH2 0x64B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x3ED JUMPI PUSH1 0x0 SWAP1 POP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 DUP5 SUB ADD SWAP1 POP DUP6 DUP2 GT ISZERO PUSH2 0x403 JUMPI DUP6 SWAP1 POP JUMPDEST DUP1 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x43D JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x42A PUSH2 0x790 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x422 JUMPI SWAP1 POP JUMPDEST POP SWAP5 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x645 JUMPI PUSH1 0x0 DUP2 DUP6 SUB DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x45F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x80 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x572 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x547 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x572 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x555 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x614 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5E9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x614 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x5F7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE POP POP DUP7 DUP3 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x62B JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x446 JUMP JUMPDEST POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x6D1 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x6FF JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x6FF JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x6FE JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x6E3 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x70C SWAP2 SWAP1 PUSH2 0x7CF JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x751 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x77F JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x77F JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x77E JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x763 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x78C SWAP2 SWAP1 PUSH2 0x7CF JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x7F1 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x7ED JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x7D5 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO ISZERO PUSH2 0x807 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x81A PUSH2 0x815 DUP3 PUSH2 0xC4B JUMP JUMPDEST PUSH2 0xC1E JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x836 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x841 DUP4 DUP3 DUP5 PUSH2 0xDB3 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO ISZERO PUSH2 0x85D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x870 PUSH2 0x86B DUP3 PUSH2 0xC77 JUMP JUMPDEST PUSH2 0xC1E JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x88C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x897 DUP4 DUP3 DUP5 PUSH2 0xDB3 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8AC DUP3 CALLDATALOAD PUSH2 0xD73 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x8C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8ED DUP6 DUP3 DUP7 ADD PUSH2 0x84A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x90A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x916 DUP6 DUP3 DUP7 ADD PUSH2 0x7F4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x933 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x941 DUP6 DUP3 DUP7 ADD PUSH2 0x8A0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x952 DUP6 DUP3 DUP7 ADD PUSH2 0x8A0 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x968 DUP4 DUP4 PUSH2 0xB23 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x979 DUP2 PUSH2 0xD7D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x988 DUP2 PUSH2 0xD2D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x999 DUP3 PUSH2 0xCB0 JUMP JUMPDEST PUSH2 0x9A3 DUP2 DUP6 PUSH2 0xCE9 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x9B5 DUP6 PUSH2 0xCA3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x9EE JUMPI DUP4 DUP4 SUB DUP9 MSTORE PUSH2 0x9D0 DUP4 DUP4 MLOAD PUSH2 0x95C JUMP JUMPDEST SWAP3 POP PUSH2 0x9DB DUP3 PUSH2 0xCDC JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP9 ADD SWAP8 POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x9B8 JUMP JUMPDEST POP DUP2 SWAP7 POP DUP7 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA08 DUP2 PUSH2 0xD3F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA19 DUP3 PUSH2 0xCBB JUMP JUMPDEST PUSH2 0xA23 DUP2 DUP6 PUSH2 0xCFA JUMP JUMPDEST SWAP4 POP PUSH2 0xA33 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xDC2 JUMP JUMPDEST PUSH2 0xA3C DUP2 PUSH2 0xDF5 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA52 DUP3 PUSH2 0xCD1 JUMP JUMPDEST PUSH2 0xA5C DUP2 DUP6 PUSH2 0xD1C JUMP JUMPDEST SWAP4 POP PUSH2 0xA6C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xDC2 JUMP JUMPDEST PUSH2 0xA75 DUP2 PUSH2 0xDF5 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA8B DUP3 PUSH2 0xCC6 JUMP JUMPDEST PUSH2 0xA95 DUP2 DUP6 PUSH2 0xD0B JUMP JUMPDEST SWAP4 POP PUSH2 0xAA5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xDC2 JUMP JUMPDEST PUSH2 0xAAE DUP2 PUSH2 0xDF5 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD PUSH2 0xAD1 PUSH1 0x0 DUP7 ADD DUP3 PUSH2 0x97F JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0xAE4 PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0xB8D JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0xAFC DUP3 DUP3 PUSH2 0xA80 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x60 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0xB16 DUP3 DUP3 PUSH2 0xA0E JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD PUSH2 0xB3B PUSH1 0x0 DUP7 ADD DUP3 PUSH2 0x97F JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0xB4E PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0xB8D JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0xB66 DUP3 DUP3 PUSH2 0xA80 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x60 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0xB80 DUP3 DUP3 PUSH2 0xA0E JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xB96 DUP2 PUSH2 0xD69 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xBB6 DUP2 DUP5 PUSH2 0x98E JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xBD8 DUP2 DUP7 PUSH2 0xA47 JUMP JUMPDEST SWAP1 POP PUSH2 0xBE7 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x9FF JUMP JUMPDEST PUSH2 0xBF4 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x970 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xC16 DUP2 DUP5 PUSH2 0xAB9 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xC41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xC62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xC8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD38 DUP3 PUSH2 0xD49 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD88 DUP3 PUSH2 0xD8F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD9A DUP3 PUSH2 0xDA1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDAC DUP3 PUSH2 0xD49 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDE0 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xDC5 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xDEF JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH6 0x627A7A723058 KECCAK256 0xbc PUSH16 0xD206F999FBCFE9512092D362C4A7E730 SWAP14 0x2b 0xd6 ADDMOD 0xf9 SHL SWAP15 BALANCE KECCAK256 ADDMOD PUSH12 0xEA36646C6578706572696D65 PUSH15 0x74616CF50037000000000000000000 \",\"sourceMap\":\"58:1485:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;58:1485:0;;;;;;;\"},\"gasEstimates\":{\"creation\":{\"codeDepositCost\":\"729600\",\"executionCost\":\"760\",\"totalCost\":\"730360\"},\"external\":{\"listMessages(uint256,uint256)\":\"infinite\",\"publish(string,bytes)\":\"infinite\"}},\"legacyAssembly\":{\".code\":[{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"80\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":58,\"end\":1543,\"name\":\"MSTORE\"},{\"begin\":58,\"end\":1543,\"name\":\"CALLVALUE\"},{\"begin\":8,\"end\":17,\"name\":\"DUP1\"},{\"begin\":5,\"end\":7,\"name\":\"ISZERO\"},{\"begin\":5,\"end\":7,\"name\":\"PUSH [tag]\",\"value\":\"1\"},{\"begin\":5,\"end\":7,\"name\":\"JUMPI\"},{\"begin\":30,\"end\":31,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":27,\"end\":28,\"name\":\"DUP1\"},{\"begin\":20,\"end\":32,\"name\":\"REVERT\"},{\"begin\":5,\"end\":7,\"name\":\"tag\",\"value\":\"1\"},{\"begin\":5,\"end\":7,\"name\":\"JUMPDEST\"},{\"begin\":58,\"end\":1543,\"name\":\"POP\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH #[$]\",\"value\":\"0000000000000000000000000000000000000000000000000000000000000000\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP1\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH [$]\",\"value\":\"0000000000000000000000000000000000000000000000000000000000000000\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":58,\"end\":1543,\"name\":\"CODECOPY\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":58,\"end\":1543,\"name\":\"RETURN\"}],\".data\":{\"0\":{\".auxdata\":\"a265627a7a72305820bc6fd206f999fbcfe9512092d362c4a7e7309d2bd608f91b9e3120086bea36646c6578706572696d656e74616cf50037\",\".code\":[{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"80\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":58,\"end\":1543,\"name\":\"MSTORE\"},{\"begin\":58,\"end\":1543,\"name\":\"CALLVALUE\"},{\"begin\":8,\"end\":17,\"name\":\"DUP1\"},{\"begin\":5,\"end\":7,\"name\":\"ISZERO\"},{\"begin\":5,\"end\":7,\"name\":\"PUSH [tag]\",\"value\":\"1\"},{\"begin\":5,\"end\":7,\"name\":\"JUMPI\"},{\"begin\":30,\"end\":31,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":27,\"end\":28,\"name\":\"DUP1\"},{\"begin\":20,\"end\":32,\"name\":\"REVERT\"},{\"begin\":5,\"end\":7,\"name\":\"tag\",\"value\":\"1\"},{\"begin\":5,\"end\":7,\"name\":\"JUMPDEST\"},{\"begin\":58,\"end\":1543,\"name\":\"POP\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"4\"},{\"begin\":58,\"end\":1543,\"name\":\"CALLDATASIZE\"},{\"begin\":58,\"end\":1543,\"name\":\"LT\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH [tag]\",\"value\":\"2\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPI\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":58,\"end\":1543,\"name\":\"CALLDATALOAD\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"100000000000000000000000000000000000000000000000000000000\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"DIV\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP1\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"44E8FD08\"},{\"begin\":58,\"end\":1543,\"name\":\"EQ\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH [tag]\",\"value\":\"3\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPI\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP1\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"AC45FCD9\"},{\"begin\":58,\"end\":1543,\"name\":\"EQ\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH [tag]\",\"value\":\"4\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPI\"},{\"begin\":58,\"end\":1543,\"name\":\"tag\",\"value\":\"2\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPDEST\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP1\"},{\"begin\":58,\"end\":1543,\"name\":\"REVERT\"},{\"begin\":420,\"end\":781,\"name\":\"tag\",\"value\":\"3\"},{\"begin\":420,\"end\":781,\"name\":\"JUMPDEST\"},{\"begin\":420,\"end\":781,\"name\":\"PUSH [tag]\",\"value\":\"5\"},{\"begin\":420,\"end\":781,\"name\":\"PUSH\",\"value\":\"4\"},{\"begin\":420,\"end\":781,\"name\":\"DUP1\"},{\"begin\":420,\"end\":781,\"name\":\"CALLDATASIZE\"},{\"begin\":420,\"end\":781,\"name\":\"SUB\"},{\"begin\":420,\"end\":781,\"name\":\"PUSH [tag]\",\"value\":\"6\"},{\"begin\":420,\"end\":781,\"name\":\"SWAP2\"},{\"begin\":420,\"end\":781,\"name\":\"SWAP1\"},{\"begin\":420,\"end\":781,\"name\":\"DUP2\"},{\"begin\":420,\"end\":781,\"name\":\"ADD\"},{\"begin\":420,\"end\":781,\"name\":\"SWAP1\"},{\"begin\":420,\"end\":781,\"name\":\"PUSH [tag]\",\"value\":\"7\"},{\"begin\":420,\"end\":781,\"name\":\"JUMP\"},{\"begin\":420,\"end\":781,\"name\":\"tag\",\"value\":\"6\"},{\"begin\":420,\"end\":781,\"name\":\"JUMPDEST\"},{\"begin\":420,\"end\":781,\"name\":\"PUSH [tag]\",\"value\":\"8\"},{\"begin\":420,\"end\":781,\"name\":\"JUMP\",\"value\":\"[in]\"},{\"begin\":420,\"end\":781,\"name\":\"tag\",\"value\":\"5\"},{\"begin\":420,\"end\":781,\"name\":\"JUMPDEST\"},{\"begin\":420,\"end\":781,\"name\":\"STOP\"},{\"begin\":787,\"end\":1541,\"name\":\"tag\",\"value\":\"4\"},{\"begin\":787,\"end\":1541,\"name\":\"JUMPDEST\"},{\"begin\":787,\"end\":1541,\"name\":\"PUSH [tag]\",\"value\":\"9\"},{\"begin\":787,\"end\":1541,\"name\":\"PUSH\",\"value\":\"4\"},{\"begin\":787,\"end\":1541,\"name\":\"DUP1\"},{\"begin\":787,\"end\":1541,\"name\":\"CALLDATASIZE\"},{\"begin\":787,\"end\":1541,\"name\":\"SUB\"},{\"begin\":787,\"end\":1541,\"name\":\"PUSH [tag]\",\"value\":\"10\"},{\"begin\":787,\"end\":1541,\"name\":\"SWAP2\"},{\"begin\":787,\"end\":1541,\"name\":\"SWAP1\"},{\"begin\":787,\"end\":1541,\"name\":\"DUP2\"},{\"begin\":787,\"end\":1541,\"name\":\"ADD\"},{\"begin\":787,\"end\":1541,\"name\":\"SWAP1\"},{\"begin\":787,\"end\":1541,\"name\":\"PUSH [tag]\",\"value\":\"11\"},{\"begin\":787,\"end\":1541,\"name\":\"JUMP\"},{\"begin\":787,\"end\":1541,\"name\":\"tag\",\"value\":\"10\"},{\"begin\":787,\"end\":1541,\"name\":\"JUMPDEST\"},{\"begin\":787,\"end\":1541,\"name\":\"PUSH [tag]\",\"value\":\"12\"},{\"begin\":787,\"end\":1541,\"name\":\"JUMP\",\"value\":\"[in]\"},{\"begin\":787,\"end\":1541,\"name\":\"tag\",\"value\":\"9\"},{\"begin\":787,\"end\":1541,\"name\":\"JUMPDEST\"},{\"begin\":787,\"end\":1541,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":787,\"end\":1541,\"name\":\"MLOAD\"},{\"begin\":787,\"end\":1541,\"name\":\"PUSH [tag]\",\"value\":\"13\"},{\"begin\":787,\"end\":1541,\"name\":\"SWAP2\"},{\"begin\":787,\"end\":1541,\"name\":\"SWAP1\"},{\"begin\":787,\"end\":1541,\"name\":\"PUSH [tag]\",\"value\":\"14\"},{\"begin\":787,\"end\":1541,\"name\":\"JUMP\"},{\"begin\":787,\"end\":1541,\"name\":\"tag\",\"value\":\"13\"},{\"begin\":787,\"end\":1541,\"name\":\"JUMPDEST\"},{\"begin\":787,\"end\":1541,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":787,\"end\":1541,\"name\":\"MLOAD\"},{\"begin\":787,\"end\":1541,\"name\":\"DUP1\"},{\"begin\":787,\"end\":1541,\"name\":\"SWAP2\"},{\"begin\":787,\"end\":1541,\"name\":\"SUB\"},{\"begin\":787,\"end\":1541,\"name\":\"SWAP1\"},{\"begin\":787,\"end\":1541,\"name\":\"RETURN\"},{\"begin\":420,\"end\":781,\"name\":\"tag\",\"value\":\"8\"},{\"begin\":420,\"end\":781,\"name\":\"JUMPDEST\"},{\"begin\":498,\"end\":517,\"name\":\"PUSH [tag]\",\"value\":\"16\"},{\"begin\":498,\"end\":517,\"name\":\"PUSH [tag]\",\"value\":\"17\"},{\"begin\":498,\"end\":517,\"name\":\"JUMP\",\"value\":\"[in]\"},{\"begin\":498,\"end\":517,\"name\":\"tag\",\"value\":\"16\"},{\"begin\":498,\"end\":517,\"name\":\"JUMPDEST\"},{\"begin\":520,\"end\":561,\"name\":\"PUSH\",\"value\":\"80\"},{\"begin\":520,\"end\":561,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":520,\"end\":561,\"name\":\"MLOAD\"},{\"begin\":520,\"end\":561,\"name\":\"SWAP1\"},{\"begin\":520,\"end\":561,\"name\":\"DUP2\"},{\"begin\":520,\"end\":561,\"name\":\"ADD\"},{\"begin\":520,\"end\":561,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":520,\"end\":561,\"name\":\"MSTORE\"},{\"begin\":520,\"end\":561,\"name\":\"DUP1\"},{\"begin\":528,\"end\":538,\"name\":\"CALLER\"},{\"begin\":520,\"end\":561,\"name\":\"PUSH\",\"value\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\"},{\"begin\":520,\"end\":561,\"name\":\"AND\"},{\"begin\":520,\"end\":561,\"name\":\"DUP2\"},{\"begin\":520,\"end\":561,\"name\":\"MSTORE\"},{\"begin\":520,\"end\":561,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":520,\"end\":561,\"name\":\"ADD\"},{\"begin\":540,\"end\":543,\"name\":\"TIMESTAMP\"},{\"begin\":520,\"end\":561,\"name\":\"DUP2\"},{\"begin\":520,\"end\":561,\"name\":\"MSTORE\"},{\"begin\":520,\"end\":561,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":520,\"end\":561,\"name\":\"ADD\"},{\"begin\":545,\"end\":553,\"name\":\"DUP5\"},{\"begin\":520,\"end\":561,\"name\":\"DUP2\"},{\"begin\":520,\"end\":561,\"name\":\"MSTORE\"},{\"begin\":520,\"end\":561,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":520,\"end\":561,\"name\":\"ADD\"},{\"begin\":555,\"end\":560,\"name\":\"DUP4\"},{\"begin\":520,\"end\":561,\"name\":\"DUP2\"},{\"begin\":520,\"end\":561,\"name\":\"MSTORE\"},{\"begin\":520,\"end\":561,\"name\":\"POP\"},{\"begin\":498,\"end\":561,\"name\":\"SWAP1\"},{\"begin\":498,\"end\":561,\"name\":\"POP\"},{\"begin\":571,\"end\":582,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":606,\"end\":610,\"name\":\"DUP2\"},{\"begin\":595,\"end\":611,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":595,\"end\":611,\"name\":\"MLOAD\"},{\"begin\":595,\"end\":611,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":595,\"end\":611,\"name\":\"ADD\"},{\"begin\":595,\"end\":611,\"name\":\"PUSH [tag]\",\"value\":\"18\"},{\"begin\":595,\"end\":611,\"name\":\"SWAP2\"},{\"begin\":595,\"end\":611,\"name\":\"SWAP1\"},{\"begin\":595,\"end\":611,\"name\":\"PUSH [tag]\",\"value\":\"19\"},{\"begin\":595,\"end\":611,\"name\":\"JUMP\"},{\"begin\":595,\"end\":611,\"name\":\"tag\",\"value\":\"18\"},{\"begin\":595,\"end\":611,\"name\":\"JUMPDEST\"},{\"begin\":595,\"end\":611,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":595,\"end\":611,\"name\":\"MLOAD\"},{\"begin\":49,\"end\":53,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":39,\"end\":46,\"name\":\"DUP2\"},{\"begin\":30,\"end\":37,\"name\":\"DUP4\"},{\"begin\":26,\"end\":47,\"name\":\"SUB\"},{\"begin\":22,\"end\":54,\"name\":\"SUB\"},{\"begin\":13,\"end\":20,\"name\":\"DUP2\"},{\"begin\":6,\"end\":55,\"name\":\"MSTORE\"},{\"begin\":595,\"end\":611,\"name\":\"SWAP1\"},{\"begin\":595,\"end\":611,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":595,\"end\":611,\"name\":\"MSTORE\"},{\"begin\":585,\"end\":612,\"name\":\"DUP1\"},{\"begin\":585,\"end\":612,\"name\":\"MLOAD\"},{\"begin\":585,\"end\":612,\"name\":\"SWAP1\"},{\"begin\":585,\"end\":612,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":585,\"end\":612,\"name\":\"ADD\"},{\"begin\":585,\"end\":612,\"name\":\"KECCAK256\"},{\"begin\":571,\"end\":612,\"name\":\"SWAP1\"},{\"begin\":571,\"end\":612,\"name\":\"POP\"},{\"begin\":644,\"end\":648,\"name\":\"DUP2\"},{\"begin\":622,\"end\":636,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":622,\"end\":641,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":637,\"end\":640,\"name\":\"DUP4\"},{\"begin\":622,\"end\":641,\"name\":\"DUP2\"},{\"begin\":622,\"end\":641,\"name\":\"MSTORE\"},{\"begin\":622,\"end\":641,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":622,\"end\":641,\"name\":\"ADD\"},{\"begin\":622,\"end\":641,\"name\":\"SWAP1\"},{\"begin\":622,\"end\":641,\"name\":\"DUP2\"},{\"begin\":622,\"end\":641,\"name\":\"MSTORE\"},{\"begin\":622,\"end\":641,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":622,\"end\":641,\"name\":\"ADD\"},{\"begin\":622,\"end\":641,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":622,\"end\":641,\"name\":\"KECCAK256\"},{\"begin\":622,\"end\":648,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":622,\"end\":648,\"name\":\"DUP3\"},{\"begin\":622,\"end\":648,\"name\":\"ADD\"},{\"begin\":622,\"end\":648,\"name\":\"MLOAD\"},{\"begin\":622,\"end\":648,\"name\":\"DUP2\"},{\"begin\":622,\"end\":648,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":622,\"end\":648,\"name\":\"ADD\"},{\"begin\":622,\"end\":648,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":622,\"end\":648,\"name\":\"PUSH\",\"value\":\"100\"},{\"begin\":622,\"end\":648,\"name\":\"EXP\"},{\"begin\":622,\"end\":648,\"name\":\"DUP2\"},{\"begin\":622,\"end\":648,\"name\":\"SLOAD\"},{\"begin\":622,\"end\":648,\"name\":\"DUP2\"},{\"begin\":622,\"end\":648,\"name\":\"PUSH\",\"value\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\"},{\"begin\":622,\"end\":648,\"name\":\"MUL\"},{\"begin\":622,\"end\":648,\"name\":\"NOT\"},{\"begin\":622,\"end\":648,\"name\":\"AND\"},{\"begin\":622,\"end\":648,\"name\":\"SWAP1\"},{\"begin\":622,\"end\":648,\"name\":\"DUP4\"},{\"begin\":622,\"end\":648,\"name\":\"PUSH\",\"value\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\"},{\"begin\":622,\"end\":648,\"name\":\"AND\"},{\"begin\":622,\"end\":648,\"name\":\"MUL\"},{\"begin\":622,\"end\":648,\"name\":\"OR\"},{\"begin\":622,\"end\":648,\"name\":\"SWAP1\"},{\"begin\":622,\"end\":648,\"name\":\"SSTORE\"},{\"begin\":622,\"end\":648,\"name\":\"POP\"},{\"begin\":622,\"end\":648,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":622,\"end\":648,\"name\":\"DUP3\"},{\"begin\":622,\"end\":648,\"name\":\"ADD\"},{\"begin\":622,\"end\":648,\"name\":\"MLOAD\"},{\"begin\":622,\"end\":648,\"name\":\"DUP2\"},{\"begin\":622,\"end\":648,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":622,\"end\":648,\"name\":\"ADD\"},{\"begin\":622,\"end\":648,\"name\":\"SSTORE\"},{\"begin\":622,\"end\":648,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":622,\"end\":648,\"name\":\"DUP3\"},{\"begin\":622,\"end\":648,\"name\":\"ADD\"},{\"begin\":622,\"end\":648,\"name\":\"MLOAD\"},{\"begin\":622,\"end\":648,\"name\":\"DUP2\"},{\"begin\":622,\"end\":648,\"name\":\"PUSH\",\"value\":\"2\"},{\"begin\":622,\"end\":648,\"name\":\"ADD\"},{\"begin\":622,\"end\":648,\"name\":\"SWAP1\"},{\"begin\":622,\"end\":648,\"name\":\"DUP1\"},{\"begin\":622,\"end\":648,\"name\":\"MLOAD\"},{\"begin\":622,\"end\":648,\"name\":\"SWAP1\"},{\"begin\":622,\"end\":648,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":622,\"end\":648,\"name\":\"ADD\"},{\"begin\":622,\"end\":648,\"name\":\"SWAP1\"},{\"begin\":622,\"end\":648,\"name\":\"PUSH [tag]\",\"value\":\"20\"},{\"begin\":622,\"end\":648,\"name\":\"SWAP3\"},{\"begin\":622,\"end\":648,\"name\":\"SWAP2\"},{\"begin\":622,\"end\":648,\"name\":\"SWAP1\"},{\"begin\":622,\"end\":648,\"name\":\"PUSH [tag]\",\"value\":\"21\"},{\"begin\":622,\"end\":648,\"name\":\"JUMP\",\"value\":\"[in]\"},{\"begin\":622,\"end\":648,\"name\":\"tag\",\"value\":\"20\"},{\"begin\":622,\"end\":648,\"name\":\"JUMPDEST\"},{\"begin\":622,\"end\":648,\"name\":\"POP\"},{\"begin\":622,\"end\":648,\"name\":\"PUSH\",\"value\":\"60\"},{\"begin\":622,\"end\":648,\"name\":\"DUP3\"},{\"begin\":622,\"end\":648,\"name\":\"ADD\"},{\"begin\":622,\"end\":648,\"name\":\"MLOAD\"},{\"begin\":622,\"end\":648,\"name\":\"DUP2\"},{\"begin\":622,\"end\":648,\"name\":\"PUSH\",\"value\":\"3\"},{\"begin\":622,\"end\":648,\"name\":\"ADD\"},{\"begin\":622,\"end\":648,\"name\":\"SWAP1\"},{\"begin\":622,\"end\":648,\"name\":\"DUP1\"},{\"begin\":622,\"end\":648,\"name\":\"MLOAD\"},{\"begin\":622,\"end\":648,\"name\":\"SWAP1\"},{\"begin\":622,\"end\":648,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":622,\"end\":648,\"name\":\"ADD\"},{\"begin\":622,\"end\":648,\"name\":\"SWAP1\"},{\"begin\":622,\"end\":648,\"name\":\"PUSH [tag]\",\"value\":\"22\"},{\"begin\":622,\"end\":648,\"name\":\"SWAP3\"},{\"begin\":622,\"end\":648,\"name\":\"SWAP2\"},{\"begin\":622,\"end\":648,\"name\":\"SWAP1\"},{\"begin\":622,\"end\":648,\"name\":\"PUSH [tag]\",\"value\":\"23\"},{\"begin\":622,\"end\":648,\"name\":\"JUMP\",\"value\":\"[in]\"},{\"begin\":622,\"end\":648,\"name\":\"tag\",\"value\":\"22\"},{\"begin\":622,\"end\":648,\"name\":\"JUMPDEST\"},{\"begin\":622,\"end\":648,\"name\":\"POP\"},{\"begin\":622,\"end\":648,\"name\":\"SWAP1\"},{\"begin\":622,\"end\":648,\"name\":\"POP\"},{\"begin\":622,\"end\":648,\"name\":\"POP\"},{\"begin\":658,\"end\":672,\"name\":\"PUSH\",\"value\":\"2\"},{\"begin\":658,\"end\":684,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":673,\"end\":683,\"name\":\"CALLER\"},{\"begin\":658,\"end\":684,\"name\":\"PUSH\",\"value\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\"},{\"begin\":658,\"end\":684,\"name\":\"AND\"},{\"begin\":658,\"end\":684,\"name\":\"PUSH\",\"value\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\"},{\"begin\":658,\"end\":684,\"name\":\"AND\"},{\"begin\":658,\"end\":684,\"name\":\"DUP2\"},{\"begin\":658,\"end\":684,\"name\":\"MSTORE\"},{\"begin\":658,\"end\":684,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":658,\"end\":684,\"name\":\"ADD\"},{\"begin\":658,\"end\":684,\"name\":\"SWAP1\"},{\"begin\":658,\"end\":684,\"name\":\"DUP2\"},{\"begin\":658,\"end\":684,\"name\":\"MSTORE\"},{\"begin\":658,\"end\":684,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":658,\"end\":684,\"name\":\"ADD\"},{\"begin\":658,\"end\":684,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":658,\"end\":684,\"name\":\"KECCAK256\"},{\"begin\":690,\"end\":693,\"name\":\"DUP2\"},{\"begin\":658,\"end\":694,\"name\":\"SWAP1\"},{\"begin\":658,\"end\":694,\"name\":\"DUP1\"},{\"begin\":39,\"end\":40,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":33,\"end\":36,\"name\":\"DUP2\"},{\"begin\":27,\"end\":37,\"name\":\"SLOAD\"},{\"begin\":23,\"end\":41,\"name\":\"ADD\"},{\"begin\":57,\"end\":67,\"name\":\"DUP1\"},{\"begin\":52,\"end\":55,\"name\":\"DUP3\"},{\"begin\":45,\"end\":68,\"name\":\"SSTORE\"},{\"begin\":79,\"end\":89,\"name\":\"DUP1\"},{\"begin\":72,\"end\":89,\"name\":\"SWAP2\"},{\"begin\":72,\"end\":89,\"name\":\"POP\"},{\"begin\":0,\"end\":93,\"name\":\"POP\"},{\"begin\":658,\"end\":694,\"name\":\"SWAP1\"},{\"begin\":658,\"end\":694,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":658,\"end\":694,\"name\":\"DUP3\"},{\"begin\":658,\"end\":694,\"name\":\"SUB\"},{\"begin\":658,\"end\":694,\"name\":\"SWAP1\"},{\"begin\":658,\"end\":694,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":658,\"end\":694,\"name\":\"MSTORE\"},{\"begin\":658,\"end\":694,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":658,\"end\":694,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":658,\"end\":694,\"name\":\"KECCAK256\"},{\"begin\":658,\"end\":694,\"name\":\"ADD\"},{\"begin\":658,\"end\":694,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":658,\"end\":694,\"name\":\"SWAP1\"},{\"begin\":658,\"end\":694,\"name\":\"SWAP2\"},{\"begin\":658,\"end\":694,\"name\":\"SWAP3\"},{\"begin\":658,\"end\":694,\"name\":\"SWAP1\"},{\"begin\":658,\"end\":694,\"name\":\"SWAP2\"},{\"begin\":658,\"end\":694,\"name\":\"SWAP1\"},{\"begin\":658,\"end\":694,\"name\":\"SWAP2\"},{\"begin\":658,\"end\":694,\"name\":\"POP\"},{\"begin\":658,\"end\":694,\"name\":\"SSTORE\"},{\"begin\":658,\"end\":694,\"name\":\"POP\"},{\"begin\":704,\"end\":712,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":718,\"end\":722,\"name\":\"DUP3\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP1\"},{\"begin\":704,\"end\":723,\"name\":\"DUP1\"},{\"begin\":39,\"end\":40,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":33,\"end\":36,\"name\":\"DUP2\"},{\"begin\":27,\"end\":37,\"name\":\"SLOAD\"},{\"begin\":23,\"end\":41,\"name\":\"ADD\"},{\"begin\":57,\"end\":67,\"name\":\"DUP1\"},{\"begin\":52,\"end\":55,\"name\":\"DUP3\"},{\"begin\":45,\"end\":68,\"name\":\"SSTORE\"},{\"begin\":79,\"end\":89,\"name\":\"DUP1\"},{\"begin\":72,\"end\":89,\"name\":\"SWAP2\"},{\"begin\":72,\"end\":89,\"name\":\"POP\"},{\"begin\":0,\"end\":93,\"name\":\"POP\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP1\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":704,\"end\":723,\"name\":\"DUP3\"},{\"begin\":704,\"end\":723,\"name\":\"SUB\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP1\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":704,\"end\":723,\"name\":\"MSTORE\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":704,\"end\":723,\"name\":\"KECCAK256\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP1\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH\",\"value\":\"4\"},{\"begin\":704,\"end\":723,\"name\":\"MUL\"},{\"begin\":704,\"end\":723,\"name\":\"ADD\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP1\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP2\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP3\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP1\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP2\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP1\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP2\"},{\"begin\":704,\"end\":723,\"name\":\"POP\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":704,\"end\":723,\"name\":\"DUP3\"},{\"begin\":704,\"end\":723,\"name\":\"ADD\"},{\"begin\":704,\"end\":723,\"name\":\"MLOAD\"},{\"begin\":704,\"end\":723,\"name\":\"DUP2\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":704,\"end\":723,\"name\":\"ADD\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH\",\"value\":\"100\"},{\"begin\":704,\"end\":723,\"name\":\"EXP\"},{\"begin\":704,\"end\":723,\"name\":\"DUP2\"},{\"begin\":704,\"end\":723,\"name\":\"SLOAD\"},{\"begin\":704,\"end\":723,\"name\":\"DUP2\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH\",\"value\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\"},{\"begin\":704,\"end\":723,\"name\":\"MUL\"},{\"begin\":704,\"end\":723,\"name\":\"NOT\"},{\"begin\":704,\"end\":723,\"name\":\"AND\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP1\"},{\"begin\":704,\"end\":723,\"name\":\"DUP4\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH\",\"value\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\"},{\"begin\":704,\"end\":723,\"name\":\"AND\"},{\"begin\":704,\"end\":723,\"name\":\"MUL\"},{\"begin\":704,\"end\":723,\"name\":\"OR\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP1\"},{\"begin\":704,\"end\":723,\"name\":\"SSTORE\"},{\"begin\":704,\"end\":723,\"name\":\"POP\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":704,\"end\":723,\"name\":\"DUP3\"},{\"begin\":704,\"end\":723,\"name\":\"ADD\"},{\"begin\":704,\"end\":723,\"name\":\"MLOAD\"},{\"begin\":704,\"end\":723,\"name\":\"DUP2\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":704,\"end\":723,\"name\":\"ADD\"},{\"begin\":704,\"end\":723,\"name\":\"SSTORE\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":704,\"end\":723,\"name\":\"DUP3\"},{\"begin\":704,\"end\":723,\"name\":\"ADD\"},{\"begin\":704,\"end\":723,\"name\":\"MLOAD\"},{\"begin\":704,\"end\":723,\"name\":\"DUP2\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH\",\"value\":\"2\"},{\"begin\":704,\"end\":723,\"name\":\"ADD\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP1\"},{\"begin\":704,\"end\":723,\"name\":\"DUP1\"},{\"begin\":704,\"end\":723,\"name\":\"MLOAD\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP1\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":704,\"end\":723,\"name\":\"ADD\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP1\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH [tag]\",\"value\":\"26\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP3\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP2\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP1\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH [tag]\",\"value\":\"21\"},{\"begin\":704,\"end\":723,\"name\":\"JUMP\",\"value\":\"[in]\"},{\"begin\":704,\"end\":723,\"name\":\"tag\",\"value\":\"26\"},{\"begin\":704,\"end\":723,\"name\":\"JUMPDEST\"},{\"begin\":704,\"end\":723,\"name\":\"POP\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH\",\"value\":\"60\"},{\"begin\":704,\"end\":723,\"name\":\"DUP3\"},{\"begin\":704,\"end\":723,\"name\":\"ADD\"},{\"begin\":704,\"end\":723,\"name\":\"MLOAD\"},{\"begin\":704,\"end\":723,\"name\":\"DUP2\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH\",\"value\":\"3\"},{\"begin\":704,\"end\":723,\"name\":\"ADD\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP1\"},{\"begin\":704,\"end\":723,\"name\":\"DUP1\"},{\"begin\":704,\"end\":723,\"name\":\"MLOAD\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP1\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":704,\"end\":723,\"name\":\"ADD\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP1\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH [tag]\",\"value\":\"27\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP3\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP2\"},{\"begin\":704,\"end\":723,\"name\":\"SWAP1\"},{\"begin\":704,\"end\":723,\"name\":\"PUSH [tag]\",\"value\":\"23\"},{\"begin\":704,\"end\":723,\"name\":\"JUMP\",\"value\":\"[in]\"},{\"begin\":704,\"end\":723,\"name\":\"tag\",\"value\":\"27\"},{\"begin\":704,\"end\":723,\"name\":\"JUMPDEST\"},{\"begin\":704,\"end\":723,\"name\":\"POP\"},{\"begin\":704,\"end\":723,\"name\":\"POP\"},{\"begin\":704,\"end\":723,\"name\":\"POP\"},{\"begin\":704,\"end\":723,\"name\":\"POP\"},{\"begin\":738,\"end\":774,\"name\":\"PUSH\",\"value\":\"4CBC6AABDD0942D8DF984AE683445CC9D498EFF032CED24070239D9A65603BB3\"},{\"begin\":748,\"end\":756,\"name\":\"DUP5\"},{\"begin\":758,\"end\":761,\"name\":\"DUP3\"},{\"begin\":763,\"end\":773,\"name\":\"CALLER\"},{\"begin\":738,\"end\":774,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":738,\"end\":774,\"name\":\"MLOAD\"},{\"begin\":738,\"end\":774,\"name\":\"PUSH [tag]\",\"value\":\"28\"},{\"begin\":738,\"end\":774,\"name\":\"SWAP4\"},{\"begin\":738,\"end\":774,\"name\":\"SWAP3\"},{\"begin\":738,\"end\":774,\"name\":\"SWAP2\"},{\"begin\":738,\"end\":774,\"name\":\"SWAP1\"},{\"begin\":738,\"end\":774,\"name\":\"PUSH [tag]\",\"value\":\"29\"},{\"begin\":738,\"end\":774,\"name\":\"JUMP\"},{\"begin\":738,\"end\":774,\"name\":\"tag\",\"value\":\"28\"},{\"begin\":738,\"end\":774,\"name\":\"JUMPDEST\"},{\"begin\":738,\"end\":774,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":738,\"end\":774,\"name\":\"MLOAD\"},{\"begin\":738,\"end\":774,\"name\":\"DUP1\"},{\"begin\":738,\"end\":774,\"name\":\"SWAP2\"},{\"begin\":738,\"end\":774,\"name\":\"SUB\"},{\"begin\":738,\"end\":774,\"name\":\"SWAP1\"},{\"begin\":738,\"end\":774,\"name\":\"LOG1\"},{\"begin\":420,\"end\":781,\"name\":\"POP\"},{\"begin\":420,\"end\":781,\"name\":\"POP\"},{\"begin\":420,\"end\":781,\"name\":\"POP\"},{\"begin\":420,\"end\":781,\"name\":\"POP\"},{\"begin\":420,\"end\":781,\"name\":\"JUMP\",\"value\":\"[out]\"},{\"begin\":787,\"end\":1541,\"name\":\"tag\",\"value\":\"12\"},{\"begin\":787,\"end\":1541,\"name\":\"JUMPDEST\"},{\"begin\":861,\"end\":883,\"name\":\"PUSH\",\"value\":\"60\"},{\"begin\":918,\"end\":919,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":899,\"end\":907,\"name\":\"DUP1\"},{\"begin\":899,\"end\":914,\"name\":\"DUP1\"},{\"begin\":899,\"end\":914,\"name\":\"SLOAD\"},{\"begin\":899,\"end\":914,\"name\":\"SWAP1\"},{\"begin\":899,\"end\":914,\"name\":\"POP\"},{\"begin\":899,\"end\":919,\"name\":\"EQ\"},{\"begin\":895,\"end\":969,\"name\":\"ISZERO\"},{\"begin\":895,\"end\":969,\"name\":\"PUSH [tag]\",\"value\":\"31\"},{\"begin\":895,\"end\":969,\"name\":\"JUMPI\"},{\"begin\":956,\"end\":957,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":942,\"end\":958,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":942,\"end\":958,\"name\":\"MLOAD\"},{\"begin\":942,\"end\":958,\"name\":\"SWAP1\"},{\"begin\":942,\"end\":958,\"name\":\"DUP1\"},{\"begin\":942,\"end\":958,\"name\":\"DUP3\"},{\"begin\":942,\"end\":958,\"name\":\"MSTORE\"},{\"begin\":942,\"end\":958,\"name\":\"DUP1\"},{\"begin\":942,\"end\":958,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":942,\"end\":958,\"name\":\"MUL\"},{\"begin\":942,\"end\":958,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":942,\"end\":958,\"name\":\"ADD\"},{\"begin\":942,\"end\":958,\"name\":\"DUP3\"},{\"begin\":942,\"end\":958,\"name\":\"ADD\"},{\"begin\":942,\"end\":958,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":942,\"end\":958,\"name\":\"MSTORE\"},{\"begin\":942,\"end\":958,\"name\":\"DUP1\"},{\"begin\":942,\"end\":958,\"name\":\"ISZERO\"},{\"begin\":942,\"end\":958,\"name\":\"PUSH [tag]\",\"value\":\"32\"},{\"begin\":942,\"end\":958,\"name\":\"JUMPI\"},{\"begin\":942,\"end\":958,\"name\":\"DUP2\"},{\"begin\":942,\"end\":958,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":942,\"end\":958,\"name\":\"ADD\"},{\"begin\":942,\"end\":958,\"name\":\"tag\",\"value\":\"33\"},{\"begin\":942,\"end\":958,\"name\":\"JUMPDEST\"},{\"begin\":942,\"end\":958,\"name\":\"PUSH [tag]\",\"value\":\"34\"},{\"begin\":942,\"end\":958,\"name\":\"PUSH [tag]\",\"value\":\"35\"},{\"begin\":942,\"end\":958,\"name\":\"JUMP\",\"value\":\"[in]\"},{\"begin\":942,\"end\":958,\"name\":\"tag\",\"value\":\"34\"},{\"begin\":942,\"end\":958,\"name\":\"JUMPDEST\"},{\"begin\":942,\"end\":958,\"name\":\"DUP2\"},{\"begin\":942,\"end\":958,\"name\":\"MSTORE\"},{\"begin\":942,\"end\":958,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":942,\"end\":958,\"name\":\"ADD\"},{\"begin\":942,\"end\":958,\"name\":\"SWAP1\"},{\"begin\":942,\"end\":958,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":942,\"end\":958,\"name\":\"SWAP1\"},{\"begin\":942,\"end\":958,\"name\":\"SUB\"},{\"begin\":942,\"end\":958,\"name\":\"SWAP1\"},{\"begin\":942,\"end\":958,\"name\":\"DUP2\"},{\"begin\":942,\"end\":958,\"name\":\"PUSH [tag]\",\"value\":\"33\"},{\"begin\":942,\"end\":958,\"name\":\"JUMPI\"},{\"begin\":942,\"end\":958,\"name\":\"SWAP1\"},{\"begin\":942,\"end\":958,\"name\":\"POP\"},{\"begin\":942,\"end\":958,\"name\":\"tag\",\"value\":\"32\"},{\"begin\":942,\"end\":958,\"name\":\"JUMPDEST\"},{\"begin\":942,\"end\":958,\"name\":\"POP\"},{\"begin\":935,\"end\":958,\"name\":\"SWAP1\"},{\"begin\":935,\"end\":958,\"name\":\"POP\"},{\"begin\":935,\"end\":958,\"name\":\"PUSH [tag]\",\"value\":\"30\"},{\"begin\":935,\"end\":958,\"name\":\"JUMP\"},{\"begin\":895,\"end\":969,\"name\":\"tag\",\"value\":\"31\"},{\"begin\":895,\"end\":969,\"name\":\"JUMPDEST\"},{\"begin\":979,\"end\":994,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1013,\"end\":1014,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":1005,\"end\":1010,\"name\":\"DUP5\"},{\"begin\":1005,\"end\":1014,\"name\":\"SUB\"},{\"begin\":997,\"end\":1001,\"name\":\"DUP4\"},{\"begin\":997,\"end\":1015,\"name\":\"MUL\"},{\"begin\":979,\"end\":1015,\"name\":\"SWAP1\"},{\"begin\":979,\"end\":1015,\"name\":\"POP\"},{\"begin\":1025,\"end\":1039,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1064,\"end\":1071,\"name\":\"DUP2\"},{\"begin\":1060,\"end\":1061,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":1042,\"end\":1050,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1042,\"end\":1057,\"name\":\"DUP1\"},{\"begin\":1042,\"end\":1057,\"name\":\"SLOAD\"},{\"begin\":1042,\"end\":1057,\"name\":\"SWAP1\"},{\"begin\":1042,\"end\":1057,\"name\":\"POP\"},{\"begin\":1042,\"end\":1061,\"name\":\"SUB\"},{\"begin\":1042,\"end\":1071,\"name\":\"SUB\"},{\"begin\":1025,\"end\":1071,\"name\":\"SWAP1\"},{\"begin\":1025,\"end\":1071,\"name\":\"POP\"},{\"begin\":1112,\"end\":1113,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":1094,\"end\":1102,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1094,\"end\":1109,\"name\":\"DUP1\"},{\"begin\":1094,\"end\":1109,\"name\":\"SLOAD\"},{\"begin\":1094,\"end\":1109,\"name\":\"SWAP1\"},{\"begin\":1094,\"end\":1109,\"name\":\"POP\"},{\"begin\":1094,\"end\":1113,\"name\":\"SUB\"},{\"begin\":1085,\"end\":1091,\"name\":\"DUP2\"},{\"begin\":1085,\"end\":1113,\"name\":\"GT\"},{\"begin\":1081,\"end\":1163,\"name\":\"ISZERO\"},{\"begin\":1081,\"end\":1163,\"name\":\"PUSH [tag]\",\"value\":\"36\"},{\"begin\":1081,\"end\":1163,\"name\":\"JUMPI\"},{\"begin\":1150,\"end\":1151,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1136,\"end\":1152,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":1136,\"end\":1152,\"name\":\"MLOAD\"},{\"begin\":1136,\"end\":1152,\"name\":\"SWAP1\"},{\"begin\":1136,\"end\":1152,\"name\":\"DUP1\"},{\"begin\":1136,\"end\":1152,\"name\":\"DUP3\"},{\"begin\":1136,\"end\":1152,\"name\":\"MSTORE\"},{\"begin\":1136,\"end\":1152,\"name\":\"DUP1\"},{\"begin\":1136,\"end\":1152,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1136,\"end\":1152,\"name\":\"MUL\"},{\"begin\":1136,\"end\":1152,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1136,\"end\":1152,\"name\":\"ADD\"},{\"begin\":1136,\"end\":1152,\"name\":\"DUP3\"},{\"begin\":1136,\"end\":1152,\"name\":\"ADD\"},{\"begin\":1136,\"end\":1152,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":1136,\"end\":1152,\"name\":\"MSTORE\"},{\"begin\":1136,\"end\":1152,\"name\":\"DUP1\"},{\"begin\":1136,\"end\":1152,\"name\":\"ISZERO\"},{\"begin\":1136,\"end\":1152,\"name\":\"PUSH [tag]\",\"value\":\"37\"},{\"begin\":1136,\"end\":1152,\"name\":\"JUMPI\"},{\"begin\":1136,\"end\":1152,\"name\":\"DUP2\"},{\"begin\":1136,\"end\":1152,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1136,\"end\":1152,\"name\":\"ADD\"},{\"begin\":1136,\"end\":1152,\"name\":\"tag\",\"value\":\"38\"},{\"begin\":1136,\"end\":1152,\"name\":\"JUMPDEST\"},{\"begin\":1136,\"end\":1152,\"name\":\"PUSH [tag]\",\"value\":\"39\"},{\"begin\":1136,\"end\":1152,\"name\":\"PUSH [tag]\",\"value\":\"35\"},{\"begin\":1136,\"end\":1152,\"name\":\"JUMP\",\"value\":\"[in]\"},{\"begin\":1136,\"end\":1152,\"name\":\"tag\",\"value\":\"39\"},{\"begin\":1136,\"end\":1152,\"name\":\"JUMPDEST\"},{\"begin\":1136,\"end\":1152,\"name\":\"DUP2\"},{\"begin\":1136,\"end\":1152,\"name\":\"MSTORE\"},{\"begin\":1136,\"end\":1152,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1136,\"end\":1152,\"name\":\"ADD\"},{\"begin\":1136,\"end\":1152,\"name\":\"SWAP1\"},{\"begin\":1136,\"end\":1152,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":1136,\"end\":1152,\"name\":\"SWAP1\"},{\"begin\":1136,\"end\":1152,\"name\":\"SUB\"},{\"begin\":1136,\"end\":1152,\"name\":\"SWAP1\"},{\"begin\":1136,\"end\":1152,\"name\":\"DUP2\"},{\"begin\":1136,\"end\":1152,\"name\":\"PUSH [tag]\",\"value\":\"38\"},{\"begin\":1136,\"end\":1152,\"name\":\"JUMPI\"},{\"begin\":1136,\"end\":1152,\"name\":\"SWAP1\"},{\"begin\":1136,\"end\":1152,\"name\":\"POP\"},{\"begin\":1136,\"end\":1152,\"name\":\"tag\",\"value\":\"37\"},{\"begin\":1136,\"end\":1152,\"name\":\"JUMPDEST\"},{\"begin\":1136,\"end\":1152,\"name\":\"POP\"},{\"begin\":1129,\"end\":1152,\"name\":\"SWAP3\"},{\"begin\":1129,\"end\":1152,\"name\":\"POP\"},{\"begin\":1129,\"end\":1152,\"name\":\"POP\"},{\"begin\":1129,\"end\":1152,\"name\":\"POP\"},{\"begin\":1129,\"end\":1152,\"name\":\"PUSH [tag]\",\"value\":\"30\"},{\"begin\":1129,\"end\":1152,\"name\":\"JUMP\"},{\"begin\":1081,\"end\":1163,\"name\":\"tag\",\"value\":\"36\"},{\"begin\":1081,\"end\":1163,\"name\":\"JUMPDEST\"},{\"begin\":1173,\"end\":1191,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1203,\"end\":1207,\"name\":\"DUP5\"},{\"begin\":1194,\"end\":1200,\"name\":\"DUP3\"},{\"begin\":1194,\"end\":1207,\"name\":\"SUB\"},{\"begin\":1173,\"end\":1207,\"name\":\"SWAP1\"},{\"begin\":1173,\"end\":1207,\"name\":\"POP\"},{\"begin\":1234,\"end\":1240,\"name\":\"DUP2\"},{\"begin\":1221,\"end\":1231,\"name\":\"DUP2\"},{\"begin\":1221,\"end\":1240,\"name\":\"GT\"},{\"begin\":1217,\"end\":1281,\"name\":\"ISZERO\"},{\"begin\":1217,\"end\":1281,\"name\":\"PUSH [tag]\",\"value\":\"40\"},{\"begin\":1217,\"end\":1281,\"name\":\"JUMPI\"},{\"begin\":1269,\"end\":1270,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1256,\"end\":1270,\"name\":\"SWAP1\"},{\"begin\":1256,\"end\":1270,\"name\":\"POP\"},{\"begin\":1217,\"end\":1281,\"name\":\"tag\",\"value\":\"40\"},{\"begin\":1217,\"end\":1281,\"name\":\"JUMPDEST\"},{\"begin\":1291,\"end\":1303,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1328,\"end\":1329,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":1315,\"end\":1325,\"name\":\"DUP3\"},{\"begin\":1306,\"end\":1312,\"name\":\"DUP5\"},{\"begin\":1306,\"end\":1325,\"name\":\"SUB\"},{\"begin\":1306,\"end\":1329,\"name\":\"ADD\"},{\"begin\":1291,\"end\":1329,\"name\":\"SWAP1\"},{\"begin\":1291,\"end\":1329,\"name\":\"POP\"},{\"begin\":1350,\"end\":1354,\"name\":\"DUP6\"},{\"begin\":1343,\"end\":1347,\"name\":\"DUP2\"},{\"begin\":1343,\"end\":1354,\"name\":\"GT\"},{\"begin\":1339,\"end\":1392,\"name\":\"ISZERO\"},{\"begin\":1339,\"end\":1392,\"name\":\"PUSH [tag]\",\"value\":\"41\"},{\"begin\":1339,\"end\":1392,\"name\":\"JUMPI\"},{\"begin\":1377,\"end\":1381,\"name\":\"DUP6\"},{\"begin\":1370,\"end\":1381,\"name\":\"SWAP1\"},{\"begin\":1370,\"end\":1381,\"name\":\"POP\"},{\"begin\":1339,\"end\":1392,\"name\":\"tag\",\"value\":\"41\"},{\"begin\":1339,\"end\":1392,\"name\":\"JUMPDEST\"},{\"begin\":1424,\"end\":1428,\"name\":\"DUP1\"},{\"begin\":1410,\"end\":1429,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":1410,\"end\":1429,\"name\":\"MLOAD\"},{\"begin\":1410,\"end\":1429,\"name\":\"SWAP1\"},{\"begin\":1410,\"end\":1429,\"name\":\"DUP1\"},{\"begin\":1410,\"end\":1429,\"name\":\"DUP3\"},{\"begin\":1410,\"end\":1429,\"name\":\"MSTORE\"},{\"begin\":1410,\"end\":1429,\"name\":\"DUP1\"},{\"begin\":1410,\"end\":1429,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1410,\"end\":1429,\"name\":\"MUL\"},{\"begin\":1410,\"end\":1429,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1410,\"end\":1429,\"name\":\"ADD\"},{\"begin\":1410,\"end\":1429,\"name\":\"DUP3\"},{\"begin\":1410,\"end\":1429,\"name\":\"ADD\"},{\"begin\":1410,\"end\":1429,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":1410,\"end\":1429,\"name\":\"MSTORE\"},{\"begin\":1410,\"end\":1429,\"name\":\"DUP1\"},{\"begin\":1410,\"end\":1429,\"name\":\"ISZERO\"},{\"begin\":1410,\"end\":1429,\"name\":\"PUSH [tag]\",\"value\":\"42\"},{\"begin\":1410,\"end\":1429,\"name\":\"JUMPI\"},{\"begin\":1410,\"end\":1429,\"name\":\"DUP2\"},{\"begin\":1410,\"end\":1429,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1410,\"end\":1429,\"name\":\"ADD\"},{\"begin\":1410,\"end\":1429,\"name\":\"tag\",\"value\":\"43\"},{\"begin\":1410,\"end\":1429,\"name\":\"JUMPDEST\"},{\"begin\":1410,\"end\":1429,\"name\":\"PUSH [tag]\",\"value\":\"44\"},{\"begin\":1410,\"end\":1429,\"name\":\"PUSH [tag]\",\"value\":\"35\"},{\"begin\":1410,\"end\":1429,\"name\":\"JUMP\",\"value\":\"[in]\"},{\"begin\":1410,\"end\":1429,\"name\":\"tag\",\"value\":\"44\"},{\"begin\":1410,\"end\":1429,\"name\":\"JUMPDEST\"},{\"begin\":1410,\"end\":1429,\"name\":\"DUP2\"},{\"begin\":1410,\"end\":1429,\"name\":\"MSTORE\"},{\"begin\":1410,\"end\":1429,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1410,\"end\":1429,\"name\":\"ADD\"},{\"begin\":1410,\"end\":1429,\"name\":\"SWAP1\"},{\"begin\":1410,\"end\":1429,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":1410,\"end\":1429,\"name\":\"SWAP1\"},{\"begin\":1410,\"end\":1429,\"name\":\"SUB\"},{\"begin\":1410,\"end\":1429,\"name\":\"SWAP1\"},{\"begin\":1410,\"end\":1429,\"name\":\"DUP2\"},{\"begin\":1410,\"end\":1429,\"name\":\"PUSH [tag]\",\"value\":\"43\"},{\"begin\":1410,\"end\":1429,\"name\":\"JUMPI\"},{\"begin\":1410,\"end\":1429,\"name\":\"SWAP1\"},{\"begin\":1410,\"end\":1429,\"name\":\"POP\"},{\"begin\":1410,\"end\":1429,\"name\":\"tag\",\"value\":\"42\"},{\"begin\":1410,\"end\":1429,\"name\":\"JUMPDEST\"},{\"begin\":1410,\"end\":1429,\"name\":\"POP\"},{\"begin\":1402,\"end\":1429,\"name\":\"SWAP5\"},{\"begin\":1402,\"end\":1429,\"name\":\"POP\"},{\"begin\":1444,\"end\":1454,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1457,\"end\":1458,\"name\":\"DUP1\"},{\"begin\":1444,\"end\":1458,\"name\":\"SWAP1\"},{\"begin\":1444,\"end\":1458,\"name\":\"POP\"},{\"begin\":1439,\"end\":1535,\"name\":\"tag\",\"value\":\"45\"},{\"begin\":1439,\"end\":1535,\"name\":\"JUMPDEST\"},{\"begin\":1465,\"end\":1469,\"name\":\"DUP2\"},{\"begin\":1460,\"end\":1462,\"name\":\"DUP2\"},{\"begin\":1460,\"end\":1469,\"name\":\"LT\"},{\"begin\":1439,\"end\":1535,\"name\":\"ISZERO\"},{\"begin\":1439,\"end\":1535,\"name\":\"PUSH [tag]\",\"value\":\"46\"},{\"begin\":1439,\"end\":1535,\"name\":\"JUMPI\"},{\"begin\":1503,\"end\":1511,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1521,\"end\":1523,\"name\":\"DUP2\"},{\"begin\":1512,\"end\":1518,\"name\":\"DUP6\"},{\"begin\":1512,\"end\":1523,\"name\":\"SUB\"},{\"begin\":1503,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1503,\"end\":1524,\"name\":\"SLOAD\"},{\"begin\":1503,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1503,\"end\":1524,\"name\":\"LT\"},{\"begin\":1503,\"end\":1524,\"name\":\"ISZERO\"},{\"begin\":1503,\"end\":1524,\"name\":\"ISZERO\"},{\"begin\":1503,\"end\":1524,\"name\":\"PUSH [tag]\",\"value\":\"48\"},{\"begin\":1503,\"end\":1524,\"name\":\"JUMPI\"},{\"begin\":1503,\"end\":1524,\"name\":\"INVALID\"},{\"begin\":1503,\"end\":1524,\"name\":\"tag\",\"value\":\"48\"},{\"begin\":1503,\"end\":1524,\"name\":\"JUMPDEST\"},{\"begin\":1503,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1503,\"end\":1524,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1503,\"end\":1524,\"name\":\"MSTORE\"},{\"begin\":1503,\"end\":1524,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1503,\"end\":1524,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1503,\"end\":1524,\"name\":\"KECCAK256\"},{\"begin\":1503,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1503,\"end\":1524,\"name\":\"PUSH\",\"value\":\"4\"},{\"begin\":1503,\"end\":1524,\"name\":\"MUL\"},{\"begin\":1503,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"80\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":1491,\"end\":1524,\"name\":\"MLOAD\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":1491,\"end\":1524,\"name\":\"MSTORE\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP3\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"SLOAD\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"100\"},{\"begin\":1491,\"end\":1524,\"name\":\"EXP\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"DIV\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\"},{\"begin\":1491,\"end\":1524,\"name\":\"AND\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\"},{\"begin\":1491,\"end\":1524,\"name\":\"AND\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\"},{\"begin\":1491,\"end\":1524,\"name\":\"AND\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"MSTORE\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP3\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"SLOAD\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"MSTORE\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"2\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP3\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"SLOAD\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":1491,\"end\":1524,\"name\":\"AND\"},{\"begin\":1491,\"end\":1524,\"name\":\"ISZERO\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"100\"},{\"begin\":1491,\"end\":1524,\"name\":\"MUL\"},{\"begin\":1491,\"end\":1524,\"name\":\"SUB\"},{\"begin\":1491,\"end\":1524,\"name\":\"AND\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"2\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"DIV\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"1F\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"DIV\"},{\"begin\":1491,\"end\":1524,\"name\":\"MUL\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":1491,\"end\":1524,\"name\":\"MLOAD\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":1491,\"end\":1524,\"name\":\"MSTORE\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP3\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"MSTORE\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP3\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"SLOAD\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":1491,\"end\":1524,\"name\":\"AND\"},{\"begin\":1491,\"end\":1524,\"name\":\"ISZERO\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"100\"},{\"begin\":1491,\"end\":1524,\"name\":\"MUL\"},{\"begin\":1491,\"end\":1524,\"name\":\"SUB\"},{\"begin\":1491,\"end\":1524,\"name\":\"AND\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"2\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"DIV\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"ISZERO\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH [tag]\",\"value\":\"50\"},{\"begin\":1491,\"end\":1524,\"name\":\"JUMPI\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"1F\"},{\"begin\":1491,\"end\":1524,\"name\":\"LT\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH [tag]\",\"value\":\"51\"},{\"begin\":1491,\"end\":1524,\"name\":\"JUMPI\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"100\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP4\"},{\"begin\":1491,\"end\":1524,\"name\":\"SLOAD\"},{\"begin\":1491,\"end\":1524,\"name\":\"DIV\"},{\"begin\":1491,\"end\":1524,\"name\":\"MUL\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP4\"},{\"begin\":1491,\"end\":1524,\"name\":\"MSTORE\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH [tag]\",\"value\":\"50\"},{\"begin\":1491,\"end\":1524,\"name\":\"JUMP\"},{\"begin\":1491,\"end\":1524,\"name\":\"tag\",\"value\":\"51\"},{\"begin\":1491,\"end\":1524,\"name\":\"JUMPDEST\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP3\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1491,\"end\":1524,\"name\":\"MSTORE\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1491,\"end\":1524,\"name\":\"KECCAK256\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"tag\",\"value\":\"52\"},{\"begin\":1491,\"end\":1524,\"name\":\"JUMPDEST\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"SLOAD\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"MSTORE\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP4\"},{\"begin\":1491,\"end\":1524,\"name\":\"GT\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH [tag]\",\"value\":\"52\"},{\"begin\":1491,\"end\":1524,\"name\":\"JUMPI\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP3\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"SUB\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"1F\"},{\"begin\":1491,\"end\":1524,\"name\":\"AND\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP3\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"tag\",\"value\":\"50\"},{\"begin\":1491,\"end\":1524,\"name\":\"JUMPDEST\"},{\"begin\":1491,\"end\":1524,\"name\":\"POP\"},{\"begin\":1491,\"end\":1524,\"name\":\"POP\"},{\"begin\":1491,\"end\":1524,\"name\":\"POP\"},{\"begin\":1491,\"end\":1524,\"name\":\"POP\"},{\"begin\":1491,\"end\":1524,\"name\":\"POP\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"MSTORE\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"3\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP3\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"SLOAD\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":1491,\"end\":1524,\"name\":\"AND\"},{\"begin\":1491,\"end\":1524,\"name\":\"ISZERO\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"100\"},{\"begin\":1491,\"end\":1524,\"name\":\"MUL\"},{\"begin\":1491,\"end\":1524,\"name\":\"SUB\"},{\"begin\":1491,\"end\":1524,\"name\":\"AND\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"2\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"DIV\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"1F\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"DIV\"},{\"begin\":1491,\"end\":1524,\"name\":\"MUL\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":1491,\"end\":1524,\"name\":\"MLOAD\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":1491,\"end\":1524,\"name\":\"MSTORE\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP3\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"MSTORE\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP3\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"SLOAD\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":1491,\"end\":1524,\"name\":\"AND\"},{\"begin\":1491,\"end\":1524,\"name\":\"ISZERO\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"100\"},{\"begin\":1491,\"end\":1524,\"name\":\"MUL\"},{\"begin\":1491,\"end\":1524,\"name\":\"SUB\"},{\"begin\":1491,\"end\":1524,\"name\":\"AND\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"2\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"DIV\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"ISZERO\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH [tag]\",\"value\":\"53\"},{\"begin\":1491,\"end\":1524,\"name\":\"JUMPI\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"1F\"},{\"begin\":1491,\"end\":1524,\"name\":\"LT\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH [tag]\",\"value\":\"54\"},{\"begin\":1491,\"end\":1524,\"name\":\"JUMPI\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"100\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP4\"},{\"begin\":1491,\"end\":1524,\"name\":\"SLOAD\"},{\"begin\":1491,\"end\":1524,\"name\":\"DIV\"},{\"begin\":1491,\"end\":1524,\"name\":\"MUL\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP4\"},{\"begin\":1491,\"end\":1524,\"name\":\"MSTORE\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH [tag]\",\"value\":\"53\"},{\"begin\":1491,\"end\":1524,\"name\":\"JUMP\"},{\"begin\":1491,\"end\":1524,\"name\":\"tag\",\"value\":\"54\"},{\"begin\":1491,\"end\":1524,\"name\":\"JUMPDEST\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP3\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1491,\"end\":1524,\"name\":\"MSTORE\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1491,\"end\":1524,\"name\":\"KECCAK256\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"tag\",\"value\":\"55\"},{\"begin\":1491,\"end\":1524,\"name\":\"JUMPDEST\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"SLOAD\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"MSTORE\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP4\"},{\"begin\":1491,\"end\":1524,\"name\":\"GT\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH [tag]\",\"value\":\"55\"},{\"begin\":1491,\"end\":1524,\"name\":\"JUMPI\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP3\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"SUB\"},{\"begin\":1491,\"end\":1524,\"name\":\"PUSH\",\"value\":\"1F\"},{\"begin\":1491,\"end\":1524,\"name\":\"AND\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP3\"},{\"begin\":1491,\"end\":1524,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"tag\",\"value\":\"53\"},{\"begin\":1491,\"end\":1524,\"name\":\"JUMPDEST\"},{\"begin\":1491,\"end\":1524,\"name\":\"POP\"},{\"begin\":1491,\"end\":1524,\"name\":\"POP\"},{\"begin\":1491,\"end\":1524,\"name\":\"POP\"},{\"begin\":1491,\"end\":1524,\"name\":\"POP\"},{\"begin\":1491,\"end\":1524,\"name\":\"POP\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"MSTORE\"},{\"begin\":1491,\"end\":1524,\"name\":\"POP\"},{\"begin\":1491,\"end\":1524,\"name\":\"POP\"},{\"begin\":1491,\"end\":1496,\"name\":\"DUP7\"},{\"begin\":1497,\"end\":1499,\"name\":\"DUP3\"},{\"begin\":1491,\"end\":1500,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1500,\"name\":\"MLOAD\"},{\"begin\":1491,\"end\":1500,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1500,\"name\":\"LT\"},{\"begin\":1491,\"end\":1500,\"name\":\"ISZERO\"},{\"begin\":1491,\"end\":1500,\"name\":\"ISZERO\"},{\"begin\":1491,\"end\":1500,\"name\":\"PUSH [tag]\",\"value\":\"56\"},{\"begin\":1491,\"end\":1500,\"name\":\"JUMPI\"},{\"begin\":1491,\"end\":1500,\"name\":\"INVALID\"},{\"begin\":1491,\"end\":1500,\"name\":\"tag\",\"value\":\"56\"},{\"begin\":1491,\"end\":1500,\"name\":\"JUMPDEST\"},{\"begin\":1491,\"end\":1500,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1500,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1491,\"end\":1500,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1500,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1500,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1491,\"end\":1500,\"name\":\"MUL\"},{\"begin\":1491,\"end\":1500,\"name\":\"ADD\"},{\"begin\":1491,\"end\":1524,\"name\":\"DUP2\"},{\"begin\":1491,\"end\":1524,\"name\":\"SWAP1\"},{\"begin\":1491,\"end\":1524,\"name\":\"MSTORE\"},{\"begin\":1491,\"end\":1524,\"name\":\"POP\"},{\"begin\":1471,\"end\":1475,\"name\":\"DUP1\"},{\"begin\":1471,\"end\":1475,\"name\":\"DUP1\"},{\"begin\":1471,\"end\":1475,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":1471,\"end\":1475,\"name\":\"ADD\"},{\"begin\":1471,\"end\":1475,\"name\":\"SWAP2\"},{\"begin\":1471,\"end\":1475,\"name\":\"POP\"},{\"begin\":1471,\"end\":1475,\"name\":\"POP\"},{\"begin\":1439,\"end\":1535,\"name\":\"PUSH [tag]\",\"value\":\"45\"},{\"begin\":1439,\"end\":1535,\"name\":\"JUMP\"},{\"begin\":1439,\"end\":1535,\"name\":\"tag\",\"value\":\"46\"},{\"begin\":1439,\"end\":1535,\"name\":\"JUMPDEST\"},{\"begin\":1439,\"end\":1535,\"name\":\"POP\"},{\"begin\":787,\"end\":1541,\"name\":\"POP\"},{\"begin\":787,\"end\":1541,\"name\":\"POP\"},{\"begin\":787,\"end\":1541,\"name\":\"POP\"},{\"begin\":787,\"end\":1541,\"name\":\"POP\"},{\"begin\":787,\"end\":1541,\"name\":\"tag\",\"value\":\"30\"},{\"begin\":787,\"end\":1541,\"name\":\"JUMPDEST\"},{\"begin\":787,\"end\":1541,\"name\":\"SWAP3\"},{\"begin\":787,\"end\":1541,\"name\":\"SWAP2\"},{\"begin\":787,\"end\":1541,\"name\":\"POP\"},{\"begin\":787,\"end\":1541,\"name\":\"POP\"},{\"begin\":787,\"end\":1541,\"name\":\"JUMP\",\"value\":\"[out]\"},{\"begin\":58,\"end\":1543,\"name\":\"tag\",\"value\":\"17\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPDEST\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"80\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":58,\"end\":1543,\"name\":\"MLOAD\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP2\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":58,\"end\":1543,\"name\":\"MSTORE\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP1\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\"},{\"begin\":58,\"end\":1543,\"name\":\"AND\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP2\"},{\"begin\":58,\"end\":1543,\"name\":\"MSTORE\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP2\"},{\"begin\":58,\"end\":1543,\"name\":\"MSTORE\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"60\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP2\"},{\"begin\":58,\"end\":1543,\"name\":\"MSTORE\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"60\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP2\"},{\"begin\":58,\"end\":1543,\"name\":\"MSTORE\"},{\"begin\":58,\"end\":1543,\"name\":\"POP\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMP\",\"value\":\"[out]\"},{\"begin\":58,\"end\":1543,\"name\":\"tag\",\"value\":\"21\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPDEST\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP3\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP1\"},{\"begin\":58,\"end\":1543,\"name\":\"SLOAD\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP2\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":58,\"end\":1543,\"name\":\"AND\"},{\"begin\":58,\"end\":1543,\"name\":\"ISZERO\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"100\"},{\"begin\":58,\"end\":1543,\"name\":\"MUL\"},{\"begin\":58,\"end\":1543,\"name\":\"SUB\"},{\"begin\":58,\"end\":1543,\"name\":\"AND\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"2\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"DIV\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":58,\"end\":1543,\"name\":\"MSTORE\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":58,\"end\":1543,\"name\":\"KECCAK256\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"1F\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"DIV\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP2\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP3\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP3\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"1F\"},{\"begin\":58,\"end\":1543,\"name\":\"LT\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH [tag]\",\"value\":\"58\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPI\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP1\"},{\"begin\":58,\"end\":1543,\"name\":\"MLOAD\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"FF\"},{\"begin\":58,\"end\":1543,\"name\":\"NOT\"},{\"begin\":58,\"end\":1543,\"name\":\"AND\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP4\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP1\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"OR\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP6\"},{\"begin\":58,\"end\":1543,\"name\":\"SSTORE\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH [tag]\",\"value\":\"57\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMP\"},{\"begin\":58,\"end\":1543,\"name\":\"tag\",\"value\":\"58\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPDEST\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP3\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP1\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP6\"},{\"begin\":58,\"end\":1543,\"name\":\"SSTORE\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP3\"},{\"begin\":58,\"end\":1543,\"name\":\"ISZERO\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH [tag]\",\"value\":\"57\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPI\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP2\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP3\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"tag\",\"value\":\"59\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPDEST\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP3\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP2\"},{\"begin\":58,\"end\":1543,\"name\":\"GT\"},{\"begin\":58,\"end\":1543,\"name\":\"ISZERO\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH [tag]\",\"value\":\"60\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPI\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP3\"},{\"begin\":58,\"end\":1543,\"name\":\"MLOAD\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP3\"},{\"begin\":58,\"end\":1543,\"name\":\"SSTORE\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP2\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP2\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH [tag]\",\"value\":\"59\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMP\"},{\"begin\":58,\"end\":1543,\"name\":\"tag\",\"value\":\"60\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPDEST\"},{\"begin\":58,\"end\":1543,\"name\":\"tag\",\"value\":\"57\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPDEST\"},{\"begin\":58,\"end\":1543,\"name\":\"POP\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"POP\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH [tag]\",\"value\":\"61\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP2\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH [tag]\",\"value\":\"62\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMP\",\"value\":\"[in]\"},{\"begin\":58,\"end\":1543,\"name\":\"tag\",\"value\":\"61\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPDEST\"},{\"begin\":58,\"end\":1543,\"name\":\"POP\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMP\",\"value\":\"[out]\"},{\"begin\":58,\"end\":1543,\"name\":\"tag\",\"value\":\"23\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPDEST\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP3\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP1\"},{\"begin\":58,\"end\":1543,\"name\":\"SLOAD\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP2\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":58,\"end\":1543,\"name\":\"AND\"},{\"begin\":58,\"end\":1543,\"name\":\"ISZERO\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"100\"},{\"begin\":58,\"end\":1543,\"name\":\"MUL\"},{\"begin\":58,\"end\":1543,\"name\":\"SUB\"},{\"begin\":58,\"end\":1543,\"name\":\"AND\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"2\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"DIV\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":58,\"end\":1543,\"name\":\"MSTORE\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":58,\"end\":1543,\"name\":\"KECCAK256\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"1F\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"DIV\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP2\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP3\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP3\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"1F\"},{\"begin\":58,\"end\":1543,\"name\":\"LT\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH [tag]\",\"value\":\"64\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPI\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP1\"},{\"begin\":58,\"end\":1543,\"name\":\"MLOAD\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"FF\"},{\"begin\":58,\"end\":1543,\"name\":\"NOT\"},{\"begin\":58,\"end\":1543,\"name\":\"AND\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP4\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP1\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"OR\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP6\"},{\"begin\":58,\"end\":1543,\"name\":\"SSTORE\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH [tag]\",\"value\":\"63\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMP\"},{\"begin\":58,\"end\":1543,\"name\":\"tag\",\"value\":\"64\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPDEST\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP3\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP1\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP6\"},{\"begin\":58,\"end\":1543,\"name\":\"SSTORE\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP3\"},{\"begin\":58,\"end\":1543,\"name\":\"ISZERO\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH [tag]\",\"value\":\"63\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPI\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP2\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP3\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"tag\",\"value\":\"65\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPDEST\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP3\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP2\"},{\"begin\":58,\"end\":1543,\"name\":\"GT\"},{\"begin\":58,\"end\":1543,\"name\":\"ISZERO\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH [tag]\",\"value\":\"66\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPI\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP3\"},{\"begin\":58,\"end\":1543,\"name\":\"MLOAD\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP3\"},{\"begin\":58,\"end\":1543,\"name\":\"SSTORE\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP2\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP2\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH [tag]\",\"value\":\"65\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMP\"},{\"begin\":58,\"end\":1543,\"name\":\"tag\",\"value\":\"66\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPDEST\"},{\"begin\":58,\"end\":1543,\"name\":\"tag\",\"value\":\"63\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPDEST\"},{\"begin\":58,\"end\":1543,\"name\":\"POP\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"POP\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH [tag]\",\"value\":\"67\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP2\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH [tag]\",\"value\":\"62\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMP\",\"value\":\"[in]\"},{\"begin\":58,\"end\":1543,\"name\":\"tag\",\"value\":\"67\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPDEST\"},{\"begin\":58,\"end\":1543,\"name\":\"POP\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMP\",\"value\":\"[out]\"},{\"begin\":58,\"end\":1543,\"name\":\"tag\",\"value\":\"35\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPDEST\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"80\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":58,\"end\":1543,\"name\":\"MLOAD\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP2\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":58,\"end\":1543,\"name\":\"MSTORE\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP1\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\"},{\"begin\":58,\"end\":1543,\"name\":\"AND\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP2\"},{\"begin\":58,\"end\":1543,\"name\":\"MSTORE\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP2\"},{\"begin\":58,\"end\":1543,\"name\":\"MSTORE\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"60\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP2\"},{\"begin\":58,\"end\":1543,\"name\":\"MSTORE\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"60\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP2\"},{\"begin\":58,\"end\":1543,\"name\":\"MSTORE\"},{\"begin\":58,\"end\":1543,\"name\":\"POP\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMP\",\"value\":\"[out]\"},{\"begin\":58,\"end\":1543,\"name\":\"tag\",\"value\":\"62\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPDEST\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH [tag]\",\"value\":\"68\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP2\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"tag\",\"value\":\"69\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPDEST\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP1\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP3\"},{\"begin\":58,\"end\":1543,\"name\":\"GT\"},{\"begin\":58,\"end\":1543,\"name\":\"ISZERO\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH [tag]\",\"value\":\"70\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPI\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":58,\"end\":1543,\"name\":\"DUP2\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"SSTORE\"},{\"begin\":58,\"end\":1543,\"name\":\"POP\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":58,\"end\":1543,\"name\":\"ADD\"},{\"begin\":58,\"end\":1543,\"name\":\"PUSH [tag]\",\"value\":\"69\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMP\"},{\"begin\":58,\"end\":1543,\"name\":\"tag\",\"value\":\"70\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPDEST\"},{\"begin\":58,\"end\":1543,\"name\":\"POP\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMP\"},{\"begin\":58,\"end\":1543,\"name\":\"tag\",\"value\":\"68\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMPDEST\"},{\"begin\":58,\"end\":1543,\"name\":\"SWAP1\"},{\"begin\":58,\"end\":1543,\"name\":\"JUMP\",\"value\":\"[out]\"},{\"begin\":6,\"end\":446,\"name\":\"tag\",\"value\":\"72\"},{\"begin\":6,\"end\":446,\"name\":\"JUMPDEST\"},{\"begin\":6,\"end\":446,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":107,\"end\":110,\"name\":\"DUP3\"},{\"begin\":100,\"end\":104,\"name\":\"PUSH\",\"value\":\"1F\"},{\"begin\":92,\"end\":98,\"name\":\"DUP4\"},{\"begin\":88,\"end\":105,\"name\":\"ADD\"},{\"begin\":84,\"end\":111,\"name\":\"SLT\"},{\"begin\":77,\"end\":112,\"name\":\"ISZERO\"},{\"begin\":74,\"end\":76,\"name\":\"ISZERO\"},{\"begin\":74,\"end\":76,\"name\":\"PUSH [tag]\",\"value\":\"73\"},{\"begin\":74,\"end\":76,\"name\":\"JUMPI\"},{\"begin\":125,\"end\":126,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":122,\"end\":123,\"name\":\"DUP1\"},{\"begin\":115,\"end\":127,\"name\":\"REVERT\"},{\"begin\":74,\"end\":76,\"name\":\"tag\",\"value\":\"73\"},{\"begin\":74,\"end\":76,\"name\":\"JUMPDEST\"},{\"begin\":162,\"end\":168,\"name\":\"DUP2\"},{\"begin\":149,\"end\":169,\"name\":\"CALLDATALOAD\"},{\"begin\":184,\"end\":248,\"name\":\"PUSH [tag]\",\"value\":\"74\"},{\"begin\":199,\"end\":247,\"name\":\"PUSH [tag]\",\"value\":\"75\"},{\"begin\":240,\"end\":246,\"name\":\"DUP3\"},{\"begin\":199,\"end\":247,\"name\":\"PUSH [tag]\",\"value\":\"76\"},{\"begin\":199,\"end\":247,\"name\":\"JUMP\"},{\"begin\":199,\"end\":247,\"name\":\"tag\",\"value\":\"75\"},{\"begin\":199,\"end\":247,\"name\":\"JUMPDEST\"},{\"begin\":184,\"end\":248,\"name\":\"PUSH [tag]\",\"value\":\"77\"},{\"begin\":184,\"end\":248,\"name\":\"JUMP\"},{\"begin\":184,\"end\":248,\"name\":\"tag\",\"value\":\"74\"},{\"begin\":184,\"end\":248,\"name\":\"JUMPDEST\"},{\"begin\":175,\"end\":248,\"name\":\"SWAP2\"},{\"begin\":175,\"end\":248,\"name\":\"POP\"},{\"begin\":268,\"end\":274,\"name\":\"DUP1\"},{\"begin\":261,\"end\":266,\"name\":\"DUP3\"},{\"begin\":254,\"end\":275,\"name\":\"MSTORE\"},{\"begin\":304,\"end\":308,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":296,\"end\":302,\"name\":\"DUP4\"},{\"begin\":292,\"end\":309,\"name\":\"ADD\"},{\"begin\":337,\"end\":341,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":330,\"end\":335,\"name\":\"DUP4\"},{\"begin\":326,\"end\":342,\"name\":\"ADD\"},{\"begin\":372,\"end\":375,\"name\":\"DUP6\"},{\"begin\":363,\"end\":369,\"name\":\"DUP4\"},{\"begin\":358,\"end\":361,\"name\":\"DUP4\"},{\"begin\":354,\"end\":370,\"name\":\"ADD\"},{\"begin\":351,\"end\":376,\"name\":\"GT\"},{\"begin\":348,\"end\":350,\"name\":\"ISZERO\"},{\"begin\":348,\"end\":350,\"name\":\"PUSH [tag]\",\"value\":\"78\"},{\"begin\":348,\"end\":350,\"name\":\"JUMPI\"},{\"begin\":389,\"end\":390,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":386,\"end\":387,\"name\":\"DUP1\"},{\"begin\":379,\"end\":391,\"name\":\"REVERT\"},{\"begin\":348,\"end\":350,\"name\":\"tag\",\"value\":\"78\"},{\"begin\":348,\"end\":350,\"name\":\"JUMPDEST\"},{\"begin\":399,\"end\":440,\"name\":\"PUSH [tag]\",\"value\":\"79\"},{\"begin\":433,\"end\":439,\"name\":\"DUP4\"},{\"begin\":428,\"end\":431,\"name\":\"DUP3\"},{\"begin\":423,\"end\":426,\"name\":\"DUP5\"},{\"begin\":399,\"end\":440,\"name\":\"PUSH [tag]\",\"value\":\"80\"},{\"begin\":399,\"end\":440,\"name\":\"JUMP\"},{\"begin\":399,\"end\":440,\"name\":\"tag\",\"value\":\"79\"},{\"begin\":399,\"end\":440,\"name\":\"JUMPDEST\"},{\"begin\":67,\"end\":446,\"name\":\"POP\"},{\"begin\":67,\"end\":446,\"name\":\"POP\"},{\"begin\":67,\"end\":446,\"name\":\"POP\"},{\"begin\":67,\"end\":446,\"name\":\"SWAP3\"},{\"begin\":67,\"end\":446,\"name\":\"SWAP2\"},{\"begin\":67,\"end\":446,\"name\":\"POP\"},{\"begin\":67,\"end\":446,\"name\":\"POP\"},{\"begin\":67,\"end\":446,\"name\":\"JUMP\"},{\"begin\":455,\"end\":897,\"name\":\"tag\",\"value\":\"82\"},{\"begin\":455,\"end\":897,\"name\":\"JUMPDEST\"},{\"begin\":455,\"end\":897,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":557,\"end\":560,\"name\":\"DUP3\"},{\"begin\":550,\"end\":554,\"name\":\"PUSH\",\"value\":\"1F\"},{\"begin\":542,\"end\":548,\"name\":\"DUP4\"},{\"begin\":538,\"end\":555,\"name\":\"ADD\"},{\"begin\":534,\"end\":561,\"name\":\"SLT\"},{\"begin\":527,\"end\":562,\"name\":\"ISZERO\"},{\"begin\":524,\"end\":526,\"name\":\"ISZERO\"},{\"begin\":524,\"end\":526,\"name\":\"PUSH [tag]\",\"value\":\"83\"},{\"begin\":524,\"end\":526,\"name\":\"JUMPI\"},{\"begin\":575,\"end\":576,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":572,\"end\":573,\"name\":\"DUP1\"},{\"begin\":565,\"end\":577,\"name\":\"REVERT\"},{\"begin\":524,\"end\":526,\"name\":\"tag\",\"value\":\"83\"},{\"begin\":524,\"end\":526,\"name\":\"JUMPDEST\"},{\"begin\":612,\"end\":618,\"name\":\"DUP2\"},{\"begin\":599,\"end\":619,\"name\":\"CALLDATALOAD\"},{\"begin\":634,\"end\":699,\"name\":\"PUSH [tag]\",\"value\":\"84\"},{\"begin\":649,\"end\":698,\"name\":\"PUSH [tag]\",\"value\":\"85\"},{\"begin\":691,\"end\":697,\"name\":\"DUP3\"},{\"begin\":649,\"end\":698,\"name\":\"PUSH [tag]\",\"value\":\"86\"},{\"begin\":649,\"end\":698,\"name\":\"JUMP\"},{\"begin\":649,\"end\":698,\"name\":\"tag\",\"value\":\"85\"},{\"begin\":649,\"end\":698,\"name\":\"JUMPDEST\"},{\"begin\":634,\"end\":699,\"name\":\"PUSH [tag]\",\"value\":\"77\"},{\"begin\":634,\"end\":699,\"name\":\"JUMP\"},{\"begin\":634,\"end\":699,\"name\":\"tag\",\"value\":\"84\"},{\"begin\":634,\"end\":699,\"name\":\"JUMPDEST\"},{\"begin\":625,\"end\":699,\"name\":\"SWAP2\"},{\"begin\":625,\"end\":699,\"name\":\"POP\"},{\"begin\":719,\"end\":725,\"name\":\"DUP1\"},{\"begin\":712,\"end\":717,\"name\":\"DUP3\"},{\"begin\":705,\"end\":726,\"name\":\"MSTORE\"},{\"begin\":755,\"end\":759,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":747,\"end\":753,\"name\":\"DUP4\"},{\"begin\":743,\"end\":760,\"name\":\"ADD\"},{\"begin\":788,\"end\":792,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":781,\"end\":786,\"name\":\"DUP4\"},{\"begin\":777,\"end\":793,\"name\":\"ADD\"},{\"begin\":823,\"end\":826,\"name\":\"DUP6\"},{\"begin\":814,\"end\":820,\"name\":\"DUP4\"},{\"begin\":809,\"end\":812,\"name\":\"DUP4\"},{\"begin\":805,\"end\":821,\"name\":\"ADD\"},{\"begin\":802,\"end\":827,\"name\":\"GT\"},{\"begin\":799,\"end\":801,\"name\":\"ISZERO\"},{\"begin\":799,\"end\":801,\"name\":\"PUSH [tag]\",\"value\":\"87\"},{\"begin\":799,\"end\":801,\"name\":\"JUMPI\"},{\"begin\":840,\"end\":841,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":837,\"end\":838,\"name\":\"DUP1\"},{\"begin\":830,\"end\":842,\"name\":\"REVERT\"},{\"begin\":799,\"end\":801,\"name\":\"tag\",\"value\":\"87\"},{\"begin\":799,\"end\":801,\"name\":\"JUMPDEST\"},{\"begin\":850,\"end\":891,\"name\":\"PUSH [tag]\",\"value\":\"88\"},{\"begin\":884,\"end\":890,\"name\":\"DUP4\"},{\"begin\":879,\"end\":882,\"name\":\"DUP3\"},{\"begin\":874,\"end\":877,\"name\":\"DUP5\"},{\"begin\":850,\"end\":891,\"name\":\"PUSH [tag]\",\"value\":\"80\"},{\"begin\":850,\"end\":891,\"name\":\"JUMP\"},{\"begin\":850,\"end\":891,\"name\":\"tag\",\"value\":\"88\"},{\"begin\":850,\"end\":891,\"name\":\"JUMPDEST\"},{\"begin\":517,\"end\":897,\"name\":\"POP\"},{\"begin\":517,\"end\":897,\"name\":\"POP\"},{\"begin\":517,\"end\":897,\"name\":\"POP\"},{\"begin\":517,\"end\":897,\"name\":\"SWAP3\"},{\"begin\":517,\"end\":897,\"name\":\"SWAP2\"},{\"begin\":517,\"end\":897,\"name\":\"POP\"},{\"begin\":517,\"end\":897,\"name\":\"POP\"},{\"begin\":517,\"end\":897,\"name\":\"JUMP\"},{\"begin\":905,\"end\":1023,\"name\":\"tag\",\"value\":\"90\"},{\"begin\":905,\"end\":1023,\"name\":\"JUMPDEST\"},{\"begin\":905,\"end\":1023,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":972,\"end\":1018,\"name\":\"PUSH [tag]\",\"value\":\"91\"},{\"begin\":1010,\"end\":1016,\"name\":\"DUP3\"},{\"begin\":997,\"end\":1017,\"name\":\"CALLDATALOAD\"},{\"begin\":972,\"end\":1018,\"name\":\"PUSH [tag]\",\"value\":\"92\"},{\"begin\":972,\"end\":1018,\"name\":\"JUMP\"},{\"begin\":972,\"end\":1018,\"name\":\"tag\",\"value\":\"91\"},{\"begin\":972,\"end\":1018,\"name\":\"JUMPDEST\"},{\"begin\":963,\"end\":1018,\"name\":\"SWAP1\"},{\"begin\":963,\"end\":1018,\"name\":\"POP\"},{\"begin\":957,\"end\":1023,\"name\":\"SWAP3\"},{\"begin\":957,\"end\":1023,\"name\":\"SWAP2\"},{\"begin\":957,\"end\":1023,\"name\":\"POP\"},{\"begin\":957,\"end\":1023,\"name\":\"POP\"},{\"begin\":957,\"end\":1023,\"name\":\"JUMP\"},{\"begin\":1030,\"end\":1606,\"name\":\"tag\",\"value\":\"7\"},{\"begin\":1030,\"end\":1606,\"name\":\"JUMPDEST\"},{\"begin\":1030,\"end\":1606,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1030,\"end\":1606,\"name\":\"DUP1\"},{\"begin\":1170,\"end\":1172,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":1158,\"end\":1167,\"name\":\"DUP4\"},{\"begin\":1149,\"end\":1156,\"name\":\"DUP6\"},{\"begin\":1145,\"end\":1168,\"name\":\"SUB\"},{\"begin\":1141,\"end\":1173,\"name\":\"SLT\"},{\"begin\":1138,\"end\":1140,\"name\":\"ISZERO\"},{\"begin\":1138,\"end\":1140,\"name\":\"PUSH [tag]\",\"value\":\"94\"},{\"begin\":1138,\"end\":1140,\"name\":\"JUMPI\"},{\"begin\":1186,\"end\":1187,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1183,\"end\":1184,\"name\":\"DUP1\"},{\"begin\":1176,\"end\":1188,\"name\":\"REVERT\"},{\"begin\":1138,\"end\":1140,\"name\":\"tag\",\"value\":\"94\"},{\"begin\":1138,\"end\":1140,\"name\":\"JUMPDEST\"},{\"begin\":1249,\"end\":1250,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1238,\"end\":1247,\"name\":\"DUP4\"},{\"begin\":1234,\"end\":1251,\"name\":\"ADD\"},{\"begin\":1221,\"end\":1252,\"name\":\"CALLDATALOAD\"},{\"begin\":1272,\"end\":1290,\"name\":\"PUSH\",\"value\":\"FFFFFFFFFFFFFFFF\"},{\"begin\":1264,\"end\":1270,\"name\":\"DUP2\"},{\"begin\":1261,\"end\":1291,\"name\":\"GT\"},{\"begin\":1258,\"end\":1260,\"name\":\"ISZERO\"},{\"begin\":1258,\"end\":1260,\"name\":\"PUSH [tag]\",\"value\":\"95\"},{\"begin\":1258,\"end\":1260,\"name\":\"JUMPI\"},{\"begin\":1304,\"end\":1305,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1301,\"end\":1302,\"name\":\"DUP1\"},{\"begin\":1294,\"end\":1306,\"name\":\"REVERT\"},{\"begin\":1258,\"end\":1260,\"name\":\"tag\",\"value\":\"95\"},{\"begin\":1258,\"end\":1260,\"name\":\"JUMPDEST\"},{\"begin\":1324,\"end\":1387,\"name\":\"PUSH [tag]\",\"value\":\"96\"},{\"begin\":1379,\"end\":1386,\"name\":\"DUP6\"},{\"begin\":1370,\"end\":1376,\"name\":\"DUP3\"},{\"begin\":1359,\"end\":1368,\"name\":\"DUP7\"},{\"begin\":1355,\"end\":1377,\"name\":\"ADD\"},{\"begin\":1324,\"end\":1387,\"name\":\"PUSH [tag]\",\"value\":\"82\"},{\"begin\":1324,\"end\":1387,\"name\":\"JUMP\"},{\"begin\":1324,\"end\":1387,\"name\":\"tag\",\"value\":\"96\"},{\"begin\":1324,\"end\":1387,\"name\":\"JUMPDEST\"},{\"begin\":1314,\"end\":1387,\"name\":\"SWAP3\"},{\"begin\":1314,\"end\":1387,\"name\":\"POP\"},{\"begin\":1200,\"end\":1393,\"name\":\"POP\"},{\"begin\":1452,\"end\":1454,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1441,\"end\":1450,\"name\":\"DUP4\"},{\"begin\":1437,\"end\":1455,\"name\":\"ADD\"},{\"begin\":1424,\"end\":1456,\"name\":\"CALLDATALOAD\"},{\"begin\":1476,\"end\":1494,\"name\":\"PUSH\",\"value\":\"FFFFFFFFFFFFFFFF\"},{\"begin\":1468,\"end\":1474,\"name\":\"DUP2\"},{\"begin\":1465,\"end\":1495,\"name\":\"GT\"},{\"begin\":1462,\"end\":1464,\"name\":\"ISZERO\"},{\"begin\":1462,\"end\":1464,\"name\":\"PUSH [tag]\",\"value\":\"97\"},{\"begin\":1462,\"end\":1464,\"name\":\"JUMPI\"},{\"begin\":1508,\"end\":1509,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1505,\"end\":1506,\"name\":\"DUP1\"},{\"begin\":1498,\"end\":1510,\"name\":\"REVERT\"},{\"begin\":1462,\"end\":1464,\"name\":\"tag\",\"value\":\"97\"},{\"begin\":1462,\"end\":1464,\"name\":\"JUMPDEST\"},{\"begin\":1528,\"end\":1590,\"name\":\"PUSH [tag]\",\"value\":\"98\"},{\"begin\":1582,\"end\":1589,\"name\":\"DUP6\"},{\"begin\":1573,\"end\":1579,\"name\":\"DUP3\"},{\"begin\":1562,\"end\":1571,\"name\":\"DUP7\"},{\"begin\":1558,\"end\":1580,\"name\":\"ADD\"},{\"begin\":1528,\"end\":1590,\"name\":\"PUSH [tag]\",\"value\":\"72\"},{\"begin\":1528,\"end\":1590,\"name\":\"JUMP\"},{\"begin\":1528,\"end\":1590,\"name\":\"tag\",\"value\":\"98\"},{\"begin\":1528,\"end\":1590,\"name\":\"JUMPDEST\"},{\"begin\":1518,\"end\":1590,\"name\":\"SWAP2\"},{\"begin\":1518,\"end\":1590,\"name\":\"POP\"},{\"begin\":1403,\"end\":1596,\"name\":\"POP\"},{\"begin\":1132,\"end\":1606,\"name\":\"SWAP3\"},{\"begin\":1132,\"end\":1606,\"name\":\"POP\"},{\"begin\":1132,\"end\":1606,\"name\":\"SWAP3\"},{\"begin\":1132,\"end\":1606,\"name\":\"SWAP1\"},{\"begin\":1132,\"end\":1606,\"name\":\"POP\"},{\"begin\":1132,\"end\":1606,\"name\":\"JUMP\"},{\"begin\":1613,\"end\":1979,\"name\":\"tag\",\"value\":\"11\"},{\"begin\":1613,\"end\":1979,\"name\":\"JUMPDEST\"},{\"begin\":1613,\"end\":1979,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1613,\"end\":1979,\"name\":\"DUP1\"},{\"begin\":1734,\"end\":1736,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":1722,\"end\":1731,\"name\":\"DUP4\"},{\"begin\":1713,\"end\":1720,\"name\":\"DUP6\"},{\"begin\":1709,\"end\":1732,\"name\":\"SUB\"},{\"begin\":1705,\"end\":1737,\"name\":\"SLT\"},{\"begin\":1702,\"end\":1704,\"name\":\"ISZERO\"},{\"begin\":1702,\"end\":1704,\"name\":\"PUSH [tag]\",\"value\":\"100\"},{\"begin\":1702,\"end\":1704,\"name\":\"JUMPI\"},{\"begin\":1750,\"end\":1751,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1747,\"end\":1748,\"name\":\"DUP1\"},{\"begin\":1740,\"end\":1752,\"name\":\"REVERT\"},{\"begin\":1702,\"end\":1704,\"name\":\"tag\",\"value\":\"100\"},{\"begin\":1702,\"end\":1704,\"name\":\"JUMPDEST\"},{\"begin\":1785,\"end\":1786,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":1802,\"end\":1855,\"name\":\"PUSH [tag]\",\"value\":\"101\"},{\"begin\":1847,\"end\":1854,\"name\":\"DUP6\"},{\"begin\":1838,\"end\":1844,\"name\":\"DUP3\"},{\"begin\":1827,\"end\":1836,\"name\":\"DUP7\"},{\"begin\":1823,\"end\":1845,\"name\":\"ADD\"},{\"begin\":1802,\"end\":1855,\"name\":\"PUSH [tag]\",\"value\":\"90\"},{\"begin\":1802,\"end\":1855,\"name\":\"JUMP\"},{\"begin\":1802,\"end\":1855,\"name\":\"tag\",\"value\":\"101\"},{\"begin\":1802,\"end\":1855,\"name\":\"JUMPDEST\"},{\"begin\":1792,\"end\":1855,\"name\":\"SWAP3\"},{\"begin\":1792,\"end\":1855,\"name\":\"POP\"},{\"begin\":1764,\"end\":1861,\"name\":\"POP\"},{\"begin\":1892,\"end\":1894,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":1910,\"end\":1963,\"name\":\"PUSH [tag]\",\"value\":\"102\"},{\"begin\":1955,\"end\":1962,\"name\":\"DUP6\"},{\"begin\":1946,\"end\":1952,\"name\":\"DUP3\"},{\"begin\":1935,\"end\":1944,\"name\":\"DUP7\"},{\"begin\":1931,\"end\":1953,\"name\":\"ADD\"},{\"begin\":1910,\"end\":1963,\"name\":\"PUSH [tag]\",\"value\":\"90\"},{\"begin\":1910,\"end\":1963,\"name\":\"JUMP\"},{\"begin\":1910,\"end\":1963,\"name\":\"tag\",\"value\":\"102\"},{\"begin\":1910,\"end\":1963,\"name\":\"JUMPDEST\"},{\"begin\":1900,\"end\":1963,\"name\":\"SWAP2\"},{\"begin\":1900,\"end\":1963,\"name\":\"POP\"},{\"begin\":1871,\"end\":1969,\"name\":\"POP\"},{\"begin\":1696,\"end\":1979,\"name\":\"SWAP3\"},{\"begin\":1696,\"end\":1979,\"name\":\"POP\"},{\"begin\":1696,\"end\":1979,\"name\":\"SWAP3\"},{\"begin\":1696,\"end\":1979,\"name\":\"SWAP1\"},{\"begin\":1696,\"end\":1979,\"name\":\"POP\"},{\"begin\":1696,\"end\":1979,\"name\":\"JUMP\"},{\"begin\":1987,\"end\":2218,\"name\":\"tag\",\"value\":\"104\"},{\"begin\":1987,\"end\":2218,\"name\":\"JUMPDEST\"},{\"begin\":1987,\"end\":2218,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":2125,\"end\":2212,\"name\":\"PUSH [tag]\",\"value\":\"105\"},{\"begin\":2208,\"end\":2211,\"name\":\"DUP4\"},{\"begin\":2201,\"end\":2206,\"name\":\"DUP4\"},{\"begin\":2125,\"end\":2212,\"name\":\"PUSH [tag]\",\"value\":\"106\"},{\"begin\":2125,\"end\":2212,\"name\":\"JUMP\"},{\"begin\":2125,\"end\":2212,\"name\":\"tag\",\"value\":\"105\"},{\"begin\":2125,\"end\":2212,\"name\":\"JUMPDEST\"},{\"begin\":2111,\"end\":2212,\"name\":\"SWAP1\"},{\"begin\":2111,\"end\":2212,\"name\":\"POP\"},{\"begin\":2104,\"end\":2218,\"name\":\"SWAP3\"},{\"begin\":2104,\"end\":2218,\"name\":\"SWAP2\"},{\"begin\":2104,\"end\":2218,\"name\":\"POP\"},{\"begin\":2104,\"end\":2218,\"name\":\"POP\"},{\"begin\":2104,\"end\":2218,\"name\":\"JUMP\"},{\"begin\":2226,\"end\":2368,\"name\":\"tag\",\"value\":\"108\"},{\"begin\":2226,\"end\":2368,\"name\":\"JUMPDEST\"},{\"begin\":2317,\"end\":2362,\"name\":\"PUSH [tag]\",\"value\":\"109\"},{\"begin\":2356,\"end\":2361,\"name\":\"DUP2\"},{\"begin\":2317,\"end\":2362,\"name\":\"PUSH [tag]\",\"value\":\"110\"},{\"begin\":2317,\"end\":2362,\"name\":\"JUMP\"},{\"begin\":2317,\"end\":2362,\"name\":\"tag\",\"value\":\"109\"},{\"begin\":2317,\"end\":2362,\"name\":\"JUMPDEST\"},{\"begin\":2312,\"end\":2315,\"name\":\"DUP3\"},{\"begin\":2305,\"end\":2363,\"name\":\"MSTORE\"},{\"begin\":2299,\"end\":2368,\"name\":\"POP\"},{\"begin\":2299,\"end\":2368,\"name\":\"POP\"},{\"begin\":2299,\"end\":2368,\"name\":\"JUMP\"},{\"begin\":2375,\"end\":2485,\"name\":\"tag\",\"value\":\"112\"},{\"begin\":2375,\"end\":2485,\"name\":\"JUMPDEST\"},{\"begin\":2448,\"end\":2479,\"name\":\"PUSH [tag]\",\"value\":\"113\"},{\"begin\":2473,\"end\":2478,\"name\":\"DUP2\"},{\"begin\":2448,\"end\":2479,\"name\":\"PUSH [tag]\",\"value\":\"114\"},{\"begin\":2448,\"end\":2479,\"name\":\"JUMP\"},{\"begin\":2448,\"end\":2479,\"name\":\"tag\",\"value\":\"113\"},{\"begin\":2448,\"end\":2479,\"name\":\"JUMPDEST\"},{\"begin\":2443,\"end\":2446,\"name\":\"DUP3\"},{\"begin\":2436,\"end\":2480,\"name\":\"MSTORE\"},{\"begin\":2430,\"end\":2485,\"name\":\"POP\"},{\"begin\":2430,\"end\":2485,\"name\":\"POP\"},{\"begin\":2430,\"end\":2485,\"name\":\"JUMP\"},{\"begin\":2555,\"end\":3486,\"name\":\"tag\",\"value\":\"116\"},{\"begin\":2555,\"end\":3486,\"name\":\"JUMPDEST\"},{\"begin\":2555,\"end\":3486,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":2738,\"end\":2811,\"name\":\"PUSH [tag]\",\"value\":\"117\"},{\"begin\":2805,\"end\":2810,\"name\":\"DUP3\"},{\"begin\":2738,\"end\":2811,\"name\":\"PUSH [tag]\",\"value\":\"118\"},{\"begin\":2738,\"end\":2811,\"name\":\"JUMP\"},{\"begin\":2738,\"end\":2811,\"name\":\"tag\",\"value\":\"117\"},{\"begin\":2738,\"end\":2811,\"name\":\"JUMPDEST\"},{\"begin\":2824,\"end\":2929,\"name\":\"PUSH [tag]\",\"value\":\"119\"},{\"begin\":2922,\"end\":2928,\"name\":\"DUP2\"},{\"begin\":2917,\"end\":2920,\"name\":\"DUP6\"},{\"begin\":2824,\"end\":2929,\"name\":\"PUSH [tag]\",\"value\":\"120\"},{\"begin\":2824,\"end\":2929,\"name\":\"JUMP\"},{\"begin\":2824,\"end\":2929,\"name\":\"tag\",\"value\":\"119\"},{\"begin\":2824,\"end\":2929,\"name\":\"JUMPDEST\"},{\"begin\":2817,\"end\":2929,\"name\":\"SWAP4\"},{\"begin\":2817,\"end\":2929,\"name\":\"POP\"},{\"begin\":2952,\"end\":2955,\"name\":\"DUP4\"},{\"begin\":2994,\"end\":2998,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":2986,\"end\":2992,\"name\":\"DUP3\"},{\"begin\":2982,\"end\":2999,\"name\":\"MUL\"},{\"begin\":2977,\"end\":2980,\"name\":\"DUP6\"},{\"begin\":2973,\"end\":3000,\"name\":\"ADD\"},{\"begin\":3020,\"end\":3095,\"name\":\"PUSH [tag]\",\"value\":\"121\"},{\"begin\":3089,\"end\":3094,\"name\":\"DUP6\"},{\"begin\":3020,\"end\":3095,\"name\":\"PUSH [tag]\",\"value\":\"122\"},{\"begin\":3020,\"end\":3095,\"name\":\"JUMP\"},{\"begin\":3020,\"end\":3095,\"name\":\"tag\",\"value\":\"121\"},{\"begin\":3020,\"end\":3095,\"name\":\"JUMPDEST\"},{\"begin\":3116,\"end\":3117,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":3101,\"end\":3447,\"name\":\"tag\",\"value\":\"123\"},{\"begin\":3101,\"end\":3447,\"name\":\"JUMPDEST\"},{\"begin\":3126,\"end\":3132,\"name\":\"DUP5\"},{\"begin\":3123,\"end\":3124,\"name\":\"DUP2\"},{\"begin\":3120,\"end\":3133,\"name\":\"LT\"},{\"begin\":3101,\"end\":3447,\"name\":\"ISZERO\"},{\"begin\":3101,\"end\":3447,\"name\":\"PUSH [tag]\",\"value\":\"124\"},{\"begin\":3101,\"end\":3447,\"name\":\"JUMPI\"},{\"begin\":3188,\"end\":3197,\"name\":\"DUP4\"},{\"begin\":3182,\"end\":3186,\"name\":\"DUP4\"},{\"begin\":3178,\"end\":3198,\"name\":\"SUB\"},{\"begin\":3173,\"end\":3176,\"name\":\"DUP9\"},{\"begin\":3166,\"end\":3199,\"name\":\"MSTORE\"},{\"begin\":3214,\"end\":3316,\"name\":\"PUSH [tag]\",\"value\":\"126\"},{\"begin\":3311,\"end\":3315,\"name\":\"DUP4\"},{\"begin\":3302,\"end\":3308,\"name\":\"DUP4\"},{\"begin\":3296,\"end\":3309,\"name\":\"MLOAD\"},{\"begin\":3214,\"end\":3316,\"name\":\"PUSH [tag]\",\"value\":\"104\"},{\"begin\":3214,\"end\":3316,\"name\":\"JUMP\"},{\"begin\":3214,\"end\":3316,\"name\":\"tag\",\"value\":\"126\"},{\"begin\":3214,\"end\":3316,\"name\":\"JUMPDEST\"},{\"begin\":3206,\"end\":3316,\"name\":\"SWAP3\"},{\"begin\":3206,\"end\":3316,\"name\":\"POP\"},{\"begin\":3333,\"end\":3412,\"name\":\"PUSH [tag]\",\"value\":\"127\"},{\"begin\":3405,\"end\":3411,\"name\":\"DUP3\"},{\"begin\":3333,\"end\":3412,\"name\":\"PUSH [tag]\",\"value\":\"128\"},{\"begin\":3333,\"end\":3412,\"name\":\"JUMP\"},{\"begin\":3333,\"end\":3412,\"name\":\"tag\",\"value\":\"127\"},{\"begin\":3333,\"end\":3412,\"name\":\"JUMPDEST\"},{\"begin\":3323,\"end\":3412,\"name\":\"SWAP2\"},{\"begin\":3323,\"end\":3412,\"name\":\"POP\"},{\"begin\":3435,\"end\":3439,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":3430,\"end\":3433,\"name\":\"DUP9\"},{\"begin\":3426,\"end\":3440,\"name\":\"ADD\"},{\"begin\":3419,\"end\":3440,\"name\":\"SWAP8\"},{\"begin\":3419,\"end\":3440,\"name\":\"POP\"},{\"begin\":3148,\"end\":3149,\"name\":\"PUSH\",\"value\":\"1\"},{\"begin\":3145,\"end\":3146,\"name\":\"DUP2\"},{\"begin\":3141,\"end\":3150,\"name\":\"ADD\"},{\"begin\":3136,\"end\":3150,\"name\":\"SWAP1\"},{\"begin\":3136,\"end\":3150,\"name\":\"POP\"},{\"begin\":3101,\"end\":3447,\"name\":\"PUSH [tag]\",\"value\":\"123\"},{\"begin\":3101,\"end\":3447,\"name\":\"JUMP\"},{\"begin\":3101,\"end\":3447,\"name\":\"tag\",\"value\":\"124\"},{\"begin\":3101,\"end\":3447,\"name\":\"JUMPDEST\"},{\"begin\":3105,\"end\":3119,\"name\":\"POP\"},{\"begin\":3460,\"end\":3464,\"name\":\"DUP2\"},{\"begin\":3453,\"end\":3464,\"name\":\"SWAP7\"},{\"begin\":3453,\"end\":3464,\"name\":\"POP\"},{\"begin\":3477,\"end\":3480,\"name\":\"DUP7\"},{\"begin\":3470,\"end\":3480,\"name\":\"SWAP5\"},{\"begin\":3470,\"end\":3480,\"name\":\"POP\"},{\"begin\":2717,\"end\":3486,\"name\":\"POP\"},{\"begin\":2717,\"end\":3486,\"name\":\"POP\"},{\"begin\":2717,\"end\":3486,\"name\":\"POP\"},{\"begin\":2717,\"end\":3486,\"name\":\"POP\"},{\"begin\":2717,\"end\":3486,\"name\":\"SWAP3\"},{\"begin\":2717,\"end\":3486,\"name\":\"SWAP2\"},{\"begin\":2717,\"end\":3486,\"name\":\"POP\"},{\"begin\":2717,\"end\":3486,\"name\":\"POP\"},{\"begin\":2717,\"end\":3486,\"name\":\"JUMP\"},{\"begin\":3494,\"end\":3614,\"name\":\"tag\",\"value\":\"130\"},{\"begin\":3494,\"end\":3614,\"name\":\"JUMPDEST\"},{\"begin\":3577,\"end\":3608,\"name\":\"PUSH [tag]\",\"value\":\"131\"},{\"begin\":3602,\"end\":3607,\"name\":\"DUP2\"},{\"begin\":3577,\"end\":3608,\"name\":\"PUSH [tag]\",\"value\":\"132\"},{\"begin\":3577,\"end\":3608,\"name\":\"JUMP\"},{\"begin\":3577,\"end\":3608,\"name\":\"tag\",\"value\":\"131\"},{\"begin\":3577,\"end\":3608,\"name\":\"JUMPDEST\"},{\"begin\":3572,\"end\":3575,\"name\":\"DUP3\"},{\"begin\":3565,\"end\":3609,\"name\":\"MSTORE\"},{\"begin\":3559,\"end\":3614,\"name\":\"POP\"},{\"begin\":3559,\"end\":3614,\"name\":\"POP\"},{\"begin\":3559,\"end\":3614,\"name\":\"JUMP\"},{\"begin\":3621,\"end\":3936,\"name\":\"tag\",\"value\":\"134\"},{\"begin\":3621,\"end\":3936,\"name\":\"JUMPDEST\"},{\"begin\":3621,\"end\":3936,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":3717,\"end\":3751,\"name\":\"PUSH [tag]\",\"value\":\"135\"},{\"begin\":3745,\"end\":3750,\"name\":\"DUP3\"},{\"begin\":3717,\"end\":3751,\"name\":\"PUSH [tag]\",\"value\":\"136\"},{\"begin\":3717,\"end\":3751,\"name\":\"JUMP\"},{\"begin\":3717,\"end\":3751,\"name\":\"tag\",\"value\":\"135\"},{\"begin\":3717,\"end\":3751,\"name\":\"JUMPDEST\"},{\"begin\":3763,\"end\":3823,\"name\":\"PUSH [tag]\",\"value\":\"137\"},{\"begin\":3816,\"end\":3822,\"name\":\"DUP2\"},{\"begin\":3811,\"end\":3814,\"name\":\"DUP6\"},{\"begin\":3763,\"end\":3823,\"name\":\"PUSH [tag]\",\"value\":\"138\"},{\"begin\":3763,\"end\":3823,\"name\":\"JUMP\"},{\"begin\":3763,\"end\":3823,\"name\":\"tag\",\"value\":\"137\"},{\"begin\":3763,\"end\":3823,\"name\":\"JUMPDEST\"},{\"begin\":3756,\"end\":3823,\"name\":\"SWAP4\"},{\"begin\":3756,\"end\":3823,\"name\":\"POP\"},{\"begin\":3828,\"end\":3880,\"name\":\"PUSH [tag]\",\"value\":\"139\"},{\"begin\":3873,\"end\":3879,\"name\":\"DUP2\"},{\"begin\":3868,\"end\":3871,\"name\":\"DUP6\"},{\"begin\":3861,\"end\":3865,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":3854,\"end\":3859,\"name\":\"DUP7\"},{\"begin\":3850,\"end\":3866,\"name\":\"ADD\"},{\"begin\":3828,\"end\":3880,\"name\":\"PUSH [tag]\",\"value\":\"140\"},{\"begin\":3828,\"end\":3880,\"name\":\"JUMP\"},{\"begin\":3828,\"end\":3880,\"name\":\"tag\",\"value\":\"139\"},{\"begin\":3828,\"end\":3880,\"name\":\"JUMPDEST\"},{\"begin\":3901,\"end\":3930,\"name\":\"PUSH [tag]\",\"value\":\"141\"},{\"begin\":3923,\"end\":3929,\"name\":\"DUP2\"},{\"begin\":3901,\"end\":3930,\"name\":\"PUSH [tag]\",\"value\":\"142\"},{\"begin\":3901,\"end\":3930,\"name\":\"JUMP\"},{\"begin\":3901,\"end\":3930,\"name\":\"tag\",\"value\":\"141\"},{\"begin\":3901,\"end\":3930,\"name\":\"JUMPDEST\"},{\"begin\":3896,\"end\":3899,\"name\":\"DUP5\"},{\"begin\":3892,\"end\":3931,\"name\":\"ADD\"},{\"begin\":3885,\"end\":3931,\"name\":\"SWAP2\"},{\"begin\":3885,\"end\":3931,\"name\":\"POP\"},{\"begin\":3697,\"end\":3936,\"name\":\"POP\"},{\"begin\":3697,\"end\":3936,\"name\":\"SWAP3\"},{\"begin\":3697,\"end\":3936,\"name\":\"SWAP2\"},{\"begin\":3697,\"end\":3936,\"name\":\"POP\"},{\"begin\":3697,\"end\":3936,\"name\":\"POP\"},{\"begin\":3697,\"end\":3936,\"name\":\"JUMP\"},{\"begin\":3943,\"end\":4290,\"name\":\"tag\",\"value\":\"144\"},{\"begin\":3943,\"end\":4290,\"name\":\"JUMPDEST\"},{\"begin\":3943,\"end\":4290,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":4055,\"end\":4094,\"name\":\"PUSH [tag]\",\"value\":\"145\"},{\"begin\":4088,\"end\":4093,\"name\":\"DUP3\"},{\"begin\":4055,\"end\":4094,\"name\":\"PUSH [tag]\",\"value\":\"146\"},{\"begin\":4055,\"end\":4094,\"name\":\"JUMP\"},{\"begin\":4055,\"end\":4094,\"name\":\"tag\",\"value\":\"145\"},{\"begin\":4055,\"end\":4094,\"name\":\"JUMPDEST\"},{\"begin\":4106,\"end\":4177,\"name\":\"PUSH [tag]\",\"value\":\"147\"},{\"begin\":4170,\"end\":4176,\"name\":\"DUP2\"},{\"begin\":4165,\"end\":4168,\"name\":\"DUP6\"},{\"begin\":4106,\"end\":4177,\"name\":\"PUSH [tag]\",\"value\":\"148\"},{\"begin\":4106,\"end\":4177,\"name\":\"JUMP\"},{\"begin\":4106,\"end\":4177,\"name\":\"tag\",\"value\":\"147\"},{\"begin\":4106,\"end\":4177,\"name\":\"JUMPDEST\"},{\"begin\":4099,\"end\":4177,\"name\":\"SWAP4\"},{\"begin\":4099,\"end\":4177,\"name\":\"POP\"},{\"begin\":4182,\"end\":4234,\"name\":\"PUSH [tag]\",\"value\":\"149\"},{\"begin\":4227,\"end\":4233,\"name\":\"DUP2\"},{\"begin\":4222,\"end\":4225,\"name\":\"DUP6\"},{\"begin\":4215,\"end\":4219,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":4208,\"end\":4213,\"name\":\"DUP7\"},{\"begin\":4204,\"end\":4220,\"name\":\"ADD\"},{\"begin\":4182,\"end\":4234,\"name\":\"PUSH [tag]\",\"value\":\"140\"},{\"begin\":4182,\"end\":4234,\"name\":\"JUMP\"},{\"begin\":4182,\"end\":4234,\"name\":\"tag\",\"value\":\"149\"},{\"begin\":4182,\"end\":4234,\"name\":\"JUMPDEST\"},{\"begin\":4255,\"end\":4284,\"name\":\"PUSH [tag]\",\"value\":\"150\"},{\"begin\":4277,\"end\":4283,\"name\":\"DUP2\"},{\"begin\":4255,\"end\":4284,\"name\":\"PUSH [tag]\",\"value\":\"142\"},{\"begin\":4255,\"end\":4284,\"name\":\"JUMP\"},{\"begin\":4255,\"end\":4284,\"name\":\"tag\",\"value\":\"150\"},{\"begin\":4255,\"end\":4284,\"name\":\"JUMPDEST\"},{\"begin\":4250,\"end\":4253,\"name\":\"DUP5\"},{\"begin\":4246,\"end\":4285,\"name\":\"ADD\"},{\"begin\":4239,\"end\":4285,\"name\":\"SWAP2\"},{\"begin\":4239,\"end\":4285,\"name\":\"POP\"},{\"begin\":4035,\"end\":4290,\"name\":\"POP\"},{\"begin\":4035,\"end\":4290,\"name\":\"SWAP3\"},{\"begin\":4035,\"end\":4290,\"name\":\"SWAP2\"},{\"begin\":4035,\"end\":4290,\"name\":\"POP\"},{\"begin\":4035,\"end\":4290,\"name\":\"POP\"},{\"begin\":4035,\"end\":4290,\"name\":\"JUMP\"},{\"begin\":4297,\"end\":4616,\"name\":\"tag\",\"value\":\"152\"},{\"begin\":4297,\"end\":4616,\"name\":\"JUMPDEST\"},{\"begin\":4297,\"end\":4616,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":4395,\"end\":4430,\"name\":\"PUSH [tag]\",\"value\":\"153\"},{\"begin\":4424,\"end\":4429,\"name\":\"DUP3\"},{\"begin\":4395,\"end\":4430,\"name\":\"PUSH [tag]\",\"value\":\"154\"},{\"begin\":4395,\"end\":4430,\"name\":\"JUMP\"},{\"begin\":4395,\"end\":4430,\"name\":\"tag\",\"value\":\"153\"},{\"begin\":4395,\"end\":4430,\"name\":\"JUMPDEST\"},{\"begin\":4442,\"end\":4503,\"name\":\"PUSH [tag]\",\"value\":\"155\"},{\"begin\":4496,\"end\":4502,\"name\":\"DUP2\"},{\"begin\":4491,\"end\":4494,\"name\":\"DUP6\"},{\"begin\":4442,\"end\":4503,\"name\":\"PUSH [tag]\",\"value\":\"156\"},{\"begin\":4442,\"end\":4503,\"name\":\"JUMP\"},{\"begin\":4442,\"end\":4503,\"name\":\"tag\",\"value\":\"155\"},{\"begin\":4442,\"end\":4503,\"name\":\"JUMPDEST\"},{\"begin\":4435,\"end\":4503,\"name\":\"SWAP4\"},{\"begin\":4435,\"end\":4503,\"name\":\"POP\"},{\"begin\":4508,\"end\":4560,\"name\":\"PUSH [tag]\",\"value\":\"157\"},{\"begin\":4553,\"end\":4559,\"name\":\"DUP2\"},{\"begin\":4548,\"end\":4551,\"name\":\"DUP6\"},{\"begin\":4541,\"end\":4545,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":4534,\"end\":4539,\"name\":\"DUP7\"},{\"begin\":4530,\"end\":4546,\"name\":\"ADD\"},{\"begin\":4508,\"end\":4560,\"name\":\"PUSH [tag]\",\"value\":\"140\"},{\"begin\":4508,\"end\":4560,\"name\":\"JUMP\"},{\"begin\":4508,\"end\":4560,\"name\":\"tag\",\"value\":\"157\"},{\"begin\":4508,\"end\":4560,\"name\":\"JUMPDEST\"},{\"begin\":4581,\"end\":4610,\"name\":\"PUSH [tag]\",\"value\":\"158\"},{\"begin\":4603,\"end\":4609,\"name\":\"DUP2\"},{\"begin\":4581,\"end\":4610,\"name\":\"PUSH [tag]\",\"value\":\"142\"},{\"begin\":4581,\"end\":4610,\"name\":\"JUMP\"},{\"begin\":4581,\"end\":4610,\"name\":\"tag\",\"value\":\"158\"},{\"begin\":4581,\"end\":4610,\"name\":\"JUMPDEST\"},{\"begin\":4576,\"end\":4579,\"name\":\"DUP5\"},{\"begin\":4572,\"end\":4611,\"name\":\"ADD\"},{\"begin\":4565,\"end\":4611,\"name\":\"SWAP2\"},{\"begin\":4565,\"end\":4611,\"name\":\"POP\"},{\"begin\":4375,\"end\":4616,\"name\":\"POP\"},{\"begin\":4375,\"end\":4616,\"name\":\"SWAP3\"},{\"begin\":4375,\"end\":4616,\"name\":\"SWAP2\"},{\"begin\":4375,\"end\":4616,\"name\":\"POP\"},{\"begin\":4375,\"end\":4616,\"name\":\"POP\"},{\"begin\":4375,\"end\":4616,\"name\":\"JUMP\"},{\"begin\":4680,\"end\":5621,\"name\":\"tag\",\"value\":\"160\"},{\"begin\":4680,\"end\":5621,\"name\":\"JUMPDEST\"},{\"begin\":4680,\"end\":5621,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":4827,\"end\":4831,\"name\":\"PUSH\",\"value\":\"80\"},{\"begin\":4822,\"end\":4825,\"name\":\"DUP4\"},{\"begin\":4818,\"end\":4832,\"name\":\"ADD\"},{\"begin\":4911,\"end\":4914,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":4904,\"end\":4909,\"name\":\"DUP4\"},{\"begin\":4900,\"end\":4915,\"name\":\"ADD\"},{\"begin\":4894,\"end\":4916,\"name\":\"MLOAD\"},{\"begin\":4922,\"end\":4983,\"name\":\"PUSH [tag]\",\"value\":\"161\"},{\"begin\":4978,\"end\":4981,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":4973,\"end\":4976,\"name\":\"DUP7\"},{\"begin\":4969,\"end\":4982,\"name\":\"ADD\"},{\"begin\":4956,\"end\":4967,\"name\":\"DUP3\"},{\"begin\":4922,\"end\":4983,\"name\":\"PUSH [tag]\",\"value\":\"112\"},{\"begin\":4922,\"end\":4983,\"name\":\"JUMP\"},{\"begin\":4922,\"end\":4983,\"name\":\"tag\",\"value\":\"161\"},{\"begin\":4922,\"end\":4983,\"name\":\"JUMPDEST\"},{\"begin\":4847,\"end\":4989,\"name\":\"POP\"},{\"begin\":5066,\"end\":5070,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":5059,\"end\":5064,\"name\":\"DUP4\"},{\"begin\":5055,\"end\":5071,\"name\":\"ADD\"},{\"begin\":5049,\"end\":5072,\"name\":\"MLOAD\"},{\"begin\":5078,\"end\":5140,\"name\":\"PUSH [tag]\",\"value\":\"162\"},{\"begin\":5134,\"end\":5138,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":5129,\"end\":5132,\"name\":\"DUP7\"},{\"begin\":5125,\"end\":5139,\"name\":\"ADD\"},{\"begin\":5112,\"end\":5123,\"name\":\"DUP3\"},{\"begin\":5078,\"end\":5140,\"name\":\"PUSH [tag]\",\"value\":\"163\"},{\"begin\":5078,\"end\":5140,\"name\":\"JUMP\"},{\"begin\":5078,\"end\":5140,\"name\":\"tag\",\"value\":\"162\"},{\"begin\":5078,\"end\":5140,\"name\":\"JUMPDEST\"},{\"begin\":4999,\"end\":5146,\"name\":\"POP\"},{\"begin\":5221,\"end\":5225,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":5214,\"end\":5219,\"name\":\"DUP4\"},{\"begin\":5210,\"end\":5226,\"name\":\"ADD\"},{\"begin\":5204,\"end\":5227,\"name\":\"MLOAD\"},{\"begin\":5273,\"end\":5276,\"name\":\"DUP5\"},{\"begin\":5267,\"end\":5271,\"name\":\"DUP3\"},{\"begin\":5263,\"end\":5277,\"name\":\"SUB\"},{\"begin\":5256,\"end\":5260,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":5251,\"end\":5254,\"name\":\"DUP7\"},{\"begin\":5247,\"end\":5261,\"name\":\"ADD\"},{\"begin\":5240,\"end\":5278,\"name\":\"MSTORE\"},{\"begin\":5293,\"end\":5361,\"name\":\"PUSH [tag]\",\"value\":\"164\"},{\"begin\":5356,\"end\":5360,\"name\":\"DUP3\"},{\"begin\":5343,\"end\":5354,\"name\":\"DUP3\"},{\"begin\":5293,\"end\":5361,\"name\":\"PUSH [tag]\",\"value\":\"152\"},{\"begin\":5293,\"end\":5361,\"name\":\"JUMP\"},{\"begin\":5293,\"end\":5361,\"name\":\"tag\",\"value\":\"164\"},{\"begin\":5293,\"end\":5361,\"name\":\"JUMPDEST\"},{\"begin\":5285,\"end\":5361,\"name\":\"SWAP2\"},{\"begin\":5285,\"end\":5361,\"name\":\"POP\"},{\"begin\":5156,\"end\":5373,\"name\":\"POP\"},{\"begin\":5445,\"end\":5449,\"name\":\"PUSH\",\"value\":\"60\"},{\"begin\":5438,\"end\":5443,\"name\":\"DUP4\"},{\"begin\":5434,\"end\":5450,\"name\":\"ADD\"},{\"begin\":5428,\"end\":5451,\"name\":\"MLOAD\"},{\"begin\":5497,\"end\":5500,\"name\":\"DUP5\"},{\"begin\":5491,\"end\":5495,\"name\":\"DUP3\"},{\"begin\":5487,\"end\":5501,\"name\":\"SUB\"},{\"begin\":5480,\"end\":5484,\"name\":\"PUSH\",\"value\":\"60\"},{\"begin\":5475,\"end\":5478,\"name\":\"DUP7\"},{\"begin\":5471,\"end\":5485,\"name\":\"ADD\"},{\"begin\":5464,\"end\":5502,\"name\":\"MSTORE\"},{\"begin\":5517,\"end\":5583,\"name\":\"PUSH [tag]\",\"value\":\"165\"},{\"begin\":5578,\"end\":5582,\"name\":\"DUP3\"},{\"begin\":5565,\"end\":5576,\"name\":\"DUP3\"},{\"begin\":5517,\"end\":5583,\"name\":\"PUSH [tag]\",\"value\":\"134\"},{\"begin\":5517,\"end\":5583,\"name\":\"JUMP\"},{\"begin\":5517,\"end\":5583,\"name\":\"tag\",\"value\":\"165\"},{\"begin\":5517,\"end\":5583,\"name\":\"JUMPDEST\"},{\"begin\":5509,\"end\":5583,\"name\":\"SWAP2\"},{\"begin\":5509,\"end\":5583,\"name\":\"POP\"},{\"begin\":5383,\"end\":5595,\"name\":\"POP\"},{\"begin\":5612,\"end\":5616,\"name\":\"DUP1\"},{\"begin\":5605,\"end\":5616,\"name\":\"SWAP2\"},{\"begin\":5605,\"end\":5616,\"name\":\"POP\"},{\"begin\":4800,\"end\":5621,\"name\":\"POP\"},{\"begin\":4800,\"end\":5621,\"name\":\"SWAP3\"},{\"begin\":4800,\"end\":5621,\"name\":\"SWAP2\"},{\"begin\":4800,\"end\":5621,\"name\":\"POP\"},{\"begin\":4800,\"end\":5621,\"name\":\"POP\"},{\"begin\":4800,\"end\":5621,\"name\":\"JUMP\"},{\"begin\":5685,\"end\":6612,\"name\":\"tag\",\"value\":\"106\"},{\"begin\":5685,\"end\":6612,\"name\":\"JUMPDEST\"},{\"begin\":5685,\"end\":6612,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":5818,\"end\":5822,\"name\":\"PUSH\",\"value\":\"80\"},{\"begin\":5813,\"end\":5816,\"name\":\"DUP4\"},{\"begin\":5809,\"end\":5823,\"name\":\"ADD\"},{\"begin\":5902,\"end\":5905,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":5895,\"end\":5900,\"name\":\"DUP4\"},{\"begin\":5891,\"end\":5906,\"name\":\"ADD\"},{\"begin\":5885,\"end\":5907,\"name\":\"MLOAD\"},{\"begin\":5913,\"end\":5974,\"name\":\"PUSH [tag]\",\"value\":\"167\"},{\"begin\":5969,\"end\":5972,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":5964,\"end\":5967,\"name\":\"DUP7\"},{\"begin\":5960,\"end\":5973,\"name\":\"ADD\"},{\"begin\":5947,\"end\":5958,\"name\":\"DUP3\"},{\"begin\":5913,\"end\":5974,\"name\":\"PUSH [tag]\",\"value\":\"112\"},{\"begin\":5913,\"end\":5974,\"name\":\"JUMP\"},{\"begin\":5913,\"end\":5974,\"name\":\"tag\",\"value\":\"167\"},{\"begin\":5913,\"end\":5974,\"name\":\"JUMPDEST\"},{\"begin\":5838,\"end\":5980,\"name\":\"POP\"},{\"begin\":6057,\"end\":6061,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":6050,\"end\":6055,\"name\":\"DUP4\"},{\"begin\":6046,\"end\":6062,\"name\":\"ADD\"},{\"begin\":6040,\"end\":6063,\"name\":\"MLOAD\"},{\"begin\":6069,\"end\":6131,\"name\":\"PUSH [tag]\",\"value\":\"168\"},{\"begin\":6125,\"end\":6129,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":6120,\"end\":6123,\"name\":\"DUP7\"},{\"begin\":6116,\"end\":6130,\"name\":\"ADD\"},{\"begin\":6103,\"end\":6114,\"name\":\"DUP3\"},{\"begin\":6069,\"end\":6131,\"name\":\"PUSH [tag]\",\"value\":\"163\"},{\"begin\":6069,\"end\":6131,\"name\":\"JUMP\"},{\"begin\":6069,\"end\":6131,\"name\":\"tag\",\"value\":\"168\"},{\"begin\":6069,\"end\":6131,\"name\":\"JUMPDEST\"},{\"begin\":5990,\"end\":6137,\"name\":\"POP\"},{\"begin\":6212,\"end\":6216,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":6205,\"end\":6210,\"name\":\"DUP4\"},{\"begin\":6201,\"end\":6217,\"name\":\"ADD\"},{\"begin\":6195,\"end\":6218,\"name\":\"MLOAD\"},{\"begin\":6264,\"end\":6267,\"name\":\"DUP5\"},{\"begin\":6258,\"end\":6262,\"name\":\"DUP3\"},{\"begin\":6254,\"end\":6268,\"name\":\"SUB\"},{\"begin\":6247,\"end\":6251,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":6242,\"end\":6245,\"name\":\"DUP7\"},{\"begin\":6238,\"end\":6252,\"name\":\"ADD\"},{\"begin\":6231,\"end\":6269,\"name\":\"MSTORE\"},{\"begin\":6284,\"end\":6352,\"name\":\"PUSH [tag]\",\"value\":\"169\"},{\"begin\":6347,\"end\":6351,\"name\":\"DUP3\"},{\"begin\":6334,\"end\":6345,\"name\":\"DUP3\"},{\"begin\":6284,\"end\":6352,\"name\":\"PUSH [tag]\",\"value\":\"152\"},{\"begin\":6284,\"end\":6352,\"name\":\"JUMP\"},{\"begin\":6284,\"end\":6352,\"name\":\"tag\",\"value\":\"169\"},{\"begin\":6284,\"end\":6352,\"name\":\"JUMPDEST\"},{\"begin\":6276,\"end\":6352,\"name\":\"SWAP2\"},{\"begin\":6276,\"end\":6352,\"name\":\"POP\"},{\"begin\":6147,\"end\":6364,\"name\":\"POP\"},{\"begin\":6436,\"end\":6440,\"name\":\"PUSH\",\"value\":\"60\"},{\"begin\":6429,\"end\":6434,\"name\":\"DUP4\"},{\"begin\":6425,\"end\":6441,\"name\":\"ADD\"},{\"begin\":6419,\"end\":6442,\"name\":\"MLOAD\"},{\"begin\":6488,\"end\":6491,\"name\":\"DUP5\"},{\"begin\":6482,\"end\":6486,\"name\":\"DUP3\"},{\"begin\":6478,\"end\":6492,\"name\":\"SUB\"},{\"begin\":6471,\"end\":6475,\"name\":\"PUSH\",\"value\":\"60\"},{\"begin\":6466,\"end\":6469,\"name\":\"DUP7\"},{\"begin\":6462,\"end\":6476,\"name\":\"ADD\"},{\"begin\":6455,\"end\":6493,\"name\":\"MSTORE\"},{\"begin\":6508,\"end\":6574,\"name\":\"PUSH [tag]\",\"value\":\"170\"},{\"begin\":6569,\"end\":6573,\"name\":\"DUP3\"},{\"begin\":6556,\"end\":6567,\"name\":\"DUP3\"},{\"begin\":6508,\"end\":6574,\"name\":\"PUSH [tag]\",\"value\":\"134\"},{\"begin\":6508,\"end\":6574,\"name\":\"JUMP\"},{\"begin\":6508,\"end\":6574,\"name\":\"tag\",\"value\":\"170\"},{\"begin\":6508,\"end\":6574,\"name\":\"JUMPDEST\"},{\"begin\":6500,\"end\":6574,\"name\":\"SWAP2\"},{\"begin\":6500,\"end\":6574,\"name\":\"POP\"},{\"begin\":6374,\"end\":6586,\"name\":\"POP\"},{\"begin\":6603,\"end\":6607,\"name\":\"DUP1\"},{\"begin\":6596,\"end\":6607,\"name\":\"SWAP2\"},{\"begin\":6596,\"end\":6607,\"name\":\"POP\"},{\"begin\":5791,\"end\":6612,\"name\":\"POP\"},{\"begin\":5791,\"end\":6612,\"name\":\"SWAP3\"},{\"begin\":5791,\"end\":6612,\"name\":\"SWAP2\"},{\"begin\":5791,\"end\":6612,\"name\":\"POP\"},{\"begin\":5791,\"end\":6612,\"name\":\"POP\"},{\"begin\":5791,\"end\":6612,\"name\":\"JUMP\"},{\"begin\":6619,\"end\":6729,\"name\":\"tag\",\"value\":\"163\"},{\"begin\":6619,\"end\":6729,\"name\":\"JUMPDEST\"},{\"begin\":6692,\"end\":6723,\"name\":\"PUSH [tag]\",\"value\":\"172\"},{\"begin\":6717,\"end\":6722,\"name\":\"DUP2\"},{\"begin\":6692,\"end\":6723,\"name\":\"PUSH [tag]\",\"value\":\"173\"},{\"begin\":6692,\"end\":6723,\"name\":\"JUMP\"},{\"begin\":6692,\"end\":6723,\"name\":\"tag\",\"value\":\"172\"},{\"begin\":6692,\"end\":6723,\"name\":\"JUMPDEST\"},{\"begin\":6687,\"end\":6690,\"name\":\"DUP3\"},{\"begin\":6680,\"end\":6724,\"name\":\"MSTORE\"},{\"begin\":6674,\"end\":6729,\"name\":\"POP\"},{\"begin\":6674,\"end\":6729,\"name\":\"POP\"},{\"begin\":6674,\"end\":6729,\"name\":\"JUMP\"},{\"begin\":6736,\"end\":7173,\"name\":\"tag\",\"value\":\"14\"},{\"begin\":6736,\"end\":7173,\"name\":\"JUMPDEST\"},{\"begin\":6736,\"end\":7173,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":6942,\"end\":6944,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":6931,\"end\":6940,\"name\":\"DUP3\"},{\"begin\":6927,\"end\":6945,\"name\":\"ADD\"},{\"begin\":6919,\"end\":6945,\"name\":\"SWAP1\"},{\"begin\":6919,\"end\":6945,\"name\":\"POP\"},{\"begin\":6992,\"end\":7001,\"name\":\"DUP2\"},{\"begin\":6986,\"end\":6990,\"name\":\"DUP2\"},{\"begin\":6982,\"end\":7002,\"name\":\"SUB\"},{\"begin\":6978,\"end\":6979,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":6967,\"end\":6976,\"name\":\"DUP4\"},{\"begin\":6963,\"end\":6980,\"name\":\"ADD\"},{\"begin\":6956,\"end\":7003,\"name\":\"MSTORE\"},{\"begin\":7017,\"end\":7163,\"name\":\"PUSH [tag]\",\"value\":\"175\"},{\"begin\":7158,\"end\":7162,\"name\":\"DUP2\"},{\"begin\":7149,\"end\":7155,\"name\":\"DUP5\"},{\"begin\":7017,\"end\":7163,\"name\":\"PUSH [tag]\",\"value\":\"116\"},{\"begin\":7017,\"end\":7163,\"name\":\"JUMP\"},{\"begin\":7017,\"end\":7163,\"name\":\"tag\",\"value\":\"175\"},{\"begin\":7017,\"end\":7163,\"name\":\"JUMPDEST\"},{\"begin\":7009,\"end\":7163,\"name\":\"SWAP1\"},{\"begin\":7009,\"end\":7163,\"name\":\"POP\"},{\"begin\":6913,\"end\":7173,\"name\":\"SWAP3\"},{\"begin\":6913,\"end\":7173,\"name\":\"SWAP2\"},{\"begin\":6913,\"end\":7173,\"name\":\"POP\"},{\"begin\":6913,\"end\":7173,\"name\":\"POP\"},{\"begin\":6913,\"end\":7173,\"name\":\"JUMP\"},{\"begin\":7180,\"end\":7719,\"name\":\"tag\",\"value\":\"29\"},{\"begin\":7180,\"end\":7719,\"name\":\"JUMPDEST\"},{\"begin\":7180,\"end\":7719,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":7382,\"end\":7384,\"name\":\"PUSH\",\"value\":\"60\"},{\"begin\":7371,\"end\":7380,\"name\":\"DUP3\"},{\"begin\":7367,\"end\":7385,\"name\":\"ADD\"},{\"begin\":7359,\"end\":7385,\"name\":\"SWAP1\"},{\"begin\":7359,\"end\":7385,\"name\":\"POP\"},{\"begin\":7432,\"end\":7441,\"name\":\"DUP2\"},{\"begin\":7426,\"end\":7430,\"name\":\"DUP2\"},{\"begin\":7422,\"end\":7442,\"name\":\"SUB\"},{\"begin\":7418,\"end\":7419,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":7407,\"end\":7416,\"name\":\"DUP4\"},{\"begin\":7403,\"end\":7420,\"name\":\"ADD\"},{\"begin\":7396,\"end\":7443,\"name\":\"MSTORE\"},{\"begin\":7457,\"end\":7535,\"name\":\"PUSH [tag]\",\"value\":\"177\"},{\"begin\":7530,\"end\":7534,\"name\":\"DUP2\"},{\"begin\":7521,\"end\":7527,\"name\":\"DUP7\"},{\"begin\":7457,\"end\":7535,\"name\":\"PUSH [tag]\",\"value\":\"144\"},{\"begin\":7457,\"end\":7535,\"name\":\"JUMP\"},{\"begin\":7457,\"end\":7535,\"name\":\"tag\",\"value\":\"177\"},{\"begin\":7457,\"end\":7535,\"name\":\"JUMPDEST\"},{\"begin\":7449,\"end\":7535,\"name\":\"SWAP1\"},{\"begin\":7449,\"end\":7535,\"name\":\"POP\"},{\"begin\":7546,\"end\":7618,\"name\":\"PUSH [tag]\",\"value\":\"178\"},{\"begin\":7614,\"end\":7616,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":7603,\"end\":7612,\"name\":\"DUP4\"},{\"begin\":7599,\"end\":7617,\"name\":\"ADD\"},{\"begin\":7590,\"end\":7596,\"name\":\"DUP6\"},{\"begin\":7546,\"end\":7618,\"name\":\"PUSH [tag]\",\"value\":\"130\"},{\"begin\":7546,\"end\":7618,\"name\":\"JUMP\"},{\"begin\":7546,\"end\":7618,\"name\":\"tag\",\"value\":\"178\"},{\"begin\":7546,\"end\":7618,\"name\":\"JUMPDEST\"},{\"begin\":7629,\"end\":7709,\"name\":\"PUSH [tag]\",\"value\":\"179\"},{\"begin\":7705,\"end\":7707,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":7694,\"end\":7703,\"name\":\"DUP4\"},{\"begin\":7690,\"end\":7708,\"name\":\"ADD\"},{\"begin\":7681,\"end\":7687,\"name\":\"DUP5\"},{\"begin\":7629,\"end\":7709,\"name\":\"PUSH [tag]\",\"value\":\"108\"},{\"begin\":7629,\"end\":7709,\"name\":\"JUMP\"},{\"begin\":7629,\"end\":7709,\"name\":\"tag\",\"value\":\"179\"},{\"begin\":7629,\"end\":7709,\"name\":\"JUMPDEST\"},{\"begin\":7353,\"end\":7719,\"name\":\"SWAP5\"},{\"begin\":7353,\"end\":7719,\"name\":\"SWAP4\"},{\"begin\":7353,\"end\":7719,\"name\":\"POP\"},{\"begin\":7353,\"end\":7719,\"name\":\"POP\"},{\"begin\":7353,\"end\":7719,\"name\":\"POP\"},{\"begin\":7353,\"end\":7719,\"name\":\"POP\"},{\"begin\":7353,\"end\":7719,\"name\":\"JUMP\"},{\"begin\":7726,\"end\":8079,\"name\":\"tag\",\"value\":\"19\"},{\"begin\":7726,\"end\":8079,\"name\":\"JUMPDEST\"},{\"begin\":7726,\"end\":8079,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":7890,\"end\":7892,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":7879,\"end\":7888,\"name\":\"DUP3\"},{\"begin\":7875,\"end\":7893,\"name\":\"ADD\"},{\"begin\":7867,\"end\":7893,\"name\":\"SWAP1\"},{\"begin\":7867,\"end\":7893,\"name\":\"POP\"},{\"begin\":7940,\"end\":7949,\"name\":\"DUP2\"},{\"begin\":7934,\"end\":7938,\"name\":\"DUP2\"},{\"begin\":7930,\"end\":7950,\"name\":\"SUB\"},{\"begin\":7926,\"end\":7927,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":7915,\"end\":7924,\"name\":\"DUP4\"},{\"begin\":7911,\"end\":7928,\"name\":\"ADD\"},{\"begin\":7904,\"end\":7951,\"name\":\"MSTORE\"},{\"begin\":7965,\"end\":8069,\"name\":\"PUSH [tag]\",\"value\":\"181\"},{\"begin\":8064,\"end\":8068,\"name\":\"DUP2\"},{\"begin\":8055,\"end\":8061,\"name\":\"DUP5\"},{\"begin\":7965,\"end\":8069,\"name\":\"PUSH [tag]\",\"value\":\"160\"},{\"begin\":7965,\"end\":8069,\"name\":\"JUMP\"},{\"begin\":7965,\"end\":8069,\"name\":\"tag\",\"value\":\"181\"},{\"begin\":7965,\"end\":8069,\"name\":\"JUMPDEST\"},{\"begin\":7957,\"end\":8069,\"name\":\"SWAP1\"},{\"begin\":7957,\"end\":8069,\"name\":\"POP\"},{\"begin\":7861,\"end\":8079,\"name\":\"SWAP3\"},{\"begin\":7861,\"end\":8079,\"name\":\"SWAP2\"},{\"begin\":7861,\"end\":8079,\"name\":\"POP\"},{\"begin\":7861,\"end\":8079,\"name\":\"POP\"},{\"begin\":7861,\"end\":8079,\"name\":\"JUMP\"},{\"begin\":8086,\"end\":8342,\"name\":\"tag\",\"value\":\"77\"},{\"begin\":8086,\"end\":8342,\"name\":\"JUMPDEST\"},{\"begin\":8086,\"end\":8342,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":8148,\"end\":8150,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":8142,\"end\":8151,\"name\":\"MLOAD\"},{\"begin\":8132,\"end\":8151,\"name\":\"SWAP1\"},{\"begin\":8132,\"end\":8151,\"name\":\"POP\"},{\"begin\":8186,\"end\":8190,\"name\":\"DUP2\"},{\"begin\":8178,\"end\":8184,\"name\":\"DUP2\"},{\"begin\":8174,\"end\":8191,\"name\":\"ADD\"},{\"begin\":8285,\"end\":8291,\"name\":\"DUP2\"},{\"begin\":8273,\"end\":8283,\"name\":\"DUP2\"},{\"begin\":8270,\"end\":8292,\"name\":\"LT\"},{\"begin\":8249,\"end\":8267,\"name\":\"PUSH\",\"value\":\"FFFFFFFFFFFFFFFF\"},{\"begin\":8237,\"end\":8247,\"name\":\"DUP3\"},{\"begin\":8234,\"end\":8268,\"name\":\"GT\"},{\"begin\":8231,\"end\":8293,\"name\":\"OR\"},{\"begin\":8228,\"end\":8230,\"name\":\"ISZERO\"},{\"begin\":8228,\"end\":8230,\"name\":\"PUSH [tag]\",\"value\":\"183\"},{\"begin\":8228,\"end\":8230,\"name\":\"JUMPI\"},{\"begin\":8306,\"end\":8307,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":8303,\"end\":8304,\"name\":\"DUP1\"},{\"begin\":8296,\"end\":8308,\"name\":\"REVERT\"},{\"begin\":8228,\"end\":8230,\"name\":\"tag\",\"value\":\"183\"},{\"begin\":8228,\"end\":8230,\"name\":\"JUMPDEST\"},{\"begin\":8326,\"end\":8336,\"name\":\"DUP1\"},{\"begin\":8322,\"end\":8324,\"name\":\"PUSH\",\"value\":\"40\"},{\"begin\":8315,\"end\":8337,\"name\":\"MSTORE\"},{\"begin\":8126,\"end\":8342,\"name\":\"POP\"},{\"begin\":8126,\"end\":8342,\"name\":\"SWAP2\"},{\"begin\":8126,\"end\":8342,\"name\":\"SWAP1\"},{\"begin\":8126,\"end\":8342,\"name\":\"POP\"},{\"begin\":8126,\"end\":8342,\"name\":\"JUMP\"},{\"begin\":8349,\"end\":8607,\"name\":\"tag\",\"value\":\"76\"},{\"begin\":8349,\"end\":8607,\"name\":\"JUMPDEST\"},{\"begin\":8349,\"end\":8607,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":8492,\"end\":8510,\"name\":\"PUSH\",\"value\":\"FFFFFFFFFFFFFFFF\"},{\"begin\":8484,\"end\":8490,\"name\":\"DUP3\"},{\"begin\":8481,\"end\":8511,\"name\":\"GT\"},{\"begin\":8478,\"end\":8480,\"name\":\"ISZERO\"},{\"begin\":8478,\"end\":8480,\"name\":\"PUSH [tag]\",\"value\":\"185\"},{\"begin\":8478,\"end\":8480,\"name\":\"JUMPI\"},{\"begin\":8524,\"end\":8525,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":8521,\"end\":8522,\"name\":\"DUP1\"},{\"begin\":8514,\"end\":8526,\"name\":\"REVERT\"},{\"begin\":8478,\"end\":8480,\"name\":\"tag\",\"value\":\"185\"},{\"begin\":8478,\"end\":8480,\"name\":\"JUMPDEST\"},{\"begin\":8568,\"end\":8572,\"name\":\"PUSH\",\"value\":\"1F\"},{\"begin\":8564,\"end\":8573,\"name\":\"NOT\"},{\"begin\":8557,\"end\":8561,\"name\":\"PUSH\",\"value\":\"1F\"},{\"begin\":8549,\"end\":8555,\"name\":\"DUP4\"},{\"begin\":8545,\"end\":8562,\"name\":\"ADD\"},{\"begin\":8541,\"end\":8574,\"name\":\"AND\"},{\"begin\":8533,\"end\":8574,\"name\":\"SWAP1\"},{\"begin\":8533,\"end\":8574,\"name\":\"POP\"},{\"begin\":8597,\"end\":8601,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":8591,\"end\":8595,\"name\":\"DUP2\"},{\"begin\":8587,\"end\":8602,\"name\":\"ADD\"},{\"begin\":8579,\"end\":8602,\"name\":\"SWAP1\"},{\"begin\":8579,\"end\":8602,\"name\":\"POP\"},{\"begin\":8415,\"end\":8607,\"name\":\"SWAP2\"},{\"begin\":8415,\"end\":8607,\"name\":\"SWAP1\"},{\"begin\":8415,\"end\":8607,\"name\":\"POP\"},{\"begin\":8415,\"end\":8607,\"name\":\"JUMP\"},{\"begin\":8614,\"end\":8873,\"name\":\"tag\",\"value\":\"86\"},{\"begin\":8614,\"end\":8873,\"name\":\"JUMPDEST\"},{\"begin\":8614,\"end\":8873,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":8758,\"end\":8776,\"name\":\"PUSH\",\"value\":\"FFFFFFFFFFFFFFFF\"},{\"begin\":8750,\"end\":8756,\"name\":\"DUP3\"},{\"begin\":8747,\"end\":8777,\"name\":\"GT\"},{\"begin\":8744,\"end\":8746,\"name\":\"ISZERO\"},{\"begin\":8744,\"end\":8746,\"name\":\"PUSH [tag]\",\"value\":\"187\"},{\"begin\":8744,\"end\":8746,\"name\":\"JUMPI\"},{\"begin\":8790,\"end\":8791,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":8787,\"end\":8788,\"name\":\"DUP1\"},{\"begin\":8780,\"end\":8792,\"name\":\"REVERT\"},{\"begin\":8744,\"end\":8746,\"name\":\"tag\",\"value\":\"187\"},{\"begin\":8744,\"end\":8746,\"name\":\"JUMPDEST\"},{\"begin\":8834,\"end\":8838,\"name\":\"PUSH\",\"value\":\"1F\"},{\"begin\":8830,\"end\":8839,\"name\":\"NOT\"},{\"begin\":8823,\"end\":8827,\"name\":\"PUSH\",\"value\":\"1F\"},{\"begin\":8815,\"end\":8821,\"name\":\"DUP4\"},{\"begin\":8811,\"end\":8828,\"name\":\"ADD\"},{\"begin\":8807,\"end\":8840,\"name\":\"AND\"},{\"begin\":8799,\"end\":8840,\"name\":\"SWAP1\"},{\"begin\":8799,\"end\":8840,\"name\":\"POP\"},{\"begin\":8863,\"end\":8867,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":8857,\"end\":8861,\"name\":\"DUP2\"},{\"begin\":8853,\"end\":8868,\"name\":\"ADD\"},{\"begin\":8845,\"end\":8868,\"name\":\"SWAP1\"},{\"begin\":8845,\"end\":8868,\"name\":\"POP\"},{\"begin\":8681,\"end\":8873,\"name\":\"SWAP2\"},{\"begin\":8681,\"end\":8873,\"name\":\"SWAP1\"},{\"begin\":8681,\"end\":8873,\"name\":\"POP\"},{\"begin\":8681,\"end\":8873,\"name\":\"JUMP\"},{\"begin\":8882,\"end\":9022,\"name\":\"tag\",\"value\":\"122\"},{\"begin\":8882,\"end\":9022,\"name\":\"JUMPDEST\"},{\"begin\":8882,\"end\":9022,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":9010,\"end\":9014,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":9002,\"end\":9008,\"name\":\"DUP3\"},{\"begin\":8998,\"end\":9015,\"name\":\"ADD\"},{\"begin\":8987,\"end\":9015,\"name\":\"SWAP1\"},{\"begin\":8987,\"end\":9015,\"name\":\"POP\"},{\"begin\":8979,\"end\":9022,\"name\":\"SWAP2\"},{\"begin\":8979,\"end\":9022,\"name\":\"SWAP1\"},{\"begin\":8979,\"end\":9022,\"name\":\"POP\"},{\"begin\":8979,\"end\":9022,\"name\":\"JUMP\"},{\"begin\":9031,\"end\":9157,\"name\":\"tag\",\"value\":\"118\"},{\"begin\":9031,\"end\":9157,\"name\":\"JUMPDEST\"},{\"begin\":9031,\"end\":9157,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":9146,\"end\":9151,\"name\":\"DUP2\"},{\"begin\":9140,\"end\":9152,\"name\":\"MLOAD\"},{\"begin\":9130,\"end\":9152,\"name\":\"SWAP1\"},{\"begin\":9130,\"end\":9152,\"name\":\"POP\"},{\"begin\":9124,\"end\":9157,\"name\":\"SWAP2\"},{\"begin\":9124,\"end\":9157,\"name\":\"SWAP1\"},{\"begin\":9124,\"end\":9157,\"name\":\"POP\"},{\"begin\":9124,\"end\":9157,\"name\":\"JUMP\"},{\"begin\":9164,\"end\":9251,\"name\":\"tag\",\"value\":\"136\"},{\"begin\":9164,\"end\":9251,\"name\":\"JUMPDEST\"},{\"begin\":9164,\"end\":9251,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":9240,\"end\":9245,\"name\":\"DUP2\"},{\"begin\":9234,\"end\":9246,\"name\":\"MLOAD\"},{\"begin\":9224,\"end\":9246,\"name\":\"SWAP1\"},{\"begin\":9224,\"end\":9246,\"name\":\"POP\"},{\"begin\":9218,\"end\":9251,\"name\":\"SWAP2\"},{\"begin\":9218,\"end\":9251,\"name\":\"SWAP1\"},{\"begin\":9218,\"end\":9251,\"name\":\"POP\"},{\"begin\":9218,\"end\":9251,\"name\":\"JUMP\"},{\"begin\":9258,\"end\":9346,\"name\":\"tag\",\"value\":\"154\"},{\"begin\":9258,\"end\":9346,\"name\":\"JUMPDEST\"},{\"begin\":9258,\"end\":9346,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":9335,\"end\":9340,\"name\":\"DUP2\"},{\"begin\":9329,\"end\":9341,\"name\":\"MLOAD\"},{\"begin\":9319,\"end\":9341,\"name\":\"SWAP1\"},{\"begin\":9319,\"end\":9341,\"name\":\"POP\"},{\"begin\":9313,\"end\":9346,\"name\":\"SWAP2\"},{\"begin\":9313,\"end\":9346,\"name\":\"SWAP1\"},{\"begin\":9313,\"end\":9346,\"name\":\"POP\"},{\"begin\":9313,\"end\":9346,\"name\":\"JUMP\"},{\"begin\":9353,\"end\":9445,\"name\":\"tag\",\"value\":\"146\"},{\"begin\":9353,\"end\":9445,\"name\":\"JUMPDEST\"},{\"begin\":9353,\"end\":9445,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":9434,\"end\":9439,\"name\":\"DUP2\"},{\"begin\":9428,\"end\":9440,\"name\":\"MLOAD\"},{\"begin\":9418,\"end\":9440,\"name\":\"SWAP1\"},{\"begin\":9418,\"end\":9440,\"name\":\"POP\"},{\"begin\":9412,\"end\":9445,\"name\":\"SWAP2\"},{\"begin\":9412,\"end\":9445,\"name\":\"SWAP1\"},{\"begin\":9412,\"end\":9445,\"name\":\"POP\"},{\"begin\":9412,\"end\":9445,\"name\":\"JUMP\"},{\"begin\":9453,\"end\":9594,\"name\":\"tag\",\"value\":\"128\"},{\"begin\":9453,\"end\":9594,\"name\":\"JUMPDEST\"},{\"begin\":9453,\"end\":9594,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":9583,\"end\":9587,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":9575,\"end\":9581,\"name\":\"DUP3\"},{\"begin\":9571,\"end\":9588,\"name\":\"ADD\"},{\"begin\":9560,\"end\":9588,\"name\":\"SWAP1\"},{\"begin\":9560,\"end\":9588,\"name\":\"POP\"},{\"begin\":9553,\"end\":9594,\"name\":\"SWAP2\"},{\"begin\":9553,\"end\":9594,\"name\":\"SWAP1\"},{\"begin\":9553,\"end\":9594,\"name\":\"POP\"},{\"begin\":9553,\"end\":9594,\"name\":\"JUMP\"},{\"begin\":9603,\"end\":9800,\"name\":\"tag\",\"value\":\"120\"},{\"begin\":9603,\"end\":9800,\"name\":\"JUMPDEST\"},{\"begin\":9603,\"end\":9800,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":9752,\"end\":9758,\"name\":\"DUP3\"},{\"begin\":9747,\"end\":9750,\"name\":\"DUP3\"},{\"begin\":9740,\"end\":9759,\"name\":\"MSTORE\"},{\"begin\":9789,\"end\":9793,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":9784,\"end\":9787,\"name\":\"DUP3\"},{\"begin\":9780,\"end\":9794,\"name\":\"ADD\"},{\"begin\":9765,\"end\":9794,\"name\":\"SWAP1\"},{\"begin\":9765,\"end\":9794,\"name\":\"POP\"},{\"begin\":9733,\"end\":9800,\"name\":\"SWAP3\"},{\"begin\":9733,\"end\":9800,\"name\":\"SWAP2\"},{\"begin\":9733,\"end\":9800,\"name\":\"POP\"},{\"begin\":9733,\"end\":9800,\"name\":\"POP\"},{\"begin\":9733,\"end\":9800,\"name\":\"JUMP\"},{\"begin\":9809,\"end\":9961,\"name\":\"tag\",\"value\":\"138\"},{\"begin\":9809,\"end\":9961,\"name\":\"JUMPDEST\"},{\"begin\":9809,\"end\":9961,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":9913,\"end\":9919,\"name\":\"DUP3\"},{\"begin\":9908,\"end\":9911,\"name\":\"DUP3\"},{\"begin\":9901,\"end\":9920,\"name\":\"MSTORE\"},{\"begin\":9950,\"end\":9954,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":9945,\"end\":9948,\"name\":\"DUP3\"},{\"begin\":9941,\"end\":9955,\"name\":\"ADD\"},{\"begin\":9926,\"end\":9955,\"name\":\"SWAP1\"},{\"begin\":9926,\"end\":9955,\"name\":\"POP\"},{\"begin\":9894,\"end\":9961,\"name\":\"SWAP3\"},{\"begin\":9894,\"end\":9961,\"name\":\"SWAP2\"},{\"begin\":9894,\"end\":9961,\"name\":\"POP\"},{\"begin\":9894,\"end\":9961,\"name\":\"POP\"},{\"begin\":9894,\"end\":9961,\"name\":\"JUMP\"},{\"begin\":9970,\"end\":10123,\"name\":\"tag\",\"value\":\"156\"},{\"begin\":9970,\"end\":10123,\"name\":\"JUMPDEST\"},{\"begin\":9970,\"end\":10123,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":10075,\"end\":10081,\"name\":\"DUP3\"},{\"begin\":10070,\"end\":10073,\"name\":\"DUP3\"},{\"begin\":10063,\"end\":10082,\"name\":\"MSTORE\"},{\"begin\":10112,\"end\":10116,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":10107,\"end\":10110,\"name\":\"DUP3\"},{\"begin\":10103,\"end\":10117,\"name\":\"ADD\"},{\"begin\":10088,\"end\":10117,\"name\":\"SWAP1\"},{\"begin\":10088,\"end\":10117,\"name\":\"POP\"},{\"begin\":10056,\"end\":10123,\"name\":\"SWAP3\"},{\"begin\":10056,\"end\":10123,\"name\":\"SWAP2\"},{\"begin\":10056,\"end\":10123,\"name\":\"POP\"},{\"begin\":10056,\"end\":10123,\"name\":\"POP\"},{\"begin\":10056,\"end\":10123,\"name\":\"JUMP\"},{\"begin\":10132,\"end\":10295,\"name\":\"tag\",\"value\":\"148\"},{\"begin\":10132,\"end\":10295,\"name\":\"JUMPDEST\"},{\"begin\":10132,\"end\":10295,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":10247,\"end\":10253,\"name\":\"DUP3\"},{\"begin\":10242,\"end\":10245,\"name\":\"DUP3\"},{\"begin\":10235,\"end\":10254,\"name\":\"MSTORE\"},{\"begin\":10284,\"end\":10288,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":10279,\"end\":10282,\"name\":\"DUP3\"},{\"begin\":10275,\"end\":10289,\"name\":\"ADD\"},{\"begin\":10260,\"end\":10289,\"name\":\"SWAP1\"},{\"begin\":10260,\"end\":10289,\"name\":\"POP\"},{\"begin\":10228,\"end\":10295,\"name\":\"SWAP3\"},{\"begin\":10228,\"end\":10295,\"name\":\"SWAP2\"},{\"begin\":10228,\"end\":10295,\"name\":\"POP\"},{\"begin\":10228,\"end\":10295,\"name\":\"POP\"},{\"begin\":10228,\"end\":10295,\"name\":\"JUMP\"},{\"begin\":10303,\"end\":10408,\"name\":\"tag\",\"value\":\"114\"},{\"begin\":10303,\"end\":10408,\"name\":\"JUMPDEST\"},{\"begin\":10303,\"end\":10408,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":10372,\"end\":10403,\"name\":\"PUSH [tag]\",\"value\":\"199\"},{\"begin\":10397,\"end\":10402,\"name\":\"DUP3\"},{\"begin\":10372,\"end\":10403,\"name\":\"PUSH [tag]\",\"value\":\"200\"},{\"begin\":10372,\"end\":10403,\"name\":\"JUMP\"},{\"begin\":10372,\"end\":10403,\"name\":\"tag\",\"value\":\"199\"},{\"begin\":10372,\"end\":10403,\"name\":\"JUMPDEST\"},{\"begin\":10361,\"end\":10403,\"name\":\"SWAP1\"},{\"begin\":10361,\"end\":10403,\"name\":\"POP\"},{\"begin\":10355,\"end\":10408,\"name\":\"SWAP2\"},{\"begin\":10355,\"end\":10408,\"name\":\"SWAP1\"},{\"begin\":10355,\"end\":10408,\"name\":\"POP\"},{\"begin\":10355,\"end\":10408,\"name\":\"JUMP\"},{\"begin\":10415,\"end\":10494,\"name\":\"tag\",\"value\":\"132\"},{\"begin\":10415,\"end\":10494,\"name\":\"JUMPDEST\"},{\"begin\":10415,\"end\":10494,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":10484,\"end\":10489,\"name\":\"DUP2\"},{\"begin\":10473,\"end\":10489,\"name\":\"SWAP1\"},{\"begin\":10473,\"end\":10489,\"name\":\"POP\"},{\"begin\":10467,\"end\":10494,\"name\":\"SWAP2\"},{\"begin\":10467,\"end\":10494,\"name\":\"SWAP1\"},{\"begin\":10467,\"end\":10494,\"name\":\"POP\"},{\"begin\":10467,\"end\":10494,\"name\":\"JUMP\"},{\"begin\":10501,\"end\":10629,\"name\":\"tag\",\"value\":\"200\"},{\"begin\":10501,\"end\":10629,\"name\":\"JUMPDEST\"},{\"begin\":10501,\"end\":10629,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":10581,\"end\":10623,\"name\":\"PUSH\",\"value\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\"},{\"begin\":10574,\"end\":10579,\"name\":\"DUP3\"},{\"begin\":10570,\"end\":10624,\"name\":\"AND\"},{\"begin\":10559,\"end\":10624,\"name\":\"SWAP1\"},{\"begin\":10559,\"end\":10624,\"name\":\"POP\"},{\"begin\":10553,\"end\":10629,\"name\":\"SWAP2\"},{\"begin\":10553,\"end\":10629,\"name\":\"SWAP1\"},{\"begin\":10553,\"end\":10629,\"name\":\"POP\"},{\"begin\":10553,\"end\":10629,\"name\":\"JUMP\"},{\"begin\":10636,\"end\":10715,\"name\":\"tag\",\"value\":\"173\"},{\"begin\":10636,\"end\":10715,\"name\":\"JUMPDEST\"},{\"begin\":10636,\"end\":10715,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":10705,\"end\":10710,\"name\":\"DUP2\"},{\"begin\":10694,\"end\":10710,\"name\":\"SWAP1\"},{\"begin\":10694,\"end\":10710,\"name\":\"POP\"},{\"begin\":10688,\"end\":10715,\"name\":\"SWAP2\"},{\"begin\":10688,\"end\":10715,\"name\":\"SWAP1\"},{\"begin\":10688,\"end\":10715,\"name\":\"POP\"},{\"begin\":10688,\"end\":10715,\"name\":\"JUMP\"},{\"begin\":10722,\"end\":10801,\"name\":\"tag\",\"value\":\"92\"},{\"begin\":10722,\"end\":10801,\"name\":\"JUMPDEST\"},{\"begin\":10722,\"end\":10801,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":10791,\"end\":10796,\"name\":\"DUP2\"},{\"begin\":10780,\"end\":10796,\"name\":\"SWAP1\"},{\"begin\":10780,\"end\":10796,\"name\":\"POP\"},{\"begin\":10774,\"end\":10801,\"name\":\"SWAP2\"},{\"begin\":10774,\"end\":10801,\"name\":\"SWAP1\"},{\"begin\":10774,\"end\":10801,\"name\":\"POP\"},{\"begin\":10774,\"end\":10801,\"name\":\"JUMP\"},{\"begin\":10808,\"end\":10937,\"name\":\"tag\",\"value\":\"110\"},{\"begin\":10808,\"end\":10937,\"name\":\"JUMPDEST\"},{\"begin\":10808,\"end\":10937,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":10895,\"end\":10932,\"name\":\"PUSH [tag]\",\"value\":\"206\"},{\"begin\":10926,\"end\":10931,\"name\":\"DUP3\"},{\"begin\":10895,\"end\":10932,\"name\":\"PUSH [tag]\",\"value\":\"207\"},{\"begin\":10895,\"end\":10932,\"name\":\"JUMP\"},{\"begin\":10895,\"end\":10932,\"name\":\"tag\",\"value\":\"206\"},{\"begin\":10895,\"end\":10932,\"name\":\"JUMPDEST\"},{\"begin\":10882,\"end\":10932,\"name\":\"SWAP1\"},{\"begin\":10882,\"end\":10932,\"name\":\"POP\"},{\"begin\":10876,\"end\":10937,\"name\":\"SWAP2\"},{\"begin\":10876,\"end\":10937,\"name\":\"SWAP1\"},{\"begin\":10876,\"end\":10937,\"name\":\"POP\"},{\"begin\":10876,\"end\":10937,\"name\":\"JUMP\"},{\"begin\":10944,\"end\":11065,\"name\":\"tag\",\"value\":\"207\"},{\"begin\":10944,\"end\":11065,\"name\":\"JUMPDEST\"},{\"begin\":10944,\"end\":11065,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":11023,\"end\":11060,\"name\":\"PUSH [tag]\",\"value\":\"209\"},{\"begin\":11054,\"end\":11059,\"name\":\"DUP3\"},{\"begin\":11023,\"end\":11060,\"name\":\"PUSH [tag]\",\"value\":\"210\"},{\"begin\":11023,\"end\":11060,\"name\":\"JUMP\"},{\"begin\":11023,\"end\":11060,\"name\":\"tag\",\"value\":\"209\"},{\"begin\":11023,\"end\":11060,\"name\":\"JUMPDEST\"},{\"begin\":11010,\"end\":11060,\"name\":\"SWAP1\"},{\"begin\":11010,\"end\":11060,\"name\":\"POP\"},{\"begin\":11004,\"end\":11065,\"name\":\"SWAP2\"},{\"begin\":11004,\"end\":11065,\"name\":\"SWAP1\"},{\"begin\":11004,\"end\":11065,\"name\":\"POP\"},{\"begin\":11004,\"end\":11065,\"name\":\"JUMP\"},{\"begin\":11072,\"end\":11187,\"name\":\"tag\",\"value\":\"210\"},{\"begin\":11072,\"end\":11187,\"name\":\"JUMPDEST\"},{\"begin\":11072,\"end\":11187,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":11151,\"end\":11182,\"name\":\"PUSH [tag]\",\"value\":\"212\"},{\"begin\":11176,\"end\":11181,\"name\":\"DUP3\"},{\"begin\":11151,\"end\":11182,\"name\":\"PUSH [tag]\",\"value\":\"200\"},{\"begin\":11151,\"end\":11182,\"name\":\"JUMP\"},{\"begin\":11151,\"end\":11182,\"name\":\"tag\",\"value\":\"212\"},{\"begin\":11151,\"end\":11182,\"name\":\"JUMPDEST\"},{\"begin\":11138,\"end\":11182,\"name\":\"SWAP1\"},{\"begin\":11138,\"end\":11182,\"name\":\"POP\"},{\"begin\":11132,\"end\":11187,\"name\":\"SWAP2\"},{\"begin\":11132,\"end\":11187,\"name\":\"SWAP1\"},{\"begin\":11132,\"end\":11187,\"name\":\"POP\"},{\"begin\":11132,\"end\":11187,\"name\":\"JUMP\"},{\"begin\":11195,\"end\":11340,\"name\":\"tag\",\"value\":\"80\"},{\"begin\":11195,\"end\":11340,\"name\":\"JUMPDEST\"},{\"begin\":11276,\"end\":11282,\"name\":\"DUP3\"},{\"begin\":11271,\"end\":11274,\"name\":\"DUP2\"},{\"begin\":11266,\"end\":11269,\"name\":\"DUP4\"},{\"begin\":11253,\"end\":11283,\"name\":\"CALLDATACOPY\"},{\"begin\":11332,\"end\":11333,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":11323,\"end\":11329,\"name\":\"DUP4\"},{\"begin\":11318,\"end\":11321,\"name\":\"DUP4\"},{\"begin\":11314,\"end\":11330,\"name\":\"ADD\"},{\"begin\":11307,\"end\":11334,\"name\":\"MSTORE\"},{\"begin\":11246,\"end\":11340,\"name\":\"POP\"},{\"begin\":11246,\"end\":11340,\"name\":\"POP\"},{\"begin\":11246,\"end\":11340,\"name\":\"POP\"},{\"begin\":11246,\"end\":11340,\"name\":\"JUMP\"},{\"begin\":11349,\"end\":11617,\"name\":\"tag\",\"value\":\"140\"},{\"begin\":11349,\"end\":11617,\"name\":\"JUMPDEST\"},{\"begin\":11414,\"end\":11415,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":11421,\"end\":11522,\"name\":\"tag\",\"value\":\"215\"},{\"begin\":11421,\"end\":11522,\"name\":\"JUMPDEST\"},{\"begin\":11435,\"end\":11441,\"name\":\"DUP4\"},{\"begin\":11432,\"end\":11433,\"name\":\"DUP2\"},{\"begin\":11429,\"end\":11442,\"name\":\"LT\"},{\"begin\":11421,\"end\":11522,\"name\":\"ISZERO\"},{\"begin\":11421,\"end\":11522,\"name\":\"PUSH [tag]\",\"value\":\"216\"},{\"begin\":11421,\"end\":11522,\"name\":\"JUMPI\"},{\"begin\":11511,\"end\":11512,\"name\":\"DUP1\"},{\"begin\":11506,\"end\":11509,\"name\":\"DUP3\"},{\"begin\":11502,\"end\":11513,\"name\":\"ADD\"},{\"begin\":11496,\"end\":11514,\"name\":\"MLOAD\"},{\"begin\":11492,\"end\":11493,\"name\":\"DUP2\"},{\"begin\":11487,\"end\":11490,\"name\":\"DUP5\"},{\"begin\":11483,\"end\":11494,\"name\":\"ADD\"},{\"begin\":11476,\"end\":11515,\"name\":\"MSTORE\"},{\"begin\":11457,\"end\":11459,\"name\":\"PUSH\",\"value\":\"20\"},{\"begin\":11454,\"end\":11455,\"name\":\"DUP2\"},{\"begin\":11450,\"end\":11460,\"name\":\"ADD\"},{\"begin\":11445,\"end\":11460,\"name\":\"SWAP1\"},{\"begin\":11445,\"end\":11460,\"name\":\"POP\"},{\"begin\":11421,\"end\":11522,\"name\":\"PUSH [tag]\",\"value\":\"215\"},{\"begin\":11421,\"end\":11522,\"name\":\"JUMP\"},{\"begin\":11421,\"end\":11522,\"name\":\"tag\",\"value\":\"216\"},{\"begin\":11421,\"end\":11522,\"name\":\"JUMPDEST\"},{\"begin\":11537,\"end\":11543,\"name\":\"DUP4\"},{\"begin\":11534,\"end\":11535,\"name\":\"DUP2\"},{\"begin\":11531,\"end\":11544,\"name\":\"GT\"},{\"begin\":11528,\"end\":11530,\"name\":\"ISZERO\"},{\"begin\":11528,\"end\":11530,\"name\":\"PUSH [tag]\",\"value\":\"218\"},{\"begin\":11528,\"end\":11530,\"name\":\"JUMPI\"},{\"begin\":11602,\"end\":11603,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":11593,\"end\":11599,\"name\":\"DUP5\"},{\"begin\":11588,\"end\":11591,\"name\":\"DUP5\"},{\"begin\":11584,\"end\":11600,\"name\":\"ADD\"},{\"begin\":11577,\"end\":11604,\"name\":\"MSTORE\"},{\"begin\":11528,\"end\":11530,\"name\":\"tag\",\"value\":\"218\"},{\"begin\":11528,\"end\":11530,\"name\":\"JUMPDEST\"},{\"begin\":11398,\"end\":11617,\"name\":\"POP\"},{\"begin\":11398,\"end\":11617,\"name\":\"POP\"},{\"begin\":11398,\"end\":11617,\"name\":\"POP\"},{\"begin\":11398,\"end\":11617,\"name\":\"POP\"},{\"begin\":11398,\"end\":11617,\"name\":\"JUMP\"},{\"begin\":11625,\"end\":11722,\"name\":\"tag\",\"value\":\"142\"},{\"begin\":11625,\"end\":11722,\"name\":\"JUMPDEST\"},{\"begin\":11625,\"end\":11722,\"name\":\"PUSH\",\"value\":\"0\"},{\"begin\":11713,\"end\":11715,\"name\":\"PUSH\",\"value\":\"1F\"},{\"begin\":11709,\"end\":11716,\"name\":\"NOT\"},{\"begin\":11704,\"end\":11706,\"name\":\"PUSH\",\"value\":\"1F\"},{\"begin\":11697,\"end\":11702,\"name\":\"DUP4\"},{\"begin\":11693,\"end\":11707,\"name\":\"ADD\"},{\"begin\":11689,\"end\":11717,\"name\":\"AND\"},{\"begin\":11679,\"end\":11717,\"name\":\"SWAP1\"},{\"begin\":11679,\"end\":11717,\"name\":\"POP\"},{\"begin\":11673,\"end\":11722,\"name\":\"SWAP2\"},{\"begin\":11673,\"end\":11722,\"name\":\"SWAP1\"},{\"begin\":11673,\"end\":11722,\"name\":\"POP\"},{\"begin\":11673,\"end\":11722,\"name\":\"JUMP\"}]}}},\"methodIdentifiers\":{\"listMessages(uint256,uint256)\":\"ac45fcd9\",\"publish(string,bytes)\":\"44e8fd08\"}},\"metadata\":\"{\\\"compiler\\\":{\\\"version\\\":\\\"0.5.4+commit.9549d8ff\\\"},\\\"language\\\":\\\"Solidity\\\",\\\"output\\\":{\\\"abi\\\":[{\\\"constant\\\":false,\\\"inputs\\\":[{\\\"name\\\":\\\"_subject\\\",\\\"type\\\":\\\"string\\\"},{\\\"name\\\":\\\"_hash\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"publish\\\",\\\"outputs\\\":[],\\\"payable\\\":false,\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"constant\\\":true,\\\"inputs\\\":[{\\\"name\\\":\\\"_page\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"name\\\":\\\"_rpp\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"listMessages\\\",\\\"outputs\\\":[{\\\"components\\\":[{\\\"name\\\":\\\"sender\\\",\\\"type\\\":\\\"address\\\"},{\\\"name\\\":\\\"timestamp\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"name\\\":\\\"subject\\\",\\\"type\\\":\\\"string\\\"},{\\\"name\\\":\\\"hash\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"_msgs\\\",\\\"type\\\":\\\"tuple[]\\\"}],\\\"payable\\\":false,\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"anonymous\\\":false,\\\"inputs\\\":[{\\\"indexed\\\":false,\\\"name\\\":\\\"subject\\\",\\\"type\\\":\\\"string\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"key\\\",\\\"type\\\":\\\"bytes32\\\"},{\\\"indexed\\\":false,\\\"name\\\":\\\"sender\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"Published\\\",\\\"type\\\":\\\"event\\\"}],\\\"devdoc\\\":{\\\"methods\\\":{}},\\\"userdoc\\\":{\\\"methods\\\":{}}},\\\"settings\\\":{\\\"compilationTarget\\\":{\\\"user-input\\\":\\\"Registry\\\"},\\\"evmVersion\\\":\\\"byzantium\\\",\\\"libraries\\\":{},\\\"optimizer\\\":{\\\"enabled\\\":false,\\\"runs\\\":200},\\\"remappings\\\":[]},\\\"sources\\\":{\\\"user-input\\\":{\\\"keccak256\\\":\\\"0xf7e96ff3a0ac4611607e19e43ebc595753bd09b9b8196cd67e621c0043d95175\\\",\\\"urls\\\":[\\\"bzzr://fbb903ff1108690f6011179bf4a9f7786e53c2a799cbfa45f0a85748711e377f\\\"]}},\\\"version\\\":1}\"}", - "source": "contract Registry {\n\n struct message {\n address sender;\n uint timestamp;\n string subject;\n bytes hash;\n }\n\n message[] internal messages;\n mapping(bytes32 => message) internal hashedMessages;\n mapping(address => bytes32[]) internal senderMessages;\n\n event Published(string subject, bytes32 key, address sender);\n\n function publish(string memory _subject, bytes memory _hash) public {\n message memory _msg = message(msg.sender, now, _subject, _hash);\n bytes32 key = keccak256(abi.encode(_msg));\n hashedMessages[key] = _msg;\n senderMessages[msg.sender].push(key);\n messages.push(_msg);\n emit Published(_subject, key, msg.sender);\n }\n\n function listMessages(uint256 _page, uint256 _rpp) external view returns (message[] memory _msgs) {\n if (messages.length == 0) {\n return new message[](0);\n }\n\n uint256 _offset = _rpp * (_page - 1);\n uint256 _index = messages.length - 1 - _offset;\n if (_index > messages.length - 1) {\n return new message[](0);\n }\n\n uint256 _lastIndex = _index - _rpp;\n if (_lastIndex > _index) {\n _lastIndex = 0;\n }\n\n uint256 _len = _index - _lastIndex + 1;\n if (_len > _rpp) {\n _len = _rpp;\n }\n\n _msgs = new message[](_len);\n for (uint256 _i = 0; _i < _len; _i++) {\n _msgs[_i] = messages[_index - _i];\n }\n }\n}" + if err != nil { + t.Errorf("reassembly.Reassemble() error; %s", err.Error()) } - ] + } else { + t.Errorf("Unknown fragment subject. Subject: '%s'", subject) + } + } + + // Run the actual fragment broadcast + var broadcastWG sync.WaitGroup + err := BroadcastFragments(testNetwork, payload, true, &broadcastWG) + if err != nil { + t.Errorf("BroadcastFragments() error; %s", err.Error()) + } + + broadcastWG.Wait() +} + +func loadPacket(t *testing.T, path string) *packetFragment { + data := string(getTestFile(t, path)) + + var fragment *packetFragment + err := json.Unmarshal([]byte(data), &fragment) + if err != nil { + t.Errorf("test error; unable to unserialise '%s' PacketFragment", path) + } + + return fragment +} + +func expectFragmentIsValid(t *testing.T, fragment *packetFragment) { + valid, err := fragment.Verify() + if !valid { + t.Errorf("Verify() error; Verify returned false, expected true, err: '%s'.", err) + } + if err != nil { + t.Errorf("Verify() error; Verify returned error, expected no error. err: '%s'.", err) + } +} + +func expectFragmentIsNotValid(t *testing.T, fragment *packetFragment, expectedError error) { + valid, err := fragment.Verify() + if valid { + t.Errorf("Verify() error; Verify returned true, expected false.") + } + if err != expectedError { + t.Errorf("Verify() error; Verify error not as expected. Actual: '%s'. Expected: '%s'.", err, expectedError) + } +} + +func TestIngest(t *testing.T) { + _, db := setupTestNetwork() + + // Valid packet = success + { + fragment := loadPacket(t, "test/valid-packet.json") + ingested, count, err := fragment.Ingest(db) + if !ingested { + t.Errorf("Ingest() error; Ingest returned false, expected true, err: '%s'.", err) + } + if count == nil { + t.Error("Ingest() error; Ingest count not as expected non-nil, got nil") + } + if err != nil { + t.Errorf("Ingest() error; Ingest err not as expected, expected nil, actual: '%s'.", err) + } + } + + // Ingest invalid packet = fail + { + fragment := loadPacket(t, "test/invalid-packet-wrong-checksum.json") + ingested, count, err := fragment.Ingest(db) + if ingested { + t.Error("Ingest() error; Ingest returned true, expected false") + } + if count != nil { + t.Errorf("Ingest() error; Ingest expcted nil count, got %d", count) + } + if err == nil { + t.Errorf("Ingest() error; Ingest err not as expected, expected non-nil, actual: nil") } - } - `) + } + +} + +func TestVerify(t *testing.T) { + + // Valid packet + { + fragment := loadPacket(t, "test/valid-packet.json") + expectFragmentIsValid(t, fragment) + } + + // Wrong Checksum + { + fragment := loadPacket(t, "test/invalid-packet-wrong-checksum.json") + expectFragmentIsNotValid(t, fragment, nil) + } + + // Can be extended with further invalid packet types, such as Cardinality = 0, or Index > Cardinality, etc. + } diff --git a/consumer/redis_interface.go b/consumer/redis_interface.go new file mode 100644 index 00000000..e76b1f04 --- /dev/null +++ b/consumer/redis_interface.go @@ -0,0 +1,39 @@ +package consumer + +import ( + "time" + + "github.com/kthomas/go-redisutil" +) + +// IDatabase abstracts out the storage for Fragments +type IDatabase interface { + Get(key string) (*string, error) + Increment(key string) (*int64, error) + Set(key string, val interface{}, ttl *time.Duration) error + Setup() +} + +// Redis wrapper for IDatabase +type Redis struct { +} + +// Get returns the value for the given key +func (r *Redis) Get(key string) (*string, error) { + return redisutil.Get(key) +} + +// Increment atomically increments the given key's value +func (r *Redis) Increment(key string) (*int64, error) { + return redisutil.Increment(key) +} + +// Set stores the value to the given key with an optional time to live (ttl) +func (r *Redis) Set(key string, val interface{}, ttl *time.Duration) error { + return redisutil.Set(key, val, ttl) +} + +// Setup will initialise the Redis connection +func (r *Redis) Setup() { + redisutil.RequireRedis() +} diff --git a/consumer/test/invalid-packet-wrong-checksum.json b/consumer/test/invalid-packet-wrong-checksum.json new file mode 100755 index 00000000..98025322 --- /dev/null +++ b/consumer/test/invalid-packet-wrong-checksum.json @@ -0,0 +1,9 @@ +{ + "index": 20312, + "cardinality": 28677, + "checksum": "abcdefghijqlmnopqrstuv==", + "nonce": 1, + "padded": false, + "payload": "FLg7+v9J6JfQHtWTzXwB+g/gKsgfBW4EtoFDwOHgYpRXEfpf0EtDd6P/n4T+Ktrjv+0vAe2RDm4PbgMeB54BXgCeA+4LHgZOBI8C9wCngL9F/7ugbwZ/D14HXgU+BS4EXwZfBO8D54NzwMfBe8AHwGdR/+vQmw80c39wE3A0uBd4MDgNnAqOA3cGtwQ7wLHgDuBzqP8E6DfAdVPMfBV6EbgW8jcEPwOOAVvBlcElwBo4FFyB/tqY698Kei3oL4L/t/+FDML1CvwX2qsYbEP+J8EvgO3giuDq4NLgKHA4uAo4Cf3ZBrrY6Odbz2fAxRvMXASOQf5YcAI4HhwBjgKHgqPB4WAN/PCb5uu7A/qs/7Lxzr/Wb5vHwwhwK/Az4CFgJ3gaeBK4CzgJHA9OBr8Gfgu8F/07C3poNsYvWICLeb5Ajwc7wAlgDRwNDgfHgCPAUeAhiebxnwTdCXaDU8Ep4BxwHrgAnA/OBGeB08HZ4AywCzwc9fewP9m+mzDfQS9kfyG/HRwPjgWHgzWwAEeBQ8ER4DTUPwH6CpwPR8FLwJngr8AnwT+APeBtPF/Ba8B54GzwLubH+X8B+sQZfg48D9oNTgO/A94G3gc+Av4CvACcBZ4G3gieDV4GbveqnwPPv05AT8F4yAYngR3gLHAOOA/sBqeDM8GpYBfYCc6gf4z/fOgX0R613jPzv6B7wFWRvx74KXAjcElwOfAVlBcB/Qb00tA7ov9bQi/k/LLZzB7oBZyvkD8abAfHgAU4HFzE+Q16MedD6NPR/7HQ15z0c+CXeS6Bl4EzwT+C/wSX/dbMIeBPkf8b8EdgD3gX+CvWB/NdRZTfADwcHAWuCk4BjwPPAU8FtwEngp8E9wY/B+4ILkb9F0PPAYtTZt4IfRX4D/B9sH8YXB78NezPgz8BXwQfAJ8C/4X610D5r2M+eA8cD34JnA6eB14BXgzuDx4BTgSPBfcEvw3uhPlvLXQH5gMXOAEcD84EZ4FzwNngVHA6OAmcAU4BO8GzMP+5oReAIz4ycz70PM7XyK+Bo8FR4CJeD6B7oIdCL+T1ADwf9Y+BfQucD++Cm4DrgdPAGeDl4PfBncH9wbHgoeB24O7gkCHm838t9Hi0RwY4FmwHp4MzwVlgFzgJnApOADvBDnAKeBH6Pxv6Z2gP62kz74a+BVwK+R8C1wZr4LPw9zv4EPgGuAD8E7g0+r8hyndjPiwGfwzeDP4N7AWXzTDzPeBjyP9P8Ofgn8BfgU+B38T8XwHlt0H7jAK/ALaDh4HHgWeA08GJ4L7g9uAUcAK4B/gkPv/OgZ6H8yF0i5nd0HPAAvnDwRo4Auzh9YDXH3AxuIDXA/D3OP+jUP4qtMdxsAu8AJwPPgUuBH8PzgHvA68DHwBvBu8Bn0b/X+R4Rns4wTHgaHAqOB2cCc4AJ4CTwLHgFHA82AH+F/rfBT1yqLk94sAR4PLgWHAHsAPcGRwNbg6uAW4JrgNuAv4R/d8Lej7P361mzuN8AA5F/ghwFFgDF8JfMbgALGDvgV4Ejupq7v9o2KeiPbLAg8H9wcvBG8A7wFvAU8DzwGngReAJ4AzwBfS/G/oRcIlhZj4I/TPwDXAo7CuAreBzsC8CF4Cvgr8D/wT+FfWvjPJjMR7SwXZwDNgJzgC7wJlgBzgFHM/xCk4AJ4HrYfxnQZ+A+6Fd4NHgYeCt4H+AD4MPgN8HfwieCt4AngV2sXzc/xVA/wVcc6aZf4B+BhyJ/HXBT4KfAJcAh4Mvo7yHoP8J/T7ox1D/Z6EvwfnwFTgTPAucBz4K9oBPgrPBu8ArwHvBa8DbwJdw/v8AvRgc9Q7soV8AV0d+G/hJcCNwaXBF8F8orwr0EHA4+Arqb4feHjwO3Ab8AngUOB08BzwD3AOcAk4ADwMngvuC/0T9F0Av5P3KNjN7oBfwfgb5o8F2cAxYgMPBRby/gl4MPRT6Fsz/sdBz2B7gzeB14O/BF8HXwZfBB8DHwXvAp8D7wPk8f7i/JxXjDe2RDU4CO8BZbE9wHtgNTgdnglPBLrATnAE+i/7Ph94E7dELHA2uA3aA+4NTwYPBseAO4ObgzuCW4Dhw2VfM/Z8GPQPsBk8BTwDvAH8GPgI+CF4O3gCeB94CXgTOAldF/QugF3N+2o75B3oh5zvkt4PjwbHgcLAGFuAocCg4Anyfwzz+E6C7wB5wJjgDXAAuBBezPcE54DxwFjgfnA12gweg/iIH7QVOAIeDQ8HxYAc4BZwEjgbbwRo4FhwFjgEPRv1Tob8D3YbzpQH4f9tf9nDzfOABrwGvAJ8E/wC+BL4A3gv+CrwNfBS8C5wHboT+K4beaZafb31/ENwe/DJ4CjgTvAq8FJwMHgV2gMeDe4OHght38HPg89966HvB18E7wVvAv4Mts80cBg4FfwP78+D94AvgfPB34KdR/4oov+Z3fg6shw0AVwE/AO4BHgZOB48B28HtwTbwG+Cm4JfAiSPM430m9IiPMf+Dw8Gh4HiwA5wCTgJHg+1gDRwLjgLHgD2c/6E/jvHQHVwD/Ai4C7gvOBU8CGwHx4EbgjuCm4FfBD+L8T8GegbaIx+cDnaC88AF4EL2BzgLnAPOBLvBLnA2+Dz6v4jjeQfGF1iAizleoceDHeAEsAaOBoeDY8AR4CjwT6h/EvQ5GA8HwdPBk8Cfgr8GnwWfBK8GbwcvBO8BLwdng5/H+C+EfhPceI6Zr0L/FWxD/ubg1uDnwOXBGjgE/Bj4fnAl8Euofzvo63A9uAz+ALwA/DP4JjjsjJnvAX+O/CfAW8Hfg/eA83l9xvUvAuU7cT64wangFHAOOA9cAM4HZ4KzwOngbHAG2AX+Fee/B/oQjgfwAHAv8ErwR+BPwDvAk8HzwSPBS8DjwBnguRj/edDTMT5ywOPAo8CbwXvAB8D7wAvAq8AzwOvAc8Au8ER8/snn+bAT1ydwODgUHA92gFPASeBosB2sgWPBUeAYcPlu5vGfCj0DnA9OBzvBeeACcCHYA84C54AzwW6wC5wNrob6F0H/HuOh/Egzn4J+HFwG+SPANcCR4MvwJ6AXQr8H+kXo1/l5B+O/DuxDd2F8gQW4mOMVejzYAU4Aa+BocDg4BhwBjgLXQv8nQW+O9ugPbgKOBvcCDwangVPBceDO4JZgBzgW3AE8B/0/Abrz/2LvP4Ciyr6FfbjJmMGIGTNmzGDEhBjHLMbBjBkzKiomxIwZM2bMmLNiHMxgGsyYs2IcVNSvlL3p6WeGwXW/qlv1r/d21Xvn97zrPGettfc5+5w+3Y0Yj3CwL9gHvAccAY4GR4KDwaHgQHAYOAgcAi6K+Y9BfB7G4yQ4CDwZHA4+C44GXwSHgneAF4P3gVeAN4PnY/5vIx7H8+ugKcci/oTnK7Z3AzcGe4DtwI5gA9gJbAt2ADtj/j3ZH8bD0c+UnyH+AJwN2xcElwYXA5uD04I/Il9GxOO5niO+EPPvgrgPxiMM7A32AoeC94AjwOHgQHAw2BccAvYHB4HLYf4jEa+M90PjwWXARcAjwNPAy8DzwK3APcC1wQPAjcBe4E6Y71DEn/D8OmTKMYhH83zF9s5gN7AL2AC2A8fy/EY8jusB4o0w/x6I55ubwPr9UFtwDnAmcHNwJ7APuAfYBewOLgJuCC4Frgbeifd/QxGfiuPjADgA7A/eBT4KPg+OAC8FrwfPAoeBg8GrwFuw/l1G3AvHQwjYE9wYHAwOBe8Bh4F9wYFgb3AQ2AfsD26P4z8c8ak4Ho6DJ4BHgQ+Cz4CvgS+Cl4O3gGeDd4EXgkPBR3D8xyD+AVx8nim/QvwxuCC2LwuuAa4ETgl2AMcjX27ELcD24BPovy7iL3A+5Bhpyo8QjwFnxvZ5wSXATuBv2F9KxN8ibod4HOKWiG/D+V8W8Yrg/9deDdC/H9gd7AYeAh4Lng4OBHcA9wQ3BfuAPcFdwDsx/3MQf/I5gVMqdvliyrcRvwwuge1rgFuCG4CtwdnAb5EvP+LxiNsh3hXnuxfiV3A/mDPGlM8ifgycEdsXBLuAS4JjsT9zxG8jngrxx4h/AodgvqvDj8H10PGwKUcjHgl2wPZOYBewMzgO+7NF/AnvjxGP5f004kdw/XdD3BMcDG4M9gAHgUPAYeBQsA/YH+wFDgR7g33Bkeh/D+KjcD6cBw8C9wQfB0eDX4DvgReDw8CB4H3gWeA14IE4/z8i7o/zIQI8FNwXfBgcBb4Pvg5eBN4EngTeBZ4FXgVeg/P/BeJZ75pyR7Ad2AbsCe4J9gMPBJcFu4Pzgn8DFwVXAR9C/xMQDwE/Ac8HTwffAb8BW9wz5c+I7wefA68DXwVvAx8no//UqGcz+CN4NXgx+CX4O9j+vinbgk9h+xvg3eAH4HDwRfBV9J8N+cuBR4KLgfOBB4EDwMHgGeDG4E7gquBe4Drg1uCb6H854nG8Xofj+srrMa/n2N4N3BjsAbYDO4INYCewLdgB/IrPvxHvEm96PdgBbgNuDF4PPgS+CI4AjwXPA/cFh4B9wVPBY3D9u4m4D8YjDOwN9gKHgveAI8Dh4EBwMNgXHAL2BweB3/H5N+KfMR71vppyLOKPwG7YvjnYG9wB7AAuBrYElwenBecFB2L+ByAeBI4BB4D9wFfBz8DfwO/Bm8FHwQvBZ8GrwHvAM9C/7TfTeEHwEHAOcHpwb7A/eA54MrgW2BPsDO4ErghuBJ6H/pcifgCc+rspb0M8FGyO7TODi4Adwdexv1fgk+A4cCT4AXgJn08if1PwCrAHuCo4GLwRHA7eBfYBjwe3A08HdwMPB69C/6cRL4T7pX7gXOBM4G5gX/Bk8BhwDXBzsDO4PdgVXB8cifuf2YjPTZfw74inUvwSPBk8GnwPHAdOa2fKFuBd2P4sOAT8J3gD+Ag4Gte7rMh/APeDlg9MeTvi68FfwGng5wZnBv8J/yn4BPgt+Dw4BnyPz9+RvyZ4CrgiuBR4LHgOeA14CbgD2AfcADwM3ALcHfwE/W9BPBbHh/MRU36CeAzvx7G9C9gD7Aa2BTuA4/j+AHED2I4+7v8asz+shy6GdiZ8G/HL4BLYvga4JbgB2BqcDfwW+fIjHo+4HeIb+Pwb8dM4HtI/NOUjiO8Bp8D22cHFwfnBD7G/v8CXwAb4NxF/BX6P4788/IpYD2eBS4LzgyeCl4C3g0PBbcH9wbXBfuDG4G5gTxzvhxD3QTwM7A32AoeC94AjwOHgQHAw2BccAvYHB4HNO5me/5GIj8L5cB48CNwTfBwcDX4BvgdeDA4DB4L3gWeB14C38fk34k8wHk5Hsd4jHg12xPbOYDewC9gAtgPH8vqAeByvJ4jbYP49EM9oZjoeXcApwQZwG3Bf8FiwL7g02B2cC9wY7ASuDN6L+Z+KuBfGIwTsCW4MDgaHgveAw8C+4ECwNzgI7AP2B6fG/Icjvh7j8RkcAp4HjgVbmpuyAzgtOAL+TfAO8CPwIfBFcDjmPy/yR2M8HI6ZciTiETxfsb0j2BnsBI7leoB4DOK2iD/hegC2x/y7wHfDeASBy4OLgQPAC8GbwavAHcADwPXAfuDmYG/wH5j/PYg3wf3QArAHuBo4CLwCvAO8AdwbPArcBjwR3Bk8GGw9yvT+7yDi0WDHR6Z8AfGT4CzYvjC4Erg0+B32Z4X4XcTTIv4M8XhwavRfC/7v4LXgluCG4KXgMPBR8F7wcPBUsDd4Lrg/eBzYAf2fQfwRuMRjU76F+GVwAWxfAVwX7AY2A2cAv0a+HIjHIZ4S8VzovynijbEeBoE9uF6CA8HB4FBwCNgb7Av2BPuDvcA+4OxY/8MQv4r1sKCFKZ9F/Cg4B7Z3BtcCVwS/x/5sEY9BPD3izxD/Bj6P9b8R/D44HnaCu4DbgjeCD4EjwX+AA8ELwUPAK8GjwTPB+XH8X0P8PbjyE1N+jvg9cBlsXxvcCtwInA6cB/wV+Yogbg12ABdB/16IR+B8sD1uyuGI7wEbsL0d2BHsAI7h/SDvP8Fx4GjeD/J+FOe/E/L3xvlwANwJ7AneBj4Jvg4=", + "reassembledchecksum": "abcdefghijqlmnopqrstuv==" +} \ No newline at end of file diff --git a/consumer/test/valid-packet.json b/consumer/test/valid-packet.json new file mode 100755 index 00000000..8ce12744 --- /dev/null +++ b/consumer/test/valid-packet.json @@ -0,0 +1,9 @@ +{ + "index": 20312, + "cardinality": 28677, + "checksum": "3sDd0X5IQk0/g9woDz4gew==", + "nonce": 1622568367315968839, + "padded": false, + "payload": "PLg7+v9J6JfQHtWTzXwB+g/gKsgfBW4EtoFDwOHgYpRXEfpf0EtDd6P/n4T+Ktrjv+0vAe2RDm4PbgMeB54BXgCeA+4LHgZOBI8C9wCngL9F/7ugbwZ/D14HXgU+BS4EXwZfBO8D54NzwMfBe8AHwGdR/+vQmw80c39wE3A0uBd4MDgNnAqOA3cGtwQ7wLHgDuBzqP8E6DfAdVPMfBV6EbgW8jcEPwOOAVvBlcElwBo4FFyB/tqY698Kei3oL4L/t/+FDML1CvwX2qsYbEP+J8EvgO3giuDq4NLgKHA4uAo4Cf3ZBrrY6Odbz2fAxRvMXASOQf5YcAI4HhwBjgKHgqPB4WAN/PCb5uu7A/qs/7Lxzr/Wb5vHwwhwK/Az4CFgJ3gaeBK4CzgJHA9OBr8Gfgu8F/07C3poNsYvWICLeb5Ajwc7wAlgDRwNDgfHgCPAUeAhiebxnwTdCXaDU8Ep4BxwHrgAnA/OBGeB08HZ4AywCzwc9fewP9m+mzDfQS9kfyG/HRwPjgWHgzWwAEeBQ8ER4DTUPwH6CpwPR8FLwJngr8AnwT+APeBtPF/Ba8B54GzwLubH+X8B+sQZfg48D9oNTgO/A94G3gc+Av4CvACcBZ4G3gieDV4GbveqnwPPv05AT8F4yAYngR3gLHAOOA/sBqeDM8GpYBfYCc6gf4z/fOgX0R613jPzv6B7wFWRvx74KXAjcElwOfAVlBcB/Qb00tA7ov9bQi/k/LLZzB7oBZyvkD8abAfHgAU4HFzE+Q16MedD6NPR/7HQ15z0c+CXeS6Bl4EzwT+C/wSX/dbMIeBPkf8b8EdgD3gX+CvWB/NdRZTfADwcHAWuCk4BjwPPAU8FtwEngp8E9wY/B+4ILkb9F0PPAYtTZt4IfRX4D/B9sH8YXB78NezPgz8BXwQfAJ8C/4X610D5r2M+eA8cD34JnA6eB14BXgzuDx4BTgSPBfcEvw3uhPlvLXQH5gMXOAEcD84EZ4FzwNngVHA6OAmcAU4BO8GzMP+5oReAIz4ycz70PM7XyK+Bo8FR4CJeD6B7oIdCL+T1ADwf9Y+BfQucD++Cm4DrgdPAGeDl4PfBncH9wbHgoeB24O7gkCHm838t9Hi0RwY4FmwHp4MzwVlgFzgJnApOADvBDnAKeBH6Pxv6Z2gP62kz74a+BVwK+R8C1wZr4LPw9zv4EPgGuAD8E7g0+r8hyndjPiwGfwzeDP4N7AWXzTDzPeBjyP9P8Ofgn8BfgU+B38T8XwHlt0H7jAK/ALaDh4HHgWeA08GJ4L7g9uAUcAK4B/gkPv/OgZ6H8yF0i5nd0HPAAvnDwRo4Auzh9YDXH3AxuIDXA/D3OP+jUP4qtMdxsAu8AJwPPgUuBH8PzgHvA68DHwBvBu8Bn0b/X+R4Rns4wTHgaHAqOB2cCc4AJ4CTwLHgFHA82AH+F/rfBT1yqLk94sAR4PLgWHAHsAPcGRwNbg6uAW4JrgNuAv4R/d8Lej7P361mzuN8AA5F/ghwFFgDF8JfMbgALGDvgV4Ejupq7v9o2KeiPbLAg8H9wcvBG8A7wFvAU8DzwGngReAJ4AzwBfS/G/oRcIlhZj4I/TPwDXAo7CuAreBzsC8CF4Cvgr8D/wT+FfWvjPJjMR7SwXZwDNgJzgC7wJlgBzgFHM/xCk4AJ4HrYfxnQZ+A+6Fd4NHgYeCt4H+AD4MPgN8HfwieCt4AngV2sXzc/xVA/wVcc6aZf4B+BhyJ/HXBT4KfAJcAh4Mvo7yHoP8J/T7ox1D/Z6EvwfnwFTgTPAucBz4K9oBPgrPBu8ArwHvBa8DbwJdw/v8AvRgc9Q7soV8AV0d+G/hJcCNwaXBF8F8orwr0EHA4+Arqb4feHjwO3Ab8AngUOB08BzwD3AOcAk4ADwMngvuC/0T9F0Av5P3KNjN7oBfwfgb5o8F2cAxYgMPBRby/gl4MPRT6Fsz/sdBz2B7gzeB14O/BF8HXwZfBB8DHwXvAp8D7wPk8f7i/JxXjDe2RDU4CO8BZbE9wHtgNTgdnglPBLrATnAE+i/7Ph94E7dELHA2uA3aA+4NTwYPBseAO4ObgzuCW4Dhw2VfM/Z8GPQPsBk8BTwDvAH8GPgI+CF4O3gCeB94CXgTOAldF/QugF3N+2o75B3oh5zvkt4PjwbHgcLAGFuAocCg4Anyfwzz+E6C7wB5wJjgDXAAuBBezPcE54DxwFjgfnA12gweg/iIH7QVOAIeDQ8HxYAc4BZwEjgbbwRo4FhwFjgEPRv1Tob8D3YbzpQH4f9tf9nDzfOABrwGvAJ8E/wC+BL4A3gv+CrwNfBS8C5wHboT+K4beaZafb31/ENwe/DJ4CjgTvAq8FJwMHgV2gMeDe4OHght38HPg89966HvB18E7wVvAv4Mts80cBg4FfwP78+D94AvgfPB34KdR/4oov+Z3fg6shw0AVwE/AO4BHgZOB48B28HtwTbwG+Cm4JfAiSPM430m9IiPMf+Dw8Gh4HiwA5wCTgJHg+1gDRwLjgLHgD2c/6E/jvHQHVwD/Ai4C7gvOBU8CGwHx4EbgjuCm4FfBD+L8T8GegbaIx+cDnaC88AF4EL2BzgLnAPOBLvBLnA2+Dz6v4jjeQfGF1iAizleoceDHeAEsAaOBoeDY8AR4CjwT6h/EvQ5GA8HwdPBk8Cfgr8GnwWfBK8GbwcvBO8BLwdng5/H+C+EfhPceI6Zr0L/FWxD/ubg1uDnwOXBGjgE/Bj4fnAl8Euofzvo63A9uAz+ALwA/DP4JjjsjJnvAX+O/CfAW8Hfg/eA83l9xvUvAuU7cT64wangFHAOOA9cAM4HZ4KzwOngbHAG2AX+Fee/B/oQjgfwAHAv8ErwR+BPwDvAk8HzwSPBS8DjwBnguRj/edDTMT5ywOPAo8CbwXvAB8D7wAvAq8AzwOvAc8Au8ER8/snn+bAT1ydwODgUHA92gFPASeBosB2sgWPBUeAYcPlu5vGfCj0DnA9OBzvBeeACcCHYA84C54AzwW6wC5wNrob6F0H/HuOh/Egzn4J+HFwG+SPANcCR4MvwJ6AXQr8H+kXo1/l5B+O/DuxDd2F8gQW4mOMVejzYAU4Aa+BocDg4BhwBjgLXQv8nQW+O9ugPbgKOBvcCDwangVPBceDO4JZgBzgW3AE8B/0/Abrz/2LvP4Ciyr6FfbjJmMGIGTNmzGDEhBjHLMbBjBkzKiomxIwZM2bMmLNiHMxgGsyYs2IcVNSvlL3p6WeGwXW/qlv1r/d21Xvn97zrPGettfc5+5w+3Y0Yj3CwL9gHvAccAY4GR4KDwaHgQHAYOAgcAi6K+Y9BfB7G4yQ4CDwZHA4+C44GXwSHgneAF4P3gVeAN4PnY/5vIx7H8+ugKcci/oTnK7Z3AzcGe4DtwI5gA9gJbAt2ADtj/j3ZH8bD0c+UnyH+AJwN2xcElwYXA5uD04I/Il9GxOO5niO+EPPvgrgPxiMM7A32AoeC94AjwOHgQHAw2BccAvYHB4HLYf4jEa+M90PjwWXARcAjwNPAy8DzwK3APcC1wQPAjcBe4E6Y71DEn/D8OmTKMYhH83zF9s5gN7AL2AC2A8fy/EY8jusB4o0w/x6I55ubwPr9UFtwDnAmcHNwJ7APuAfYBewOLgJuCC4Frgbeifd/QxGfiuPjADgA7A/eBT4KPg+OAC8FrwfPAoeBg8GrwFuw/l1G3AvHQwjYE9wYHAwOBe8Bh4F9wYFgb3AQ2AfsD26P4z8c8ak4Ho6DJ4BHgQ+Cz4CvgS+Cl4O3gGeDd4EXgkPBR3D8xyD+AVx8nim/QvwxuCC2LwuuAa4ETgl2AMcjX27ELcD24BPovy7iL3A+5Bhpyo8QjwFnxvZ5wSXATuBv2F9KxN8ibod4HOKWiG/D+V8W8Yrg/9deDdC/H9gd7AYeAh4Lng4OBHcA9wQ3BfuAPcFdwDsx/3MQf/I5gVMqdvliyrcRvwwuge1rgFuCG4CtwdnAb5EvP+LxiNsh3hXnuxfiV3A/mDPGlM8ifgycEdsXBLuAS4JjsT9zxG8jngrxx4h/AodgvqvDj8H10PGwKUcjHgl2wPZOYBewMzgO+7NF/AnvjxGP5f004kdw/XdD3BMcDG4M9gAHgUPAYeBQsA/YH+wFDgR7g33Bkeh/D+KjcD6cBw8C9wQfB0eDX4DvgReDw8CB4H3gWeA14IE4/z8i7o/zIQI8FNwXfBgcBb4Pvg5eBN4EngTeBZ4FXgVeg/P/BeJZ75pyR7Ad2AbsCe4J9gMPBJcFu4Pzgn8DFwVXAR9C/xMQDwE/Ac8HTwffAb8BW9wz5c+I7wefA68DXwVvAx8no//UqGcz+CN4NXgx+CX4O9j+vinbgk9h+xvg3eAH4HDwRfBV9J8N+cuBR4KLgfOBB4EDwMHgGeDG4E7gquBe4Drg1uCb6H854nG8Xofj+srrMa/n2N4N3BjsAbYDO4INYCewLdgB/IrPvxHvEm96PdgBbgNuDF4PPgS+CI4AjwXPA/cFh4B9wVPBY3D9u4m4D8YjDOwN9gKHgveAI8Dh4EBwMNgXHAL2BweB3/H5N+KfMR71vppyLOKPwG7YvjnYG9wB7AAuBrYElwenBecFB2L+ByAeBI4BB4D9wFfBz8DfwO/Bm8FHwQvBZ8GrwHvAM9C/7TfTeEHwEHAOcHpwb7A/eA54MrgW2BPsDO4ErghuBJ6H/pcifgCc+rspb0M8FGyO7TODi4Adwdexv1fgk+A4cCT4AXgJn08if1PwCrAHuCo4GLwRHA7eBfYBjwe3A08HdwMPB69C/6cRL4T7pX7gXOBM4G5gX/Bk8BhwDXBzsDO4PdgVXB8cifuf2YjPTZfw74inUvwSPBk8GnwPHAdOa2fKFuBd2P4sOAT8J3gD+Ag4Gte7rMh/APeDlg9MeTvi68FfwGng5wZnBv8J/yn4BPgt+Dw4BnyPz9+RvyZ4CrgiuBR4LHgOeA14CbgD2AfcADwM3ALcHfwE/W9BPBbHh/MRU36CeAzvx7G9C9gD7Aa2BTuA4/j+AHED2I4+7v8asz+shy6GdiZ8G/HL4BLYvga4JbgB2BqcDfwW+fIjHo+4HeIb+Pwb8dM4HtI/NOUjiO8Bp8D22cHFwfnBD7G/v8CXwAb4NxF/BX6P4788/IpYD2eBS4LzgyeCl4C3g0PBbcH9wbXBfuDG4G5gTxzvhxD3QTwM7A32AoeC94AjwOHgQHAw2BccAvYHB4HNO5me/5GIj8L5cB48CNwTfBwcDX4BvgdeDA4DB4L3gWeB14C38fk34k8wHk5Hsd4jHg12xPbOYDewC9gAtgPH8vqAeByvJ4jbYP49EM9oZjoeXcApwQZwG3Bf8FiwL7g02B2cC9wY7ASuDN6L+Z+KuBfGIwTsCW4MDgaHgveAw8C+4ECwNzgI7AP2B6fG/Icjvh7j8RkcAp4HjgVbmpuyAzgtOAL+TfAO8CPwIfBFcDjmPy/yR2M8HI6ZciTiETxfsb0j2BnsBI7leoB4DOK2iD/hegC2x/y7wHfDeASBy4OLgQPAC8GbwavAHcADwPXAfuDmYG/wH5j/PYg3wf3QArAHuBo4CLwCvAO8AdwbPArcBjwR3Bk8GGw9yvT+7yDi0WDHR6Z8AfGT4CzYvjC4Erg0+B32Z4X4XcTTIv4M8XhwavRfC/7v4LXgluCG4KXgMPBR8F7wcPBUsDd4Lrg/eBzYAf2fQfwRuMRjU76F+GVwAWxfAVwX7AY2A2cAv0a+HIjHIZ4S8VzovynijbEeBoE9uF6CA8HB4FBwCNgb7Av2BPuDvcA+4OxY/8MQv4r1sKCFKZ9F/Cg4B7Z3BtcCVwS/x/5sEY9BPD3izxD/Bj6P9b8R/D44HnaCu4DbgjeCD4EjwX+AA8ELwUPAK8GjwTPB+XH8X0P8PbjyE1N+jvg9cBlsXxvcCtwInA6cB/wV+Yogbg12ABdB/16IR+B8sD1uyuGI7wEbsL0d2BHsAI7h/SDvP8Fx4GjeD/J+FOe/E/L3xvlwANwJ7AneBj4Jvg4=", + "reassembledchecksum": "jFp1A+TlWJqpuVk2yl2FQw==" +} \ No newline at end of file diff --git a/go.mod b/go.mod index 7501a45e..061ce8f0 100644 --- a/go.mod +++ b/go.mod @@ -53,6 +53,7 @@ require ( github.com/provideplatform/provide-go v0.0.0-20210701150626-bff9948fbd9a github.com/spaolacci/murmur3 v1.1.1-0.20190317074736-539464a789e9 // indirect github.com/status-im/keycard-go v0.0.0-20191119114148-6dd40a46baa0 // indirect + github.com/vmihailenco/msgpack/v5 v5.3.4 go.mongodb.org/mongo-driver v1.5.1 golang.org/x/sys v0.0.0-20210616094352-59db8d763f22 // indirect launchpad.net/gocheck v0.0.0-20140225173054-000000000087 // indirect diff --git a/go.sum b/go.sum index 1e4cbfbb..01ebe32c 100644 --- a/go.sum +++ b/go.sum @@ -650,6 +650,10 @@ github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX github.com/vincent-petithory/dataurl v0.0.0-20160330182126-9a301d65acbb/go.mod h1:FHafX5vmDzyP+1CQATJn7WFKc9CvnvxyvZy6I1MrG/U= github.com/vincent-petithory/dataurl v0.0.0-20191104211930-d1553a71de50 h1:uxE3GYdXIOfhMv3unJKETJEhw78gvzuQqRX/rVirc2A= github.com/vincent-petithory/dataurl v0.0.0-20191104211930-d1553a71de50/go.mod h1:FHafX5vmDzyP+1CQATJn7WFKc9CvnvxyvZy6I1MrG/U= +github.com/vmihailenco/msgpack/v5 v5.3.4 h1:qMKAwOV+meBw2Y8k9cVwAy7qErtYCwBzZ2ellBfvnqc= +github.com/vmihailenco/msgpack/v5 v5.3.4/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= +github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= github.com/whyrusleeping/tar-utils v0.0.0-20180509141711-8c6c8ba81d5c h1:GGsyl0dZ2jJgVT+VvWBf/cNijrHRhkrTjkmp5wg7li0= github.com/whyrusleeping/tar-utils v0.0.0-20180509141711-8c6c8ba81d5c/go.mod h1:xxcJeBb7SIUl/Wzkz1eVKJE/CB34YNrqX2TQI6jY9zs= github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208 h1:1cngl9mPEoITZG8s8cVcUy5CeIBYhEESkOB7m6Gmkrk= diff --git a/ops/docker-compose-broadcast.yml b/ops/docker-compose-broadcast.yml new file mode 100644 index 00000000..6f598eac --- /dev/null +++ b/ops/docker-compose-broadcast.yml @@ -0,0 +1,108 @@ +version: '3.5' + +services: + postgres: + image: postgres + container_name: postgres-local + environment: + - POSTGRES_DB=prvd + - POSTGRES_USER=prvd + - POSTGRES_PASSWORD=prvdp455 + healthcheck: + test: ["CMD", "pg_isready", "-U", "prvd", "-d", "prvd"] + interval: 1m + timeout: 1s + retries: 2 + start_period: 10s + hostname: postgres + volumes: + - provide-db:/var/lib/postgresql/data + networks: + - provide + ports: + - 5432:5432 + restart: always + + redis: + image: redis + container_name: redis + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 1m + timeout: 1s + retries: 2 + start_period: 10s + hostname: redis + networks: + - provide + ports: + - 6379:6379 + restart: always + + nats: + image: provide/nats-server + container_name: provide-nats + command: ["-auth", "testtoken", "-p", "4222", "-D", "-V"] + environment: + JWT_SIGNER_PUBLIC_KEY: |- + -----BEGIN PUBLIC KEY----- + MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAullT/WoZnxecxKwQFlwE + 9lpQrekSD+txCgtb9T3JvvX/YkZTYkerf0rssQtrwkBlDQtm2cB5mHlRt4lRDKQy + EA2qNJGM1Yu379abVObQ9ZXI2q7jTBZzL/Yl9AgUKlDIAXYFVfJ8XWVTi0l32Vsx + tJSd97hiRXO+RqQu5UEr3jJ5tL73iNLp5BitRBwa4KbDCbicWKfSH5hK5DM75EyM + R/SzR3oCLPFNLs+fyc7zH98S1atglbelkZsMk/mSIKJJl1fZFVCUxA+8CaPiKbpD + QLpzydqyrk/y275aSU/tFHidoewvtWorNyFWRnefoWOsJFlfq1crgMu2YHTMBVtU + SJ+4MS5D9fuk0queOqsVUgT7BVRSFHgDH7IpBZ8s9WRrpE6XOE+feTUyyWMjkVgn + gLm5RSbHpB8Wt/Wssy3VMPV3T5uojPvX+ITmf1utz0y41gU+iZ/YFKeNN8WysLxX + AP3Bbgo+zNLfpcrH1Y27WGBWPtHtzqiafhdfX6LQ3/zXXlNuruagjUohXaMltH+S + K8zK4j7n+BYl+7y1dzOQw4CadsDi5whgNcg2QUxuTlW+TQ5VBvdUl9wpTSygD88H + xH2b0OBcVjYsgRnQ9OZpQ+kIPaFhaWChnfEArCmhrOEgOnhfkr6YGDHFenfT3/RA + PUl1cxrvY7BHh4obNa6Bf8ECAwEAAQ== + -----END PUBLIC KEY----- + healthcheck: + test: ["CMD", "/usr/local/bin/await_tcp.sh", "localhost:4222"] + interval: 1m + timeout: 1s + retries: 2 + start_period: 10s + hostname: nats + networks: + - provide + ports: + - 4221:4221 + - 4222:4222 + restart: always + volumes: + - ./ops/await_tcp.sh:/usr/local/bin/await_tcp.sh:cached + + nats-streaming: + image: provide/nats-streaming + command: ["-cid", "provide", "--auth", "testtoken", "-SDV"] + container_name: nats-streaming + depends_on: + - nats + healthcheck: + test: ["CMD", "/usr/local/bin/await_tcp.sh", "localhost:4224"] + interval: 1m + timeout: 1s + retries: 2 + start_period: 10s + hostname: nats-streaming + networks: + - provide + ports: + - 4224:4224 + - 9222:4222 + restart: always + volumes: + - ./ops/await_tcp.sh:/usr/local/bin/await_tcp.sh:cached + +networks: + provide: + driver: bridge + ipam: + config: + - subnet: 172.30.0.0/24 + +volumes: + provide-db: diff --git a/ops/docker-compose.yml b/ops/docker-compose.yml index e16cd013..ae5183fc 100644 --- a/ops/docker-compose.yml +++ b/ops/docker-compose.yml @@ -282,7 +282,7 @@ services: - DATABASE_USER=nchain - DATABASE_PASSWORD=nchain - LOG_LEVEL=DEBUG - - NATS_CLUSTER_ID=provide + - NATS_CLUSTER_ID=provide - NATS_CLIENT_PREFIX=nchain-consumer - NATS_URL=nats://nats:4222 - NATS_STREAMING_URL=nats://nats-streaming:4222