readable!e fhqnstance/Rphysical save (a folder i;) containing.]EThis9 can be stored anywhere in your place)loaded intoDraw. * When 'It' is set to false,8 will slowly cW thisA to ^ avoid lag (Doing+is recommended for large images)8Thez importer plugin usesWnternally.7zProperties:  OutputWarnings : boolean  * Determines whether any w3 messagesappear ino] if something is out ofi or not work rrectly accord5oX@q- AutoU4theautomatically=arenderxpixels oevery heartbeat:2SetpzyHYAcallW() method to manu{k. Colour : Color3 [READ ONLY]/ The default background c<!ofQgener^tResolution : Vector2scurrent r6l b Drawing M!R:Fill &()!Re cwith a:Y_ClearZbi[ :FloodFillRZ{...}!(XY ffill an areacspecificS that9oint is on./An arrayjsalso be(ed2allzJs[were useGwitha[NOTE:!iscfast! Do1use/real-time enginesDrawPixec #3Set"Places a/ eoCircle" Draws a c> at a desiredCset radiusBC Rectang %simple rK shape fromA (top left) toB (bottom )?Tri$splain tHRthree ?Lin ?Lin 3lin#tw  x zn":5BData5optional scalingSupports alpha blenf2whe'TransparencyEnabled' parameter DtrueZTextured $# tJ*atwa given and UV coJDates+ *S ranga7e of 0 to 1ueach axis.(0, 0 is ,1, 1 is 6V* Int 3D rendering or 2DtpolygontQ, but" r6Has 2D clipp#nterpolat (gradient-ba =6The: is betwee Cfe8{D * Distorted "7f Fointquad/plane which caled dynam e ~rotating, stretch 3kewwarping 2D\ 6OText,NText"Jtext q. Greatbdebugg5 % WFetchm G%\ !,XY#x Rhosen[ (  \s(PointA1?, B J | 2ing8CCA toM}GetMouse+K ? [CLIENTd Il client's mouse i&4, a (\)l Otherwise, no` -R (nilO6 i-batible12Gui^ SurfaceGuiuw " jF/tabh" oDwhol1% 9 , number,  ._Q tuplaorder;N$'sQvalue&halpha/8)(r0 - 255 4Tin2w<'s origina jb [3' dSets aQ "ednq5 to_j! Canvas:Destroy Xhl data remIx:UpdatePM/^3(if.7'false')]EventU.~d(DeltaTime The same as RunService.Hu2eveCwhatBuses to u(Wframe   ]] local = game:Get&("#")1UserInpu%7 $") -- ModulesIGb  = require(script:WaitForChild("Fas*")) -- Credit,aBoatBosStringCe/or] 0c1waffle1 pTextCharacterss .$")_TOFuncC+Krystaltinan@gA= {}These variables are on"by$f\Limit = 2256, 256[DO NOT EDIT!] R! sBcAs limitsok!To0K Wcause issues for r. So I think hav2hishelp solveqproblemFAnow.UMicro optimisationTableInsert = a!.i!EFindCfindRoundN = math.t:NewECeil8ceil --== BUILT-IN FUNCTIONS ==--1Swap(A, B) Q B, A end,GetRange0if A > B then @(A - B), -1 else!B - A), 1 endrKRPointy 2) 2X =N%.XYYMo(X, Y)up!ToRIndexc&, R I + (Y) - 1) *>/.Xx)XYuHX, YtXunX + (YYX2Ler6, TDCA + O * TQLerpF1, TrAssumes e E_MODULE FUCN- 4s H.new(Frame: Guiy(:?3C: ?*|r = { 1ify iAies/Ks = true, QAReadt6 =New(100, 100), ' =n2 -- } --==<<Sral FBs >>0I"(M?F) J  1ing n warn("(!) : '" .. W .. "'") zfSet-upE-- P sh1o w=*z,G%.B'ifu C.X >qLimit.X or?/.Y*Y[a4("Acannot be built)aAlarg 1an o.. " x$ Y. T.s' =!CIResX"/.X$Y$Y N?100E ` UI+ = R.new({fJY) M:SetParent)! aConnec:"#(f( m  aRenderJN08 for Y = 1Q do #X#X# {  U Z.!" =0#na JW"-- == << F API >> $/sU!--q` hNself4nil !Zion:Disc$()  3Fil=6^)CResY " 3)  M X self 7{ St*<<|  ) 1   (C) 2X =AO) Y"Y QX > 0#Y RX <= T_and Yrr& Od  ISXY(X:4, Y m F l  U): {}X !sA!_ -- GetAe B{  DistX, FlipMultiplierX =zB$.X!.X?Y?Y?Y?Y?Y = 0, DistXq A.X + X *x}A.Y + Y Yw Ta(#if%1 g(,*93 --<re isn'tu'#s 9aaters,  * MX{$XY@6nd Z? q:IsClie@CLoca ~$"GuiInsetC.GuiD:Get(p CSize|.AbsoluteSizes H 2WyCPosi+ R :FindFirstAncestorOfClass("- J 4-= Bevif not 9a-- Gui fJ" =   Transformed=(>/~Normalise- M*V Qspace'ake sure\+valigned# is at diffe~)aspect ratioscRatioD'*ceXS/.X$.X5 /Y/DY) -42, 1( &L-= (b/ 2) *>>X\ceil(^1Y1 0g N?B.new"X,51it.i: B -- " don't seem to#3now "al (A  *1B +/  NISize  QR--print(9 TBaPosFixh+ 0.5, 0.5) #ve$5 toi,~D=[*6 -- Convert to& U-# F = ()  J    +RN BNP S"R k e  U  < q o  L W end K! BFail?53getB)V+(you can5(> server. Please8)Ra LocalS,&)Xg1 t2\s=cZ)5TAlpha4{ yhas no t 4. So all*H;rbe 255 Giu#;do "~,+g9{NE3 = RData,}C2 =  SXI3Y)} 5Hp<?=?, Scale_"?, h5=?) X = 1 Y = Y L3X =f Y.2X =G[Data./.X7Y7 Y73 .-#wd*c 44Y4YkAtartHJAtartP)E-- CO5 if X < 1[Bc-X + 2Y)lY = -Y)2X +Q- 1 >! oX -= (G=) -H ~'~ ~Y~G~Y~O?not-a"ifRX == O,Y -- Draw /0 ? no scale adjustments (most*"al for ImgX ="X,PlacemenV2X +>-1Imgj QxR%R n'1Img>}h!s[1+ ({:)b?#X]Pb!c#Uixel(5X, +Y,z84 Ropretty,ASampTq CeilN( /0X+|Y|Y| })p c [ (more expensiveV>Xi )gxPy *z&bsIndex =` FA>   >b]Z%if'3 <= -- No ne !do 71forGgletelyYCFscontinu& ~"Bg ]&  MBmaged:Lerp(c$H/ )3end" (  - B#4 orL'.nV{ %M:`)L  m *coint.Y.t/.Y# ---==<<Alear!s("s:e2)&Q:Fill &a&%Bc", %&i  in pair #s)&AselfDTL %EF) 3N @Arevoir  qT[a:U#Aseen E5v*UpA0, -e%R`N (F1, 0,LMDownN M;LefL-Mqueue = { ( }cWidth,.#He d k'rwhile #f3> 0Hy=.remove(2-9X =#(Y(9 if> (T !!+>1;key D H8 --#qX .. ",/ seen[key] {p 8XY(R)X,- *ifD=E( 7(> ^e 56 3( h # +d$Up 3 ODown5OLeft5(6 yu"XYw^?? =;) _ O6=$.Y0$v08/ 2 S`H.Ja -- A raw performantHTBdraw)s (much faster than `O)`) 2[ Q, Radius[1 e, Fill 9#  H#Rdx, dy, err'dius, 0, 1 -2[ 3ForV D 10 1,  FLine3BAc4LinS.RQwA3BD, tr oDLinem  !if or type(Fill) == "nil"  dx >= dy do --9&ed" \ New(X + dx, Y + dy), -P-PPyxP-P 1dy auerr < 0" "err + 2 *0D dxKbdx - 112(dyvSEcr outlin   ;5 5 j 5 j5+j D5 j>j5Z^sk(%83X +W- >r =!X;3>OB"("@$XY)$exceed bounds!oing cancelled#/IZX @m)1bEndX, FZ}8cEndX -$I2 J! +RD?  L6x, k> 400 y`A+ dxDD` 0' a&s,I+po o ) aR R )-) 1 {~C% 4   ( ?VaReturn?3A BBC dX1, Y1?3A.X6A.Y$T2, Y2$B$B$fY2 < YX#Y14RSwap(v4fX2 < X4UX1, X44! Fhlipped[V7imax(X1w!71max1 =MCabs(X2 - X1) + X)(Jabs(Y2 - Y(Y##KBmin( $X).Q.Y. O>Qs(..._1TabwBb2i, Hin i  + % Q>> :1Plo&%2X, k"v!"!%<Yt, PlotY ` I.newB);  r-- Just%th s (using solidnasL3Topn)2 oBottoma2a2a=OLeft`1`k `` 5`{,5,,Co 4 GVXY(X18Y 'X2 r $<81, Y o8 #2, 89 11, y 98/q+Tb , C" H[#jIltypeofY!or?" =mX-  B37 Cr YEe EE!"MY- f2 = Y2_0a3 = Y3R 1 "1XIbX3 = XIa-- SorR" vertices based on Y a]?Bing " 0  #  { Y3 O35O f O O29 Y2O9 X2OOc 1Plo(0;!,  F1 Si t O6 + M _6: ^(sOBDrawEFlatTriX1, TriY"X2"X33BA--[[74 - OB top6&H(Y2&b tk6/p/Hrigh0]/invslope1 = (Tri 1) /Y& 828z8Y 9rcurx1 =dUcurx2f2= 0hP 0RDrawY:QY1 + ]% ?afloor(};), 12), '6 +=274A?Top>#q>D=top  qF;U ;2sJ#Y2#;3;;N;?3 -;6-;2;aTriMide01l\1/ (Y1) * (X3H87< X !Mi2 -E, X3>u  Pu- uD~TLineA`)sDrawLin DLine;$6B2CblClC6A6 ;-|z(M{ IBI5CIO$  'X3 < , xx { $ 9,QChecktPa$ X Y p|!!)if9 or k(XY) Error: This4ingxdoesn't have c: sX1) CPSing..R*c   N  S c  h# y*2Liny h A 8? #XYZ} * nt1*   -zoXY(  V U11 V UDV UU V & ds1, BLDness]6?  TexResX, rDpEF qe U1, U~ UV1, Vn  {dK}o2o}d)U2})V2} })==!f3 += 1' 1dy12 d\,v1 = V2 - V du1 = U2 - U -y-4 o|v2 = V3Yk2 = U3YATexUV&&0 Hax_step, db #$u1"v "2" "4 a = dx1 /aabs(dyox:dx2!_ = duC.dv!4 Ce' .dv!0 line(ax, bx, tex_sue#svv, Y, IsBo8if ax > bx I [" *u **L R'sv S;1 / (bx - a%2t =2 if+>WY.= DScanlineLength#IceilqqClip X B.bxv&I ` d= jHleft#arVX <C ,1-(a4/! tNHBep *{*T #j'tA/zHqTexU = xBr#1, t4EKAmin( gk*aX + 1)b% F % FVFYF5 G, DcData:Gc53XY(E,N#if=K]5+N>=7 or$ =E/waax + jm~*uR, G, BE.*.R>+.GBGR *=GB3V%bColor3_%%I1PAt +=+ & jUY topmY 1."5STVTopYDiste4min2 Y[[LStop tMBi = ,b--task.wait($axv(X1 + i *! : ,# -qQ valu])lE = UeV$Uv = V$ x?EndZZ ZeZ$ZTScan 3\  K C2 23 -  ?   o3 - U2<,G ~U 3 QB.23 -E2M\F  , 1*-0KR2 + i>a2 + (ip)E313L s s +Zu= ehOv+X"!i,Y(.W!, g%g UV1'%9UV23]intergersX&Sfz 4A.XO B!C. .1Y1,L< SYSCjci'D &1, R.X, UV1.YR2313.Y-SL3 ]KJJ#XYrw X4, Y4g`)iv0=C0, 1+) tan1qn  H IrA)DG \|q 82^ (25C.X oDDCt3 YThick c@QDrawnFv??)6not@7 or < CRAx@a }(BA2B+Y17A.Y Y(]B^qsx, sy,63dy +X1("#sxL I dx $-)%15 16 sy\y \y\%\>qerr, e25-dy, nilQwhile nQ(X1 =Qand Y $Y2  =err + err if e2 > -dyv>A- dy)q X1 = !sxD7< dC2+ d0! Y%R1 + sUrB )(  D" 9)x7Z]> r"('4 # -- Custom polygon!+Uthick =, ` % qKURawRo Satan2B.X -D<6A.YY) -- Use di͜s<sTheta =rdPiHalf Qpi / & .hwe get an X's!measures up to 360 degrees (also avoids negativeEE4#if ATapi * 2o>GwRot[g#DiГ!=  1* 2 eounder = Ye1.5) /D /DOB-- A"st{behaviours foN (sgka aCorner{R0.5 +m3sin+6) *UUx*U?cosU WV.V- UUg 5 Eno?Endm2mS k SkT i TYSSgV22s aw0start and e"rn H'9XsA = n6w1A/8*2* 8`51, PIB&(X28 ged capUCu  +F FBFJ~<*Contents(P*{_o, Item;=BItemND wvJ# BV #D!B -(!:kx9#FGv*S  -- Bresenham  GW  EC    ,:   "XY`: ,  wYm s l CmK >222>5 xText: string, XV"$le*v?, Wrap3, Spacing")с+L!AScalr"n #G'! Rclampn()!50u BChar`4= 3nEChara5 1Tex=3s =6.split(Text, "\n"l /cs2act{YrLine, "[! $G2Y =@(+}b " =9 %s[=:lower()] N *-min(1, X + )+)>Y>Y>Y>4 if^' +%> "1X -=EWrapVOWrapVB AY +=fm'p&X break -- Don't wriRymore/since it'1sidK{d E  3for3%YI'"do/ jN&1Y -B33eil%BY /  ,'ifrnN>'YG>P yoh6WidY';XXn( 58!} kDXDXDF=[#Y] XI@1 &'& &p) ~L# "<x:7ET rK$.YyK Ae? --Uq j T 4rU/--+5GetR(Save‚B: Ino#) mSaveData/s)4GetAttribute("("F_AlphaE'Ds+A") fuecompresǚT data/ed j.4K .( \[2Get a siqpixel cSO info form|LCDataz 6F, "STS5RSm!3OriXq 1K  K   ~RGBValu. <We, ",")9 ! =oY r3.fromRGB(table.unpack(c) x?R = tog( j1[i]9T)s))P( zP )^&'he'Jimagq0~{  ,n@jqDataResH 0$.Xq1Q 1Yq=t@sh}T0o1): FժY:X, z '#PAIndeB#S 14C[C]&Q^ P(ATintW TS ") d 2i, #a"VN K4i] $o>:2J9, T*S=2'  ?Pg >]"urk 0/    T1 RDraw.\d(4,t#): Folder ifS`! >ڋġ'an >Y>  vwarn([[CAcrea)  too large). 7try to keep|r# !ofUqno highan ']] .. n rY .. "'KE|FastWaitCouf 0function#($%# lag spik2%if)(B >= dH6a:Wait(f J ;+rsToList`;%5%=G2Rgb3Format = "%d,&" g?_e4 N.R * 255),)>/.GB 7\Data,:k#t(1Z os(4000) ) Zconca # b %) yvr n&H 6 -s.0:= r N {.M"W C !ed)lX %4or. (/$TsJ /S.6Newo# =ce.new("I") (.Name = "+" !/:S$,   kJIH^" j)I4P DEPRECATEDt/METHODa-- (!)p* :!()Fead \:AFrom=!  6  +y v)t Aan iY)a#of&s~D!s[%]7 6 AKXO  /XY ~ )XYX<-!.Xcoordinates B1Numbers ["0"]\{1,1,1}, 0 ,v}, ["1FR0,1,0F F2F`8 {0vT {1,0gF3F\F4F F F5F0; 6F7F F8FvF9FDA}, CLettaT bF%FcFVQ ,FdF0Q  FeF0Q fF%gFgFhF0 ,iF,FjF  FkF %0 lF0 FmF0%! FnF0 FoF%rFpF0 .FqF #QFrFsFtF FuF FvFFwFv FxF FyF Q FzF0 *aSymbol !T> T!@F &F#F; QF$F F ,F%F \QF^F 0 SF F&FH tF*FF(F0$ S ,F)F ,F[F0 ,F]F rF{F  ,F}F0 ; \F-FJ  ,F_F 0 \F+F H \F=Fk0FF0 F,F?F k ; F.F % rF,F; /F^; |FkF,:Fx .,F;F; F7'"'V  F&"'  F`F QF~F0 Q F0F}, }4 4Abs)7abs2getF FromPartFace(part, normalId)part.CFrame:(ToWorldSpac"TopNLeftsS } $_/\ /ifqC:Dot9 > 0.999bil -- None f@Aoler p5sZp j_{ [].52 *  size.X/2, aY/2, - 1Z/2T SOBackR > SR S >R?LefQ U JLT?TopQ G> }9RӁonCompon=>o.$) @cB = {G:Get3B)} Lvremove(4O, 1)2 E3) S/R{ ["Qv 0-  }--[[ 4 is a modified vers "Greedy/Gradi7 byUu. This6"ha++aabilith"A blur artefactsGzriginal modulQvimprove!ceiere are alsoR ther minor additions to fitq's needs. %pgithub.com/boatbomberD ]]! }GuiPool.B) --*?Uti'CUtil&,VClear 4leaRTable$ O$dMclamp UDim2From50" =*ColorSeqKeyPNew uenceKeywK.new2.&Rw7Res5Resl, Blur&[_Active = 0, _Column^/_UpdatedyQThreshold = 2,XLossyU4, }?invX, invY = 1 / _a 4Y &dWResY * 0.03.Generate initial grid of color-hGrid =()0/M;X4~Grid[x]21 Y0.98, 1, 1)+`P#._qBGridla pool of [+ ances with e1s '!Arame;- a.Backg9dColor3pY1/orderSize?\ ""# $UI H"X = 902Pare5 VWH$(DGUIs=Gui}") Gui2"pc 'Gui.ClipsDescendafBtrueղ 9(L"_Q*aAnchor!iN)AspectRatio'UIConstrai. XY'5GuiqContainA:&$$"# f-- Define API dcreate('y#x, pixelStart 2Cou5 #F){(rdata in( D, (r(data.p /rT)Y!.c)'n/!*J(2:Ge) O(invX * (x\; ! *E A*7r.(/}.=^ *'# {v}*2:,7w)5+W)n$lbClear()^2x) Gui@a2Set2( 6 ?entI Ax: n#6, y / /C Bself4[x]ol[y] ~=. S.]C Col* `Q')C --q+%CoB#--s&>v>_!?[y]M:0Eif xecolumnAY as[x] 5% return $_,.z2umnTR9(*A,T-s- vHhildren(p  <IX.7' Qfor xTumn i FUxM {<1{ pD " cqumn[1] ?  p</)2las,47bDlastr![1 79finto gx (yLx-- Early exit)Avoid(delta check on direct equality>(if/ ? a= Util.DeltaRGB(Q> ?Tb = y -m-Iif (M ) or (y- > dist):@T", Jb- 0.08V$ }7 3@\UBQ OW w.-"= ZCF> 18qi ^ " Y%n I~ ![1S !or Xunt +n~b Y)N 7XDZ"{  T  $($<+OFF_SCREEN O2(0,UThuge)3cinsertq!ARemoT.new(: GuiObject,DSize+ D?) % =V or 55{ _Avail(GQ_Sour bClone(I/pmh1VPool.{ i^ `[ _ }i1if E > 04[1]([&,X7le2 1 B) ]\ q<*) OPool,d/ --{Cby 1waffle1,1vzed by 5 --ctext-c4ion/163637Odictionarydo -- populatezblength[r32, 127if i ~= 34 and +92(cKachar(inG[c],}[vB] = 1, c EJ=2endbescapemapPF mapS1, 34 = ({ 34, 9})[i - 31] or i1c, ɡ"C,Q + 31kmap[e] = e -5(s)TOgsub(s, '[%c"\\]',5(fr. "\127" ..KqI8<2 un(sSO(.)"sA ijecopy(t2new Fk, vLt new[k] = v8newsb93Cach tobase93(n{uvalue =8r[n] ifHmP,~! = "" repeat "Sremai_n % 93 0(B] ..r n = (n - 1) /Duntil n == 0 $ =? ?b10 110(5n =8[n]nn4A1, #7cn = n + 93 ^N2sub, -i, -i) E = nnrfunctioress(texruACopy 6py(ckey, sEv, {}, #25CopAw8Rspans!{} listkey(k6= h;[k],L&qF> !s[b8Cspan"  (rep(" ",n-L)?3pan O=~A1, #!@`1sub2Q, i, h#Xakey ..N'ifrCopy[new]Fnew Je$!X1sizTsize,h j=qconcat()Ga .. "| # $de<E t$Bcont %{}Qmatchb, "(.-)|(.*)"ogroups, start2, 1!sp:egKC%d+"%B = #S3 RCsub(|! +% * $previous !, $s2for1(Lg.g)?1ent [L"] 3 ifC  X,B$..Asub(D S! / =;R> y Qf 0*  !L: uwx-{?T5, D$ =Pess }PROP6F SourceAssetId _/PROP%Tags PPRNT5?o PEND