#N canvas 400 289 649 526 10; #X obj 131 172 inlet byte; #X obj 131 316 outlet byte; #N canvas 327 0 739 602 shifter 0; #X obj 166 330 list split 1; #X obj 166 277 until; #X obj 166 305 list append; #X obj 266 330 bang; #X obj 166 356 +; #X obj 166 409 t f f; #X obj 166 254 t b l b; #X msg 215 375 0; #X obj 166 380 << 6; #X obj 166 431 >> 6; #X obj 134 469 f; #X obj 134 208 t b l; #X obj 134 169 inlet multibytelist; #X obj 134 497 outlet bytestream; #X text 74 60 converts a correctly-sized multi-byte list into a single code-point \, by shifting and adding the elements appropriately.; #X text 77 108 header-bits (e.g. bits not carrying any pay-load) MUST be stripped off beforehand.; #X connect 0 0 4 0; #X connect 0 1 2 1; #X connect 0 2 3 0; #X connect 1 0 2 0; #X connect 2 0 0 0; #X connect 3 0 1 1; #X connect 4 0 8 0; #X connect 5 0 9 0; #X connect 5 1 4 1; #X connect 6 0 1 0; #X connect 6 1 2 1; #X connect 6 2 7 0; #X connect 7 0 4 1; #X connect 8 0 5 0; #X connect 9 0 10 1; #X connect 10 0 13 0; #X connect 11 0 10 0; #X connect 11 1 6 0; #X connect 12 0 11 0; #X restore 131 283 pd shifter; #X text 222 316 unicode code number; #X text 215 170 UTF-8 multibyte; #N canvas 272 0 977 874 stream2multibytelist 0; #X text 259 228 aux; #X text 393 231 2byte; #X text 456 233 3byte; #X text 526 233 4byte; #X text 180 232 1byte; #X obj 181 249 & 127; #X obj 391 249 & 31; #X obj 251 249 & 63; #X obj 460 249 & 15; #X obj 530 249 & 7; #X obj 251 270 t f b; #X msg 213 292 1; #X obj 248 581 t l l; #X obj 181 613 list prepend; #X msg 423 294 2; #X obj 181 271 t f b; #X obj 391 270 t f b; #X obj 460 273 t f b; #X msg 492 297 3; #X obj 530 271 t f b; #X msg 562 295 4; #X obj 248 555 list prepend; #X obj 181 207 moses 128; #X obj 251 207 moses 192; #X obj 391 207 moses 224; #X obj 460 207 moses 240; #X obj 329 534 t b b; #X obj 181 689 outlet multibytelist; #X obj 181 154 inlet bytestream; #X obj 456 683 outlet error; #X text 58 35 converts a bytestream into atomic multibyte representations (aka "list"s) of characters.; #X text 63 69 header-bits (used for describing the multibyte-nature in the incoming stream) are stripped of the lists); #X text 521 479 errors:; #X text 550 502 a continuation-byte at the beginning; #X text 550 518 a continuation-byte after the last byte; #X text 550 542 a start-byte within a sequence; #X text 555 587 192-193: overlong encoding; #X text 555 618 245-253: restricted by RFC-3629; #X text 556 637 254-255: not defined; #X obj 530 207 moses 245; #X obj 590 238 t b; #X text 653 243 5byte \, 6byte; #X text 653 229 codepoint > 0x10FFFF; #X text 653 259 undefined; #X obj 520 634 t b; #X obj 181 181 t f f; #X obj 181 643 t l b; #N canvas 234 245 992 588 multibyte 0; #X obj 70 66 inlet byte; #X obj 313 61 inlet newlength; #X obj 115 543 outlet byte|bang; #X text 246 539 byte: append byte to list; #X text 247 556 bang: list has finished; #X obj 527 464 outlet error; #X obj 527 175 select 0; #X text 577 206 unexpected byte (continuation-byte at beginning); #X obj 70 100 pack 0 0; #X msg 132 100 0; #X obj 70 258 select 0; #X text 148 263 state: 0=expect new sequence; #X text 199 280 1=expect continuation; #X obj 70 196 == 0; #X text 76 214 0=newbyte; #X text 76 227 1==contbyte; #X text 605 312 overlong; #X obj 115 483 f; #X obj 70 145 swap; #X obj 70 168 t f f; #X obj 70 279 f; #X obj 70 308 select 0; #X obj 70 347 i; #X obj 99 347 - 1; #X obj 70 390 select 1; #X obj 70 413 t b b; #X msg 185 350 0; #X obj 121 328 t f b; #X msg 153 349 1; #X obj 185 372 t f; #X obj 330 383 < 1; #X obj 330 408 select 1; #X obj 70 121 t l b l; #X obj 549 317 t b b; #X obj 527 213 t b b; #X obj 70 369 t f b f; #X obj 116 509 t a a; #X obj 527 422 t b b; #X text 79 30 now this is a bit overcomplicated....; #X connect 0 0 8 0; #X connect 1 0 8 1; #X connect 6 0 34 0; #X connect 8 0 32 0; #X connect 9 0 8 1; #X connect 10 0 20 0; #X connect 10 1 34 0; #X connect 13 0 10 0; #X connect 17 0 36 0; #X connect 18 0 19 0; #X connect 18 1 17 1; #X connect 19 0 13 0; #X connect 19 1 20 1; #X connect 20 0 21 0; #X connect 21 0 22 0; #X connect 21 1 27 0; #X connect 22 0 23 0; #X connect 22 0 35 0; #X connect 23 0 22 1; #X connect 24 0 25 0; #X connect 24 1 30 0; #X connect 25 0 36 0; #X connect 25 1 26 0; #X connect 26 0 29 0; #X connect 27 0 22 0; #X connect 27 1 28 0; #X connect 28 0 29 0; #X connect 29 0 10 1; #X connect 30 0 31 0; #X connect 31 0 33 0; #X connect 32 0 18 0; #X connect 32 1 9 0; #X connect 33 0 37 0; #X connect 34 0 37 0; #X connect 35 0 24 0; #X connect 35 1 17 0; #X connect 36 0 2 0; #X connect 37 0 5 0; #X connect 37 1 26 0; #X restore 181 424 pd multibyte; #X obj 181 450 route bang; #X obj 262 450 t b b; #X obj 213 335 t f; #X text 266 407 #expectedbytes; #X text 233 371 byte; #X obj 181 368 t f f; #X obj 321 207 moses 194; #X obj 521 582 t b; #X connect 5 0 15 0; #X connect 6 0 16 0; #X connect 7 0 10 0; #X connect 8 0 17 0; #X connect 9 0 19 0; #X connect 10 0 53 0; #X connect 11 0 50 0; #X connect 12 0 13 1; #X connect 12 1 21 1; #X connect 13 0 46 0; #X connect 14 0 50 0; #X connect 15 0 53 0; #X connect 15 1 11 0; #X connect 16 0 53 0; #X connect 16 1 14 0; #X connect 17 0 53 0; #X connect 17 1 18 0; #X connect 18 0 50 0; #X connect 19 0 53 0; #X connect 19 1 20 0; #X connect 20 0 50 0; #X connect 21 0 12 0; #X connect 22 0 5 0; #X connect 22 1 23 0; #X connect 23 0 7 0; #X connect 23 1 54 0; #X connect 24 0 6 0; #X connect 24 1 25 0; #X connect 25 0 8 0; #X connect 25 1 39 0; #X connect 26 0 21 1; #X connect 26 1 13 1; #X connect 28 0 45 0; #X connect 39 0 9 0; #X connect 39 1 40 0; #X connect 40 0 44 0; #X connect 44 0 29 0; #X connect 45 0 22 0; #X connect 46 0 27 0; #X connect 46 1 26 0; #X connect 47 0 48 0; #X connect 47 1 49 0; #X connect 48 0 13 0; #X connect 48 1 21 0; #X connect 49 0 29 0; #X connect 49 1 26 0; #X connect 50 0 47 1; #X connect 53 0 47 0; #X connect 54 0 55 0; #X connect 54 1 24 0; #X connect 55 0 29 0; #X restore 131 241 pd stream2multibytelist; #X text 47 43 converts a stream of UTF-8 bytes into a stream of Unicode code numbers; #X text 53 95 multibyte characters are not output before the last byte has been received; #X obj 400 306 outlet error; #X text 104 378 if the bytestream is invalid \, a message is sent to the output; #X text 77 479 (c) 2009 IOhannes m zmölnig & Maira Sala; #X connect 0 0 5 0; #X connect 2 0 1 0; #X connect 5 0 2 0; #X connect 5 1 8 0;