This is simple refactore and improved date_parsing.hpp begin 666 date_parsing.hpp.patch M*BHJ(&1A=&5?<&%R<VEN9RYH<' N;W)I9PE4:'4@075G(#$U(#$Y.C4W.C,X M(#(P,#(-"BTM+2!D871E7W!A<G-I;F<N:'!P"51H=2!*=6P@,S$@,C Z,S$Z M,3(@,C P,PT**BHJ*BHJ*BHJ*BHJ*BHJ#0HJ*BH@,30L,SD@*BHJ*@T*(" - M"B @;F%M97-P86-E(&1A=&5?=&EM92![#0H@( T*(" -"B @(" O+R$@1V5N M97)I8R!F=6YC=&EO;B!T;R!P87)S92!A(&1E;&EM:71E9"!D871E("AE9SH@ M,C P,BTP,BTQ,"D-"B @("!T96UP;&%T93QC;&%S<R!D871E7W1Y<&4^#0H@ M(" @9&%T95]T>7!E#0H@(" @<&%R<V5?9&%T92AC;VYS="!S=&0Z.G-T<FEN M9R8@<RD-"B @("![#0HM(" @("!T>7!E9&5F('1Y<&5N86UE(&1A=&5?='EP M93HZ>65A<E]T>7!E('EE87)?='EP93L-"BT@(" @(&EN="!P;W,@/2 P.PT* M+2 @(" @='EP96YA;64@9&%T95]T>7!E.CIY;61?='EP92!Y;60H>65A<E]T M>7!E.CIM:6XH*2PQ+#$I.PT*(" @(" @8F]O<W0Z.G1O:V5N:7IE<CQB;V]S M=#HZ8VAA<E]D96QI;6ET97)S7W-E<&%R871O<CQC:&%R/B ^('1O:RAS*3L- M"B$@(" @(&9O<BAB;V]S=#HZ=&]K96YI>F5R/#XZ.FET97)A=&]R(&)E9SUT M;VLN8F5G:6XH*3L@8F5G(3UT;VLN96YD*"D[*RMB96<I>PT*(2 @(" @("!I M;G0@:2 ](&)O;W-T.CIL97AI8V%L7V-A<W0\:6YT/B@J8F5G*3L-"B$@(" @ M(" @<W=I=&-H*'!O<RD@>PT*(2 @(" @("!C87-E(# Z('EM9"YY96%R(#T@ M:3L@8G)E86L[#0HA(" @(" @(&-A<V4@,3H@>6UD+FUO;G1H(#T@:3L@8G)E M86L[#0HA(" @(" @(&-A<V4@,CH@>6UD+F1A>2 ](&D[(&)R96%K.PT*(2 @ M(" @("!].PT*(2 @(" @("!P;W,K*SL-"B$@(" @('T-"B$@(" @(')E='5R M;B!D871E7W1Y<&4H>6UD*3L-"B @("!]#0H@( T*(" @("\O(2!'96YE<FEC M(&9U;F-T:6]N('1O('!A<G-E('5N9&5L:6UI=&5D(&1A=&4@*&5G.B R,# R M,#(P,2D-"BTM+2 Q-"PU," M+2TM#0H@( T*("!N86UE<W!A8V4@9&%T95]T M:6UE('L-"B @#0HK(&YA;65S<&%C92!D971A:6P@>PT**R @( T**R @("\O M(2!'96YE<FEC(&9U;F-T:6]N('1O('!A<G-E(&1A=&4-"BL@("!T96UP;&%T M93QC;&%S<R!D871E7W1Y<&4L(&-L87-S('1O:V5N:7IE<CX-"BL@("!D871E M7W1Y<&4-"BL@("!P87)S95]D871E*&-O;G-T('1O:V5N:7IE<B8@=&]K*2 - M"BL@("![#0HK(" @("!T>7!E9&5F('1Y<&5N86UE(&1A=&5?='EP93HZ>65A M<E]T>7!E('EE87)?='EP93L-"BL@(" @('1Y<&5N86UE(&1A=&5?='EP93HZ M>6UD7W1Y<&4@>6UD*'EE87)?='EP93HZ;6EN*"DL(#$L(#$I.PT**R @(" @ M='EP961E9B!T>7!E;F%M92!T;VME;FEZ97(Z.F-O;G-T7VET97)A=&]R(&ET M97)A=&]R.PT**R @(" @:71E<F%T;W(@8F5G(#T@=&]K+F)E9VEN*"DL(&5N M9" ]('1O:RYE;F0H*3L-"BL@(" @(&EF("AB96<@/3T@96YD*0T**R @(" @ M("!R971U<FX@9&%T95]T>7!E*'EM9"D[#0HK(" @("!Y;60N>65A<B ](&)O M;W-T.CIL97AI8V%L7V-A<W0\:6YT/B@J8F5G*3L-"BL@(" @(&EF("@K*V)E M9R ]/2!E;F0I#0HK(" @(" @(')E='5R;B!D871E7W1Y<&4H>6UD*3L-"BL@ M(" @('EM9"YM;VYT:" ](&)O;W-T.CIL97AI8V%L7V-A<W0\:6YT/B@J8F5G M*3L-"BL@(" @(&EF("@K*V)E9R ]/2!E;F0I#0HK(" @(" @(')E='5R;B!D M871E7W1Y<&4H>6UD*3L-"BL@(" @('EM9"YD87D@/2!B;V]S=#HZ;&5X:6-A M;%]C87-T/&EN=#XH*F)E9RD[#0HK(" @("!R971U<FX@9&%T95]T>7!E*'EM M9"D[#0HK(" @?0T**R!]("\O(&YA;65S<&%C92!D971A:6P-"B @#0H@(" @ M+R\A($=E;F5R:6,@9G5N8W1I;VX@=&\@<&%R<V4@82!D96QI;6ET960@9&%T M92 H96<Z(#(P,#(M,#(M,3 I#0H@(" @=&5M<&QA=&4\8VQA<W,@9&%T95]T M>7!E/@T*(" @(&1A=&5?='EP90T*(" @('!A<G-E7V1A=&4H8V]N<W0@<W1D M.CIS=')I;F<F(',I#0H@(" @>PT*(" @(" @8F]O<W0Z.G1O:V5N:7IE<CQB M;V]S=#HZ8VAA<E]D96QI;6ET97)S7W-E<&%R871O<CQC:&%R/B ^('1O:RAS M*3L-"B$@(" @(')E='5R;B!D971A:6PZ.G!A<G-E7V1A=&4\9&%T95]T>7!E M/BAT;VLI.PT*(" @('T-"B @#0H@(" @+R\A($=E;F5R:6,@9G5N8W1I;VX@ M=&\@<&%R<V4@=6YD96QI;6ET960@9&%T92 H96<Z(#(P,#(P,C Q*0T**BHJ M*BHJ*BHJ*BHJ*BHJ#0HJ*BH@-#(L-C,@*BHJ*@T*(" @('!A<G-E7W5N9&5L M:6UI=&5D7V1A=&4H8V]N<W0@<W1D.CIS=')I;F<F(',I#0H@(" @>PT*(" @ M(" @:6YT(&]F9G-E='-;72 ]('LT+#(L,GT[#0HM(" @("!I;G0@<&]S(#T@ M,#L-"BT@(" @('1Y<&5D968@='EP96YA;64@9&%T95]T>7!E.CIY96%R7W1Y M<&4@>65A<E]T>7!E.PT*+2 @(" @='EP96YA;64@9&%T95]T>7!E.CIY;61? M='EP92!Y;60H>65A<E]T>7!E.CIM:6XH*2PQ+#$I.PT*(" @(" @8F]O<W0Z M.F]F9G-E=%]S97!A<F%T;W(@;W-F*&]F9G-E=',L(&]F9G-E=',K,RD[( T* M(" @(" @8F]O<W0Z.G1O:V5N:7IE<CQB;V]S=#HZ;V9F<V5T7W-E<&%R871O M<CX@=&]K*',L(&]S9BD[#0HA(" @("!F;W(H8F]O<W0Z.G1O:V5N:7IE<CQB M;V]S=#HZ;V9F<V5T7W-E<&%R871O<CXZ.FET97)A=&]R('1I/71O:RYB96=I M;B@I.R!T:2$]=&]K+F5N9"@I.RLK=&DI>PT*(2 @(" @("!I;G0@:2 ](&)O M;W-T.CIL97AI8V%L7V-A<W0\:6YT/B@J=&DI.PT*(2 @(" @(" O+R @(" @ M('-T9#HZ8V]U=" \/"!I(#P\('-T9#HZ96YD;#L-"B$@(" @(" @<W=I=&-H M*'!O<RD@>PT*(2 @(" @("!C87-E(# Z('EM9"YY96%R(#T@:3L@8G)E86L[ M#0HA(" @(" @(&-A<V4@,3H@>6UD+FUO;G1H(#T@:3L@8G)E86L[#0HA(" @ M(" @(&-A<V4@,CH@>6UD+F1A>2 ](&D[(&)R96%K.PT*(2 @(" @("!].PT* M(2 @(" @("!P;W,K*SL-"B$@(" @('T@#0HA(" @("!R971U<FX@9&%T95]T M>7!E*'EM9"D[#0H@(" @?0T*(" @( T*(" @( T*+2TM(#4S+#8Q("TM+2T- M"B @("!P87)S95]U;F1E;&EM:71E9%]D871E*&-O;G-T('-T9#HZ<W1R:6YG M)B!S*0T*(" @('L-"B @(" @(&EN="!O9F9S971S6UT@/2![-"PR+#)].PT* M(" @(" @8F]O<W0Z.F]F9G-E=%]S97!A<F%T;W(@;W-F*&]F9G-E=',L(&]F M9G-E=',K,RD[( T*(" @(" @8F]O<W0Z.G1O:V5N:7IE<CQB;V]S=#HZ;V9F M<V5T7W-E<&%R871O<CX@=&]K*',L(&]S9BD[#0HA(" @("!R971U<FX@9&5T M86EL.CIP87)S95]D871E/&1A=&5?='EP93XH=&]K*3L-"B @("!]#0H@(" @ M#0H@(" @#0HJ*BHJ*BHJ*BHJ*BHJ*BH-"BHJ*B V-2PX-B J*BHJ#0H@(" @ M9&%T95]T>7!E#0H@(" @<&%R<V5?9&%T93(H8V]N<W0@<W1D.CIS=')I;F<F M(',I#0H@(" @>PT*+2 @(" @+R]U<VEN9R!N86UE<W!A8V4@8F]O<W0[#0HM M(" @("!I;G0@<&]S(#T@,#L-"BT@(" @('1Y<&5D968@='EP96YA;64@9&%T M95]T>7!E.CIY96%R7W1Y<&4@>65A<E]T>7!E.PT*+2 @(" @='EP96YA;64@ M9&%T95]T>7!E.CIY;61?='EP92!Y;60H>65A<E]T>7!E.CIM:6XH*2PQ+#$I M.PT*(" @(" @8F]O<W0Z.F-H87)?9&5L:6UI=&5R<U]S97!A<F%T;W(\8VAA M<CX@9&5L:6TH(D14(BD[#0H@(" @("!B;V]S=#HZ=&]K96YI>F5R/&)O;W-T M.CIC:&%R7V1E;&EM:71E<G-?<V5P87)A=&]R/&-H87(^(#X@=&]K*',I.PT* M(2 @(" @9F]R*&)O;W-T.CIT;VME;FEZ97(\/CHZ:71E<F%T;W(@8F5G/71O M:RYB96=I;B@I.R!B96<A/71O:RYE;F0H*3LK*V)E9RE[#0HA(" @(" @(&EN M="!I(#T@8F]O<W0Z.FQE>&EC86Q?8V%S=#QI;G0^*"IB96<I.PT*(2 @(" @ M("!S=VET8V@H<&]S*2![#0HA(" @(" @(&-A<V4@,#H@>6UD+GEE87(@/2!I M.R!B<F5A:SL-"B$@(" @(" @8V%S92 Q.B!Y;60N;6]N=&@@/2!I.R!B<F5A M:SL-"B$@(" @(" @8V%S92 R.B!Y;60N9&%Y(#T@:3L@8G)E86L[#0HA(" @ M(" @('T[#0HA(" @(" @('!O<RLK.PT*(2 @(" @?0T*(2 @(" @<F5T=7)N M(&1A=&5?='EP92AY;60I.PT*(" @('T-"B @#0H@( T*+2TM(#8S+#<Q("TM M+2T-"B @("!D871E7W1Y<&4-"B @("!P87)S95]D871E,BAC;VYS="!S=&0Z M.G-T<FEN9R8@<RD-"B @("![#0H@(" @("!B;V]S=#HZ8VAA<E]D96QI;6ET M97)S7W-E<&%R871O<CQC:&%R/B!D96QI;2@B1%0B*3L-"B @(" @(&)O;W-T M.CIT;VME;FEZ97(\8F]O<W0Z.F-H87)?9&5L:6UI=&5R<U]S97!A<F%T;W(\ M8VAA<CX@/B!T;VLH<RD[#0HA(" @("!R971U<FX@9&5T86EL.CIP87)S95]D E871E/&1A=&5?='EP93XH=&]K*3L-"B @("!]#0H@( T*(" -"@`` ` end