diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..ab9c54e --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,93 @@ +name: risc-v CI + +on: + pull_request: + +permissions: + contents: read + packages: write + +jobs: + build_ci_image: + runs-on: ubuntu-latest + outputs: + image-tag: ${{ steps.meta.outputs.tags }} + image-digest: ${{ steps.build.outputs.digest }} + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: ghcr.io/utoss/risc-v + tags: | + type=ref,event=branch,prefix=ci-branch- + type=ref,event=pr,prefix=ci-pr- + type=raw,value=latest,prefix=ci-,enable={{is_default_branch}} + + - name: Build and push Docker image + id: build + uses: docker/build-push-action@v5 + with: + context: . + file: ./Dockerfile.ci + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + platforms: linux/amd64 + cache-from: | + type=gha + type=registry,ref=ghcr.io/utoss/risc-v:buildcache + cache-to: | + type=gha,mode=max + type=registry,ref=ghcr.io/utoss/risc-v:buildcache,mode=max + + build_and_test: + needs: build_ci_image + runs-on: ubuntu-latest + container: + image: ${{ needs.build_ci_image.outputs.image-tag }} + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Build top + id: build-top + run: make build_top + + - name: Build testbench + id: build-testbench + run: make build_tb + + - name: Run testbench + run: make run_tb + + - name: Upload VCD files + uses: actions/upload-artifact@v4 + if: steps.build-testbench.outcome == 'success' + with: + name: vcd-files + path: test/vcd/*.vcd + retention-days: 7 + + - name: Upload VVP files + uses: actions/upload-artifact@v4 + if: steps.build-top.outcome == 'success' + with: + name: vvp-files + path: out/*.vvp + retention-days: 7 diff --git a/.gitignore b/.gitignore index 64326b1..bb21ac5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,4 @@ *.vvp *.vcd -!test/fetch_tb.vcd -!test/beq_tb.vcd - .devcontainer/ diff --git a/Dockerfile.ci b/Dockerfile.ci new file mode 100644 index 0000000..2607edb --- /dev/null +++ b/Dockerfile.ci @@ -0,0 +1,36 @@ +FROM public.ecr.aws/lts/ubuntu:22.04_stable + +ARG DEBIAN_FRONTEND=noninteractive +ARG KEYRING_PATH=/usr/share/keyrings +ARG APT_SOURCES_PATH=/etc/apt/sources.list.d + +# update and upgrade +RUN apt update && apt upgrade -y + +# install essentialls +RUN apt update && \ + apt install -y \ + man make build-essential git zsh vim curl wget procps gnupg gnupg2 ca-certificates zip \ + software-properties-common + +# create dev sudo user +RUN useradd --create-home dev && \ + usermod --append --groups sudo dev && \ + apt update && apt install -y sudo && \ + echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers + +# build and install icarus verilog +USER dev +ARG ICARUS_SRC_TAR=v12_0.tar.gz +ARG ICARUS_SRC_URL=https://github.com/steveicarus/iverilog/archive/refs/tags/${ICARUS_SRC_TAR} +ARG ICARUS_SRC_HASH="a68cb1ef7c017ef090ebedb2bc3e39ef90ecc70a3400afb4aa94303bc3beaa7d ${ICARUS_SRC_TAR}" +RUN sudo apt update && sudo apt install -y autoconf gperf make gcc g++ bison flex && \ + cd /tmp && \ + wget ${ICARUS_SRC_URL} && \ + echo ${ICARUS_SRC_HASH} | sha256sum -c && \ + tar -xzf ${ICARUS_SRC_TAR} && \ + cd iverilog-* && sh autoconf.sh && ./configure && make && make check && sudo make install && \ + cd .. && rm ${ICARUS_SRC_TAR} && rm -rf ./iverilog-* + +# CI needs priviledged access +USER root diff --git a/Makefile b/Makefile index 52ab0c6..8d5c5cb 100644 --- a/Makefile +++ b/Makefile @@ -3,19 +3,54 @@ OUTPUT := out/top.vvp IVERILOG := iverilog VVP := vvp -all: $(OUTPUT) +SRCS := $(shell find $(SRC_DIR) -name "*.sv" -o -name "*.v") -$(OUTPUT): $(SRCS) - $(IVERILOG) -g2012 -o $(OUTPUT) -c src/top.cf +TB_SRC_PATTERN := test/%_tb.sv +TB_OUT_PATTERN := out/%_tb.vvp + +TB_SRCS := $(wildcard $(subst %,*,$(TB_SRC_PATTERN))) +TB_VVPS := $(patsubst $(TB_SRC_PATTERN),$(TB_OUT_PATTERN),$(TB_SRCS)) +TB_UTILS := test/utils.svh + +TB_VCD_BASE_PATH := test/vcd + +build_top: $(OUTPUT) -run: $(OUTPUT) +run_top: $(OUTPUT) $(VVP) $(OUTPUT) -# tmp -fetch_tb: - $(IVERILOG) -g2012 -o $(OUTPUT) $(SRCS) -c src/top.cf test/fetch_tb.sv +$(OUTPUT): $(SRCS) + $(IVERILOG) -g2012 -o $(OUTPUT) $(SRCS) + +$(TB_OUT_PATTERN): $(TB_SRC_PATTERN) $(TB_UTILS) $(SRCS) + $(IVERILOG) -g2012 -o $@ $(SRCS) $< + +new_tb: + @if [ -z "$(name)" ]; then \ + echo "Usage: make new_tb name="; \ + exit 1; \ + fi + m4 -D M4__TB_NAME="$(name)_tb" test/tb_template.sv.m4 > test/$(name)_tb.sv + +build_tb: $(TB_VVPS) -beq_tb: - $(IVERILOG) -g2012 -o $(OUTPUT) $(SRCS) -c src/top.cf test/beq_tb.sv +run_tb: $(TB_VVPS) + @failed=0; \ + for tb in $(TB_VVPS); do \ + echo "Running $$tb..."; \ + if ! $(VVP) -N $$tb +VCD_PATH=$(TB_VCD_BASE_PATH); then \ + echo "\033[31mFAILED: $$tb\033[0m"; \ + failed=1; \ + else \ + echo "\033[32mPASSED: $$tb\033[0m"; \ + fi; \ + echo ""; \ + done; \ + if [ $$failed -eq 1 ]; then \ + echo "\033[31mSome testbenches failed!\033[0m"; \ + exit 1; \ + else \ + echo "\033[32mAll testbenches passed!\033[0m"; \ + fi -.PHONY: all run +.PHONY: all run testbenches run-tests diff --git a/README.md b/README.md index d63062c..b7fb732 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,21 @@ # risc-v UTOSS' starter multicycle RISC-V core. + +## Development + +Put new modules into `src/` folder. + +### Testbenches + +It is important that new functionality is tested to a reasonable extent by using test benches. To +run all existing testbenches use `make run_tb` + +To create a new test bench, if you are on Linux use the following command: +``` +$ make new_tb name="something" +``` + +If you are on Windows, create a new testbench file in `test/` folder named `something_tb.sv` (the +`_tb.sv` suffix and extension are necessary for the test suite to recognize this file as a +testbench). Copy the content of `test/tb_template.sv.m4` into your newly-created testbench file and +start writing the test bench. diff --git a/src/ALU&ALUdecoder/ALU.v b/src/ALU_ALUdecoder/ALU.v similarity index 100% rename from src/ALU&ALUdecoder/ALU.v rename to src/ALU_ALUdecoder/ALU.v diff --git a/src/ALU&ALUdecoder/ALUdecoder.v b/src/ALU_ALUdecoder/ALUdecoder.v similarity index 100% rename from src/ALU&ALUdecoder/ALUdecoder.v rename to src/ALU_ALUdecoder/ALUdecoder.v diff --git a/src/MA.v b/src/MA.v deleted file mode 100644 index 0d452e3..0000000 --- a/src/MA.v +++ /dev/null @@ -1,22 +0,0 @@ -module MA ( - #( - parameter SIZE = 1024 - ) - input [31:0] A, - input [31:0] WD, - input WE, - input CLK, - output [31:0] RD -); - - reg [31:0] M[0:SIZE-1]; - - assign RD = M[A[31:2]]; // 2 LSBs used for byte addressing - - always @(posedge CLK) begin - if (WE) begin - M[A[31:2]] <= WD; - end - end - -endmodule \ No newline at end of file diff --git a/src/top.cf b/src/top.cf deleted file mode 100644 index a4571dd..0000000 --- a/src/top.cf +++ /dev/null @@ -1,9 +0,0 @@ -src/utils/MA.v -src/utils/register.sv -src/ALU&ALUdecoder/ALUDecoder.v -src/ALU&ALUdecoder/ALU.v -src/Instruction_Decode/Instruction_Decode.v -src/Instruction_Decode/RegisterFile.v -src/ControlFSM.v -src/fetch.sv -src/top.v diff --git a/src/ALU&ALUdecoder/branchifeq_tb.sv b/test/alu_branchifeq_tb.sv similarity index 73% rename from src/ALU&ALUdecoder/branchifeq_tb.sv rename to test/alu_branchifeq_tb.sv index 9ce5a95..4062dc5 100644 --- a/src/ALU&ALUdecoder/branchifeq_tb.sv +++ b/test/alu_branchifeq_tb.sv @@ -1,57 +1,61 @@ `timescale 1ns / 1ps -module branchifeq_tb; +`include "test/utils.svh" + +module alu_branchifeq_tb; logic [2:0] funct3; logic [6:0] funct7; logic [1:0] alu_op; logic [3:0] alu_control; logic [31:0] A; - logic [31:0] B; + logic [31:0] B; logic [31:0] out; logic zeroE; - + ALUdecoder ALU_decoder ( .funct3(funct3), .funct7(funct7), .alu_op(alu_op), .alu_control(alu_control) ); - + ALU alu (.a(A), .b(B), .alu_control(alu_control), .out(out), .zeroE(zeroE)); - + initial begin - // Test decode + // Test decode //set old PC = 0x0; (A=0) set branching is to add 16 (B = 16); alu_op = 2'b00; funct3 = 3'bxxx; funct7 = 7'bxxxxxxx; A = 32'h0; B = 32'h10; /* DECODE: begin - + ALUSrcA <= 2'b01; ALUSrcB <= 2'b01; ALUOp <= 2'b00; - + end */ - + // Test branch (SUB operation) alu_op = 2'b01; funct3 = 3'b000; funct7 = 7'b0000000; A = 32'h0010; B = 32'h0010; #10; - assert(alu_control == 4'b0001) else $error("Unexpected zero output for funct3=%b", funct3); - assert(out == 32'b0) else $error("not branching when equal for funct3=%b", funct3); + assert(alu_control == 4'b0001) else $fatal(1,"Unexpected zero output for funct3=%b", funct3); + assert(out == 32'b0) else $fatal(1,"not branching when equal for funct3=%b", funct3); $display("finish testing"); - /* + /* BRANCHIFEQ: begin - + ALUSrcA <= 2'b10; ALUSrcB <= 2'b00; ALUOp <= 2'b01; ResultSrc <= 2'b00; Branch <= 1'b1; - + end - */ + */ end - -endmodule \ No newline at end of file + + `SETUP_VCD_DUMP(alu_branchifeq_tb) + +endmodule diff --git a/src/ALU&ALUdecoder/alu_decoder_tb.sv b/test/alu_decoder_tb.sv similarity index 58% rename from src/ALU&ALUdecoder/alu_decoder_tb.sv rename to test/alu_decoder_tb.sv index 8e73696..0acc187 100644 --- a/src/ALU&ALUdecoder/alu_decoder_tb.sv +++ b/test/alu_decoder_tb.sv @@ -1,73 +1,77 @@ `timescale 1ns / 1ps +`include "test/utils.svh" + module alu_decoder_tb; logic [2:0] funct3; logic [6:0] funct7; logic [1:0] alu_op; logic [3:0] alu_control; - + ALUdecoder ALU_decoder ( .funct3(funct3), .funct7(funct7), .alu_op(alu_op), .alu_control(alu_control) ); - + initial begin // Test lw/sw (ADD operation) alu_op = 2'b00; funct3 = 3'b000; funct7 = 7'b0000000; #10; - assert(alu_control == 4'b0000) else $error("Unexpected zero output for funct3=%b", funct3); - + assert(alu_control == 4'b0000) else $fatal(1,"Unexpected zero output for funct3=%b", funct3); + // Test branch (SUB operation) alu_op = 2'b01; funct3 = 3'b000; funct7 = 7'b0000000; #10; - assert(alu_control == 4'b0001) else $error("Unexpected zero output for funct3=%b", funct3); - /* + assert(alu_control == 4'b0001) else $fatal(1,"Unexpected zero output for funct3=%b", funct3); + /* BRANCHIFEQ: begin - + ALUSrcA <= 2'b10; ALUSrcB <= 2'b00; ALUOp <= 2'b01; ResultSrc <= 2'b00; Branch <= 1'b1; - + end */ - + // Test R-type ADD alu_op = 2'b10; funct3 = 3'b000; funct7 = 7'b0000000; #10; - assert(alu_control == 4'b0010) else $error("Unexpected zero output for funct3=%b", funct3); - + assert(alu_control == 4'b0000) else $fatal(1,"Unexpected zero output for funct3=%b", funct3); + // Test R-type SUB alu_op = 2'b10; funct3 = 3'b000; funct7 = 7'b0100000; #10; - assert(alu_control == 4'b0010) else $error("Unexpected zero output for funct3=%b", funct3); - + assert(alu_control == 4'b0001) else $fatal(1,"Unexpected zero output for funct3=%b", funct3); + // Test R-type XOR alu_op = 2'b10; funct3 = 3'b100; funct7 = 7'b0000000; #10; - assert(alu_control == 4'b0010) else $error("Unexpected zero output for funct3=%b", funct3); - + assert(alu_control == 4'b0101) else $fatal(1,"Unexpected zero output for funct3=%b", funct3); + // Test I-type ADDI alu_op = 2'b11; funct3 = 3'b000; funct7 = 7'b0000000; #10; - assert(alu_control == 4'b0010) else $error("Unexpected zero output for funct3=%b", funct3); - + assert(alu_control == 4'b0000) else $fatal(1,"Unexpected zero output for funct3=%b", funct3); + // Test I-type ORI alu_op = 2'b11; funct3 = 3'b110; funct7 = 7'b0000000; #10; - assert(alu_control == 4'b0010) else $error("Unexpected zero output for funct3=%b", funct3); - + assert(alu_control == 4'b1000) else $fatal(1,"Unexpected zero output for funct3=%b", funct3); + // Test I-type SRAI (funct7 is upper 7 bits of immediate) alu_op = 2'b11; funct3 = 3'b101; funct7 = 7'b0100000; #10; - assert(alu_control == 4'b0010) else $error("Unexpected zero output for funct3=%b", funct3); - - + assert(alu_control == 4'b0111) else $fatal(1,"Unexpected zero output for funct3=%b", funct3); + + end - -endmodule \ No newline at end of file + + `SETUP_VCD_DUMP(alu_decoder_tb) + +endmodule diff --git a/test/beq_tb.sv b/test/beq_tb.sv index c00bbb8..744fef2 100644 --- a/test/beq_tb.sv +++ b/test/beq_tb.sv @@ -3,6 +3,8 @@ `include "src/utils.svh" `include "src/types.svh" +`include "test/utils.svh" + module beq_tb; reg clk; reg reset; @@ -31,27 +33,27 @@ module beq_tb; #10; // fetch stage reset <= `FALSE; - assert(uut.opcode == 7'b1100011) else $error("`uut.opcode` is `%0b`", uut.opcode); + assert(uut.opcode == 7'b1100011) else $fatal(1,"`uut.opcode` is `%0b`", uut.opcode); - assert(uut.fetch.pc_cur == 32'h00000000) else $error("`uut.fetch.pc_cur` is `%0h`", uut.fetch.pc_cur); - assert(uut.fetch.imm_ext == 32'hFFFFFFF4) else $error("`uut.fetch.imm_ext` is `%0h`", uut.fetch.imm_ext); + assert(uut.fetch.pc_cur == 32'h00000000) else $fatal(1,"`uut.fetch.pc_cur` is `%0h`", uut.fetch.pc_cur); + assert(uut.fetch.imm_ext == 32'hFFFFFFF4) else $fatal(1,"`uut.fetch.imm_ext` is `%0h`", uut.fetch.imm_ext); #10; // decode stage - assert(uut.alu__zero_flag == `TRUE) else $error("`uut.alu__zero_flag` is `%0b`", uut.alu__zero_flag); + assert(uut.alu__zero_flag == `TRUE) else $fatal(1,"`uut.alu__zero_flag` is `%0b`", uut.alu__zero_flag); - assert(uut.alu.a == 32'h0000002a) else $error("`uut.alu.a` is `%0h`", uut.alu.a); - assert(uut.alu.b == 32'h0000002a) else $error("`uut.alu.b` is `%0h`", uut.alu.b); + assert(uut.alu.a == 32'h0000002a) else $fatal(1,"`uut.alu.a` is `%0h`", uut.alu.a); + assert(uut.alu.b == 32'h0000002a) else $fatal(1,"`uut.alu.b` is `%0h`", uut.alu.b); #10; // beq stage - assert(uut.cfsm__pc_src == 1 /* JUMP */) else $error("`uut.cfsm__pc_src` is `%0b`", uut.cfsm__pc_src); + assert(uut.cfsm__pc_src == 1 /* JUMP */) else $fatal(1,"`uut.cfsm__pc_src` is `%0b`", uut.cfsm__pc_src); - assert(uut.fetch.pc_cur == 32'h00000000) else $error("`uut.fetch.pc_cur` is `%0h`", uut.fetch.pc_cur); + assert(uut.fetch.pc_cur == 32'h00000000) else $fatal(1,"`uut.fetch.pc_cur` is `%0h`", uut.fetch.pc_cur); #10; // pc update - assert(uut.fetch.pc_cur == 32'hFFFFFFF4) else $error("`uut.fetch.pc_cur` is `%0h`", uut.fetch.pc_cur); + assert(uut.fetch.pc_cur == 32'hFFFFFFF4) else $fatal(1,"`uut.fetch.pc_cur` is `%0h`", uut.fetch.pc_cur); // beq without satisfied condition #10; @@ -64,26 +66,26 @@ module beq_tb; #10; // fetch stage reset <= `FALSE; - assert(uut.opcode == 7'b1100011) else $error("`uut.opcode` is `%0b`", uut.opcode); + assert(uut.opcode == 7'b1100011) else $fatal(1,"`uut.opcode` is `%0b`", uut.opcode); - assert(uut.fetch.pc_cur == 32'h00000000) else $error("`uut.fetch.pc_cur` is `%0h`", uut.fetch.pc_cur); - assert(uut.fetch.imm_ext == 32'h00000010) else $error("`uut.fetch.imm_ext` is `%0h`", uut.fetch.imm_ext); + assert(uut.fetch.pc_cur == 32'h00000000) else $fatal(1,"`uut.fetch.pc_cur` is `%0h`", uut.fetch.pc_cur); + assert(uut.fetch.imm_ext == 32'h00000010) else $fatal(1,"`uut.fetch.imm_ext` is `%0h`", uut.fetch.imm_ext); #10; // decode stage - assert(uut.alu.a == 32'h0000002a) else $error("`uut.alu.a` is `%0h`", uut.alu.a); - assert(uut.alu.b == 32'h0000002b) else $error("`uut.alu.b` is `%0h`", uut.alu.b); + assert(uut.alu.a == 32'h0000002a) else $fatal(1,"`uut.alu.a` is `%0h`", uut.alu.a); + assert(uut.alu.b == 32'h0000002b) else $fatal(1,"`uut.alu.b` is `%0h`", uut.alu.b); - assert(uut.alu__zero_flag == `FALSE) else $error("`uut.alu__zero_flag` is `%0b`", uut.alu__zero_flag); + assert(uut.alu__zero_flag == `FALSE) else $fatal(1,"`uut.alu__zero_flag` is `%0b`", uut.alu__zero_flag); #10; // beq stage - assert(uut.cfsm__pc_src == 0 /* +4 */) else $error("`uut.cfsm__pc_src` is `%0b`", uut.cfsm__pc_src); - assert(uut.fetch.pc_cur == 32'h00000000) else $error("`uut.fetch.pc_cur` is `%0h`", uut.fetch.pc_cur); + assert(uut.cfsm__pc_src == 0 /* +4 */) else $fatal(1,"`uut.cfsm__pc_src` is `%0b`", uut.cfsm__pc_src); + assert(uut.fetch.pc_cur == 32'h00000000) else $fatal(1,"`uut.fetch.pc_cur` is `%0h`", uut.fetch.pc_cur); #10; // pc update - assert(uut.fetch.pc_cur == 32'h00000004) else $error("`uut.fetch.pc_cur` is `%0h`", uut.fetch.pc_cur); + assert(uut.fetch.pc_cur == 32'h00000004) else $fatal(1,"`uut.fetch.pc_cur` is `%0h`", uut.fetch.pc_cur); #10; // check that zero-setting instructions do not result in a jump reset <= `TRUE; @@ -94,24 +96,22 @@ module beq_tb; #10; // fetch stage reset <= `FALSE; - assert(uut.fetch.pc_cur == 32'h00000000) else $error("`uut.fetch.pc_cur` is `%0h`", uut.fetch.pc_cur); + assert(uut.fetch.pc_cur == 32'h00000000) else $fatal(1,"`uut.fetch.pc_cur` is `%0h`", uut.fetch.pc_cur); #10; // decode stage #10; // execute stage - assert(uut.alu__zero_flag == `TRUE) else $error("`uut.alu__zero_flag` is `%0b`", uut.alu__zero_flag); + assert(uut.alu__zero_flag == `TRUE) else $fatal(1,"`uut.alu__zero_flag` is `%0b`", uut.alu__zero_flag); #10; // wait for pc update // pc update not implemented yet for this - assert(uut.fetch.pc_cur == 32'h00000000) else $error("`uut.fetch.pc_cur` is `%0h`", uut.fetch.pc_cur); + assert(uut.fetch.pc_cur == 32'h00000000) else $fatal(1,"`uut.fetch.pc_cur` is `%0h`", uut.fetch.pc_cur); $finish; end - initial begin - $dumpfile("test/beq_tb.vcd"); - $dumpvars(0, beq_tb); - end + `SETUP_VCD_DUMP(beq_tb) + endmodule diff --git a/test/beq_tb.vcd b/test/beq_tb.vcd deleted file mode 100644 index 34eedbf..0000000 --- a/test/beq_tb.vcd +++ /dev/null @@ -1,559 +0,0 @@ -$date - Thu Jun 5 04:15:59 2025 -$end -$version - Icarus Verilog -$end -$timescale - 1ps -$end -$scope module beq_tb $end -$var reg 1 ! clk $end -$var reg 1 " reset $end -$scope module uut $end -$var wire 1 ! clk $end -$var wire 1 " reset $end -$var wire 32 # rs2 [31:0] $end -$var wire 32 $ rs1 [31:0] $end -$var wire 7 % opcode [6:0] $end -$var wire 32 & instr [31:0] $end -$var wire 32 ' imm_ext [31:0] $end -$var wire 1 ( cfsm__pc_update $end -$var wire 1 ) cfsm__pc_src $end -$var wire 1 * alu__zero_flag $end -$var wire 2 + __tmp_ResultSrc [1:0] $end -$var wire 1 , __tmp_RegWrite $end -$var wire 1 - __tmp_MemWrite $end -$var wire 1 . __tmp_IRWrite $end -$var wire 4 / __tmp_FSMState [3:0] $end -$var wire 1 0 __tmp_Branch $end -$var wire 1 1 __tmp_AdrSrc $end -$var wire 2 2 __tmp_ALUSrcB [1:0] $end -$var wire 2 3 __tmp_ALUSrcA [1:0] $end -$var wire 32 4 __tmp_ALUOut [31:0] $end -$var wire 3 5 __tmp_ALUOp [2:0] $end -$var wire 4 6 __tmp_ALUControl [3:0] $end -$var reg 32 7 __tmp_ResultData [31:0] $end -$scope module alu $end -$var wire 1 * zeroE $end -$var wire 32 8 b [31:0] $end -$var wire 4 9 alu_control [3:0] $end -$var wire 32 : a [31:0] $end -$var reg 32 ; out [31:0] $end -$upscope $end -$scope module control_fsm $end -$var wire 1 ! clk $end -$var wire 1 " reset $end -$var wire 1 * zero_flag $end -$var wire 7 < opcode [6:0] $end -$var parameter 4 = ALUWB $end -$var parameter 4 > BRANCHIFEQ $end -$var parameter 4 ? DECODE $end -$var parameter 4 @ EXECUTEI $end -$var parameter 4 A EXECUTER $end -$var parameter 4 B FETCH $end -$var parameter 4 C MEMADR $end -$var parameter 4 D MEMREAD $end -$var parameter 4 E MEMWB $end -$var parameter 4 F MEMWRITE $end -$var parameter 4 G UNCONDJUMP $end -$var reg 3 H ALUOp [2:0] $end -$var reg 2 I ALUSrcA [1:0] $end -$var reg 2 J ALUSrcB [1:0] $end -$var reg 1 1 AdrSrc $end -$var reg 1 0 Branch $end -$var reg 4 K FSMState [3:0] $end -$var reg 1 . IRWrite $end -$var reg 1 - MemWrite $end -$var reg 1 ( PCUpdate $end -$var reg 1 , RegWrite $end -$var reg 2 L ResultSrc [1:0] $end -$var reg 4 M current_state [3:0] $end -$var reg 4 N next_state [3:0] $end -$var reg 1 ) pc_src $end -$upscope $end -$scope module fetch $end -$var wire 1 ) cfsm__pc_src $end -$var wire 1 ( cfsm__pc_update $end -$var wire 1 ! clk $end -$var wire 1 " reset $end -$var wire 32 O instr [31:0] $end -$var wire 32 P imm_ext [31:0] $end -$var reg 32 Q pc_cur [31:0] $end -$var reg 32 R pc_next [31:0] $end -$scope module instruction_memory $end -$var wire 32 S A [31:0] $end -$var wire 1 ! CLK $end -$var wire 32 T RD [31:0] $end -$var wire 32 U WD [31:0] $end -$var wire 1 V WE $end -$var parameter 32 W SIZE $end -$upscope $end -$upscope $end -$scope module instruction_decode $end -$var wire 1 X RegWrite $end -$var wire 32 Y ResultData [31:0] $end -$var wire 1 ! clk $end -$var wire 32 Z instr [31:0] $end -$var wire 1 " reset $end -$var wire 32 [ writeData [31:0] $end -$var wire 7 \ opcode [6:0] $end -$var wire 32 ] baseAddr [31:0] $end -$var wire 4 ^ ALUControl [3:0] $end -$var reg 2 _ alu_op [1:0] $end -$var reg 3 ` funct3 [2:0] $end -$var reg 7 a funct7 [6:0] $end -$var reg 32 b imm_ext [31:0] $end -$var reg 5 c rd [4:0] $end -$var reg 5 d rs1 [4:0] $end -$var reg 5 e rs2 [4:0] $end -$scope module instanceALUDec $end -$var wire 2 f alu_op [1:0] $end -$var wire 3 g funct3 [2:0] $end -$var wire 7 h funct7 [6:0] $end -$var reg 4 i alu_control [3:0] $end -$upscope $end -$scope module instanceRegFile $end -$var wire 5 j Addr1 [4:0] $end -$var wire 5 k Addr2 [4:0] $end -$var wire 5 l Addr3 [4:0] $end -$var wire 1 ! clk $end -$var wire 32 m dataIn [31:0] $end -$var wire 1 X regWrite $end -$var reg 32 n baseAddr [31:0] $end -$var reg 32 o writeData [31:0] $end -$upscope $end -$upscope $end -$upscope $end -$upscope $end -$enddefinitions $end -$comment Show the parameter values. $end -$dumpall -b10000000000 W -b11 G -b111 F -b1001 E -b1000 D -b101 C -b0 B -b10 A -b100 @ -b1 ? -b1010 > -b110 = -$end -#0 -$dumpvars -bx o -bx n -bx m -bx l -bx k -bx j -bx i -bx h -bx g -bx f -bx e -bx d -bx c -bx b -bx a -bx ` -bx _ -bx ^ -bx ] -bx \ -bx [ -bx Z -bx Y -zX -0V -bx U -bx T -bx S -bx R -bx Q -bx P -bx O -bx N -bx M -bx L -bx K -bx J -bx I -bx H -bx < -bx ; -bx : -bx 9 -bx 8 -bx 7 -bx 6 -bx 5 -bx 4 -bx 3 -bx 2 -x1 -x0 -bx / -x. -x- -x, -bx + -x* -x) -x( -bx ' -bx & -bx % -bx $ -bx # -1" -0! -$end -#5000 -1. -01 -b0 / -b0 K -0( -0) -00 -b0 R -b1 6 -b1 9 -b1 ^ -b1 i -b1 _ -b1 f -b11111111111111111111111111110100 ' -b11111111111111111111111111110100 P -b11111111111111111111111111110100 b -b100 e -b100 k -b100 d -b100 j -b0 c -b0 l -b0 a -b0 h -b0 ` -b0 g -b1100011 % -b1100011 < -b1100011 \ -b1 N -b11111110010000100000101011100011 & -b11111110010000100000101011100011 O -b11111110010000100000101011100011 T -b11111110010000100000101011100011 Z -b0 M -b0 Q -b0 S -1! -#10000 -0" -0! -#15000 -b0 5 -b0 H -b1 2 -b1 J -b1 3 -b1 I -b1 / -b1 K -1* -b0 4 -b0 ; -b1010 N -b101010 # -b101010 8 -b101010 [ -b101010 o -b101010 $ -b101010 : -b101010 ] -b101010 n -b1 M -1! -#20000 -0! -#25000 -b11111111111111111111111111110100 R -1( -1) -10 -b0 + -b0 L -b1 5 -b1 H -b0 2 -b0 J -b10 3 -b10 I -b1010 / -b1010 K -b0 N -b1010 M -1! -#30000 -0! -#35000 -b11111111111111111111111111110100 R -b0 / -b0 K -0( -0) -00 -0* -b1010100 4 -b1010100 ; -b0 6 -b0 9 -b0 ^ -b0 i -b11 _ -b11 f -b0 e -b0 k -b0 d -b0 j -bx % -bx < -bx \ -bx & -bx O -bx T -bx Z -b1 N -b11111111111111111111111111110100 Q -b11111111111111111111111111110100 S -b0 M -1! -#40000 -0! -#45000 -b0 5 -b0 H -b1 2 -b1 J -b1 3 -b1 I -b1 / -b1 K -x* -bx 4 -bx ; -b1 M -bx # -bx 8 -bx [ -bx o -bx $ -bx : -bx ] -bx n -1! -#50000 -1" -0! -#55000 -b0 R -b0 / -b0 K -b1 6 -b1 9 -b1 ^ -b1 i -b1 _ -b1 f -b10000 ' -b10000 P -b10000 b -b10 e -b10 k -b1 d -b1 j -b1100011 % -b1100011 < -b1100011 \ -b1000001000100001100011 & -b1000001000100001100011 O -b1000001000100001100011 T -b1000001000100001100011 Z -b0 Q -b0 S -b0 M -1! -#60000 -0" -0! -#65000 -b1 / -b1 K -b1010 N -0* -b11111111111111111111111111111111 4 -b11111111111111111111111111111111 ; -b1 M -b101011 # -b101011 8 -b101011 [ -b101011 o -b101010 $ -b101010 : -b101010 ] -b101010 n -1! -#70000 -0! -#75000 -b100 R -1( -10 -b1 5 -b1 H -b0 2 -b0 J -b10 3 -b10 I -b1010 / -b1010 K -b0 N -b1010 M -1! -#80000 -0! -#85000 -b0 / -b0 K -0( -00 -b100 R -b1010101 4 -b1010101 ; -b0 6 -b0 9 -b0 ^ -b0 i -b11 _ -b11 f -b0 e -b0 k -b0 d -b0 j -bx % -bx < -bx \ -b1 N -bx & -bx O -bx T -bx Z -b0 M -b100 Q -b100 S -1! -#90000 -0! -#95000 -b0 5 -b0 H -b1 2 -b1 J -b1 3 -b1 I -b1 / -b1 K -x* -bx 4 -bx ; -bx # -bx 8 -bx [ -bx o -bx $ -bx : -bx ] -bx n -b1 M -1! -#100000 -1" -0! -#105000 -b0 / -b0 K -b0 R -b1 6 -b1 9 -b1 ^ -b1 i -b10 _ -b10 f -b1 e -b1 k -b1 d -b1 j -b1 c -b1 l -b100000 a -b100000 h -b110011 % -b110011 < -b110011 \ -b1000000000100001000000010110011 & -b1000000000100001000000010110011 O -b1000000000100001000000010110011 T -b1000000000100001000000010110011 Z -b0 M -b0 Q -b0 S -1! -#110000 -0" -0! -#115000 -b1 / -b1 K -1* -b0 4 -b0 ; -b10 N -b1 # -b1 8 -b1 [ -b1 o -b1 $ -b1 : -b1 ] -b1 n -b1 M -1! -#120000 -0! -#125000 -b10 5 -b10 H -b0 2 -b0 J -b10 3 -b10 I -b10 / -b10 K -b110 N -b10 M -1! -#130000 -0! -#135000 -1, -b110 / -b110 K -b0 N -b110 M -1! -#140000 -0! diff --git a/test/fetch_tb.sv b/test/fetch_tb.sv index cfc94ea..5475784 100644 --- a/test/fetch_tb.sv +++ b/test/fetch_tb.sv @@ -3,6 +3,8 @@ `include "src/utils.svh" `include "src/types.svh" +`include "test/utils.svh" + module fetch_tb; reg clk; @@ -32,36 +34,36 @@ module fetch_tb; cfsm__pc_update <= `FALSE; cfsm__pc_src <= 0; - assert(uut.pc_cur === 32'hxxxxxxxx) else $error("`uut.pc_cur` is `%0h`", uut.pc_cur); - assert(instr === 32'hxxxxxxxx) else $error("`instr` is `%0h`", instr); + assert(uut.pc_cur === 32'hxxxxxxxx) else $fatal(1,"`uut.pc_cur` is `%0h`", uut.pc_cur); + assert(instr === 32'hxxxxxxxx) else $fatal(1,"`instr` is `%0h`", instr); reset <= `TRUE; #10; reset <= `FALSE; // pc is set at the start - assert(uut.pc_cur === 32'h00000000) else $error("`uut.pc_cur` is `%0h`", uut.pc_cur); + assert(uut.pc_cur === 32'h00000000) else $fatal(1,"`uut.pc_cur` is `%0h`", uut.pc_cur); // instruction is unknown since memory is not initialized - assert(instr === 32'hxxxxxxxx) else $error("`instr` is `%0h`", instr); + assert(instr === 32'hxxxxxxxx) else $fatal(1,"`instr` is `%0h`", instr); #10; // pc_cur has not changed since we need pc_update to be set - assert(uut.pc_cur === 32'h00000000) else $error("`uut.pc_cur` is `%0h`", uut.pc_cur); + assert(uut.pc_cur === 32'h00000000) else $fatal(1,"`uut.pc_cur` is `%0h`", uut.pc_cur); cfsm__pc_update <= `TRUE; #10; // pc_cur is updated - assert(uut.pc_cur === 32'h00000004) else $error("`uut.pc_cur` is `%0h`", uut.pc_cur); + assert(uut.pc_cur === 32'h00000004) else $fatal(1,"`uut.pc_cur` is `%0h`", uut.pc_cur); cfsm__pc_update <= `FALSE; #10; // pc_cur and pc_next are the same - assert(uut.pc_cur === 32'h00000004) else $error("`uut.pc_cur` is `%0h`", uut.pc_cur); + assert(uut.pc_cur === 32'h00000004) else $fatal(1,"`uut.pc_cur` is `%0h`", uut.pc_cur); // initialize memory uut.instruction_memory.M[0] = 32'h11223344; @@ -82,51 +84,51 @@ module fetch_tb; #10; reset <= `FALSE; - assert(uut.pc_cur === 32'h00000000) else $error("`uut.pc_cur` is `%0h`", uut.pc_cur); - assert(instr === 32'h11223344) else $error("`instr` is `%0h`", instr); + assert(uut.pc_cur === 32'h00000000) else $fatal(1,"`uut.pc_cur` is `%0h`", uut.pc_cur); + assert(instr === 32'h11223344) else $fatal(1,"`instr` is `%0h`", instr); // request another instruction cfsm__pc_update <= `TRUE; #10; // back to fetch state - assert(uut.pc_cur === 32'h00000004) else $error("`uut.pc_cur` is `%0h`", uut.pc_cur); - assert(instr === 32'h55667788) else $error("`instr` is `%0h`", instr); + assert(uut.pc_cur === 32'h00000004) else $fatal(1,"`uut.pc_cur` is `%0h`", uut.pc_cur); + assert(instr === 32'h55667788) else $fatal(1,"`instr` is `%0h`", instr); #10; - assert(uut.pc_cur === 32'h00000008) else $error("`uut.pc_cur` is `%0h`", uut.pc_cur); - assert(instr === 32'h99aabbcc) else $error("`instr` is `%0h`", instr); + assert(uut.pc_cur === 32'h00000008) else $fatal(1,"`uut.pc_cur` is `%0h`", uut.pc_cur); + assert(instr === 32'h99aabbcc) else $fatal(1,"`instr` is `%0h`", instr); #10; - assert(uut.pc_cur === 32'h0000000c) else $error("`uut.pc_cur` is `%0h`", uut.pc_cur); - assert(instr === 32'hddeeff00) else $error("`instr` is `%0h`", instr); + assert(uut.pc_cur === 32'h0000000c) else $fatal(1,"`uut.pc_cur` is `%0h`", uut.pc_cur); + assert(instr === 32'hddeeff00) else $fatal(1,"`instr` is `%0h`", instr); #10170; - assert(uut.pc_cur === 32'h00000ff0) else $error("`uut.pc_cur` is `%0h`", uut.pc_cur); - assert(instr === 32'hdeadbeef) else $error("`instr` is `%0h`", instr); + assert(uut.pc_cur === 32'h00000ff0) else $fatal(1,"`uut.pc_cur` is `%0h`", uut.pc_cur); + assert(instr === 32'hdeadbeef) else $fatal(1,"`instr` is `%0h`", instr); #10; - assert(uut.pc_cur === 32'h00000ff4) else $error("`uut.pc_cur` is `%0h`", uut.pc_cur); - assert(instr === 32'hfeedface) else $error("`instr` is `%0h`", instr); + assert(uut.pc_cur === 32'h00000ff4) else $fatal(1,"`uut.pc_cur` is `%0h`", uut.pc_cur); + assert(instr === 32'hfeedface) else $fatal(1,"`instr` is `%0h`", instr); #10; - assert(uut.pc_cur === 32'h00000ff8) else $error("`uut.pc_cur` is `%0h`", uut.pc_cur); - assert(instr === 32'hcafebabe) else $error("`instr` is `%0h`", instr); + assert(uut.pc_cur === 32'h00000ff8) else $fatal(1,"`uut.pc_cur` is `%0h`", uut.pc_cur); + assert(instr === 32'hcafebabe) else $fatal(1,"`instr` is `%0h`", instr); #10; - assert(uut.pc_cur === 32'h00000ffc) else $error("`uut.pc_cur` is `%0h`", uut.pc_cur); - assert(instr === 32'hf00dcafe) else $error("`instr` is `%0h`", instr); + assert(uut.pc_cur === 32'h00000ffc) else $fatal(1,"`uut.pc_cur` is `%0h`", uut.pc_cur); + assert(instr === 32'hf00dcafe) else $fatal(1,"`instr` is `%0h`", instr); #10; // out of memory - assert(uut.pc_cur === 32'h00001000) else $error("`uut.pc_cur` is `%0h`", uut.pc_cur); - assert(instr === 32'hxxxxxxxx) else $error("`instr` is `%0h`", instr); + assert(uut.pc_cur === 32'h00001000) else $fatal(1,"`uut.pc_cur` is `%0h`", uut.pc_cur); + assert(instr === 32'hxxxxxxxx) else $fatal(1,"`instr` is `%0h`", instr); reset <= `TRUE; #10; @@ -144,48 +146,46 @@ module fetch_tb; #10; - assert(uut.pc_cur === 32'h00000100) else $error("`uut.pc_cur` is `%0h`", uut.pc_cur); - assert(instr === 32'hdeadbeef) else $error("`instr` is `%0h`", instr); + assert(uut.pc_cur === 32'h00000100) else $fatal(1,"`uut.pc_cur` is `%0h`", uut.pc_cur); + assert(instr === 32'hdeadbeef) else $fatal(1,"`instr` is `%0h`", instr); #10; - assert(uut.pc_cur === 32'h00000200) else $error("`uut.pc_cur` is `%0h`", uut.pc_cur); - assert(instr === 32'hf00dcafe) else $error("`instr` is `%0h`", instr); + assert(uut.pc_cur === 32'h00000200) else $fatal(1,"`uut.pc_cur` is `%0h`", uut.pc_cur); + assert(instr === 32'hf00dcafe) else $fatal(1,"`instr` is `%0h`", instr); cfsm__pc_src <= 0; #10; - assert(uut.pc_cur === 32'h00000204) else $error("`uut.pc_cur` is `%0h`", uut.pc_cur); - assert(instr === 32'hd00dfafe) else $error("`instr` is `%0h`", instr); + assert(uut.pc_cur === 32'h00000204) else $fatal(1,"`uut.pc_cur` is `%0h`", uut.pc_cur); + assert(instr === 32'hd00dfafe) else $fatal(1,"`instr` is `%0h`", instr); imm_ext <= 32'h00002000; // out of memory bounds cfsm__pc_src <= 1; #10; - assert(uut.pc_cur === 32'h00002204) else $error("`uut.pc_cur` is `%0h`", uut.pc_cur); - assert(instr === 32'hxxxxxxxx) else $error("`instr` is `%0h`", instr); + assert(uut.pc_cur === 32'h00002204) else $fatal(1,"`uut.pc_cur` is `%0h`", uut.pc_cur); + assert(instr === 32'hxxxxxxxx) else $fatal(1,"`instr` is `%0h`", instr); imm_ext <= 32'h0; // zero jump #10; - assert(uut.pc_cur === 32'h00002204) else $error("`uut.pc_cur` is `%0h`", uut.pc_cur); - assert(instr === 32'hxxxxxxxx) else $error("`instr` is `%0h`", instr); + assert(uut.pc_cur === 32'h00002204) else $fatal(1,"`uut.pc_cur` is `%0h`", uut.pc_cur); + assert(instr === 32'hxxxxxxxx) else $fatal(1,"`instr` is `%0h`", instr); imm_ext <= -32'd1; // negative jump #10; - assert(uut.pc_cur === 32'h00002203) else $error("`uut.pc_cur` is `%0h`", uut.pc_cur); - assert(instr === 32'hxxxxxxxx) else $error("`instr` is `%0h`", instr); + assert(uut.pc_cur === 32'h00002203) else $fatal(1,"`uut.pc_cur` is `%0h`", uut.pc_cur); + assert(instr === 32'hxxxxxxxx) else $fatal(1,"`instr` is `%0h`", instr); $finish; end - initial begin - $dumpfile("test/fetch_tb.vcd"); - $dumpvars(0, fetch_tb); - end + `SETUP_VCD_DUMP(fetch_tb) + endmodule diff --git a/test/fetch_tb.vcd b/test/fetch_tb.vcd deleted file mode 100644 index 22eedad..0000000 --- a/test/fetch_tb.vcd +++ /dev/null @@ -1,7380 +0,0 @@ -$date - Thu Jun 5 04:15:54 2025 -$end -$version - Icarus Verilog -$end -$timescale - 1ps -$end -$scope module fetch_tb $end -$var wire 32 ! instr [31:0] $end -$var reg 1 " cfsm__pc_src $end -$var reg 1 # cfsm__pc_update $end -$var reg 1 $ clk $end -$var reg 32 % imm_ext [31:0] $end -$var reg 1 & reset $end -$scope module uut $end -$var wire 1 " cfsm__pc_src $end -$var wire 1 # cfsm__pc_update $end -$var wire 1 $ clk $end -$var wire 32 ' imm_ext [31:0] $end -$var wire 1 & reset $end -$var wire 32 ( instr [31:0] $end -$var reg 32 ) pc_cur [31:0] $end -$var reg 32 * pc_next [31:0] $end -$scope module instruction_memory $end -$var wire 32 + A [31:0] $end -$var wire 1 $ CLK $end -$var wire 32 , RD [31:0] $end -$var wire 32 - WD [31:0] $end -$var wire 1 . WE $end -$var parameter 32 / SIZE $end -$upscope $end -$upscope $end -$scope begin $ivl_for_loop0 $end -$var integer 32 0 i [31:0] $end -$upscope $end -$upscope $end -$enddefinitions $end -$comment Show the parameter values. $end -$dumpall -b10000000000 / -$end -#0 -$dumpvars -b0 0 -0. -bx - -bx , -bx + -bx * -bx ) -bx ( -bx ' -1& -bx % -0$ -0# -0" -bx ! -$end -#5000 -b0 * -b0 ) -b0 + -1$ -#10000 -0& -0$ -#15000 -1$ -#20000 -b100 * -1# -0$ -#25000 -b1000 * -b100 ) -b100 + -1$ -#30000 -b100 * -0# -0$ -#35000 -1$ -#40000 -1& -0$ -b1111111100 0 -b1010101011001100111011110001000 ! -b1010101011001100111011110001000 ( -b1010101011001100111011110001000 , -#45000 -b0 * -b10001001000100011001101000100 ! -b10001001000100011001101000100 ( -b10001001000100011001101000100 , -b0 ) -b0 + -1$ -#50000 -b100 * -1# -0& -0$ -#55000 -b1000 * -b1010101011001100111011110001000 ! -b1010101011001100111011110001000 ( -b1010101011001100111011110001000 , -b100 ) -b100 + -1$ -#60000 -0$ -#65000 -b1100 * -b10011001101010101011101111001100 ! -b10011001101010101011101111001100 ( -b10011001101010101011101111001100 , -b1000 ) -b1000 + -1$ -#70000 -0$ -#75000 -b10000 * -b11011101111011101111111100000000 ! -b11011101111011101111111100000000 ( -b11011101111011101111111100000000 , -b1100 ) -b1100 + -1$ -#80000 -0$ -#85000 -b10100 * -b0 ! -b0 ( -b0 , -b10000 ) -b10000 + -1$ -#90000 -0$ -#95000 -b11000 * -b10100 ) -b10100 + -1$ -#100000 -0$ -#105000 -b11100 * -b11000 ) -b11000 + -1$ -#110000 -0$ -#115000 -b100000 * -b11100 ) -b11100 + -1$ -#120000 -0$ -#125000 -b100100 * -b100000 ) -b100000 + -1$ -#130000 -0$ -#135000 -b101000 * -b100100 ) -b100100 + -1$ -#140000 -0$ -#145000 -b101100 * -b101000 ) -b101000 + -1$ -#150000 -0$ -#155000 -b110000 * -b101100 ) -b101100 + -1$ -#160000 -0$ -#165000 -b110100 * -b110000 ) -b110000 + -1$ -#170000 -0$ -#175000 -b111000 * -b110100 ) -b110100 + -1$ -#180000 -0$ -#185000 -b111100 * -b111000 ) -b111000 + -1$ -#190000 -0$ -#195000 -b1000000 * -b111100 ) -b111100 + -1$ -#200000 -0$ -#205000 -b1000100 * -b1000000 ) -b1000000 + -1$ -#210000 -0$ -#215000 -b1001000 * -b1000100 ) -b1000100 + -1$ -#220000 -0$ -#225000 -b1001100 * -b1001000 ) -b1001000 + -1$ -#230000 -0$ -#235000 -b1010000 * -b1001100 ) -b1001100 + -1$ -#240000 -0$ -#245000 -b1010100 * -b1010000 ) -b1010000 + -1$ -#250000 -0$ -#255000 -b1011000 * -b1010100 ) -b1010100 + -1$ -#260000 -0$ -#265000 -b1011100 * -b1011000 ) -b1011000 + -1$ -#270000 -0$ -#275000 -b1100000 * -b1011100 ) -b1011100 + -1$ -#280000 -0$ -#285000 -b1100100 * -b1100000 ) -b1100000 + -1$ -#290000 -0$ -#295000 -b1101000 * -b1100100 ) -b1100100 + -1$ -#300000 -0$ -#305000 -b1101100 * -b1101000 ) -b1101000 + -1$ -#310000 -0$ -#315000 -b1110000 * -b1101100 ) -b1101100 + -1$ -#320000 -0$ -#325000 -b1110100 * -b1110000 ) -b1110000 + -1$ -#330000 -0$ -#335000 -b1111000 * -b1110100 ) -b1110100 + -1$ -#340000 -0$ -#345000 -b1111100 * -b1111000 ) -b1111000 + -1$ -#350000 -0$ -#355000 -b10000000 * -b1111100 ) -b1111100 + -1$ -#360000 -0$ -#365000 -b10000100 * -b10000000 ) -b10000000 + -1$ -#370000 -0$ -#375000 -b10001000 * -b10000100 ) -b10000100 + -1$ -#380000 -0$ -#385000 -b10001100 * -b10001000 ) -b10001000 + -1$ -#390000 -0$ -#395000 -b10010000 * -b10001100 ) -b10001100 + -1$ -#400000 -0$ -#405000 -b10010100 * -b10010000 ) -b10010000 + -1$ -#410000 -0$ -#415000 -b10011000 * -b10010100 ) -b10010100 + -1$ -#420000 -0$ -#425000 -b10011100 * -b10011000 ) -b10011000 + -1$ -#430000 -0$ -#435000 -b10100000 * -b10011100 ) -b10011100 + -1$ -#440000 -0$ -#445000 -b10100100 * -b10100000 ) -b10100000 + -1$ -#450000 -0$ -#455000 -b10101000 * -b10100100 ) -b10100100 + -1$ -#460000 -0$ -#465000 -b10101100 * -b10101000 ) -b10101000 + -1$ -#470000 -0$ -#475000 -b10110000 * -b10101100 ) -b10101100 + -1$ -#480000 -0$ -#485000 -b10110100 * -b10110000 ) -b10110000 + -1$ -#490000 -0$ -#495000 -b10111000 * -b10110100 ) -b10110100 + -1$ -#500000 -0$ -#505000 -b10111100 * -b10111000 ) -b10111000 + -1$ -#510000 -0$ -#515000 -b11000000 * -b10111100 ) -b10111100 + -1$ -#520000 -0$ -#525000 -b11000100 * -b11000000 ) -b11000000 + -1$ -#530000 -0$ -#535000 -b11001000 * -b11000100 ) -b11000100 + -1$ -#540000 -0$ -#545000 -b11001100 * -b11001000 ) -b11001000 + -1$ -#550000 -0$ -#555000 -b11010000 * -b11001100 ) -b11001100 + -1$ -#560000 -0$ -#565000 -b11010100 * -b11010000 ) -b11010000 + -1$ -#570000 -0$ -#575000 -b11011000 * -b11010100 ) -b11010100 + -1$ -#580000 -0$ -#585000 -b11011100 * -b11011000 ) -b11011000 + -1$ -#590000 -0$ -#595000 -b11100000 * -b11011100 ) -b11011100 + -1$ -#600000 -0$ -#605000 -b11100100 * -b11100000 ) -b11100000 + -1$ -#610000 -0$ -#615000 -b11101000 * -b11100100 ) -b11100100 + -1$ -#620000 -0$ -#625000 -b11101100 * -b11101000 ) -b11101000 + -1$ -#630000 -0$ -#635000 -b11110000 * -b11101100 ) -b11101100 + -1$ -#640000 -0$ -#645000 -b11110100 * -b11110000 ) -b11110000 + -1$ -#650000 -0$ -#655000 -b11111000 * -b11110100 ) -b11110100 + -1$ -#660000 -0$ -#665000 -b11111100 * -b11111000 ) -b11111000 + -1$ -#670000 -0$ -#675000 -b100000000 * -b11111100 ) -b11111100 + -1$ -#680000 -0$ -#685000 -b100000100 * -b100000000 ) -b100000000 + -1$ -#690000 -0$ -#695000 -b100001000 * -b100000100 ) -b100000100 + -1$ -#700000 -0$ -#705000 -b100001100 * -b100001000 ) -b100001000 + -1$ -#710000 -0$ -#715000 -b100010000 * -b100001100 ) -b100001100 + -1$ -#720000 -0$ -#725000 -b100010100 * -b100010000 ) -b100010000 + -1$ -#730000 -0$ -#735000 -b100011000 * -b100010100 ) -b100010100 + -1$ -#740000 -0$ -#745000 -b100011100 * -b100011000 ) -b100011000 + -1$ -#750000 -0$ -#755000 -b100100000 * -b100011100 ) -b100011100 + -1$ -#760000 -0$ -#765000 -b100100100 * -b100100000 ) -b100100000 + -1$ -#770000 -0$ -#775000 -b100101000 * -b100100100 ) -b100100100 + -1$ -#780000 -0$ -#785000 -b100101100 * -b100101000 ) -b100101000 + -1$ -#790000 -0$ -#795000 -b100110000 * -b100101100 ) -b100101100 + -1$ -#800000 -0$ -#805000 -b100110100 * -b100110000 ) -b100110000 + -1$ -#810000 -0$ -#815000 -b100111000 * -b100110100 ) -b100110100 + -1$ -#820000 -0$ -#825000 -b100111100 * -b100111000 ) -b100111000 + -1$ -#830000 -0$ -#835000 -b101000000 * -b100111100 ) -b100111100 + -1$ -#840000 -0$ -#845000 -b101000100 * -b101000000 ) -b101000000 + -1$ -#850000 -0$ -#855000 -b101001000 * -b101000100 ) -b101000100 + -1$ -#860000 -0$ -#865000 -b101001100 * -b101001000 ) -b101001000 + -1$ -#870000 -0$ -#875000 -b101010000 * -b101001100 ) -b101001100 + -1$ -#880000 -0$ -#885000 -b101010100 * -b101010000 ) -b101010000 + -1$ -#890000 -0$ -#895000 -b101011000 * -b101010100 ) -b101010100 + -1$ -#900000 -0$ -#905000 -b101011100 * -b101011000 ) -b101011000 + -1$ -#910000 -0$ -#915000 -b101100000 * -b101011100 ) -b101011100 + -1$ -#920000 -0$ -#925000 -b101100100 * -b101100000 ) -b101100000 + -1$ -#930000 -0$ -#935000 -b101101000 * -b101100100 ) -b101100100 + -1$ -#940000 -0$ -#945000 -b101101100 * -b101101000 ) -b101101000 + -1$ -#950000 -0$ -#955000 -b101110000 * -b101101100 ) -b101101100 + -1$ -#960000 -0$ -#965000 -b101110100 * -b101110000 ) -b101110000 + -1$ -#970000 -0$ -#975000 -b101111000 * -b101110100 ) -b101110100 + -1$ -#980000 -0$ -#985000 -b101111100 * -b101111000 ) -b101111000 + -1$ -#990000 -0$ -#995000 -b110000000 * -b101111100 ) -b101111100 + -1$ -#1000000 -0$ -#1005000 -b110000100 * -b110000000 ) -b110000000 + -1$ -#1010000 -0$ -#1015000 -b110001000 * -b110000100 ) -b110000100 + -1$ -#1020000 -0$ -#1025000 -b110001100 * -b110001000 ) -b110001000 + -1$ -#1030000 -0$ -#1035000 -b110010000 * -b110001100 ) -b110001100 + -1$ -#1040000 -0$ -#1045000 -b110010100 * -b110010000 ) -b110010000 + -1$ -#1050000 -0$ -#1055000 -b110011000 * -b110010100 ) -b110010100 + -1$ -#1060000 -0$ -#1065000 -b110011100 * -b110011000 ) -b110011000 + -1$ -#1070000 -0$ -#1075000 -b110100000 * -b110011100 ) -b110011100 + -1$ -#1080000 -0$ -#1085000 -b110100100 * -b110100000 ) -b110100000 + -1$ -#1090000 -0$ -#1095000 -b110101000 * -b110100100 ) -b110100100 + -1$ -#1100000 -0$ -#1105000 -b110101100 * -b110101000 ) -b110101000 + -1$ -#1110000 -0$ -#1115000 -b110110000 * -b110101100 ) -b110101100 + -1$ -#1120000 -0$ -#1125000 -b110110100 * -b110110000 ) -b110110000 + -1$ -#1130000 -0$ -#1135000 -b110111000 * -b110110100 ) -b110110100 + -1$ -#1140000 -0$ -#1145000 -b110111100 * -b110111000 ) -b110111000 + -1$ -#1150000 -0$ -#1155000 -b111000000 * -b110111100 ) -b110111100 + -1$ -#1160000 -0$ -#1165000 -b111000100 * -b111000000 ) -b111000000 + -1$ -#1170000 -0$ -#1175000 -b111001000 * -b111000100 ) -b111000100 + -1$ -#1180000 -0$ -#1185000 -b111001100 * -b111001000 ) -b111001000 + -1$ -#1190000 -0$ -#1195000 -b111010000 * -b111001100 ) -b111001100 + -1$ -#1200000 -0$ -#1205000 -b111010100 * -b111010000 ) -b111010000 + -1$ -#1210000 -0$ -#1215000 -b111011000 * -b111010100 ) -b111010100 + -1$ -#1220000 -0$ -#1225000 -b111011100 * -b111011000 ) -b111011000 + -1$ -#1230000 -0$ -#1235000 -b111100000 * -b111011100 ) -b111011100 + -1$ -#1240000 -0$ -#1245000 -b111100100 * -b111100000 ) -b111100000 + -1$ -#1250000 -0$ -#1255000 -b111101000 * -b111100100 ) -b111100100 + -1$ -#1260000 -0$ -#1265000 -b111101100 * -b111101000 ) -b111101000 + -1$ -#1270000 -0$ -#1275000 -b111110000 * -b111101100 ) -b111101100 + -1$ -#1280000 -0$ -#1285000 -b111110100 * -b111110000 ) -b111110000 + -1$ -#1290000 -0$ -#1295000 -b111111000 * -b111110100 ) -b111110100 + -1$ -#1300000 -0$ -#1305000 -b111111100 * -b111111000 ) -b111111000 + -1$ -#1310000 -0$ -#1315000 -b1000000000 * -b111111100 ) -b111111100 + -1$ -#1320000 -0$ -#1325000 -b1000000100 * -b1000000000 ) -b1000000000 + -1$ -#1330000 -0$ -#1335000 -b1000001000 * -b1000000100 ) -b1000000100 + -1$ -#1340000 -0$ -#1345000 -b1000001100 * -b1000001000 ) -b1000001000 + -1$ -#1350000 -0$ -#1355000 -b1000010000 * -b1000001100 ) -b1000001100 + -1$ -#1360000 -0$ -#1365000 -b1000010100 * -b1000010000 ) -b1000010000 + -1$ -#1370000 -0$ -#1375000 -b1000011000 * -b1000010100 ) -b1000010100 + -1$ -#1380000 -0$ -#1385000 -b1000011100 * -b1000011000 ) -b1000011000 + -1$ -#1390000 -0$ -#1395000 -b1000100000 * -b1000011100 ) -b1000011100 + -1$ -#1400000 -0$ -#1405000 -b1000100100 * -b1000100000 ) -b1000100000 + -1$ -#1410000 -0$ -#1415000 -b1000101000 * -b1000100100 ) -b1000100100 + -1$ -#1420000 -0$ -#1425000 -b1000101100 * -b1000101000 ) -b1000101000 + -1$ -#1430000 -0$ -#1435000 -b1000110000 * -b1000101100 ) -b1000101100 + -1$ -#1440000 -0$ -#1445000 -b1000110100 * -b1000110000 ) -b1000110000 + -1$ -#1450000 -0$ -#1455000 -b1000111000 * -b1000110100 ) -b1000110100 + -1$ -#1460000 -0$ -#1465000 -b1000111100 * -b1000111000 ) -b1000111000 + -1$ -#1470000 -0$ -#1475000 -b1001000000 * -b1000111100 ) -b1000111100 + -1$ -#1480000 -0$ -#1485000 -b1001000100 * -b1001000000 ) -b1001000000 + -1$ -#1490000 -0$ -#1495000 -b1001001000 * -b1001000100 ) -b1001000100 + -1$ -#1500000 -0$ -#1505000 -b1001001100 * -b1001001000 ) -b1001001000 + -1$ -#1510000 -0$ -#1515000 -b1001010000 * -b1001001100 ) -b1001001100 + -1$ -#1520000 -0$ -#1525000 -b1001010100 * -b1001010000 ) -b1001010000 + -1$ -#1530000 -0$ -#1535000 -b1001011000 * -b1001010100 ) -b1001010100 + -1$ -#1540000 -0$ -#1545000 -b1001011100 * -b1001011000 ) -b1001011000 + -1$ -#1550000 -0$ -#1555000 -b1001100000 * -b1001011100 ) -b1001011100 + -1$ -#1560000 -0$ -#1565000 -b1001100100 * -b1001100000 ) -b1001100000 + -1$ -#1570000 -0$ -#1575000 -b1001101000 * -b1001100100 ) -b1001100100 + -1$ -#1580000 -0$ -#1585000 -b1001101100 * -b1001101000 ) -b1001101000 + -1$ -#1590000 -0$ -#1595000 -b1001110000 * -b1001101100 ) -b1001101100 + -1$ -#1600000 -0$ -#1605000 -b1001110100 * -b1001110000 ) -b1001110000 + -1$ -#1610000 -0$ -#1615000 -b1001111000 * -b1001110100 ) -b1001110100 + -1$ -#1620000 -0$ -#1625000 -b1001111100 * -b1001111000 ) -b1001111000 + -1$ -#1630000 -0$ -#1635000 -b1010000000 * -b1001111100 ) -b1001111100 + -1$ -#1640000 -0$ -#1645000 -b1010000100 * -b1010000000 ) -b1010000000 + -1$ -#1650000 -0$ -#1655000 -b1010001000 * -b1010000100 ) -b1010000100 + -1$ -#1660000 -0$ -#1665000 -b1010001100 * -b1010001000 ) -b1010001000 + -1$ -#1670000 -0$ -#1675000 -b1010010000 * -b1010001100 ) -b1010001100 + -1$ -#1680000 -0$ -#1685000 -b1010010100 * -b1010010000 ) -b1010010000 + -1$ -#1690000 -0$ -#1695000 -b1010011000 * -b1010010100 ) -b1010010100 + -1$ -#1700000 -0$ -#1705000 -b1010011100 * -b1010011000 ) -b1010011000 + -1$ -#1710000 -0$ -#1715000 -b1010100000 * -b1010011100 ) -b1010011100 + -1$ -#1720000 -0$ -#1725000 -b1010100100 * -b1010100000 ) -b1010100000 + -1$ -#1730000 -0$ -#1735000 -b1010101000 * -b1010100100 ) -b1010100100 + -1$ -#1740000 -0$ -#1745000 -b1010101100 * -b1010101000 ) -b1010101000 + -1$ -#1750000 -0$ -#1755000 -b1010110000 * -b1010101100 ) -b1010101100 + -1$ -#1760000 -0$ -#1765000 -b1010110100 * -b1010110000 ) -b1010110000 + -1$ -#1770000 -0$ -#1775000 -b1010111000 * -b1010110100 ) -b1010110100 + -1$ -#1780000 -0$ -#1785000 -b1010111100 * -b1010111000 ) -b1010111000 + -1$ -#1790000 -0$ -#1795000 -b1011000000 * -b1010111100 ) -b1010111100 + -1$ -#1800000 -0$ -#1805000 -b1011000100 * -b1011000000 ) -b1011000000 + -1$ -#1810000 -0$ -#1815000 -b1011001000 * -b1011000100 ) -b1011000100 + -1$ -#1820000 -0$ -#1825000 -b1011001100 * -b1011001000 ) -b1011001000 + -1$ -#1830000 -0$ -#1835000 -b1011010000 * -b1011001100 ) -b1011001100 + -1$ -#1840000 -0$ -#1845000 -b1011010100 * -b1011010000 ) -b1011010000 + -1$ -#1850000 -0$ -#1855000 -b1011011000 * -b1011010100 ) -b1011010100 + -1$ -#1860000 -0$ -#1865000 -b1011011100 * -b1011011000 ) -b1011011000 + -1$ -#1870000 -0$ -#1875000 -b1011100000 * -b1011011100 ) -b1011011100 + -1$ -#1880000 -0$ -#1885000 -b1011100100 * -b1011100000 ) -b1011100000 + -1$ -#1890000 -0$ -#1895000 -b1011101000 * -b1011100100 ) -b1011100100 + -1$ -#1900000 -0$ -#1905000 -b1011101100 * -b1011101000 ) -b1011101000 + -1$ -#1910000 -0$ -#1915000 -b1011110000 * -b1011101100 ) -b1011101100 + -1$ -#1920000 -0$ -#1925000 -b1011110100 * -b1011110000 ) -b1011110000 + -1$ -#1930000 -0$ -#1935000 -b1011111000 * -b1011110100 ) -b1011110100 + -1$ -#1940000 -0$ -#1945000 -b1011111100 * -b1011111000 ) -b1011111000 + -1$ -#1950000 -0$ -#1955000 -b1100000000 * -b1011111100 ) -b1011111100 + -1$ -#1960000 -0$ -#1965000 -b1100000100 * -b1100000000 ) -b1100000000 + -1$ -#1970000 -0$ -#1975000 -b1100001000 * -b1100000100 ) -b1100000100 + -1$ -#1980000 -0$ -#1985000 -b1100001100 * -b1100001000 ) -b1100001000 + -1$ -#1990000 -0$ -#1995000 -b1100010000 * -b1100001100 ) -b1100001100 + -1$ -#2000000 -0$ -#2005000 -b1100010100 * -b1100010000 ) -b1100010000 + -1$ -#2010000 -0$ -#2015000 -b1100011000 * -b1100010100 ) -b1100010100 + -1$ -#2020000 -0$ -#2025000 -b1100011100 * -b1100011000 ) -b1100011000 + -1$ -#2030000 -0$ -#2035000 -b1100100000 * -b1100011100 ) -b1100011100 + -1$ -#2040000 -0$ -#2045000 -b1100100100 * -b1100100000 ) -b1100100000 + -1$ -#2050000 -0$ -#2055000 -b1100101000 * -b1100100100 ) -b1100100100 + -1$ -#2060000 -0$ -#2065000 -b1100101100 * -b1100101000 ) -b1100101000 + -1$ -#2070000 -0$ -#2075000 -b1100110000 * -b1100101100 ) -b1100101100 + -1$ -#2080000 -0$ -#2085000 -b1100110100 * -b1100110000 ) -b1100110000 + -1$ -#2090000 -0$ -#2095000 -b1100111000 * -b1100110100 ) -b1100110100 + -1$ -#2100000 -0$ -#2105000 -b1100111100 * -b1100111000 ) -b1100111000 + -1$ -#2110000 -0$ -#2115000 -b1101000000 * -b1100111100 ) -b1100111100 + -1$ -#2120000 -0$ -#2125000 -b1101000100 * -b1101000000 ) -b1101000000 + -1$ -#2130000 -0$ -#2135000 -b1101001000 * -b1101000100 ) -b1101000100 + -1$ -#2140000 -0$ -#2145000 -b1101001100 * -b1101001000 ) -b1101001000 + -1$ -#2150000 -0$ -#2155000 -b1101010000 * -b1101001100 ) -b1101001100 + -1$ -#2160000 -0$ -#2165000 -b1101010100 * -b1101010000 ) -b1101010000 + -1$ -#2170000 -0$ -#2175000 -b1101011000 * -b1101010100 ) -b1101010100 + -1$ -#2180000 -0$ -#2185000 -b1101011100 * -b1101011000 ) -b1101011000 + -1$ -#2190000 -0$ -#2195000 -b1101100000 * -b1101011100 ) -b1101011100 + -1$ -#2200000 -0$ -#2205000 -b1101100100 * -b1101100000 ) -b1101100000 + -1$ -#2210000 -0$ -#2215000 -b1101101000 * -b1101100100 ) -b1101100100 + -1$ -#2220000 -0$ -#2225000 -b1101101100 * -b1101101000 ) -b1101101000 + -1$ -#2230000 -0$ -#2235000 -b1101110000 * -b1101101100 ) -b1101101100 + -1$ -#2240000 -0$ -#2245000 -b1101110100 * -b1101110000 ) -b1101110000 + -1$ -#2250000 -0$ -#2255000 -b1101111000 * -b1101110100 ) -b1101110100 + -1$ -#2260000 -0$ -#2265000 -b1101111100 * -b1101111000 ) -b1101111000 + -1$ -#2270000 -0$ -#2275000 -b1110000000 * -b1101111100 ) -b1101111100 + -1$ -#2280000 -0$ -#2285000 -b1110000100 * -b1110000000 ) -b1110000000 + -1$ -#2290000 -0$ -#2295000 -b1110001000 * -b1110000100 ) -b1110000100 + -1$ -#2300000 -0$ -#2305000 -b1110001100 * -b1110001000 ) -b1110001000 + -1$ -#2310000 -0$ -#2315000 -b1110010000 * -b1110001100 ) -b1110001100 + -1$ -#2320000 -0$ -#2325000 -b1110010100 * -b1110010000 ) -b1110010000 + -1$ -#2330000 -0$ -#2335000 -b1110011000 * -b1110010100 ) -b1110010100 + -1$ -#2340000 -0$ -#2345000 -b1110011100 * -b1110011000 ) -b1110011000 + -1$ -#2350000 -0$ -#2355000 -b1110100000 * -b1110011100 ) -b1110011100 + -1$ -#2360000 -0$ -#2365000 -b1110100100 * -b1110100000 ) -b1110100000 + -1$ -#2370000 -0$ -#2375000 -b1110101000 * -b1110100100 ) -b1110100100 + -1$ -#2380000 -0$ -#2385000 -b1110101100 * -b1110101000 ) -b1110101000 + -1$ -#2390000 -0$ -#2395000 -b1110110000 * -b1110101100 ) -b1110101100 + -1$ -#2400000 -0$ -#2405000 -b1110110100 * -b1110110000 ) -b1110110000 + -1$ -#2410000 -0$ -#2415000 -b1110111000 * -b1110110100 ) -b1110110100 + -1$ -#2420000 -0$ -#2425000 -b1110111100 * -b1110111000 ) -b1110111000 + -1$ -#2430000 -0$ -#2435000 -b1111000000 * -b1110111100 ) -b1110111100 + -1$ -#2440000 -0$ -#2445000 -b1111000100 * -b1111000000 ) -b1111000000 + -1$ -#2450000 -0$ -#2455000 -b1111001000 * -b1111000100 ) -b1111000100 + -1$ -#2460000 -0$ -#2465000 -b1111001100 * -b1111001000 ) -b1111001000 + -1$ -#2470000 -0$ -#2475000 -b1111010000 * -b1111001100 ) -b1111001100 + -1$ -#2480000 -0$ -#2485000 -b1111010100 * -b1111010000 ) -b1111010000 + -1$ -#2490000 -0$ -#2495000 -b1111011000 * -b1111010100 ) -b1111010100 + -1$ -#2500000 -0$ -#2505000 -b1111011100 * -b1111011000 ) -b1111011000 + -1$ -#2510000 -0$ -#2515000 -b1111100000 * -b1111011100 ) -b1111011100 + -1$ -#2520000 -0$ -#2525000 -b1111100100 * -b1111100000 ) -b1111100000 + -1$ -#2530000 -0$ -#2535000 -b1111101000 * -b1111100100 ) -b1111100100 + -1$ -#2540000 -0$ -#2545000 -b1111101100 * -b1111101000 ) -b1111101000 + -1$ -#2550000 -0$ -#2555000 -b1111110000 * -b1111101100 ) -b1111101100 + -1$ -#2560000 -0$ -#2565000 -b1111110100 * -b1111110000 ) -b1111110000 + -1$ -#2570000 -0$ -#2575000 -b1111111000 * -b1111110100 ) -b1111110100 + -1$ -#2580000 -0$ -#2585000 -b1111111100 * -b1111111000 ) -b1111111000 + -1$ -#2590000 -0$ -#2595000 -b10000000000 * -b1111111100 ) -b1111111100 + -1$ -#2600000 -0$ -#2605000 -b10000000100 * -b10000000000 ) -b10000000000 + -1$ -#2610000 -0$ -#2615000 -b10000001000 * -b10000000100 ) -b10000000100 + -1$ -#2620000 -0$ -#2625000 -b10000001100 * -b10000001000 ) -b10000001000 + -1$ -#2630000 -0$ -#2635000 -b10000010000 * -b10000001100 ) -b10000001100 + -1$ -#2640000 -0$ -#2645000 -b10000010100 * -b10000010000 ) -b10000010000 + -1$ -#2650000 -0$ -#2655000 -b10000011000 * -b10000010100 ) -b10000010100 + -1$ -#2660000 -0$ -#2665000 -b10000011100 * -b10000011000 ) -b10000011000 + -1$ -#2670000 -0$ -#2675000 -b10000100000 * -b10000011100 ) -b10000011100 + -1$ -#2680000 -0$ -#2685000 -b10000100100 * -b10000100000 ) -b10000100000 + -1$ -#2690000 -0$ -#2695000 -b10000101000 * -b10000100100 ) -b10000100100 + -1$ -#2700000 -0$ -#2705000 -b10000101100 * -b10000101000 ) -b10000101000 + -1$ -#2710000 -0$ -#2715000 -b10000110000 * -b10000101100 ) -b10000101100 + -1$ -#2720000 -0$ -#2725000 -b10000110100 * -b10000110000 ) -b10000110000 + -1$ -#2730000 -0$ -#2735000 -b10000111000 * -b10000110100 ) -b10000110100 + -1$ -#2740000 -0$ -#2745000 -b10000111100 * -b10000111000 ) -b10000111000 + -1$ -#2750000 -0$ -#2755000 -b10001000000 * -b10000111100 ) -b10000111100 + -1$ -#2760000 -0$ -#2765000 -b10001000100 * -b10001000000 ) -b10001000000 + -1$ -#2770000 -0$ -#2775000 -b10001001000 * -b10001000100 ) -b10001000100 + -1$ -#2780000 -0$ -#2785000 -b10001001100 * -b10001001000 ) -b10001001000 + -1$ -#2790000 -0$ -#2795000 -b10001010000 * -b10001001100 ) -b10001001100 + -1$ -#2800000 -0$ -#2805000 -b10001010100 * -b10001010000 ) -b10001010000 + -1$ -#2810000 -0$ -#2815000 -b10001011000 * -b10001010100 ) -b10001010100 + -1$ -#2820000 -0$ -#2825000 -b10001011100 * -b10001011000 ) -b10001011000 + -1$ -#2830000 -0$ -#2835000 -b10001100000 * -b10001011100 ) -b10001011100 + -1$ -#2840000 -0$ -#2845000 -b10001100100 * -b10001100000 ) -b10001100000 + -1$ -#2850000 -0$ -#2855000 -b10001101000 * -b10001100100 ) -b10001100100 + -1$ -#2860000 -0$ -#2865000 -b10001101100 * -b10001101000 ) -b10001101000 + -1$ -#2870000 -0$ -#2875000 -b10001110000 * -b10001101100 ) -b10001101100 + -1$ -#2880000 -0$ -#2885000 -b10001110100 * -b10001110000 ) -b10001110000 + -1$ -#2890000 -0$ -#2895000 -b10001111000 * -b10001110100 ) -b10001110100 + -1$ -#2900000 -0$ -#2905000 -b10001111100 * -b10001111000 ) -b10001111000 + -1$ -#2910000 -0$ -#2915000 -b10010000000 * -b10001111100 ) -b10001111100 + -1$ -#2920000 -0$ -#2925000 -b10010000100 * -b10010000000 ) -b10010000000 + -1$ -#2930000 -0$ -#2935000 -b10010001000 * -b10010000100 ) -b10010000100 + -1$ -#2940000 -0$ -#2945000 -b10010001100 * -b10010001000 ) -b10010001000 + -1$ -#2950000 -0$ -#2955000 -b10010010000 * -b10010001100 ) -b10010001100 + -1$ -#2960000 -0$ -#2965000 -b10010010100 * -b10010010000 ) -b10010010000 + -1$ -#2970000 -0$ -#2975000 -b10010011000 * -b10010010100 ) -b10010010100 + -1$ -#2980000 -0$ -#2985000 -b10010011100 * -b10010011000 ) -b10010011000 + -1$ -#2990000 -0$ -#2995000 -b10010100000 * -b10010011100 ) -b10010011100 + -1$ -#3000000 -0$ -#3005000 -b10010100100 * -b10010100000 ) -b10010100000 + -1$ -#3010000 -0$ -#3015000 -b10010101000 * -b10010100100 ) -b10010100100 + -1$ -#3020000 -0$ -#3025000 -b10010101100 * -b10010101000 ) -b10010101000 + -1$ -#3030000 -0$ -#3035000 -b10010110000 * -b10010101100 ) -b10010101100 + -1$ -#3040000 -0$ -#3045000 -b10010110100 * -b10010110000 ) -b10010110000 + -1$ -#3050000 -0$ -#3055000 -b10010111000 * -b10010110100 ) -b10010110100 + -1$ -#3060000 -0$ -#3065000 -b10010111100 * -b10010111000 ) -b10010111000 + -1$ -#3070000 -0$ -#3075000 -b10011000000 * -b10010111100 ) -b10010111100 + -1$ -#3080000 -0$ -#3085000 -b10011000100 * -b10011000000 ) -b10011000000 + -1$ -#3090000 -0$ -#3095000 -b10011001000 * -b10011000100 ) -b10011000100 + -1$ -#3100000 -0$ -#3105000 -b10011001100 * -b10011001000 ) -b10011001000 + -1$ -#3110000 -0$ -#3115000 -b10011010000 * -b10011001100 ) -b10011001100 + -1$ -#3120000 -0$ -#3125000 -b10011010100 * -b10011010000 ) -b10011010000 + -1$ -#3130000 -0$ -#3135000 -b10011011000 * -b10011010100 ) -b10011010100 + -1$ -#3140000 -0$ -#3145000 -b10011011100 * -b10011011000 ) -b10011011000 + -1$ -#3150000 -0$ -#3155000 -b10011100000 * -b10011011100 ) -b10011011100 + -1$ -#3160000 -0$ -#3165000 -b10011100100 * -b10011100000 ) -b10011100000 + -1$ -#3170000 -0$ -#3175000 -b10011101000 * -b10011100100 ) -b10011100100 + -1$ -#3180000 -0$ -#3185000 -b10011101100 * -b10011101000 ) -b10011101000 + -1$ -#3190000 -0$ -#3195000 -b10011110000 * -b10011101100 ) -b10011101100 + -1$ -#3200000 -0$ -#3205000 -b10011110100 * -b10011110000 ) -b10011110000 + -1$ -#3210000 -0$ -#3215000 -b10011111000 * -b10011110100 ) -b10011110100 + -1$ -#3220000 -0$ -#3225000 -b10011111100 * -b10011111000 ) -b10011111000 + -1$ -#3230000 -0$ -#3235000 -b10100000000 * -b10011111100 ) -b10011111100 + -1$ -#3240000 -0$ -#3245000 -b10100000100 * -b10100000000 ) -b10100000000 + -1$ -#3250000 -0$ -#3255000 -b10100001000 * -b10100000100 ) -b10100000100 + -1$ -#3260000 -0$ -#3265000 -b10100001100 * -b10100001000 ) -b10100001000 + -1$ -#3270000 -0$ -#3275000 -b10100010000 * -b10100001100 ) -b10100001100 + -1$ -#3280000 -0$ -#3285000 -b10100010100 * -b10100010000 ) -b10100010000 + -1$ -#3290000 -0$ -#3295000 -b10100011000 * -b10100010100 ) -b10100010100 + -1$ -#3300000 -0$ -#3305000 -b10100011100 * -b10100011000 ) -b10100011000 + -1$ -#3310000 -0$ -#3315000 -b10100100000 * -b10100011100 ) -b10100011100 + -1$ -#3320000 -0$ -#3325000 -b10100100100 * -b10100100000 ) -b10100100000 + -1$ -#3330000 -0$ -#3335000 -b10100101000 * -b10100100100 ) -b10100100100 + -1$ -#3340000 -0$ -#3345000 -b10100101100 * -b10100101000 ) -b10100101000 + -1$ -#3350000 -0$ -#3355000 -b10100110000 * -b10100101100 ) -b10100101100 + -1$ -#3360000 -0$ -#3365000 -b10100110100 * -b10100110000 ) -b10100110000 + -1$ -#3370000 -0$ -#3375000 -b10100111000 * -b10100110100 ) -b10100110100 + -1$ -#3380000 -0$ -#3385000 -b10100111100 * -b10100111000 ) -b10100111000 + -1$ -#3390000 -0$ -#3395000 -b10101000000 * -b10100111100 ) -b10100111100 + -1$ -#3400000 -0$ -#3405000 -b10101000100 * -b10101000000 ) -b10101000000 + -1$ -#3410000 -0$ -#3415000 -b10101001000 * -b10101000100 ) -b10101000100 + -1$ -#3420000 -0$ -#3425000 -b10101001100 * -b10101001000 ) -b10101001000 + -1$ -#3430000 -0$ -#3435000 -b10101010000 * -b10101001100 ) -b10101001100 + -1$ -#3440000 -0$ -#3445000 -b10101010100 * -b10101010000 ) -b10101010000 + -1$ -#3450000 -0$ -#3455000 -b10101011000 * -b10101010100 ) -b10101010100 + -1$ -#3460000 -0$ -#3465000 -b10101011100 * -b10101011000 ) -b10101011000 + -1$ -#3470000 -0$ -#3475000 -b10101100000 * -b10101011100 ) -b10101011100 + -1$ -#3480000 -0$ -#3485000 -b10101100100 * -b10101100000 ) -b10101100000 + -1$ -#3490000 -0$ -#3495000 -b10101101000 * -b10101100100 ) -b10101100100 + -1$ -#3500000 -0$ -#3505000 -b10101101100 * -b10101101000 ) -b10101101000 + -1$ -#3510000 -0$ -#3515000 -b10101110000 * -b10101101100 ) -b10101101100 + -1$ -#3520000 -0$ -#3525000 -b10101110100 * -b10101110000 ) -b10101110000 + -1$ -#3530000 -0$ -#3535000 -b10101111000 * -b10101110100 ) -b10101110100 + -1$ -#3540000 -0$ -#3545000 -b10101111100 * -b10101111000 ) -b10101111000 + -1$ -#3550000 -0$ -#3555000 -b10110000000 * -b10101111100 ) -b10101111100 + -1$ -#3560000 -0$ -#3565000 -b10110000100 * -b10110000000 ) -b10110000000 + -1$ -#3570000 -0$ -#3575000 -b10110001000 * -b10110000100 ) -b10110000100 + -1$ -#3580000 -0$ -#3585000 -b10110001100 * -b10110001000 ) -b10110001000 + -1$ -#3590000 -0$ -#3595000 -b10110010000 * -b10110001100 ) -b10110001100 + -1$ -#3600000 -0$ -#3605000 -b10110010100 * -b10110010000 ) -b10110010000 + -1$ -#3610000 -0$ -#3615000 -b10110011000 * -b10110010100 ) -b10110010100 + -1$ -#3620000 -0$ -#3625000 -b10110011100 * -b10110011000 ) -b10110011000 + -1$ -#3630000 -0$ -#3635000 -b10110100000 * -b10110011100 ) -b10110011100 + -1$ -#3640000 -0$ -#3645000 -b10110100100 * -b10110100000 ) -b10110100000 + -1$ -#3650000 -0$ -#3655000 -b10110101000 * -b10110100100 ) -b10110100100 + -1$ -#3660000 -0$ -#3665000 -b10110101100 * -b10110101000 ) -b10110101000 + -1$ -#3670000 -0$ -#3675000 -b10110110000 * -b10110101100 ) -b10110101100 + -1$ -#3680000 -0$ -#3685000 -b10110110100 * -b10110110000 ) -b10110110000 + -1$ -#3690000 -0$ -#3695000 -b10110111000 * -b10110110100 ) -b10110110100 + -1$ -#3700000 -0$ -#3705000 -b10110111100 * -b10110111000 ) -b10110111000 + -1$ -#3710000 -0$ -#3715000 -b10111000000 * -b10110111100 ) -b10110111100 + -1$ -#3720000 -0$ -#3725000 -b10111000100 * -b10111000000 ) -b10111000000 + -1$ -#3730000 -0$ -#3735000 -b10111001000 * -b10111000100 ) -b10111000100 + -1$ -#3740000 -0$ -#3745000 -b10111001100 * -b10111001000 ) -b10111001000 + -1$ -#3750000 -0$ -#3755000 -b10111010000 * -b10111001100 ) -b10111001100 + -1$ -#3760000 -0$ -#3765000 -b10111010100 * -b10111010000 ) -b10111010000 + -1$ -#3770000 -0$ -#3775000 -b10111011000 * -b10111010100 ) -b10111010100 + -1$ -#3780000 -0$ -#3785000 -b10111011100 * -b10111011000 ) -b10111011000 + -1$ -#3790000 -0$ -#3795000 -b10111100000 * -b10111011100 ) -b10111011100 + -1$ -#3800000 -0$ -#3805000 -b10111100100 * -b10111100000 ) -b10111100000 + -1$ -#3810000 -0$ -#3815000 -b10111101000 * -b10111100100 ) -b10111100100 + -1$ -#3820000 -0$ -#3825000 -b10111101100 * -b10111101000 ) -b10111101000 + -1$ -#3830000 -0$ -#3835000 -b10111110000 * -b10111101100 ) -b10111101100 + -1$ -#3840000 -0$ -#3845000 -b10111110100 * -b10111110000 ) -b10111110000 + -1$ -#3850000 -0$ -#3855000 -b10111111000 * -b10111110100 ) -b10111110100 + -1$ -#3860000 -0$ -#3865000 -b10111111100 * -b10111111000 ) -b10111111000 + -1$ -#3870000 -0$ -#3875000 -b11000000000 * -b10111111100 ) -b10111111100 + -1$ -#3880000 -0$ -#3885000 -b11000000100 * -b11000000000 ) -b11000000000 + -1$ -#3890000 -0$ -#3895000 -b11000001000 * -b11000000100 ) -b11000000100 + -1$ -#3900000 -0$ -#3905000 -b11000001100 * -b11000001000 ) -b11000001000 + -1$ -#3910000 -0$ -#3915000 -b11000010000 * -b11000001100 ) -b11000001100 + -1$ -#3920000 -0$ -#3925000 -b11000010100 * -b11000010000 ) -b11000010000 + -1$ -#3930000 -0$ -#3935000 -b11000011000 * -b11000010100 ) -b11000010100 + -1$ -#3940000 -0$ -#3945000 -b11000011100 * -b11000011000 ) -b11000011000 + -1$ -#3950000 -0$ -#3955000 -b11000100000 * -b11000011100 ) -b11000011100 + -1$ -#3960000 -0$ -#3965000 -b11000100100 * -b11000100000 ) -b11000100000 + -1$ -#3970000 -0$ -#3975000 -b11000101000 * -b11000100100 ) -b11000100100 + -1$ -#3980000 -0$ -#3985000 -b11000101100 * -b11000101000 ) -b11000101000 + -1$ -#3990000 -0$ -#3995000 -b11000110000 * -b11000101100 ) -b11000101100 + -1$ -#4000000 -0$ -#4005000 -b11000110100 * -b11000110000 ) -b11000110000 + -1$ -#4010000 -0$ -#4015000 -b11000111000 * -b11000110100 ) -b11000110100 + -1$ -#4020000 -0$ -#4025000 -b11000111100 * -b11000111000 ) -b11000111000 + -1$ -#4030000 -0$ -#4035000 -b11001000000 * -b11000111100 ) -b11000111100 + -1$ -#4040000 -0$ -#4045000 -b11001000100 * -b11001000000 ) -b11001000000 + -1$ -#4050000 -0$ -#4055000 -b11001001000 * -b11001000100 ) -b11001000100 + -1$ -#4060000 -0$ -#4065000 -b11001001100 * -b11001001000 ) -b11001001000 + -1$ -#4070000 -0$ -#4075000 -b11001010000 * -b11001001100 ) -b11001001100 + -1$ -#4080000 -0$ -#4085000 -b11001010100 * -b11001010000 ) -b11001010000 + -1$ -#4090000 -0$ -#4095000 -b11001011000 * -b11001010100 ) -b11001010100 + -1$ -#4100000 -0$ -#4105000 -b11001011100 * -b11001011000 ) -b11001011000 + -1$ -#4110000 -0$ -#4115000 -b11001100000 * -b11001011100 ) -b11001011100 + -1$ -#4120000 -0$ -#4125000 -b11001100100 * -b11001100000 ) -b11001100000 + -1$ -#4130000 -0$ -#4135000 -b11001101000 * -b11001100100 ) -b11001100100 + -1$ -#4140000 -0$ -#4145000 -b11001101100 * -b11001101000 ) -b11001101000 + -1$ -#4150000 -0$ -#4155000 -b11001110000 * -b11001101100 ) -b11001101100 + -1$ -#4160000 -0$ -#4165000 -b11001110100 * -b11001110000 ) -b11001110000 + -1$ -#4170000 -0$ -#4175000 -b11001111000 * -b11001110100 ) -b11001110100 + -1$ -#4180000 -0$ -#4185000 -b11001111100 * -b11001111000 ) -b11001111000 + -1$ -#4190000 -0$ -#4195000 -b11010000000 * -b11001111100 ) -b11001111100 + -1$ -#4200000 -0$ -#4205000 -b11010000100 * -b11010000000 ) -b11010000000 + -1$ -#4210000 -0$ -#4215000 -b11010001000 * -b11010000100 ) -b11010000100 + -1$ -#4220000 -0$ -#4225000 -b11010001100 * -b11010001000 ) -b11010001000 + -1$ -#4230000 -0$ -#4235000 -b11010010000 * -b11010001100 ) -b11010001100 + -1$ -#4240000 -0$ -#4245000 -b11010010100 * -b11010010000 ) -b11010010000 + -1$ -#4250000 -0$ -#4255000 -b11010011000 * -b11010010100 ) -b11010010100 + -1$ -#4260000 -0$ -#4265000 -b11010011100 * -b11010011000 ) -b11010011000 + -1$ -#4270000 -0$ -#4275000 -b11010100000 * -b11010011100 ) -b11010011100 + -1$ -#4280000 -0$ -#4285000 -b11010100100 * -b11010100000 ) -b11010100000 + -1$ -#4290000 -0$ -#4295000 -b11010101000 * -b11010100100 ) -b11010100100 + -1$ -#4300000 -0$ -#4305000 -b11010101100 * -b11010101000 ) -b11010101000 + -1$ -#4310000 -0$ -#4315000 -b11010110000 * -b11010101100 ) -b11010101100 + -1$ -#4320000 -0$ -#4325000 -b11010110100 * -b11010110000 ) -b11010110000 + -1$ -#4330000 -0$ -#4335000 -b11010111000 * -b11010110100 ) -b11010110100 + -1$ -#4340000 -0$ -#4345000 -b11010111100 * -b11010111000 ) -b11010111000 + -1$ -#4350000 -0$ -#4355000 -b11011000000 * -b11010111100 ) -b11010111100 + -1$ -#4360000 -0$ -#4365000 -b11011000100 * -b11011000000 ) -b11011000000 + -1$ -#4370000 -0$ -#4375000 -b11011001000 * -b11011000100 ) -b11011000100 + -1$ -#4380000 -0$ -#4385000 -b11011001100 * -b11011001000 ) -b11011001000 + -1$ -#4390000 -0$ -#4395000 -b11011010000 * -b11011001100 ) -b11011001100 + -1$ -#4400000 -0$ -#4405000 -b11011010100 * -b11011010000 ) -b11011010000 + -1$ -#4410000 -0$ -#4415000 -b11011011000 * -b11011010100 ) -b11011010100 + -1$ -#4420000 -0$ -#4425000 -b11011011100 * -b11011011000 ) -b11011011000 + -1$ -#4430000 -0$ -#4435000 -b11011100000 * -b11011011100 ) -b11011011100 + -1$ -#4440000 -0$ -#4445000 -b11011100100 * -b11011100000 ) -b11011100000 + -1$ -#4450000 -0$ -#4455000 -b11011101000 * -b11011100100 ) -b11011100100 + -1$ -#4460000 -0$ -#4465000 -b11011101100 * -b11011101000 ) -b11011101000 + -1$ -#4470000 -0$ -#4475000 -b11011110000 * -b11011101100 ) -b11011101100 + -1$ -#4480000 -0$ -#4485000 -b11011110100 * -b11011110000 ) -b11011110000 + -1$ -#4490000 -0$ -#4495000 -b11011111000 * -b11011110100 ) -b11011110100 + -1$ -#4500000 -0$ -#4505000 -b11011111100 * -b11011111000 ) -b11011111000 + -1$ -#4510000 -0$ -#4515000 -b11100000000 * -b11011111100 ) -b11011111100 + -1$ -#4520000 -0$ -#4525000 -b11100000100 * -b11100000000 ) -b11100000000 + -1$ -#4530000 -0$ -#4535000 -b11100001000 * -b11100000100 ) -b11100000100 + -1$ -#4540000 -0$ -#4545000 -b11100001100 * -b11100001000 ) -b11100001000 + -1$ -#4550000 -0$ -#4555000 -b11100010000 * -b11100001100 ) -b11100001100 + -1$ -#4560000 -0$ -#4565000 -b11100010100 * -b11100010000 ) -b11100010000 + -1$ -#4570000 -0$ -#4575000 -b11100011000 * -b11100010100 ) -b11100010100 + -1$ -#4580000 -0$ -#4585000 -b11100011100 * -b11100011000 ) -b11100011000 + -1$ -#4590000 -0$ -#4595000 -b11100100000 * -b11100011100 ) -b11100011100 + -1$ -#4600000 -0$ -#4605000 -b11100100100 * -b11100100000 ) -b11100100000 + -1$ -#4610000 -0$ -#4615000 -b11100101000 * -b11100100100 ) -b11100100100 + -1$ -#4620000 -0$ -#4625000 -b11100101100 * -b11100101000 ) -b11100101000 + -1$ -#4630000 -0$ -#4635000 -b11100110000 * -b11100101100 ) -b11100101100 + -1$ -#4640000 -0$ -#4645000 -b11100110100 * -b11100110000 ) -b11100110000 + -1$ -#4650000 -0$ -#4655000 -b11100111000 * -b11100110100 ) -b11100110100 + -1$ -#4660000 -0$ -#4665000 -b11100111100 * -b11100111000 ) -b11100111000 + -1$ -#4670000 -0$ -#4675000 -b11101000000 * -b11100111100 ) -b11100111100 + -1$ -#4680000 -0$ -#4685000 -b11101000100 * -b11101000000 ) -b11101000000 + -1$ -#4690000 -0$ -#4695000 -b11101001000 * -b11101000100 ) -b11101000100 + -1$ -#4700000 -0$ -#4705000 -b11101001100 * -b11101001000 ) -b11101001000 + -1$ -#4710000 -0$ -#4715000 -b11101010000 * -b11101001100 ) -b11101001100 + -1$ -#4720000 -0$ -#4725000 -b11101010100 * -b11101010000 ) -b11101010000 + -1$ -#4730000 -0$ -#4735000 -b11101011000 * -b11101010100 ) -b11101010100 + -1$ -#4740000 -0$ -#4745000 -b11101011100 * -b11101011000 ) -b11101011000 + -1$ -#4750000 -0$ -#4755000 -b11101100000 * -b11101011100 ) -b11101011100 + -1$ -#4760000 -0$ -#4765000 -b11101100100 * -b11101100000 ) -b11101100000 + -1$ -#4770000 -0$ -#4775000 -b11101101000 * -b11101100100 ) -b11101100100 + -1$ -#4780000 -0$ -#4785000 -b11101101100 * -b11101101000 ) -b11101101000 + -1$ -#4790000 -0$ -#4795000 -b11101110000 * -b11101101100 ) -b11101101100 + -1$ -#4800000 -0$ -#4805000 -b11101110100 * -b11101110000 ) -b11101110000 + -1$ -#4810000 -0$ -#4815000 -b11101111000 * -b11101110100 ) -b11101110100 + -1$ -#4820000 -0$ -#4825000 -b11101111100 * -b11101111000 ) -b11101111000 + -1$ -#4830000 -0$ -#4835000 -b11110000000 * -b11101111100 ) -b11101111100 + -1$ -#4840000 -0$ -#4845000 -b11110000100 * -b11110000000 ) -b11110000000 + -1$ -#4850000 -0$ -#4855000 -b11110001000 * -b11110000100 ) -b11110000100 + -1$ -#4860000 -0$ -#4865000 -b11110001100 * -b11110001000 ) -b11110001000 + -1$ -#4870000 -0$ -#4875000 -b11110010000 * -b11110001100 ) -b11110001100 + -1$ -#4880000 -0$ -#4885000 -b11110010100 * -b11110010000 ) -b11110010000 + -1$ -#4890000 -0$ -#4895000 -b11110011000 * -b11110010100 ) -b11110010100 + -1$ -#4900000 -0$ -#4905000 -b11110011100 * -b11110011000 ) -b11110011000 + -1$ -#4910000 -0$ -#4915000 -b11110100000 * -b11110011100 ) -b11110011100 + -1$ -#4920000 -0$ -#4925000 -b11110100100 * -b11110100000 ) -b11110100000 + -1$ -#4930000 -0$ -#4935000 -b11110101000 * -b11110100100 ) -b11110100100 + -1$ -#4940000 -0$ -#4945000 -b11110101100 * -b11110101000 ) -b11110101000 + -1$ -#4950000 -0$ -#4955000 -b11110110000 * -b11110101100 ) -b11110101100 + -1$ -#4960000 -0$ -#4965000 -b11110110100 * -b11110110000 ) -b11110110000 + -1$ -#4970000 -0$ -#4975000 -b11110111000 * -b11110110100 ) -b11110110100 + -1$ -#4980000 -0$ -#4985000 -b11110111100 * -b11110111000 ) -b11110111000 + -1$ -#4990000 -0$ -#4995000 -b11111000000 * -b11110111100 ) -b11110111100 + -1$ -#5000000 -0$ -#5005000 -b11111000100 * -b11111000000 ) -b11111000000 + -1$ -#5010000 -0$ -#5015000 -b11111001000 * -b11111000100 ) -b11111000100 + -1$ -#5020000 -0$ -#5025000 -b11111001100 * -b11111001000 ) -b11111001000 + -1$ -#5030000 -0$ -#5035000 -b11111010000 * -b11111001100 ) -b11111001100 + -1$ -#5040000 -0$ -#5045000 -b11111010100 * -b11111010000 ) -b11111010000 + -1$ -#5050000 -0$ -#5055000 -b11111011000 * -b11111010100 ) -b11111010100 + -1$ -#5060000 -0$ -#5065000 -b11111011100 * -b11111011000 ) -b11111011000 + -1$ -#5070000 -0$ -#5075000 -b11111100000 * -b11111011100 ) -b11111011100 + -1$ -#5080000 -0$ -#5085000 -b11111100100 * -b11111100000 ) -b11111100000 + -1$ -#5090000 -0$ -#5095000 -b11111101000 * -b11111100100 ) -b11111100100 + -1$ -#5100000 -0$ -#5105000 -b11111101100 * -b11111101000 ) -b11111101000 + -1$ -#5110000 -0$ -#5115000 -b11111110000 * -b11111101100 ) -b11111101100 + -1$ -#5120000 -0$ -#5125000 -b11111110100 * -b11111110000 ) -b11111110000 + -1$ -#5130000 -0$ -#5135000 -b11111111000 * -b11111110100 ) -b11111110100 + -1$ -#5140000 -0$ -#5145000 -b11111111100 * -b11111111000 ) -b11111111000 + -1$ -#5150000 -0$ -#5155000 -b100000000000 * -b11111111100 ) -b11111111100 + -1$ -#5160000 -0$ -#5165000 -b100000000100 * -b100000000000 ) -b100000000000 + -1$ -#5170000 -0$ -#5175000 -b100000001000 * -b100000000100 ) -b100000000100 + -1$ -#5180000 -0$ -#5185000 -b100000001100 * -b100000001000 ) -b100000001000 + -1$ -#5190000 -0$ -#5195000 -b100000010000 * -b100000001100 ) -b100000001100 + -1$ -#5200000 -0$ -#5205000 -b100000010100 * -b100000010000 ) -b100000010000 + -1$ -#5210000 -0$ -#5215000 -b100000011000 * -b100000010100 ) -b100000010100 + -1$ -#5220000 -0$ -#5225000 -b100000011100 * -b100000011000 ) -b100000011000 + -1$ -#5230000 -0$ -#5235000 -b100000100000 * -b100000011100 ) -b100000011100 + -1$ -#5240000 -0$ -#5245000 -b100000100100 * -b100000100000 ) -b100000100000 + -1$ -#5250000 -0$ -#5255000 -b100000101000 * -b100000100100 ) -b100000100100 + -1$ -#5260000 -0$ -#5265000 -b100000101100 * -b100000101000 ) -b100000101000 + -1$ -#5270000 -0$ -#5275000 -b100000110000 * -b100000101100 ) -b100000101100 + -1$ -#5280000 -0$ -#5285000 -b100000110100 * -b100000110000 ) -b100000110000 + -1$ -#5290000 -0$ -#5295000 -b100000111000 * -b100000110100 ) -b100000110100 + -1$ -#5300000 -0$ -#5305000 -b100000111100 * -b100000111000 ) -b100000111000 + -1$ -#5310000 -0$ -#5315000 -b100001000000 * -b100000111100 ) -b100000111100 + -1$ -#5320000 -0$ -#5325000 -b100001000100 * -b100001000000 ) -b100001000000 + -1$ -#5330000 -0$ -#5335000 -b100001001000 * -b100001000100 ) -b100001000100 + -1$ -#5340000 -0$ -#5345000 -b100001001100 * -b100001001000 ) -b100001001000 + -1$ -#5350000 -0$ -#5355000 -b100001010000 * -b100001001100 ) -b100001001100 + -1$ -#5360000 -0$ -#5365000 -b100001010100 * -b100001010000 ) -b100001010000 + -1$ -#5370000 -0$ -#5375000 -b100001011000 * -b100001010100 ) -b100001010100 + -1$ -#5380000 -0$ -#5385000 -b100001011100 * -b100001011000 ) -b100001011000 + -1$ -#5390000 -0$ -#5395000 -b100001100000 * -b100001011100 ) -b100001011100 + -1$ -#5400000 -0$ -#5405000 -b100001100100 * -b100001100000 ) -b100001100000 + -1$ -#5410000 -0$ -#5415000 -b100001101000 * -b100001100100 ) -b100001100100 + -1$ -#5420000 -0$ -#5425000 -b100001101100 * -b100001101000 ) -b100001101000 + -1$ -#5430000 -0$ -#5435000 -b100001110000 * -b100001101100 ) -b100001101100 + -1$ -#5440000 -0$ -#5445000 -b100001110100 * -b100001110000 ) -b100001110000 + -1$ -#5450000 -0$ -#5455000 -b100001111000 * -b100001110100 ) -b100001110100 + -1$ -#5460000 -0$ -#5465000 -b100001111100 * -b100001111000 ) -b100001111000 + -1$ -#5470000 -0$ -#5475000 -b100010000000 * -b100001111100 ) -b100001111100 + -1$ -#5480000 -0$ -#5485000 -b100010000100 * -b100010000000 ) -b100010000000 + -1$ -#5490000 -0$ -#5495000 -b100010001000 * -b100010000100 ) -b100010000100 + -1$ -#5500000 -0$ -#5505000 -b100010001100 * -b100010001000 ) -b100010001000 + -1$ -#5510000 -0$ -#5515000 -b100010010000 * -b100010001100 ) -b100010001100 + -1$ -#5520000 -0$ -#5525000 -b100010010100 * -b100010010000 ) -b100010010000 + -1$ -#5530000 -0$ -#5535000 -b100010011000 * -b100010010100 ) -b100010010100 + -1$ -#5540000 -0$ -#5545000 -b100010011100 * -b100010011000 ) -b100010011000 + -1$ -#5550000 -0$ -#5555000 -b100010100000 * -b100010011100 ) -b100010011100 + -1$ -#5560000 -0$ -#5565000 -b100010100100 * -b100010100000 ) -b100010100000 + -1$ -#5570000 -0$ -#5575000 -b100010101000 * -b100010100100 ) -b100010100100 + -1$ -#5580000 -0$ -#5585000 -b100010101100 * -b100010101000 ) -b100010101000 + -1$ -#5590000 -0$ -#5595000 -b100010110000 * -b100010101100 ) -b100010101100 + -1$ -#5600000 -0$ -#5605000 -b100010110100 * -b100010110000 ) -b100010110000 + -1$ -#5610000 -0$ -#5615000 -b100010111000 * -b100010110100 ) -b100010110100 + -1$ -#5620000 -0$ -#5625000 -b100010111100 * -b100010111000 ) -b100010111000 + -1$ -#5630000 -0$ -#5635000 -b100011000000 * -b100010111100 ) -b100010111100 + -1$ -#5640000 -0$ -#5645000 -b100011000100 * -b100011000000 ) -b100011000000 + -1$ -#5650000 -0$ -#5655000 -b100011001000 * -b100011000100 ) -b100011000100 + -1$ -#5660000 -0$ -#5665000 -b100011001100 * -b100011001000 ) -b100011001000 + -1$ -#5670000 -0$ -#5675000 -b100011010000 * -b100011001100 ) -b100011001100 + -1$ -#5680000 -0$ -#5685000 -b100011010100 * -b100011010000 ) -b100011010000 + -1$ -#5690000 -0$ -#5695000 -b100011011000 * -b100011010100 ) -b100011010100 + -1$ -#5700000 -0$ -#5705000 -b100011011100 * -b100011011000 ) -b100011011000 + -1$ -#5710000 -0$ -#5715000 -b100011100000 * -b100011011100 ) -b100011011100 + -1$ -#5720000 -0$ -#5725000 -b100011100100 * -b100011100000 ) -b100011100000 + -1$ -#5730000 -0$ -#5735000 -b100011101000 * -b100011100100 ) -b100011100100 + -1$ -#5740000 -0$ -#5745000 -b100011101100 * -b100011101000 ) -b100011101000 + -1$ -#5750000 -0$ -#5755000 -b100011110000 * -b100011101100 ) -b100011101100 + -1$ -#5760000 -0$ -#5765000 -b100011110100 * -b100011110000 ) -b100011110000 + -1$ -#5770000 -0$ -#5775000 -b100011111000 * -b100011110100 ) -b100011110100 + -1$ -#5780000 -0$ -#5785000 -b100011111100 * -b100011111000 ) -b100011111000 + -1$ -#5790000 -0$ -#5795000 -b100100000000 * -b100011111100 ) -b100011111100 + -1$ -#5800000 -0$ -#5805000 -b100100000100 * -b100100000000 ) -b100100000000 + -1$ -#5810000 -0$ -#5815000 -b100100001000 * -b100100000100 ) -b100100000100 + -1$ -#5820000 -0$ -#5825000 -b100100001100 * -b100100001000 ) -b100100001000 + -1$ -#5830000 -0$ -#5835000 -b100100010000 * -b100100001100 ) -b100100001100 + -1$ -#5840000 -0$ -#5845000 -b100100010100 * -b100100010000 ) -b100100010000 + -1$ -#5850000 -0$ -#5855000 -b100100011000 * -b100100010100 ) -b100100010100 + -1$ -#5860000 -0$ -#5865000 -b100100011100 * -b100100011000 ) -b100100011000 + -1$ -#5870000 -0$ -#5875000 -b100100100000 * -b100100011100 ) -b100100011100 + -1$ -#5880000 -0$ -#5885000 -b100100100100 * -b100100100000 ) -b100100100000 + -1$ -#5890000 -0$ -#5895000 -b100100101000 * -b100100100100 ) -b100100100100 + -1$ -#5900000 -0$ -#5905000 -b100100101100 * -b100100101000 ) -b100100101000 + -1$ -#5910000 -0$ -#5915000 -b100100110000 * -b100100101100 ) -b100100101100 + -1$ -#5920000 -0$ -#5925000 -b100100110100 * -b100100110000 ) -b100100110000 + -1$ -#5930000 -0$ -#5935000 -b100100111000 * -b100100110100 ) -b100100110100 + -1$ -#5940000 -0$ -#5945000 -b100100111100 * -b100100111000 ) -b100100111000 + -1$ -#5950000 -0$ -#5955000 -b100101000000 * -b100100111100 ) -b100100111100 + -1$ -#5960000 -0$ -#5965000 -b100101000100 * -b100101000000 ) -b100101000000 + -1$ -#5970000 -0$ -#5975000 -b100101001000 * -b100101000100 ) -b100101000100 + -1$ -#5980000 -0$ -#5985000 -b100101001100 * -b100101001000 ) -b100101001000 + -1$ -#5990000 -0$ -#5995000 -b100101010000 * -b100101001100 ) -b100101001100 + -1$ -#6000000 -0$ -#6005000 -b100101010100 * -b100101010000 ) -b100101010000 + -1$ -#6010000 -0$ -#6015000 -b100101011000 * -b100101010100 ) -b100101010100 + -1$ -#6020000 -0$ -#6025000 -b100101011100 * -b100101011000 ) -b100101011000 + -1$ -#6030000 -0$ -#6035000 -b100101100000 * -b100101011100 ) -b100101011100 + -1$ -#6040000 -0$ -#6045000 -b100101100100 * -b100101100000 ) -b100101100000 + -1$ -#6050000 -0$ -#6055000 -b100101101000 * -b100101100100 ) -b100101100100 + -1$ -#6060000 -0$ -#6065000 -b100101101100 * -b100101101000 ) -b100101101000 + -1$ -#6070000 -0$ -#6075000 -b100101110000 * -b100101101100 ) -b100101101100 + -1$ -#6080000 -0$ -#6085000 -b100101110100 * -b100101110000 ) -b100101110000 + -1$ -#6090000 -0$ -#6095000 -b100101111000 * -b100101110100 ) -b100101110100 + -1$ -#6100000 -0$ -#6105000 -b100101111100 * -b100101111000 ) -b100101111000 + -1$ -#6110000 -0$ -#6115000 -b100110000000 * -b100101111100 ) -b100101111100 + -1$ -#6120000 -0$ -#6125000 -b100110000100 * -b100110000000 ) -b100110000000 + -1$ -#6130000 -0$ -#6135000 -b100110001000 * -b100110000100 ) -b100110000100 + -1$ -#6140000 -0$ -#6145000 -b100110001100 * -b100110001000 ) -b100110001000 + -1$ -#6150000 -0$ -#6155000 -b100110010000 * -b100110001100 ) -b100110001100 + -1$ -#6160000 -0$ -#6165000 -b100110010100 * -b100110010000 ) -b100110010000 + -1$ -#6170000 -0$ -#6175000 -b100110011000 * -b100110010100 ) -b100110010100 + -1$ -#6180000 -0$ -#6185000 -b100110011100 * -b100110011000 ) -b100110011000 + -1$ -#6190000 -0$ -#6195000 -b100110100000 * -b100110011100 ) -b100110011100 + -1$ -#6200000 -0$ -#6205000 -b100110100100 * -b100110100000 ) -b100110100000 + -1$ -#6210000 -0$ -#6215000 -b100110101000 * -b100110100100 ) -b100110100100 + -1$ -#6220000 -0$ -#6225000 -b100110101100 * -b100110101000 ) -b100110101000 + -1$ -#6230000 -0$ -#6235000 -b100110110000 * -b100110101100 ) -b100110101100 + -1$ -#6240000 -0$ -#6245000 -b100110110100 * -b100110110000 ) -b100110110000 + -1$ -#6250000 -0$ -#6255000 -b100110111000 * -b100110110100 ) -b100110110100 + -1$ -#6260000 -0$ -#6265000 -b100110111100 * -b100110111000 ) -b100110111000 + -1$ -#6270000 -0$ -#6275000 -b100111000000 * -b100110111100 ) -b100110111100 + -1$ -#6280000 -0$ -#6285000 -b100111000100 * -b100111000000 ) -b100111000000 + -1$ -#6290000 -0$ -#6295000 -b100111001000 * -b100111000100 ) -b100111000100 + -1$ -#6300000 -0$ -#6305000 -b100111001100 * -b100111001000 ) -b100111001000 + -1$ -#6310000 -0$ -#6315000 -b100111010000 * -b100111001100 ) -b100111001100 + -1$ -#6320000 -0$ -#6325000 -b100111010100 * -b100111010000 ) -b100111010000 + -1$ -#6330000 -0$ -#6335000 -b100111011000 * -b100111010100 ) -b100111010100 + -1$ -#6340000 -0$ -#6345000 -b100111011100 * -b100111011000 ) -b100111011000 + -1$ -#6350000 -0$ -#6355000 -b100111100000 * -b100111011100 ) -b100111011100 + -1$ -#6360000 -0$ -#6365000 -b100111100100 * -b100111100000 ) -b100111100000 + -1$ -#6370000 -0$ -#6375000 -b100111101000 * -b100111100100 ) -b100111100100 + -1$ -#6380000 -0$ -#6385000 -b100111101100 * -b100111101000 ) -b100111101000 + -1$ -#6390000 -0$ -#6395000 -b100111110000 * -b100111101100 ) -b100111101100 + -1$ -#6400000 -0$ -#6405000 -b100111110100 * -b100111110000 ) -b100111110000 + -1$ -#6410000 -0$ -#6415000 -b100111111000 * -b100111110100 ) -b100111110100 + -1$ -#6420000 -0$ -#6425000 -b100111111100 * -b100111111000 ) -b100111111000 + -1$ -#6430000 -0$ -#6435000 -b101000000000 * -b100111111100 ) -b100111111100 + -1$ -#6440000 -0$ -#6445000 -b101000000100 * -b101000000000 ) -b101000000000 + -1$ -#6450000 -0$ -#6455000 -b101000001000 * -b101000000100 ) -b101000000100 + -1$ -#6460000 -0$ -#6465000 -b101000001100 * -b101000001000 ) -b101000001000 + -1$ -#6470000 -0$ -#6475000 -b101000010000 * -b101000001100 ) -b101000001100 + -1$ -#6480000 -0$ -#6485000 -b101000010100 * -b101000010000 ) -b101000010000 + -1$ -#6490000 -0$ -#6495000 -b101000011000 * -b101000010100 ) -b101000010100 + -1$ -#6500000 -0$ -#6505000 -b101000011100 * -b101000011000 ) -b101000011000 + -1$ -#6510000 -0$ -#6515000 -b101000100000 * -b101000011100 ) -b101000011100 + -1$ -#6520000 -0$ -#6525000 -b101000100100 * -b101000100000 ) -b101000100000 + -1$ -#6530000 -0$ -#6535000 -b101000101000 * -b101000100100 ) -b101000100100 + -1$ -#6540000 -0$ -#6545000 -b101000101100 * -b101000101000 ) -b101000101000 + -1$ -#6550000 -0$ -#6555000 -b101000110000 * -b101000101100 ) -b101000101100 + -1$ -#6560000 -0$ -#6565000 -b101000110100 * -b101000110000 ) -b101000110000 + -1$ -#6570000 -0$ -#6575000 -b101000111000 * -b101000110100 ) -b101000110100 + -1$ -#6580000 -0$ -#6585000 -b101000111100 * -b101000111000 ) -b101000111000 + -1$ -#6590000 -0$ -#6595000 -b101001000000 * -b101000111100 ) -b101000111100 + -1$ -#6600000 -0$ -#6605000 -b101001000100 * -b101001000000 ) -b101001000000 + -1$ -#6610000 -0$ -#6615000 -b101001001000 * -b101001000100 ) -b101001000100 + -1$ -#6620000 -0$ -#6625000 -b101001001100 * -b101001001000 ) -b101001001000 + -1$ -#6630000 -0$ -#6635000 -b101001010000 * -b101001001100 ) -b101001001100 + -1$ -#6640000 -0$ -#6645000 -b101001010100 * -b101001010000 ) -b101001010000 + -1$ -#6650000 -0$ -#6655000 -b101001011000 * -b101001010100 ) -b101001010100 + -1$ -#6660000 -0$ -#6665000 -b101001011100 * -b101001011000 ) -b101001011000 + -1$ -#6670000 -0$ -#6675000 -b101001100000 * -b101001011100 ) -b101001011100 + -1$ -#6680000 -0$ -#6685000 -b101001100100 * -b101001100000 ) -b101001100000 + -1$ -#6690000 -0$ -#6695000 -b101001101000 * -b101001100100 ) -b101001100100 + -1$ -#6700000 -0$ -#6705000 -b101001101100 * -b101001101000 ) -b101001101000 + -1$ -#6710000 -0$ -#6715000 -b101001110000 * -b101001101100 ) -b101001101100 + -1$ -#6720000 -0$ -#6725000 -b101001110100 * -b101001110000 ) -b101001110000 + -1$ -#6730000 -0$ -#6735000 -b101001111000 * -b101001110100 ) -b101001110100 + -1$ -#6740000 -0$ -#6745000 -b101001111100 * -b101001111000 ) -b101001111000 + -1$ -#6750000 -0$ -#6755000 -b101010000000 * -b101001111100 ) -b101001111100 + -1$ -#6760000 -0$ -#6765000 -b101010000100 * -b101010000000 ) -b101010000000 + -1$ -#6770000 -0$ -#6775000 -b101010001000 * -b101010000100 ) -b101010000100 + -1$ -#6780000 -0$ -#6785000 -b101010001100 * -b101010001000 ) -b101010001000 + -1$ -#6790000 -0$ -#6795000 -b101010010000 * -b101010001100 ) -b101010001100 + -1$ -#6800000 -0$ -#6805000 -b101010010100 * -b101010010000 ) -b101010010000 + -1$ -#6810000 -0$ -#6815000 -b101010011000 * -b101010010100 ) -b101010010100 + -1$ -#6820000 -0$ -#6825000 -b101010011100 * -b101010011000 ) -b101010011000 + -1$ -#6830000 -0$ -#6835000 -b101010100000 * -b101010011100 ) -b101010011100 + -1$ -#6840000 -0$ -#6845000 -b101010100100 * -b101010100000 ) -b101010100000 + -1$ -#6850000 -0$ -#6855000 -b101010101000 * -b101010100100 ) -b101010100100 + -1$ -#6860000 -0$ -#6865000 -b101010101100 * -b101010101000 ) -b101010101000 + -1$ -#6870000 -0$ -#6875000 -b101010110000 * -b101010101100 ) -b101010101100 + -1$ -#6880000 -0$ -#6885000 -b101010110100 * -b101010110000 ) -b101010110000 + -1$ -#6890000 -0$ -#6895000 -b101010111000 * -b101010110100 ) -b101010110100 + -1$ -#6900000 -0$ -#6905000 -b101010111100 * -b101010111000 ) -b101010111000 + -1$ -#6910000 -0$ -#6915000 -b101011000000 * -b101010111100 ) -b101010111100 + -1$ -#6920000 -0$ -#6925000 -b101011000100 * -b101011000000 ) -b101011000000 + -1$ -#6930000 -0$ -#6935000 -b101011001000 * -b101011000100 ) -b101011000100 + -1$ -#6940000 -0$ -#6945000 -b101011001100 * -b101011001000 ) -b101011001000 + -1$ -#6950000 -0$ -#6955000 -b101011010000 * -b101011001100 ) -b101011001100 + -1$ -#6960000 -0$ -#6965000 -b101011010100 * -b101011010000 ) -b101011010000 + -1$ -#6970000 -0$ -#6975000 -b101011011000 * -b101011010100 ) -b101011010100 + -1$ -#6980000 -0$ -#6985000 -b101011011100 * -b101011011000 ) -b101011011000 + -1$ -#6990000 -0$ -#6995000 -b101011100000 * -b101011011100 ) -b101011011100 + -1$ -#7000000 -0$ -#7005000 -b101011100100 * -b101011100000 ) -b101011100000 + -1$ -#7010000 -0$ -#7015000 -b101011101000 * -b101011100100 ) -b101011100100 + -1$ -#7020000 -0$ -#7025000 -b101011101100 * -b101011101000 ) -b101011101000 + -1$ -#7030000 -0$ -#7035000 -b101011110000 * -b101011101100 ) -b101011101100 + -1$ -#7040000 -0$ -#7045000 -b101011110100 * -b101011110000 ) -b101011110000 + -1$ -#7050000 -0$ -#7055000 -b101011111000 * -b101011110100 ) -b101011110100 + -1$ -#7060000 -0$ -#7065000 -b101011111100 * -b101011111000 ) -b101011111000 + -1$ -#7070000 -0$ -#7075000 -b101100000000 * -b101011111100 ) -b101011111100 + -1$ -#7080000 -0$ -#7085000 -b101100000100 * -b101100000000 ) -b101100000000 + -1$ -#7090000 -0$ -#7095000 -b101100001000 * -b101100000100 ) -b101100000100 + -1$ -#7100000 -0$ -#7105000 -b101100001100 * -b101100001000 ) -b101100001000 + -1$ -#7110000 -0$ -#7115000 -b101100010000 * -b101100001100 ) -b101100001100 + -1$ -#7120000 -0$ -#7125000 -b101100010100 * -b101100010000 ) -b101100010000 + -1$ -#7130000 -0$ -#7135000 -b101100011000 * -b101100010100 ) -b101100010100 + -1$ -#7140000 -0$ -#7145000 -b101100011100 * -b101100011000 ) -b101100011000 + -1$ -#7150000 -0$ -#7155000 -b101100100000 * -b101100011100 ) -b101100011100 + -1$ -#7160000 -0$ -#7165000 -b101100100100 * -b101100100000 ) -b101100100000 + -1$ -#7170000 -0$ -#7175000 -b101100101000 * -b101100100100 ) -b101100100100 + -1$ -#7180000 -0$ -#7185000 -b101100101100 * -b101100101000 ) -b101100101000 + -1$ -#7190000 -0$ -#7195000 -b101100110000 * -b101100101100 ) -b101100101100 + -1$ -#7200000 -0$ -#7205000 -b101100110100 * -b101100110000 ) -b101100110000 + -1$ -#7210000 -0$ -#7215000 -b101100111000 * -b101100110100 ) -b101100110100 + -1$ -#7220000 -0$ -#7225000 -b101100111100 * -b101100111000 ) -b101100111000 + -1$ -#7230000 -0$ -#7235000 -b101101000000 * -b101100111100 ) -b101100111100 + -1$ -#7240000 -0$ -#7245000 -b101101000100 * -b101101000000 ) -b101101000000 + -1$ -#7250000 -0$ -#7255000 -b101101001000 * -b101101000100 ) -b101101000100 + -1$ -#7260000 -0$ -#7265000 -b101101001100 * -b101101001000 ) -b101101001000 + -1$ -#7270000 -0$ -#7275000 -b101101010000 * -b101101001100 ) -b101101001100 + -1$ -#7280000 -0$ -#7285000 -b101101010100 * -b101101010000 ) -b101101010000 + -1$ -#7290000 -0$ -#7295000 -b101101011000 * -b101101010100 ) -b101101010100 + -1$ -#7300000 -0$ -#7305000 -b101101011100 * -b101101011000 ) -b101101011000 + -1$ -#7310000 -0$ -#7315000 -b101101100000 * -b101101011100 ) -b101101011100 + -1$ -#7320000 -0$ -#7325000 -b101101100100 * -b101101100000 ) -b101101100000 + -1$ -#7330000 -0$ -#7335000 -b101101101000 * -b101101100100 ) -b101101100100 + -1$ -#7340000 -0$ -#7345000 -b101101101100 * -b101101101000 ) -b101101101000 + -1$ -#7350000 -0$ -#7355000 -b101101110000 * -b101101101100 ) -b101101101100 + -1$ -#7360000 -0$ -#7365000 -b101101110100 * -b101101110000 ) -b101101110000 + -1$ -#7370000 -0$ -#7375000 -b101101111000 * -b101101110100 ) -b101101110100 + -1$ -#7380000 -0$ -#7385000 -b101101111100 * -b101101111000 ) -b101101111000 + -1$ -#7390000 -0$ -#7395000 -b101110000000 * -b101101111100 ) -b101101111100 + -1$ -#7400000 -0$ -#7405000 -b101110000100 * -b101110000000 ) -b101110000000 + -1$ -#7410000 -0$ -#7415000 -b101110001000 * -b101110000100 ) -b101110000100 + -1$ -#7420000 -0$ -#7425000 -b101110001100 * -b101110001000 ) -b101110001000 + -1$ -#7430000 -0$ -#7435000 -b101110010000 * -b101110001100 ) -b101110001100 + -1$ -#7440000 -0$ -#7445000 -b101110010100 * -b101110010000 ) -b101110010000 + -1$ -#7450000 -0$ -#7455000 -b101110011000 * -b101110010100 ) -b101110010100 + -1$ -#7460000 -0$ -#7465000 -b101110011100 * -b101110011000 ) -b101110011000 + -1$ -#7470000 -0$ -#7475000 -b101110100000 * -b101110011100 ) -b101110011100 + -1$ -#7480000 -0$ -#7485000 -b101110100100 * -b101110100000 ) -b101110100000 + -1$ -#7490000 -0$ -#7495000 -b101110101000 * -b101110100100 ) -b101110100100 + -1$ -#7500000 -0$ -#7505000 -b101110101100 * -b101110101000 ) -b101110101000 + -1$ -#7510000 -0$ -#7515000 -b101110110000 * -b101110101100 ) -b101110101100 + -1$ -#7520000 -0$ -#7525000 -b101110110100 * -b101110110000 ) -b101110110000 + -1$ -#7530000 -0$ -#7535000 -b101110111000 * -b101110110100 ) -b101110110100 + -1$ -#7540000 -0$ -#7545000 -b101110111100 * -b101110111000 ) -b101110111000 + -1$ -#7550000 -0$ -#7555000 -b101111000000 * -b101110111100 ) -b101110111100 + -1$ -#7560000 -0$ -#7565000 -b101111000100 * -b101111000000 ) -b101111000000 + -1$ -#7570000 -0$ -#7575000 -b101111001000 * -b101111000100 ) -b101111000100 + -1$ -#7580000 -0$ -#7585000 -b101111001100 * -b101111001000 ) -b101111001000 + -1$ -#7590000 -0$ -#7595000 -b101111010000 * -b101111001100 ) -b101111001100 + -1$ -#7600000 -0$ -#7605000 -b101111010100 * -b101111010000 ) -b101111010000 + -1$ -#7610000 -0$ -#7615000 -b101111011000 * -b101111010100 ) -b101111010100 + -1$ -#7620000 -0$ -#7625000 -b101111011100 * -b101111011000 ) -b101111011000 + -1$ -#7630000 -0$ -#7635000 -b101111100000 * -b101111011100 ) -b101111011100 + -1$ -#7640000 -0$ -#7645000 -b101111100100 * -b101111100000 ) -b101111100000 + -1$ -#7650000 -0$ -#7655000 -b101111101000 * -b101111100100 ) -b101111100100 + -1$ -#7660000 -0$ -#7665000 -b101111101100 * -b101111101000 ) -b101111101000 + -1$ -#7670000 -0$ -#7675000 -b101111110000 * -b101111101100 ) -b101111101100 + -1$ -#7680000 -0$ -#7685000 -b101111110100 * -b101111110000 ) -b101111110000 + -1$ -#7690000 -0$ -#7695000 -b101111111000 * -b101111110100 ) -b101111110100 + -1$ -#7700000 -0$ -#7705000 -b101111111100 * -b101111111000 ) -b101111111000 + -1$ -#7710000 -0$ -#7715000 -b110000000000 * -b101111111100 ) -b101111111100 + -1$ -#7720000 -0$ -#7725000 -b110000000100 * -b110000000000 ) -b110000000000 + -1$ -#7730000 -0$ -#7735000 -b110000001000 * -b110000000100 ) -b110000000100 + -1$ -#7740000 -0$ -#7745000 -b110000001100 * -b110000001000 ) -b110000001000 + -1$ -#7750000 -0$ -#7755000 -b110000010000 * -b110000001100 ) -b110000001100 + -1$ -#7760000 -0$ -#7765000 -b110000010100 * -b110000010000 ) -b110000010000 + -1$ -#7770000 -0$ -#7775000 -b110000011000 * -b110000010100 ) -b110000010100 + -1$ -#7780000 -0$ -#7785000 -b110000011100 * -b110000011000 ) -b110000011000 + -1$ -#7790000 -0$ -#7795000 -b110000100000 * -b110000011100 ) -b110000011100 + -1$ -#7800000 -0$ -#7805000 -b110000100100 * -b110000100000 ) -b110000100000 + -1$ -#7810000 -0$ -#7815000 -b110000101000 * -b110000100100 ) -b110000100100 + -1$ -#7820000 -0$ -#7825000 -b110000101100 * -b110000101000 ) -b110000101000 + -1$ -#7830000 -0$ -#7835000 -b110000110000 * -b110000101100 ) -b110000101100 + -1$ -#7840000 -0$ -#7845000 -b110000110100 * -b110000110000 ) -b110000110000 + -1$ -#7850000 -0$ -#7855000 -b110000111000 * -b110000110100 ) -b110000110100 + -1$ -#7860000 -0$ -#7865000 -b110000111100 * -b110000111000 ) -b110000111000 + -1$ -#7870000 -0$ -#7875000 -b110001000000 * -b110000111100 ) -b110000111100 + -1$ -#7880000 -0$ -#7885000 -b110001000100 * -b110001000000 ) -b110001000000 + -1$ -#7890000 -0$ -#7895000 -b110001001000 * -b110001000100 ) -b110001000100 + -1$ -#7900000 -0$ -#7905000 -b110001001100 * -b110001001000 ) -b110001001000 + -1$ -#7910000 -0$ -#7915000 -b110001010000 * -b110001001100 ) -b110001001100 + -1$ -#7920000 -0$ -#7925000 -b110001010100 * -b110001010000 ) -b110001010000 + -1$ -#7930000 -0$ -#7935000 -b110001011000 * -b110001010100 ) -b110001010100 + -1$ -#7940000 -0$ -#7945000 -b110001011100 * -b110001011000 ) -b110001011000 + -1$ -#7950000 -0$ -#7955000 -b110001100000 * -b110001011100 ) -b110001011100 + -1$ -#7960000 -0$ -#7965000 -b110001100100 * -b110001100000 ) -b110001100000 + -1$ -#7970000 -0$ -#7975000 -b110001101000 * -b110001100100 ) -b110001100100 + -1$ -#7980000 -0$ -#7985000 -b110001101100 * -b110001101000 ) -b110001101000 + -1$ -#7990000 -0$ -#7995000 -b110001110000 * -b110001101100 ) -b110001101100 + -1$ -#8000000 -0$ -#8005000 -b110001110100 * -b110001110000 ) -b110001110000 + -1$ -#8010000 -0$ -#8015000 -b110001111000 * -b110001110100 ) -b110001110100 + -1$ -#8020000 -0$ -#8025000 -b110001111100 * -b110001111000 ) -b110001111000 + -1$ -#8030000 -0$ -#8035000 -b110010000000 * -b110001111100 ) -b110001111100 + -1$ -#8040000 -0$ -#8045000 -b110010000100 * -b110010000000 ) -b110010000000 + -1$ -#8050000 -0$ -#8055000 -b110010001000 * -b110010000100 ) -b110010000100 + -1$ -#8060000 -0$ -#8065000 -b110010001100 * -b110010001000 ) -b110010001000 + -1$ -#8070000 -0$ -#8075000 -b110010010000 * -b110010001100 ) -b110010001100 + -1$ -#8080000 -0$ -#8085000 -b110010010100 * -b110010010000 ) -b110010010000 + -1$ -#8090000 -0$ -#8095000 -b110010011000 * -b110010010100 ) -b110010010100 + -1$ -#8100000 -0$ -#8105000 -b110010011100 * -b110010011000 ) -b110010011000 + -1$ -#8110000 -0$ -#8115000 -b110010100000 * -b110010011100 ) -b110010011100 + -1$ -#8120000 -0$ -#8125000 -b110010100100 * -b110010100000 ) -b110010100000 + -1$ -#8130000 -0$ -#8135000 -b110010101000 * -b110010100100 ) -b110010100100 + -1$ -#8140000 -0$ -#8145000 -b110010101100 * -b110010101000 ) -b110010101000 + -1$ -#8150000 -0$ -#8155000 -b110010110000 * -b110010101100 ) -b110010101100 + -1$ -#8160000 -0$ -#8165000 -b110010110100 * -b110010110000 ) -b110010110000 + -1$ -#8170000 -0$ -#8175000 -b110010111000 * -b110010110100 ) -b110010110100 + -1$ -#8180000 -0$ -#8185000 -b110010111100 * -b110010111000 ) -b110010111000 + -1$ -#8190000 -0$ -#8195000 -b110011000000 * -b110010111100 ) -b110010111100 + -1$ -#8200000 -0$ -#8205000 -b110011000100 * -b110011000000 ) -b110011000000 + -1$ -#8210000 -0$ -#8215000 -b110011001000 * -b110011000100 ) -b110011000100 + -1$ -#8220000 -0$ -#8225000 -b110011001100 * -b110011001000 ) -b110011001000 + -1$ -#8230000 -0$ -#8235000 -b110011010000 * -b110011001100 ) -b110011001100 + -1$ -#8240000 -0$ -#8245000 -b110011010100 * -b110011010000 ) -b110011010000 + -1$ -#8250000 -0$ -#8255000 -b110011011000 * -b110011010100 ) -b110011010100 + -1$ -#8260000 -0$ -#8265000 -b110011011100 * -b110011011000 ) -b110011011000 + -1$ -#8270000 -0$ -#8275000 -b110011100000 * -b110011011100 ) -b110011011100 + -1$ -#8280000 -0$ -#8285000 -b110011100100 * -b110011100000 ) -b110011100000 + -1$ -#8290000 -0$ -#8295000 -b110011101000 * -b110011100100 ) -b110011100100 + -1$ -#8300000 -0$ -#8305000 -b110011101100 * -b110011101000 ) -b110011101000 + -1$ -#8310000 -0$ -#8315000 -b110011110000 * -b110011101100 ) -b110011101100 + -1$ -#8320000 -0$ -#8325000 -b110011110100 * -b110011110000 ) -b110011110000 + -1$ -#8330000 -0$ -#8335000 -b110011111000 * -b110011110100 ) -b110011110100 + -1$ -#8340000 -0$ -#8345000 -b110011111100 * -b110011111000 ) -b110011111000 + -1$ -#8350000 -0$ -#8355000 -b110100000000 * -b110011111100 ) -b110011111100 + -1$ -#8360000 -0$ -#8365000 -b110100000100 * -b110100000000 ) -b110100000000 + -1$ -#8370000 -0$ -#8375000 -b110100001000 * -b110100000100 ) -b110100000100 + -1$ -#8380000 -0$ -#8385000 -b110100001100 * -b110100001000 ) -b110100001000 + -1$ -#8390000 -0$ -#8395000 -b110100010000 * -b110100001100 ) -b110100001100 + -1$ -#8400000 -0$ -#8405000 -b110100010100 * -b110100010000 ) -b110100010000 + -1$ -#8410000 -0$ -#8415000 -b110100011000 * -b110100010100 ) -b110100010100 + -1$ -#8420000 -0$ -#8425000 -b110100011100 * -b110100011000 ) -b110100011000 + -1$ -#8430000 -0$ -#8435000 -b110100100000 * -b110100011100 ) -b110100011100 + -1$ -#8440000 -0$ -#8445000 -b110100100100 * -b110100100000 ) -b110100100000 + -1$ -#8450000 -0$ -#8455000 -b110100101000 * -b110100100100 ) -b110100100100 + -1$ -#8460000 -0$ -#8465000 -b110100101100 * -b110100101000 ) -b110100101000 + -1$ -#8470000 -0$ -#8475000 -b110100110000 * -b110100101100 ) -b110100101100 + -1$ -#8480000 -0$ -#8485000 -b110100110100 * -b110100110000 ) -b110100110000 + -1$ -#8490000 -0$ -#8495000 -b110100111000 * -b110100110100 ) -b110100110100 + -1$ -#8500000 -0$ -#8505000 -b110100111100 * -b110100111000 ) -b110100111000 + -1$ -#8510000 -0$ -#8515000 -b110101000000 * -b110100111100 ) -b110100111100 + -1$ -#8520000 -0$ -#8525000 -b110101000100 * -b110101000000 ) -b110101000000 + -1$ -#8530000 -0$ -#8535000 -b110101001000 * -b110101000100 ) -b110101000100 + -1$ -#8540000 -0$ -#8545000 -b110101001100 * -b110101001000 ) -b110101001000 + -1$ -#8550000 -0$ -#8555000 -b110101010000 * -b110101001100 ) -b110101001100 + -1$ -#8560000 -0$ -#8565000 -b110101010100 * -b110101010000 ) -b110101010000 + -1$ -#8570000 -0$ -#8575000 -b110101011000 * -b110101010100 ) -b110101010100 + -1$ -#8580000 -0$ -#8585000 -b110101011100 * -b110101011000 ) -b110101011000 + -1$ -#8590000 -0$ -#8595000 -b110101100000 * -b110101011100 ) -b110101011100 + -1$ -#8600000 -0$ -#8605000 -b110101100100 * -b110101100000 ) -b110101100000 + -1$ -#8610000 -0$ -#8615000 -b110101101000 * -b110101100100 ) -b110101100100 + -1$ -#8620000 -0$ -#8625000 -b110101101100 * -b110101101000 ) -b110101101000 + -1$ -#8630000 -0$ -#8635000 -b110101110000 * -b110101101100 ) -b110101101100 + -1$ -#8640000 -0$ -#8645000 -b110101110100 * -b110101110000 ) -b110101110000 + -1$ -#8650000 -0$ -#8655000 -b110101111000 * -b110101110100 ) -b110101110100 + -1$ -#8660000 -0$ -#8665000 -b110101111100 * -b110101111000 ) -b110101111000 + -1$ -#8670000 -0$ -#8675000 -b110110000000 * -b110101111100 ) -b110101111100 + -1$ -#8680000 -0$ -#8685000 -b110110000100 * -b110110000000 ) -b110110000000 + -1$ -#8690000 -0$ -#8695000 -b110110001000 * -b110110000100 ) -b110110000100 + -1$ -#8700000 -0$ -#8705000 -b110110001100 * -b110110001000 ) -b110110001000 + -1$ -#8710000 -0$ -#8715000 -b110110010000 * -b110110001100 ) -b110110001100 + -1$ -#8720000 -0$ -#8725000 -b110110010100 * -b110110010000 ) -b110110010000 + -1$ -#8730000 -0$ -#8735000 -b110110011000 * -b110110010100 ) -b110110010100 + -1$ -#8740000 -0$ -#8745000 -b110110011100 * -b110110011000 ) -b110110011000 + -1$ -#8750000 -0$ -#8755000 -b110110100000 * -b110110011100 ) -b110110011100 + -1$ -#8760000 -0$ -#8765000 -b110110100100 * -b110110100000 ) -b110110100000 + -1$ -#8770000 -0$ -#8775000 -b110110101000 * -b110110100100 ) -b110110100100 + -1$ -#8780000 -0$ -#8785000 -b110110101100 * -b110110101000 ) -b110110101000 + -1$ -#8790000 -0$ -#8795000 -b110110110000 * -b110110101100 ) -b110110101100 + -1$ -#8800000 -0$ -#8805000 -b110110110100 * -b110110110000 ) -b110110110000 + -1$ -#8810000 -0$ -#8815000 -b110110111000 * -b110110110100 ) -b110110110100 + -1$ -#8820000 -0$ -#8825000 -b110110111100 * -b110110111000 ) -b110110111000 + -1$ -#8830000 -0$ -#8835000 -b110111000000 * -b110110111100 ) -b110110111100 + -1$ -#8840000 -0$ -#8845000 -b110111000100 * -b110111000000 ) -b110111000000 + -1$ -#8850000 -0$ -#8855000 -b110111001000 * -b110111000100 ) -b110111000100 + -1$ -#8860000 -0$ -#8865000 -b110111001100 * -b110111001000 ) -b110111001000 + -1$ -#8870000 -0$ -#8875000 -b110111010000 * -b110111001100 ) -b110111001100 + -1$ -#8880000 -0$ -#8885000 -b110111010100 * -b110111010000 ) -b110111010000 + -1$ -#8890000 -0$ -#8895000 -b110111011000 * -b110111010100 ) -b110111010100 + -1$ -#8900000 -0$ -#8905000 -b110111011100 * -b110111011000 ) -b110111011000 + -1$ -#8910000 -0$ -#8915000 -b110111100000 * -b110111011100 ) -b110111011100 + -1$ -#8920000 -0$ -#8925000 -b110111100100 * -b110111100000 ) -b110111100000 + -1$ -#8930000 -0$ -#8935000 -b110111101000 * -b110111100100 ) -b110111100100 + -1$ -#8940000 -0$ -#8945000 -b110111101100 * -b110111101000 ) -b110111101000 + -1$ -#8950000 -0$ -#8955000 -b110111110000 * -b110111101100 ) -b110111101100 + -1$ -#8960000 -0$ -#8965000 -b110111110100 * -b110111110000 ) -b110111110000 + -1$ -#8970000 -0$ -#8975000 -b110111111000 * -b110111110100 ) -b110111110100 + -1$ -#8980000 -0$ -#8985000 -b110111111100 * -b110111111000 ) -b110111111000 + -1$ -#8990000 -0$ -#8995000 -b111000000000 * -b110111111100 ) -b110111111100 + -1$ -#9000000 -0$ -#9005000 -b111000000100 * -b111000000000 ) -b111000000000 + -1$ -#9010000 -0$ -#9015000 -b111000001000 * -b111000000100 ) -b111000000100 + -1$ -#9020000 -0$ -#9025000 -b111000001100 * -b111000001000 ) -b111000001000 + -1$ -#9030000 -0$ -#9035000 -b111000010000 * -b111000001100 ) -b111000001100 + -1$ -#9040000 -0$ -#9045000 -b111000010100 * -b111000010000 ) -b111000010000 + -1$ -#9050000 -0$ -#9055000 -b111000011000 * -b111000010100 ) -b111000010100 + -1$ -#9060000 -0$ -#9065000 -b111000011100 * -b111000011000 ) -b111000011000 + -1$ -#9070000 -0$ -#9075000 -b111000100000 * -b111000011100 ) -b111000011100 + -1$ -#9080000 -0$ -#9085000 -b111000100100 * -b111000100000 ) -b111000100000 + -1$ -#9090000 -0$ -#9095000 -b111000101000 * -b111000100100 ) -b111000100100 + -1$ -#9100000 -0$ -#9105000 -b111000101100 * -b111000101000 ) -b111000101000 + -1$ -#9110000 -0$ -#9115000 -b111000110000 * -b111000101100 ) -b111000101100 + -1$ -#9120000 -0$ -#9125000 -b111000110100 * -b111000110000 ) -b111000110000 + -1$ -#9130000 -0$ -#9135000 -b111000111000 * -b111000110100 ) -b111000110100 + -1$ -#9140000 -0$ -#9145000 -b111000111100 * -b111000111000 ) -b111000111000 + -1$ -#9150000 -0$ -#9155000 -b111001000000 * -b111000111100 ) -b111000111100 + -1$ -#9160000 -0$ -#9165000 -b111001000100 * -b111001000000 ) -b111001000000 + -1$ -#9170000 -0$ -#9175000 -b111001001000 * -b111001000100 ) -b111001000100 + -1$ -#9180000 -0$ -#9185000 -b111001001100 * -b111001001000 ) -b111001001000 + -1$ -#9190000 -0$ -#9195000 -b111001010000 * -b111001001100 ) -b111001001100 + -1$ -#9200000 -0$ -#9205000 -b111001010100 * -b111001010000 ) -b111001010000 + -1$ -#9210000 -0$ -#9215000 -b111001011000 * -b111001010100 ) -b111001010100 + -1$ -#9220000 -0$ -#9225000 -b111001011100 * -b111001011000 ) -b111001011000 + -1$ -#9230000 -0$ -#9235000 -b111001100000 * -b111001011100 ) -b111001011100 + -1$ -#9240000 -0$ -#9245000 -b111001100100 * -b111001100000 ) -b111001100000 + -1$ -#9250000 -0$ -#9255000 -b111001101000 * -b111001100100 ) -b111001100100 + -1$ -#9260000 -0$ -#9265000 -b111001101100 * -b111001101000 ) -b111001101000 + -1$ -#9270000 -0$ -#9275000 -b111001110000 * -b111001101100 ) -b111001101100 + -1$ -#9280000 -0$ -#9285000 -b111001110100 * -b111001110000 ) -b111001110000 + -1$ -#9290000 -0$ -#9295000 -b111001111000 * -b111001110100 ) -b111001110100 + -1$ -#9300000 -0$ -#9305000 -b111001111100 * -b111001111000 ) -b111001111000 + -1$ -#9310000 -0$ -#9315000 -b111010000000 * -b111001111100 ) -b111001111100 + -1$ -#9320000 -0$ -#9325000 -b111010000100 * -b111010000000 ) -b111010000000 + -1$ -#9330000 -0$ -#9335000 -b111010001000 * -b111010000100 ) -b111010000100 + -1$ -#9340000 -0$ -#9345000 -b111010001100 * -b111010001000 ) -b111010001000 + -1$ -#9350000 -0$ -#9355000 -b111010010000 * -b111010001100 ) -b111010001100 + -1$ -#9360000 -0$ -#9365000 -b111010010100 * -b111010010000 ) -b111010010000 + -1$ -#9370000 -0$ -#9375000 -b111010011000 * -b111010010100 ) -b111010010100 + -1$ -#9380000 -0$ -#9385000 -b111010011100 * -b111010011000 ) -b111010011000 + -1$ -#9390000 -0$ -#9395000 -b111010100000 * -b111010011100 ) -b111010011100 + -1$ -#9400000 -0$ -#9405000 -b111010100100 * -b111010100000 ) -b111010100000 + -1$ -#9410000 -0$ -#9415000 -b111010101000 * -b111010100100 ) -b111010100100 + -1$ -#9420000 -0$ -#9425000 -b111010101100 * -b111010101000 ) -b111010101000 + -1$ -#9430000 -0$ -#9435000 -b111010110000 * -b111010101100 ) -b111010101100 + -1$ -#9440000 -0$ -#9445000 -b111010110100 * -b111010110000 ) -b111010110000 + -1$ -#9450000 -0$ -#9455000 -b111010111000 * -b111010110100 ) -b111010110100 + -1$ -#9460000 -0$ -#9465000 -b111010111100 * -b111010111000 ) -b111010111000 + -1$ -#9470000 -0$ -#9475000 -b111011000000 * -b111010111100 ) -b111010111100 + -1$ -#9480000 -0$ -#9485000 -b111011000100 * -b111011000000 ) -b111011000000 + -1$ -#9490000 -0$ -#9495000 -b111011001000 * -b111011000100 ) -b111011000100 + -1$ -#9500000 -0$ -#9505000 -b111011001100 * -b111011001000 ) -b111011001000 + -1$ -#9510000 -0$ -#9515000 -b111011010000 * -b111011001100 ) -b111011001100 + -1$ -#9520000 -0$ -#9525000 -b111011010100 * -b111011010000 ) -b111011010000 + -1$ -#9530000 -0$ -#9535000 -b111011011000 * -b111011010100 ) -b111011010100 + -1$ -#9540000 -0$ -#9545000 -b111011011100 * -b111011011000 ) -b111011011000 + -1$ -#9550000 -0$ -#9555000 -b111011100000 * -b111011011100 ) -b111011011100 + -1$ -#9560000 -0$ -#9565000 -b111011100100 * -b111011100000 ) -b111011100000 + -1$ -#9570000 -0$ -#9575000 -b111011101000 * -b111011100100 ) -b111011100100 + -1$ -#9580000 -0$ -#9585000 -b111011101100 * -b111011101000 ) -b111011101000 + -1$ -#9590000 -0$ -#9595000 -b111011110000 * -b111011101100 ) -b111011101100 + -1$ -#9600000 -0$ -#9605000 -b111011110100 * -b111011110000 ) -b111011110000 + -1$ -#9610000 -0$ -#9615000 -b111011111000 * -b111011110100 ) -b111011110100 + -1$ -#9620000 -0$ -#9625000 -b111011111100 * -b111011111000 ) -b111011111000 + -1$ -#9630000 -0$ -#9635000 -b111100000000 * -b111011111100 ) -b111011111100 + -1$ -#9640000 -0$ -#9645000 -b111100000100 * -b111100000000 ) -b111100000000 + -1$ -#9650000 -0$ -#9655000 -b111100001000 * -b111100000100 ) -b111100000100 + -1$ -#9660000 -0$ -#9665000 -b111100001100 * -b111100001000 ) -b111100001000 + -1$ -#9670000 -0$ -#9675000 -b111100010000 * -b111100001100 ) -b111100001100 + -1$ -#9680000 -0$ -#9685000 -b111100010100 * -b111100010000 ) -b111100010000 + -1$ -#9690000 -0$ -#9695000 -b111100011000 * -b111100010100 ) -b111100010100 + -1$ -#9700000 -0$ -#9705000 -b111100011100 * -b111100011000 ) -b111100011000 + -1$ -#9710000 -0$ -#9715000 -b111100100000 * -b111100011100 ) -b111100011100 + -1$ -#9720000 -0$ -#9725000 -b111100100100 * -b111100100000 ) -b111100100000 + -1$ -#9730000 -0$ -#9735000 -b111100101000 * -b111100100100 ) -b111100100100 + -1$ -#9740000 -0$ -#9745000 -b111100101100 * -b111100101000 ) -b111100101000 + -1$ -#9750000 -0$ -#9755000 -b111100110000 * -b111100101100 ) -b111100101100 + -1$ -#9760000 -0$ -#9765000 -b111100110100 * -b111100110000 ) -b111100110000 + -1$ -#9770000 -0$ -#9775000 -b111100111000 * -b111100110100 ) -b111100110100 + -1$ -#9780000 -0$ -#9785000 -b111100111100 * -b111100111000 ) -b111100111000 + -1$ -#9790000 -0$ -#9795000 -b111101000000 * -b111100111100 ) -b111100111100 + -1$ -#9800000 -0$ -#9805000 -b111101000100 * -b111101000000 ) -b111101000000 + -1$ -#9810000 -0$ -#9815000 -b111101001000 * -b111101000100 ) -b111101000100 + -1$ -#9820000 -0$ -#9825000 -b111101001100 * -b111101001000 ) -b111101001000 + -1$ -#9830000 -0$ -#9835000 -b111101010000 * -b111101001100 ) -b111101001100 + -1$ -#9840000 -0$ -#9845000 -b111101010100 * -b111101010000 ) -b111101010000 + -1$ -#9850000 -0$ -#9855000 -b111101011000 * -b111101010100 ) -b111101010100 + -1$ -#9860000 -0$ -#9865000 -b111101011100 * -b111101011000 ) -b111101011000 + -1$ -#9870000 -0$ -#9875000 -b111101100000 * -b111101011100 ) -b111101011100 + -1$ -#9880000 -0$ -#9885000 -b111101100100 * -b111101100000 ) -b111101100000 + -1$ -#9890000 -0$ -#9895000 -b111101101000 * -b111101100100 ) -b111101100100 + -1$ -#9900000 -0$ -#9905000 -b111101101100 * -b111101101000 ) -b111101101000 + -1$ -#9910000 -0$ -#9915000 -b111101110000 * -b111101101100 ) -b111101101100 + -1$ -#9920000 -0$ -#9925000 -b111101110100 * -b111101110000 ) -b111101110000 + -1$ -#9930000 -0$ -#9935000 -b111101111000 * -b111101110100 ) -b111101110100 + -1$ -#9940000 -0$ -#9945000 -b111101111100 * -b111101111000 ) -b111101111000 + -1$ -#9950000 -0$ -#9955000 -b111110000000 * -b111101111100 ) -b111101111100 + -1$ -#9960000 -0$ -#9965000 -b111110000100 * -b111110000000 ) -b111110000000 + -1$ -#9970000 -0$ -#9975000 -b111110001000 * -b111110000100 ) -b111110000100 + -1$ -#9980000 -0$ -#9985000 -b111110001100 * -b111110001000 ) -b111110001000 + -1$ -#9990000 -0$ -#9995000 -b111110010000 * -b111110001100 ) -b111110001100 + -1$ -#10000000 -0$ -#10005000 -b111110010100 * -b111110010000 ) -b111110010000 + -1$ -#10010000 -0$ -#10015000 -b111110011000 * -b111110010100 ) -b111110010100 + -1$ -#10020000 -0$ -#10025000 -b111110011100 * -b111110011000 ) -b111110011000 + -1$ -#10030000 -0$ -#10035000 -b111110100000 * -b111110011100 ) -b111110011100 + -1$ -#10040000 -0$ -#10045000 -b111110100100 * -b111110100000 ) -b111110100000 + -1$ -#10050000 -0$ -#10055000 -b111110101000 * -b111110100100 ) -b111110100100 + -1$ -#10060000 -0$ -#10065000 -b111110101100 * -b111110101000 ) -b111110101000 + -1$ -#10070000 -0$ -#10075000 -b111110110000 * -b111110101100 ) -b111110101100 + -1$ -#10080000 -0$ -#10085000 -b111110110100 * -b111110110000 ) -b111110110000 + -1$ -#10090000 -0$ -#10095000 -b111110111000 * -b111110110100 ) -b111110110100 + -1$ -#10100000 -0$ -#10105000 -b111110111100 * -b111110111000 ) -b111110111000 + -1$ -#10110000 -0$ -#10115000 -b111111000000 * -b111110111100 ) -b111110111100 + -1$ -#10120000 -0$ -#10125000 -b111111000100 * -b111111000000 ) -b111111000000 + -1$ -#10130000 -0$ -#10135000 -b111111001000 * -b111111000100 ) -b111111000100 + -1$ -#10140000 -0$ -#10145000 -b111111001100 * -b111111001000 ) -b111111001000 + -1$ -#10150000 -0$ -#10155000 -b111111010000 * -b111111001100 ) -b111111001100 + -1$ -#10160000 -0$ -#10165000 -b111111010100 * -b111111010000 ) -b111111010000 + -1$ -#10170000 -0$ -#10175000 -b111111011000 * -b111111010100 ) -b111111010100 + -1$ -#10180000 -0$ -#10185000 -b111111011100 * -b111111011000 ) -b111111011000 + -1$ -#10190000 -0$ -#10195000 -b111111100000 * -b111111011100 ) -b111111011100 + -1$ -#10200000 -0$ -#10205000 -b111111100100 * -b111111100000 ) -b111111100000 + -1$ -#10210000 -0$ -#10215000 -b111111101000 * -b111111100100 ) -b111111100100 + -1$ -#10220000 -0$ -#10225000 -b111111101100 * -b111111101000 ) -b111111101000 + -1$ -#10230000 -0$ -#10235000 -b111111110000 * -b111111101100 ) -b111111101100 + -1$ -#10240000 -0$ -#10245000 -b111111110100 * -b11011110101011011011111011101111 ! -b11011110101011011011111011101111 ( -b11011110101011011011111011101111 , -b111111110000 ) -b111111110000 + -1$ -#10250000 -0$ -#10255000 -b111111111000 * -b11111110111011011111101011001110 ! -b11111110111011011111101011001110 ( -b11111110111011011111101011001110 , -b111111110100 ) -b111111110100 + -1$ -#10260000 -0$ -#10265000 -b111111111100 * -b11001010111111101011101010111110 ! -b11001010111111101011101010111110 ( -b11001010111111101011101010111110 , -b111111111000 ) -b111111111000 + -1$ -#10270000 -0$ -#10275000 -b1000000000000 * -b11110000000011011100101011111110 ! -b11110000000011011100101011111110 ( -b11110000000011011100101011111110 , -b111111111100 ) -b111111111100 + -1$ -#10280000 -0$ -#10285000 -b1000000000100 * -bx ! -bx ( -bx , -b1000000000000 ) -b1000000000000 + -1$ -#10290000 -1& -0$ -#10295000 -b100 * -b10001001000100011001101000100 ! -b10001001000100011001101000100 ( -b10001001000100011001101000100 , -b0 ) -b0 + -1$ -#10300000 -b100000000 * -b100000000 % -b100000000 ' -1" -0& -0$ -#10305000 -b1000000000 * -b11011110101011011011111011101111 ! -b11011110101011011011111011101111 ( -b11011110101011011011111011101111 , -b100000000 ) -b100000000 + -1$ -#10310000 -0$ -#10315000 -b1100000000 * -b11110000000011011100101011111110 ! -b11110000000011011100101011111110 ( -b11110000000011011100101011111110 , -b1000000000 ) -b1000000000 + -1$ -#10320000 -b1000000100 * -0" -0$ -#10325000 -b1000001000 * -b11010000000011011111101011111110 ! -b11010000000011011111101011111110 ( -b11010000000011011111101011111110 , -b1000000100 ) -b1000000100 + -1$ -#10330000 -b10001000000100 * -1" -b10000000000000 % -b10000000000000 ' -0$ -#10335000 -b100001000000100 * -bx ! -bx ( -bx , -b10001000000100 ) -b10001000000100 + -1$ -#10340000 -b10001000000100 * -b0 % -b0 ' -0$ -#10345000 -1$ -#10350000 -b10001000000011 * -b11111111111111111111111111111111 % -b11111111111111111111111111111111 ' -0$ -#10355000 -b10001000000010 * -b10001000000011 ) -b10001000000011 + -1$ -#10360000 -0$ diff --git a/test/tb_template.sv.m4 b/test/tb_template.sv.m4 new file mode 100644 index 0000000..a47e952 --- /dev/null +++ b/test/tb_template.sv.m4 @@ -0,0 +1,24 @@ +changequote([,])dnl +`timescale 1ns/1ps + +`include "test/utils.svh" + +module M4__TB_NAME; + + /* module name here */ uut + ( .clk ( clk ) + // other inputs/outputs + ); + + initial begin + clk = 0; + forever #5 clk = ~clk; + end + + initial begin + // write tests here + end + + `SETUP_VCD_DUMP(M4__TB_NAME) + +endmodule diff --git a/test/utils.svh b/test/utils.svh new file mode 100644 index 0000000..a3bdf36 --- /dev/null +++ b/test/utils.svh @@ -0,0 +1,21 @@ +`ifndef TEST__UTILS_SVH +`define TEST__UTILS_SVH + +`define SETUP_VCD_DUMP(module_name) \ + initial begin \ + string vcd_path; \ + string vcd_filename; \ + \ + if ($test$plusargs("VCD_PATH")) begin \ + if ($value$plusargs("VCD_PATH=%s", vcd_path) == 0) begin \ + $display("VCD_PATH not set, not dumping VCD"); \ + end \ + \ + vcd_filename = $sformatf("%s/%s.vcd", vcd_path, `"module_name`"); \ + \ + $dumpfile(vcd_filename); \ + $dumpvars(0, module_name); \ + end \ + end + +`endif diff --git a/test/vcd/.gitkeep b/test/vcd/.gitkeep new file mode 100644 index 0000000..e69de29