aboutsummaryrefslogtreecommitdiffstats
path: root/docs/_static/fdio_logo.png
blob: 3c362b27862069325de0d416d1a6c8e26e3cf3c4 (plain)
ofshex dumpascii
0000 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 00 96 00 00 00 59 08 06 00 00 00 dc bf dd .PNG........IHDR.......Y........
0020 83 00 00 00 06 62 4b 47 44 00 ff 00 ff 00 ff a0 bd a7 93 00 00 00 09 70 48 59 73 00 00 0b 13 00 .....bKGD..............pHYs.....
0040 00 0b 13 01 00 9a 9c 18 00 00 00 07 74 49 4d 45 07 e0 02 0b 01 09 38 8f 53 0c a3 00 00 0e 09 49 ............tIME......8.S......I
0060 44 41 54 78 da ed 9d 79 90 14 d5 1d c7 3f bd 0b 1e 80 ca 3e 40 8d 28 41 f1 20 82 0a db ab a0 49 DATx...y.....?.....>@.(A.......I
0080 31 4b cf ca ac 57 c4 b3 52 39 8c f1 36 6a d4 18 2d ad d2 78 a4 2a 29 92 68 54 d4 1c 1a 8d 57 85 1K...W..R9..6j..-..x.*).hT....W.
00a0 84 c2 48 82 ca 20 fd dc 01 a3 22 fb 00 15 8c 21 e0 81 a0 88 d0 cb 7d 08 4b e7 8f ee 81 de de d9 ..H......."....!......}.K.......
00c0 dd 99 e9 39 7a 76 fb 5b b5 b5 d3 dd af 5f bf ee fe f6 ef fd 7e bf f7 7b bf 07 11 22 44 88 10 21 ...9zv.[....._......~..{..."D..!
00e0 42 84 08 11 22 f4 40 58 b5 86 f3 5f 37 0e b4 74 a3 2f 40 cb a8 fa 50 b7 59 8b 5e 5b 85 90 4b 37 B...".@X..._7..t./@...P.Y.^[..K7
0100 6e 05 26 02 87 03 a7 08 25 bf 88 88 15 21 28 a9 6a 01 e5 6e da c0 4d c0 3c 60 89 50 72 73 cb a8 n.&.....%....!(.j..n..M.<`.Prs..
0120 7a 6a 16 35 45 c4 8a 90 33 b1 b6 00 7d 7c bb 6d 60 8d 50 f2 d0 48 62 45 c8 85 4c 08 25 b1 74 63 zj.5E...3...}|.m`.P..HbE..L.%.tc
0140 06 70 56 27 45 17 00 2b 80 2d c0 87 c0 63 42 c9 d5 11 b1 22 74 46 ae f3 81 69 39 9e 76 83 50 f2 .pV'E..+.-...cB...."tF...i9.v.P.
0160 91 72 b7 bd 57 f4 fa c2 29 ad 80 a3 80 a9 79 9c 3e 37 0c f7 50 15 bd c6 f0 41 28 09 30 3d c7 f7 .r..W...).....y.>7..P....A(.0=..
0180 f3 19 90 10 4a be 13 11 2b 42 26 49 85 a5 1b 93 81 91 39 9c 3a 59 28 39 58 28 39 2b 2c fe ad 48 ....J...+B&I......9.:Y(9X(9+,..H
01a0 c7 0a 1f b9 0e 06 b2 f5 51 d9 c0 08 a1 e4 7f d2 ca 7e 58 10 49 ac 70 91 ea 40 e0 83 1c 4e 99 1e ........Q........~X.I.p..@...N..
01c0 46 52 45 c4 2a 33 56 e9 a7 7a 49 75 a2 eb 36 a8 c9 a1 8a 97 3c 3a 59 a8 10 59 85 65 c4 60 f5 26 FRE.*3V..zIu..6.....<:Y..Y.e.`.&
01e0 96 6e 5c 08 3c 08 7c 2d 8f 0f fd bf 61 bd b7 88 58 45 50 c0 fd 12 c4 d2 8d e3 81 e3 80 a3 5d 37 .n\.<.|-....a...XEP...........]7
0200 c2 10 f7 ff f0 80 97 5b 1f 11 ab 3b 93 a9 2e 8e 68 36 b1 74 a3 1a 18 64 e9 c6 30 e0 7b c0 b9 c0 .......[...;....h6.t...d..0.{...
0220 61 45 bc f4 ee 88 58 dd 59 42 39 a4 6a 04 9e 00 06 02 fb 96 e8 f2 fd c2 fa 5c 22 e5 1d 58 57 67 aE....X.YB9.j............\"..XWg
0240 04 39 dd b0 74 63 1e f0 0a 30 b8 84 a4 02 a8 8e 88 15 62 0c 68 96 69 53 bf 4b e9 e4 f9 3d c4 d2 .9..tc...0........b.h.iS.K...=..
0260 8d 24 60 02 a7 94 a9 e9 8b 23 62 85 1f ba a5 1b 93 3a 2b e0 46 1b 0c b3 74 63 3e b0 1c 98 50 c6 .$`......#b......:+.F...tc>...P.
0280 f6 3e 2b 94 dc 18 d6 87 19 79 de f7 4a a0 a3 5c b2 b4 00 49 e0 1d 1c bf d2 46 40 00 a3 5c 22 8d .>+......y..J..\...I.....F@..\".
02a0 70 4f 69 21 37 9f 53 a1 71 38 1a ab 44 b3 8c 88 55 01 e4 da 0c f4 cd a2 e8 16 e0 0d e0 f4 2c ac pOi!7.S.q8..D...U.............,.
02c0 b6 62 f4 0a 97 0b 25 9f 0c f3 b3 8c ba c2 b6 b8 22 cb 72 df cf 82 54 00 0b 8b d0 c6 19 42 c9 27 .b....%.........".r...T......B.'
02e0 ad 60 06 47 44 ac 92 ba 0d 94 9c 02 bc 9f e1 f0 66 f7 ff 56 e0 ae d6 6a 5e cd a2 4a 1b 27 2e 3d .`.GD...........f..V...j^..J.'.=
0300 5b 7c d8 c1 b5 bd 50 42 c9 73 00 c2 da 05 46 5d 61 07 f8 54 37 aa fa c2 7c e0 48 97 1c a6 ab 6f [|....PB.s....F]a..T7...|.H....o
0320 6d 17 4a de ef 21 a2 9d 8d 2b 02 27 02 b4 1f d0 3b 8b f2 8f e3 38 56 fb 64 38 b6 1e c7 63 bf 29 m.J..!...+.'....;....8V.d8...c.)
0340 8c 63 83 11 b1 b2 97 60 7d 80 5d 42 c9 af 2c bd a1 4a a8 d9 bb 7d c7 ff 05 9c dd 45 35 5f 07 d6 .c.....`}.]B..,..J...}.....E5_..
0360 02 07 00 67 00 93 80 83 3b 29 bf 09 b8 03 78 24 83 ae d6 5f 28 b9 a9 52 9e 5f 44 ac 3c 60 9f 6f ...g....;)....x$..._(..R._D.<`.o
0380 d0 f2 09 75 38 92 ad c3 62 42 c9 2a 4f 37 9b 26 e4 49 c0 85 ae 34 1b e5 4a a7 56 60 25 d0 0c 3c ...u8...bB.*O7.&.I...4..J.V`%..<
03a0 0f bc e0 ab 6b 8e 50 32 56 49 cf 28 22 56 30 a9 b6 16 18 d0 c1 e1 eb 85 92 8f e6 51 e7 65 c0 9f ....k.P2VI.("V0............Q.e..
03c0 7d bb cf 16 4a be 54 49 cf 26 52 de f3 40 8b 1e ef e2 c3 d4 a6 0b 25 1f f5 7a ea 73 80 7f 04 60 }...J.TI.&R..@........%..z.s...`
03e0 65 a5 91 2a 22 56 9e a8 51 26 96 6e dc 81 e3 38 f5 e3 21 a1 cc 89 96 1e cf 37 00 cf af e4 df 53 e..*"V..Q&.n...8..!......7.....S
0400 89 cf 28 22 56 0e 48 0f 56 5b 7a fc 26 e0 97 be c3 db 81 09 42 c9 9b 00 84 32 f3 bd 4c ab 6f bb ..("V.H.V[z.&.......B....2..L.o.
0420 29 ec 09 40 22 62 05 c4 80 66 c9 ba 3a a3 3f d8 bf f3 1d fa 00 18 22 94 7c 35 cf ee af 8d d2 ef )..@"b...f..:.?.......".|5......
0440 df 0e 5b 5e 86 6c 10 c5 63 e5 6a ed d8 9c e8 db f5 b6 50 72 4c 7a a3 00 3e a6 2f 7d db 27 e1 38 ..[^.l..c.j.......PrLz..>./}.'.8
0460 4f 23 89 d5 cd e1 d7 ab ae 2c 80 94 f2 62 85 6f fb 05 4b 37 46 5b a3 0c 2d 22 56 f7 c6 aa 22 4b O#.......,...b.o..K7F[..-"V..."K
0480 fd 4c e3 8b 0b 70 87 91 0a 4c e2 e2 49 f6 88 27 b8 0a b9 31 18 27 ac b8 2b a2 ec 07 bc ee d9 7e .L...p...L..I..'...1.'..+......~
04a0 11 f8 39 b0 4f be ca ba 50 72 51 da 8d e1 5a 9c ab 81 43 32 94 bd cf b1 3a a5 15 11 2b 64 68 a9 ..9.O...PrQ...Z...C2....:...+dh.
04c0 35 a8 59 20 d3 5f fe 41 c0 5d c0 cd 65 94 de 8b 85 92 27 78 08 ae e1 0c 7a f7 e9 42 c1 7f 0c b8 5.Y.._.A.]..e.....'x....z..B....
04e0 17 58 2b 94 b4 2d 7d 3c 42 bd 16 75 85 e5 42 cd 82 3d ca f5 34 60 0d 70 4b 99 9f c3 d3 be ed 44 .X+..-}<B..u..B..=..4`.pK......D
0500 17 a4 4a 0b 84 eb dc f6 2f b4 74 e3 b0 30 91 aa 47 4a 2c 77 6a d6 3c 3a 1e 8a 29 25 76 0b 25 ab ..J...../.t..0..GJ,wj.<:..)%v.%.
0520 7d ed 5b 06 0c cb a3 ae 8b 85 92 53 c3 32 dd be aa 87 90 29 fd 7f 08 b0 2c 24 a4 02 27 97 a8 b7 }.[........S.2.....)....,$..'...
0540 9d c7 e7 49 2a 80 bf 5b ba 71 7a 58 42 6a 7a 5a 57 b8 20 64 ed f9 8b cf ca bb 39 60 7d b3 2c dd ...I*..[.qzXBjzZW..d......9`}.,.
0560 38 2a 0c 96 63 b7 77 90 ae ab 33 10 ce f4 ae e6 10 49 2a 80 ef 7a e3 ab 2c dd 38 96 ec 43 a3 3b 8*..c.w...3......I*..z..,.8..C.;
0580 c3 c3 42 c9 b3 cb 7d 73 3d 42 c7 b2 74 e3 2c 60 46 88 9a f4 96 50 f2 d4 bd 09 6c eb 81 aa 05 c0 ..B...}s=B..t.,`F....P....l.....
05a0 e8 02 d5 7f a4 50 f2 e3 a8 2b 2c 3e 9e 09 51 5b 76 ba 96 9f 47 c9 ae ba ad 80 a4 02 b8 be c7 e8 .....P...+,>..Q[v...G...........
05c0 58 a5 ee f7 3d 0a fb 05 64 0e 6f 29 17 c6 78 27 9a 5a ba a1 e3 84 2c 17 12 a7 94 fb 26 4b a6 63 X...=...d.o)..x'.Z....,.....&K.c
05e0 b9 b3 88 cf 05 ee 2e f2 75 b7 01 d7 09 25 9b dd ed 6b 43 42 a8 dd a0 9d 28 94 b9 24 dd 05 ae 75 ........u....%...kCB....(..$...u
0600 d6 c5 69 2e c2 b5 fa f7 18 62 75 10 72 5b 2c cc b7 74 63 8c 50 f2 6d a0 2e 04 a4 5a 0e 34 0a 65 ..i......bu.r[,..tc.P.m....Z.4.e
0620 2e 73 02 00 f7 a4 3c 2a 56 e2 b4 7d cb 7d c3 a5 d4 b1 2e 28 f1 bd 9d 65 e9 c6 19 38 c3 36 65 92 .s....<*V..}.}.....(...e...8.6e.
0640 50 7c 00 dc 29 94 3c 5a b3 59 e6 48 6e 13 4b 37 8e 03 be c2 c9 4e 53 0c ec ea 49 ee 86 97 81 33 P|..).<Z.Y.Hn.K7.....NS...I....3
0660 4b 78 bd 17 71 72 a5 07 c1 47 bb ab 18 a3 d9 b9 e5 a1 d2 60 67 95 5d bd 6a 37 ad 76 5a 41 f7 0c Kx..qr...G.........`g.].j7.vZA..
0680 25 61 6b 6c c7 c9 ee 97 f9 7c 9b e1 ee f3 ca 17 1b 7b 0c b1 dc c9 05 eb 81 8b 8a ec e6 d8 05 fc %akl.....|.......{..............
06a0 11 58 0d 1c 11 b0 ae df 0c 9c 2f bf a4 7d f0 5d de 58 57 67 30 a0 59 7e d2 85 da 70 57 c0 cb 7c .X......../..}.].XWg0.Y~...pW..|
06c0 da 63 88 d5 52 d7 40 4d f3 ec e7 71 e6 cd 95 42 a7 fb 61 01 aa 99 5d e8 b1 b7 01 9d 4c 8d f7 5c .c..R.@M...q...B..a...].....L..\
06e0 2b a8 09 3d ab dc c4 ea b6 0e 52 4b 37 de 23 b7 d5 1d da 09 17 a1 e4 c0 32 b4 3b 9d 4e 29 08 f6 +..=......RK7.#.........2.;.N)..
0700 13 4a ee e8 29 ca 7b 29 5f ce b0 80 a4 02 b8 a1 4c cd 7f 22 e0 f9 4d e5 26 55 a0 ae 70 9d 6e 30 .J..).{)_.......L.."..M.&U..p.n0
0720 c0 f1 4d 55 53 da 24 ab 1a b0 41 28 69 5b 75 e3 11 cd af 79 09 d5 d7 bd a7 db 03 5e 63 8b 50 f2 ..MUS.$...A(i[u....y.......^c.P.
0740 af a5 7c 11 2d b5 06 b6 86 00 c6 07 ac ea a1 30 7c dc 5a 40 c9 a0 03 6f 96 a1 4b dd 80 66 1f 23 ..|.-..........0|.Z@...o..K..f.#
0760 9a 5f 6b 71 75 37 2c dd f8 3d 70 35 ce bc bc ea 80 6d 5a 0d 3c 9b 65 d9 6a 60 a6 50 f2 d5 a0 37 ._kqu7,..=p5.....mZ.<.e.j`.P...7
0780 e5 ba 47 5e 0e 58 cd a1 c0 17 e5 0e 9f 09 aa bc ff 9b ec d2 f3 14 1a 03 b0 b5 a5 c0 20 97 54 23 ..G^.X........................T#
07a0 81 6b 0a 68 90 1c 0a dc 9a 43 f9 fb 0a 74 5f 41 c3 66 de 0e cb 22 e4 41 75 ac 72 7a 78 07 5a 7a .k.h.....C...t_A.f...".Au.rzx.Zz
07c0 2c 4d a2 6f 94 b1 1d 0f 0a 25 37 04 97 56 f1 7e 64 97 25 b0 33 5c 97 4d a1 58 22 1e 7a 89 f5 2c ,M.o.....%7..V.~d.%.3\.M.X".z..,
07e0 f0 83 32 bd d0 49 42 a5 d2 1e e6 69 c0 06 ca e3 65 bf bf 30 d5 d8 77 04 ac 60 75 2f 7a 35 67 22 ..2..IB....i....e..0..w..`u/z5g"
0800 51 2a 69 12 4b c4 cf 03 4e 05 5e 49 25 cd a2 07 c8 6b f9 7f 61 46 5a bf 38 87 d2 66 0f d6 80 4f Q*i.K...N.^I%....k..aFZ.8..f...O
0820 d3 d3 d9 3d 79 a7 06 e3 f8 7f 7a 01 e3 80 4b 4b d0 96 bc 52 15 b5 51 da 47 d5 53 b3 a8 09 4b 37 ...=y.....z...KK...R..Q.G.S...K7
0840 96 00 c7 07 a8 6a 9a 50 f2 c2 0e 24 d4 8d 38 0b 41 a5 51 9f 4a 9a a9 d0 2a ef 21 77 39 dc 83 13 .....j.P...$..8.A.Q.J...*.!w9...
0860 49 51 2c 34 0b 25 4f 2e 84 03 d5 d2 8d 03 08 3e 0c 33 4e 28 39 b7 03 62 fd 03 98 e8 d9 75 79 2a IQ,4.%O........>.3N(9..b.....uy*
0880 69 16 35 eb 72 f7 f4 63 39 59 61 fe 59 e4 cb 8c 83 82 ad 15 f8 eb 80 e7 af ed 88 54 2e ee f4 6d i.5.r..c9Ya.Y..............T...m
08a0 17 7d 41 f2 6e 49 2c 37 a3 f0 88 22 5e 62 b4 50 72 5b 81 24 eb be ae 9b a4 28 c4 74 75 ac 25 ae .}A.nI,7..."^b.Pr[.$.....(.tu.%.
08c0 a5 ab 03 35 a9 a4 f9 bf d0 ea 58 01 1f 66 15 30 94 e2 8d 55 d6 02 c5 70 70 ee 02 c6 0a 25 55 01 ...5......X..f.0...U...pp....%U.
08e0 9f c5 b7 0a 20 41 46 82 b6 24 40 4e ae ce 48 59 16 ab 30 5f bc 02 c4 8b 48 ec aa 22 91 6a 98 50 .....AF..$@N..HY..0_....H..".j.P
0900 72 45 81 07 a6 7f 14 f0 fc 6d 42 c9 25 1d 1d ac 6f 6c a0 69 e6 ec bc 2a 76 ad c9 83 70 92 f0 f6 rE.......mB.%...ol.i...*v...p...
0920 06 56 a7 92 66 56 0b 43 95 5c 62 59 75 c6 81 d8 6c a0 b2 f0 b4 6b 01 6e 2e 82 f4 b6 03 56 f1 13 .V..fV.C.\bYu...l....k.n.....V..
0940 a1 e4 e4 ce 0a d4 37 36 0c b6 6d 7b 2e 90 1e 43 3c 3d 95 34 57 b6 97 50 06 a9 a4 24 96 88 0f c5 ......76..m{...C<=.4W..P...$....
0960 c9 0b 71 26 4e a2 94 76 86 0b f0 74 2a 69 3e 32 6e 42 03 73 66 cd 2e bf 8e a5 d9 da ae 0a 21 d3 ..q&N..v...t*i>2nB.sf.........!.
0980 76 e0 5d a0 56 28 79 29 7b 57 a7 28 24 a9 82 c6 e3 ef 12 4a 4e 5e 37 aa 4b bf 6a 6f 9c 05 11 86 v.].V(y){W.($......JN^7.K.jo....
09a0 bb 7f bd 33 4b 28 49 2c 11 bf 04 f8 08 b8 a4 03 52 81 13 ee 3d 39 96 88 2f d6 34 bb 3f c0 b8 44 ...3K(I,........R...=9../.4.?..D
09c0 43 f9 88 e5 a6 e9 d9 0a 4c 0d 29 99 76 e2 ac fc 75 b1 ab ec 8e 12 4a 2e 2c a0 f5 e7 47 50 e7 b2 C.......L.).v...u.....J.,...GP..
09e0 02 a8 ea bd 33 50 25 f5 8d f5 69 9d ea 01 da 27 29 49 ab 01 99 d6 9f 1e 01 2c 1b 9b 38 53 9b 93 ....3P%...i....')I.......,..8S..
0a00 9c 5d 7e e5 dd fd 5a 8f c5 59 b1 a1 58 46 c9 05 64 1f e5 70 84 50 72 65 49 ef ff b4 6f 6a ec d8 .]~...Z..Y..XF..d..p.PreI...oj..
0a20 77 07 c1 c6 5a 6f 14 4a 3e dc 35 71 1a 86 da b6 fd 91 67 d7 51 a9 a4 f9 91 4f 51 d7 69 3b 63 68 w...Zo.J>.5q......g.Q....OQ.i;ch
0a40 27 4e 26 9e bf a5 92 e6 1a 4f b9 d3 70 52 3f 35 7a ca 2e 03 8e d3 b4 d6 dd 4d 33 9b ca aa bc 23 'N&......O..pR?5z........M3....#
0a60 94 5c 5a 64 c9 d8 6c e9 c6 04 d7 42 ec 0c ef 67 4b 2a 37 2c 67 9f 02 34 b1 95 1d 5c 1d 90 54 64 .\Zd..l....B...gK*7,g..4...\..Td
0a80 43 aa 1c 30 d7 47 aa 63 53 49 f3 e3 0c e5 de 48 25 cd 33 62 89 f8 33 1e 89 7b 34 70 66 d3 cc a6 C..0.G.cSI.....H%.3b..3..{4pf...
0aa0 19 e5 b6 0a 8b 8a 9a bd 66 f7 4b 59 10 eb 8a 4e 88 94 9e 0f 79 3d f0 33 9c f9 7a 41 43 72 c0 49 ........f.KY...N....y=.3..zACr.I
0ac0 9c b6 5f c0 3a 0a 12 e2 ed 0e 48 9f 02 ec ef d9 dd 90 4a 9a 1f d7 37 1a 34 cd 94 ed 2c 45 00 b6 .._.:.....H.......J...7.4...,E..
0ae0 70 09 7d 19 cd de 80 ca 3b f0 a4 31 68 a3 63 ad ab cd 6f b9 96 30 e6 c5 74 db 74 4d 17 c5 be 14 p.}.....;..1h.c...o..0..t.tM....
0b00 4a be e9 6f bf 67 fb 22 4b 37 3e 03 26 e3 2c b8 74 10 4e 50 63 df 80 7f fd 0a f0 51 3f 56 88 e7 J..o.g."K7>.&.,.t.NPc......Q?V..
0b20 e4 12 a5 de b3 eb c3 54 d2 9c 13 4b c4 db 91 aa cd 79 af 9b 00 de b4 e4 a7 75 e8 c7 d2 b4 5e 7d .......T...K.....y.......u....^}
0b40 2c dd 98 48 c7 53 d2 67 0a 25 97 65 d8 7f 80 3b cb b9 7f 48 78 b5 0f 4e ee a9 41 5d 94 9b e7 57 ,..H.S.g.%.e...;...Hx..N..A]...W
0b60 cc 3d 52 ea 17 b4 1f 0a 09 0b b6 e1 04 58 16 0a 63 3c bf 97 b6 91 4c 9d 63 0a 9e 49 c8 b1 44 7c .=R..........X..c<....L.c..I..D|
0b80 74 2a 69 2e cc d0 15 da cb 5d 6b a8 33 49 30 51 28 39 dd f9 bd 27 ef e5 07 c0 61 15 d8 6b 3e 9c t*i......]k.3I0Q(9...'....a..k>.
0ba0 41 6f c1 d2 8d 3f 01 57 86 b8 dd e7 09 25 ed 02 d6 e7 0d 37 5a 95 83 b4 db ea 8b ed 1a d0 ae 2b Ao...?.W.....%.....7Z..........+
0bc0 b4 74 e3 e4 ae 48 e5 e2 c7 7b 5f c2 6b 58 fa f8 e3 2b 94 54 9b bc e1 c4 9e 24 22 77 87 9c 54 4b .t...H...{_.kX...+.T.....$"w..TK
0be0 85 92 c9 02 ab 1f db 33 91 23 0f 6c c9 a4 63 65 6b a5 b5 1d 3e d0 b4 8f 2b 54 c7 ff 6d 06 49 75 .......3.#.l..cek...>...+T..m.Iu
0c00 2c e1 5f 14 e9 5a 7f f7 5d 00 bc e3 f9 3d cc a3 d4 77 a5 f8 fb 67 b6 bf d7 8e 58 6e 78 6d 83 db ,._..Z..]....=...w...g....Xnxm..
0c20 7f 77 84 3f 08 25 7f ba e7 2b 77 b2 e5 6d 75 cd ce dd 15 46 ac 17 bf 18 9b 96 52 e3 b1 74 a3 1f .w.?.%...+w..mu....F......R..t..
0c40 b0 28 e4 6d fe 85 50 b2 18 9e 5a af 42 75 42 2c 11 1f d2 99 8e 15 9b b0 87 74 b7 79 76 2f 4f 25 .(.m..P...Z.BuB,.........t.yv/O%
0c60 cd cd ed 94 f7 96 5a 83 1a 25 4d ba 48 05 ed 1d 80 4d 2f 78 2d 94 7c 0e 78 ae 84 16 df 0c e0 ac ......Z..%M.H....M/x-.|.x.......
0c80 20 22 5b 28 f9 6e db 2e dd b8 c5 67 72 87 0d f3 81 7b 3b 1a 00 8f 25 e2 c3 81 b5 a9 a4 b9 36 8f ."[(.n.....gr....{;...%.......6.
0ca0 a8 84 b7 5c c1 90 16 34 8b 62 89 f8 d0 54 d2 dc 98 c9 3d e1 0e 4e 5f 0d 78 dd 08 bf 6a d3 91 55 ...\...4.b...T....=..N_.x...j..U
0cc0 5a ff 55 a0 68 cb db 85 92 93 3c 75 f6 07 5a 42 7c db ef 0a 25 4f ca 44 aa 58 22 de 1b f8 dc a3 Z.U.h.....<u..ZB|...%O.D.X".....
0ce0 1b 5d 96 4a 9a 4f 79 cb 64 e9 79 ff 0e 6d 43 8d 36 03 63 81 65 a9 a4 b9 c3 2d 53 85 e3 7f bb 17 .].J.Oy.d.y..mC.6.c.e....-S.....
0d00 c7 af e7 b5 52 07 6a 5a eb d6 b2 7b de 03 20 e8 a4 83 5d c0 03 be 7d 4f 86 f8 7e 9f e8 42 af ba ....R.jZ...{......]...}O..~..B..
0d20 d5 a7 70 3f 09 3c 95 cb 05 62 8d 71 52 33 cd 29 2e b9 ce 75 77 f7 03 16 03 ab 63 89 f8 7a 60 ab ..p?.<...b.qR3.)...uw.....c..z`.
0d40 eb 86 1a 84 e3 8b 4b a3 15 38 26 95 34 b7 7a eb ac 98 08 d2 96 93 eb d3 3f bf 1d 54 51 15 4a ee ......K..8&.4.z.........?..TQ.J.
0d60 dc 2b ad 62 d5 b4 1d f7 0a 0b de c7 59 14 e0 4a 3a cf 77 15 38 0d 66 6a a6 99 76 1f 4c 04 1e f7 .+.b........Y..J:.w.8.fj..v.L...
0d80 1d 3e 14 27 22 a2 16 27 38 d3 4b aa 35 38 13 33 56 d5 37 b6 b5 52 2b 86 58 35 f3 9b b0 ea c6 ef .>.'"..'8.K.58.3V.7..R+.X5......
0da0 4f f0 90 e3 29 6d 37 ab ef 0c 81 6e 65 e3 c4 4a 6d 02 e6 82 5d 2b 94 1c 21 94 9c 9a 85 05 f8 a0 O...)m7....ne..Jm...]+..!.......
0dc0 6f 7b 6a 07 f5 db 6e 97 b5 8d f6 8b 6d ee 51 ca 53 49 f3 2a 9c 10 e6 15 38 c9 e1 32 d5 b5 0d 67 o{j...n.....m.Q.SI.*....8..2...g
0de0 ea df 21 b8 0b 56 f9 bd f4 95 d5 15 da da 50 b7 5b 68 cd b3 86 7d 6c ad 5d 37 f1 09 70 55 19 ee ..!..V........P.[h...}l.]7..pU..
0e00 e6 2b 9c 50 94 cf dc ff 9b 81 16 a1 e4 f6 b4 a5 da d5 fa 38 ae 22 bd 32 96 88 0f 71 3f b8 35 c0 .+.P...............8.".2...q?.5.
0e20 7b 19 82 ef 3e 05 0e f6 76 00 19 25 d7 2c 33 5d e7 02 37 d8 ef 30 57 62 8d c4 19 cd f8 1c 27 bd {...>...v..%.,3]..7..0Wb......'.
0e40 e5 17 99 14 fb 8a 44 31 c6 23 d7 d5 c6 bb c5 b3 a9 3f 27 b1 f7 f7 84 86 c2 d5 5b c0 ba 22 44 88 ......D1.#.......?'.......[.."D.
0e60 10 21 42 84 1e 86 ff 03 78 f6 c7 f4 9e 97 9e 34 00 00 00 00 49 45 4e 44 ae 42 60 82 .!B.....x......4....IEND.B`.
n> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include <vppinfra/time_range.h> __clib_export void clib_timebase_init (clib_timebase_t * tb, i32 timezone_offset_in_hours, clib_timebase_daylight_time_t daylight_type, clib_time_t * clib_time) { clib_memset (tb, 0, sizeof (*tb)); if (clib_time == 0) { tb->clib_time = clib_mem_alloc_aligned (sizeof (*clib_time), CLIB_CACHE_LINE_BYTES); memset (tb->clib_time, 0, sizeof (*clib_time)); clib_time_init (tb->clib_time); } else tb->clib_time = clib_time; tb->timezone_offset = ((f64) (timezone_offset_in_hours)) * 3600.0; tb->daylight_time_type = daylight_type; switch (tb->daylight_time_type) { case CLIB_TIMEBASE_DAYLIGHT_NONE: tb->summer_offset = 0.0; break; case CLIB_TIMEBASE_DAYLIGHT_USA: tb->summer_offset = 3600.0; break; default: clib_warning ("unknown daylight type %d", tb->daylight_time_type); tb->daylight_time_type = CLIB_TIMEBASE_DAYLIGHT_NONE; tb->summer_offset = 0.0; } } const static u32 days_per_month[] = { 31, /* Jan */ 28, /* Feb */ 31, /* Mar */ 30, /* Apr */ 31, /* May */ 30, /* Jun */ 31, /* Jul */ 31, /* Aug */ 30, /* Sep */ 31, /* Oct */ 30, /* Nov */ 31, /* Dec */ }; const static char *month_short_names[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", }; const static char *day_names_epoch_order[] = { "Thu", "Fri", "Sat", "Sun", "Mon", "Tue", "Wed", }; const static char *day_names_calendar_order[] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", }; __clib_export void clib_timebase_time_to_components (f64 now, clib_timebase_component_t * cp) { u32 year, month, hours, minutes, seconds, nanoseconds; u32 days_in_year, days_in_month, day_of_month; u32 days_since_epoch; u32 day_name_index; /* Unix epoch is 1/1/1970 00:00:00.00, a Thursday */ year = 1970; days_since_epoch = 0; do { days_in_year = clib_timebase_is_leap_year (year) ? 366 : 365; days_since_epoch += days_in_year; now = now - ((f64) days_in_year) * 86400.0; year++; } while (now > 0.0); days_since_epoch -= days_in_year; now += ((f64) days_in_year) * 86400; year--; month = 0; do { days_in_month = days_per_month[month]; if (month == 1 && clib_timebase_is_leap_year (year)) days_in_month++; days_since_epoch += days_in_month; now = now - ((f64) days_in_month) * 86400.0; month++; } while (now > 0.0); days_since_epoch -= days_in_month; now += ((f64) days_in_month) * 86400; month--; day_of_month = 1; do { now = now - 86400; day_of_month++; days_since_epoch++; } while (now > 0.0); day_of_month--; days_since_epoch--; now += 86400.0; day_name_index = days_since_epoch % 7; hours = (u32) (now / (3600.0)); now -= (f64) (hours * 3600); minutes = (u32) (now / 60.0); now -= (f64) (minutes * 60); seconds = (u32) (now); now -= (f64) (seconds); nanoseconds = (f64) (now * 1e9); cp->year = year; cp->month = month; cp->day = day_of_month; cp->day_name_index = day_name_index; cp->hour = hours; cp->minute = minutes; cp->second = seconds; cp->nanosecond = nanoseconds; cp->fractional_seconds = now; } __clib_export f64 clib_timebase_components_to_time (clib_timebase_component_t * cp) { f64 now = 0; u32 year, days_in_year, month, days_in_month; year = 1970; while (year < cp->year) { days_in_year = clib_timebase_is_leap_year (year) ? 366 : 365; now += ((f64) days_in_year) * 86400.0; year++; } month = 0; while (month < cp->month) { days_in_month = days_per_month[month]; if (month == 1 && clib_timebase_is_leap_year (year)) days_in_month++; now += ((f64) days_in_month) * 86400.0; month++; } now += ((f64) cp->day - 1) * 86400.0; now += ((f64) cp->hour) * 3600.0; now += ((f64) cp->minute) * 60.0; now += ((f64) cp->second); now += ((f64) cp->nanosecond) * 1e-9; return (now); } __clib_export f64 clib_timebase_find_sunday_midnight (f64 start_time) { clib_timebase_component_t _c, *cp = &_c; clib_timebase_time_to_components (start_time, cp); /* back up to midnight */ cp->hour = cp->minute = cp->second = 0; start_time = clib_timebase_components_to_time (cp); while (cp->day_name_index != 3 /* sunday */ ) { /* Back up one day */ start_time -= 86400.0; clib_timebase_time_to_components (start_time, cp); } /* Clean up residual fraction */ start_time -= cp->fractional_seconds; start_time += 1e-6; /* 1us inside Sunday */ return (start_time); } f64 clib_timebase_offset_from_sunday (u8 * day) { int i; for (i = 0; i < ARRAY_LEN (day_names_calendar_order); i++) { if (!strncmp ((char *) day, day_names_calendar_order[i], 3)) return ((f64) i) * 86400.0; } return 0.0; } __clib_export u8 * format_clib_timebase_time (u8 * s, va_list * args) { f64 now = va_arg (*args, f64); clib_timebase_component_t _c, *cp = &_c; clib_timebase_time_to_components (now, cp); s = format (s, "%s, %u %s %u %u:%02u:%02u", day_names_epoch_order[cp->day_name_index], cp->day, month_short_names[cp->month], cp->year, cp->hour, cp->minute, cp->second); return (s); } uword unformat_clib_timebase_range_hms (unformat_input_t * input, va_list * args) { clib_timebase_range_t *rp = va_arg (*args, clib_timebase_range_t *); clib_timebase_component_t _c, *cp = &_c; u32 start_hour, start_minute, start_second; u32 end_hour, end_minute, end_second; start_hour = start_minute = start_second = end_hour = end_minute = end_second = 0; if (unformat (input, "%u:%u:%u - %u:%u:%u", &start_hour, &start_minute, &start_second, &end_hour, &end_minute, &end_second)) ; else if (unformat (input, "%u:%u - %u:%u", &start_hour, &start_minute, &end_hour, &end_minute)) ; else if (unformat (input, "%u - %u", &start_hour, &end_hour)) ; else return 0; clib_timebase_time_to_components (1e-6, cp); cp->hour = start_hour; cp->minute = start_minute; cp->second = start_second; rp->start = clib_timebase_components_to_time (cp); cp->hour = end_hour; cp->minute = end_minute; cp->second = end_second; rp->end = clib_timebase_components_to_time (cp); return 1; } __clib_export uword unformat_clib_timebase_range_vector (unformat_input_t * input, va_list * args) { clib_timebase_range_t **rpp = va_arg (*args, clib_timebase_range_t **); clib_timebase_range_t _tmp, *tmp = &_tmp; clib_timebase_range_t *rp, *new_rp; int day_range_match = 0; int time_range_match = 0; f64 range_start_time_offset; f64 range_end_time_offset; f64 now; u8 *start_day = 0, *end_day = 0; rp = *rpp; while (1) { if (!day_range_match && unformat (input, "%s - %s", &start_day, &end_day)) { range_start_time_offset = clib_timebase_offset_from_sunday (start_day); range_end_time_offset = clib_timebase_offset_from_sunday (end_day); vec_free (start_day); vec_free (end_day); day_range_match = 1; time_range_match = 0; } else if (!day_range_match && unformat (input, "%s", &start_day)) { range_start_time_offset = clib_timebase_offset_from_sunday (start_day); range_end_time_offset = range_start_time_offset + 86399.0; day_range_match = 1; vec_free (start_day); day_range_match = 1; time_range_match = 0; } else if (day_range_match && unformat (input, "%U", unformat_clib_timebase_range_hms, tmp)) { /* Across the week... */ for (now = range_start_time_offset; now <= range_end_time_offset; now += 86400.0) { vec_add2 (rp, new_rp, 1); new_rp->start = now + tmp->start; new_rp->end = now + tmp->end; } day_range_match = 0; time_range_match = 1; } else if (time_range_match) break; else { vec_free (rp); *rpp = 0; return 0; } } if (time_range_match) { *rpp = rp; return 1; } else { vec_free (rp); *rpp = 0; return 0; } } __clib_export f64 clib_timebase_summer_offset (clib_timebase_t * tb, f64 now) { clib_timebase_component_t _c, *cp = &_c; f64 second_sunday_march_2am; f64 first_sunday_november_2am; if (PREDICT_TRUE (now >= tb->cached_year_start && now <= tb->cached_year_end)) { if (now >= tb->cached_summer_start && now <= tb->cached_summer_end) return tb->summer_offset; else return (0.0); } clib_timebase_time_to_components (now, cp); cp->month = 0; cp->day = 1; cp->hour = 0; cp->minute = 0; cp->second = 1; tb->cached_year_start = clib_timebase_components_to_time (cp); cp->year += 1; tb->cached_year_end = clib_timebase_components_to_time (cp); cp->year -= 1; /* Search for the second sunday in march, 2am */ cp->month = 2; cp->day = 1; cp->hour = 2; cp->second = 0; cp->nanosecond = 1; /* March 1st will never be the second sunday... */ second_sunday_march_2am = clib_timebase_components_to_time (cp); cp->day_name_index = 0; /* Find the first sunday */ do { clib_timebase_time_to_components (second_sunday_march_2am, cp); second_sunday_march_2am += 86400.0; } while (cp->day_name_index != 3 /* sunday */ ); /* Find the second sunday */ do { clib_timebase_time_to_components (second_sunday_march_2am, cp); second_sunday_march_2am += 86400.0; } while (cp->day_name_index != 3 /* sunday */ ); second_sunday_march_2am -= 86400.0; tb->cached_summer_start = second_sunday_march_2am; /* Find the first sunday in November, which can easily be 11/1 */ cp->month = 10; cp->day = 1; first_sunday_november_2am = clib_timebase_components_to_time (cp); clib_timebase_time_to_components (first_sunday_november_2am, cp); while (cp->day_name_index != 3 /* sunday */ ) { first_sunday_november_2am += 86400.0; clib_timebase_time_to_components (first_sunday_november_2am, cp); } tb->cached_summer_end = first_sunday_november_2am; if (now >= tb->cached_summer_start && now <= tb->cached_summer_end) return tb->summer_offset; else return (0.0); } /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */