From ad784625e3a7a4a2616098ee4e025e326b1d06d1 Mon Sep 17 00:00:00 2001
From: Luigi Rosso <luigi.rosso@gmail.com>
Date: Tue, 28 Jul 2020 18:48:25 -0700
Subject: [PATCH] Updating to latest version of Rive runtime format and
 prepping for pub.dev release.

---
 CHANGELOG.md                                  |   4 +
 example/assets/teeny_tiny.riv                 | Bin 68297 -> 46416 bytes
 example/pubspec.lock                          |  14 +--
 lib/src/core/field_types/core_bool_type.dart  |   4 -
 lib/src/core/field_types/core_color_type.dart |   7 ++
 .../core/field_types/core_double_type.dart    |   7 +-
 lib/src/core/field_types/core_field_type.dart |   2 +-
 .../core_fractional_index_type.dart           |  18 ----
 lib/src/core/field_types/core_int_type.dart   |   4 -
 .../core/field_types/core_string_type.dart    |   5 +-
 lib/src/core/field_types/core_uint_type.dart  |   7 ++
 lib/src/generated/rive_core_context.dart      |  81 +++++++++++-------
 lib/src/generated/shapes/rectangle_base.dart  |   2 +-
 lib/src/rive_core/math/circle_constant.dart   |   2 +-
 lib/src/rive_core/math/mat2d.dart             |   4 +
 lib/src/rive_core/runtime/runtime_header.dart |   2 +-
 lib/src/rive_core/shapes/ellipse.dart         |   3 +-
 lib/src/rive_core/shapes/path.dart            |   3 +-
 lib/src/rive_file.dart                        |  23 +----
 .../binary_buffer/binary_reader.dart          |   1 +
 pubspec.lock                                  |   4 +-
 pubspec.yaml                                  |   2 +-
 22 files changed, 94 insertions(+), 105 deletions(-)
 create mode 100644 lib/src/core/field_types/core_color_type.dart
 delete mode 100644 lib/src/core/field_types/core_fractional_index_type.dart
 create mode 100644 lib/src/core/field_types/core_uint_type.dart

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4bc7191..5e9a5bd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## [0.0.4] - 2020-07-28 18:35:44
+
+- Fundamental changes to runtime format enabling smaller file sizes. Format bumps to version 3.0 as it breaks backwards compatibility.
+
 ## [0.0.3] - 2020-07-19 18:18:50
 
 - Support shorter string encoding. Format bumps to version 2.0 as it breaks backwards compatibility.
diff --git a/example/assets/teeny_tiny.riv b/example/assets/teeny_tiny.riv
index 14c920e4104dea3c490b8ed6a97f34b65eda4f2a..e9b3a5b1b0808b0d6a5a61d96f1ead52a9206328 100644
GIT binary patch
literal 46416
zcmeHw2Xs``7WQN^H-a#e0>rt1fFOuUQ3g;1rra^HV8H}}@}43>q9_mq?C<%4fJ&97
z0#afFR6ta$AW3GhgMz5oK?FoZ1q)(>fA4d@eaj@FytV%ISJ!g5XTGyf`OZH3oW0Mv
zlY$G1^3pw9%F@m{!IQQyBh6QL;P4^C296$5I{Y|~XYaXnJf3^bt$XuyE${fe(k(_k
z5B*o4KRh|wvh>zP!H$PKnpQt}pv%~#?&+9W)!5VaU=@9}D=ip2yK7SKlW|V6vFCCv
z?#c4y_Kp?y$vgL)76rwFMh_f*?a<;Dy$6oIPAm3D{d;49HWRiOS##%fj%4#ki!@KV
z&wpL<$bq8=3>|Xqb)yHIslDU#pAmZ{5!f|#rjfZkdP7ClhIQ9PviT#oHMM9{dh0{<
zA64H!`2Dg&3H{TadZMvs#Ah-3s&24+#=?aD&-aU|ks~gNQG)_04f!t3|LJLSj6mm8
z8^*FG7o5qB@cHWJ4IMgU#3(fOey@Mp##@cRWcp}0ZQ}u>(Pa9d$`ANVI;t0&)ckv2
zygVMLJo&vCm8fZNqy>8wc#`_!*Z$_VQ1f!MH^63&_DOo{w;oo#cpxqKQtK}&^zz?+
zq;70z%-!$>gB`oY^_~;A7>zx*ZsTs$#%o2ozxRl8Bk=Ay-x`X}<F6Swbg0Ru_CcDz
z?EHa=z=p|Vs!T4w{<bQd%^$gbkJoqns6hjV77rLSdgM^;!St;47v)E?`GcDJSbFQ>
z>D0g+Z8`d^X+Ko!5*2Y>@xYNhdc%vgao(&k*Ox`I`GZOij2JTf+5sa<=|k19C(YmC
z&PS4gNB-3&>8fi7hBV7pU$jT*%-w0!qgGmzplANpm|k}Jjj@7n>NM(E82fXAK`gaQ
zWhqB{0&PwA`FJ?Bgx5bt|Gg^k>hPkf%$`4X=$W;im5D!c&m~qHTJ=F|RlUtswJmC_
zw))7osYSDMw0USvj`k<mO!pl(y0mokb)@HueEt!2S|$U%uj!Y_jnX{GWF`j>D88+D
zz(}48+M0C#ihZXh0~fv0C7F8?jl_0~r&OhG?e}C3Gy+9q?`I{@w6?*r=UOK8t6!T~
zbr{{5?oAOpE$G=lfW#hdP({^!YgN}Qm8O(AwZfNDQ2QXYC!wG5;q_4}Xg3N<_hpPG
zZMdmedzA#TZi@uUPW*Q)H%?i0rnmm~kmnFJ)~ANx45iCHqGYi4SDJt8<WrJ?o_~Cp
z%<W8>=lV?DtUeYYfApbK;(-Gn^^PkZx&&7=JSC}9nhn$<<1l0-y|!%D+)wT$3q>EQ
zl(T{-Z)}s)zv?m-rQ~Q2pb0tJYRqX;UY8B|Io)5`<WwVY&E{!5CatvYK{ly6r4xlW
zx6J0YSnB7J+~G@+>>2cw-BoEyem{6;%+t_!yfJXl4cCq=y=nMhjqUUdpYZ2y#RY!P
zu=kC?x~IN2GRszHaer#JCG*n#EiQY~2rRj^Hyi28*hpVy+Q+7;8sKX2CZE6T<{q)Y
ziW6^%WqG1YBia1Xu<Yj5u|_LS{EbaoUU0(+n+-iHdkI;?H@6+mq?J?uM|>3vTzY$!
zIf@T?gTWc;Nxisv9~yv*z42-WyOIo@G{8}9?Oh$G*`rOIr2Fa(DlNTXNb!JcN(bMj
zjrIDMPS}_T%wD@Wk-2~7W!-ai>OxL%?~Sy$l&{)FhWfMz4Ki`su+p1oar-09Uv%kZ
zRe`^@?Mr0#__4#QSre-!N3!{Y#wODG=b!elC9Sl~|9+@@j`lPZNz*P*?WCp^1<M<j
zCG@gRFA`~<N+zvM>Oe?3WlFy6=%7oT(|vUZ(Q-TDrV&GiYD>I+t@kB~z@FQuQb(ui
z&t}clThXx7NA4Na;>WQ}RiA04{@%II8G*aTKF``+9sk7Zr?wjbYCEroIoiwC46kh|
zo9p!-cc?rTSo2Yzc;;uB7gU%7Gm<pDcyxO;FjZs<uAQ6+<Tfix<_4(RBUz@ONTq-E
z#si;@%4L-v&MG~eRXRgEKiHsar?@`0=L)0fy#*U1{kA4wh*i_9>-|w<s}bOj?5aiA
zMjA$qtK*IMgNhiJ7W4$xRqCF~)5Cr88=W8RJLKu}jH2bUZeQK+t?e)IA~i4=d^%d8
z-~QHYQku$+{MDdTJ@Wb5$tc$LuWP!k)@*I3>2@DaxBHyat#-Zt+-r{8Ro*v^tdgDA
zM6&rq4bWoCs@66@i%HnA*T~U6vX-?Rd#&dMY-n-GXl<Bd`D#lBFlHJ+vPFqPPrHkl
ziV^hHlL_5(-zCIO(BLiB7A%@R-^oWs#{46ZK?;A(5L#H30v#d+8n!tRxVK?pGP5)~
z=at-Cs&kCBP``;Dxpptqqfy$tH2)30K1mwx&I#7eXx5-Xw?(oaopW_X4eGDeqIT4n
z5km*wHsBgkYHf_y-)hypiNGH(zG`IVws@-|*IPqT<Gr?3rhz)L&hMg?tj4{zua*U8
zo7bUFB|9rwDJq@%l%p-NOxHRvl)7hr((4cZ(lH*``bCF08Jw}aevXYa3}63ryb*s8
z%}-f{e2GGGv=3`pKCkd+oiUwuH0M0V_NBI#PjfCj>(}x2l|CFRfTj(vz72oUYR6*h
z=?ClSd24Ckh*oOaJ!!$RM=}$7i*)uiDj$!L?N2AQ(B9Vkm)-JRmq6FDnH8DC_CM4!
zYtYSOBH6)DZ;Ft5_YGdUbWub<`Pt2w{HZ(Kjb3GnZZl^FbvDt5RjcopE1Mfdyj|$W
zPqaK?q3LCAXa8Npb~ZwqakPuWcB1W(Od~+uVRm!0x6pe{dpfPUS2fX_x&f-)z<gPo
z@@d+XY9t<gi=Rn%wOG?;q``_dSV!FQYMi4T#6DBgW>)i5G_4>w;GN|OJ#E}f+C(hh
zaJaqToHYOL!bgn2f9~5#R<h(Gnh^A%CSPr~alY3-;pBQopyZCrDqIUqj&`4=P}40F
zd!%)%(BJguhmAn#d(?o?b2mk@`GXpuX|ro!@kpi3rR|Ypyh)wR<^R((zmJ#y-Msw&
zy}11|j^+PM(mG$skfB4hY3Y8?eL0E1-c5}Xx%t!tBh_lVtR?%On(qH5)+rt+`{~nI
z=A;$-!ddI<&!@>rA2nFGZ^-^^m>vsk9h}MP*h*WN7W~)9Uz7ThuA7quT_2jarttW$
zW^i;N)$e&M&A;-*{qexOO>f7uLLnL`{!l9Yon_OvK`nB$@z!?<Ozm_Z`ODT$`XkMM
z+E<??18>cLH<`<1&nL1sOs~?ZWeHNSpDp=4cp|sWUir+;;JZHmhTngy3Y`CS-$Yh;
z<J3qtf8?G<@{=G{n>kyS=I?#W1S2rxsuzuhy>F=-Z#3hov)FQOv8>ZFpBXqv_vOg)
z$WGFT>q>{yBK3jhuRQLis=(gp9SPFH4!qsz5XlYEShAxo+1{@?TaRNfA-jCFtZ+Hn
z3sz%4$5Sh<Q?T^ArZN4_m6=rqvCV7N6u$k=4&DGvN(<hyt$kddy6OwV40WXY8ksx3
z0V7LCP;7$wHHbr1+P#{8(XXFW1zN3pKcRFgH;0&6k1D*rj8Qk<G;n0G_Mw(JE_2Qr
z>Pu~NwLz^-zu%gmrW?A1BM_SQD(&;aO=zD&AB{b;SH-B}KTvUPUfjwwdj+GRc(^AG
z#lt<RxFav%RpcFqn-~H9$UOVC^CC1YyYsHRyJ-Sm6WeEbBD6qT3Yh~>X3%w|gGz@E
z99>MohOfN-mMt$&1eRQWAewpWoUg)JJ6@p83xDJ`rnM}?q+FYtu9&4RudUW)O?xLT
zIJWJj3H`Yqb7-(UBiJ9QjpKL7X!Jf53si1<iueE3r|wqLb=PL{N%WxhGT*ChSEXrh
zS8HyL_N?W+)YiyF6aaA%ty)@J?itjjo0h}^2U~10SIvcRx;5?HYSmZo@TRotm8EW?
z_NV!y?H9)a{E_7;8$vsK`e+z!e~QtFKS=N1wXE55);#+gPvpj$lYsV@ql&c`sKy12
z69LZ&RaLp^?5++j<q+$7&F?wy_b!2H6W-{W_0XJVk!=2;vNxcd+U(PB<ka1fXWAz+
zw^25?(TKxR`Fw{D6dbBKu$rN*CIUG+QtK9o;*fA4sT=0%^{tPVikC@HT(AOmyb9rX
z-I!`vG;K?@T>%B2EUi1*&C^$DwV01|Ux0ld_A?NFy(`UMe$9eJAbQ1~L~eUB!i~jd
z%fF6b?bnA1)*eqY^4qlF8Dp9x_1-s3<7fcQJ`89`+oX|&*%&4ZvoTD=_&yXrRl9c4
zChD=gSYTMafmPX$l|M-v<;Px&H7bui!v<~X5f-O)HIH3&MPH}+=~y5hpko1!-&D_V
zko3|ukyc=6X_aCI2MsM9RXkXG#^;Yk=g{t?Z=fo3!^V@I$?Zg4u4}EgT0?*31(#F>
zewnl+mNh^8cqE%Ys3&EX6+hC(Xm4#}scA1(Qx?aP>ln6uhZ(jyGDMxUjT(i#Pvr3W
ziQL4GG1D@%1Ej!ZPZ@fPoJV7Q-kTB%_dQ|!MMlw2w{@!QH=x5bjxyEb$gmk>AEgED
z5Oxkv87k~v%l6Y*ikXwoQaWi1Xrdo_s4CEVa(R_4mfMD89<%h`T<I2gTX0cN`OMQ5
zE3`Gu>)$lv<g){b^tNYbcIOCsnukLC{824dvb^T)i`QqyaX(1U@_5K*@CQ|uv<5w3
zo&a4l<XZC_;g>Z3%Q>^+fyUz(@Ie7Z()c5{6;a`1S6=(XM<vzglIn9wf1)o0vvaL2
zq;5}JUJ)pp_d#XmyvET;*5X;GMzTkbx`cC2@wMK!=hH(}ScbV$YESXlOyF83@VSMi
zNYvKyx2T(@Zao!57|rJ;XKJ7M{Ac&5Oa!t{I*`b`vh{&*ZbJ$Okr893Rp(J5KkluH
zzB3keHj3ye(vP3WT#+l)Sidl$zpu|q7M2Bi@pr?654I?Y>2vS=u&QA8geH-~Md#hc
z-^YR+yH%wXa2aOM<jC6xXKd3I`r|{qy{&JJ;}GxO2{EdL^zZ7-?Fs$f^Gg#2b+&b=
zEUc5ej;rq<{JdmnOmFmpmMF-5d}+Aw_Tz>bp1RsI>12#dFNCz#;Se8xF$Y7<vz~_j
z3%fm@2)x}l8PDu>ePz$ALx=to$>tBD5@#Tt_za|SRIh}22EtKdvT;{m+#spH^h9^s
zXt9l}tL^X+Fe1p2X`Ld|2`Zqjntv*wLq}ZE;!%mf**Dyi$gNK~2L)FQf7ozDX<LyS
zzWm{7hQ9cc8I=W>51mCsuIt1-IhaNt#Z(^cjrj;t6*!L8xbnLbfpzZ>OlH3KLeZ<a
zEov}f6ss&L`O^sO8ah<PDkJ13mav;xVs6oLQd>dWTCw@=^G@=vqMs(K0#`>DR%L#6
z{+x;|zo%_Dn?G{Tqqg~Y8_b*E7UwKW1X>g<uF7pd&EDjrj|=GkpVR4M27kQ6A3yQv
zm<O|Q$H6T15j%s?r6cT(!8fr)u11yAk%dchEm<9CHaMci-}<uJoU=KS{qDV;!=~+N
zrP0|$K{_ev)xof-qy-N~IAGy8{8O}2_-u0LN0WhJt1e3Bo<a@X=%tUXJOT^6q-}IM
za#!1G<!D;_VA;%j488x3167oZ4of|r^9}vy)vGHoCwi~op&ZYpwWj~S<cDQk>@KEb
z7b}n9P#)!Sl#SkPI9v{i?>N=DuC|DqMMs`BO-_xX$9&SnCrfejWT_QzFKWtLS6j}_
znahp@?c7telMj0j-0g85_L3P>hnKEX1v<QRo+_mK(ytph+I=*37S$4>N@$zj;YKZ?
zho)bJZF*g8FE^o*Kav`Ke8*3}F;&fJtg=Nj?P*1;nmw(Kqe4#$zFzOIO8v10T8yNY
zaA(XtH;tL)71h;N_^3RGOFX)`n9fIPafwf-lFEH%9DPK$)8l&C39+g^*=>KT=zGKL
zX+}{+kEM}*|9PZql=8jI&A#7D)wbocMMJ-?%brRapeDicbvKiww^LO?WM<Py;kaMQ
z*?LhNt0wbB^FY~g(^aQvuxFId2yEWBHj#S*Rj`i7{H#<HO+qSYTQahA_-KyW{#o{A
zA~0g;DnxDTkx-YQXIe%?Kd|7Ru<JAhcpWhhbX7c@&U4$XtRD@0U$+S_YyEh^=@-du
zN%hW4Cl)#dJzw5lrSIB(PomFj{jaU)JN2o{jG}jql4!p-8_ed7Kvt@2M<-QT@10Gt
zR{kL7tNVVP*!O$vlLl3R$zP-=QhmQBRQF<5gK2C|p5&+1Y!B+e1y@s-4qeI)&a4WQ
zExay~n@MN`YYXN$tsdt0c%BajvVL)O?o=AEykL1j)Oqw*S3AT5$u4HI%iQ`iUn4GQ
zPj9J1!Q;QpjTEvvP}{b1EAM9AozDYBVWKbJ^Pj7STHTc_=={q3NMZIbBjbeb=Pax+
z-*7$V@nPI?eAr5BQKQ<ZmB1M#iLTsNEtt}ihH79il21CgZ_T68K7BfSEBhY&@`qSa
z{THW1`u#a-1J95))IPcbQnNvLjHl0y!4xypiuar~3Gh{i6dRH5(`C}izxL!MPr{zO
zb*U=TJ#{iI(O9?1t73kyp#SGEffZ~(8<4m<nRN13S1TpxE6%iuKME<687hmJp|ZN#
zHZSR`sF7U%h_>xOOV}?j7^MDk)r14HiN_Wh`n-uVk|e`1$6~sTLdCwvs+eUim!pQ6
z*IMYB32hHwSb9MsP}X5a%-*8qo=lCPsIX~Yt*CG-js@35YF+INs^SxFCM~h0qcsmH
z@Q8B*9?x;-5-^?T!b%<|Gx*~qkL-k+B=(N56YmIHv^$sxZ2iwqvCQ+{smDQJ9H8em
zB8|E22wTIt+UKmR>crP@ocQ8Sli|42R9Cy6+Lq)7?(%wqzB+}YN0#1D+~Q209}Vq@
zj3`Dv1#t<aok0ejVS7AF&GpmVp`JKoVa(j2#%3?!n+4Terj%l6hBovCQof|o&fxgI
zhYs=d%Les}n1v6YpM}EjdHgsoJOgc^m8g0lq;wgyeNzqeR4%BjrGd5j=_zd@Lw4le
zkPa(5vc3Ihas6L?--#ErTwYpPxU^S1PSRE+D5YpxP1AiR$(O1BS|{=D$hpVSf7+Ya
zWY82+?&gxI^9+5ZzKj-azAmPYm&@K+X6TiXrbeH0&z-QQZ{I%uFp7R`-(^j|c?B05
zuCZUIb@a@>nwLI`slNTi3`0LTer1d{Nf$&5OKzc~)eJtxI@$rEdEqe7lYfetVNbqv
z_thWY82WoF8={$ZKWHba+}ZM9tCITKKBp)9{3Bjf**AS~OQWdd!giJYPM>lTuVU)T
zm|7P{(UmcO)rSU!I_ut9MNv+kG4w&~*2&{zWWH7A+L3lV%&5?o*cC`J`miHro~1Dj
z=2=>Gy`#-@^)DL`ku8GJ*&Pf$W6AJ%!9zx`XrZU~jd9||Vd{v4tM7}^cMcOv-*Jf8
zCWf|LcH#;ewJcE?Yvxv@cMOGY;6W!7cK9jk2=eh=6%O(Z&=Y~m@*!2ZJpW~m(U!P+
zw`hA@{Y%=4TiYtWLe|(*cCJDBYEyq&z3pmf(_klP;jLagZ7|4<pv}-=@eMZ?l6OD;
zttmXmQcVeM2<`Gpi4a=8*G$Wf>!+?-A2UtDuuHFlSN-ctv@dd6z~yNjJ+F-8#tRL+
zp~ws7EuLScpC8(l;0aM#=qZ|GP@lU5H=NW~ZQ^mUt9o<D`^?~N`{Bo=x*YB3>^7+F
za;ISV_ZnTGt+OXeO^Q*86z}AVS>_y7HzI5iwM7^h<V!X>f0&m?Y`irUe<V{)p1Li-
ztKD2L&8z_Sc5>mCws(V{zp^UuYsM+Dtar-k;@h~pLy_Dpl1&{OS`=&73flUsty|gq
zkH_@RjlJ=L=K6V+h50|MVyelJO0jRP*xN5__F$D>p3%rC$o~88Na3xm=keIprg*g6
z@k*+g<C_6BPH=UGonoYvpNczl;9Fg!bNMQY5WeRz^-#TJpy;CulbPS&{Bk(!rR;Me
z+5C~)j_9k)uCjSSlP)HD`qKt+P~OGK%n@{%Bx~cc8IjyB)Lpo(=4?9SCT76iMb)JC
z<cw(?9qLz13TfXo)W{pD_LXBtV%eJ7C@ZYd+%)gVZZwTolNwE&tu^FvRaXPre5)h&
zlmWG+D6mppid+od>!tLj75Tp-o|{Vnn^TIgT6rq_a?|Ylk{B^{Y0|EQeAo<*Lmhre
zbGfM&Td9hzHhO)Xv+Z&}j~VUYQ#x6b@m>a_!*|N+oj9kGq5}Qmrfz1f>%gXp7N1>L
z(BgOGIZJ-7MiIf3T5F#Y6jrFo?F+Hnx1!(taG-h5rPbWNrqmFzkK`g%A1m66wju|m
zrfo!BZ5%IWwdotV5Y>yLy{a<`!_3+nUD{gk)kfz=m%if5`*tHatU=+GYOF{n*xPDZ
zqaL|}VLb6fghEfW%TQZ*n$a4C0?HCk#{x}Pw@Feg@9S{(&~d+obAwc|9ed=4Q*>oz
zcb}o(JnUUkCk|0+9G1H7lHqg@aNCdc9pB-1u1O2LG~2dDDIeXh=Fr84)6T4<B~dej
zBNXQGy#8}lU}d}9q@#V;*T5r1_^Ojj{&4j#DR@==OY*0xe@P*aBWopv(W*-p(|5w=
z1w<yox*-nhMjsevm|<Ps@zsm-i4N|Ze(N)1hgLMY?9wl2z&RSN2Knsn@5l7VGF~Dk
z&6heTX#MQSq;6*8H&5(pX+dj6&iKArcSQ6LCw^iS{I>i2%EE1Zf9JC73$+xY^OW;f
z)~U9&qs^dAz~Xvc<9hSgFRJRZaOay9eQ!T?h*5MxHwxOXeQ-PvIfqmCo}k`yiBo+P
zI~Wz9_VgcDS@1yJjEcg3Ki<RHd_lf;r}HZ==2ZqdVZeQN8sq5lH;q8>(2JZCdSI>&
zYyZJtnfu2C2h&KJ_m5(^oZqGU>f2#lI^dBL-m7o8G?AM@A~&YC!3v0bM!ZY~^F=8M
zqbBs@x_z#~s1>xcr7$XAaaQiL=ap}f*A*J2@A&GQEBbGJM~k_qe9s!aY3puGH_eMy
zWbKzRwObOW(h&j?TIjjzDRxBY-t5E!bn9c#<9U^Rc73w5qHp_wD<ehA@}7$Hn{(ma
ztTHKY1(Ba{&eZf|pyRm4Nykej?2q(HlCQJ&<$I|mroP}(X*u0uH!qcXeGTo1l?s!X
z;XhjH+uhtG8Svh9m65ezL~$gWKd689y=%)j(Mph_n7l&K4SyOQ`j3Or6@@DH&F2lj
zUo<PK-!|_@qu|e5FRd&bb#qIOiC2%#b!Ic&?Tr(R!1u#PS2NQmQd5SfRx9p@x|Bp6
zG~EyK`BIdRL)7x}147i+%`GQ2=H*xwp=s#v)cLn~pvb#})tq*y!`^rHPVG=>CvSy4
z*l2ctA}<j*W#I=2YAfD4`KRSVsC`iXtLTL+^_95~qR4E@kU5RzIC5jRk|U(N^0hnn
zC-t*`S{E;9@Nk>T!bK0X<6GC}F`L;kb_gQYF<XUs%*G+dX%n7F=+hd>+Xk+97j%|h
zM;WCeCvHDIkJkm><f))7?eVq-ml}bzb1%b%;jRw*Ly>*ux~Hf{>L$CBMw{$b|DgM<
zn_`C&nZ?7uk7V`SyEvT9AGz7Q7MNEW*w@{W6%K4Ed}|GrOrfiklATm-O*_?NdX3d>
zGo65_rE1QBvY6hZ{$JE(bE%?zcuJAHH?CQaDYjmtp=+6{YY1;0W=NdvzJQwT@wA9_
z@=zNkV&}=-Ol@TI<O<kYmfL=_51RvZmRgf}scDC{*eg^?JdfIHSz7ZJ$z^}jcjNt)
z1?N^gUs1U8_6F=(R`=9jwiNWN8m*gs$m6u4%Hk(<r^R<%hlN6B(2})zPgYWYE!NdA
zHT&dlQ<bY*(Qm~0W7%{M4_^Jlm@57IyC=p9J{U73T6q8TT+?!^ms9LI)!9`|dC7%Q
zzPJjmuzFkXR-HrKcd34^MH4pguRxU^?Q>?V;M+U;MGIf=*p};53tp9L!81=QN!#0n
zqLqPyM|?@XP{z7EFqn1WvkCq3^PlD3(u)u(++9-xWz9+O=`yHMN5f@z{#vEKS<=~B
zUua8Ma{;C~bT&;5OA1ByE#m6hr`|T=U{6a{c4tW{qFi&e<iGV=Oz)KBt$2j_>Few=
zI~07VUK5q<IJ~?6%%uLpj+I8AgZ|1$-=}X|$}2726|om@wrvMmWG7v=?JP&NX4p`C
z@IH&L{If^j8=iR1C}MBC-<1sl+%og{-brvxt5X+Voo?TEO(M{~-|%XyQ!{gwcHTFk
zRr<$k?xSnV7yF#6G+)}`mmaXlG+Wj&7MOqOMaj(13s**n6k1zr=2PuvoZPbm>13D)
zA98i4r2fr!OGr_&ZehyE!cA!MSwh$M%wSVNkyK@(Q@&GS(u@RM3mEoPM|vOS?Jt=Z
zGPo)E_^fC7dGs#h*`6sCeKxlCM*Ggp-xe!s@WGUdew%iE&MOsdeJWe`O6V)@?qw8A
znpdZ?u+^vid9?F_(dNsm^ndp2kSz2h=>2Hg3d<25zjNEr|K^%MlYs%3b%~SD@e1D`
zc!l>LL`X_AR8V6q#jo@)F79k~>#Wq?^KSO=9w_@sA@;YUBhN&)B`}=Ouf1{e8q@CF
zc1J)(?koB|cCaopSP<-Z&)S5(s`Vovn*GCS{0&cSx5UoOy{1|ATV0+&+1J0gfXk+7
zoYGw!R2)W1srl1GCsLE*l|~=!ywf9nZ$I>Ntf)!2S!KV02QH7%GG3R?$Oo9Gwk|{0
zjdl@cob|9Zn8Ag^&{ET+>B^Jl&}FB_0+aSs#8MAjn^SlD2U7+TryjKY;M611H-#gP
zl2jWt^StFS&EuVD_KTAe`rz_bRRyfE=FJz=MD(6YFX)Eb8GWWz?u_(37%hzzoiyO7
zihlWnURD8k=1$g#4cWnDU{a)GGPgVFFy8sbboRaYA-(m}b7qpdX1{NXEhnF*ALpUp
z2xy&X!?9P|Br6|)eS_;?e<z{edP!&Z_cWzz5@5~ta6xU7(JE7qo<DUw*2b$ZxSo9m
zwQEDG=6<w45g4AnDVdpR96HnVIm)KI5!0h37a4tC`l@HNum093qiEfxi!1w0>P8Nn
z`|y|arR?B8lYuQ0GuP&x&7D?vXT^ry{%qZI0}a0IQI$1k&Iyrh{-ExYUvu?$q>>}n
zHnhsaRZuF=)26u*_~I(h+RSZzLgB2JIjqPZxnZ+;Gp~3zp<goXrm8*->dma|TlLra
zSdlkxa=2gDHPiUAr)ohbX~9WfuAv}h)^0W`&b$3oQFfbal7WKuEs|L;EnP*SOZpJ;
zkcdD3S(mke(xuPyk!wwF5>PP*=Pfg;7b7=}!Sk>`Z%qb%+(G*`YKG%giiVCGnN2-S
zBPBl+MWXfQr>%~aEEpa!I_@+g{B6mkp3z>to(jiGURV+~>dpU``qs|7s9VHn-~JB%
zHuT&B;pi#ezr!roW_CEb@b*LW9Gm-l&xr9*ou-s078(?f7<nz4sQl>*!qM3BI{baf
zNA&%~DCdcUW?mPL=AP4&zn}Zbvaqpl@16Yp`iuI9qa!aqP36ycAZ#4Wr#p^KW1eZ_
z!p59S|E=;*pmJuMe3HsPd44!LaC|#{4sD{g_3xj{dDgePCT#rpqA44_DQvuVHOody
zUYHb)e)9JoZvXoFQ^V1}rf}OLo~<{BqZ{>h=fpfC=7){TAErBURBMYVVdMKdRjuon
zUKuv}_gCMCLQjT`__f?(;%r`+TBB+TZJH~xk@b_$2}kR0PlRLZ_xv0-{+gmnDak!6
zVsyT|F4wt!=;Cm6-`?X?P31izMzdyglakt4G%p<W7yY1kot_^t)+Rfu??1XH9L>yp
zgTF5cpA#|8T-cbu4~<<Ij{er<XZ8KNG*&OSp@~4{ESeCGCXWA3eZL?Up^;VG&%JGC
zIQnJjZuR}$w}g#>;}!RFyWJL!zWu{y{ytRLG;Ex@ipM+_YA}j>bvr-L{r&l{v3;)k
z-ZMKKF|yy}afp>XkQXtAwrs8H9o{7p?fvTIt79ea_Kg@zu6l(_^qg^F#0dYI&N)0~
z%fivF*#UlDKdW6N`q>NLcaN=Kc~!({ymS}mp8K#7G5)>#YxO*x`nu`;mRyhL@+%|8
zh*_VhHhve07{Q-^<>&Q7*M_Mk)sK=NT1KLa9)G+$eP6QZf{5{-N8hA8k@bTwh(zaH
z`YN?+Y7uJ?YjG?zs#nBVVQk_YCE@mw=-5WDtcuNjW<bRFaMD|<?Cs}8jLgg}oMWzj
zRwTN$?W*pvxu^a!V)W|OkXse%-k)o^i*wKY<b|;D;xMHfp_voI#>7h2jmY|?_lK$W
zo;_mgKYxbxTJc#@^kCQ+c`<7hjU(mQK6kHb$)XFx(eLjZyE-=a<%`3{gAe?R>seoa
zXxO;20kNOn{4C#)!9$C??eca{>(Q*|RBt%V(@_t-K(A>w?vmxH*DRiOt~YP9mOo|H
zjEJXMyu-O^`N{XFo@ViN9v8CPV?+0*xu8X9Hni3aZF4|nUYFDYuPwFO2{rDL?K$3R
z*fjrbX2Vo7yA7gizjoUIQrn!UG!G~>&xuM4fl>>ds5BBNHPS{KccHWIX7Og`SFfiv
zN>EdJm?_WY`(u>)6fFUG07;+^pe~>*kp%j_8{O+hr=lfFwsDtCPa3x*EuSM=9zFDd
z=JE1~HfR>lq;Er^=a{DkX5((``8KE8+rXJF;2j=Yh`fg;L*`ot^t~IphsPFDlh9a5
zJ??;>a6?H4^oASy$^q?gLx&vDSTKRQ=CdBDX0YP?zubR4M3;)v8h6R@cpbXYEKaIp
z=?UFtAw9|VWHyV}F?FEeiZ8;X9Bs_h=;Di5RnBl>?_%HqevBj}_q)+Dj2zGfNJ4gr
z8-3l4Zg8VNxX}Y{^a1DrN-jrI)!Vp>-&4ox;?FCutg<_Wl=K2gX*QD5P9&vaNJ>kP
zl&V!y4?UL7qtNj%qi_iJm&_c<o6w^X^M0zyd-{M3PQkVS+kvbA#kK%_7~}vI+XD0p
zH!8LT=p0a|WMO_$+3wlLJKFVYC)%!A?E)t40x0bQD(wO)?E)(80xInSD(zCJ!}@-#
z<<C01DO+E*W1ndG2ePIblv38$29>?CQDuE?RM{mPRo2%=mHn|%Wqm(IwQPO;<~s11
zW*T6#C7)~gzE`LAq?W8@`o7TePdI1ZtI{w#uWFc`S*f0#S+&#7tlDX3Ud<zEXI9O&
zGplCXnU$W}nN=?&vmTlUE!54ve5vKPJh`05w=Gq%Ma#dV7i}V&#XC}JtCl}@z$i{J
z<6mj{887)c=j+^0TW|v>ZOP4?v_(JRq%He{TUP0fEqll<JBGV$%PNlSddnHLWfybO
zu2(T=%dTP6mVMJL`<`2NBPVUyoo-pBuXeq^xn+NM%PRJzUY=z(@9JfHi}#&v#yEK2
z^ZJVp-aFPE%qig=g2Fo_g?ESw?~oPVAuGH?R(OZ3@D5qw9kRkZWQBLg3h$5=-XSZz
zLsoc)tndz5;T^KVJ7k4-$O`X}72cIBFATIt;5{4-#j0`&{+hgR)AC!lc`ptP|60rc
z>aVq&5~h(=F>U8n)Y_SaT4Yw#+L;xXc4pxcnH86IW<{QzS;#|XMV_5mv1Ml#wvbt|
zWoK6O*qMbMm6?sKP0wFX(3!eL&(w$i>7eKOSb>usWEFalSLi`zp$D0T9%L4JkXh(K
zW}yd}g&t%UdXQP@L1v)`nS~x?7J86b=s{+oM`hMSchOZ8Y%bL9yLX2KF~lZvJ1qrf
z>LcDWr?r^D4nY}jT=A@WM84LEo-DSVZ!?7FeQYXrSP)f8J2ozj2ZS~<jR+=5@8$H{
z7R}-t*)~#=f62zI!-+~Yy+{9tGgCDRJ!9}^ya}S3((?Zk`zJ%=vF@YT1d^&)UgW4^
z?&QY{>#U*N+)1hwDK#%BIbl>&Hb~S@g(4|!P~M5ERG~<Y;qIXv)m8PZhbDX3Ee(nW
z?$q-4&-j`f8lu9#(ei)1o9<s=akW9!5<B@BlVfMz!$})eDrhIia<lEsvp8v^suy<h
zDR*YI65FU!K|8t0oq4;vWTk?3=0Dw;C-Xqqs8T^mHtwQ3`1xb}Fy^NN<)^VIy=A+T
zAArISlBAu^%)$>);Rnfs?##juP~iv3McfO!8Nv@x;Rnfg-I;|Spu!K5``wv^AE3gI
zN;dBDzQ;k(V_$Zxv=!*2RTpwf?aqi$fI<+GqCm(j1OXL-kQ4<%W+4cu5QL;C5Hbrv
zK!qSAMS+l62m&euAt?%k%t8=QAxI?~ciH45XvFllS!XcA227af)F6OD5RyU=G7CXK
zg&-t_AY>MTfC@oK3PH#$1OXL-kQ9QDSqK6u1R*H|A+rz!R0vW@J@gs98OcUI+q8c>
z=-v!bbS4?C!R8~gwM)x?+)Q;L0C~s*v7Tv{ZwdU!^T?K<Zd=)CC9|@r{@dATb8ls%
zoxPRq8=ek!Hfp_<?O}dKD<5SuVrP5X%EpTd`Zj{E1DSoh(0oMS`kE>3+j#R)^$qz|
z-yk4;gM{iEvZ=lyoAeFYRNs(I^$ppiZ^)+lhHR>D$R>S5Hq|$kjn}O#bKFLBOtLS=
z<MvLw-+7fn-!`qU;swp@keNw!2)U#~$YyrP%%(boY|<fQGdpBvQyoG!=@7D+9Wt}2
z4k4R#2-(aIaW*}4PnsFqv!Xf_DYl|I^vu3QZI~XSTgOL;3DLU;Dt1^~8HX=_pV|>+
zame;~(l@gIzu(k~8^~THrFP%bgHy_e*x+_7EI{vqfrqHt?Afwv;@h&HBQs?GaLdld
zE=HjUW}sm+8eQdR*v2pE9K~)JKxr6IX&6vx7*J^#P-z%YX&6vxm_i-V4C)y6MTqy@
zRsRN_lPa2FgKD=-NubJd+UQD<091tqY*cM=ZCPdR1l2=p(#_KV#J0cH^3{u7R-EVG
zz33Mb(H<L=_5fAwu~BIcP}LqAmG%IY_NZ!k$ZBiJEy=-$X$jC;S^~6|mH<s@iC<c>
zTg(5N-hCq$Fh)}<=5k7nkqrtbKvhd@R5$^uT4JNZ2~gD%L0MZg(`%)#_ys&i-AGDh
zNJ{BQN^vTwhh9}vJ}4mw+6z6{drguG#iZ3gqMx!fgFWAA`AEsO30Y-VfTVK$NU4xn
zxqh~+Y!Z-JHVH@yZ;(}<pe-wV24q$pwOcGx60*uMv}I)r0a@8XAgTOByUof^v}I*S
zfy}a_KvKpF^(wc~mX!?#GAsI}&Af$2?1#SUyr!*#_&HndVz-f_Y*ZLhLOikx@kk2s
z$SlMoDa0eQ5Raq~kIX_ml0rN(3-L$_@yIO1BPqlqvk;G@5Rc44Jd#2@G7IrY3h~G+
z#3L!hBeM{%l6vSRbwHwfXtByRmnTo#+nI1Ux1L$wa%w$RCxG8c(nKe~)&gBDNfUid
zl4ikQOVUKi^;N4PWEV=3Q9ZPTUi#xxyyMKdzDLXFA90}uJ<6rnNwxJLy`AyFHH<#X
zdqWTZ%u}=YM~>&u+)|1QDTK|eT@C+CjH4PPrJ63&Cm&5UkdkUtl24<Q<?_fPM_sX=
zA2Xj-!#{OAQ^S!*4=wWX?gX20lRJ6^hZ@@+OqwY<hc#1lqUp?PEu|((hnh}QCIP?N
zL*?EhBW5O**7IU%CLedBV$*>p-Ka9cw(M7KR1_JqbjImym7-B(tsT3{am(m7Y%)N=
z)WHoo1p<Hx0RV*nph5spApocl08|J7Dg*!(0)PquK!pIHLI6-90H_cER0vS09!hw5
zADiuI)GV%>M5*8Gx0bA}>3OWAXSp!hbprel0}n~r>jC}Qjmp*!=yVJZWX1XcecFx6
z#t`UwH!Ax?px?Ps*){^5026_FWfuu_u^W8>NuaMeQ9blmnz_+yXj#8LdGr@#n#Eg~
zq`moCS5Cne0t>q^v5Wve2W5~HLkaW`H!5}$=xlTwvSLPozTig1ssjDMjed<J(4X9>
z*j%8~Knm&=6AW~@6J>p~$-2;cwu3BVzS1|41q@^X6S4pbSwMv>ph6Z<Aq%LG1ysla
zDr5l_vVaO%K!q%zLKaXV3#gC<RLBA<WGU2bqdaZDavJFtSMa(jM%u*0MtMw7Y!oEL
zMgbKY1ypPlP_a=!#YO=Y8wFHs6i~5IK*dG@6&nRqY!pzjQ3~bI18GYGnlRsM`R6Ta
z!b@sPbNY<VJe@-hysxvdO3V*{>gtV+e(6RjLgAGC%Z*NAmA7T*Vg{gOwKucTm)z(Z
zZrP9A=ngmfiyIxw)5R`%24)ZHeb|kzaH4wXYs58hmi`0zopUZ@&e~C#wDOhge3a*#
zvf(!P0Xhy;ZD?&&XaTD9!bWMo;VfBMX&YVVM%A{{My2B@S&h7)Y$yKD?}Z*3rw(AU
z#OwW0%U`<nVjcrb+(-S>Ii+T*4a(F6syMe%nS4OiY_n0BUO*MAf-<YLQTLf+#y{{$
zb+@DxWtiIJN>0fP0;r~pjfye=Rg=O-WflNcYHy=5+(4CL3(DJ3gedlE`Ga4%i^DZy
z+c=g3ifm9QLZC-cWTQe6P(_iA3PnH_MS?oQNc7d&m(aUjwY3CbEiD0BOG|*((h`O0
zp{g{G#?Fg<wX9<HSRN!?ExT^TEKcES8L)RTn*n}|Bv83p2DA(l6zBpZfi7{Que;F=
zZd9(8LH2+fm8)ey<$jl{m$lOF;za|UUA*GYA&xErlP&_3E&`P<0+lWTl`aC6E&`P<
z0+lWTl`aC6E&`P<0+lW*l=VAc-k#g1<;M@b#w$6G;!j%s2;(PS$$1oiwlLL20?#r*
z)kPasU9?fvMH^LJv{BVX8&zGjQPo8oRb8}E)kPasT@;jOiruGi?Jjimsd@T?jy?gC
zJ^_?I0hK-hl|BKLJ^__J0hK-hl|BKLJ^__J0hK-}ls6o9pY~k%EH9pzZKZcK7gZ!i
zfQc#sls*9!RRk)10xGHqRQd!|R1v8338<(dQ0Ws;QALI7p<d=`1l>({`+089F2$8g
z@!e9KwG{6x#T`rWzfv5o6c5YgQn4-g|Nf}jQvEmn=vVG=*DqSW`fXHe1)IMAZPw@m
zyeRyt<s+#U&;3?jS+aocWlR2>m033Es$dRAky@G8=2g(?3_EbvQ$4E1`!_zh#d15=
z5l^F<tvDO$zxDjQ`K)ArbUf3cvz3P$f@ij_h`dpcQ4MwvJx=M*dkN`r*W&iPpi7UD
zS9*-h(qm+n9;?h0>GzpFe~xvDXlKvI*)p6=Jkch5rdMt0_+*q)z!F%70m^+Npj+Lj
zIxe+k<;n<Tr(k7;>^vlaN`w*UD{k~Hx9rDm^cy$2-;K)MCX_r2u7|3Zr>)J$jv;3_
z__+4sDVzcyz=RKg!Us^{1E}x;RQLcYd;k?bfC?W#g%6;@2T<VysPF+)_y8(=02MwI
z${I<0z})h$-w*>h2|^0S7byv=At|;PNeQbVDW(}o39BI~mKw=&j3Sa^xRG4rM#YW;
zm9QF;V%CxT!!0XT9;k%XRFd}!HXnlryzby*;ZvXUUIBan6FvY6A3%i<puz`G;RC4f
z0aW+^DtrJHK7a}zK!p#W!Us^{1E}x;RQOP+9{LEc7vYM4`r{qAf}oyxM%9MtA^H)z
zBV0iki<JOg)d4ME{ecH_CHP&-|22CuuLR2R{KEp3nf%j2m6`m@LY0~P+d`FBb<jeU
z)jVXOVl`E@JpMRtCA;RSe3JKyR(NVwPs=9Ts1-yqQ7KNz@-_``YhAnN(J-C!yzhQn
zYkW87+gdLTwcgeOz)>Tr3IK)8=uVC)qC!SCq~6v7q~b+3L;*8PY7(Xb3Z!V61*u4p
zEk&U+3sPYs8=^Rw1*sU34XL-a&<qtIvLW@hmV#Ji@U|ARa^TF)$#1Ix_`kCMdgu>?
z<7o$pcM9`9Qx{Zluyg&h<9I2;)&Q6UO#zBl0+paCP&Gk_QlO**ieaE?zSyV)O@YcT
z1F{k{1uFUuRDz~J)#S2EmY^w6nH-QMm2kFdDUv`}xly_or7{nibe(ze$tLe$W3`h3
zdFrp;SmXf{@&F2XK!rS@LLN{d52%m_RLBD=<N+1(fC_m)g*>1_9#A0<sE`L#$O9_m
z0TuFq3VA<Ve-D%AJX3x7nenV^An%nTbwLiA2TaHVDC7YZ@_-6?K!rS@LLN{d52%m_
zRLBD=<N+1(fC_m)g*>1_o<iBmt6Pvtp_YzMvXut`y^H<4%7Xx4LI6M^0H_cER0sen
z1OOERfC>RXg#e&J08k+Ss1N{D2mmSs02Klhs)tsoyMe7eTI)E4#?vk@3U)l?X&qn8
z&%@IX@iT2Qt!FxxxAIU)c-BMo*WJ{$1+3mQ@z<|YuaV+#3@PlHa8bbu-I`hdhEsvO
zvQ0*22_PVO5QYqyrB^D+dW{zsUTPgn&?ur6NKw6M`D1p(coC;ct!JsR$uDn52~std
zW#l7CHKygG1n#=|%qoPs7Ps%m8pCys$;d}a`WS!jMFv%Mc&6&o@}HdX6yHaex{y?L
zp#)Wzde%c@5S>>ptWw&6(H1;wu|Dogs93$|B|zB+02R#xD(gK^(Ji1mz%x+c8K^ql
zp}__!)<vPby4&r%?yV7yc0SSiJWfeF0ZKc8N;`o{JAq0&fl51pN;`o{JAq0&70TLT
zzlFP@%gL-T{1)zA8Trfiyy7qdz|`BWHYn2^=)+8yjmks@s@`_BQJJbh)!VLuvS!)s
zdhS7b707DWBNvTzv<sND3!t<MsI&{Hv<s-T3#haUsI*I=dMIdy=csXY%%ynD?z?$7
zIqo<%BY)oTTR5eztdVX2+{UxpMpbChMi($^Ho6*G2iZ^Es0tq1vJyO0^|IF0*06eO
zM;@kOKx=6j&{`S>w3db`R1Zx{xnv!EmaUAM-X4B-cu*?s#PrYtI1I3`<1#326y@$<
zg&K3cd54N=wn0$>plV9ls3-wYHKlA+lmMtqDOD}E^?#3+=%IJi^)Tzmk~+|(PONrj
z0M^0`&{~)QS_?A@bu$Bjn#Ty>|E!kKPlDiLK3z!&l3LJ|$@%ycW(Fq&Uv#8jrD+!L
z>cV8+0+hpcNUCW}1p)mDYc^1sJV2*m8Ut06+?HMLMrCS2R*vE!t4x3`yW1@*6A!ZY
z!bO0r7zm(?+~`Uq70RP$v$fz(`sE>ut@F02*BHPSFkuUzumx1u0xE0)6}Es1TR?>^
zpu!eVVGF3R1ytAqDr^B2wtxy-K!q)!!WK|rOQG)l^O7!S@DhbL5nuh|562P(Y#r1E
zpsfEu<wtyg%De!2FNPeb><)k~a-%YTfv$C<vUdQw&5g?J23iLFK)qrH6{?5cRo98F
zH~C3JPZ~d(l?K7nn@gYIuoaHHr>?HUDQtt0Q$mMG%4KdyehkVWx&=vO{=uCT${;HW
z23heyAS(<aSq>H;t4{Z*JCK#IBQmc+W+dNq%WgmtvYXwRce;~8H|iDTgsgZks7TmX
zNj>xojy5u^_{nKq=qJ!{UP7%$avpEB;W>!6gyc794RT5aD#_NsF8ZapUS6<;HYAUt
zXylZlRgw>)XrIzdZaFuL-*4S`R(0_0XSJd~>bMn++tPHfLz`zue%zK;`Kf=F>@G(h
zsvbA0dB;o9Na{#h{;yekU!rj2&*~!9N6yzmyZnRx?tyg-5<BB*PAPLouPgvms%t0J
zYoWwCGRunx$gFhL&O8>xBl9dy+NfgLPRgkWGArw6qe>g?q<SsXZpL<Z$x8j~%ydGh
zRz{R8FAt#2YRn{a<1U+>1eHHIojpi7H(Sx0Q$i3xAqYt!Xs4N32m&euAt?kQvk(MS
z2trZ_LS`Wds1Sst5QNM^5KtiqNg)WCg&?3pkV@*IPqE`rr<>N4lPLp@R#Rr~C*?d*
zWi}!yv+;HM)4YU|TWl4gY8ubmUQ%<OnMbZ;{kk$Xw^9d^QpdYNb<TH~I&#d}Z%rp^
zxb-~WF|{z|)U>3<#L9yyNA1-^^mpUv1SG&Naki;(Ws!!wULrQ(S@>oZrPjls1N;t2
zpcA01Ko=tk^ffp7wHqCSbqum{j~BA9I#E3|%zWd5wnB(Y=f4(lyrb0pr#m>+$?OO)
zS;vr+bqsmcOGz{-fy%;#q%2&>JO)h%D*A(@tW?M>fdQbhG$AQV6Ebgfmn>@$GRs<o
z%<9D=yUj`i?W7!#smwgIHe2shcIKhQ9$>wh0$ad@EhL34<Q2An3R_4DTgWVI0Ts58
z6t<9A*a9kSAt`Jjv#<qJ*g{g+LS|tLsIY~ku%$BVp;y!|r2TLD8dmeO>WwTNI<)lW
z;*kS}4EHqDLmM^o4n?~8b8UCS46$F8Mxjn+W_rjY8>gep=yzn~-v}n9;S#^Up^S|I
zm#7|DyX+Fx?+BY2yT9JS+-0Zbt4BTbHd^ZAmRiO$oo4Diu11%XB>2^Mu0lO>qmNz2
zFEacK&Qu)gL5jO_)A5<o74^tnK|TC~&$bLwEYp1GA(2s!_UW@t0uG?rue~=T|M<<V
zdZ^ymDfcKGF}wYveX4cdya`N~GU*Me4m;Hpsh1uznKv;`k;9GmsH+n>(Lug9Z&C*R
zUgdoz|8}b8AviioYasZqHG))<M2cCWI&+t-kTy%oF&yeoJeosDl1M>vn!ej1sZ#c#
zzSUc>#agExbz1>h&(z9o|3qb~82x&-MS0DV@<Rrxl2(O{r501MQK9^Lf)Z1kJ#0jH
zV9A~%g@K(rN4*fmAsZTWm9hrLnf+*m_0WfhHy%@Xk761RdUUHTnr2#=)QnE!!N2TH
z#c;-+y;N|WOH_|;<Dq{2+sydZj799wa7Oj0ht|7|hx(!PX6pJqSv;gzBc^2JpB}0Z
z{gsqOQ<~)Ei~C0>Y3VQjRy#Ecl1QP>?X5F;kIh3vb*hv@fB6UAZAqjc`OHV>nO#+q
zDy4_kI(zHQn`%u_-Xo-%_;q3}*RP{TtE<N<hJGqB{w;oLFls}JN3hY?^Uc|YN2`-c
zO#OPlC59A>U7S0c3E=Tmk9NqJLbYl!FhkBclmQWDzVLNl2CV>UyL}?1rm<;Kmr+_#
zie^VBG>W(4r<ker>(o0Kr<tiem)*)3U(|r6a^>og8TwyPE%g~^WH1tk4yoU=hCU(1
zS}{E%|G*(jhb3hVY+C*?OIkX7VYkP5F+`n6q0TRVo@ow}YJo~w!<&}>cHbnc1SFAy
z<d%OOFttKSs+1mj%BjP=l+&LiX%^S0e=~SkRf^?j@~}QAGgeZL-X620)m#3nD0ZDl
zq0ZuoComH{W2sJ+a`cw}l!`5h6eQ1mYn;qjl2j>jqTIcO&he&WmNj`zTUlTmReE&v
z^B82T9`c`Gpmw4jq`024PqWSL;nC4I_179K8KhVy_JaBqKAtG*Q4dYQTX1S~W6h+R
zmO$>uk#p&xJ-And74QCxeC&U?3uM_GyCK3}YW9pMhNLXQym|kPuw~^)xblKaSm9AK
zQas3nmCwnQL6($7p~~>fB>FS=mM~Hf?)zR_hp<ZNp@q;8d!vW}XX;Bz>Wf;aM~lu>
zb6-89bFJk+iA0U!5}!YKKhHNFO!dgEx2xtqn}m!z_pM<TIHP*hL!TgaX>Ddy^p0o#
z0}fsG<~_)pknU!??UXe@mcAUlq@~yV2L!26kVJ~vr8;jqei?U?XRf5Ip-IbEe|6B3
zL<*7{zwa)qG)byd^Rwz(4pr$*qdkpmj|wU}J44(kL`SgDG$Fz;g07|IzY??5l4^sC
zh1#zC;(Z<|t_^M&*QOq=UVHOM3=S8>MxU<nW`)Jzl(Cq4O!36Ld2`qvE1#=AaY_s8
z(e?1y#H=2Y7(6f3<~_wPJ%o40O;wMM9+DWGFNh7_zFWlLps|>GR9>0-BN7;lxt1RW
zdd><i=h@MO`fD2<)+k9?TI|jHZ-mvPL|t$>Onp(_2RBrGi%EIpj42MBH}4_KPlNE$
zjoGn@Sz|_G@X%1(&Ap%G`N@5PBgcJGkB%`TF}P<C>stPxh{20vG4)u@%bk~zUtoH&
zKB3FBY~a%(u?BY!1`90LCMJK8Al1$tL9CjucXYL-_<Gd6hRc;ZWOh##!iM`WHsz>g
zY|jo8U_Ki$<)vjF%M?F0F-u)Y46Yt(duZoenX7OIdGyqyLtRJ=jvvIzFL{maHES81
zLl#qyDITFWkA&g)LDx1vs$QL8VfcqEtR5Yc``E;sJ%r1L+9qylD)tthA=joJ-93cA
z2eE?j%X#tTM#3#*G4)u@3#6th53gA~aLi+<e8i&>bM_F<9>kuV^o`72IE36(_2}*)
zoIQwjd*@LZdN_nErXFoCu=)&~`+I%fLa7O1`i3lK-9|blffUb6=?WYy41>dX!nfku
z)T3KhjzP@HBwQ=hR`~LA-kbBF!vo{m)T5h8_*D@5Z21Nm0JvW)rXKZ>ZbpIa=?*gj
zS){ni!`K(nuwxK&c5u|$AM+@qHl(;VJaS9bqq~FiK94!XkYX`BvY2{IaVNcb3oNe@
zbv9i7hPk3!t|kjB-_bFI$0la=ki_6GqPEKxWV7GJO@&*@wW&u(4@nHpBE$xCx>$w~
zJ|&B(#}pS*De3xk%2|Z4LrD)mhQ}ag^^k@hE+cB2*7{=UA>2xCs(N(vki_6MLhL^a
zKjaZ*V&GY_n0l<uovdxqbGwr@<*MdRQgh%kqB#f{@jlP?7I~j1DTi+SH^NT-;4-3S
zxRa<EDb%b|ZWiG(LKyBOgpq=<O4;tDJ>%gTqKKo`mSYfe_7?snY8zVj1op{z*x`fn
zu&YORKjCdctlQrHqAl=9Sxh~qxS?u3z}r05EzB{9IeQ2{6Sei-Qb!hexTD-u_2}*)
UoJ@$lIa4{ZObmQc7E_P^1NP??_y7O^

literal 68297
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
Mx!Mw`=Bg<F2i-)72LJ#7

diff --git a/example/pubspec.lock b/example/pubspec.lock
index dd5e36d..45a6529 100644
--- a/example/pubspec.lock
+++ b/example/pubspec.lock
@@ -21,7 +21,7 @@ packages:
       name: characters
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.0.0"
+    version: "1.1.0-nullsafety"
   charcode:
     dependency: transitive
     description:
@@ -42,7 +42,7 @@ packages:
       name: collection
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.14.13"
+    version: "1.15.0-nullsafety"
   fake_async:
     dependency: transitive
     description:
@@ -80,7 +80,7 @@ packages:
       name: meta
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.1.8"
+    version: "1.3.0-nullsafety"
   path:
     dependency: transitive
     description:
@@ -94,7 +94,7 @@ packages:
       path: ".."
       relative: true
     source: path
-    version: "0.0.3"
+    version: "0.0.4"
   sky_engine:
     dependency: transitive
     description: flutter
@@ -148,13 +148,13 @@ packages:
       name: typed_data
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.2.0"
+    version: "1.3.0-nullsafety"
   vector_math:
     dependency: transitive
     description:
       name: vector_math
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "2.0.8"
+    version: "2.1.0-nullsafety"
 sdks:
-  dart: ">=2.9.0-14.0.dev <3.0.0"
+  dart: ">=2.9.0-18.0 <2.9.0"
diff --git a/lib/src/core/field_types/core_bool_type.dart b/lib/src/core/field_types/core_bool_type.dart
index 8c5b8e5..70bb679 100644
--- a/lib/src/core/field_types/core_bool_type.dart
+++ b/lib/src/core/field_types/core_bool_type.dart
@@ -1,11 +1,7 @@
 import 'package:rive/src/core/field_types/core_field_type.dart';
 import 'package:rive/src/utilities/binary_buffer/binary_reader.dart';
 
-
 class CoreBoolType extends CoreFieldType<bool> {
   @override
   bool deserialize(BinaryReader reader) => reader.readInt8() == 1;
-
-  @override
-  bool lerp(bool from, bool to, double f) => from;
 }
diff --git a/lib/src/core/field_types/core_color_type.dart b/lib/src/core/field_types/core_color_type.dart
new file mode 100644
index 0000000..321942f
--- /dev/null
+++ b/lib/src/core/field_types/core_color_type.dart
@@ -0,0 +1,7 @@
+import 'package:rive/src/core/field_types/core_field_type.dart';
+import 'package:rive/src/utilities/binary_buffer/binary_reader.dart';
+
+class CoreColorType extends CoreFieldType<int> {
+  @override
+  int deserialize(BinaryReader reader) => reader.readUint32();
+}
diff --git a/lib/src/core/field_types/core_double_type.dart b/lib/src/core/field_types/core_double_type.dart
index 8722d30..71f8784 100644
--- a/lib/src/core/field_types/core_double_type.dart
+++ b/lib/src/core/field_types/core_double_type.dart
@@ -3,10 +3,5 @@ import 'package:rive/src/utilities/binary_buffer/binary_reader.dart';
 
 class CoreDoubleType extends CoreFieldType<double> {
   @override
-  double deserialize(BinaryReader reader) => reader.buffer.lengthInBytes == 4
-      ? reader.readFloat32()
-      : reader.readFloat64();
-
-  @override
-  double lerp(double from, double to, double f) => from + (to - from) * f;
+  double deserialize(BinaryReader reader) => reader.readFloat32();
 }
diff --git a/lib/src/core/field_types/core_field_type.dart b/lib/src/core/field_types/core_field_type.dart
index c9e3f7d..a123e05 100644
--- a/lib/src/core/field_types/core_field_type.dart
+++ b/lib/src/core/field_types/core_field_type.dart
@@ -1,6 +1,6 @@
 import 'package:rive/src/utilities/binary_buffer/binary_reader.dart';
 
+// ignore: one_member_abstracts
 abstract class CoreFieldType<T> {
   T deserialize(BinaryReader reader);
-  T lerp(T from, T to, double f);
 }
diff --git a/lib/src/core/field_types/core_fractional_index_type.dart b/lib/src/core/field_types/core_fractional_index_type.dart
deleted file mode 100644
index 9ecb79a..0000000
--- a/lib/src/core/field_types/core_fractional_index_type.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-
-import 'package:rive/src/core/core.dart';
-import 'package:rive/src/core/field_types/core_field_type.dart';
-import 'package:rive/src/utilities/binary_buffer/binary_reader.dart';
-
-
-class CoreFractionalIndexType extends CoreFieldType<FractionalIndex> {
-  @override
-  FractionalIndex deserialize(BinaryReader reader) {
-    var numerator = reader.readVarInt();
-    var denominator = reader.readVarInt();
-    return FractionalIndex(numerator, denominator);
-  }
-
-  @override
-  FractionalIndex lerp(FractionalIndex from, FractionalIndex to, double f) =>
-      from;
-}
diff --git a/lib/src/core/field_types/core_int_type.dart b/lib/src/core/field_types/core_int_type.dart
index 056a0f0..5642bb1 100644
--- a/lib/src/core/field_types/core_int_type.dart
+++ b/lib/src/core/field_types/core_int_type.dart
@@ -1,11 +1,7 @@
 import 'package:rive/src/core/field_types/core_field_type.dart';
 import 'package:rive/src/utilities/binary_buffer/binary_reader.dart';
 
-
 class CoreIntType extends CoreFieldType<int> {
   @override
   int deserialize(BinaryReader reader) => reader.readVarInt();
-
-  @override
-  int lerp(int from, int to, double f) => (from + (to - from) * f).round();
 }
diff --git a/lib/src/core/field_types/core_string_type.dart b/lib/src/core/field_types/core_string_type.dart
index cec1892..80c3317 100644
--- a/lib/src/core/field_types/core_string_type.dart
+++ b/lib/src/core/field_types/core_string_type.dart
@@ -4,8 +4,5 @@ import 'package:rive/src/utilities/binary_buffer/binary_reader.dart';
 class CoreStringType extends CoreFieldType<String> {
   @override
   String deserialize(BinaryReader reader) =>
-      reader.readString(explicitLength: false);
-
-  @override
-  String lerp(String from, String to, double f) => from;
+      reader.readString(explicitLength: true);
 }
diff --git a/lib/src/core/field_types/core_uint_type.dart b/lib/src/core/field_types/core_uint_type.dart
new file mode 100644
index 0000000..cf4bdb1
--- /dev/null
+++ b/lib/src/core/field_types/core_uint_type.dart
@@ -0,0 +1,7 @@
+import 'package:rive/src/core/field_types/core_field_type.dart';
+import 'package:rive/src/utilities/binary_buffer/binary_reader.dart';
+
+class CoreUintType extends CoreFieldType<int> {
+  @override
+  int deserialize(BinaryReader reader) => reader.readVarUint();
+}
diff --git a/lib/src/generated/rive_core_context.dart b/lib/src/generated/rive_core_context.dart
index 976a017..5459e8b 100644
--- a/lib/src/generated/rive_core_context.dart
+++ b/lib/src/generated/rive_core_context.dart
@@ -1,9 +1,11 @@
 import 'package:rive/src/core/core.dart';
 import 'package:rive/src/core/field_types/core_bool_type.dart';
+import 'package:rive/src/core/field_types/core_color_type.dart';
 import 'package:rive/src/core/field_types/core_double_type.dart';
 import 'package:rive/src/core/field_types/core_field_type.dart';
 import 'package:rive/src/core/field_types/core_int_type.dart';
 import 'package:rive/src/core/field_types/core_string_type.dart';
+import 'package:rive/src/core/field_types/core_uint_type.dart';
 import 'package:rive/src/generated/animation/animation_base.dart';
 import 'package:rive/src/generated/animation/cubic_interpolator_base.dart';
 import 'package:rive/src/generated/animation/keyed_object_base.dart';
@@ -476,30 +478,32 @@ class RiveCoreContext {
     }
   }
 
+  static CoreFieldType uintType = CoreUintType();
   static CoreFieldType intType = CoreIntType();
   static CoreFieldType stringType = CoreStringType();
   static CoreFieldType doubleType = CoreDoubleType();
-  static CoreFieldType colorType = CoreIntType();
+  static CoreFieldType colorType = CoreColorType();
   static CoreFieldType boolType = CoreBoolType();
   static CoreFieldType coreType(int propertyKey) {
     switch (propertyKey) {
       case KeyedObjectBase.objectIdPropertyKey:
+      case KeyFrameBase.interpolatorIdPropertyKey:
+      case KeyFrameDrawOrderValueBase.drawableIdPropertyKey:
+      case KeyFrameDrawOrderValueBase.valuePropertyKey:
+      case ComponentBase.parentIdPropertyKey:
+      case DrawableBase.drawOrderPropertyKey:
+        return uintType;
       case KeyedPropertyBase.propertyKeyPropertyKey:
       case KeyFrameBase.framePropertyKey:
       case KeyFrameBase.interpolationTypePropertyKey:
-      case KeyFrameBase.interpolatorIdPropertyKey:
       case LinearAnimationBase.fpsPropertyKey:
       case LinearAnimationBase.durationPropertyKey:
       case LinearAnimationBase.loopValuePropertyKey:
       case LinearAnimationBase.workStartPropertyKey:
       case LinearAnimationBase.workEndPropertyKey:
-      case KeyFrameDrawOrderValueBase.drawableIdPropertyKey:
-      case KeyFrameDrawOrderValueBase.valuePropertyKey:
-      case ComponentBase.parentIdPropertyKey:
       case StrokeBase.capPropertyKey:
       case StrokeBase.joinPropertyKey:
       case FillBase.fillRulePropertyKey:
-      case DrawableBase.drawOrderPropertyKey:
       case DrawableBase.blendModeValuePropertyKey:
         return intType;
       case AnimationBase.namePropertyKey:
@@ -560,18 +564,32 @@ class RiveCoreContext {
     }
   }
 
-  static int getInt(Core object, int propertyKey) {
+  static int getUint(Core object, int propertyKey) {
     switch (propertyKey) {
       case KeyedObjectBase.objectIdPropertyKey:
         return (object as KeyedObjectBase).objectId;
+      case KeyFrameBase.interpolatorIdPropertyKey:
+        return (object as KeyFrameBase).interpolatorId;
+      case KeyFrameDrawOrderValueBase.drawableIdPropertyKey:
+        return (object as KeyFrameDrawOrderValueBase).drawableId;
+      case KeyFrameDrawOrderValueBase.valuePropertyKey:
+        return (object as KeyFrameDrawOrderValueBase).value;
+      case ComponentBase.parentIdPropertyKey:
+        return (object as ComponentBase).parentId;
+      case DrawableBase.drawOrderPropertyKey:
+        return (object as DrawableBase).drawOrder;
+    }
+    return 0;
+  }
+
+  static int getInt(Core object, int propertyKey) {
+    switch (propertyKey) {
       case KeyedPropertyBase.propertyKeyPropertyKey:
         return (object as KeyedPropertyBase).propertyKey;
       case KeyFrameBase.framePropertyKey:
         return (object as KeyFrameBase).frame;
       case KeyFrameBase.interpolationTypePropertyKey:
         return (object as KeyFrameBase).interpolationType;
-      case KeyFrameBase.interpolatorIdPropertyKey:
-        return (object as KeyFrameBase).interpolatorId;
       case LinearAnimationBase.fpsPropertyKey:
         return (object as LinearAnimationBase).fps;
       case LinearAnimationBase.durationPropertyKey:
@@ -582,20 +600,12 @@ class RiveCoreContext {
         return (object as LinearAnimationBase).workStart;
       case LinearAnimationBase.workEndPropertyKey:
         return (object as LinearAnimationBase).workEnd;
-      case KeyFrameDrawOrderValueBase.drawableIdPropertyKey:
-        return (object as KeyFrameDrawOrderValueBase).drawableId;
-      case KeyFrameDrawOrderValueBase.valuePropertyKey:
-        return (object as KeyFrameDrawOrderValueBase).value;
-      case ComponentBase.parentIdPropertyKey:
-        return (object as ComponentBase).parentId;
       case StrokeBase.capPropertyKey:
         return (object as StrokeBase).cap;
       case StrokeBase.joinPropertyKey:
         return (object as StrokeBase).join;
       case FillBase.fillRulePropertyKey:
         return (object as FillBase).fillRule;
-      case DrawableBase.drawOrderPropertyKey:
-        return (object as DrawableBase).drawOrder;
       case DrawableBase.blendModeValuePropertyKey:
         return (object as DrawableBase).blendModeValue;
     }
@@ -724,11 +734,31 @@ class RiveCoreContext {
     return false;
   }
 
-  static void setInt(Core object, int propertyKey, int value) {
+  static void setUint(Core object, int propertyKey, int value) {
     switch (propertyKey) {
       case KeyedObjectBase.objectIdPropertyKey:
         (object as KeyedObjectBase).objectId = value;
         break;
+      case KeyFrameBase.interpolatorIdPropertyKey:
+        (object as KeyFrameBase).interpolatorId = value;
+        break;
+      case KeyFrameDrawOrderValueBase.drawableIdPropertyKey:
+        (object as KeyFrameDrawOrderValueBase).drawableId = value;
+        break;
+      case KeyFrameDrawOrderValueBase.valuePropertyKey:
+        (object as KeyFrameDrawOrderValueBase).value = value;
+        break;
+      case ComponentBase.parentIdPropertyKey:
+        (object as ComponentBase).parentId = value;
+        break;
+      case DrawableBase.drawOrderPropertyKey:
+        (object as DrawableBase).drawOrder = value;
+        break;
+    }
+  }
+
+  static void setInt(Core object, int propertyKey, int value) {
+    switch (propertyKey) {
       case KeyedPropertyBase.propertyKeyPropertyKey:
         (object as KeyedPropertyBase).propertyKey = value;
         break;
@@ -738,9 +768,6 @@ class RiveCoreContext {
       case KeyFrameBase.interpolationTypePropertyKey:
         (object as KeyFrameBase).interpolationType = value;
         break;
-      case KeyFrameBase.interpolatorIdPropertyKey:
-        (object as KeyFrameBase).interpolatorId = value;
-        break;
       case LinearAnimationBase.fpsPropertyKey:
         (object as LinearAnimationBase).fps = value;
         break;
@@ -756,15 +783,6 @@ class RiveCoreContext {
       case LinearAnimationBase.workEndPropertyKey:
         (object as LinearAnimationBase).workEnd = value;
         break;
-      case KeyFrameDrawOrderValueBase.drawableIdPropertyKey:
-        (object as KeyFrameDrawOrderValueBase).drawableId = value;
-        break;
-      case KeyFrameDrawOrderValueBase.valuePropertyKey:
-        (object as KeyFrameDrawOrderValueBase).value = value;
-        break;
-      case ComponentBase.parentIdPropertyKey:
-        (object as ComponentBase).parentId = value;
-        break;
       case StrokeBase.capPropertyKey:
         (object as StrokeBase).cap = value;
         break;
@@ -774,9 +792,6 @@ class RiveCoreContext {
       case FillBase.fillRulePropertyKey:
         (object as FillBase).fillRule = value;
         break;
-      case DrawableBase.drawOrderPropertyKey:
-        (object as DrawableBase).drawOrder = value;
-        break;
       case DrawableBase.blendModeValuePropertyKey:
         (object as DrawableBase).blendModeValue = value;
         break;
diff --git a/lib/src/generated/shapes/rectangle_base.dart b/lib/src/generated/shapes/rectangle_base.dart
index ddda4fc..60d1de4 100644
--- a/lib/src/generated/shapes/rectangle_base.dart
+++ b/lib/src/generated/shapes/rectangle_base.dart
@@ -24,7 +24,7 @@ abstract class RectangleBase extends ParametricPath {
 
   /// --------------------------------------------------------------------------
   /// CornerRadius field with key 31.
-  double _cornerRadius;
+  double _cornerRadius = 0;
   static const int cornerRadiusPropertyKey = 31;
 
   /// Radius of the corners of this rectangle
diff --git a/lib/src/rive_core/math/circle_constant.dart b/lib/src/rive_core/math/circle_constant.dart
index 08aee37..67f3041 100644
--- a/lib/src/rive_core/math/circle_constant.dart
+++ b/lib/src/rive_core/math/circle_constant.dart
@@ -1 +1 @@
-double circleConstant = 0.552284749831;
+const circleConstant = 0.552284749831;
diff --git a/lib/src/rive_core/math/mat2d.dart b/lib/src/rive_core/math/mat2d.dart
index cab0418..ac86869 100644
--- a/lib/src/rive_core/math/mat2d.dart
+++ b/lib/src/rive_core/math/mat2d.dart
@@ -48,6 +48,10 @@ class Mat2D {
   Mat2D.fromScaling(Vec2D scaling) {
     _buffer = Float32List.fromList([scaling[0], 0, 0, scaling[1], 0, 0]);
   }
+  Mat2D.fromMat4(Float64List mat4) {
+    _buffer = Float32List.fromList(
+        [mat4[0], mat4[1], mat4[4], mat4[5], mat4[12], mat4[13]]);
+  }
   Mat2D.clone(Mat2D copy) {
     _buffer = Float32List.fromList(copy.values);
   }
diff --git a/lib/src/rive_core/runtime/runtime_header.dart b/lib/src/rive_core/runtime/runtime_header.dart
index 333bb35..00ce8ee 100644
--- a/lib/src/rive_core/runtime/runtime_header.dart
+++ b/lib/src/rive_core/runtime/runtime_header.dart
@@ -4,7 +4,7 @@ import 'package:rive/src/utilities/binary_buffer/binary_reader.dart';
 import 'exceptions/rive_format_error_exception.dart';
 
 class RuntimeHeader {
-  static const int majorVersion = 2;
+  static const int majorVersion = 3;
   static const int minorVersion = 0;
   static const String fingerprint = 'RIVE';
   final int ownerId;
diff --git a/lib/src/rive_core/shapes/ellipse.dart b/lib/src/rive_core/shapes/ellipse.dart
index 9b4f935..2e934a7 100644
--- a/lib/src/rive_core/shapes/ellipse.dart
+++ b/lib/src/rive_core/shapes/ellipse.dart
@@ -1,10 +1,9 @@
+import 'package:rive/src/rive_core/math/circle_constant.dart';
 import 'package:rive/src/rive_core/shapes/cubic_detached_vertex.dart';
 import 'package:rive/src/rive_core/shapes/path_vertex.dart';
 import 'package:rive/src/generated/shapes/ellipse_base.dart';
 export 'package:rive/src/generated/shapes/ellipse_base.dart';
 
-const double circleConstant = 0.55;
-
 class Ellipse extends EllipseBase {
   @override
   List<PathVertex> get vertices => [
diff --git a/lib/src/rive_core/shapes/path.dart b/lib/src/rive_core/shapes/path.dart
index b575381..280deaa 100644
--- a/lib/src/rive_core/shapes/path.dart
+++ b/lib/src/rive_core/shapes/path.dart
@@ -3,6 +3,7 @@ import 'dart:ui' as ui;
 import 'package:rive/src/rive_core/component.dart';
 import 'package:rive/src/rive_core/component_dirt.dart';
 import 'package:rive/src/rive_core/math/aabb.dart';
+import 'package:rive/src/rive_core/math/circle_constant.dart';
 import 'package:rive/src/rive_core/math/mat2d.dart';
 import 'package:rive/src/rive_core/math/vec2d.dart';
 import 'package:rive/src/rive_core/shapes/cubic_vertex.dart';
@@ -98,7 +99,7 @@ abstract class Path extends PathBase {
     }
     List<PathVertex> renderPoints = [];
     int pl = pts.length;
-    const double arcConstant = 0.55;
+    const arcConstant = circleConstant;
     const double iarcConstant = 1.0 - arcConstant;
     PathVertex previous = isClosed ? pts[pl - 1] : null;
     for (int i = 0; i < pl; i++) {
diff --git a/lib/src/rive_file.dart b/lib/src/rive_file.dart
index a3d159c..871d51b 100644
--- a/lib/src/rive_file.dart
+++ b/lib/src/rive_file.dart
@@ -99,7 +99,7 @@ class RiveFile {
                   int numValues = reader.readVarUint();
                   for (int m = 0; m < numValues; m++) {
                     var valueObject = KeyFrameDrawOrderValue();
-                    valueObject.drawableId = reader.readVarInt();
+                    valueObject.drawableId = reader.readVarUint();
                     valueObject.value = m;
                     keyframe.internalAddValue(valueObject);
                   }
@@ -153,30 +153,15 @@ T readRuntimeObject<T extends Core<CoreContext>>(BinaryReader reader,
       // Terminator. https://media.giphy.com/media/7TtvTUMm9mp20/giphy.gif
       break;
     }
-    int propertyLength = reader.readVarUint();
-    Uint8List valueBytes = reader.read(propertyLength);
 
     var fieldType = RiveCoreContext.coreType(propertyKey);
     if (fieldType == null) {
-      // This is considered an acceptable failure. A runtime may not support
-      // the same properties that were exported. The older object could still
-      // function without them, however, so it's up to the implementation to
-      // make sure that major versions are revved when breaking properties are
-      // added. Note that we intentionally first read the entire value bytes
-      // for the property so we can advance as expected even if we are
-      // skipping this value.
-      continue;
+      throw UnsupportedError('Unsupported property key $propertyKey. '
+          'A new runtime is likely necessary to play this file.');
     }
 
-    // We know what to expect, let's try to read the value. We instance a new
-    // reader here so that we don't overflow the exact length we're allowed to
-    // read.
-    var valueReader = BinaryReader.fromList(valueBytes);
-
-    // This will attempt to set the object property, but failure here is
-    // acceptable.
     RiveCoreContext.setObjectProperty(
-        object, propertyKey, fieldType.deserialize(valueReader));
+        object, propertyKey, fieldType.deserialize(reader));
   }
   return object as T;
 }
diff --git a/lib/src/utilities/binary_buffer/binary_reader.dart b/lib/src/utilities/binary_buffer/binary_reader.dart
index f2006c9..b5b85e7 100644
--- a/lib/src/utilities/binary_buffer/binary_reader.dart
+++ b/lib/src/utilities/binary_buffer/binary_reader.dart
@@ -7,6 +7,7 @@ class BinaryReader {
   final ByteData buffer;
   final Endian endian;
   int _readIndex = 0;
+  int get position => _readIndex;
 
   BinaryReader(this.buffer, {this.endian = Endian.little});
 
diff --git a/pubspec.lock b/pubspec.lock
index efae536..13bf620 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -73,7 +73,7 @@ packages:
       name: matcher
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.12.9"
+    version: "0.12.8"
   meta:
     dependency: "direct main"
     description:
@@ -134,7 +134,7 @@ packages:
       name: test_api
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.2.18"
+    version: "0.2.17"
   typed_data:
     dependency: transitive
     description:
diff --git a/pubspec.yaml b/pubspec.yaml
index c7b4bc4..dd775f9 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,6 +1,6 @@
 name: rive
 description: Rive 2 Flutter Runtime
-version: 0.0.3
+version: 0.0.4
 repository: https://github.com/rive-app/rive-flutter
 homepage: https://rive.app