{"v":"5.7.11","ip":0,"op":101,"fr":25,"w":500,"h":500,"nm":"C","assets":[],"layers":[{"ind":1,"ty":4,"nm":"L","sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[288.22,234.631,0],"l":2},"a":{"a":0,"k":[38.22,-15.369,0],"l":2},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":59,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":73.149,"s":[100,100,100]},{"t":87.298,"s":[0,0,100]}],"a":1,"l":2}},"shapes":[{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[-5.687,0],[0,-5.713],[5.713,0],[0,5.687]],"o":[[0,-5.713],[5.713,0],[0,5.687],[-5.687,0],[0,0]],"v":[[27.912,-15.356],[38.207,-25.676],[48.527,-15.356],[38.207,-5.061],[27.912,-15.356]],"c":false},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]}],"ip":0,"op":250,"st":0},{"ind":2,"ty":4,"nm":"L","sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[213.834,234.631,0],"l":2},"a":{"a":0,"k":[-36.166,-15.369,0],"l":2},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":65.702,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":79.851,"s":[100,100,100]},{"t":94,"s":[0,0,100]}],"a":1,"l":2}},"shapes":[{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[-5.687,0],[0,-5.713],[5.713,0],[0,5.687]],"o":[[0,-5.713],[5.713,0],[0,5.687],[-5.687,0],[0,0]],"v":[[-46.473,-15.356],[-36.179,-25.676],[-25.858,-15.356],[-36.179,-5.061],[-46.473,-15.356]],"c":false},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]}],"ip":0,"op":250,"st":0},{"ind":3,"ty":4,"nm":"L","sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[248.985,125.706,0],"l":2},"a":{"a":0,"k":[-95.509,-105.211,0],"l":2},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":60,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":68,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":76,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":84,"s":[100,100,100]},{"t":92,"s":[0,0,100]}],"a":1,"l":2}},"shapes":[{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-100.127,-101.321],[-104.074,-97.997]],"c":false},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"gr","nm":"G","it":[{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-86.945,-112.425],[-90.891,-109.101]],"c":false},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-91.619,-100.593],[-88.295,-96.647]],"c":false},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"gr","nm":"G","it":[{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-102.723,-113.775],[-99.399,-109.829]],"c":false},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]}],"ip":0,"op":250,"st":0},{"ind":4,"ty":4,"nm":"L","sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[400.907,210.139,0],"l":2},"a":{"a":0,"k":[-15.093,-103.861,0],"l":2},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":68,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":76,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":84,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":92,"s":[100,100,100]},{"t":100,"s":[0,0,100]}],"a":1,"l":2}},"shapes":[{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-19.711,-99.971],[-23.658,-96.647]],"c":false},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"gr","nm":"G","it":[{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.529,-111.075],[-10.475,-107.751]],"c":false},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.204,-99.243],[-7.879,-95.296]],"c":false},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"gr","nm":"G","it":[{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-22.308,-112.425],[-18.983,-108.479]],"c":false},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]}],"ip":0,"op":250,"st":0},{"ind":5,"ty":4,"nm":"L","sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[109.907,286.139,0],"l":2},"a":{"a":0,"k":[-15.093,-103.861,0],"l":2},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":60,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":68,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":76,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":84,"s":[100,100,100]},{"t":92,"s":[0,0,100]}],"a":1,"l":2}},"shapes":[{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-19.711,-99.971],[-23.658,-96.647]],"c":false},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"gr","nm":"G","it":[{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.529,-111.075],[-10.475,-107.751]],"c":false},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.204,-99.243],[-7.879,-95.296]],"c":false},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"gr","nm":"G","it":[{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-22.308,-112.425],[-18.983,-108.479]],"c":false},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]}],"ip":0,"op":250,"st":0},{"ind":6,"ty":4,"nm":"L","sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[248.985,160.141,0],"ti":[0,6.667,0],"to":[0,-6.667,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":7,"s":[248.985,120.141,0],"ti":[0,0,0],"to":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0},"t":41,"s":[248.985,120.141,0],"ti":[0,-6.667,0],"to":[0,6.667,0]},{"t":60,"s":[248.985,160.141,0]}],"a":1,"l":2},"a":{"a":0,"k":[-1.015,-89.859,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"shapes":[{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[4.547,-1.112],[1.787,-0.417],[7.881,-1.507],[0.815,-0.139],[4.924,-0.802],[5.226,-0.686],[4.511,-0.519],[4.256,-0.342],[0.295,-0.015],[9.746,-0.35],[0.164,-0.008],[4.732,-0.037],[4.114,0.093],[5.701,0.277],[4.618,0.331],[0.892,0.087],[8.033,0.918],[1.853,0.237],[4.638,0.724]],"o":[[-4.575,1.212],[-1.786,0.45],[-7.958,1.938],[-0.813,0.172],[-4.95,0.935],[-5.216,0.882],[-4.539,0.619],[-4.252,0.44],[-0.295,0.015],[-9.751,0.909],[-0.164,0.008],[-4.727,0.135],[-4.107,0.039],[-5.722,-0.046],[-4.61,-0.167],[-0.89,-0.055],[-8.012,-0.492],[-1.851,-0.204],[-4.661,-0.526],[0,0]],"v":[[117.268,-100.152],[103.536,-96.646],[98.177,-95.33],[74.402,-90.177],[71.961,-89.695],[57.166,-87.09],[41.503,-84.738],[27.912,-83.047],[15.12,-81.823],[14.269,-81.748],[-15.093,-79.902],[-15.585,-79.878],[-29.771,-79.571],[-42.135,-79.65],[-59.25,-80.086],[-73.061,-80.85],[-75.733,-81.047],[-99.738,-83.213],[-105.293,-83.859],[-119.289,-85.698]],"c":false},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[6.35,-1.506],[8.708,-1.65],[10.173,-1.345],[8.83,-0.737],[10.233,-0.363],[8.82,0.184],[10.301,0.751],[8.938,1.031],[6.502,0.983]],"o":[[-6.338,1.702],[-8.745,2.112],[-10.137,1.934],[-8.801,1.195],[-10.197,0.952],[-8.858,0.279],[-10.326,-0.092],[-8.91,-0.573],[-6.486,-0.721],[0,0]],"v":[[117.263,-100.163],[98.167,-95.315],[71.952,-89.702],[41.489,-84.75],[15.11,-81.823],[-15.602,-79.879],[-42.145,-79.637],[-73.049,-80.837],[-99.752,-83.215],[-119.297,-85.701]],"c":false},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]}],"ip":0,"op":250,"st":0},{"ind":7,"ty":4,"nm":"L","sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[250,250,0],"ti":[0,6.667,0],"to":[0,-6.667,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":7,"s":[250,210,0],"ti":[0,0,0],"to":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0},"t":41,"s":[250,210,0],"ti":[0,-6.667,0],"to":[0,6.667,0]},{"t":60,"s":[250,250,0]}],"a":1,"l":2},"a":{"a":0,"k":[0,0,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"shapes":[{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[-4.107,0.039],[0,0],[1.067,0.966],[0,0],[0.592,-0.654],[0,0],[0.073,1.476],[0,0],[-5.722,-0.046]],"o":[[0,0],[0.071,1.443],[0,0],[-0.687,-0.591],[0,0],[-0.999,1.068],[0,0],[5.701,0.277],[4.114,0.093]],"v":[[-29.771,-79.571],[-28.343,-58.181],[-31.072,-56.863],[-42.486,-66.982],[-44.781,-66.869],[-54.849,-55.754],[-57.728,-56.795],[-59.25,-80.086],[-42.135,-79.65]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":25,"s":[{"i":[[-4.107,0.039],[0,0],[1.067,0.966],[0,0],[0.592,-0.654],[0,0],[0.073,1.476],[0,0],[-5.722,-0.046]],"o":[[0,0],[0.071,1.443],[0,0],[-0.687,-0.591],[0,0],[-0.999,1.068],[0,0],[5.701,0.277],[4.114,0.093]],"v":[[-29.771,-79.571],[-28.343,-50.681],[-31.072,-49.363],[-42.486,-59.482],[-44.781,-59.369],[-54.849,-48.254],[-57.728,-49.295],[-59.25,-80.086],[-42.135,-79.65]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":50,"s":[{"i":[[-4.107,0.039],[0,0],[1.067,0.966],[0,0],[0.592,-0.654],[0,0],[0.073,1.476],[0,0],[-5.722,-0.046]],"o":[[0,0],[0.071,1.443],[0,0],[-0.687,-0.591],[0,0],[-0.999,1.068],[0,0],[5.701,0.277],[4.114,0.093]],"v":[[-29.771,-79.571],[-28.343,-58.181],[-31.072,-56.863],[-42.486,-66.982],[-44.781,-66.869],[-54.849,-55.754],[-57.728,-56.795],[-59.25,-80.086],[-42.135,-79.65]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":75,"s":[{"i":[[-4.107,0.039],[0,0],[1.067,0.966],[0,0],[0.592,-0.654],[0,0],[0.073,1.476],[0,0],[-5.722,-0.046]],"o":[[0,0],[0.071,1.443],[0,0],[-0.687,-0.591],[0,0],[-0.999,1.068],[0,0],[5.701,0.277],[4.114,0.093]],"v":[[-29.771,-79.571],[-28.343,-50.681],[-31.072,-49.363],[-42.486,-59.482],[-44.781,-59.369],[-54.849,-48.254],[-57.728,-49.295],[-59.25,-80.086],[-42.135,-79.65]],"c":true}]},{"t":100,"s":[{"i":[[-4.107,0.039],[0,0],[1.067,0.966],[0,0],[0.592,-0.654],[0,0],[0.073,1.476],[0,0],[-5.722,-0.046]],"o":[[0,0],[0.071,1.443],[0,0],[-0.687,-0.591],[0,0],[-0.999,1.068],[0,0],[5.701,0.277],[4.114,0.093]],"v":[[-29.771,-79.571],[-28.343,-58.181],[-31.072,-56.863],[-42.486,-66.982],[-44.781,-66.869],[-54.849,-55.754],[-57.728,-56.795],[-59.25,-80.086],[-42.135,-79.65]],"c":true}]}],"a":1}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[-9.751,0.909],[0,0],[1.067,0.966],[0,0],[0.592,-0.654],[0,0],[0.073,1.476],[0,0]],"o":[[0,0],[0.071,1.443],[0,0],[-0.686,-0.591],[0,0],[-0.966,1.067],[0,0],[9.746,-0.35]],"v":[[14.269,-81.748],[15.697,-52.858],[12.968,-51.54],[1.554,-61.659],[-0.741,-61.546],[-10.843,-50.429],[-13.688,-51.472],[-15.093,-79.902]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":25,"s":[{"i":[[-9.751,0.909],[0,0],[1.067,0.966],[0,0],[0.592,-0.654],[0,0],[0.073,1.476],[0,0]],"o":[[0,0],[0.071,1.443],[0,0],[-0.686,-0.591],[0,0],[-0.966,1.067],[0,0],[9.746,-0.35]],"v":[[14.269,-81.748],[15.697,-60.358],[12.968,-59.04],[1.554,-69.159],[-0.741,-69.046],[-10.843,-57.929],[-13.688,-58.972],[-15.093,-79.902]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":50,"s":[{"i":[[-9.751,0.909],[0,0],[1.067,0.966],[0,0],[0.592,-0.654],[0,0],[0.073,1.476],[0,0]],"o":[[0,0],[0.071,1.443],[0,0],[-0.686,-0.591],[0,0],[-0.966,1.067],[0,0],[9.746,-0.35]],"v":[[14.269,-81.748],[15.697,-52.858],[12.968,-51.54],[1.554,-61.659],[-0.741,-61.546],[-10.843,-50.429],[-13.688,-51.472],[-15.093,-79.902]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":75,"s":[{"i":[[-9.751,0.909],[0,0],[1.067,0.966],[0,0],[0.592,-0.654],[0,0],[0.073,1.476],[0,0]],"o":[[0,0],[0.071,1.443],[0,0],[-0.686,-0.591],[0,0],[-0.966,1.067],[0,0],[9.746,-0.35]],"v":[[14.269,-81.748],[15.697,-60.358],[12.968,-59.04],[1.554,-69.159],[-0.741,-69.046],[-10.843,-57.929],[-13.688,-58.972],[-15.093,-79.902]],"c":true}]},{"t":100,"s":[{"i":[[-9.751,0.909],[0,0],[1.067,0.966],[0,0],[0.592,-0.654],[0,0],[0.073,1.476],[0,0]],"o":[[0,0],[0.071,1.443],[0,0],[-0.686,-0.591],[0,0],[-0.966,1.067],[0,0],[9.746,-0.35]],"v":[[14.269,-81.748],[15.697,-52.858],[12.968,-51.54],[1.554,-61.659],[-0.741,-61.546],[-10.843,-50.429],[-13.688,-51.472],[-15.093,-79.902]],"c":true}]}],"a":1}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[-5.216,0.882],[0,0],[1.067,0.966],[0,0],[0.592,-0.654],[0,0],[0.073,1.476],[0,0],[-4.538,0.619]],"o":[[0,0],[0.071,1.443],[0,0],[-0.654,-0.592],[0,0],[-0.999,1.068],[0,0],[4.511,-0.519],[5.226,-0.686]],"v":[[57.166,-87.09],[58.753,-62.486],[56.024,-61.168],[44.61,-71.287],[42.314,-71.174],[32.246,-60.059],[29.368,-61],[27.912,-83.047],[41.503,-84.738]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":25,"s":[{"i":[[-5.216,0.882],[0,0],[1.067,0.966],[0,0],[0.592,-0.654],[0,0],[0.073,1.476],[0,0],[-4.538,0.619]],"o":[[0,0],[0.071,1.443],[0,0],[-0.654,-0.592],[0,0],[-0.999,1.068],[0,0],[4.511,-0.519],[5.226,-0.686]],"v":[[57.166,-87.09],[58.753,-54.986],[56.024,-53.668],[44.61,-63.787],[42.314,-63.674],[32.246,-52.559],[29.368,-53],[27.912,-83.047],[41.503,-84.738]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":50,"s":[{"i":[[-5.216,0.882],[0,0],[1.067,0.966],[0,0],[0.592,-0.654],[0,0],[0.073,1.476],[0,0],[-4.538,0.619]],"o":[[0,0],[0.071,1.443],[0,0],[-0.654,-0.592],[0,0],[-0.999,1.068],[0,0],[4.511,-0.519],[5.226,-0.686]],"v":[[57.166,-87.09],[58.753,-62.486],[56.024,-61.168],[44.61,-71.287],[42.314,-71.174],[32.246,-60.059],[29.368,-61],[27.912,-83.047],[41.503,-84.738]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":75,"s":[{"i":[[-5.216,0.882],[0,0],[1.067,0.966],[0,0],[0.592,-0.654],[0,0],[0.073,1.476],[0,0],[-4.538,0.619]],"o":[[0,0],[0.071,1.443],[0,0],[-0.654,-0.592],[0,0],[-0.999,1.068],[0,0],[4.511,-0.519],[5.226,-0.686]],"v":[[57.166,-87.09],[58.753,-54.986],[56.024,-53.668],[44.61,-63.787],[42.314,-63.674],[32.246,-52.559],[29.368,-53],[27.912,-83.047],[41.503,-84.738]],"c":true}]},{"t":100,"s":[{"i":[[-5.216,0.882],[0,0],[1.067,0.966],[0,0],[0.592,-0.654],[0,0],[0.073,1.476],[0,0],[-4.538,0.619]],"o":[[0,0],[0.071,1.443],[0,0],[-0.654,-0.592],[0,0],[-0.999,1.068],[0,0],[4.511,-0.519],[5.226,-0.686]],"v":[[57.166,-87.09],[58.753,-62.486],[56.024,-61.168],[44.61,-71.287],[42.314,-71.174],[32.246,-60.059],[29.368,-61],[27.912,-83.047],[41.503,-84.738]],"c":true}]}],"a":1}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[-1.786,0.45],[0,0],[1,0.965],[0,0],[0.592,-0.654],[0,0],[0.073,1.476],[0,0],[-7.958,1.938]],"o":[[0,0],[0.071,1.443],[0,0],[-0.654,-0.592],[0,0],[-0.999,1.068],[0,0],[7.88,-1.507],[1.787,-0.417]],"v":[[103.536,-96.647],[105.123,-64.543],[102.394,-63.225],[90.98,-73.344],[88.685,-73.231],[78.617,-62.115],[75.738,-63.156],[74.403,-90.177],[98.177,-95.33]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":25,"s":[{"i":[[-1.786,0.45],[0,0],[1,0.965],[0,0],[0.592,-0.654],[0,0],[0.073,1.476],[0,0],[-7.958,1.938]],"o":[[0,0],[0.071,1.443],[0,0],[-0.654,-0.592],[0,0],[-0.999,1.068],[0,0],[7.88,-1.507],[1.787,-0.417]],"v":[[103.536,-96.647],[105.123,-72.043],[102.394,-70.725],[90.98,-80.844],[88.685,-80.731],[78.617,-69.615],[75.738,-70.656],[74.403,-90.177],[98.177,-95.33]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":50,"s":[{"i":[[-1.786,0.45],[0,0],[1,0.965],[0,0],[0.592,-0.654],[0,0],[0.073,1.476],[0,0],[-7.958,1.938]],"o":[[0,0],[0.071,1.443],[0,0],[-0.654,-0.592],[0,0],[-0.999,1.068],[0,0],[7.88,-1.507],[1.787,-0.417]],"v":[[103.536,-96.647],[105.123,-64.543],[102.394,-63.225],[90.98,-73.344],[88.685,-73.231],[78.617,-62.115],[75.738,-63.156],[74.403,-90.177],[98.177,-95.33]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":75,"s":[{"i":[[-1.786,0.45],[0,0],[1,0.965],[0,0],[0.592,-0.654],[0,0],[0.073,1.476],[0,0],[-7.958,1.938]],"o":[[0,0],[0.071,1.443],[0,0],[-0.654,-0.592],[0,0],[-0.999,1.068],[0,0],[7.88,-1.507],[1.787,-0.417]],"v":[[103.536,-96.647],[105.123,-72.043],[102.394,-70.725],[90.98,-80.844],[88.685,-80.731],[78.617,-69.615],[75.738,-70.656],[74.403,-90.177],[98.177,-95.33]],"c":true}]},{"t":100,"s":[{"i":[[-1.786,0.45],[0,0],[1,0.965],[0,0],[0.592,-0.654],[0,0],[0.073,1.476],[0,0],[-7.958,1.938]],"o":[[0,0],[0.071,1.443],[0,0],[-0.654,-0.592],[0,0],[-0.999,1.068],[0,0],[7.88,-1.507],[1.787,-0.417]],"v":[[103.536,-96.647],[105.123,-64.543],[102.394,-63.225],[90.98,-73.344],[88.685,-73.231],[78.617,-62.115],[75.738,-63.156],[74.403,-90.177],[98.177,-95.33]],"c":true}]}],"a":1}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[-8.012,-0.491],[0,0],[1,0.965],[0,0],[0.625,-0.655],[0,0],[0.073,1.476],[0,0],[-1.851,-0.204]],"o":[[0,0],[0.071,1.443],[0,0],[-0.686,-0.591],[0,0],[-0.966,1.067],[0,0],[1.853,0.237],[8.033,0.918]],"v":[[-75.733,-81.047],[-74.479,-63.166],[-77.208,-61.847],[-88.589,-71.968],[-90.917,-71.853],[-100.985,-60.738],[-103.831,-61.781],[-105.293,-83.859],[-99.738,-83.213]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":25,"s":[{"i":[[-8.012,-0.491],[0,0],[1,0.965],[0,0],[0.625,-0.655],[0,0],[0.073,1.476],[0,0],[-1.851,-0.204]],"o":[[0,0],[0.071,1.443],[0,0],[-0.686,-0.591],[0,0],[-0.966,1.067],[0,0],[1.853,0.237],[8.033,0.918]],"v":[[-75.733,-81.047],[-74.479,-55.666],[-77.208,-54.347],[-88.589,-64.468],[-90.917,-64.353],[-100.985,-53.238],[-103.831,-54.281],[-105.293,-83.859],[-99.738,-83.213]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":50,"s":[{"i":[[-8.012,-0.491],[0,0],[1,0.965],[0,0],[0.625,-0.655],[0,0],[0.073,1.476],[0,0],[-1.851,-0.204]],"o":[[0,0],[0.071,1.443],[0,0],[-0.686,-0.591],[0,0],[-0.966,1.067],[0,0],[1.853,0.237],[8.033,0.918]],"v":[[-75.733,-81.047],[-74.479,-63.166],[-77.208,-61.847],[-88.589,-71.968],[-90.917,-71.853],[-100.985,-60.738],[-103.831,-61.781],[-105.293,-83.859],[-99.738,-83.213]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":75,"s":[{"i":[[-8.012,-0.491],[0,0],[1,0.965],[0,0],[0.625,-0.655],[0,0],[0.073,1.476],[0,0],[-1.851,-0.204]],"o":[[0,0],[0.071,1.443],[0,0],[-0.686,-0.591],[0,0],[-0.966,1.067],[0,0],[1.853,0.237],[8.033,0.918]],"v":[[-75.733,-81.047],[-74.479,-55.666],[-77.208,-54.347],[-88.589,-64.468],[-90.917,-64.353],[-100.985,-53.238],[-103.831,-54.281],[-105.293,-83.859],[-99.738,-83.213]],"c":true}]},{"t":100,"s":[{"i":[[-8.012,-0.491],[0,0],[1,0.965],[0,0],[0.625,-0.655],[0,0],[0.073,1.476],[0,0],[-1.851,-0.204]],"o":[[0,0],[0.071,1.443],[0,0],[-0.686,-0.591],[0,0],[-0.966,1.067],[0,0],[1.853,0.237],[8.033,0.918]],"v":[[-75.733,-81.047],[-74.479,-63.166],[-77.208,-61.847],[-88.589,-71.968],[-90.917,-71.853],[-100.985,-60.738],[-103.831,-61.781],[-105.293,-83.859],[-99.738,-83.213]],"c":true}]}],"a":1}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]}],"ip":0,"op":250,"st":0},{"ind":8,"ty":4,"nm":"L","sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":49,"s":[250,363.775,0],"ti":[0,-1.279,0],"to":[0,0.495,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":51,"s":[250,373.633,0],"ti":[0,0,0],"to":[0,3.025,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":56,"s":[250,371.775,0],"ti":[0,1.333,0],"to":[0,0,0]},{"t":62,"s":[250,363.775,0]}],"a":1,"l":2},"a":{"a":0,"k":[0,113.775,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"shapes":[{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-125,113.775],[-120.562,113.775]],"c":false},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-111.396,113.775],[110.187,113.775]],"c":false},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[119.765,113.775],[125,113.775]],"c":false},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]}],"ip":0,"op":250,"st":0},{"ind":9,"ty":4,"nm":"L","sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":7.414,"s":[-7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":14.829,"s":[7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":22.243,"s":[-7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":29.658,"s":[7]},{"t":37.395,"s":[0]}],"x":"var $bm_rt;\nvar fx = effect('ŝlosilo pli pura 6');\nvar doAnticipation = fx(1).value;\nvar doInterpolation = fx(2).value;\nvar doFollowThrough = fx(3).value;\nvar damping = $bm_div(fx(15).value, 10);\nvar elasticity = $bm_div(fx(13).value, 10);\nvar bounce = fx(17).value;\nvar anticipationDuration = fx(5).value;\nvar anticipationQuantity = $bm_div(fx(6).value, 100);\nvar slowIn = $bm_div(fx(9).value, 100);\nvar slowOut = $bm_div(fx(10).value, 100);\nvar spatialMode = fx(21).value;\nvar spatialDoInterpolation = fx(20).value;\nvar moBlurPrecision = fx(32).value;\nvar elasticityRandom = fx(14).value;\nvar dampingRandom = fx(16).value;\nvar softBody = fx(28).value;\nvar flexibility = $bm_div(fx(29).value, 100);\nvar doOverlap = fx(23).value;\nvar overlapDuration = fx(24).value;\nvar overlapRandom = fx(25).value;\nvar threshold = $bm_div($bm_div(1, moBlurPrecision), 1000);\nvar zeroValue;\nif ($bm_isInstanceOfArray(value)) {\n    if (value.length == 2)\n        zeroValue = [\n            0,\n            0\n        ];\n    else if (value.length == 3)\n        zeroValue = [\n            0,\n            0,\n            0\n        ];\n    else if (value.length == 4)\n        zeroValue = [\n            0,\n            0,\n            0,\n            0\n        ];\n} else\n    zeroValue = 0;\nvar isThisSpatial = isSpatial(thisProperty);\nvar isThisPosition = thisProperty === $bm_transform.position;\nvar simulate = false;\nif (isThisSpatial) {\n    doInterpolation = doInterpolation && spatialDoInterpolation;\n    if (isThisPosition && thisProperty.numKeys > 0) {\n        doOverlap = false;\n        simulate = false;\n    } else {\n        simulate = spatialMode == 2;\n        doOverlap = overlapDuration != 0 && doOverlap && simulate;\n    }\n} else {\n    doOverlap = false;\n}\nif (!doOverlap) {\n    overlapDuration = 0;\n}\nif (simulate && softBody && isThisSpatial && !isThisPosition && (doFollowThrough || doOverlap)) {\n    var distanceRatio = $bm_div(length(valueAtTime(0), $bm_transform.anchorPoint), $bm_div(thisLayer.width, 2));\n    distanceRatio = $bm_div($bm_sum(1, $bm_mul(distanceRatio, flexibility)), 2);\n    if (doFollowThrough) {\n        elasticity = $bm_div(elasticity, distanceRatio);\n        damping = $bm_div(damping, distanceRatio);\n    }\n    if (doOverlap) {\n        overlapDuration = $bm_mul(overlapDuration, distanceRatio);\n    }\n}\nseedRandom(0, true);\nif (doFollowThrough) {\n    if (elasticityRandom > 0)\n        elasticity = addNoise(elasticity, elasticityRandom);\n    if (dampingRandom > 0)\n        damping = addNoise(damping, dampingRandom);\n}\nif (doOverlap) {\n    if (doOverlap && overlapRandom > 0)\n        overlapDuration = addNoise(overlapDuration, overlapRandom);\n}\nvar result = value;\nfunction isSpatial(prop) {\n    if (!(prop.value instanceof Array))\n        return false;\n    if (prop.value.length != 2 && prop.value.length != 3)\n        return false;\n    try {\n        if (typeof prop.speed !== 'undefined')\n            return true;\n    } catch (e) {\n        return false;\n    }\n}\nfunction addNoise(val, quantity) {\n    var randomValue = random(0.9, 1.1);\n    var noiseValue = noise($bm_mul(valueAtTime(0), randomValue));\n    noiseValue = $bm_mul(noiseValue, $bm_div(quantity, 100));\n    return $bm_mul(val, $bm_sum(noiseValue, 1));\n}\nfunction isAfterLastKey() {\n    if (numKeys == 0)\n        return false;\n    var nKey = nearestKey(time);\n    return nKey.time <= time && nKey.index == numKeys;\n}\nfunction isStill(t, threshold) {\n    var d = $bm_sub(valueAtTime(t), valueAtTime($bm_sum(t, framesToTime(1))));\n    if ($bm_isInstanceOfArray(d)) {\n        for (var i = 0; i < d.length; i++) {\n            d[i] = Math.abs(d[i]);\n            if (d[i] >= threshold) {\n                return false;\n            }\n        }\n        return true;\n    } else {\n        d = Math.abs(d);\n        return d < threshold;\n    }\n}\nfunction bezierInterpolation(t, tMin, tMax, value1, value2, bezierPoints) {\n    if (arguments.length !== 5 && arguments.length !== 6)\n        return t;\n    var a = $bm_sub(value2, value1);\n    var b = $bm_sub(tMax, tMin);\n    if (b == 0)\n        return t;\n    var c = clamp($bm_div($bm_sub(t, tMin), b), 0, 1);\n    if (!(bezierPoints instanceof Array) || bezierPoints.length !== 4)\n        bezierPoints = [\n            0.33,\n            0,\n            0.66,\n            1\n        ];\n    return $bm_sum($bm_mul(a, h(c, bezierPoints)), value1);\n    function h(f, g) {\n        var x = $bm_mul(3, g[0]);\n        var j = $bm_sub($bm_mul(3, $bm_sub(g[2], g[0])), x);\n        var k = $bm_sub($bm_sub(1, x), j);\n        var l = $bm_mul(3, g[1]);\n        var m = $bm_sub($bm_mul(3, $bm_sub(g[3], g[1])), l);\n        var n = $bm_sub($bm_sub(1, l), m);\n        var d = f;\n        for (var i = 0; i < 5; i++) {\n            var z = $bm_sub($bm_mul(d, $bm_sum(x, $bm_mul(d, $bm_sum(j, $bm_mul(d, k))))), f);\n            if (Math.abs(z) < 0.001)\n                break;\n            d = $bm_sub(d, $bm_div(z, $bm_sum(x, $bm_mul(d, $bm_sum($bm_mul(2, j), $bm_mul($bm_mul(3, k), d))))));\n        }\n        return $bm_mul(d, $bm_sum(l, $bm_mul(d, $bm_sum(m, $bm_mul(d, n)))));\n    }\n}\nfunction getPropWorldSpeed(t, prop) {\n    return length(getPropWorldVelocity(t, prop));\n}\nfunction getPrevKey(t) {\n    if (numKeys == 0)\n        return null;\n    var nKey = nearestKey(t);\n    if (nKey.time <= t)\n        return nKey;\n    if (nKey.index > 1)\n        return key($bm_sub(nKey.index, 1));\n    return null;\n}\nfunction getNextKey(t) {\n    if (numKeys == 0)\n        return null;\n    var nKey = nearestKey(t);\n    if (nKey.time >= t)\n        return nKey;\n    if (nKey.index < numKeys)\n        return key($bm_sum(nKey.index, 1));\n    return null;\n}\nfunction getPropWorldVelocity(t, prop) {\n    return $bm_mul($bm_sub(getPropWorldValue($bm_sum(t, 0.005), prop), getPropWorldValue($bm_sub(t, 0.005), prop)), 100);\n}\nfunction getLayerWorldPos(t, l) {\n    return l.toWorld(l.anchorPoint, t);\n}\nfunction getPropWorldValue(t, prop) {\n    if (isPosition(prop))\n        return getLayerWorldPos(t, thisLayer);\n    return thisLayer.toWorld(prop.valueAtTime(t), t);\n}\nfunction isPosition(prop) {\n    return prop === $bm_transform.position;\n}\nfunction isKeyTop(k, axis) {\n    var prevSpeed = velocityAtTime($bm_sub(k.time, threshold));\n    var nextSpeed = velocityAtTime($bm_sum(k.time, threshold));\n    if ($bm_isInstanceOfArray(value)) {\n        prevSpeed = prevSpeed[axis];\n        nextSpeed = nextSpeed[axis];\n    }\n    if (Math.abs(prevSpeed) < 0.01 || Math.abs(nextSpeed) < 0.01)\n        return true;\n    return $bm_mul(prevSpeed, nextSpeed) < 0;\n}\nfunction anticipate() {\n    var anticipation = zeroValue;\n    if (isAfterLastKey())\n        return anticipation;\n    if (numKeys < 2)\n        return anticipation;\n    var nextKey = getNextKey(time);\n    var aKey = nextKey;\n    if (!isStill(aKey.time - 0.1, 0.1)) {\n        aKey = getPrevKey(time);\n        if (!isStill(aKey.time - 0.1, 0.1))\n            return anticipation;\n    }\n    if (aKey.index == numKeys)\n        return anticipation;\n    var anticipationMiddle = aKey.time;\n    var anticipationStart = $bm_sub(anticipationMiddle, anticipationDuration);\n    var anticipationEnd = key(aKey.index + 1).time;\n    var startValue = anticipation;\n    var midValue = $bm_mul($bm_sum($bm_neg(valueAtTime($bm_sum(anticipationMiddle, anticipationDuration))), aKey.value), anticipationQuantity);\n    var endValue = anticipation;\n    if (time < anticipationStart) {\n        return anticipation;\n    } else if (time < anticipationMiddle) {\n        if ($bm_isInstanceOfArray(value)) {\n            for (var i = 0; i < value.length; i++) {\n                anticipation[i] = bezierInterpolation(time, anticipationStart, anticipationMiddle, startValue[i], midValue[i], [\n                    slowOut,\n                    0,\n                    slowIn,\n                    1\n                ]);\n            }\n            return anticipation;\n        } else {\n            return bezierInterpolation(time, anticipationStart, anticipationMiddle, startValue, midValue, [\n                slowOut,\n                0,\n                slowIn,\n                1\n            ]);\n        }\n    } else if (time <= anticipationEnd) {\n        if ($bm_isInstanceOfArray(value)) {\n            for (var i = 0; i < value.length; i++) {\n                anticipation[i] = bezierInterpolation(time, anticipationMiddle, anticipationEnd, midValue[i], endValue[i], [\n                    slowOut,\n                    0,\n                    slowIn,\n                    1\n                ]);\n            }\n            return anticipation;\n        } else {\n            return bezierInterpolation(time, anticipationMiddle, anticipationEnd, midValue, endValue, [\n                slowOut,\n                0,\n                slowIn,\n                1\n            ]);\n        }\n    } else {\n        return anticipation;\n    }\n}\nfunction followThroughAtTime(t) {\n    var fThrough = zeroValue;\n    if (elasticity == 0)\n        return fThrough;\n    var propSpeed;\n    if (!simulate) {\n        if (numKeys < 2)\n            return fThrough;\n        if (nearestKey(t).index == 1)\n            return fThrough;\n        propSpeed = length(velocityAtTime(t));\n        if (propSpeed >= threshold)\n            return fThrough;\n    } else {\n        propSpeed = getPropWorldSpeed(t, thisProperty);\n        if (propSpeed >= threshold)\n            return fThrough;\n    }\n    var fThroughStart = 0;\n    var fThroughTime = 0;\n    if (simulate) {\n        var speedI = getPropWorldSpeed(t, thisProperty);\n        var i = t;\n        while (speedI < threshold && i > 0) {\n            i = $bm_sub(i, $bm_div(thisComp.frameDuration, moBlurPrecision));\n            speedI = getPropWorldSpeed(i, thisProperty);\n        }\n        fThroughStart = i;\n    } else {\n        var fThroughKey = getPrevKey(t);\n        fThroughStart = fThroughKey.time;\n    }\n    if (fThroughStart == 0)\n        return fThrough;\n    fThroughTime = $bm_sub(t, fThroughStart);\n    if (simulate)\n        fThrough = $bm_div(getPropWorldVelocity($bm_sub(fThroughStart, thisComp.frameDuration), thisProperty), 2);\n    else\n        fThrough = $bm_div(velocityAtTime($bm_sub(fThroughStart, thisComp.frameDuration)), 2);\n    if (bounce) {\n        var cycleDamp = Math.exp($bm_mul($bm_mul(fThroughTime, damping), 0.1));\n        var damp = $bm_div(Math.exp($bm_mul(fThroughTime, damping)), $bm_div(elasticity, 2));\n        var cycleDuration = $bm_div(1, $bm_mul(elasticity, 2));\n        cycleDuration = Math.round(timeToFrames(cycleDuration));\n        cycleDuration = framesToTime(cycleDuration);\n        var midDuration = $bm_div(cycleDuration, 2);\n        var maxValue = $bm_mul(fThrough, midDuration);\n        var cycvarime = fThroughTime;\n        var numEndCycles = 1;\n        while (cycvarime > cycleDuration) {\n            cycvarime = $bm_sub(cycvarime, cycleDuration);\n            cycleDuration = $bm_div(cycleDuration, cycleDamp);\n            cycleDuration = Math.round(timeToFrames(cycleDuration));\n            if (cycleDuration < 2) {\n                cycleDuration = 2;\n                numEndCycles++;\n            }\n            cycleDuration = framesToTime(cycleDuration);\n            midDuration = $bm_div(cycleDuration, 2);\n            maxValue = $bm_div($bm_mul(fThrough, midDuration), damp);\n            if (numEndCycles > 100 / damping && maxValue < threshold)\n                return zeroValue;\n        }\n        if (cycvarime < midDuration)\n            fThrough = bezierInterpolation(cycvarime, 0, midDuration, 0, maxValue, [\n                0,\n                0.1,\n                slowIn,\n                1\n            ]);\n        else\n            fThrough = bezierInterpolation(cycvarime, midDuration, cycleDuration, maxValue, 0, [\n                $bm_sub(1, slowIn),\n                0,\n                1,\n                0.9\n            ]);\n    } else {\n        var damp = Math.exp($bm_mul(fThroughTime, damping));\n        var sinus = $bm_mul($bm_mul($bm_mul(elasticity, fThroughTime), 2), Math.PI);\n        sinus = Math.sin(sinus);\n        sinus = $bm_mul($bm_div(0.3, elasticity), sinus);\n        sinus = $bm_div(sinus, damp);\n        if (Math.abs(sinus) < $bm_div(threshold, 100))\n            return 0;\n        fThrough = $bm_mul(fThrough, sinus);\n        if (threshold > 0) {\n            fThrough = $bm_mul(fThrough, $bm_sub(1, $bm_div(propSpeed, threshold)));\n        }\n    }\n    if (bounce) {\n        var prevValue = valueAtTime($bm_sub(fThroughStart, thisComp.frameDuration));\n        var startValue = valueAtTime(fThroughStart);\n        if ($bm_isInstanceOfArray(value)) {\n            for (var i = 0; i < prevValue.length; i++) {\n                if (prevValue[i] > startValue[i])\n                    fThrough[i] = Math.abs(fThrough[i]);\n                if (prevValue[i] < startValue[i])\n                    fThrough[i] = $bm_neg(Math.abs(fThrough[i]));\n            }\n        } else {\n            if (prevValue > startValue)\n                fThrough = Math.abs(fThrough);\n            if (prevValue < startValue)\n                fThrough = $bm_neg(Math.abs(fThrough));\n        }\n    }\n    if (simulate) {\n        if (!isThisPosition) {\n            fThrough = $bm_sum(fThrough, getLayerWorldPos(time, thisLayer));\n            fThrough = $bm_sub(thisLayer.fromWorld(fThrough), thisLayer.anchorPoint);\n        } else if (thisLayer.hasParent) {\n            fThrough = $bm_sum(fThrough, getLayerWorldPos(time, thisLayer.parent));\n            fThrough = $bm_sub(thisLayer.parent.fromWorld(fThrough), thisLayer.parent.anchorPoint);\n        }\n    }\n    return fThrough;\n}\nfunction followThrough() {\n    var propSpeed = length(velocity);\n    if (propSpeed < threshold)\n        return followThroughAtTime($bm_sub(time, overlapDuration));\n    var fThrough = zeroValue;\n    var t = time;\n    while (t > 0) {\n        t = $bm_sub(t, thisComp.frameDuration);\n        if (simulate)\n            propSpeed = getPropWorldSpeed($bm_sub(t, overlapDuration), thisProperty);\n        else\n            propSpeed = length(velocityAtTime(t));\n        if (propSpeed < threshold) {\n            fThrough = followThroughAtTime($bm_sub(t, overlapDuration));\n            break;\n        }\n    }\n    return linear(time, t, $bm_sum(t, $bm_mul(anticipationDuration, 2)), fThrough, zeroValue);\n}\nfunction smartSmooth(axis) {\n    var startKey = nearestKey(time);\n    var endKey = startKey;\n    if (time == startKey.time)\n        return 0;\n    if (time < startKey.time && startKey.index == 1)\n        return 0;\n    if (time > startKey.time && startKey.index == numKeys)\n        return 0;\n    if (time < startKey.time)\n        startKey = key($bm_sub(startKey.index, 1));\n    if (time > startKey.time)\n        endKey = key($bm_sum(startKey.index, 1));\n    var sI = 0.66;\n    var sO = 0.33;\n    var sIV = 1;\n    var sOV = 0;\n    var sVal = startKey.value;\n    var eVal = endKey.value;\n    if ($bm_isInstanceOfArray(value)) {\n        sVal = sVal[axis];\n        eVal = eVal[axis];\n    }\n    var sTime = startKey.time;\n    var eTime = endKey.time;\n    if (isKeyTop(startKey, axis))\n        sO = slowOut;\n    else {\n        var prevKey = key($bm_sub(startKey.index, 1));\n        var pVal = prevKey.value;\n        if ($bm_isInstanceOfArray(value))\n            pVal = pVal[axis];\n        sOV = $bm_div($bm_sub(sVal, pVal), $bm_sub(eVal, pVal));\n    }\n    if (isKeyTop(endKey, axis)) {\n        sI = slowIn;\n        if (endKey.index != numKeys) {\n            var nextKey = key($bm_sum(endKey.index, 1));\n            var nVal = nextKey.value;\n            if ($bm_isInstanceOfArray(value))\n                nVal = nVal[axis];\n            if (Math.abs(nVal - eVal) < 0.01 && doFollowThrough)\n                sI = 1;\n        }\n    } else {\n        var nextKey = key($bm_sum(endKey.index, 1));\n        var nVal = nextKey.value;\n        if ($bm_isInstanceOfArray(value))\n            nVal = nVal[axis];\n        sIV = $bm_div($bm_sub(eVal, sVal), $bm_sub(nVal, sVal));\n    }\n    if (endKey.index == numKeys && doFollowThrough) {\n        sI = 1;\n    }\n    var val = value;\n    if ($bm_isInstanceOfArray(value))\n        val = val[axis];\n    return $bm_sub(bezierInterpolation(time, sTime, eTime, sVal, eVal, [\n        sO,\n        sOV,\n        sI,\n        sIV\n    ]), val);\n}\nfunction overlap() {\n    var ol = zeroValue;\n    if (isThisPosition && !hasParent)\n        return zeroValue;\n    ol = $bm_sub(getPropWorldValue($bm_sub(time, overlapDuration), thisProperty), getPropWorldValue(time, thisProperty));\n    var motionRatio = $bm_div($bm_div(length(zeroValue, ol), thisLayer.width), 2);\n    if (isThisPosition) {\n        var originalDistance = length(valueAtTime(0));\n        motionRatio = $bm_div(length(zeroValue, ol), thisComp.width);\n    }\n    ol = $bm_sum(ol, getPropWorldValue(time, thisProperty));\n    ol = $bm_sum(ol, $bm_mul($bm_mul($bm_sub(getPropWorldValue($bm_sub(time, overlapDuration), thisLayer.anchorPoint), ol), motionRatio), flexibility));\n    ol = thisLayer.fromWorld(ol);\n    if (!isThisPosition)\n        ol = $bm_sub(ol, value);\n    else {\n        ol = linear(flexibility, 0, 100, $bm_div(ol, 2), 0);\n        var prevParentWorldPos = getLayerWorldPos($bm_sub(time, overlapDuration), parent);\n        ol = $bm_sum(ol, $bm_mul($bm_mul($bm_mul(thisLayer.fromWorld(prevParentWorldPos), motionRatio), flexibility), 5));\n    }\n    return ol;\n}\nvar okToGo = false;\nif (simulate && fx.enabled)\n    okToGo = true;\nelse if (numKeys > 1 && fx.enabled)\n    okToGo = true;\nif (okToGo) {\n    var smartSmoothResult = zeroValue;\n    if (doInterpolation) {\n        if ($bm_isInstanceOfArray(value)) {\n            if (value.length == 2)\n                smartSmoothResult = [\n                    smartSmooth(0),\n                    smartSmooth(1)\n                ];\n            else if (value.length == 3)\n                smartSmoothResult = [\n                    smartSmooth(0),\n                    smartSmooth(1),\n                    smartSmooth(2)\n                ];\n            else if (value.length == 4)\n                smartSmoothResult = [\n                    smartSmooth(0),\n                    smartSmooth(1),\n                    smartSmooth(2),\n                    smartSmooth(3)\n                ];\n        } else {\n            smartSmoothResult = smartSmooth(0);\n        }\n    }\n    if (doAnticipation)\n        result = $bm_sum(result, anticipate());\n    result = $bm_sum(result, smartSmoothResult);\n    if (doFollowThrough)\n        result = $bm_sum(result, followThrough());\n    if (doOverlap)\n        result = $bm_sum(result, overlap());\n}\n$bm_rt = result;"},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[249.956,363.775,0],"ti":[0,13.333,0],"to":[0,-13.333,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":7.737,"s":[249.956,283.775,0],"ti":[0,0,0],"to":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":41.263,"s":[249.956,283.775,0],"ti":[0,-13.333,0],"to":[0,13.333,0]},{"t":49,"s":[249.956,363.775,0]}],"x":"var $bm_rt;\nvar fx = effect('ŝlosilo pli pura 6');\nvar doAnticipation = fx(1).value;\nvar doInterpolation = fx(2).value;\nvar doFollowThrough = fx(3).value;\nvar damping = $bm_div(fx(15).value, 10);\nvar elasticity = $bm_div(fx(13).value, 10);\nvar bounce = fx(17).value;\nvar anticipationDuration = fx(5).value;\nvar anticipationQuantity = $bm_div(fx(6).value, 100);\nvar slowIn = $bm_div(fx(9).value, 100);\nvar slowOut = $bm_div(fx(10).value, 100);\nvar spatialMode = fx(21).value;\nvar spatialDoInterpolation = fx(20).value;\nvar moBlurPrecision = fx(32).value;\nvar elasticityRandom = fx(14).value;\nvar dampingRandom = fx(16).value;\nvar softBody = fx(28).value;\nvar flexibility = $bm_div(fx(29).value, 100);\nvar doOverlap = fx(23).value;\nvar overlapDuration = fx(24).value;\nvar overlapRandom = fx(25).value;\nvar threshold = $bm_div($bm_div(1, moBlurPrecision), 1000);\nvar zeroValue;\nif ($bm_isInstanceOfArray(value)) {\n    if (value.length == 2)\n        zeroValue = [\n            0,\n            0\n        ];\n    else if (value.length == 3)\n        zeroValue = [\n            0,\n            0,\n            0\n        ];\n    else if (value.length == 4)\n        zeroValue = [\n            0,\n            0,\n            0,\n            0\n        ];\n} else\n    zeroValue = 0;\nvar isThisSpatial = isSpatial(thisProperty);\nvar isThisPosition = thisProperty === $bm_transform.position;\nvar simulate = false;\nif (isThisSpatial) {\n    doInterpolation = doInterpolation && spatialDoInterpolation;\n    if (isThisPosition && thisProperty.numKeys > 0) {\n        doOverlap = false;\n        simulate = false;\n    } else {\n        simulate = spatialMode == 2;\n        doOverlap = overlapDuration != 0 && doOverlap && simulate;\n    }\n} else {\n    doOverlap = false;\n}\nif (!doOverlap) {\n    overlapDuration = 0;\n}\nif (simulate && softBody && isThisSpatial && !isThisPosition && (doFollowThrough || doOverlap)) {\n    var distanceRatio = $bm_div(length(valueAtTime(0), $bm_transform.anchorPoint), $bm_div(thisLayer.width, 2));\n    distanceRatio = $bm_div($bm_sum(1, $bm_mul(distanceRatio, flexibility)), 2);\n    if (doFollowThrough) {\n        elasticity = $bm_div(elasticity, distanceRatio);\n        damping = $bm_div(damping, distanceRatio);\n    }\n    if (doOverlap) {\n        overlapDuration = $bm_mul(overlapDuration, distanceRatio);\n    }\n}\nseedRandom(0, true);\nif (doFollowThrough) {\n    if (elasticityRandom > 0)\n        elasticity = addNoise(elasticity, elasticityRandom);\n    if (dampingRandom > 0)\n        damping = addNoise(damping, dampingRandom);\n}\nif (doOverlap) {\n    if (doOverlap && overlapRandom > 0)\n        overlapDuration = addNoise(overlapDuration, overlapRandom);\n}\nvar result = value;\nfunction isSpatial(prop) {\n    if (!(prop.value instanceof Array))\n        return false;\n    if (prop.value.length != 2 && prop.value.length != 3)\n        return false;\n    try {\n        if (typeof prop.speed !== 'undefined')\n            return true;\n    } catch (e) {\n        return false;\n    }\n}\nfunction addNoise(val, quantity) {\n    var randomValue = random(0.9, 1.1);\n    var noiseValue = noise($bm_mul(valueAtTime(0), randomValue));\n    noiseValue = $bm_mul(noiseValue, $bm_div(quantity, 100));\n    return $bm_mul(val, $bm_sum(noiseValue, 1));\n}\nfunction isAfterLastKey() {\n    if (numKeys == 0)\n        return false;\n    var nKey = nearestKey(time);\n    return nKey.time <= time && nKey.index == numKeys;\n}\nfunction isStill(t, threshold) {\n    var d = $bm_sub(valueAtTime(t), valueAtTime($bm_sum(t, framesToTime(1))));\n    if ($bm_isInstanceOfArray(d)) {\n        for (var i = 0; i < d.length; i++) {\n            d[i] = Math.abs(d[i]);\n            if (d[i] >= threshold) {\n                return false;\n            }\n        }\n        return true;\n    } else {\n        d = Math.abs(d);\n        return d < threshold;\n    }\n}\nfunction bezierInterpolation(t, tMin, tMax, value1, value2, bezierPoints) {\n    if (arguments.length !== 5 && arguments.length !== 6)\n        return t;\n    var a = $bm_sub(value2, value1);\n    var b = $bm_sub(tMax, tMin);\n    if (b == 0)\n        return t;\n    var c = clamp($bm_div($bm_sub(t, tMin), b), 0, 1);\n    if (!(bezierPoints instanceof Array) || bezierPoints.length !== 4)\n        bezierPoints = [\n            0.33,\n            0,\n            0.66,\n            1\n        ];\n    return $bm_sum($bm_mul(a, h(c, bezierPoints)), value1);\n    function h(f, g) {\n        var x = $bm_mul(3, g[0]);\n        var j = $bm_sub($bm_mul(3, $bm_sub(g[2], g[0])), x);\n        var k = $bm_sub($bm_sub(1, x), j);\n        var l = $bm_mul(3, g[1]);\n        var m = $bm_sub($bm_mul(3, $bm_sub(g[3], g[1])), l);\n        var n = $bm_sub($bm_sub(1, l), m);\n        var d = f;\n        for (var i = 0; i < 5; i++) {\n            var z = $bm_sub($bm_mul(d, $bm_sum(x, $bm_mul(d, $bm_sum(j, $bm_mul(d, k))))), f);\n            if (Math.abs(z) < 0.001)\n                break;\n            d = $bm_sub(d, $bm_div(z, $bm_sum(x, $bm_mul(d, $bm_sum($bm_mul(2, j), $bm_mul($bm_mul(3, k), d))))));\n        }\n        return $bm_mul(d, $bm_sum(l, $bm_mul(d, $bm_sum(m, $bm_mul(d, n)))));\n    }\n}\nfunction getPropWorldSpeed(t, prop) {\n    return length(getPropWorldVelocity(t, prop));\n}\nfunction getPrevKey(t) {\n    if (numKeys == 0)\n        return null;\n    var nKey = nearestKey(t);\n    if (nKey.time <= t)\n        return nKey;\n    if (nKey.index > 1)\n        return key($bm_sub(nKey.index, 1));\n    return null;\n}\nfunction getNextKey(t) {\n    if (numKeys == 0)\n        return null;\n    var nKey = nearestKey(t);\n    if (nKey.time >= t)\n        return nKey;\n    if (nKey.index < numKeys)\n        return key($bm_sum(nKey.index, 1));\n    return null;\n}\nfunction getPropWorldVelocity(t, prop) {\n    return $bm_mul($bm_sub(getPropWorldValue($bm_sum(t, 0.005), prop), getPropWorldValue($bm_sub(t, 0.005), prop)), 100);\n}\nfunction getLayerWorldPos(t, l) {\n    return l.toWorld(l.anchorPoint, t);\n}\nfunction getPropWorldValue(t, prop) {\n    if (isPosition(prop))\n        return getLayerWorldPos(t, thisLayer);\n    return thisLayer.toWorld(prop.valueAtTime(t), t);\n}\nfunction isPosition(prop) {\n    return prop === $bm_transform.position;\n}\nfunction isKeyTop(k, axis) {\n    var prevSpeed = velocityAtTime($bm_sub(k.time, threshold));\n    var nextSpeed = velocityAtTime($bm_sum(k.time, threshold));\n    if ($bm_isInstanceOfArray(value)) {\n        prevSpeed = prevSpeed[axis];\n        nextSpeed = nextSpeed[axis];\n    }\n    if (Math.abs(prevSpeed) < 0.01 || Math.abs(nextSpeed) < 0.01)\n        return true;\n    return $bm_mul(prevSpeed, nextSpeed) < 0;\n}\nfunction anticipate() {\n    var anticipation = zeroValue;\n    if (isAfterLastKey())\n        return anticipation;\n    if (numKeys < 2)\n        return anticipation;\n    var nextKey = getNextKey(time);\n    var aKey = nextKey;\n    if (!isStill(aKey.time - 0.1, 0.1)) {\n        aKey = getPrevKey(time);\n        if (!isStill(aKey.time - 0.1, 0.1))\n            return anticipation;\n    }\n    if (aKey.index == numKeys)\n        return anticipation;\n    var anticipationMiddle = aKey.time;\n    var anticipationStart = $bm_sub(anticipationMiddle, anticipationDuration);\n    var anticipationEnd = key(aKey.index + 1).time;\n    var startValue = anticipation;\n    var midValue = $bm_mul($bm_sum($bm_neg(valueAtTime($bm_sum(anticipationMiddle, anticipationDuration))), aKey.value), anticipationQuantity);\n    var endValue = anticipation;\n    if (time < anticipationStart) {\n        return anticipation;\n    } else if (time < anticipationMiddle) {\n        if ($bm_isInstanceOfArray(value)) {\n            for (var i = 0; i < value.length; i++) {\n                anticipation[i] = bezierInterpolation(time, anticipationStart, anticipationMiddle, startValue[i], midValue[i], [\n                    slowOut,\n                    0,\n                    slowIn,\n                    1\n                ]);\n            }\n            return anticipation;\n        } else {\n            return bezierInterpolation(time, anticipationStart, anticipationMiddle, startValue, midValue, [\n                slowOut,\n                0,\n                slowIn,\n                1\n            ]);\n        }\n    } else if (time <= anticipationEnd) {\n        if ($bm_isInstanceOfArray(value)) {\n            for (var i = 0; i < value.length; i++) {\n                anticipation[i] = bezierInterpolation(time, anticipationMiddle, anticipationEnd, midValue[i], endValue[i], [\n                    slowOut,\n                    0,\n                    slowIn,\n                    1\n                ]);\n            }\n            return anticipation;\n        } else {\n            return bezierInterpolation(time, anticipationMiddle, anticipationEnd, midValue, endValue, [\n                slowOut,\n                0,\n                slowIn,\n                1\n            ]);\n        }\n    } else {\n        return anticipation;\n    }\n}\nfunction followThroughAtTime(t) {\n    var fThrough = zeroValue;\n    if (elasticity == 0)\n        return fThrough;\n    var propSpeed;\n    if (!simulate) {\n        if (numKeys < 2)\n            return fThrough;\n        if (nearestKey(t).index == 1)\n            return fThrough;\n        propSpeed = length(velocityAtTime(t));\n        if (propSpeed >= threshold)\n            return fThrough;\n    } else {\n        propSpeed = getPropWorldSpeed(t, thisProperty);\n        if (propSpeed >= threshold)\n            return fThrough;\n    }\n    var fThroughStart = 0;\n    var fThroughTime = 0;\n    if (simulate) {\n        var speedI = getPropWorldSpeed(t, thisProperty);\n        var i = t;\n        while (speedI < threshold && i > 0) {\n            i = $bm_sub(i, $bm_div(thisComp.frameDuration, moBlurPrecision));\n            speedI = getPropWorldSpeed(i, thisProperty);\n        }\n        fThroughStart = i;\n    } else {\n        var fThroughKey = getPrevKey(t);\n        fThroughStart = fThroughKey.time;\n    }\n    if (fThroughStart == 0)\n        return fThrough;\n    fThroughTime = $bm_sub(t, fThroughStart);\n    if (simulate)\n        fThrough = $bm_div(getPropWorldVelocity($bm_sub(fThroughStart, thisComp.frameDuration), thisProperty), 2);\n    else\n        fThrough = $bm_div(velocityAtTime($bm_sub(fThroughStart, thisComp.frameDuration)), 2);\n    if (bounce) {\n        var cycleDamp = Math.exp($bm_mul($bm_mul(fThroughTime, damping), 0.1));\n        var damp = $bm_div(Math.exp($bm_mul(fThroughTime, damping)), $bm_div(elasticity, 2));\n        var cycleDuration = $bm_div(1, $bm_mul(elasticity, 2));\n        cycleDuration = Math.round(timeToFrames(cycleDuration));\n        cycleDuration = framesToTime(cycleDuration);\n        var midDuration = $bm_div(cycleDuration, 2);\n        var maxValue = $bm_mul(fThrough, midDuration);\n        var cycvarime = fThroughTime;\n        var numEndCycles = 1;\n        while (cycvarime > cycleDuration) {\n            cycvarime = $bm_sub(cycvarime, cycleDuration);\n            cycleDuration = $bm_div(cycleDuration, cycleDamp);\n            cycleDuration = Math.round(timeToFrames(cycleDuration));\n            if (cycleDuration < 2) {\n                cycleDuration = 2;\n                numEndCycles++;\n            }\n            cycleDuration = framesToTime(cycleDuration);\n            midDuration = $bm_div(cycleDuration, 2);\n            maxValue = $bm_div($bm_mul(fThrough, midDuration), damp);\n            if (numEndCycles > 100 / damping && maxValue < threshold)\n                return zeroValue;\n        }\n        if (cycvarime < midDuration)\n            fThrough = bezierInterpolation(cycvarime, 0, midDuration, 0, maxValue, [\n                0,\n                0.1,\n                slowIn,\n                1\n            ]);\n        else\n            fThrough = bezierInterpolation(cycvarime, midDuration, cycleDuration, maxValue, 0, [\n                $bm_sub(1, slowIn),\n                0,\n                1,\n                0.9\n            ]);\n    } else {\n        var damp = Math.exp($bm_mul(fThroughTime, damping));\n        var sinus = $bm_mul($bm_mul($bm_mul(elasticity, fThroughTime), 2), Math.PI);\n        sinus = Math.sin(sinus);\n        sinus = $bm_mul($bm_div(0.3, elasticity), sinus);\n        sinus = $bm_div(sinus, damp);\n        if (Math.abs(sinus) < $bm_div(threshold, 100))\n            return 0;\n        fThrough = $bm_mul(fThrough, sinus);\n        if (threshold > 0) {\n            fThrough = $bm_mul(fThrough, $bm_sub(1, $bm_div(propSpeed, threshold)));\n        }\n    }\n    if (bounce) {\n        var prevValue = valueAtTime($bm_sub(fThroughStart, thisComp.frameDuration));\n        var startValue = valueAtTime(fThroughStart);\n        if ($bm_isInstanceOfArray(value)) {\n            for (var i = 0; i < prevValue.length; i++) {\n                if (prevValue[i] > startValue[i])\n                    fThrough[i] = Math.abs(fThrough[i]);\n                if (prevValue[i] < startValue[i])\n                    fThrough[i] = $bm_neg(Math.abs(fThrough[i]));\n            }\n        } else {\n            if (prevValue > startValue)\n                fThrough = Math.abs(fThrough);\n            if (prevValue < startValue)\n                fThrough = $bm_neg(Math.abs(fThrough));\n        }\n    }\n    if (simulate) {\n        if (!isThisPosition) {\n            fThrough = $bm_sum(fThrough, getLayerWorldPos(time, thisLayer));\n            fThrough = $bm_sub(thisLayer.fromWorld(fThrough), thisLayer.anchorPoint);\n        } else if (thisLayer.hasParent) {\n            fThrough = $bm_sum(fThrough, getLayerWorldPos(time, thisLayer.parent));\n            fThrough = $bm_sub(thisLayer.parent.fromWorld(fThrough), thisLayer.parent.anchorPoint);\n        }\n    }\n    return fThrough;\n}\nfunction followThrough() {\n    var propSpeed = length(velocity);\n    if (propSpeed < threshold)\n        return followThroughAtTime($bm_sub(time, overlapDuration));\n    var fThrough = zeroValue;\n    var t = time;\n    while (t > 0) {\n        t = $bm_sub(t, thisComp.frameDuration);\n        if (simulate)\n            propSpeed = getPropWorldSpeed($bm_sub(t, overlapDuration), thisProperty);\n        else\n            propSpeed = length(velocityAtTime(t));\n        if (propSpeed < threshold) {\n            fThrough = followThroughAtTime($bm_sub(t, overlapDuration));\n            break;\n        }\n    }\n    return linear(time, t, $bm_sum(t, $bm_mul(anticipationDuration, 2)), fThrough, zeroValue);\n}\nfunction smartSmooth(axis) {\n    var startKey = nearestKey(time);\n    var endKey = startKey;\n    if (time == startKey.time)\n        return 0;\n    if (time < startKey.time && startKey.index == 1)\n        return 0;\n    if (time > startKey.time && startKey.index == numKeys)\n        return 0;\n    if (time < startKey.time)\n        startKey = key($bm_sub(startKey.index, 1));\n    if (time > startKey.time)\n        endKey = key($bm_sum(startKey.index, 1));\n    var sI = 0.66;\n    var sO = 0.33;\n    var sIV = 1;\n    var sOV = 0;\n    var sVal = startKey.value;\n    var eVal = endKey.value;\n    if ($bm_isInstanceOfArray(value)) {\n        sVal = sVal[axis];\n        eVal = eVal[axis];\n    }\n    var sTime = startKey.time;\n    var eTime = endKey.time;\n    if (isKeyTop(startKey, axis))\n        sO = slowOut;\n    else {\n        var prevKey = key($bm_sub(startKey.index, 1));\n        var pVal = prevKey.value;\n        if ($bm_isInstanceOfArray(value))\n            pVal = pVal[axis];\n        sOV = $bm_div($bm_sub(sVal, pVal), $bm_sub(eVal, pVal));\n    }\n    if (isKeyTop(endKey, axis)) {\n        sI = slowIn;\n        if (endKey.index != numKeys) {\n            var nextKey = key($bm_sum(endKey.index, 1));\n            var nVal = nextKey.value;\n            if ($bm_isInstanceOfArray(value))\n                nVal = nVal[axis];\n            if (Math.abs(nVal - eVal) < 0.01 && doFollowThrough)\n                sI = 1;\n        }\n    } else {\n        var nextKey = key($bm_sum(endKey.index, 1));\n        var nVal = nextKey.value;\n        if ($bm_isInstanceOfArray(value))\n            nVal = nVal[axis];\n        sIV = $bm_div($bm_sub(eVal, sVal), $bm_sub(nVal, sVal));\n    }\n    if (endKey.index == numKeys && doFollowThrough) {\n        sI = 1;\n    }\n    var val = value;\n    if ($bm_isInstanceOfArray(value))\n        val = val[axis];\n    return $bm_sub(bezierInterpolation(time, sTime, eTime, sVal, eVal, [\n        sO,\n        sOV,\n        sI,\n        sIV\n    ]), val);\n}\nfunction overlap() {\n    var ol = zeroValue;\n    if (isThisPosition && !hasParent)\n        return zeroValue;\n    ol = $bm_sub(getPropWorldValue($bm_sub(time, overlapDuration), thisProperty), getPropWorldValue(time, thisProperty));\n    var motionRatio = $bm_div($bm_div(length(zeroValue, ol), thisLayer.width), 2);\n    if (isThisPosition) {\n        var originalDistance = length(valueAtTime(0));\n        motionRatio = $bm_div(length(zeroValue, ol), thisComp.width);\n    }\n    ol = $bm_sum(ol, getPropWorldValue(time, thisProperty));\n    ol = $bm_sum(ol, $bm_mul($bm_mul($bm_sub(getPropWorldValue($bm_sub(time, overlapDuration), thisLayer.anchorPoint), ol), motionRatio), flexibility));\n    ol = thisLayer.fromWorld(ol);\n    if (!isThisPosition)\n        ol = $bm_sub(ol, value);\n    else {\n        ol = linear(flexibility, 0, 100, $bm_div(ol, 2), 0);\n        var prevParentWorldPos = getLayerWorldPos($bm_sub(time, overlapDuration), parent);\n        ol = $bm_sum(ol, $bm_mul($bm_mul($bm_mul(thisLayer.fromWorld(prevParentWorldPos), motionRatio), flexibility), 5));\n    }\n    return ol;\n}\nvar okToGo = false;\nif (simulate && fx.enabled)\n    okToGo = true;\nelse if (numKeys > 1 && fx.enabled)\n    okToGo = true;\nif (okToGo) {\n    var smartSmoothResult = zeroValue;\n    if (doInterpolation) {\n        if ($bm_isInstanceOfArray(value)) {\n            if (value.length == 2)\n                smartSmoothResult = [\n                    smartSmooth(0),\n                    smartSmooth(1)\n                ];\n            else if (value.length == 3)\n                smartSmoothResult = [\n                    smartSmooth(0),\n                    smartSmooth(1),\n                    smartSmooth(2)\n                ];\n            else if (value.length == 4)\n                smartSmoothResult = [\n                    smartSmooth(0),\n                    smartSmooth(1),\n                    smartSmooth(2),\n                    smartSmooth(3)\n                ];\n        } else {\n            smartSmoothResult = smartSmooth(0);\n        }\n    }\n    if (doAnticipation)\n        result = $bm_sum(result, anticipate());\n    result = $bm_sum(result, smartSmoothResult);\n    if (doFollowThrough)\n        result = $bm_sum(result, followThrough());\n    if (doOverlap)\n        result = $bm_sum(result, overlap());\n}\n$bm_rt = result;","a":1,"l":2},"a":{"a":0,"k":[0,113.766,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"shapes":[{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,2.913],[0,0],[2.913,0],[0,0],[0,-2.913],[0,0],[-2.913,0],[0,0]],"o":[[0,0],[0,-2.913],[0,0],[-2.913,0],[0,0],[0,2.913],[0,0],[2.913,0]],"v":[[67.345,24.43],[67.345,11.228],[62.07,5.953],[-62.07,5.953],[-67.345,11.228],[-67.345,24.43],[-62.07,29.705],[62.07,29.705]],"c":true},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[7.889,29.705],[7.889,101.402],[-7.889,101.402],[-7.889,29.705]],"c":true},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"gr","nm":"G","it":[{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,-3.035],[0,0],[0,0],[0,0],[-3.035,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,-3.035],[0,0],[3.035,0]],"v":[[18.177,106.898],[18.177,113.766],[-18.177,113.766],[-18.177,106.898],[-12.682,101.402],[12.682,101.402]],"c":true},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]}],"ip":0,"op":250,"st":0,"ef":[{"ty":5,"ix":1,"nm":"ŝ","ef":[{"ix":1,"nm":"A","ty":7,"v":{"a":0,"k":0}},{"ix":2,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":3,"nm":"F","ty":7,"v":{"a":0,"k":1}},{"ix":4,"nm":"A","ty":6,"v":0},{"ix":5,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":6,"nm":"A","ty":0,"v":{"a":0,"k":50}},{"ix":7,"nm":"","ty":6,"v":0},{"ix":8,"nm":"I","ty":6,"v":0},{"ix":9,"nm":"S","ty":0,"v":{"a":0,"k":60}},{"ix":10,"nm":"S","ty":0,"v":{"a":0,"k":25}},{"ix":11,"nm":"","ty":6,"v":0},{"ix":12,"nm":"F","ty":6,"v":0},{"ix":13,"nm":"E","ty":0,"v":{"a":0,"k":10}},{"ix":14,"nm":"E","ty":0,"v":{"a":0,"k":0}},{"ix":15,"nm":"D","ty":0,"v":{"a":0,"k":50}},{"ix":16,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":17,"nm":"B","ty":7,"v":{"a":0,"k":0}},{"ix":18,"nm":"","ty":6,"v":0},{"ix":19,"nm":"S","ty":6,"v":0},{"ix":20,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":21,"nm":"M","ty":7,"v":{"a":0,"k":1}},{"ix":22,"nm":"O","ty":6,"v":0},{"ix":23,"nm":"O","ty":7,"v":{"a":0,"k":1}},{"ix":24,"nm":"D","ty":0,"v":{"a":0,"k":0.05}},{"ix":25,"nm":"O","ty":0,"v":{"a":0,"k":0}},{"ix":26,"nm":"","ty":6,"v":0},{"ix":27,"nm":"S","ty":6,"v":0},{"ix":28,"nm":"S","ty":7,"v":{"a":0,"k":1}},{"ix":29,"nm":"S","ty":0,"v":{"a":0,"k":100}},{"ix":30,"nm":"","ty":6,"v":0},{"ix":31,"nm":"","ty":6,"v":0},{"ix":32,"nm":"P","ty":0,"v":{"a":0,"k":1}}],"en":1},{"ty":5,"ix":2,"nm":"ŝ","ef":[{"ix":1,"nm":"A","ty":7,"v":{"a":0,"k":0}},{"ix":2,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":3,"nm":"F","ty":7,"v":{"a":0,"k":1}},{"ix":4,"nm":"A","ty":6,"v":0},{"ix":5,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":6,"nm":"A","ty":0,"v":{"a":0,"k":50}},{"ix":7,"nm":"","ty":6,"v":0},{"ix":8,"nm":"I","ty":6,"v":0},{"ix":9,"nm":"S","ty":0,"v":{"a":0,"k":60}},{"ix":10,"nm":"S","ty":0,"v":{"a":0,"k":25}},{"ix":11,"nm":"","ty":6,"v":0},{"ix":12,"nm":"F","ty":6,"v":0},{"ix":13,"nm":"E","ty":0,"v":{"a":0,"k":10}},{"ix":14,"nm":"E","ty":0,"v":{"a":0,"k":0}},{"ix":15,"nm":"D","ty":0,"v":{"a":0,"k":50}},{"ix":16,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":17,"nm":"B","ty":7,"v":{"a":0,"k":0}},{"ix":18,"nm":"","ty":6,"v":0},{"ix":19,"nm":"S","ty":6,"v":0},{"ix":20,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":21,"nm":"M","ty":7,"v":{"a":0,"k":1}},{"ix":22,"nm":"O","ty":6,"v":0},{"ix":23,"nm":"O","ty":7,"v":{"a":0,"k":1}},{"ix":24,"nm":"D","ty":0,"v":{"a":0,"k":0.05}},{"ix":25,"nm":"O","ty":0,"v":{"a":0,"k":0}},{"ix":26,"nm":"","ty":6,"v":0},{"ix":27,"nm":"S","ty":6,"v":0},{"ix":28,"nm":"S","ty":7,"v":{"a":0,"k":1}},{"ix":29,"nm":"S","ty":0,"v":{"a":0,"k":100}},{"ix":30,"nm":"","ty":6,"v":0},{"ix":31,"nm":"","ty":6,"v":0},{"ix":32,"nm":"P","ty":0,"v":{"a":0,"k":1}}],"en":1},{"ty":5,"ix":3,"nm":"ŝ","ef":[{"ix":1,"nm":"A","ty":7,"v":{"a":0,"k":0}},{"ix":2,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":3,"nm":"F","ty":7,"v":{"a":0,"k":1}},{"ix":4,"nm":"A","ty":6,"v":0},{"ix":5,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":6,"nm":"A","ty":0,"v":{"a":0,"k":50}},{"ix":7,"nm":"","ty":6,"v":0},{"ix":8,"nm":"I","ty":6,"v":0},{"ix":9,"nm":"S","ty":0,"v":{"a":0,"k":60}},{"ix":10,"nm":"S","ty":0,"v":{"a":0,"k":25}},{"ix":11,"nm":"","ty":6,"v":0},{"ix":12,"nm":"F","ty":6,"v":0},{"ix":13,"nm":"E","ty":0,"v":{"a":0,"k":10}},{"ix":14,"nm":"E","ty":0,"v":{"a":0,"k":0}},{"ix":15,"nm":"D","ty":0,"v":{"a":0,"k":50}},{"ix":16,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":17,"nm":"B","ty":7,"v":{"a":0,"k":0}},{"ix":18,"nm":"","ty":6,"v":0},{"ix":19,"nm":"S","ty":6,"v":0},{"ix":20,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":21,"nm":"M","ty":7,"v":{"a":0,"k":1}},{"ix":22,"nm":"O","ty":6,"v":0},{"ix":23,"nm":"O","ty":7,"v":{"a":0,"k":1}},{"ix":24,"nm":"D","ty":0,"v":{"a":0,"k":0.05}},{"ix":25,"nm":"O","ty":0,"v":{"a":0,"k":0}},{"ix":26,"nm":"","ty":6,"v":0},{"ix":27,"nm":"S","ty":6,"v":0},{"ix":28,"nm":"S","ty":7,"v":{"a":0,"k":1}},{"ix":29,"nm":"S","ty":0,"v":{"a":0,"k":100}},{"ix":30,"nm":"","ty":6,"v":0},{"ix":31,"nm":"","ty":6,"v":0},{"ix":32,"nm":"P","ty":0,"v":{"a":0,"k":1}}],"en":1},{"ty":5,"ix":4,"nm":"ŝ","ef":[{"ix":1,"nm":"A","ty":7,"v":{"a":0,"k":0}},{"ix":2,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":3,"nm":"F","ty":7,"v":{"a":0,"k":1}},{"ix":4,"nm":"A","ty":6,"v":0},{"ix":5,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":6,"nm":"A","ty":0,"v":{"a":0,"k":50}},{"ix":7,"nm":"","ty":6,"v":0},{"ix":8,"nm":"I","ty":6,"v":0},{"ix":9,"nm":"S","ty":0,"v":{"a":0,"k":60}},{"ix":10,"nm":"S","ty":0,"v":{"a":0,"k":25}},{"ix":11,"nm":"","ty":6,"v":0},{"ix":12,"nm":"F","ty":6,"v":0},{"ix":13,"nm":"E","ty":0,"v":{"a":0,"k":10}},{"ix":14,"nm":"E","ty":0,"v":{"a":0,"k":0}},{"ix":15,"nm":"D","ty":0,"v":{"a":0,"k":50}},{"ix":16,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":17,"nm":"B","ty":7,"v":{"a":0,"k":0}},{"ix":18,"nm":"","ty":6,"v":0},{"ix":19,"nm":"S","ty":6,"v":0},{"ix":20,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":21,"nm":"M","ty":7,"v":{"a":0,"k":1}},{"ix":22,"nm":"O","ty":6,"v":0},{"ix":23,"nm":"O","ty":7,"v":{"a":0,"k":1}},{"ix":24,"nm":"D","ty":0,"v":{"a":0,"k":0.05}},{"ix":25,"nm":"O","ty":0,"v":{"a":0,"k":0}},{"ix":26,"nm":"","ty":6,"v":0},{"ix":27,"nm":"S","ty":6,"v":0},{"ix":28,"nm":"S","ty":7,"v":{"a":0,"k":1}},{"ix":29,"nm":"S","ty":0,"v":{"a":0,"k":100}},{"ix":30,"nm":"","ty":6,"v":0},{"ix":31,"nm":"","ty":6,"v":0},{"ix":32,"nm":"P","ty":0,"v":{"a":0,"k":1}}],"en":1},{"ty":5,"ix":5,"nm":"ŝ","ef":[{"ix":1,"nm":"A","ty":7,"v":{"a":0,"k":0}},{"ix":2,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":3,"nm":"F","ty":7,"v":{"a":0,"k":1}},{"ix":4,"nm":"A","ty":6,"v":0},{"ix":5,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":6,"nm":"A","ty":0,"v":{"a":0,"k":50}},{"ix":7,"nm":"","ty":6,"v":0},{"ix":8,"nm":"I","ty":6,"v":0},{"ix":9,"nm":"S","ty":0,"v":{"a":0,"k":60}},{"ix":10,"nm":"S","ty":0,"v":{"a":0,"k":25}},{"ix":11,"nm":"","ty":6,"v":0},{"ix":12,"nm":"F","ty":6,"v":0},{"ix":13,"nm":"E","ty":0,"v":{"a":0,"k":10}},{"ix":14,"nm":"E","ty":0,"v":{"a":0,"k":0}},{"ix":15,"nm":"D","ty":0,"v":{"a":0,"k":50}},{"ix":16,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":17,"nm":"B","ty":7,"v":{"a":0,"k":0}},{"ix":18,"nm":"","ty":6,"v":0},{"ix":19,"nm":"S","ty":6,"v":0},{"ix":20,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":21,"nm":"M","ty":7,"v":{"a":0,"k":1}},{"ix":22,"nm":"O","ty":6,"v":0},{"ix":23,"nm":"O","ty":7,"v":{"a":0,"k":1}},{"ix":24,"nm":"D","ty":0,"v":{"a":0,"k":0.05}},{"ix":25,"nm":"O","ty":0,"v":{"a":0,"k":0}},{"ix":26,"nm":"","ty":6,"v":0},{"ix":27,"nm":"S","ty":6,"v":0},{"ix":28,"nm":"S","ty":7,"v":{"a":0,"k":1}},{"ix":29,"nm":"S","ty":0,"v":{"a":0,"k":100}},{"ix":30,"nm":"","ty":6,"v":0},{"ix":31,"nm":"","ty":6,"v":0},{"ix":32,"nm":"P","ty":0,"v":{"a":0,"k":1}}],"en":1},{"ty":5,"ix":6,"nm":"ŝ","ef":[{"ix":1,"nm":"A","ty":7,"v":{"a":0,"k":0}},{"ix":2,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":3,"nm":"F","ty":7,"v":{"a":0,"k":1}},{"ix":4,"nm":"A","ty":6,"v":0},{"ix":5,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":6,"nm":"A","ty":0,"v":{"a":0,"k":50}},{"ix":7,"nm":"","ty":6,"v":0},{"ix":8,"nm":"I","ty":6,"v":0},{"ix":9,"nm":"S","ty":0,"v":{"a":0,"k":60}},{"ix":10,"nm":"S","ty":0,"v":{"a":0,"k":25}},{"ix":11,"nm":"","ty":6,"v":0},{"ix":12,"nm":"F","ty":6,"v":0},{"ix":13,"nm":"E","ty":0,"v":{"a":0,"k":10}},{"ix":14,"nm":"E","ty":0,"v":{"a":0,"k":0}},{"ix":15,"nm":"D","ty":0,"v":{"a":0,"k":50}},{"ix":16,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":17,"nm":"B","ty":7,"v":{"a":0,"k":0}},{"ix":18,"nm":"","ty":6,"v":0},{"ix":19,"nm":"S","ty":6,"v":0},{"ix":20,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":21,"nm":"M","ty":7,"v":{"a":0,"k":1}},{"ix":22,"nm":"O","ty":6,"v":0},{"ix":23,"nm":"O","ty":7,"v":{"a":0,"k":1}},{"ix":24,"nm":"D","ty":0,"v":{"a":0,"k":0.05}},{"ix":25,"nm":"O","ty":0,"v":{"a":0,"k":0}},{"ix":26,"nm":"","ty":6,"v":0},{"ix":27,"nm":"S","ty":6,"v":0},{"ix":28,"nm":"S","ty":7,"v":{"a":0,"k":1}},{"ix":29,"nm":"S","ty":0,"v":{"a":0,"k":100}},{"ix":30,"nm":"","ty":6,"v":0},{"ix":31,"nm":"","ty":6,"v":0},{"ix":32,"nm":"P","ty":0,"v":{"a":0,"k":1}}],"en":1}]},{"ind":10,"ty":4,"nm":"L","sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":7.414,"s":[-7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":14.829,"s":[7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":22.243,"s":[-7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":29.658,"s":[7]},{"t":37.395,"s":[0]}],"x":"var $bm_rt;\nvar fx = effect('ŝlosilo pli pura 7');\nvar doAnticipation = fx(1).value;\nvar doInterpolation = fx(2).value;\nvar doFollowThrough = fx(3).value;\nvar damping = $bm_div(fx(15).value, 10);\nvar elasticity = $bm_div(fx(13).value, 10);\nvar bounce = fx(17).value;\nvar anticipationDuration = fx(5).value;\nvar anticipationQuantity = $bm_div(fx(6).value, 100);\nvar slowIn = $bm_div(fx(9).value, 100);\nvar slowOut = $bm_div(fx(10).value, 100);\nvar spatialMode = fx(21).value;\nvar spatialDoInterpolation = fx(20).value;\nvar moBlurPrecision = fx(32).value;\nvar elasticityRandom = fx(14).value;\nvar dampingRandom = fx(16).value;\nvar softBody = fx(28).value;\nvar flexibility = $bm_div(fx(29).value, 100);\nvar doOverlap = fx(23).value;\nvar overlapDuration = fx(24).value;\nvar overlapRandom = fx(25).value;\nvar threshold = $bm_div($bm_div(1, moBlurPrecision), 1000);\nvar zeroValue;\nif ($bm_isInstanceOfArray(value)) {\n    if (value.length == 2)\n        zeroValue = [\n            0,\n            0\n        ];\n    else if (value.length == 3)\n        zeroValue = [\n            0,\n            0,\n            0\n        ];\n    else if (value.length == 4)\n        zeroValue = [\n            0,\n            0,\n            0,\n            0\n        ];\n} else\n    zeroValue = 0;\nvar isThisSpatial = isSpatial(thisProperty);\nvar isThisPosition = thisProperty === $bm_transform.position;\nvar simulate = false;\nif (isThisSpatial) {\n    doInterpolation = doInterpolation && spatialDoInterpolation;\n    if (isThisPosition && thisProperty.numKeys > 0) {\n        doOverlap = false;\n        simulate = false;\n    } else {\n        simulate = spatialMode == 2;\n        doOverlap = overlapDuration != 0 && doOverlap && simulate;\n    }\n} else {\n    doOverlap = false;\n}\nif (!doOverlap) {\n    overlapDuration = 0;\n}\nif (simulate && softBody && isThisSpatial && !isThisPosition && (doFollowThrough || doOverlap)) {\n    var distanceRatio = $bm_div(length(valueAtTime(0), $bm_transform.anchorPoint), $bm_div(thisLayer.width, 2));\n    distanceRatio = $bm_div($bm_sum(1, $bm_mul(distanceRatio, flexibility)), 2);\n    if (doFollowThrough) {\n        elasticity = $bm_div(elasticity, distanceRatio);\n        damping = $bm_div(damping, distanceRatio);\n    }\n    if (doOverlap) {\n        overlapDuration = $bm_mul(overlapDuration, distanceRatio);\n    }\n}\nseedRandom(0, true);\nif (doFollowThrough) {\n    if (elasticityRandom > 0)\n        elasticity = addNoise(elasticity, elasticityRandom);\n    if (dampingRandom > 0)\n        damping = addNoise(damping, dampingRandom);\n}\nif (doOverlap) {\n    if (doOverlap && overlapRandom > 0)\n        overlapDuration = addNoise(overlapDuration, overlapRandom);\n}\nvar result = value;\nfunction isSpatial(prop) {\n    if (!(prop.value instanceof Array))\n        return false;\n    if (prop.value.length != 2 && prop.value.length != 3)\n        return false;\n    try {\n        if (typeof prop.speed !== 'undefined')\n            return true;\n    } catch (e) {\n        return false;\n    }\n}\nfunction addNoise(val, quantity) {\n    var randomValue = random(0.9, 1.1);\n    var noiseValue = noise($bm_mul(valueAtTime(0), randomValue));\n    noiseValue = $bm_mul(noiseValue, $bm_div(quantity, 100));\n    return $bm_mul(val, $bm_sum(noiseValue, 1));\n}\nfunction isAfterLastKey() {\n    if (numKeys == 0)\n        return false;\n    var nKey = nearestKey(time);\n    return nKey.time <= time && nKey.index == numKeys;\n}\nfunction isStill(t, threshold) {\n    var d = $bm_sub(valueAtTime(t), valueAtTime($bm_sum(t, framesToTime(1))));\n    if ($bm_isInstanceOfArray(d)) {\n        for (var i = 0; i < d.length; i++) {\n            d[i] = Math.abs(d[i]);\n            if (d[i] >= threshold) {\n                return false;\n            }\n        }\n        return true;\n    } else {\n        d = Math.abs(d);\n        return d < threshold;\n    }\n}\nfunction bezierInterpolation(t, tMin, tMax, value1, value2, bezierPoints) {\n    if (arguments.length !== 5 && arguments.length !== 6)\n        return t;\n    var a = $bm_sub(value2, value1);\n    var b = $bm_sub(tMax, tMin);\n    if (b == 0)\n        return t;\n    var c = clamp($bm_div($bm_sub(t, tMin), b), 0, 1);\n    if (!(bezierPoints instanceof Array) || bezierPoints.length !== 4)\n        bezierPoints = [\n            0.33,\n            0,\n            0.66,\n            1\n        ];\n    return $bm_sum($bm_mul(a, h(c, bezierPoints)), value1);\n    function h(f, g) {\n        var x = $bm_mul(3, g[0]);\n        var j = $bm_sub($bm_mul(3, $bm_sub(g[2], g[0])), x);\n        var k = $bm_sub($bm_sub(1, x), j);\n        var l = $bm_mul(3, g[1]);\n        var m = $bm_sub($bm_mul(3, $bm_sub(g[3], g[1])), l);\n        var n = $bm_sub($bm_sub(1, l), m);\n        var d = f;\n        for (var i = 0; i < 5; i++) {\n            var z = $bm_sub($bm_mul(d, $bm_sum(x, $bm_mul(d, $bm_sum(j, $bm_mul(d, k))))), f);\n            if (Math.abs(z) < 0.001)\n                break;\n            d = $bm_sub(d, $bm_div(z, $bm_sum(x, $bm_mul(d, $bm_sum($bm_mul(2, j), $bm_mul($bm_mul(3, k), d))))));\n        }\n        return $bm_mul(d, $bm_sum(l, $bm_mul(d, $bm_sum(m, $bm_mul(d, n)))));\n    }\n}\nfunction getPropWorldSpeed(t, prop) {\n    return length(getPropWorldVelocity(t, prop));\n}\nfunction getPrevKey(t) {\n    if (numKeys == 0)\n        return null;\n    var nKey = nearestKey(t);\n    if (nKey.time <= t)\n        return nKey;\n    if (nKey.index > 1)\n        return key($bm_sub(nKey.index, 1));\n    return null;\n}\nfunction getNextKey(t) {\n    if (numKeys == 0)\n        return null;\n    var nKey = nearestKey(t);\n    if (nKey.time >= t)\n        return nKey;\n    if (nKey.index < numKeys)\n        return key($bm_sum(nKey.index, 1));\n    return null;\n}\nfunction getPropWorldVelocity(t, prop) {\n    return $bm_mul($bm_sub(getPropWorldValue($bm_sum(t, 0.005), prop), getPropWorldValue($bm_sub(t, 0.005), prop)), 100);\n}\nfunction getLayerWorldPos(t, l) {\n    return l.toWorld(l.anchorPoint, t);\n}\nfunction getPropWorldValue(t, prop) {\n    if (isPosition(prop))\n        return getLayerWorldPos(t, thisLayer);\n    return thisLayer.toWorld(prop.valueAtTime(t), t);\n}\nfunction isPosition(prop) {\n    return prop === $bm_transform.position;\n}\nfunction isKeyTop(k, axis) {\n    var prevSpeed = velocityAtTime($bm_sub(k.time, threshold));\n    var nextSpeed = velocityAtTime($bm_sum(k.time, threshold));\n    if ($bm_isInstanceOfArray(value)) {\n        prevSpeed = prevSpeed[axis];\n        nextSpeed = nextSpeed[axis];\n    }\n    if (Math.abs(prevSpeed) < 0.01 || Math.abs(nextSpeed) < 0.01)\n        return true;\n    return $bm_mul(prevSpeed, nextSpeed) < 0;\n}\nfunction anticipate() {\n    var anticipation = zeroValue;\n    if (isAfterLastKey())\n        return anticipation;\n    if (numKeys < 2)\n        return anticipation;\n    var nextKey = getNextKey(time);\n    var aKey = nextKey;\n    if (!isStill(aKey.time - 0.1, 0.1)) {\n        aKey = getPrevKey(time);\n        if (!isStill(aKey.time - 0.1, 0.1))\n            return anticipation;\n    }\n    if (aKey.index == numKeys)\n        return anticipation;\n    var anticipationMiddle = aKey.time;\n    var anticipationStart = $bm_sub(anticipationMiddle, anticipationDuration);\n    var anticipationEnd = key(aKey.index + 1).time;\n    var startValue = anticipation;\n    var midValue = $bm_mul($bm_sum($bm_neg(valueAtTime($bm_sum(anticipationMiddle, anticipationDuration))), aKey.value), anticipationQuantity);\n    var endValue = anticipation;\n    if (time < anticipationStart) {\n        return anticipation;\n    } else if (time < anticipationMiddle) {\n        if ($bm_isInstanceOfArray(value)) {\n            for (var i = 0; i < value.length; i++) {\n                anticipation[i] = bezierInterpolation(time, anticipationStart, anticipationMiddle, startValue[i], midValue[i], [\n                    slowOut,\n                    0,\n                    slowIn,\n                    1\n                ]);\n            }\n            return anticipation;\n        } else {\n            return bezierInterpolation(time, anticipationStart, anticipationMiddle, startValue, midValue, [\n                slowOut,\n                0,\n                slowIn,\n                1\n            ]);\n        }\n    } else if (time <= anticipationEnd) {\n        if ($bm_isInstanceOfArray(value)) {\n            for (var i = 0; i < value.length; i++) {\n                anticipation[i] = bezierInterpolation(time, anticipationMiddle, anticipationEnd, midValue[i], endValue[i], [\n                    slowOut,\n                    0,\n                    slowIn,\n                    1\n                ]);\n            }\n            return anticipation;\n        } else {\n            return bezierInterpolation(time, anticipationMiddle, anticipationEnd, midValue, endValue, [\n                slowOut,\n                0,\n                slowIn,\n                1\n            ]);\n        }\n    } else {\n        return anticipation;\n    }\n}\nfunction followThroughAtTime(t) {\n    var fThrough = zeroValue;\n    if (elasticity == 0)\n        return fThrough;\n    var propSpeed;\n    if (!simulate) {\n        if (numKeys < 2)\n            return fThrough;\n        if (nearestKey(t).index == 1)\n            return fThrough;\n        propSpeed = length(velocityAtTime(t));\n        if (propSpeed >= threshold)\n            return fThrough;\n    } else {\n        propSpeed = getPropWorldSpeed(t, thisProperty);\n        if (propSpeed >= threshold)\n            return fThrough;\n    }\n    var fThroughStart = 0;\n    var fThroughTime = 0;\n    if (simulate) {\n        var speedI = getPropWorldSpeed(t, thisProperty);\n        var i = t;\n        while (speedI < threshold && i > 0) {\n            i = $bm_sub(i, $bm_div(thisComp.frameDuration, moBlurPrecision));\n            speedI = getPropWorldSpeed(i, thisProperty);\n        }\n        fThroughStart = i;\n    } else {\n        var fThroughKey = getPrevKey(t);\n        fThroughStart = fThroughKey.time;\n    }\n    if (fThroughStart == 0)\n        return fThrough;\n    fThroughTime = $bm_sub(t, fThroughStart);\n    if (simulate)\n        fThrough = $bm_div(getPropWorldVelocity($bm_sub(fThroughStart, thisComp.frameDuration), thisProperty), 2);\n    else\n        fThrough = $bm_div(velocityAtTime($bm_sub(fThroughStart, thisComp.frameDuration)), 2);\n    if (bounce) {\n        var cycleDamp = Math.exp($bm_mul($bm_mul(fThroughTime, damping), 0.1));\n        var damp = $bm_div(Math.exp($bm_mul(fThroughTime, damping)), $bm_div(elasticity, 2));\n        var cycleDuration = $bm_div(1, $bm_mul(elasticity, 2));\n        cycleDuration = Math.round(timeToFrames(cycleDuration));\n        cycleDuration = framesToTime(cycleDuration);\n        var midDuration = $bm_div(cycleDuration, 2);\n        var maxValue = $bm_mul(fThrough, midDuration);\n        var cycvarime = fThroughTime;\n        var numEndCycles = 1;\n        while (cycvarime > cycleDuration) {\n            cycvarime = $bm_sub(cycvarime, cycleDuration);\n            cycleDuration = $bm_div(cycleDuration, cycleDamp);\n            cycleDuration = Math.round(timeToFrames(cycleDuration));\n            if (cycleDuration < 2) {\n                cycleDuration = 2;\n                numEndCycles++;\n            }\n            cycleDuration = framesToTime(cycleDuration);\n            midDuration = $bm_div(cycleDuration, 2);\n            maxValue = $bm_div($bm_mul(fThrough, midDuration), damp);\n            if (numEndCycles > 100 / damping && maxValue < threshold)\n                return zeroValue;\n        }\n        if (cycvarime < midDuration)\n            fThrough = bezierInterpolation(cycvarime, 0, midDuration, 0, maxValue, [\n                0,\n                0.1,\n                slowIn,\n                1\n            ]);\n        else\n            fThrough = bezierInterpolation(cycvarime, midDuration, cycleDuration, maxValue, 0, [\n                $bm_sub(1, slowIn),\n                0,\n                1,\n                0.9\n            ]);\n    } else {\n        var damp = Math.exp($bm_mul(fThroughTime, damping));\n        var sinus = $bm_mul($bm_mul($bm_mul(elasticity, fThroughTime), 2), Math.PI);\n        sinus = Math.sin(sinus);\n        sinus = $bm_mul($bm_div(0.3, elasticity), sinus);\n        sinus = $bm_div(sinus, damp);\n        if (Math.abs(sinus) < $bm_div(threshold, 100))\n            return 0;\n        fThrough = $bm_mul(fThrough, sinus);\n        if (threshold > 0) {\n            fThrough = $bm_mul(fThrough, $bm_sub(1, $bm_div(propSpeed, threshold)));\n        }\n    }\n    if (bounce) {\n        var prevValue = valueAtTime($bm_sub(fThroughStart, thisComp.frameDuration));\n        var startValue = valueAtTime(fThroughStart);\n        if ($bm_isInstanceOfArray(value)) {\n            for (var i = 0; i < prevValue.length; i++) {\n                if (prevValue[i] > startValue[i])\n                    fThrough[i] = Math.abs(fThrough[i]);\n                if (prevValue[i] < startValue[i])\n                    fThrough[i] = $bm_neg(Math.abs(fThrough[i]));\n            }\n        } else {\n            if (prevValue > startValue)\n                fThrough = Math.abs(fThrough);\n            if (prevValue < startValue)\n                fThrough = $bm_neg(Math.abs(fThrough));\n        }\n    }\n    if (simulate) {\n        if (!isThisPosition) {\n            fThrough = $bm_sum(fThrough, getLayerWorldPos(time, thisLayer));\n            fThrough = $bm_sub(thisLayer.fromWorld(fThrough), thisLayer.anchorPoint);\n        } else if (thisLayer.hasParent) {\n            fThrough = $bm_sum(fThrough, getLayerWorldPos(time, thisLayer.parent));\n            fThrough = $bm_sub(thisLayer.parent.fromWorld(fThrough), thisLayer.parent.anchorPoint);\n        }\n    }\n    return fThrough;\n}\nfunction followThrough() {\n    var propSpeed = length(velocity);\n    if (propSpeed < threshold)\n        return followThroughAtTime($bm_sub(time, overlapDuration));\n    var fThrough = zeroValue;\n    var t = time;\n    while (t > 0) {\n        t = $bm_sub(t, thisComp.frameDuration);\n        if (simulate)\n            propSpeed = getPropWorldSpeed($bm_sub(t, overlapDuration), thisProperty);\n        else\n            propSpeed = length(velocityAtTime(t));\n        if (propSpeed < threshold) {\n            fThrough = followThroughAtTime($bm_sub(t, overlapDuration));\n            break;\n        }\n    }\n    return linear(time, t, $bm_sum(t, $bm_mul(anticipationDuration, 2)), fThrough, zeroValue);\n}\nfunction smartSmooth(axis) {\n    var startKey = nearestKey(time);\n    var endKey = startKey;\n    if (time == startKey.time)\n        return 0;\n    if (time < startKey.time && startKey.index == 1)\n        return 0;\n    if (time > startKey.time && startKey.index == numKeys)\n        return 0;\n    if (time < startKey.time)\n        startKey = key($bm_sub(startKey.index, 1));\n    if (time > startKey.time)\n        endKey = key($bm_sum(startKey.index, 1));\n    var sI = 0.66;\n    var sO = 0.33;\n    var sIV = 1;\n    var sOV = 0;\n    var sVal = startKey.value;\n    var eVal = endKey.value;\n    if ($bm_isInstanceOfArray(value)) {\n        sVal = sVal[axis];\n        eVal = eVal[axis];\n    }\n    var sTime = startKey.time;\n    var eTime = endKey.time;\n    if (isKeyTop(startKey, axis))\n        sO = slowOut;\n    else {\n        var prevKey = key($bm_sub(startKey.index, 1));\n        var pVal = prevKey.value;\n        if ($bm_isInstanceOfArray(value))\n            pVal = pVal[axis];\n        sOV = $bm_div($bm_sub(sVal, pVal), $bm_sub(eVal, pVal));\n    }\n    if (isKeyTop(endKey, axis)) {\n        sI = slowIn;\n        if (endKey.index != numKeys) {\n            var nextKey = key($bm_sum(endKey.index, 1));\n            var nVal = nextKey.value;\n            if ($bm_isInstanceOfArray(value))\n                nVal = nVal[axis];\n            if (Math.abs(nVal - eVal) < 0.01 && doFollowThrough)\n                sI = 1;\n        }\n    } else {\n        var nextKey = key($bm_sum(endKey.index, 1));\n        var nVal = nextKey.value;\n        if ($bm_isInstanceOfArray(value))\n            nVal = nVal[axis];\n        sIV = $bm_div($bm_sub(eVal, sVal), $bm_sub(nVal, sVal));\n    }\n    if (endKey.index == numKeys && doFollowThrough) {\n        sI = 1;\n    }\n    var val = value;\n    if ($bm_isInstanceOfArray(value))\n        val = val[axis];\n    return $bm_sub(bezierInterpolation(time, sTime, eTime, sVal, eVal, [\n        sO,\n        sOV,\n        sI,\n        sIV\n    ]), val);\n}\nfunction overlap() {\n    var ol = zeroValue;\n    if (isThisPosition && !hasParent)\n        return zeroValue;\n    ol = $bm_sub(getPropWorldValue($bm_sub(time, overlapDuration), thisProperty), getPropWorldValue(time, thisProperty));\n    var motionRatio = $bm_div($bm_div(length(zeroValue, ol), thisLayer.width), 2);\n    if (isThisPosition) {\n        var originalDistance = length(valueAtTime(0));\n        motionRatio = $bm_div(length(zeroValue, ol), thisComp.width);\n    }\n    ol = $bm_sum(ol, getPropWorldValue(time, thisProperty));\n    ol = $bm_sum(ol, $bm_mul($bm_mul($bm_sub(getPropWorldValue($bm_sub(time, overlapDuration), thisLayer.anchorPoint), ol), motionRatio), flexibility));\n    ol = thisLayer.fromWorld(ol);\n    if (!isThisPosition)\n        ol = $bm_sub(ol, value);\n    else {\n        ol = linear(flexibility, 0, 100, $bm_div(ol, 2), 0);\n        var prevParentWorldPos = getLayerWorldPos($bm_sub(time, overlapDuration), parent);\n        ol = $bm_sum(ol, $bm_mul($bm_mul($bm_mul(thisLayer.fromWorld(prevParentWorldPos), motionRatio), flexibility), 5));\n    }\n    return ol;\n}\nvar okToGo = false;\nif (simulate && fx.enabled)\n    okToGo = true;\nelse if (numKeys > 1 && fx.enabled)\n    okToGo = true;\nif (okToGo) {\n    var smartSmoothResult = zeroValue;\n    if (doInterpolation) {\n        if ($bm_isInstanceOfArray(value)) {\n            if (value.length == 2)\n                smartSmoothResult = [\n                    smartSmooth(0),\n                    smartSmooth(1)\n                ];\n            else if (value.length == 3)\n                smartSmoothResult = [\n                    smartSmooth(0),\n                    smartSmooth(1),\n                    smartSmooth(2)\n                ];\n            else if (value.length == 4)\n                smartSmoothResult = [\n                    smartSmooth(0),\n                    smartSmooth(1),\n                    smartSmooth(2),\n                    smartSmooth(3)\n                ];\n        } else {\n            smartSmoothResult = smartSmooth(0);\n        }\n    }\n    if (doAnticipation)\n        result = $bm_sum(result, anticipate());\n    result = $bm_sum(result, smartSmoothResult);\n    if (doFollowThrough)\n        result = $bm_sum(result, followThrough());\n    if (doOverlap)\n        result = $bm_sum(result, overlap());\n}\n$bm_rt = result;"},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[177.956,363.775,0],"ti":[0,3.333,0],"to":[0,-3.333,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":7.414,"s":[177.956,343.775,0],"ti":[0,0,0],"to":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":41.263,"s":[177.956,343.775,0],"ti":[0,-3.333,0],"to":[0,3.333,0]},{"t":49,"s":[177.956,363.775,0]}],"x":"var $bm_rt;\nvar fx = effect('ŝlosilo pli pura 7');\nvar doAnticipation = fx(1).value;\nvar doInterpolation = fx(2).value;\nvar doFollowThrough = fx(3).value;\nvar damping = $bm_div(fx(15).value, 10);\nvar elasticity = $bm_div(fx(13).value, 10);\nvar bounce = fx(17).value;\nvar anticipationDuration = fx(5).value;\nvar anticipationQuantity = $bm_div(fx(6).value, 100);\nvar slowIn = $bm_div(fx(9).value, 100);\nvar slowOut = $bm_div(fx(10).value, 100);\nvar spatialMode = fx(21).value;\nvar spatialDoInterpolation = fx(20).value;\nvar moBlurPrecision = fx(32).value;\nvar elasticityRandom = fx(14).value;\nvar dampingRandom = fx(16).value;\nvar softBody = fx(28).value;\nvar flexibility = $bm_div(fx(29).value, 100);\nvar doOverlap = fx(23).value;\nvar overlapDuration = fx(24).value;\nvar overlapRandom = fx(25).value;\nvar threshold = $bm_div($bm_div(1, moBlurPrecision), 1000);\nvar zeroValue;\nif ($bm_isInstanceOfArray(value)) {\n    if (value.length == 2)\n        zeroValue = [\n            0,\n            0\n        ];\n    else if (value.length == 3)\n        zeroValue = [\n            0,\n            0,\n            0\n        ];\n    else if (value.length == 4)\n        zeroValue = [\n            0,\n            0,\n            0,\n            0\n        ];\n} else\n    zeroValue = 0;\nvar isThisSpatial = isSpatial(thisProperty);\nvar isThisPosition = thisProperty === $bm_transform.position;\nvar simulate = false;\nif (isThisSpatial) {\n    doInterpolation = doInterpolation && spatialDoInterpolation;\n    if (isThisPosition && thisProperty.numKeys > 0) {\n        doOverlap = false;\n        simulate = false;\n    } else {\n        simulate = spatialMode == 2;\n        doOverlap = overlapDuration != 0 && doOverlap && simulate;\n    }\n} else {\n    doOverlap = false;\n}\nif (!doOverlap) {\n    overlapDuration = 0;\n}\nif (simulate && softBody && isThisSpatial && !isThisPosition && (doFollowThrough || doOverlap)) {\n    var distanceRatio = $bm_div(length(valueAtTime(0), $bm_transform.anchorPoint), $bm_div(thisLayer.width, 2));\n    distanceRatio = $bm_div($bm_sum(1, $bm_mul(distanceRatio, flexibility)), 2);\n    if (doFollowThrough) {\n        elasticity = $bm_div(elasticity, distanceRatio);\n        damping = $bm_div(damping, distanceRatio);\n    }\n    if (doOverlap) {\n        overlapDuration = $bm_mul(overlapDuration, distanceRatio);\n    }\n}\nseedRandom(0, true);\nif (doFollowThrough) {\n    if (elasticityRandom > 0)\n        elasticity = addNoise(elasticity, elasticityRandom);\n    if (dampingRandom > 0)\n        damping = addNoise(damping, dampingRandom);\n}\nif (doOverlap) {\n    if (doOverlap && overlapRandom > 0)\n        overlapDuration = addNoise(overlapDuration, overlapRandom);\n}\nvar result = value;\nfunction isSpatial(prop) {\n    if (!(prop.value instanceof Array))\n        return false;\n    if (prop.value.length != 2 && prop.value.length != 3)\n        return false;\n    try {\n        if (typeof prop.speed !== 'undefined')\n            return true;\n    } catch (e) {\n        return false;\n    }\n}\nfunction addNoise(val, quantity) {\n    var randomValue = random(0.9, 1.1);\n    var noiseValue = noise($bm_mul(valueAtTime(0), randomValue));\n    noiseValue = $bm_mul(noiseValue, $bm_div(quantity, 100));\n    return $bm_mul(val, $bm_sum(noiseValue, 1));\n}\nfunction isAfterLastKey() {\n    if (numKeys == 0)\n        return false;\n    var nKey = nearestKey(time);\n    return nKey.time <= time && nKey.index == numKeys;\n}\nfunction isStill(t, threshold) {\n    var d = $bm_sub(valueAtTime(t), valueAtTime($bm_sum(t, framesToTime(1))));\n    if ($bm_isInstanceOfArray(d)) {\n        for (var i = 0; i < d.length; i++) {\n            d[i] = Math.abs(d[i]);\n            if (d[i] >= threshold) {\n                return false;\n            }\n        }\n        return true;\n    } else {\n        d = Math.abs(d);\n        return d < threshold;\n    }\n}\nfunction bezierInterpolation(t, tMin, tMax, value1, value2, bezierPoints) {\n    if (arguments.length !== 5 && arguments.length !== 6)\n        return t;\n    var a = $bm_sub(value2, value1);\n    var b = $bm_sub(tMax, tMin);\n    if (b == 0)\n        return t;\n    var c = clamp($bm_div($bm_sub(t, tMin), b), 0, 1);\n    if (!(bezierPoints instanceof Array) || bezierPoints.length !== 4)\n        bezierPoints = [\n            0.33,\n            0,\n            0.66,\n            1\n        ];\n    return $bm_sum($bm_mul(a, h(c, bezierPoints)), value1);\n    function h(f, g) {\n        var x = $bm_mul(3, g[0]);\n        var j = $bm_sub($bm_mul(3, $bm_sub(g[2], g[0])), x);\n        var k = $bm_sub($bm_sub(1, x), j);\n        var l = $bm_mul(3, g[1]);\n        var m = $bm_sub($bm_mul(3, $bm_sub(g[3], g[1])), l);\n        var n = $bm_sub($bm_sub(1, l), m);\n        var d = f;\n        for (var i = 0; i < 5; i++) {\n            var z = $bm_sub($bm_mul(d, $bm_sum(x, $bm_mul(d, $bm_sum(j, $bm_mul(d, k))))), f);\n            if (Math.abs(z) < 0.001)\n                break;\n            d = $bm_sub(d, $bm_div(z, $bm_sum(x, $bm_mul(d, $bm_sum($bm_mul(2, j), $bm_mul($bm_mul(3, k), d))))));\n        }\n        return $bm_mul(d, $bm_sum(l, $bm_mul(d, $bm_sum(m, $bm_mul(d, n)))));\n    }\n}\nfunction getPropWorldSpeed(t, prop) {\n    return length(getPropWorldVelocity(t, prop));\n}\nfunction getPrevKey(t) {\n    if (numKeys == 0)\n        return null;\n    var nKey = nearestKey(t);\n    if (nKey.time <= t)\n        return nKey;\n    if (nKey.index > 1)\n        return key($bm_sub(nKey.index, 1));\n    return null;\n}\nfunction getNextKey(t) {\n    if (numKeys == 0)\n        return null;\n    var nKey = nearestKey(t);\n    if (nKey.time >= t)\n        return nKey;\n    if (nKey.index < numKeys)\n        return key($bm_sum(nKey.index, 1));\n    return null;\n}\nfunction getPropWorldVelocity(t, prop) {\n    return $bm_mul($bm_sub(getPropWorldValue($bm_sum(t, 0.005), prop), getPropWorldValue($bm_sub(t, 0.005), prop)), 100);\n}\nfunction getLayerWorldPos(t, l) {\n    return l.toWorld(l.anchorPoint, t);\n}\nfunction getPropWorldValue(t, prop) {\n    if (isPosition(prop))\n        return getLayerWorldPos(t, thisLayer);\n    return thisLayer.toWorld(prop.valueAtTime(t), t);\n}\nfunction isPosition(prop) {\n    return prop === $bm_transform.position;\n}\nfunction isKeyTop(k, axis) {\n    var prevSpeed = velocityAtTime($bm_sub(k.time, threshold));\n    var nextSpeed = velocityAtTime($bm_sum(k.time, threshold));\n    if ($bm_isInstanceOfArray(value)) {\n        prevSpeed = prevSpeed[axis];\n        nextSpeed = nextSpeed[axis];\n    }\n    if (Math.abs(prevSpeed) < 0.01 || Math.abs(nextSpeed) < 0.01)\n        return true;\n    return $bm_mul(prevSpeed, nextSpeed) < 0;\n}\nfunction anticipate() {\n    var anticipation = zeroValue;\n    if (isAfterLastKey())\n        return anticipation;\n    if (numKeys < 2)\n        return anticipation;\n    var nextKey = getNextKey(time);\n    var aKey = nextKey;\n    if (!isStill(aKey.time - 0.1, 0.1)) {\n        aKey = getPrevKey(time);\n        if (!isStill(aKey.time - 0.1, 0.1))\n            return anticipation;\n    }\n    if (aKey.index == numKeys)\n        return anticipation;\n    var anticipationMiddle = aKey.time;\n    var anticipationStart = $bm_sub(anticipationMiddle, anticipationDuration);\n    var anticipationEnd = key(aKey.index + 1).time;\n    var startValue = anticipation;\n    var midValue = $bm_mul($bm_sum($bm_neg(valueAtTime($bm_sum(anticipationMiddle, anticipationDuration))), aKey.value), anticipationQuantity);\n    var endValue = anticipation;\n    if (time < anticipationStart) {\n        return anticipation;\n    } else if (time < anticipationMiddle) {\n        if ($bm_isInstanceOfArray(value)) {\n            for (var i = 0; i < value.length; i++) {\n                anticipation[i] = bezierInterpolation(time, anticipationStart, anticipationMiddle, startValue[i], midValue[i], [\n                    slowOut,\n                    0,\n                    slowIn,\n                    1\n                ]);\n            }\n            return anticipation;\n        } else {\n            return bezierInterpolation(time, anticipationStart, anticipationMiddle, startValue, midValue, [\n                slowOut,\n                0,\n                slowIn,\n                1\n            ]);\n        }\n    } else if (time <= anticipationEnd) {\n        if ($bm_isInstanceOfArray(value)) {\n            for (var i = 0; i < value.length; i++) {\n                anticipation[i] = bezierInterpolation(time, anticipationMiddle, anticipationEnd, midValue[i], endValue[i], [\n                    slowOut,\n                    0,\n                    slowIn,\n                    1\n                ]);\n            }\n            return anticipation;\n        } else {\n            return bezierInterpolation(time, anticipationMiddle, anticipationEnd, midValue, endValue, [\n                slowOut,\n                0,\n                slowIn,\n                1\n            ]);\n        }\n    } else {\n        return anticipation;\n    }\n}\nfunction followThroughAtTime(t) {\n    var fThrough = zeroValue;\n    if (elasticity == 0)\n        return fThrough;\n    var propSpeed;\n    if (!simulate) {\n        if (numKeys < 2)\n            return fThrough;\n        if (nearestKey(t).index == 1)\n            return fThrough;\n        propSpeed = length(velocityAtTime(t));\n        if (propSpeed >= threshold)\n            return fThrough;\n    } else {\n        propSpeed = getPropWorldSpeed(t, thisProperty);\n        if (propSpeed >= threshold)\n            return fThrough;\n    }\n    var fThroughStart = 0;\n    var fThroughTime = 0;\n    if (simulate) {\n        var speedI = getPropWorldSpeed(t, thisProperty);\n        var i = t;\n        while (speedI < threshold && i > 0) {\n            i = $bm_sub(i, $bm_div(thisComp.frameDuration, moBlurPrecision));\n            speedI = getPropWorldSpeed(i, thisProperty);\n        }\n        fThroughStart = i;\n    } else {\n        var fThroughKey = getPrevKey(t);\n        fThroughStart = fThroughKey.time;\n    }\n    if (fThroughStart == 0)\n        return fThrough;\n    fThroughTime = $bm_sub(t, fThroughStart);\n    if (simulate)\n        fThrough = $bm_div(getPropWorldVelocity($bm_sub(fThroughStart, thisComp.frameDuration), thisProperty), 2);\n    else\n        fThrough = $bm_div(velocityAtTime($bm_sub(fThroughStart, thisComp.frameDuration)), 2);\n    if (bounce) {\n        var cycleDamp = Math.exp($bm_mul($bm_mul(fThroughTime, damping), 0.1));\n        var damp = $bm_div(Math.exp($bm_mul(fThroughTime, damping)), $bm_div(elasticity, 2));\n        var cycleDuration = $bm_div(1, $bm_mul(elasticity, 2));\n        cycleDuration = Math.round(timeToFrames(cycleDuration));\n        cycleDuration = framesToTime(cycleDuration);\n        var midDuration = $bm_div(cycleDuration, 2);\n        var maxValue = $bm_mul(fThrough, midDuration);\n        var cycvarime = fThroughTime;\n        var numEndCycles = 1;\n        while (cycvarime > cycleDuration) {\n            cycvarime = $bm_sub(cycvarime, cycleDuration);\n            cycleDuration = $bm_div(cycleDuration, cycleDamp);\n            cycleDuration = Math.round(timeToFrames(cycleDuration));\n            if (cycleDuration < 2) {\n                cycleDuration = 2;\n                numEndCycles++;\n            }\n            cycleDuration = framesToTime(cycleDuration);\n            midDuration = $bm_div(cycleDuration, 2);\n            maxValue = $bm_div($bm_mul(fThrough, midDuration), damp);\n            if (numEndCycles > 100 / damping && maxValue < threshold)\n                return zeroValue;\n        }\n        if (cycvarime < midDuration)\n            fThrough = bezierInterpolation(cycvarime, 0, midDuration, 0, maxValue, [\n                0,\n                0.1,\n                slowIn,\n                1\n            ]);\n        else\n            fThrough = bezierInterpolation(cycvarime, midDuration, cycleDuration, maxValue, 0, [\n                $bm_sub(1, slowIn),\n                0,\n                1,\n                0.9\n            ]);\n    } else {\n        var damp = Math.exp($bm_mul(fThroughTime, damping));\n        var sinus = $bm_mul($bm_mul($bm_mul(elasticity, fThroughTime), 2), Math.PI);\n        sinus = Math.sin(sinus);\n        sinus = $bm_mul($bm_div(0.3, elasticity), sinus);\n        sinus = $bm_div(sinus, damp);\n        if (Math.abs(sinus) < $bm_div(threshold, 100))\n            return 0;\n        fThrough = $bm_mul(fThrough, sinus);\n        if (threshold > 0) {\n            fThrough = $bm_mul(fThrough, $bm_sub(1, $bm_div(propSpeed, threshold)));\n        }\n    }\n    if (bounce) {\n        var prevValue = valueAtTime($bm_sub(fThroughStart, thisComp.frameDuration));\n        var startValue = valueAtTime(fThroughStart);\n        if ($bm_isInstanceOfArray(value)) {\n            for (var i = 0; i < prevValue.length; i++) {\n                if (prevValue[i] > startValue[i])\n                    fThrough[i] = Math.abs(fThrough[i]);\n                if (prevValue[i] < startValue[i])\n                    fThrough[i] = $bm_neg(Math.abs(fThrough[i]));\n            }\n        } else {\n            if (prevValue > startValue)\n                fThrough = Math.abs(fThrough);\n            if (prevValue < startValue)\n                fThrough = $bm_neg(Math.abs(fThrough));\n        }\n    }\n    if (simulate) {\n        if (!isThisPosition) {\n            fThrough = $bm_sum(fThrough, getLayerWorldPos(time, thisLayer));\n            fThrough = $bm_sub(thisLayer.fromWorld(fThrough), thisLayer.anchorPoint);\n        } else if (thisLayer.hasParent) {\n            fThrough = $bm_sum(fThrough, getLayerWorldPos(time, thisLayer.parent));\n            fThrough = $bm_sub(thisLayer.parent.fromWorld(fThrough), thisLayer.parent.anchorPoint);\n        }\n    }\n    return fThrough;\n}\nfunction followThrough() {\n    var propSpeed = length(velocity);\n    if (propSpeed < threshold)\n        return followThroughAtTime($bm_sub(time, overlapDuration));\n    var fThrough = zeroValue;\n    var t = time;\n    while (t > 0) {\n        t = $bm_sub(t, thisComp.frameDuration);\n        if (simulate)\n            propSpeed = getPropWorldSpeed($bm_sub(t, overlapDuration), thisProperty);\n        else\n            propSpeed = length(velocityAtTime(t));\n        if (propSpeed < threshold) {\n            fThrough = followThroughAtTime($bm_sub(t, overlapDuration));\n            break;\n        }\n    }\n    return linear(time, t, $bm_sum(t, $bm_mul(anticipationDuration, 2)), fThrough, zeroValue);\n}\nfunction smartSmooth(axis) {\n    var startKey = nearestKey(time);\n    var endKey = startKey;\n    if (time == startKey.time)\n        return 0;\n    if (time < startKey.time && startKey.index == 1)\n        return 0;\n    if (time > startKey.time && startKey.index == numKeys)\n        return 0;\n    if (time < startKey.time)\n        startKey = key($bm_sub(startKey.index, 1));\n    if (time > startKey.time)\n        endKey = key($bm_sum(startKey.index, 1));\n    var sI = 0.66;\n    var sO = 0.33;\n    var sIV = 1;\n    var sOV = 0;\n    var sVal = startKey.value;\n    var eVal = endKey.value;\n    if ($bm_isInstanceOfArray(value)) {\n        sVal = sVal[axis];\n        eVal = eVal[axis];\n    }\n    var sTime = startKey.time;\n    var eTime = endKey.time;\n    if (isKeyTop(startKey, axis))\n        sO = slowOut;\n    else {\n        var prevKey = key($bm_sub(startKey.index, 1));\n        var pVal = prevKey.value;\n        if ($bm_isInstanceOfArray(value))\n            pVal = pVal[axis];\n        sOV = $bm_div($bm_sub(sVal, pVal), $bm_sub(eVal, pVal));\n    }\n    if (isKeyTop(endKey, axis)) {\n        sI = slowIn;\n        if (endKey.index != numKeys) {\n            var nextKey = key($bm_sum(endKey.index, 1));\n            var nVal = nextKey.value;\n            if ($bm_isInstanceOfArray(value))\n                nVal = nVal[axis];\n            if (Math.abs(nVal - eVal) < 0.01 && doFollowThrough)\n                sI = 1;\n        }\n    } else {\n        var nextKey = key($bm_sum(endKey.index, 1));\n        var nVal = nextKey.value;\n        if ($bm_isInstanceOfArray(value))\n            nVal = nVal[axis];\n        sIV = $bm_div($bm_sub(eVal, sVal), $bm_sub(nVal, sVal));\n    }\n    if (endKey.index == numKeys && doFollowThrough) {\n        sI = 1;\n    }\n    var val = value;\n    if ($bm_isInstanceOfArray(value))\n        val = val[axis];\n    return $bm_sub(bezierInterpolation(time, sTime, eTime, sVal, eVal, [\n        sO,\n        sOV,\n        sI,\n        sIV\n    ]), val);\n}\nfunction overlap() {\n    var ol = zeroValue;\n    if (isThisPosition && !hasParent)\n        return zeroValue;\n    ol = $bm_sub(getPropWorldValue($bm_sub(time, overlapDuration), thisProperty), getPropWorldValue(time, thisProperty));\n    var motionRatio = $bm_div($bm_div(length(zeroValue, ol), thisLayer.width), 2);\n    if (isThisPosition) {\n        var originalDistance = length(valueAtTime(0));\n        motionRatio = $bm_div(length(zeroValue, ol), thisComp.width);\n    }\n    ol = $bm_sum(ol, getPropWorldValue(time, thisProperty));\n    ol = $bm_sum(ol, $bm_mul($bm_mul($bm_sub(getPropWorldValue($bm_sub(time, overlapDuration), thisLayer.anchorPoint), ol), motionRatio), flexibility));\n    ol = thisLayer.fromWorld(ol);\n    if (!isThisPosition)\n        ol = $bm_sub(ol, value);\n    else {\n        ol = linear(flexibility, 0, 100, $bm_div(ol, 2), 0);\n        var prevParentWorldPos = getLayerWorldPos($bm_sub(time, overlapDuration), parent);\n        ol = $bm_sum(ol, $bm_mul($bm_mul($bm_mul(thisLayer.fromWorld(prevParentWorldPos), motionRatio), flexibility), 5));\n    }\n    return ol;\n}\nvar okToGo = false;\nif (simulate && fx.enabled)\n    okToGo = true;\nelse if (numKeys > 1 && fx.enabled)\n    okToGo = true;\nif (okToGo) {\n    var smartSmoothResult = zeroValue;\n    if (doInterpolation) {\n        if ($bm_isInstanceOfArray(value)) {\n            if (value.length == 2)\n                smartSmoothResult = [\n                    smartSmooth(0),\n                    smartSmooth(1)\n                ];\n            else if (value.length == 3)\n                smartSmoothResult = [\n                    smartSmooth(0),\n                    smartSmooth(1),\n                    smartSmooth(2)\n                ];\n            else if (value.length == 4)\n                smartSmoothResult = [\n                    smartSmooth(0),\n                    smartSmooth(1),\n                    smartSmooth(2),\n                    smartSmooth(3)\n                ];\n        } else {\n            smartSmoothResult = smartSmooth(0);\n        }\n    }\n    if (doAnticipation)\n        result = $bm_sum(result, anticipate());\n    result = $bm_sum(result, smartSmoothResult);\n    if (doFollowThrough)\n        result = $bm_sum(result, followThrough());\n    if (doOverlap)\n        result = $bm_sum(result, overlap());\n}\n$bm_rt = result;","a":1,"l":2},"a":{"a":0,"k":[-72.044,113.775,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"shapes":[{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[0,0],[3.414,-1.124],[0.691,0],[0.908,2.723],[0,0]],"o":[[0,0],[1.124,3.371],[-0.648,0.216],[-2.723,0],[0,0],[0,0]],"v":[[-47.069,61.613],[-32.592,105.262],[-36.741,113.43],[-38.772,113.775],[-44.909,109.324],[-60.683,61.613]],"c":true},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[0,0],[-3.371,-1.124],[-0.648,0],[-0.908,2.723],[0,0]],"o":[[0,0],[-1.124,3.371],[0.691,0.216],[2.723,0],[0,0],[0,0]],"v":[[-94.956,61.613],[-109.391,105.262],[-105.285,113.43],[-103.254,113.775],[-97.074,109.324],[-81,61.613]],"c":true},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[3.579,0],[0,0],[1.211,1.756],[-0.76,1.992],[8.909,7.977],[-2.389,2.667],[-2.68,-2.397],[8.939,-29.678],[0,0],[0,-3.579]],"o":[[0,0],[-2.131,0],[-1.211,-1.756],[11.589,-30.387],[-2.667,-2.389],[2.38,-2.659],[14.134,12.657],[0,0],[3.579,0],[0,3.579]],"v":[[-38.765,61.62],[-105.341,61.62],[-110.679,58.813],[-111.397,52.829],[-109.667,-21.311],[-110.169,-30.465],[-101.015,-30.967],[-96.296,48.655],[-38.765,48.655],[-32.282,55.137]],"c":true},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]}],"ip":0,"op":250,"st":0,"ef":[{"ty":5,"ix":1,"nm":"ŝ","ef":[{"ix":1,"nm":"A","ty":7,"v":{"a":0,"k":0}},{"ix":2,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":3,"nm":"F","ty":7,"v":{"a":0,"k":1}},{"ix":4,"nm":"A","ty":6,"v":0},{"ix":5,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":6,"nm":"A","ty":0,"v":{"a":0,"k":50}},{"ix":7,"nm":"","ty":6,"v":0},{"ix":8,"nm":"I","ty":6,"v":0},{"ix":9,"nm":"S","ty":0,"v":{"a":0,"k":60}},{"ix":10,"nm":"S","ty":0,"v":{"a":0,"k":25}},{"ix":11,"nm":"","ty":6,"v":0},{"ix":12,"nm":"F","ty":6,"v":0},{"ix":13,"nm":"E","ty":0,"v":{"a":0,"k":10}},{"ix":14,"nm":"E","ty":0,"v":{"a":0,"k":0}},{"ix":15,"nm":"D","ty":0,"v":{"a":0,"k":50}},{"ix":16,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":17,"nm":"B","ty":7,"v":{"a":0,"k":0}},{"ix":18,"nm":"","ty":6,"v":0},{"ix":19,"nm":"S","ty":6,"v":0},{"ix":20,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":21,"nm":"M","ty":7,"v":{"a":0,"k":1}},{"ix":22,"nm":"O","ty":6,"v":0},{"ix":23,"nm":"O","ty":7,"v":{"a":0,"k":1}},{"ix":24,"nm":"D","ty":0,"v":{"a":0,"k":0.05}},{"ix":25,"nm":"O","ty":0,"v":{"a":0,"k":0}},{"ix":26,"nm":"","ty":6,"v":0},{"ix":27,"nm":"S","ty":6,"v":0},{"ix":28,"nm":"S","ty":7,"v":{"a":0,"k":1}},{"ix":29,"nm":"S","ty":0,"v":{"a":0,"k":100}},{"ix":30,"nm":"","ty":6,"v":0},{"ix":31,"nm":"","ty":6,"v":0},{"ix":32,"nm":"P","ty":0,"v":{"a":0,"k":1}}],"en":1},{"ty":5,"ix":2,"nm":"ŝ","ef":[{"ix":1,"nm":"A","ty":7,"v":{"a":0,"k":0}},{"ix":2,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":3,"nm":"F","ty":7,"v":{"a":0,"k":1}},{"ix":4,"nm":"A","ty":6,"v":0},{"ix":5,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":6,"nm":"A","ty":0,"v":{"a":0,"k":50}},{"ix":7,"nm":"","ty":6,"v":0},{"ix":8,"nm":"I","ty":6,"v":0},{"ix":9,"nm":"S","ty":0,"v":{"a":0,"k":60}},{"ix":10,"nm":"S","ty":0,"v":{"a":0,"k":25}},{"ix":11,"nm":"","ty":6,"v":0},{"ix":12,"nm":"F","ty":6,"v":0},{"ix":13,"nm":"E","ty":0,"v":{"a":0,"k":10}},{"ix":14,"nm":"E","ty":0,"v":{"a":0,"k":0}},{"ix":15,"nm":"D","ty":0,"v":{"a":0,"k":50}},{"ix":16,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":17,"nm":"B","ty":7,"v":{"a":0,"k":0}},{"ix":18,"nm":"","ty":6,"v":0},{"ix":19,"nm":"S","ty":6,"v":0},{"ix":20,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":21,"nm":"M","ty":7,"v":{"a":0,"k":1}},{"ix":22,"nm":"O","ty":6,"v":0},{"ix":23,"nm":"O","ty":7,"v":{"a":0,"k":1}},{"ix":24,"nm":"D","ty":0,"v":{"a":0,"k":0.05}},{"ix":25,"nm":"O","ty":0,"v":{"a":0,"k":0}},{"ix":26,"nm":"","ty":6,"v":0},{"ix":27,"nm":"S","ty":6,"v":0},{"ix":28,"nm":"S","ty":7,"v":{"a":0,"k":1}},{"ix":29,"nm":"S","ty":0,"v":{"a":0,"k":100}},{"ix":30,"nm":"","ty":6,"v":0},{"ix":31,"nm":"","ty":6,"v":0},{"ix":32,"nm":"P","ty":0,"v":{"a":0,"k":1}}],"en":1},{"ty":5,"ix":3,"nm":"ŝ","ef":[{"ix":1,"nm":"A","ty":7,"v":{"a":0,"k":0}},{"ix":2,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":3,"nm":"F","ty":7,"v":{"a":0,"k":1}},{"ix":4,"nm":"A","ty":6,"v":0},{"ix":5,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":6,"nm":"A","ty":0,"v":{"a":0,"k":50}},{"ix":7,"nm":"","ty":6,"v":0},{"ix":8,"nm":"I","ty":6,"v":0},{"ix":9,"nm":"S","ty":0,"v":{"a":0,"k":60}},{"ix":10,"nm":"S","ty":0,"v":{"a":0,"k":25}},{"ix":11,"nm":"","ty":6,"v":0},{"ix":12,"nm":"F","ty":6,"v":0},{"ix":13,"nm":"E","ty":0,"v":{"a":0,"k":10}},{"ix":14,"nm":"E","ty":0,"v":{"a":0,"k":0}},{"ix":15,"nm":"D","ty":0,"v":{"a":0,"k":50}},{"ix":16,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":17,"nm":"B","ty":7,"v":{"a":0,"k":0}},{"ix":18,"nm":"","ty":6,"v":0},{"ix":19,"nm":"S","ty":6,"v":0},{"ix":20,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":21,"nm":"M","ty":7,"v":{"a":0,"k":1}},{"ix":22,"nm":"O","ty":6,"v":0},{"ix":23,"nm":"O","ty":7,"v":{"a":0,"k":1}},{"ix":24,"nm":"D","ty":0,"v":{"a":0,"k":0.05}},{"ix":25,"nm":"O","ty":0,"v":{"a":0,"k":0}},{"ix":26,"nm":"","ty":6,"v":0},{"ix":27,"nm":"S","ty":6,"v":0},{"ix":28,"nm":"S","ty":7,"v":{"a":0,"k":1}},{"ix":29,"nm":"S","ty":0,"v":{"a":0,"k":100}},{"ix":30,"nm":"","ty":6,"v":0},{"ix":31,"nm":"","ty":6,"v":0},{"ix":32,"nm":"P","ty":0,"v":{"a":0,"k":1}}],"en":1},{"ty":5,"ix":4,"nm":"ŝ","ef":[{"ix":1,"nm":"A","ty":7,"v":{"a":0,"k":0}},{"ix":2,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":3,"nm":"F","ty":7,"v":{"a":0,"k":1}},{"ix":4,"nm":"A","ty":6,"v":0},{"ix":5,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":6,"nm":"A","ty":0,"v":{"a":0,"k":50}},{"ix":7,"nm":"","ty":6,"v":0},{"ix":8,"nm":"I","ty":6,"v":0},{"ix":9,"nm":"S","ty":0,"v":{"a":0,"k":60}},{"ix":10,"nm":"S","ty":0,"v":{"a":0,"k":25}},{"ix":11,"nm":"","ty":6,"v":0},{"ix":12,"nm":"F","ty":6,"v":0},{"ix":13,"nm":"E","ty":0,"v":{"a":0,"k":10}},{"ix":14,"nm":"E","ty":0,"v":{"a":0,"k":0}},{"ix":15,"nm":"D","ty":0,"v":{"a":0,"k":50}},{"ix":16,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":17,"nm":"B","ty":7,"v":{"a":0,"k":0}},{"ix":18,"nm":"","ty":6,"v":0},{"ix":19,"nm":"S","ty":6,"v":0},{"ix":20,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":21,"nm":"M","ty":7,"v":{"a":0,"k":1}},{"ix":22,"nm":"O","ty":6,"v":0},{"ix":23,"nm":"O","ty":7,"v":{"a":0,"k":1}},{"ix":24,"nm":"D","ty":0,"v":{"a":0,"k":0.05}},{"ix":25,"nm":"O","ty":0,"v":{"a":0,"k":0}},{"ix":26,"nm":"","ty":6,"v":0},{"ix":27,"nm":"S","ty":6,"v":0},{"ix":28,"nm":"S","ty":7,"v":{"a":0,"k":1}},{"ix":29,"nm":"S","ty":0,"v":{"a":0,"k":100}},{"ix":30,"nm":"","ty":6,"v":0},{"ix":31,"nm":"","ty":6,"v":0},{"ix":32,"nm":"P","ty":0,"v":{"a":0,"k":1}}],"en":1},{"ty":5,"ix":5,"nm":"ŝ","ef":[{"ix":1,"nm":"A","ty":7,"v":{"a":0,"k":0}},{"ix":2,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":3,"nm":"F","ty":7,"v":{"a":0,"k":1}},{"ix":4,"nm":"A","ty":6,"v":0},{"ix":5,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":6,"nm":"A","ty":0,"v":{"a":0,"k":50}},{"ix":7,"nm":"","ty":6,"v":0},{"ix":8,"nm":"I","ty":6,"v":0},{"ix":9,"nm":"S","ty":0,"v":{"a":0,"k":60}},{"ix":10,"nm":"S","ty":0,"v":{"a":0,"k":25}},{"ix":11,"nm":"","ty":6,"v":0},{"ix":12,"nm":"F","ty":6,"v":0},{"ix":13,"nm":"E","ty":0,"v":{"a":0,"k":10}},{"ix":14,"nm":"E","ty":0,"v":{"a":0,"k":0}},{"ix":15,"nm":"D","ty":0,"v":{"a":0,"k":50}},{"ix":16,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":17,"nm":"B","ty":7,"v":{"a":0,"k":0}},{"ix":18,"nm":"","ty":6,"v":0},{"ix":19,"nm":"S","ty":6,"v":0},{"ix":20,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":21,"nm":"M","ty":7,"v":{"a":0,"k":1}},{"ix":22,"nm":"O","ty":6,"v":0},{"ix":23,"nm":"O","ty":7,"v":{"a":0,"k":1}},{"ix":24,"nm":"D","ty":0,"v":{"a":0,"k":0.05}},{"ix":25,"nm":"O","ty":0,"v":{"a":0,"k":0}},{"ix":26,"nm":"","ty":6,"v":0},{"ix":27,"nm":"S","ty":6,"v":0},{"ix":28,"nm":"S","ty":7,"v":{"a":0,"k":1}},{"ix":29,"nm":"S","ty":0,"v":{"a":0,"k":100}},{"ix":30,"nm":"","ty":6,"v":0},{"ix":31,"nm":"","ty":6,"v":0},{"ix":32,"nm":"P","ty":0,"v":{"a":0,"k":1}}],"en":1},{"ty":5,"ix":6,"nm":"ŝ","ef":[{"ix":1,"nm":"A","ty":7,"v":{"a":0,"k":0}},{"ix":2,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":3,"nm":"F","ty":7,"v":{"a":0,"k":1}},{"ix":4,"nm":"A","ty":6,"v":0},{"ix":5,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":6,"nm":"A","ty":0,"v":{"a":0,"k":50}},{"ix":7,"nm":"","ty":6,"v":0},{"ix":8,"nm":"I","ty":6,"v":0},{"ix":9,"nm":"S","ty":0,"v":{"a":0,"k":60}},{"ix":10,"nm":"S","ty":0,"v":{"a":0,"k":25}},{"ix":11,"nm":"","ty":6,"v":0},{"ix":12,"nm":"F","ty":6,"v":0},{"ix":13,"nm":"E","ty":0,"v":{"a":0,"k":10}},{"ix":14,"nm":"E","ty":0,"v":{"a":0,"k":0}},{"ix":15,"nm":"D","ty":0,"v":{"a":0,"k":50}},{"ix":16,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":17,"nm":"B","ty":7,"v":{"a":0,"k":0}},{"ix":18,"nm":"","ty":6,"v":0},{"ix":19,"nm":"S","ty":6,"v":0},{"ix":20,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":21,"nm":"M","ty":7,"v":{"a":0,"k":1}},{"ix":22,"nm":"O","ty":6,"v":0},{"ix":23,"nm":"O","ty":7,"v":{"a":0,"k":1}},{"ix":24,"nm":"D","ty":0,"v":{"a":0,"k":0.05}},{"ix":25,"nm":"O","ty":0,"v":{"a":0,"k":0}},{"ix":26,"nm":"","ty":6,"v":0},{"ix":27,"nm":"S","ty":6,"v":0},{"ix":28,"nm":"S","ty":7,"v":{"a":0,"k":1}},{"ix":29,"nm":"S","ty":0,"v":{"a":0,"k":100}},{"ix":30,"nm":"","ty":6,"v":0},{"ix":31,"nm":"","ty":6,"v":0},{"ix":32,"nm":"P","ty":0,"v":{"a":0,"k":1}}],"en":1},{"ty":5,"ix":7,"nm":"ŝ","ef":[{"ix":1,"nm":"A","ty":7,"v":{"a":0,"k":0}},{"ix":2,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":3,"nm":"F","ty":7,"v":{"a":0,"k":1}},{"ix":4,"nm":"A","ty":6,"v":0},{"ix":5,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":6,"nm":"A","ty":0,"v":{"a":0,"k":50}},{"ix":7,"nm":"","ty":6,"v":0},{"ix":8,"nm":"I","ty":6,"v":0},{"ix":9,"nm":"S","ty":0,"v":{"a":0,"k":60}},{"ix":10,"nm":"S","ty":0,"v":{"a":0,"k":25}},{"ix":11,"nm":"","ty":6,"v":0},{"ix":12,"nm":"F","ty":6,"v":0},{"ix":13,"nm":"E","ty":0,"v":{"a":0,"k":10}},{"ix":14,"nm":"E","ty":0,"v":{"a":0,"k":0}},{"ix":15,"nm":"D","ty":0,"v":{"a":0,"k":50}},{"ix":16,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":17,"nm":"B","ty":7,"v":{"a":0,"k":0}},{"ix":18,"nm":"","ty":6,"v":0},{"ix":19,"nm":"S","ty":6,"v":0},{"ix":20,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":21,"nm":"M","ty":7,"v":{"a":0,"k":1}},{"ix":22,"nm":"O","ty":6,"v":0},{"ix":23,"nm":"O","ty":7,"v":{"a":0,"k":1}},{"ix":24,"nm":"D","ty":0,"v":{"a":0,"k":0.05}},{"ix":25,"nm":"O","ty":0,"v":{"a":0,"k":0}},{"ix":26,"nm":"","ty":6,"v":0},{"ix":27,"nm":"S","ty":6,"v":0},{"ix":28,"nm":"S","ty":7,"v":{"a":0,"k":1}},{"ix":29,"nm":"S","ty":0,"v":{"a":0,"k":100}},{"ix":30,"nm":"","ty":6,"v":0},{"ix":31,"nm":"","ty":6,"v":0},{"ix":32,"nm":"P","ty":0,"v":{"a":0,"k":1}}],"en":1}]},{"ind":11,"ty":4,"nm":"L","sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":7.414,"s":[7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":14.829,"s":[-7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":22.243,"s":[7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":29.658,"s":[-7]},{"t":37.395,"s":[0]}],"x":"var $bm_rt;\nvar fx = effect('ŝlosilo pli pura 7');\nvar doAnticipation = fx(1).value;\nvar doInterpolation = fx(2).value;\nvar doFollowThrough = fx(3).value;\nvar damping = $bm_div(fx(15).value, 10);\nvar elasticity = $bm_div(fx(13).value, 10);\nvar bounce = fx(17).value;\nvar anticipationDuration = fx(5).value;\nvar anticipationQuantity = $bm_div(fx(6).value, 100);\nvar slowIn = $bm_div(fx(9).value, 100);\nvar slowOut = $bm_div(fx(10).value, 100);\nvar spatialMode = fx(21).value;\nvar spatialDoInterpolation = fx(20).value;\nvar moBlurPrecision = fx(32).value;\nvar elasticityRandom = fx(14).value;\nvar dampingRandom = fx(16).value;\nvar softBody = fx(28).value;\nvar flexibility = $bm_div(fx(29).value, 100);\nvar doOverlap = fx(23).value;\nvar overlapDuration = fx(24).value;\nvar overlapRandom = fx(25).value;\nvar threshold = $bm_div($bm_div(1, moBlurPrecision), 1000);\nvar zeroValue;\nif ($bm_isInstanceOfArray(value)) {\n    if (value.length == 2)\n        zeroValue = [\n            0,\n            0\n        ];\n    else if (value.length == 3)\n        zeroValue = [\n            0,\n            0,\n            0\n        ];\n    else if (value.length == 4)\n        zeroValue = [\n            0,\n            0,\n            0,\n            0\n        ];\n} else\n    zeroValue = 0;\nvar isThisSpatial = isSpatial(thisProperty);\nvar isThisPosition = thisProperty === $bm_transform.position;\nvar simulate = false;\nif (isThisSpatial) {\n    doInterpolation = doInterpolation && spatialDoInterpolation;\n    if (isThisPosition && thisProperty.numKeys > 0) {\n        doOverlap = false;\n        simulate = false;\n    } else {\n        simulate = spatialMode == 2;\n        doOverlap = overlapDuration != 0 && doOverlap && simulate;\n    }\n} else {\n    doOverlap = false;\n}\nif (!doOverlap) {\n    overlapDuration = 0;\n}\nif (simulate && softBody && isThisSpatial && !isThisPosition && (doFollowThrough || doOverlap)) {\n    var distanceRatio = $bm_div(length(valueAtTime(0), $bm_transform.anchorPoint), $bm_div(thisLayer.width, 2));\n    distanceRatio = $bm_div($bm_sum(1, $bm_mul(distanceRatio, flexibility)), 2);\n    if (doFollowThrough) {\n        elasticity = $bm_div(elasticity, distanceRatio);\n        damping = $bm_div(damping, distanceRatio);\n    }\n    if (doOverlap) {\n        overlapDuration = $bm_mul(overlapDuration, distanceRatio);\n    }\n}\nseedRandom(0, true);\nif (doFollowThrough) {\n    if (elasticityRandom > 0)\n        elasticity = addNoise(elasticity, elasticityRandom);\n    if (dampingRandom > 0)\n        damping = addNoise(damping, dampingRandom);\n}\nif (doOverlap) {\n    if (doOverlap && overlapRandom > 0)\n        overlapDuration = addNoise(overlapDuration, overlapRandom);\n}\nvar result = value;\nfunction isSpatial(prop) {\n    if (!(prop.value instanceof Array))\n        return false;\n    if (prop.value.length != 2 && prop.value.length != 3)\n        return false;\n    try {\n        if (typeof prop.speed !== 'undefined')\n            return true;\n    } catch (e) {\n        return false;\n    }\n}\nfunction addNoise(val, quantity) {\n    var randomValue = random(0.9, 1.1);\n    var noiseValue = noise($bm_mul(valueAtTime(0), randomValue));\n    noiseValue = $bm_mul(noiseValue, $bm_div(quantity, 100));\n    return $bm_mul(val, $bm_sum(noiseValue, 1));\n}\nfunction isAfterLastKey() {\n    if (numKeys == 0)\n        return false;\n    var nKey = nearestKey(time);\n    return nKey.time <= time && nKey.index == numKeys;\n}\nfunction isStill(t, threshold) {\n    var d = $bm_sub(valueAtTime(t), valueAtTime($bm_sum(t, framesToTime(1))));\n    if ($bm_isInstanceOfArray(d)) {\n        for (var i = 0; i < d.length; i++) {\n            d[i] = Math.abs(d[i]);\n            if (d[i] >= threshold) {\n                return false;\n            }\n        }\n        return true;\n    } else {\n        d = Math.abs(d);\n        return d < threshold;\n    }\n}\nfunction bezierInterpolation(t, tMin, tMax, value1, value2, bezierPoints) {\n    if (arguments.length !== 5 && arguments.length !== 6)\n        return t;\n    var a = $bm_sub(value2, value1);\n    var b = $bm_sub(tMax, tMin);\n    if (b == 0)\n        return t;\n    var c = clamp($bm_div($bm_sub(t, tMin), b), 0, 1);\n    if (!(bezierPoints instanceof Array) || bezierPoints.length !== 4)\n        bezierPoints = [\n            0.33,\n            0,\n            0.66,\n            1\n        ];\n    return $bm_sum($bm_mul(a, h(c, bezierPoints)), value1);\n    function h(f, g) {\n        var x = $bm_mul(3, g[0]);\n        var j = $bm_sub($bm_mul(3, $bm_sub(g[2], g[0])), x);\n        var k = $bm_sub($bm_sub(1, x), j);\n        var l = $bm_mul(3, g[1]);\n        var m = $bm_sub($bm_mul(3, $bm_sub(g[3], g[1])), l);\n        var n = $bm_sub($bm_sub(1, l), m);\n        var d = f;\n        for (var i = 0; i < 5; i++) {\n            var z = $bm_sub($bm_mul(d, $bm_sum(x, $bm_mul(d, $bm_sum(j, $bm_mul(d, k))))), f);\n            if (Math.abs(z) < 0.001)\n                break;\n            d = $bm_sub(d, $bm_div(z, $bm_sum(x, $bm_mul(d, $bm_sum($bm_mul(2, j), $bm_mul($bm_mul(3, k), d))))));\n        }\n        return $bm_mul(d, $bm_sum(l, $bm_mul(d, $bm_sum(m, $bm_mul(d, n)))));\n    }\n}\nfunction getPropWorldSpeed(t, prop) {\n    return length(getPropWorldVelocity(t, prop));\n}\nfunction getPrevKey(t) {\n    if (numKeys == 0)\n        return null;\n    var nKey = nearestKey(t);\n    if (nKey.time <= t)\n        return nKey;\n    if (nKey.index > 1)\n        return key($bm_sub(nKey.index, 1));\n    return null;\n}\nfunction getNextKey(t) {\n    if (numKeys == 0)\n        return null;\n    var nKey = nearestKey(t);\n    if (nKey.time >= t)\n        return nKey;\n    if (nKey.index < numKeys)\n        return key($bm_sum(nKey.index, 1));\n    return null;\n}\nfunction getPropWorldVelocity(t, prop) {\n    return $bm_mul($bm_sub(getPropWorldValue($bm_sum(t, 0.005), prop), getPropWorldValue($bm_sub(t, 0.005), prop)), 100);\n}\nfunction getLayerWorldPos(t, l) {\n    return l.toWorld(l.anchorPoint, t);\n}\nfunction getPropWorldValue(t, prop) {\n    if (isPosition(prop))\n        return getLayerWorldPos(t, thisLayer);\n    return thisLayer.toWorld(prop.valueAtTime(t), t);\n}\nfunction isPosition(prop) {\n    return prop === $bm_transform.position;\n}\nfunction isKeyTop(k, axis) {\n    var prevSpeed = velocityAtTime($bm_sub(k.time, threshold));\n    var nextSpeed = velocityAtTime($bm_sum(k.time, threshold));\n    if ($bm_isInstanceOfArray(value)) {\n        prevSpeed = prevSpeed[axis];\n        nextSpeed = nextSpeed[axis];\n    }\n    if (Math.abs(prevSpeed) < 0.01 || Math.abs(nextSpeed) < 0.01)\n        return true;\n    return $bm_mul(prevSpeed, nextSpeed) < 0;\n}\nfunction anticipate() {\n    var anticipation = zeroValue;\n    if (isAfterLastKey())\n        return anticipation;\n    if (numKeys < 2)\n        return anticipation;\n    var nextKey = getNextKey(time);\n    var aKey = nextKey;\n    if (!isStill(aKey.time - 0.1, 0.1)) {\n        aKey = getPrevKey(time);\n        if (!isStill(aKey.time - 0.1, 0.1))\n            return anticipation;\n    }\n    if (aKey.index == numKeys)\n        return anticipation;\n    var anticipationMiddle = aKey.time;\n    var anticipationStart = $bm_sub(anticipationMiddle, anticipationDuration);\n    var anticipationEnd = key(aKey.index + 1).time;\n    var startValue = anticipation;\n    var midValue = $bm_mul($bm_sum($bm_neg(valueAtTime($bm_sum(anticipationMiddle, anticipationDuration))), aKey.value), anticipationQuantity);\n    var endValue = anticipation;\n    if (time < anticipationStart) {\n        return anticipation;\n    } else if (time < anticipationMiddle) {\n        if ($bm_isInstanceOfArray(value)) {\n            for (var i = 0; i < value.length; i++) {\n                anticipation[i] = bezierInterpolation(time, anticipationStart, anticipationMiddle, startValue[i], midValue[i], [\n                    slowOut,\n                    0,\n                    slowIn,\n                    1\n                ]);\n            }\n            return anticipation;\n        } else {\n            return bezierInterpolation(time, anticipationStart, anticipationMiddle, startValue, midValue, [\n                slowOut,\n                0,\n                slowIn,\n                1\n            ]);\n        }\n    } else if (time <= anticipationEnd) {\n        if ($bm_isInstanceOfArray(value)) {\n            for (var i = 0; i < value.length; i++) {\n                anticipation[i] = bezierInterpolation(time, anticipationMiddle, anticipationEnd, midValue[i], endValue[i], [\n                    slowOut,\n                    0,\n                    slowIn,\n                    1\n                ]);\n            }\n            return anticipation;\n        } else {\n            return bezierInterpolation(time, anticipationMiddle, anticipationEnd, midValue, endValue, [\n                slowOut,\n                0,\n                slowIn,\n                1\n            ]);\n        }\n    } else {\n        return anticipation;\n    }\n}\nfunction followThroughAtTime(t) {\n    var fThrough = zeroValue;\n    if (elasticity == 0)\n        return fThrough;\n    var propSpeed;\n    if (!simulate) {\n        if (numKeys < 2)\n            return fThrough;\n        if (nearestKey(t).index == 1)\n            return fThrough;\n        propSpeed = length(velocityAtTime(t));\n        if (propSpeed >= threshold)\n            return fThrough;\n    } else {\n        propSpeed = getPropWorldSpeed(t, thisProperty);\n        if (propSpeed >= threshold)\n            return fThrough;\n    }\n    var fThroughStart = 0;\n    var fThroughTime = 0;\n    if (simulate) {\n        var speedI = getPropWorldSpeed(t, thisProperty);\n        var i = t;\n        while (speedI < threshold && i > 0) {\n            i = $bm_sub(i, $bm_div(thisComp.frameDuration, moBlurPrecision));\n            speedI = getPropWorldSpeed(i, thisProperty);\n        }\n        fThroughStart = i;\n    } else {\n        var fThroughKey = getPrevKey(t);\n        fThroughStart = fThroughKey.time;\n    }\n    if (fThroughStart == 0)\n        return fThrough;\n    fThroughTime = $bm_sub(t, fThroughStart);\n    if (simulate)\n        fThrough = $bm_div(getPropWorldVelocity($bm_sub(fThroughStart, thisComp.frameDuration), thisProperty), 2);\n    else\n        fThrough = $bm_div(velocityAtTime($bm_sub(fThroughStart, thisComp.frameDuration)), 2);\n    if (bounce) {\n        var cycleDamp = Math.exp($bm_mul($bm_mul(fThroughTime, damping), 0.1));\n        var damp = $bm_div(Math.exp($bm_mul(fThroughTime, damping)), $bm_div(elasticity, 2));\n        var cycleDuration = $bm_div(1, $bm_mul(elasticity, 2));\n        cycleDuration = Math.round(timeToFrames(cycleDuration));\n        cycleDuration = framesToTime(cycleDuration);\n        var midDuration = $bm_div(cycleDuration, 2);\n        var maxValue = $bm_mul(fThrough, midDuration);\n        var cycvarime = fThroughTime;\n        var numEndCycles = 1;\n        while (cycvarime > cycleDuration) {\n            cycvarime = $bm_sub(cycvarime, cycleDuration);\n            cycleDuration = $bm_div(cycleDuration, cycleDamp);\n            cycleDuration = Math.round(timeToFrames(cycleDuration));\n            if (cycleDuration < 2) {\n                cycleDuration = 2;\n                numEndCycles++;\n            }\n            cycleDuration = framesToTime(cycleDuration);\n            midDuration = $bm_div(cycleDuration, 2);\n            maxValue = $bm_div($bm_mul(fThrough, midDuration), damp);\n            if (numEndCycles > 100 / damping && maxValue < threshold)\n                return zeroValue;\n        }\n        if (cycvarime < midDuration)\n            fThrough = bezierInterpolation(cycvarime, 0, midDuration, 0, maxValue, [\n                0,\n                0.1,\n                slowIn,\n                1\n            ]);\n        else\n            fThrough = bezierInterpolation(cycvarime, midDuration, cycleDuration, maxValue, 0, [\n                $bm_sub(1, slowIn),\n                0,\n                1,\n                0.9\n            ]);\n    } else {\n        var damp = Math.exp($bm_mul(fThroughTime, damping));\n        var sinus = $bm_mul($bm_mul($bm_mul(elasticity, fThroughTime), 2), Math.PI);\n        sinus = Math.sin(sinus);\n        sinus = $bm_mul($bm_div(0.3, elasticity), sinus);\n        sinus = $bm_div(sinus, damp);\n        if (Math.abs(sinus) < $bm_div(threshold, 100))\n            return 0;\n        fThrough = $bm_mul(fThrough, sinus);\n        if (threshold > 0) {\n            fThrough = $bm_mul(fThrough, $bm_sub(1, $bm_div(propSpeed, threshold)));\n        }\n    }\n    if (bounce) {\n        var prevValue = valueAtTime($bm_sub(fThroughStart, thisComp.frameDuration));\n        var startValue = valueAtTime(fThroughStart);\n        if ($bm_isInstanceOfArray(value)) {\n            for (var i = 0; i < prevValue.length; i++) {\n                if (prevValue[i] > startValue[i])\n                    fThrough[i] = Math.abs(fThrough[i]);\n                if (prevValue[i] < startValue[i])\n                    fThrough[i] = $bm_neg(Math.abs(fThrough[i]));\n            }\n        } else {\n            if (prevValue > startValue)\n                fThrough = Math.abs(fThrough);\n            if (prevValue < startValue)\n                fThrough = $bm_neg(Math.abs(fThrough));\n        }\n    }\n    if (simulate) {\n        if (!isThisPosition) {\n            fThrough = $bm_sum(fThrough, getLayerWorldPos(time, thisLayer));\n            fThrough = $bm_sub(thisLayer.fromWorld(fThrough), thisLayer.anchorPoint);\n        } else if (thisLayer.hasParent) {\n            fThrough = $bm_sum(fThrough, getLayerWorldPos(time, thisLayer.parent));\n            fThrough = $bm_sub(thisLayer.parent.fromWorld(fThrough), thisLayer.parent.anchorPoint);\n        }\n    }\n    return fThrough;\n}\nfunction followThrough() {\n    var propSpeed = length(velocity);\n    if (propSpeed < threshold)\n        return followThroughAtTime($bm_sub(time, overlapDuration));\n    var fThrough = zeroValue;\n    var t = time;\n    while (t > 0) {\n        t = $bm_sub(t, thisComp.frameDuration);\n        if (simulate)\n            propSpeed = getPropWorldSpeed($bm_sub(t, overlapDuration), thisProperty);\n        else\n            propSpeed = length(velocityAtTime(t));\n        if (propSpeed < threshold) {\n            fThrough = followThroughAtTime($bm_sub(t, overlapDuration));\n            break;\n        }\n    }\n    return linear(time, t, $bm_sum(t, $bm_mul(anticipationDuration, 2)), fThrough, zeroValue);\n}\nfunction smartSmooth(axis) {\n    var startKey = nearestKey(time);\n    var endKey = startKey;\n    if (time == startKey.time)\n        return 0;\n    if (time < startKey.time && startKey.index == 1)\n        return 0;\n    if (time > startKey.time && startKey.index == numKeys)\n        return 0;\n    if (time < startKey.time)\n        startKey = key($bm_sub(startKey.index, 1));\n    if (time > startKey.time)\n        endKey = key($bm_sum(startKey.index, 1));\n    var sI = 0.66;\n    var sO = 0.33;\n    var sIV = 1;\n    var sOV = 0;\n    var sVal = startKey.value;\n    var eVal = endKey.value;\n    if ($bm_isInstanceOfArray(value)) {\n        sVal = sVal[axis];\n        eVal = eVal[axis];\n    }\n    var sTime = startKey.time;\n    var eTime = endKey.time;\n    if (isKeyTop(startKey, axis))\n        sO = slowOut;\n    else {\n        var prevKey = key($bm_sub(startKey.index, 1));\n        var pVal = prevKey.value;\n        if ($bm_isInstanceOfArray(value))\n            pVal = pVal[axis];\n        sOV = $bm_div($bm_sub(sVal, pVal), $bm_sub(eVal, pVal));\n    }\n    if (isKeyTop(endKey, axis)) {\n        sI = slowIn;\n        if (endKey.index != numKeys) {\n            var nextKey = key($bm_sum(endKey.index, 1));\n            var nVal = nextKey.value;\n            if ($bm_isInstanceOfArray(value))\n                nVal = nVal[axis];\n            if (Math.abs(nVal - eVal) < 0.01 && doFollowThrough)\n                sI = 1;\n        }\n    } else {\n        var nextKey = key($bm_sum(endKey.index, 1));\n        var nVal = nextKey.value;\n        if ($bm_isInstanceOfArray(value))\n            nVal = nVal[axis];\n        sIV = $bm_div($bm_sub(eVal, sVal), $bm_sub(nVal, sVal));\n    }\n    if (endKey.index == numKeys && doFollowThrough) {\n        sI = 1;\n    }\n    var val = value;\n    if ($bm_isInstanceOfArray(value))\n        val = val[axis];\n    return $bm_sub(bezierInterpolation(time, sTime, eTime, sVal, eVal, [\n        sO,\n        sOV,\n        sI,\n        sIV\n    ]), val);\n}\nfunction overlap() {\n    var ol = zeroValue;\n    if (isThisPosition && !hasParent)\n        return zeroValue;\n    ol = $bm_sub(getPropWorldValue($bm_sub(time, overlapDuration), thisProperty), getPropWorldValue(time, thisProperty));\n    var motionRatio = $bm_div($bm_div(length(zeroValue, ol), thisLayer.width), 2);\n    if (isThisPosition) {\n        var originalDistance = length(valueAtTime(0));\n        motionRatio = $bm_div(length(zeroValue, ol), thisComp.width);\n    }\n    ol = $bm_sum(ol, getPropWorldValue(time, thisProperty));\n    ol = $bm_sum(ol, $bm_mul($bm_mul($bm_sub(getPropWorldValue($bm_sub(time, overlapDuration), thisLayer.anchorPoint), ol), motionRatio), flexibility));\n    ol = thisLayer.fromWorld(ol);\n    if (!isThisPosition)\n        ol = $bm_sub(ol, value);\n    else {\n        ol = linear(flexibility, 0, 100, $bm_div(ol, 2), 0);\n        var prevParentWorldPos = getLayerWorldPos($bm_sub(time, overlapDuration), parent);\n        ol = $bm_sum(ol, $bm_mul($bm_mul($bm_mul(thisLayer.fromWorld(prevParentWorldPos), motionRatio), flexibility), 5));\n    }\n    return ol;\n}\nvar okToGo = false;\nif (simulate && fx.enabled)\n    okToGo = true;\nelse if (numKeys > 1 && fx.enabled)\n    okToGo = true;\nif (okToGo) {\n    var smartSmoothResult = zeroValue;\n    if (doInterpolation) {\n        if ($bm_isInstanceOfArray(value)) {\n            if (value.length == 2)\n                smartSmoothResult = [\n                    smartSmooth(0),\n                    smartSmooth(1)\n                ];\n            else if (value.length == 3)\n                smartSmoothResult = [\n                    smartSmooth(0),\n                    smartSmooth(1),\n                    smartSmooth(2)\n                ];\n            else if (value.length == 4)\n                smartSmoothResult = [\n                    smartSmooth(0),\n                    smartSmooth(1),\n                    smartSmooth(2),\n                    smartSmooth(3)\n                ];\n        } else {\n            smartSmoothResult = smartSmooth(0);\n        }\n    }\n    if (doAnticipation)\n        result = $bm_sum(result, anticipate());\n    result = $bm_sum(result, smartSmoothResult);\n    if (doFollowThrough)\n        result = $bm_sum(result, followThrough());\n    if (doOverlap)\n        result = $bm_sum(result, overlap());\n}\n$bm_rt = result;"},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[322.044,363.775,0],"ti":[0,3.333,0],"to":[0,-3.333,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":7.414,"s":[322.044,343.775,0],"ti":[0,0,0],"to":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":41.263,"s":[322.044,343.775,0],"ti":[0,-3.333,0],"to":[0,3.333,0]},{"t":49,"s":[322.044,363.775,0]}],"x":"var $bm_rt;\nvar fx = effect('ŝlosilo pli pura 7');\nvar doAnticipation = fx(1).value;\nvar doInterpolation = fx(2).value;\nvar doFollowThrough = fx(3).value;\nvar damping = $bm_div(fx(15).value, 10);\nvar elasticity = $bm_div(fx(13).value, 10);\nvar bounce = fx(17).value;\nvar anticipationDuration = fx(5).value;\nvar anticipationQuantity = $bm_div(fx(6).value, 100);\nvar slowIn = $bm_div(fx(9).value, 100);\nvar slowOut = $bm_div(fx(10).value, 100);\nvar spatialMode = fx(21).value;\nvar spatialDoInterpolation = fx(20).value;\nvar moBlurPrecision = fx(32).value;\nvar elasticityRandom = fx(14).value;\nvar dampingRandom = fx(16).value;\nvar softBody = fx(28).value;\nvar flexibility = $bm_div(fx(29).value, 100);\nvar doOverlap = fx(23).value;\nvar overlapDuration = fx(24).value;\nvar overlapRandom = fx(25).value;\nvar threshold = $bm_div($bm_div(1, moBlurPrecision), 1000);\nvar zeroValue;\nif ($bm_isInstanceOfArray(value)) {\n    if (value.length == 2)\n        zeroValue = [\n            0,\n            0\n        ];\n    else if (value.length == 3)\n        zeroValue = [\n            0,\n            0,\n            0\n        ];\n    else if (value.length == 4)\n        zeroValue = [\n            0,\n            0,\n            0,\n            0\n        ];\n} else\n    zeroValue = 0;\nvar isThisSpatial = isSpatial(thisProperty);\nvar isThisPosition = thisProperty === $bm_transform.position;\nvar simulate = false;\nif (isThisSpatial) {\n    doInterpolation = doInterpolation && spatialDoInterpolation;\n    if (isThisPosition && thisProperty.numKeys > 0) {\n        doOverlap = false;\n        simulate = false;\n    } else {\n        simulate = spatialMode == 2;\n        doOverlap = overlapDuration != 0 && doOverlap && simulate;\n    }\n} else {\n    doOverlap = false;\n}\nif (!doOverlap) {\n    overlapDuration = 0;\n}\nif (simulate && softBody && isThisSpatial && !isThisPosition && (doFollowThrough || doOverlap)) {\n    var distanceRatio = $bm_div(length(valueAtTime(0), $bm_transform.anchorPoint), $bm_div(thisLayer.width, 2));\n    distanceRatio = $bm_div($bm_sum(1, $bm_mul(distanceRatio, flexibility)), 2);\n    if (doFollowThrough) {\n        elasticity = $bm_div(elasticity, distanceRatio);\n        damping = $bm_div(damping, distanceRatio);\n    }\n    if (doOverlap) {\n        overlapDuration = $bm_mul(overlapDuration, distanceRatio);\n    }\n}\nseedRandom(0, true);\nif (doFollowThrough) {\n    if (elasticityRandom > 0)\n        elasticity = addNoise(elasticity, elasticityRandom);\n    if (dampingRandom > 0)\n        damping = addNoise(damping, dampingRandom);\n}\nif (doOverlap) {\n    if (doOverlap && overlapRandom > 0)\n        overlapDuration = addNoise(overlapDuration, overlapRandom);\n}\nvar result = value;\nfunction isSpatial(prop) {\n    if (!(prop.value instanceof Array))\n        return false;\n    if (prop.value.length != 2 && prop.value.length != 3)\n        return false;\n    try {\n        if (typeof prop.speed !== 'undefined')\n            return true;\n    } catch (e) {\n        return false;\n    }\n}\nfunction addNoise(val, quantity) {\n    var randomValue = random(0.9, 1.1);\n    var noiseValue = noise($bm_mul(valueAtTime(0), randomValue));\n    noiseValue = $bm_mul(noiseValue, $bm_div(quantity, 100));\n    return $bm_mul(val, $bm_sum(noiseValue, 1));\n}\nfunction isAfterLastKey() {\n    if (numKeys == 0)\n        return false;\n    var nKey = nearestKey(time);\n    return nKey.time <= time && nKey.index == numKeys;\n}\nfunction isStill(t, threshold) {\n    var d = $bm_sub(valueAtTime(t), valueAtTime($bm_sum(t, framesToTime(1))));\n    if ($bm_isInstanceOfArray(d)) {\n        for (var i = 0; i < d.length; i++) {\n            d[i] = Math.abs(d[i]);\n            if (d[i] >= threshold) {\n                return false;\n            }\n        }\n        return true;\n    } else {\n        d = Math.abs(d);\n        return d < threshold;\n    }\n}\nfunction bezierInterpolation(t, tMin, tMax, value1, value2, bezierPoints) {\n    if (arguments.length !== 5 && arguments.length !== 6)\n        return t;\n    var a = $bm_sub(value2, value1);\n    var b = $bm_sub(tMax, tMin);\n    if (b == 0)\n        return t;\n    var c = clamp($bm_div($bm_sub(t, tMin), b), 0, 1);\n    if (!(bezierPoints instanceof Array) || bezierPoints.length !== 4)\n        bezierPoints = [\n            0.33,\n            0,\n            0.66,\n            1\n        ];\n    return $bm_sum($bm_mul(a, h(c, bezierPoints)), value1);\n    function h(f, g) {\n        var x = $bm_mul(3, g[0]);\n        var j = $bm_sub($bm_mul(3, $bm_sub(g[2], g[0])), x);\n        var k = $bm_sub($bm_sub(1, x), j);\n        var l = $bm_mul(3, g[1]);\n        var m = $bm_sub($bm_mul(3, $bm_sub(g[3], g[1])), l);\n        var n = $bm_sub($bm_sub(1, l), m);\n        var d = f;\n        for (var i = 0; i < 5; i++) {\n            var z = $bm_sub($bm_mul(d, $bm_sum(x, $bm_mul(d, $bm_sum(j, $bm_mul(d, k))))), f);\n            if (Math.abs(z) < 0.001)\n                break;\n            d = $bm_sub(d, $bm_div(z, $bm_sum(x, $bm_mul(d, $bm_sum($bm_mul(2, j), $bm_mul($bm_mul(3, k), d))))));\n        }\n        return $bm_mul(d, $bm_sum(l, $bm_mul(d, $bm_sum(m, $bm_mul(d, n)))));\n    }\n}\nfunction getPropWorldSpeed(t, prop) {\n    return length(getPropWorldVelocity(t, prop));\n}\nfunction getPrevKey(t) {\n    if (numKeys == 0)\n        return null;\n    var nKey = nearestKey(t);\n    if (nKey.time <= t)\n        return nKey;\n    if (nKey.index > 1)\n        return key($bm_sub(nKey.index, 1));\n    return null;\n}\nfunction getNextKey(t) {\n    if (numKeys == 0)\n        return null;\n    var nKey = nearestKey(t);\n    if (nKey.time >= t)\n        return nKey;\n    if (nKey.index < numKeys)\n        return key($bm_sum(nKey.index, 1));\n    return null;\n}\nfunction getPropWorldVelocity(t, prop) {\n    return $bm_mul($bm_sub(getPropWorldValue($bm_sum(t, 0.005), prop), getPropWorldValue($bm_sub(t, 0.005), prop)), 100);\n}\nfunction getLayerWorldPos(t, l) {\n    return l.toWorld(l.anchorPoint, t);\n}\nfunction getPropWorldValue(t, prop) {\n    if (isPosition(prop))\n        return getLayerWorldPos(t, thisLayer);\n    return thisLayer.toWorld(prop.valueAtTime(t), t);\n}\nfunction isPosition(prop) {\n    return prop === $bm_transform.position;\n}\nfunction isKeyTop(k, axis) {\n    var prevSpeed = velocityAtTime($bm_sub(k.time, threshold));\n    var nextSpeed = velocityAtTime($bm_sum(k.time, threshold));\n    if ($bm_isInstanceOfArray(value)) {\n        prevSpeed = prevSpeed[axis];\n        nextSpeed = nextSpeed[axis];\n    }\n    if (Math.abs(prevSpeed) < 0.01 || Math.abs(nextSpeed) < 0.01)\n        return true;\n    return $bm_mul(prevSpeed, nextSpeed) < 0;\n}\nfunction anticipate() {\n    var anticipation = zeroValue;\n    if (isAfterLastKey())\n        return anticipation;\n    if (numKeys < 2)\n        return anticipation;\n    var nextKey = getNextKey(time);\n    var aKey = nextKey;\n    if (!isStill(aKey.time - 0.1, 0.1)) {\n        aKey = getPrevKey(time);\n        if (!isStill(aKey.time - 0.1, 0.1))\n            return anticipation;\n    }\n    if (aKey.index == numKeys)\n        return anticipation;\n    var anticipationMiddle = aKey.time;\n    var anticipationStart = $bm_sub(anticipationMiddle, anticipationDuration);\n    var anticipationEnd = key(aKey.index + 1).time;\n    var startValue = anticipation;\n    var midValue = $bm_mul($bm_sum($bm_neg(valueAtTime($bm_sum(anticipationMiddle, anticipationDuration))), aKey.value), anticipationQuantity);\n    var endValue = anticipation;\n    if (time < anticipationStart) {\n        return anticipation;\n    } else if (time < anticipationMiddle) {\n        if ($bm_isInstanceOfArray(value)) {\n            for (var i = 0; i < value.length; i++) {\n                anticipation[i] = bezierInterpolation(time, anticipationStart, anticipationMiddle, startValue[i], midValue[i], [\n                    slowOut,\n                    0,\n                    slowIn,\n                    1\n                ]);\n            }\n            return anticipation;\n        } else {\n            return bezierInterpolation(time, anticipationStart, anticipationMiddle, startValue, midValue, [\n                slowOut,\n                0,\n                slowIn,\n                1\n            ]);\n        }\n    } else if (time <= anticipationEnd) {\n        if ($bm_isInstanceOfArray(value)) {\n            for (var i = 0; i < value.length; i++) {\n                anticipation[i] = bezierInterpolation(time, anticipationMiddle, anticipationEnd, midValue[i], endValue[i], [\n                    slowOut,\n                    0,\n                    slowIn,\n                    1\n                ]);\n            }\n            return anticipation;\n        } else {\n            return bezierInterpolation(time, anticipationMiddle, anticipationEnd, midValue, endValue, [\n                slowOut,\n                0,\n                slowIn,\n                1\n            ]);\n        }\n    } else {\n        return anticipation;\n    }\n}\nfunction followThroughAtTime(t) {\n    var fThrough = zeroValue;\n    if (elasticity == 0)\n        return fThrough;\n    var propSpeed;\n    if (!simulate) {\n        if (numKeys < 2)\n            return fThrough;\n        if (nearestKey(t).index == 1)\n            return fThrough;\n        propSpeed = length(velocityAtTime(t));\n        if (propSpeed >= threshold)\n            return fThrough;\n    } else {\n        propSpeed = getPropWorldSpeed(t, thisProperty);\n        if (propSpeed >= threshold)\n            return fThrough;\n    }\n    var fThroughStart = 0;\n    var fThroughTime = 0;\n    if (simulate) {\n        var speedI = getPropWorldSpeed(t, thisProperty);\n        var i = t;\n        while (speedI < threshold && i > 0) {\n            i = $bm_sub(i, $bm_div(thisComp.frameDuration, moBlurPrecision));\n            speedI = getPropWorldSpeed(i, thisProperty);\n        }\n        fThroughStart = i;\n    } else {\n        var fThroughKey = getPrevKey(t);\n        fThroughStart = fThroughKey.time;\n    }\n    if (fThroughStart == 0)\n        return fThrough;\n    fThroughTime = $bm_sub(t, fThroughStart);\n    if (simulate)\n        fThrough = $bm_div(getPropWorldVelocity($bm_sub(fThroughStart, thisComp.frameDuration), thisProperty), 2);\n    else\n        fThrough = $bm_div(velocityAtTime($bm_sub(fThroughStart, thisComp.frameDuration)), 2);\n    if (bounce) {\n        var cycleDamp = Math.exp($bm_mul($bm_mul(fThroughTime, damping), 0.1));\n        var damp = $bm_div(Math.exp($bm_mul(fThroughTime, damping)), $bm_div(elasticity, 2));\n        var cycleDuration = $bm_div(1, $bm_mul(elasticity, 2));\n        cycleDuration = Math.round(timeToFrames(cycleDuration));\n        cycleDuration = framesToTime(cycleDuration);\n        var midDuration = $bm_div(cycleDuration, 2);\n        var maxValue = $bm_mul(fThrough, midDuration);\n        var cycvarime = fThroughTime;\n        var numEndCycles = 1;\n        while (cycvarime > cycleDuration) {\n            cycvarime = $bm_sub(cycvarime, cycleDuration);\n            cycleDuration = $bm_div(cycleDuration, cycleDamp);\n            cycleDuration = Math.round(timeToFrames(cycleDuration));\n            if (cycleDuration < 2) {\n                cycleDuration = 2;\n                numEndCycles++;\n            }\n            cycleDuration = framesToTime(cycleDuration);\n            midDuration = $bm_div(cycleDuration, 2);\n            maxValue = $bm_div($bm_mul(fThrough, midDuration), damp);\n            if (numEndCycles > 100 / damping && maxValue < threshold)\n                return zeroValue;\n        }\n        if (cycvarime < midDuration)\n            fThrough = bezierInterpolation(cycvarime, 0, midDuration, 0, maxValue, [\n                0,\n                0.1,\n                slowIn,\n                1\n            ]);\n        else\n            fThrough = bezierInterpolation(cycvarime, midDuration, cycleDuration, maxValue, 0, [\n                $bm_sub(1, slowIn),\n                0,\n                1,\n                0.9\n            ]);\n    } else {\n        var damp = Math.exp($bm_mul(fThroughTime, damping));\n        var sinus = $bm_mul($bm_mul($bm_mul(elasticity, fThroughTime), 2), Math.PI);\n        sinus = Math.sin(sinus);\n        sinus = $bm_mul($bm_div(0.3, elasticity), sinus);\n        sinus = $bm_div(sinus, damp);\n        if (Math.abs(sinus) < $bm_div(threshold, 100))\n            return 0;\n        fThrough = $bm_mul(fThrough, sinus);\n        if (threshold > 0) {\n            fThrough = $bm_mul(fThrough, $bm_sub(1, $bm_div(propSpeed, threshold)));\n        }\n    }\n    if (bounce) {\n        var prevValue = valueAtTime($bm_sub(fThroughStart, thisComp.frameDuration));\n        var startValue = valueAtTime(fThroughStart);\n        if ($bm_isInstanceOfArray(value)) {\n            for (var i = 0; i < prevValue.length; i++) {\n                if (prevValue[i] > startValue[i])\n                    fThrough[i] = Math.abs(fThrough[i]);\n                if (prevValue[i] < startValue[i])\n                    fThrough[i] = $bm_neg(Math.abs(fThrough[i]));\n            }\n        } else {\n            if (prevValue > startValue)\n                fThrough = Math.abs(fThrough);\n            if (prevValue < startValue)\n                fThrough = $bm_neg(Math.abs(fThrough));\n        }\n    }\n    if (simulate) {\n        if (!isThisPosition) {\n            fThrough = $bm_sum(fThrough, getLayerWorldPos(time, thisLayer));\n            fThrough = $bm_sub(thisLayer.fromWorld(fThrough), thisLayer.anchorPoint);\n        } else if (thisLayer.hasParent) {\n            fThrough = $bm_sum(fThrough, getLayerWorldPos(time, thisLayer.parent));\n            fThrough = $bm_sub(thisLayer.parent.fromWorld(fThrough), thisLayer.parent.anchorPoint);\n        }\n    }\n    return fThrough;\n}\nfunction followThrough() {\n    var propSpeed = length(velocity);\n    if (propSpeed < threshold)\n        return followThroughAtTime($bm_sub(time, overlapDuration));\n    var fThrough = zeroValue;\n    var t = time;\n    while (t > 0) {\n        t = $bm_sub(t, thisComp.frameDuration);\n        if (simulate)\n            propSpeed = getPropWorldSpeed($bm_sub(t, overlapDuration), thisProperty);\n        else\n            propSpeed = length(velocityAtTime(t));\n        if (propSpeed < threshold) {\n            fThrough = followThroughAtTime($bm_sub(t, overlapDuration));\n            break;\n        }\n    }\n    return linear(time, t, $bm_sum(t, $bm_mul(anticipationDuration, 2)), fThrough, zeroValue);\n}\nfunction smartSmooth(axis) {\n    var startKey = nearestKey(time);\n    var endKey = startKey;\n    if (time == startKey.time)\n        return 0;\n    if (time < startKey.time && startKey.index == 1)\n        return 0;\n    if (time > startKey.time && startKey.index == numKeys)\n        return 0;\n    if (time < startKey.time)\n        startKey = key($bm_sub(startKey.index, 1));\n    if (time > startKey.time)\n        endKey = key($bm_sum(startKey.index, 1));\n    var sI = 0.66;\n    var sO = 0.33;\n    var sIV = 1;\n    var sOV = 0;\n    var sVal = startKey.value;\n    var eVal = endKey.value;\n    if ($bm_isInstanceOfArray(value)) {\n        sVal = sVal[axis];\n        eVal = eVal[axis];\n    }\n    var sTime = startKey.time;\n    var eTime = endKey.time;\n    if (isKeyTop(startKey, axis))\n        sO = slowOut;\n    else {\n        var prevKey = key($bm_sub(startKey.index, 1));\n        var pVal = prevKey.value;\n        if ($bm_isInstanceOfArray(value))\n            pVal = pVal[axis];\n        sOV = $bm_div($bm_sub(sVal, pVal), $bm_sub(eVal, pVal));\n    }\n    if (isKeyTop(endKey, axis)) {\n        sI = slowIn;\n        if (endKey.index != numKeys) {\n            var nextKey = key($bm_sum(endKey.index, 1));\n            var nVal = nextKey.value;\n            if ($bm_isInstanceOfArray(value))\n                nVal = nVal[axis];\n            if (Math.abs(nVal - eVal) < 0.01 && doFollowThrough)\n                sI = 1;\n        }\n    } else {\n        var nextKey = key($bm_sum(endKey.index, 1));\n        var nVal = nextKey.value;\n        if ($bm_isInstanceOfArray(value))\n            nVal = nVal[axis];\n        sIV = $bm_div($bm_sub(eVal, sVal), $bm_sub(nVal, sVal));\n    }\n    if (endKey.index == numKeys && doFollowThrough) {\n        sI = 1;\n    }\n    var val = value;\n    if ($bm_isInstanceOfArray(value))\n        val = val[axis];\n    return $bm_sub(bezierInterpolation(time, sTime, eTime, sVal, eVal, [\n        sO,\n        sOV,\n        sI,\n        sIV\n    ]), val);\n}\nfunction overlap() {\n    var ol = zeroValue;\n    if (isThisPosition && !hasParent)\n        return zeroValue;\n    ol = $bm_sub(getPropWorldValue($bm_sub(time, overlapDuration), thisProperty), getPropWorldValue(time, thisProperty));\n    var motionRatio = $bm_div($bm_div(length(zeroValue, ol), thisLayer.width), 2);\n    if (isThisPosition) {\n        var originalDistance = length(valueAtTime(0));\n        motionRatio = $bm_div(length(zeroValue, ol), thisComp.width);\n    }\n    ol = $bm_sum(ol, getPropWorldValue(time, thisProperty));\n    ol = $bm_sum(ol, $bm_mul($bm_mul($bm_sub(getPropWorldValue($bm_sub(time, overlapDuration), thisLayer.anchorPoint), ol), motionRatio), flexibility));\n    ol = thisLayer.fromWorld(ol);\n    if (!isThisPosition)\n        ol = $bm_sub(ol, value);\n    else {\n        ol = linear(flexibility, 0, 100, $bm_div(ol, 2), 0);\n        var prevParentWorldPos = getLayerWorldPos($bm_sub(time, overlapDuration), parent);\n        ol = $bm_sum(ol, $bm_mul($bm_mul($bm_mul(thisLayer.fromWorld(prevParentWorldPos), motionRatio), flexibility), 5));\n    }\n    return ol;\n}\nvar okToGo = false;\nif (simulate && fx.enabled)\n    okToGo = true;\nelse if (numKeys > 1 && fx.enabled)\n    okToGo = true;\nif (okToGo) {\n    var smartSmoothResult = zeroValue;\n    if (doInterpolation) {\n        if ($bm_isInstanceOfArray(value)) {\n            if (value.length == 2)\n                smartSmoothResult = [\n                    smartSmooth(0),\n                    smartSmooth(1)\n                ];\n            else if (value.length == 3)\n                smartSmoothResult = [\n                    smartSmooth(0),\n                    smartSmooth(1),\n                    smartSmooth(2)\n                ];\n            else if (value.length == 4)\n                smartSmoothResult = [\n                    smartSmooth(0),\n                    smartSmooth(1),\n                    smartSmooth(2),\n                    smartSmooth(3)\n                ];\n        } else {\n            smartSmoothResult = smartSmooth(0);\n        }\n    }\n    if (doAnticipation)\n        result = $bm_sum(result, anticipate());\n    result = $bm_sum(result, smartSmoothResult);\n    if (doFollowThrough)\n        result = $bm_sum(result, followThrough());\n    if (doOverlap)\n        result = $bm_sum(result, overlap());\n}\n$bm_rt = result;","a":1,"l":2},"a":{"a":0,"k":[72.044,113.775,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"shapes":[{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[0,0],[-3.414,-1.124],[-0.691,0],[-0.908,2.723],[0,0]],"o":[[0,0],[-1.124,3.371],[0.648,0.216],[2.723,0],[0,0],[0,0]],"v":[[47.069,61.613],[32.592,105.262],[36.741,113.43],[38.772,113.775],[44.909,109.324],[60.683,61.613]],"c":true},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[0,0],[0,0],[3.371,-1.124],[0.648,0],[0.908,2.723],[0,0]],"o":[[0,0],[1.124,3.371],[-0.691,0.216],[-2.723,0],[0,0],[0,0]],"v":[[94.956,61.613],[109.391,105.262],[105.285,113.43],[103.254,113.775],[97.074,109.324],[81,61.613]],"c":true},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]},{"ty":"gr","nm":"G","it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":{"i":[[-3.579,0],[0,0],[-1.211,1.756],[0.76,1.992],[-8.909,7.977],[2.389,2.667],[2.68,-2.397],[-8.939,-29.678],[0,0],[0,-3.579]],"o":[[0,0],[2.131,0],[1.211,-1.756],[-11.589,-30.387],[2.667,-2.389],[-2.38,-2.659],[-14.134,12.657],[0,0],[-3.579,0],[0,3.579]],"v":[[38.765,61.62],[105.341,61.62],[110.679,58.813],[111.397,52.829],[109.667,-21.311],[110.169,-30.465],[101.015,-30.967],[96.296,48.655],[38.765,48.655],[32.282,55.137]],"c":true},"a":0}},{"ty":"st","nm":"S","lc":2,"lj":2,"o":{"a":0,"k":100},"w":{"a":0,"k":5.275},"c":{"a":0,"k":[0,0,0,1]}},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]}],"ip":0,"op":250,"st":0,"ef":[{"ty":5,"ix":1,"nm":"ŝ","ef":[{"ix":1,"nm":"A","ty":7,"v":{"a":0,"k":0}},{"ix":2,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":3,"nm":"F","ty":7,"v":{"a":0,"k":1}},{"ix":4,"nm":"A","ty":6,"v":0},{"ix":5,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":6,"nm":"A","ty":0,"v":{"a":0,"k":50}},{"ix":7,"nm":"","ty":6,"v":0},{"ix":8,"nm":"I","ty":6,"v":0},{"ix":9,"nm":"S","ty":0,"v":{"a":0,"k":60}},{"ix":10,"nm":"S","ty":0,"v":{"a":0,"k":25}},{"ix":11,"nm":"","ty":6,"v":0},{"ix":12,"nm":"F","ty":6,"v":0},{"ix":13,"nm":"E","ty":0,"v":{"a":0,"k":10}},{"ix":14,"nm":"E","ty":0,"v":{"a":0,"k":0}},{"ix":15,"nm":"D","ty":0,"v":{"a":0,"k":50}},{"ix":16,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":17,"nm":"B","ty":7,"v":{"a":0,"k":0}},{"ix":18,"nm":"","ty":6,"v":0},{"ix":19,"nm":"S","ty":6,"v":0},{"ix":20,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":21,"nm":"M","ty":7,"v":{"a":0,"k":1}},{"ix":22,"nm":"O","ty":6,"v":0},{"ix":23,"nm":"O","ty":7,"v":{"a":0,"k":1}},{"ix":24,"nm":"D","ty":0,"v":{"a":0,"k":0.05}},{"ix":25,"nm":"O","ty":0,"v":{"a":0,"k":0}},{"ix":26,"nm":"","ty":6,"v":0},{"ix":27,"nm":"S","ty":6,"v":0},{"ix":28,"nm":"S","ty":7,"v":{"a":0,"k":1}},{"ix":29,"nm":"S","ty":0,"v":{"a":0,"k":100}},{"ix":30,"nm":"","ty":6,"v":0},{"ix":31,"nm":"","ty":6,"v":0},{"ix":32,"nm":"P","ty":0,"v":{"a":0,"k":1}}],"en":1},{"ty":5,"ix":2,"nm":"ŝ","ef":[{"ix":1,"nm":"A","ty":7,"v":{"a":0,"k":0}},{"ix":2,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":3,"nm":"F","ty":7,"v":{"a":0,"k":1}},{"ix":4,"nm":"A","ty":6,"v":0},{"ix":5,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":6,"nm":"A","ty":0,"v":{"a":0,"k":50}},{"ix":7,"nm":"","ty":6,"v":0},{"ix":8,"nm":"I","ty":6,"v":0},{"ix":9,"nm":"S","ty":0,"v":{"a":0,"k":60}},{"ix":10,"nm":"S","ty":0,"v":{"a":0,"k":25}},{"ix":11,"nm":"","ty":6,"v":0},{"ix":12,"nm":"F","ty":6,"v":0},{"ix":13,"nm":"E","ty":0,"v":{"a":0,"k":10}},{"ix":14,"nm":"E","ty":0,"v":{"a":0,"k":0}},{"ix":15,"nm":"D","ty":0,"v":{"a":0,"k":50}},{"ix":16,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":17,"nm":"B","ty":7,"v":{"a":0,"k":0}},{"ix":18,"nm":"","ty":6,"v":0},{"ix":19,"nm":"S","ty":6,"v":0},{"ix":20,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":21,"nm":"M","ty":7,"v":{"a":0,"k":1}},{"ix":22,"nm":"O","ty":6,"v":0},{"ix":23,"nm":"O","ty":7,"v":{"a":0,"k":1}},{"ix":24,"nm":"D","ty":0,"v":{"a":0,"k":0.05}},{"ix":25,"nm":"O","ty":0,"v":{"a":0,"k":0}},{"ix":26,"nm":"","ty":6,"v":0},{"ix":27,"nm":"S","ty":6,"v":0},{"ix":28,"nm":"S","ty":7,"v":{"a":0,"k":1}},{"ix":29,"nm":"S","ty":0,"v":{"a":0,"k":100}},{"ix":30,"nm":"","ty":6,"v":0},{"ix":31,"nm":"","ty":6,"v":0},{"ix":32,"nm":"P","ty":0,"v":{"a":0,"k":1}}],"en":1},{"ty":5,"ix":3,"nm":"ŝ","ef":[{"ix":1,"nm":"A","ty":7,"v":{"a":0,"k":0}},{"ix":2,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":3,"nm":"F","ty":7,"v":{"a":0,"k":1}},{"ix":4,"nm":"A","ty":6,"v":0},{"ix":5,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":6,"nm":"A","ty":0,"v":{"a":0,"k":50}},{"ix":7,"nm":"","ty":6,"v":0},{"ix":8,"nm":"I","ty":6,"v":0},{"ix":9,"nm":"S","ty":0,"v":{"a":0,"k":60}},{"ix":10,"nm":"S","ty":0,"v":{"a":0,"k":25}},{"ix":11,"nm":"","ty":6,"v":0},{"ix":12,"nm":"F","ty":6,"v":0},{"ix":13,"nm":"E","ty":0,"v":{"a":0,"k":10}},{"ix":14,"nm":"E","ty":0,"v":{"a":0,"k":0}},{"ix":15,"nm":"D","ty":0,"v":{"a":0,"k":50}},{"ix":16,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":17,"nm":"B","ty":7,"v":{"a":0,"k":0}},{"ix":18,"nm":"","ty":6,"v":0},{"ix":19,"nm":"S","ty":6,"v":0},{"ix":20,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":21,"nm":"M","ty":7,"v":{"a":0,"k":1}},{"ix":22,"nm":"O","ty":6,"v":0},{"ix":23,"nm":"O","ty":7,"v":{"a":0,"k":1}},{"ix":24,"nm":"D","ty":0,"v":{"a":0,"k":0.05}},{"ix":25,"nm":"O","ty":0,"v":{"a":0,"k":0}},{"ix":26,"nm":"","ty":6,"v":0},{"ix":27,"nm":"S","ty":6,"v":0},{"ix":28,"nm":"S","ty":7,"v":{"a":0,"k":1}},{"ix":29,"nm":"S","ty":0,"v":{"a":0,"k":100}},{"ix":30,"nm":"","ty":6,"v":0},{"ix":31,"nm":"","ty":6,"v":0},{"ix":32,"nm":"P","ty":0,"v":{"a":0,"k":1}}],"en":1},{"ty":5,"ix":4,"nm":"ŝ","ef":[{"ix":1,"nm":"A","ty":7,"v":{"a":0,"k":0}},{"ix":2,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":3,"nm":"F","ty":7,"v":{"a":0,"k":1}},{"ix":4,"nm":"A","ty":6,"v":0},{"ix":5,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":6,"nm":"A","ty":0,"v":{"a":0,"k":50}},{"ix":7,"nm":"","ty":6,"v":0},{"ix":8,"nm":"I","ty":6,"v":0},{"ix":9,"nm":"S","ty":0,"v":{"a":0,"k":60}},{"ix":10,"nm":"S","ty":0,"v":{"a":0,"k":25}},{"ix":11,"nm":"","ty":6,"v":0},{"ix":12,"nm":"F","ty":6,"v":0},{"ix":13,"nm":"E","ty":0,"v":{"a":0,"k":10}},{"ix":14,"nm":"E","ty":0,"v":{"a":0,"k":0}},{"ix":15,"nm":"D","ty":0,"v":{"a":0,"k":50}},{"ix":16,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":17,"nm":"B","ty":7,"v":{"a":0,"k":0}},{"ix":18,"nm":"","ty":6,"v":0},{"ix":19,"nm":"S","ty":6,"v":0},{"ix":20,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":21,"nm":"M","ty":7,"v":{"a":0,"k":1}},{"ix":22,"nm":"O","ty":6,"v":0},{"ix":23,"nm":"O","ty":7,"v":{"a":0,"k":1}},{"ix":24,"nm":"D","ty":0,"v":{"a":0,"k":0.05}},{"ix":25,"nm":"O","ty":0,"v":{"a":0,"k":0}},{"ix":26,"nm":"","ty":6,"v":0},{"ix":27,"nm":"S","ty":6,"v":0},{"ix":28,"nm":"S","ty":7,"v":{"a":0,"k":1}},{"ix":29,"nm":"S","ty":0,"v":{"a":0,"k":100}},{"ix":30,"nm":"","ty":6,"v":0},{"ix":31,"nm":"","ty":6,"v":0},{"ix":32,"nm":"P","ty":0,"v":{"a":0,"k":1}}],"en":1},{"ty":5,"ix":5,"nm":"ŝ","ef":[{"ix":1,"nm":"A","ty":7,"v":{"a":0,"k":0}},{"ix":2,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":3,"nm":"F","ty":7,"v":{"a":0,"k":1}},{"ix":4,"nm":"A","ty":6,"v":0},{"ix":5,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":6,"nm":"A","ty":0,"v":{"a":0,"k":50}},{"ix":7,"nm":"","ty":6,"v":0},{"ix":8,"nm":"I","ty":6,"v":0},{"ix":9,"nm":"S","ty":0,"v":{"a":0,"k":60}},{"ix":10,"nm":"S","ty":0,"v":{"a":0,"k":25}},{"ix":11,"nm":"","ty":6,"v":0},{"ix":12,"nm":"F","ty":6,"v":0},{"ix":13,"nm":"E","ty":0,"v":{"a":0,"k":10}},{"ix":14,"nm":"E","ty":0,"v":{"a":0,"k":0}},{"ix":15,"nm":"D","ty":0,"v":{"a":0,"k":50}},{"ix":16,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":17,"nm":"B","ty":7,"v":{"a":0,"k":0}},{"ix":18,"nm":"","ty":6,"v":0},{"ix":19,"nm":"S","ty":6,"v":0},{"ix":20,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":21,"nm":"M","ty":7,"v":{"a":0,"k":1}},{"ix":22,"nm":"O","ty":6,"v":0},{"ix":23,"nm":"O","ty":7,"v":{"a":0,"k":1}},{"ix":24,"nm":"D","ty":0,"v":{"a":0,"k":0.05}},{"ix":25,"nm":"O","ty":0,"v":{"a":0,"k":0}},{"ix":26,"nm":"","ty":6,"v":0},{"ix":27,"nm":"S","ty":6,"v":0},{"ix":28,"nm":"S","ty":7,"v":{"a":0,"k":1}},{"ix":29,"nm":"S","ty":0,"v":{"a":0,"k":100}},{"ix":30,"nm":"","ty":6,"v":0},{"ix":31,"nm":"","ty":6,"v":0},{"ix":32,"nm":"P","ty":0,"v":{"a":0,"k":1}}],"en":1},{"ty":5,"ix":6,"nm":"ŝ","ef":[{"ix":1,"nm":"A","ty":7,"v":{"a":0,"k":0}},{"ix":2,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":3,"nm":"F","ty":7,"v":{"a":0,"k":1}},{"ix":4,"nm":"A","ty":6,"v":0},{"ix":5,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":6,"nm":"A","ty":0,"v":{"a":0,"k":50}},{"ix":7,"nm":"","ty":6,"v":0},{"ix":8,"nm":"I","ty":6,"v":0},{"ix":9,"nm":"S","ty":0,"v":{"a":0,"k":60}},{"ix":10,"nm":"S","ty":0,"v":{"a":0,"k":25}},{"ix":11,"nm":"","ty":6,"v":0},{"ix":12,"nm":"F","ty":6,"v":0},{"ix":13,"nm":"E","ty":0,"v":{"a":0,"k":10}},{"ix":14,"nm":"E","ty":0,"v":{"a":0,"k":0}},{"ix":15,"nm":"D","ty":0,"v":{"a":0,"k":50}},{"ix":16,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":17,"nm":"B","ty":7,"v":{"a":0,"k":0}},{"ix":18,"nm":"","ty":6,"v":0},{"ix":19,"nm":"S","ty":6,"v":0},{"ix":20,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":21,"nm":"M","ty":7,"v":{"a":0,"k":1}},{"ix":22,"nm":"O","ty":6,"v":0},{"ix":23,"nm":"O","ty":7,"v":{"a":0,"k":1}},{"ix":24,"nm":"D","ty":0,"v":{"a":0,"k":0.05}},{"ix":25,"nm":"O","ty":0,"v":{"a":0,"k":0}},{"ix":26,"nm":"","ty":6,"v":0},{"ix":27,"nm":"S","ty":6,"v":0},{"ix":28,"nm":"S","ty":7,"v":{"a":0,"k":1}},{"ix":29,"nm":"S","ty":0,"v":{"a":0,"k":100}},{"ix":30,"nm":"","ty":6,"v":0},{"ix":31,"nm":"","ty":6,"v":0},{"ix":32,"nm":"P","ty":0,"v":{"a":0,"k":1}}],"en":1},{"ty":5,"ix":7,"nm":"ŝ","ef":[{"ix":1,"nm":"A","ty":7,"v":{"a":0,"k":0}},{"ix":2,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":3,"nm":"F","ty":7,"v":{"a":0,"k":1}},{"ix":4,"nm":"A","ty":6,"v":0},{"ix":5,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":6,"nm":"A","ty":0,"v":{"a":0,"k":50}},{"ix":7,"nm":"","ty":6,"v":0},{"ix":8,"nm":"I","ty":6,"v":0},{"ix":9,"nm":"S","ty":0,"v":{"a":0,"k":60}},{"ix":10,"nm":"S","ty":0,"v":{"a":0,"k":25}},{"ix":11,"nm":"","ty":6,"v":0},{"ix":12,"nm":"F","ty":6,"v":0},{"ix":13,"nm":"E","ty":0,"v":{"a":0,"k":10}},{"ix":14,"nm":"E","ty":0,"v":{"a":0,"k":0}},{"ix":15,"nm":"D","ty":0,"v":{"a":0,"k":50}},{"ix":16,"nm":"D","ty":0,"v":{"a":0,"k":0}},{"ix":17,"nm":"B","ty":7,"v":{"a":0,"k":0}},{"ix":18,"nm":"","ty":6,"v":0},{"ix":19,"nm":"S","ty":6,"v":0},{"ix":20,"nm":"S","ty":7,"v":{"a":0,"k":0}},{"ix":21,"nm":"M","ty":7,"v":{"a":0,"k":1}},{"ix":22,"nm":"O","ty":6,"v":0},{"ix":23,"nm":"O","ty":7,"v":{"a":0,"k":1}},{"ix":24,"nm":"D","ty":0,"v":{"a":0,"k":0.05}},{"ix":25,"nm":"O","ty":0,"v":{"a":0,"k":0}},{"ix":26,"nm":"","ty":6,"v":0},{"ix":27,"nm":"S","ty":6,"v":0},{"ix":28,"nm":"S","ty":7,"v":{"a":0,"k":1}},{"ix":29,"nm":"S","ty":0,"v":{"a":0,"k":100}},{"ix":30,"nm":"","ty":6,"v":0},{"ix":31,"nm":"","ty":6,"v":0},{"ix":32,"nm":"P","ty":0,"v":{"a":0,"k":1}}],"en":1}]}],"markers":[]}