Http2.rules: def of bend-kit-http2@0.4.0.0 Import: import bend-kit-http2@0.4.0.0/http2.bend as Http2 Lines 107-147 of bend-kit-http2@0.4.0.0/http2.bend: https://jend.leeeet.dev/read.txt?path=bend-kit-http2@0.4.0.0/http2.bend&start_line=107&end_line=147 import Base def rules(+kind: U32, +flags: U32, +stream: U32, +len: U32, +pad: U32, +promised: U32, +value: U32, m: Maybe<&2, Error>) -> Maybe<&2, Error>: match kind: case 0: first(reject(U32.is_eq(stream, 0), 1, True{}, stream), first(reject(Bool.and(has(flags, 8), U32.is_eq(len, 0)), 6, False{}, stream), reject(padding(flags, len, 0, pad), 1, True{}, stream))) case 1: +fixed = Bool.pick(U32, has(flags, 32), 5, 0) +prefix = Bool.pick(U32, has(flags, 8), 1, 0) first(reject(U32.is_eq(stream, 0), 1, True{}, stream), first(reject(U32.is_lt(len, (fixed + prefix : U32)), 6, True{}, stream), reject(padding(flags, len, fixed, pad), 1, True{}, stream))) case 2: first(reject(U32.is_ne(len, 5), 6, U32.is_eq(stream, 0), stream), reject(U32.is_eq(stream, 0), 1, True{}, stream)) case 3: first(reject(U32.is_ne(len, 4), 6, True{}, stream), reject(U32.is_eq(stream, 0), 1, True{}, stream)) case 4: first(reject(U32.is_ne(stream, 0), 1, True{}, stream), first(reject(Bool.and(has(flags, 1), U32.is_ne(len, 0)), 6, True{}, stream), first(reject(U32.is_ne((len % 6 : U32), 0), 6, True{}, stream), m))) case 5: +prefix = Bool.pick(U32, has(flags, 8), 1, 0) first(reject(U32.is_eq(stream, 0), 1, True{}, stream), first(reject(U32.is_lt(len, (prefix + 4 : U32)), 6, True{}, stream), first(reject(padding(flags, len, 4, pad), 1, True{}, stream), reject(U32.is_eq(promised, 0), 1, True{}, stream)))) case 6: first(reject(U32.is_ne(len, 8), 6, True{}, stream), reject(U32.is_ne(stream, 0), 1, True{}, stream)) case 7: first(reject(U32.is_lt(len, 8), 6, True{}, stream), reject(U32.is_ne(stream, 0), 1, True{}, stream)) case 8: first(reject(U32.is_ne(len, 4), 6, U32.is_eq(stream, 0), stream), reject(U32.is_eq((value .&. 2147483647 : U32), 0), 1, U32.is_eq(stream, 0), stream)) case 9: reject(U32.is_eq(stream, 0), 1, True{}, stream) case _: None{} Uses (18): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool.and https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool.pick https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Maybe https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32 https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.add https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.and https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.is_eq https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.is_lt https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.is_ne https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.mod https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Word.Con https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Word.Nil https://jend.leeeet.dev/definition.txt?path=bend-kit-http2@0.4.0.0/http2.bend&name=Error https://jend.leeeet.dev/definition.txt?path=bend-kit-http2@0.4.0.0/http2.bend&name=first https://jend.leeeet.dev/definition.txt?path=bend-kit-http2@0.4.0.0/http2.bend&name=has https://jend.leeeet.dev/definition.txt?path=bend-kit-http2@0.4.0.0/http2.bend&name=padding https://jend.leeeet.dev/definition.txt?path=bend-kit-http2@0.4.0.0/http2.bend&name=reject