diff --git a/CORE/Packages/Lazarus/Connectors/Indy/RESTDWIndySockets.lpk b/CORE/Packages/Lazarus/Connectors/Indy/RESTDWIndySockets.lpk
index 4b0701c23..e2d18d9ec 100644
--- a/CORE/Packages/Lazarus/Connectors/Indy/RESTDWIndySockets.lpk
+++ b/CORE/Packages/Lazarus/Connectors/Indy/RESTDWIndySockets.lpk
@@ -48,7 +48,7 @@
-
+
@@ -58,14 +58,8 @@
-
-
-
-
-
-
-
+
diff --git a/CORE/Packages/Lazarus/Connectors/JClient_LAMW/restdwjClientLAMW.lpk b/CORE/Packages/Lazarus/Connectors/JClient_LAMW/restdwjClientLAMW.lpk
new file mode 100644
index 000000000..e91374ca9
--- /dev/null
+++ b/CORE/Packages/Lazarus/Connectors/JClient_LAMW/restdwjClientLAMW.lpk
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CORE/Packages/Lazarus/Connectors/JClient_LAMW/restdwjClientLAMW.lrs b/CORE/Packages/Lazarus/Connectors/JClient_LAMW/restdwjClientLAMW.lrs
new file mode 100644
index 000000000..bf1da172a
--- /dev/null
+++ b/CORE/Packages/Lazarus/Connectors/JClient_LAMW/restdwjClientLAMW.lrs
@@ -0,0 +1,183 @@
+LazarusResources.Add('TRESTDWjClientLAMWClientPooler','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#25#0#0#0#25#8#6#0#0#0#196#233#133
+ +'c'#0#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28
+ +#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#2#230'IDATx'#1#189'V;H[Q'#24
+ +#254'n'#188#10#137#239'G'#164'4'#197#7#22#12'EA'#11'"u'#169#131#157#10'Q'#208
+ +#181'Tm'#7#7#193')K7'#161#148#210'L'#210']'#187':t'#177#165#20#20#212'%t)Z'
+ +#209'F'#7#27#205'C!'#228'a'#146'6oH'#255#255'$'#185'M'#170'17'#18#252#224#231
+ +#156'{'#30#255'w'#254'''W2'#155#205#233#182#182'6\'#135'H$'#2#167#211#9#181
+ +#208'j'#181#232#232#232#128#215#235#133#197'b'#145'd&hmm-z'#129#15#198'-'#22
+ +'<''"'#181#8#145#172#143#141#225'.'#9'C.u'#193#183#186#138#185'2'#8#20#162
+ +#141#13'X{{'#197'\S'#234#176'|'#3#2#198'=d'#220#172#138#164#18#184#21#146#146
+ +'1'#217'ln'#198#167#190'>'#148#139'T*'#133'GjI8'#29#27#27#27#17#10#133#196
+ +#220'n'#183#163#187#187'['#236#157#158#158'"'#157'N'#163#174#174#14#213#213
+ +#213#208'h4'#226#12'K4'#26#133'jK'#242'_'#214#223#223#15#191#223#143#150#150
+ +#22#24#12#6#161#148#9':;;'#197#25#183#219#141'x<'#142'D"Qp'#183' &kkk'#240
+ +#249'|E'#137#246#246#246#132'U<'#218'l61'#186'\.'#28#28#28#8#171'jkk'#17#12#6
+ +'/'#221'+'#176'ddd'#4#203#203#203#152#157#157'U'#10'T'#10#135#17#11#4#160#163
+ +#249#159#179'3'#200#178#12#238#15#191#143#142'p'#159#220#146':?G'#136#196#151
+ +'L'#162#170#170#10'555'#136#209#25#182#28'=='#25#18#135#195#129#195#195'C'
+ +#133#168#151#10#136'Z'#1#168#221#8#162'a"yy|'#140'r'#225'"'#249#144#157'k"7,'
+ +#182'r '#27#141'F'#197'5'#220#167'VVV'#20'+*'#133#130#192'['#173#214#130'xT'
+ +#10#5#129'7'#153'L'#151#14#184'I>'#254#183#198'}i8;'#255'I'#242#154#196#206
+ +'I'#192'5B'#9#192'q'#156',Fr'#21#12'$|a'#157#228'}S'#19#244#3#3#136'nm'#225
+ +']v'#255#5')6'#14#13'a'#144#198#28#188'T'#136's;;'#152#202'~'#171#234']'#156
+ +')_''&0'#181#176' '#10#239#237#230'&'#222#16'!'#175#167#242#148#231#192#213
+ +#175#205'[WU'#241#236#174#241#241'q|'#158#153#193'4'#205'g'#182#183#1'"'#9']'
+ +'\'#136#253#253#253'}'#209'^X'#177#168#15'@'#25'U'#147#240#139#7#145'q'#221#3
+ +#146#135''''''#202'^'#152#252#175#215#235'E'#171#201'_'#243'x<'#202#183'*w'
+ +#177#226#19'R'#252#189#171#11'f'#154'7LO'#227#23#197#166#129'_I'#213#205#22
+ +'$)'#224#220#20'y'#228#181'|'#148#180#196#175#211'a'#142#198'gKK'#152#164#152
+ +'4'#145#155#152#240#241#238#174' a'#130'X,&'#148#179'H'#146'$'#172'*+&w('#173
+ +#183#169#245#188#162#198#249'mq'#17'VZ{'#130#127')l'#162#174#252#133'S'#183
+ +#189#29#245#245#245'"'#22#252#136#209#209'Q'#209#162#4#9'W'#249'u'#208#145'%'
+ +#129#249'y'#252' "'#6#215#136'-+'#12#137#228#233#21'wr'#191'D'#183#134#191
+ +#234#2#25'{'#18#21#230' '#0#0#0#0'IEND'#174'B`'#130
+]);
+LazarusResources.Add('TRESTDWjClientLAMWClientREST','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#24#0#0#0#25#8#6#0#0#0'++'#238']'#0
+ +#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28#233
+ +#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#3')IDATx'#1#189'V=LSQ'#20#254'Z'
+ +#139#161#13#161'D('#161#161#5':@'#163#144'@Y`0'#129'Eg'#18#6'fta'#210'HRV'
+ +#168#27#131'i'#234'L'#2#184'u'#144#159#205'X'#18#196'I'#16#2','#134#162#137
+ +#165'M'#17'* '#130'P'#16'"'#158#239#210'6'#143#250'Z'#141#169'~'#201#233#187
+ +#239#222'{'#206'w'#206#185#231#220'W'#131#215#235#189#168#168#168'@!'#177#182
+ +#182#134'X,'#6#218'5'#241#167#188#188#28#133#132#199#227#193#250#250':'#142
+ +#143#143'aD'#1'A'#175'i4'#24#12#162#167#167'G9nB'#1#17#14#135#21#9#141'[,'#22
+ +#184#221#238'K'#2#178'.,,'#224#236#236#12#127#3#234#181#181#181#169#177#211
+ +#233#196#238#238#174'" '#20#193#200#200#8#236'v'#187#154'H&'#147#25#197#162
+ +#162#162'+F'#248'n2'#233#7#173'M'#139#22'F'#158'xIII'#198'xkk+\.'#23#140'F#'
+ +#154#154#154#176#185#185#169#214#168#184#177#177#129#229#229'e$'#18#9#196#227
+ +'q'#28#29#29'e'#12#217'l6U='#217'P'#238'h'#189#178'Z'#173#152#159#159'Gee%'
+ +#182#183#183#209#208#208#160#202#141#164'\c'#158#27#27#27'Q]]'#141#211#211'S'
+ +#204#206#206#162#172#172'L'#233'2'#213#186#4'Z'#208'K'#166#130#202#244#168
+ +#170#170#10#251#251#251'0'#155#205'XYYQ'#243'L'#23#231#24#129'6'#141'z'#184
+ +'B'#192'H'#22#23#23#149'w[[[p8'#28#25#175#24#21#141#157#159#159'ciiIE'#181
+ +#179#179#163#246#254#150#192' '#158'ZRi'#178#242'go'#15'.>%'#215#165#242'8'
+ +#20'9'#16#209#154'J'#202#217#212#23#23#171#189'i'#152#219#219#245#9#30#139'!'
+ +#7'r'#227#13'#'#16'y'#136#252'x"'#209'e'#163#160#157#172#7#21'AH'#164'4'#207
+ +#166'w"q'#145#231#200#143#175#185#8#238#136#228'K'#17's'#207#20'u#?":s'#255
+ +'''E'#3#28#212#213#169#137#31'R'#223'v'#145#176'4O'#186#129'X'#243#156#127'%'
+ +'{'#172'2'#247']'#250#225#155'f'#157#248#18#137#192#163'CpM'#238#238#161#207
+ +#162'00:'#138#196#201#9#186#251#250#240'B'#154#173#127'pP'#149#230#13'1'#250
+ +'^:'#250'vW'#23#218';:`'#148#134#171#239#236'DL'#8'o'#201#5#215'?4'#132#168
+ +#140'?'#137#142#187#182#22'v'#185'A'#211'`'#15'e'#26#141'^'#190#29#31#199#199
+ +#213'U477'#171#185'Iy'#231#225#147#168'V'#148#167#167#167'U7s'#220'%'#6'_'
+ +#202#184'S'#200#156#178#239#158#236#9#234'D'#160#206#128#6#234#196'S'#175'D'
+ +#225#243#251'177'#167#22#31'I'#20#247'E'#24#133#207#231'CKK'#11#252#178#206
+ +'/'#150#182#233#168#207'*'#203'YEDDr'#248#160#183#23#207'&''U4'#132'_'#140
+ +#222#148''''#219#135#158'N'#140#141'aB'#198#1'q'#228#245#212'T'#198#8#163'$'
+ +#161'U'#143#128#31#134#195#20#1#203'p4'#16'P'#198'x'#233'1'#2#130#169'!)'#223
+ +'y'#176#1#217#243#20#151#253#193#148#209'8'#203#252#186#206#159#7#195#240#240
+ +#240'E('#20#130'afF'#245#195'AJ'#17'Y)P'#155'SO'#238#227#247#139#209#196'D'
+ +#238#138'|'#16#227'6'#175#247#202#7#135#151#161'!'#253#183'%'#26#141#234#222
+ +#231#127#2'f'#161#166#166#230#151'y'#18#252's'#252#4#203#244'Q{'#183#149#205
+ +'9'#0#0#0#0'IEND'#174'B`'#130
+]);
+LazarusResources.Add('TRESTDWjClientLAMWDataBase','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#25#0#0#0#25#8#6#0#0#0#196#233#133
+ +'c'#0#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28
+ +#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#3'AIDATx'#1#205'VMH[A'#16#254
+ +'"'#177'&Q'#27'I'#212#136#137'?A'#208'P'#2#146#130'('#158#164'Pz(T'#161#173
+ +'W'#177#199#30'*'#210#234#169' '#158#165#212#158'z'#232'E'#143'BK'#241#210
+ +#139#7#149'z'#168#168#248#23'Z'#197'C'#140#26'A'#141#26#13#198#191'H'#186#223
+ +'&/'#190'<#Mi+'#253'`'#242#222'Nvgvgf'#191'y'#186#174#174#174'Xaa!'#254#5#130
+ +#193' '#250#250#250'tz:'#176'Z'#173'R'#177#188#188#140'H$'#130'?'#133#217'lF'
+ +'UU'#149#180'K'#232#21#143'CCC(..'#198#223'@('#20#194#244#244'4Z[['#229'8'
+ +#139'?SSS)'#14't:'#29#156'N'''#252'~?<'#30#15#138#138#138#176#190#190#142#147
+ +#147#19'lmm'#225#236#236#12#225'p'#24#129'@@'#26'<>>'#150#162'F^^'#158'\'#147
+ +'<'#137'^'#175'O'#153'PSS'#131#209#209'QlooK#GGG'#168#174#174'FYY'#25'&''''Q'
+ +'^^'#142#166#166'&'#204#205#205#161#160#160'@n&'#22#139'agg'#7#23#23#23'I;J'
+ +#232#179#174';'#178#203#229#146#206#29#14#7'JJJ'#164#129#220#220'\'#216#237
+ +'v'#24#141'F'#140#143#143#195#235#245'beeE'#230'`bb'#2#21#21#21'im'#233#211
+ +')WWW'#177#191#191'/C833#wd0'#24#176#176#176#128#181#181'5D'#163'Q'#228#228
+ +#228'`ssSn'#130'p'#187#221'r'#156#177#19':'#224'nm6'#27'vww'#229';qzz*u'#7#7
+ +#7#200#206#206'Fii)|>'#159#204'!7b'#177'X'#174'w'#194#157#153#22#23#147'J'#19
+ +#210'#'#156'xZ'#211#252''''#205#139'BPpK'#216#20'u|'#233#196'v~'#142#151#215
+ +#28'U'#141'oB'#28#9#249#21'6'#132#12'$'#222#179'p'#3#184#17'''2\'#135'B>e0'
+ +#249';'#226#161#186#157#193#220'C'#173#19'.z'#156#193'B;'#254#227#156#252'V'
+ +#184#184';'#134#204#172#209's'#173'O'#220#165#168#16#163#168#212'z'#193'kw'
+ +#180'N'#24#174'z!'#207#5#15#145#139#8#155#184#245#13#226'9'#152#208'qNT'#232
+ +'^'#227'2\t'#250'T'#24'v'#213#213#193#147#184#176'DP'#144#229#187#217'Y}'#231#158'w'#254#231#220#143'w'#159#194'b'#177#180
+ +#231#230#230'@$'#147'I'#212#235'u'#200'ecccd'#127'>'#159#135#195#225'P'#8'$'
+ +#208'n'#183#145'w8'#240#225#238#14'r'#169#176#246#157'='#187'yv'#6#141'F3'
+ +#208#135#226#18#2']2'#183#183#248#248#31#2'"/X'#166'6'#159#15#175#14#14'F'
+ +#250')'#233#242#251#17#2'"'#170#251#251#177'>JL'#128#137#136#240'9'#169#232
+ +'t'#248'l'#179#225'1'#148#195#225#177'>'#188#18#173'V'#139#163#163'#'#196#227
+ +'q'#4#2#1#222#10#133#2#4'A@('#20'B6'#155#133'^'#175#231#191'^'#175#151#251'E'
+ +#163'Q'#254#140#142'%(KD$'#151#203'A'#173'VC'#165'R'#193'd2!'#204#178#156#157
+ +#157#197#242#242'2j'#181#26#154#205#166#228#211'j'#181'P'#173'V!'#7#161#247
+ +'&'#145'H'#224#228#228#4'>'#182',='#30#15#207'xff'#6#229'r'#153#247#211'f%'
+ +#130#193' '#12#6#3'*'#149#138'|'#17#202#232#219#249'9^'#175#172#160'z}'#141
+ +'gBG'#219#180#179#131't:'#13#173'R'#137'*'#11'h`'#130#160#198#208#178'a'#242
+ +'\\'#160#194'*'#146'%'#162'c'#1#222'_^'#142't'#252#193#154#127'w'#23#186#197
+ +#197#142#161'['#133#134#237#250'X,'#214#231'KC9??'#223'/2'#14#10#247#211'j'
+ +#197#241#241#177'd'#179#178#251#233#233'i'#168#21#10'>'#172#132#217'l'#198'b'
+ +'7'#9#167#211#137#169#169')'#254'_'#214'>'#161'*'#158#239#239#247#217'2'#153
+ +#12'_'#4#145'H'#4'n'#183#27'[[['#146#0'qxx('#205#161#172'J'#136'T*%'#189#240
+ +#8#10'X*'#149#176#182#182#134#213#213'U4'#26#13#238'#Bs)'#210#217#140#172'}y'
+ +#16#148'V'#255#155#158'{'#187#221'.'#149#223#139#223#239#231#175'|Z'#238'.'
+ +#151'K'#178#211#188'loo'#255#21#161#128#239'0'#26#18#24'$B'#27'v'#144#189#247
+ +'\'#146'=\'#195#14'3'#202'xP_'#171'gi'#203#22'y'#170'D'#18'i'#13'9'#163'Eha'
+ +#20#139#197#129'}'#195'*!'#155'x'#246's'#145#205#189'=|'#186#186#194'[v'#12
+ +#235#134#136#188'd'#27#239#215#194#2#207'|\%$'#176#190#190#142#165#165#165
+ +#142#15'}'#182#208#23#139#241#244#20'_on0'#12'}'#183'='#196'h4'#254'c'#163#10
+ +#232'x'#160#216#19#227#15'#V'#23'UL'#21'C'#252#0#0#0#0'IEND'#174'B`'#130
+]);
+LazarusResources.Add('TRESTDWjClientLAMWServicePooler','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#25#0#0#0#25#8#6#0#0#0#196#233#133
+ +'c'#0#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28
+ +#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#2#219'IDATx'#1#189'VMK[A'#20
+ +'='#239'1V#$1*'#6#212#248'MC'#187#210'U'#139#217'ji7'#186#232#182#20#236#162
+ +#27#215#129'n'#138#136' '#20#23#18#232#178#212#254#3#193'UA'#23#10'5'#216#133
+ +#232#174'+'#193#207#141'&F'#19#204#135'Z'#210's'#199#228#145#164'I|Q'#241#192
+ +#205#188#153'73g'#230#222'{'#238#139#17#12#6#179#173#173#173#216#223#223'G*'
+ +#149#130']'#248'|>466V'#157#19#137'D077g(!8\^F`e'#5#29#176#143'-'#174#139'MN'
+ +'j'#178'J'#200'f'#179#186'Ur'#131'7$x'#134#218#208')'#167'\Z'#130#143'D'#183
+ +#193'L&'#147'p'#226'n'#240'p'#173#29#152'x'#4'<'#10#137#146#159#143'~?'#234
+ +#234#234'P+'#156'N'''#250'm'#204#211'$^'#175#23#14#135#3#233'tZ'#167'roo/'
+ +#206#206#206#160#148'B&'#147#129#196'M'#210#213'4M='#214#220#220#172#23'_^^'
+ +#194#14'Ta'#167#175#175#15#231#231#231'p'#185'\'#240'x<'#250#164#178#233#213
+ +#213#21'zzz'#176#182#182#134#129#129#1'lnn'#162#173#173#13'vQD'#178#187#187
+ +#11#195'0t{}}m'#145#212#215#215#227#232#232#8'n'#183#27''''''''#21'7'#19#241
+ +#133#195'a'#140#141#141#253'O'#242'wo'#15'i917v'#176'/'#4#238#134#6#164'b1'
+ +#24#28#143#179'/d'#145#139#11#237'2'#23#201#211#241'8T'#206'my'#136#176#5'K'
+ +#212'O!'#145'&'#153'%I''j'#192#241#177'n'#190#169#27'G'#172#175#175'['#175'Z'
+ +'ZZ'#176'Bq'#11#134#135#135'u{'#239#20'N'#218#16#164#194'=!Y'#23#8#4#172#190
+ +#184'jhhH'#187'Kb'#244' $'#133'888'#208#164'###E'#227#154'd'#153#230'*Y'#240
+ +#138#150#175'i!9!'#253#31#165#150'D'#180#157#12#250';&C)'#164'"'#151#171#202
+ +#154'd'#148#22#167'}mjBfp'#16#169#213'U'#188#200#145#204#208'~Q'#27#254#254
+ +'bm'#127'g'#178'H)'#15#226'vX'#129#255'B'#177#189#158#154#210'Z'#248#180#184
+ +#136'Y'#18#10#254#208#26#152#206#165#16#13#217#133#21#19'3'#183#233#22'U-'
+ +#202#246#179#172#228#17#163'^D'#140#226'*'#209#139'|A'#165'*'#148'#'#175'J'
+ +#242'd{'#27'!n<=?'#143'm>o'#132'B'#214#164'8c'#208#222#222'n'#21'Q)3Bl'#151
+ +'D'#187#235#144#22'a,'#154'x'#155#207#19#19'7'#236#221#221#214#164#188'k'#228
+ +#6#249#255#1'J'#217'OLSR'#206#224#131#151#245'j||'#28'3'#11#11#186#2'?e`5'#1
+ +'M*'#180#212#172'D"'#129#211#211'S}'#139#154'b'#210#213#213#133#13#230#245'{'
+ +#150#130#223#211#211#248#201'A'#201#172#183#185#27'~'#160#205#236#236'@'#177
+ +#234#230'7'#22'"'#209#196#20#19#197#22#137#168#178'ct'#20'a~'#184#164'D<'#231
+ +'`'#130#246#163'`'#210#203'2'#11#229'p'#130'h4Zq'#243'j'#239#30#28#255#0#243
+ +#179#8#200#5'XCy'#0#0#0#0'IEND'#174'B`'#130
+]);
diff --git a/CORE/Packages/Lazarus/Connectors/JClient_LAMW/restdwjClientLAMW.pas b/CORE/Packages/Lazarus/Connectors/JClient_LAMW/restdwjClientLAMW.pas
new file mode 100644
index 000000000..f841ac435
--- /dev/null
+++ b/CORE/Packages/Lazarus/Connectors/JClient_LAMW/restdwjClientLAMW.pas
@@ -0,0 +1,22 @@
+{ This file was automatically created by Lazarus. Do not edit!
+ This source is only used to compile and install the package.
+ }
+
+unit RESTDWJClientLAMW;
+
+{$warn 5023 off : no warning about unused units}
+interface
+
+uses
+ uRESTDWjClientLAMWBase, uRESTDWjClientLAMWReg, LazarusPackageIntf;
+
+implementation
+
+procedure Register;
+begin
+ RegisterUnit('uRESTDWjClientLAMWReg', @uRESTDWjClientLAMWReg.Register);
+end;
+
+initialization
+ RegisterPackage('RESTDWJClientLAMW', @Register);
+end.
diff --git a/CORE/Packages/Lazarus/RESTDataWareComponents.lpk b/CORE/Packages/Lazarus/RESTDataWareComponents.lpk
index 119386776..74e474c38 100644
--- a/CORE/Packages/Lazarus/RESTDataWareComponents.lpk
+++ b/CORE/Packages/Lazarus/RESTDataWareComponents.lpk
@@ -364,16 +364,13 @@
-
+
-
-
-
-
+
diff --git a/CORE/Packages/Lazarus/RESTDataWareComponents_LAMW.lpk b/CORE/Packages/Lazarus/RESTDataWareComponents_LAMW.lpk
new file mode 100644
index 000000000..f2f774b85
--- /dev/null
+++ b/CORE/Packages/Lazarus/RESTDataWareComponents_LAMW.lpk
@@ -0,0 +1,352 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CORE/Packages/Lazarus/RESTDataWareComponents_LAMW.lrs b/CORE/Packages/Lazarus/RESTDataWareComponents_LAMW.lrs
new file mode 100644
index 000000000..caeac6011
--- /dev/null
+++ b/CORE/Packages/Lazarus/RESTDataWareComponents_LAMW.lrs
@@ -0,0 +1,724 @@
+LazarusResources.Add('TRESTDWUpdateSQL','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#25#0#0#0#25#8#6#0#0#0#196#233#133
+ +'c'#0#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28
+ +#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#2#229'IDATx'#1#189'V=H[Q'#20
+ +#254'b'#210'IL\'#173#21#156'D'#156#164#182#137#208#161'Jl)8Dp'#214#16','#8'.'
+ +#234'R'#130#139'8v'#138'T:'#216#161#26'\['#255'('#8#197#18#201#212#8#22')'#20
+ +#173':('#154#16'('#136'&'#161#132#20#154#158#239#240'^'#200'O'#19#222#16#243
+ +#193'y'#247#220#223's'#207'w'#239'='#231#217#242#2#8#14#15#15'qss'#131'z'#160
+ +#181#181#21#189#189#189#170#219#8#26'Y^^Fss3'#218#219#219'Q'#15#164'R)$'#147
+ +'ILNN'#170#17#7'=hkkCww7'#234#5'n6'#157'N+;'#132#131#20#181#180#180'T'#12'\Z'
+ +'ZBOO'#15#18#137#132#186'oR'#217#213#213#133#147#147#19'm3'#193#190#177#177
+ +#177#10'C'#230#156#166'j'#187#225'NNOOqyy'#137'h4'#10#187#221#174#139#199'b1'
+ +#213'wvvpvv'#166#253#219#219#219#168#133#170'F'#174#175#175#145#203#229'T'
+ +#239#235#235#211'z6'#155'E&'#147'Q'#157#156';'#157'N'#237'w'#185'\'#168#5'G'
+ +#181#142#217#217'Y'#236#239#239#171#219#148#163#163#163#194#197'p'#187#221
+ +#170#147'fz<<<'#140'Z'#176'E"'#145'<]'#174#215#205'2'#17#143#199#209#209#209
+ +#129#193#193'A'#155'z'#146#28#31#135#221#194#196#152'HZd'#200#194#216#223#252
+ +'D"'#170#171#17#143#200#3#11#19#227'F'#217'oa'#236#149#200'_CoB'#3#160#158'|'
+ +#22'qY'#24#252#21#214#145#18#241#22#27'y'#14'kt'#153#24#181'0'#166#225't5'
+ +#238'L>'#138'0z'#165#141#210'<'#159'+'#163#14#163#143#183'+_'#182#0#199#240
+ +'j'#167#248'8El'#18#129#157#199#199#224#171#243#23#27#225#21'~'#221#217#137
+ +#135#3#3'8'#216#219#131#239#252#28'a'#9#128#143'GF'#240']'#244'{'#210#246'K'
+ +#242#195#185#232's'#18#244'F'#139#12#172#200#194'o'#215#214'J'#30'3'#31#226
+ +#212#212'T'#193#136#210#245'F$0='#141#205#205'M<'#242#249#240'J'#234'/'#231
+ +#231#241'M'#30#19#147#207#31'1'#238#147#246#242#24#165#158#254'''R0'#166#21
+ +#27'UOx'#179#184'K'#191#223#143#173#173'-]'#152#185' xq'#129#247#139#139'x*'
+ +#6'k!'#24#12'ji'#230#17'&['#150'%F'#200#233#151'pX'#27#166#197'#'#26'b'#190
+ +#152#19#10#137'''E'#11#242#252#248'^'#250#13'O'#142#133#127#175#215#171'A'
+ +#211#4#219'vww'#11'u'#165#139#135#27#10#133'0"g'#192#197#233#197#237#237#173
+ +'R'#180#177#177#129#176#177#129#153#153#25#188#16#175'~'#202#24#158#11#207
+ +#146#145#216#244#128'g'#193#178'<'#9':'#184'h@'#148'O'#129#0#18#162'_'#173
+ +#174'"*'#245#15'Rr'#199#7#226#21#17'ZX'#208#27'C'#18#204'=;'#13#138#184'8S'
+ +#129'I'#145#199#227')9'#19#253#145'x'''#185#227#190'p'#239'D%8-e'#232'?8A'
+ +#228'YQ'#255#10#233#150#5#221'CC'#133#252#178#190#190#142#137#137#9'e'#167
+ +#240#183#194#193'w'#249'K'#132'F'#224#31#196#234'6'#161#243#189#206'}'#0#0#0
+ +#0'IEND'#174'B`'#130
+]);
+LazarusResources.Add('TRESTDWBatchMove','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#25#0#0#0#25#8#6#0#0#0#196#233#133
+ +'c'#0#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28
+ +#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#1#231'IDATx'#1#205'V='#206'AA'
+ +#20'=DKT'#26'$V'#128#10#165#194#2'D/l@D''Q'#176#0#137#196#6'H,'#128'NC'#168
+ +'5D'#165#144#160'P'#251'['#192'|s&y/!'#239#205'LC'#190#147'L'#226#205#204#185
+ +'?g'#238#189#17#16#18#248'"'#2#18'A'#252#0#255#223'I'#189'^'#183#186#23'2]X'
+ +#175#215#152#205'f8'#159#207#184#223#239#136'F'#163'('#151#203#174#3#238#167
+ +'R)'#189#17#225#131#219#237'&'#154#205#166'('#22#139'b'#181'Z'#185#251#167
+ +#211'I'#140'F#'#181#207#243#233't*t'#208':'#217'n'#183#158#6#232#156'g'#221
+ +'n'#151#6#196'`0'#16'&'''#1#231#7#165#24#143#199'o'#146'x'#201'@'#233'(a6'
+ +#155'U'#203#185#227#199'e'#9'+'''#189'^'#15#243#249#28#149'J'#5#241'x'#28#207
+ +#231#19#139#197#2#233't'#26'<'#211#193#196#165#143#208'n'#183#195'~'#191#199
+ +'d2y#'#151'J%'#180#219'm'#240#156#17'{'#193#134'K'#4#153#226#245'z'#245'4'
+ +#194#168'x'#238#7'['#174'*a^'#172'V'#171#200#229'rn'#202#155#205#6#135#195#1
+ +'&'#216'pU3F"'#17't:'#29#228#243'yj'#136'D"'#129'F'#163#1#27#216'pU&'#225'p'
+ +#24#195#225#16#175#215#203'M'#149'd'#238#155'`'#195'u'#229'b'#186#181'ZM'#165
+ +#204'oV'#136#236#19#163#19#27'n'#136#149#147'L&UE,'#151'K7'#146'B'#161#160
+ +#190'u#'#195#150#171#250#132#13#214#239#247#17#139#197#220'h'#142#199#163#146
+ +'A'#142#15'm&&'#174#219#140#14#129'u'#205#178'c'#4'\Nws'#8'>'#30#15'%'#1';'
+ +#218#11#159'\'#7#244#1#221#220#145'r'#8'IP'#179#202'o'#190#201'i,L'#179'K;'
+ +#234'3'#153#140#26#233#173'VKE'#199#199'%'#24'1'#179#188'\.'#144#19#25'&h'
+ +#157#240'aiP'#142'z%'#27#23'A'#201#232#220#244'^'#14#222#222#228#19#142#206
+ +#182#198'<'#29'|>'#252'7'#240#179#127'+?'#193#31'<\6'#222#245#150#238'q'#0#0
+ +#0#0'IEND'#174'B`'#130
+]);
+LazarusResources.Add('TRESTDWBufferDB','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#25#0#0#0#25#8#6#0#0#0#196#233#133
+ +'c'#0#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28
+ +#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#3';IDATx'#1#205'V=H[Q'#20'>'
+ +#137#129'.ML\:$'#17'A'#164#166'P+'#29'R(B5'#234#172'F'#236#164'(t'#23'W'#187
+ +'D'#161#130#22#7#139'n'#133#198'('#212#169#24#233'X'#5#221#146#20#252#129'J'
+ +#234'P*'#152#236'6'#175#208#169'}'#253#190#235'{'#215#27'm'#193#8#149#30'8'
+ +#220#188'{'#191'{'#190#243#157'{'#238'{'#241#216'0'#249#135#230#129'y'#165'F'
+ +';==U^'#139#249'.Nd'#179'YYXX`'#6'z'#174#169#169'IR'#169#148#26#183#183#183
+ +#21#201#216#216#152'\'#139#132#155#15#14#14#20'Q0'#24#212#243#199#199#199'25'
+ +'5'#165'H'#232'5'#155']'#131#129#200'noo'#183#211#233#244#149#247'\R'#242'7'
+ +#155#152#152'P'#10']U'#166#202#171#152#199#236#174#253#253'}U2d'#171#3'1('
+ +#221','#21'1'#196#18'C'#172';G'#28#199#206#206#206's'#2#26'I'#184#184#210#213
+ +'%'#15'1'#210'~ X'#29#206' wx(mmm'#18#14#135#165'P(HCC'#131'x'#202'e'#249'9='
+ +'-1'#224'J'#12#222#215'''wFF'#20'i"'#145#144'J'#165'";;;2>>'#174#146'"'#135
+ +':'#147#215#169#148#253#5#199'c'#250'P0holl'#216'GGG'#218''''''''#237#151#23
+ +'p'#239#225#131#131#131'U8'#250#252#252'|'#245#153'T'#224#239#224#1'G"'#159
+ +'?A'#246#242#242#178#196#227'q'#165#164'X,*5^'#7#23'p'#148#208's'#185#156',.'
+ +'.*'#172'eY'#10'kv'#161#190#140#12'\'#242#251'%'#15#23'7P '#22#202#243'q}]'
+ +#253'6'#177'9'#16#151#12#156#31#251#136'+'#131#192#239#196'pM+'#185#187#186
+ +#170'2'#161#149#17#248#13#234#236#205'd'#228')'#158#185#165#140#0'Y'#140#183
+ +#187#187'%17'#167#3'e'#150#150#196#130#138#251#8#254#200#9#202#170'X'#184#188
+ +'UJ'#152'I,'#22#211#147',O'#184#181'Uz'#29#2'5'#7'g'#16#226#204'L'#227' u'
+ +#215'\'#235#149#243#210'k%'#180#205#205#205#179'R'#160';HB59'#167#230#226#140
+ +'e*A'#205'yV'#245#245#245'l'#26#133#163#189#130#223'3'#240#161'?'#145#176#150
+ +#17'l'#240#128#228'3Hx'#128'y*`'#9#241'\'#193#161#231#176#30#131#135#129'a+['
+ +#168'@'#17'D'#12#28#134#186#214#158#30#177#177'V'#216#218#146#199#151'H'#176
+ +'0'#132#250#135#141#133#2'|`vV'#250#7#6#212's?'#252#215#204#140#212#173#172
+ +#200'3'#3#199#236'_'#160#132#207'q'#166'n'#25#187#145#192#238#238#174#198#232
+ +#238'2?*'#170#211#156#210#185'Fe,'#205#197#143'O'#209#221'c`K'#165#146#194'_'
+ +'*W'#222'qB#p'#182#1#27'"'#3#133#204#144#23'7'#18#137#168's'#249#224#224'\,'
+ +#215'y'#135#220'7'#20#207#203'l'#14#173'$`l'#226#200'<'#242#249#188#6'r'#19
+ +'3tq'#230#30'*'#164#18':'#19';99'#17#211#20#9'_t'#21'9'#191#197#28#189#152
+ +#227#6':U'#240#22'766J'#212#193#234#210#192#163#209#168'"PJ'#217'<'#192#135
+ +'B'#161'j'#146'$'#190'r'#223'FG'#207#2#227#249'+'#222#162'o'#247#246#164#163
+ +#163'C|>'#159'*Css'#179#12#15#15#203#147'tZn9o'#222#239#192'?'#192'WtmmMZZZ'
+ +#148'R&L'#178'd2'#169'I<'#255#229#31#137#235#216#141#144#220#136#253#6#181'"'
+ +#245'X'#24'*'#224#159#0#0#0#0'IEND'#174'B`'#130
+]);
+LazarusResources.Add('TRESTDWClientEvents','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#25#0#0#0#25#8#6#0#0#0#196#233#133
+ +'c'#0#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28
+ +#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#1#244'IDATx'#1#221#150'=KBQ'
+ +#24#199#255'E'#235#21'IZ2'#194'U'#23#181#165#156#20'R'#154#4#137#214#6'!'#218
+ +'B'#29'jp'#241#19#136#186#182#164#159'@'#28#203#197#161#161'M'#135'P'#16#7
+ +#145#12'\|'#185#165#136#131#245'<'#183'k'#229'U'#175'z'#17#131'~'#240'p_8'
+ +#231#252#239'y'#222#238#217#248' '#160#160'P('#160#221'nc'#25#244'z=l6'#219
+ +#196#251#13'F)r'#27#12'BH$`'#196'r'#136'd'#175'4'#247'2'#22'S'#23#225#29#212
+ +#237'v'#152#161#141'''2K>?'#182'#'#214#216#252'='#136']$@;{'#242#26'J6'#177#6
+ +#214'"'#178#165'|q'#31#14'C'#167#211'A'#11#162'('#194#179#136#136#219#237#134
+ +#209'hD4'#26'E'#181'Z'#133#217'l'#6#231'F'#191#223#151#158#29#14#7'j'#181#26
+ +#186#221#174'4'#222'`0'#160#215#235'!L'#31'W'#175#215'1'#141#153#238#26#12#6
+ +'('#151#203#168'T*'#146#200#232#153#235#161#217'lJ'#187'e+'#22#139'H'#167#211
+ +'Pc'#166#8'g'#9'/'#200'4'#26#141#239#172')'#149'J'#210#226#130' '#160#213'j'
+ +#161#211#233#192#235#245'B'#141#177':'#201#229'r'#200'&'#147#208#209#2#163
+ +#173#11'r|'#222'Dq'#236'Y'#9#207#145'b'#226#247#195#229'r'#253#8#16#19'19I'
+ +#165#164'|'#215#194#11#217#144'D'#148#252#159':'#249#155'b'#204#146')C'#203
+ +'1:'#196#10'E<'#242#162#243#184'#KS'#138#239'P'#199#221#166#172#12#168#140
+ +#213#228'.n'#233#207'>'#31'."'#17'X'#173'V'#156'S1'#222#168#140#223#130#6#216
+ +#165'N'#167#19#143#161#16'N'#233'>'#148#201'`'#200#133';'#227'o'#170'I'#132
+ +#235#193#138#175'8'#29#145#29'POSC'#147#187',d&'#147#9')'#250#250'k'#186#223
+ +#167#223'nYnA'#211#24#219#9#247#170#18#230#7#158'k'#250#138'\u'#22#8'Hs'#184
+ +';'#31#147#171#184#241#236'M'#17#155'3TF'#176#253#178'%'#135'QWdC'#203#2#157#205'S'#202
+ +#197#131#193'z{'#216#179#233#154#207#3#203'%'#239#129'{'#249#177'-='#183'7'
+ +#231#23#0#0#0#0'IEND'#174'B`'#130
+]);
+LazarusResources.Add('TRESTDWClientSQL','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#25#0#0#0#25#8#6#0#0#0#196#233#133
+ +'c'#0#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28
+ +#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#2#162'IDATx'#1#189'VM'#136'RQ'
+ +#20'>'#150#129'!'#254'@'#204#194'T'#212' '#144'Z'#168#139'~6'#166#210#207'Jq'
+ +'('#218#142#155#200#165#227'b'#168' '#144#161'h'#233#12#4#3#6#130#181#143'q'
+ +#25#25'('#173'r'#145'?'#155'6A8'#161' '#180#17'_'#20'n'#154#206'w}O_'#226#204
+ +#220#24#199#15#206#187#231#221's'#206'='#231#158'{'#222#185#207#176#207' F'
+ +#171#213#162#193'`@'#139#128#221'n'#167'`0(x'#3#0''''#133'B'#129#204'f39'#157
+ +'NZ'#4#134#195'!'#245#251'}J'#167#211#194#137#17';p8'#28#228#247#251#15'4'
+ +#170#215#235#255#188'['#173'Vr'#185'\d'#177'X'#230#234'#XEQDv'#0'#Rt'#144#178
+ +#22'U'#177'X'#20#188#205'f'#163'p8L'#249'|^'#208'avp'#164#165#255#20'I'#128
+ +'w,'#242#12't:'#29#242'x+'#215#3'z)'#189#19#148#240#11#238'MWVW'#233'#w'
+ +#206#31'L+|'#31#220#224#17#231#181#227#245#138'f'#23#141'F'#201#201'z'#223
+ +#153'G'#135#181#178#236'%'#247'2'#189'\'#235'q'#181'Zm'#226'D'#164#235#9#11
+ +#30#228'r'#244#149'?'#158'd2I'#23'Y'#25#163#6#24#163#3#7#2#1#254#190#170#212
+ +'l6'#201#203#11#191#222#221#165#199'l'#11#30#178'o<'#143#177#193':f'#221#5'('
+ +#156'\'#224#168#203#229'2'#189#217#219#163'w'#155#155#244#153#163#152#7','#22
+ +#139#197#200#231#243#137#247'R'#169'DWS'#169#137#252#17#219'cGgy'#220#153'u'
+ +#2#1#182#185#193#252'o^'#232#28#19#240#129#233#153#206#9#218'<'#22#174#169'A'
+ +#192#174#221'n'#139#157#2#218#213#134#179#171#232#236#132#147#21#206'/'#162
+ +'tg2'#148#229#180'iQ'#223'g'#222#169#139#20's9'#158#203#176#158#134'3'#236#16
+ +#169'$'#245'l'#1'\'#226#183'uN'#12#156#223#253'z($'#162#248'B'#227#138#185'L'
+ +#243#191'nT'#140#162'.'#162#161#192#180#161#202#158'2=g'#186#196't'#151#201
+ +#197'g'#20#10#133#198'?'#18#175#178'Y:'#191#189'-'#170#229'0'#160#253#24'f'
+ +#162#156#7#148#244#207#245'uz'#184#181'5'#253'['#129#224'$'#127#137'h'#25#248
+ +#11#9#13#245'*'#28'l'#137#25#0#0#0#0'IEND'#174'B`'#130
+]);
+LazarusResources.Add('TRESTDWContextRules','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#24#0#0#0#25#8#6#0#0#0'++'#238']'#0
+ +#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28#233
+ +#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#2#146'IDATx'#1#237'VMKba'#20'~'
+ +#174#24'C'#145'QJP'#147'R'#173#194'Y'#21'H303'#171'Qh`'#160#250#9'nf['#173'Z'
+ +#214#31#136'j1'#235#241#15#8#230'Zp'#233#232'&7"'#136#162#248#181'PP'#209'QI'
+ +'Q'#231#156#147'^'#196#185'u'#149'fv=p'#184#247'='#239#185#231'9_'#247#190'W'
+ +#25#16#160#131'Z'#173#134'h4'#138'i'#177#188#188#140#221#221']'#185'W'#244#8
+ +'2'#153#12'~'#238#237#225#11#145'L'#139':I'#241#244#20#223#175#175#255'&`'
+ +#135#30#143#7#151#151#151#178#254'qt'#132#175'ww'#152#21#191'H'#222#221#223
+ +#195'0'#185#177#181#181#5'EQT'#130#254#12#145#143#195#138#199#210#26#199#149
+ +#172#240#249'|'#216#220#220#196#237#237#173#232',x'#25#212#12#184','#199#199
+ +#199'B2'#2'g'#242'RH'#15#184#238'n'#183#27#193'`P'#148'\'#30'v~qq'#129#243
+ +#243's'#152#205'f'#204#138'z'#189#14#151#203#245'X'#162#155#155#27'q'#198#224
+ +'q\YY'#193#201#201#137'j\'#169'T'#208#237'v177'''#215'f'#179#137#157#157#29
+ +#132#195'a'#25'I'#206#154#197'f'#179#201#213'b'#177' '#155#205#10#129#148#136
+ +#149#220'\'#6#207#239#184#243#249#249'y'#17#175#215#11#147#201#132'v'#187#141
+ +'N'#167#131'\.'#135'F'#163'!'#4#171#171#171'('#149'J"kkkBd'#181'Z'#229'y!'#24
+ +'E'#161#133'T*%'#25'p'#0#129'@@'#156'r'#150#236#168#215#235#201's'#213'jUl'
+ +#251#253#190'D'#30#139#197'd'#143'!%:'#162'Y'#127#138#224#237#226'"'#140'T'
+ +#207'O'#219#219#170#206'L'#247#245'x'#28#142#245'u4'#202'e'#188'!'#221'g'#210
+ +#153#150#150'd'#191'A'#246'xx'#144'{%'#157'N'#15'B'#161#16#202'd'#168#133'2E'
+ +'k'#26#146's'#227'l'#145#8'\'#148#133#30#242#156#17#13#141#209#239#247#227
+ +#224#224'@'#148'WWWr'#229#146#24#12#6'8'#157'ND'#10#5')'#225#225#225'!'#28#14
+ +#7#226#20'y'#152'2~'#143#233'`h'#181'Z'#234#130#155#183#176#176' '#141#228
+ +#134'%'#147'ID('#226'D"!'#19#195#176#219#237#200'ml`Z'#24#185'i'#249'|^'#22
+ +#197'bQ'#132#27#202#239#6'7s'#127#127'_'#214'<'#150'#'#187'Y'#160#184#129#129
+ +'Sc'#195'C'#226'"'#209#138'5N'#226#198#243'P{'#192#14#172#26#6#131#161'^'#139
+ +#160#128#233'a,'#12#217'&'#161#12#245#186#167#145#30#193'k'#6#186#4'Ez'#137
+ +#242#26#159#137#231'2X'#130'>'#248'\'#182#146'o'#227'G'#250'L7'#206#206'`'
+ +#159'0x*'#3'/'#201#7'h'#151'u'#4#222#251'M'#135#254'7'#250'2'#171#7#14#203
+ +#191#194#248'o'#203#127#199#31#254#137'C'#161'*d'#4#30#0#0#0#0'IEND'#174'B`'
+ +#130
+]);
+LazarusResources.Add('TRESTDWMassiveCache','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#25#0#0#0#25#8#6#0#0#0#196#233#133
+ +'c'#0#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28
+ +#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#2#139'IDATx'#1#189'V=o'#26'A'
+ +#16#29#192#5#18#31#129#134#130#143#19'P'#1'A@'#131'H'#232#172'H'#169#210'X'
+ +#238#237#138'P'#208'Xi]'#224#252#129#224#150'4'#193'? 4t'#161#160#161#136#237
+ +#2'*S !'#4#7#162#131'p'#132'2'#206#204'h'#185#240'q'#7'A9'#229'I'#163#189#219
+ +#221#219'7'#239#237#236#221#153#158#17#128'h'#183#219'0'#155#205#224#24#184
+ +'\.H'#165'R{'#231#152#8'DR.'#151#193'f'#179#129#207#231#131'c0'#159#207'a2'
+ +#153'@>'#159#223'O'#210'j'#181#158#7#131#1'D"'#17#168'T*'#224't:'#225#24#140
+ +'F#H$'#18#144#203#229#244'I'#26#141#6';'#214#233't '#147#201#128#195#225#224
+ +'k'#202#242'o'#161'('#10't'#187']('#149'J'#154'$'''#171#27'Z'#148#8#170#213
+ +'*'#248#253'~'#142'c@V'#147#237'Z'#214#177#146#225'p'#200#178#163#209'(1'#27
+ +'j'#157'j'#215#227#233')'#204#206#206' '#130'A'#10#140#180'N'#181'+'#131#241
+ +#229#225#1#20'\'#204#127'}m'#184'uL'#242#141#6'Pj'#12'C'#190#188#228#1'R'#16
+ +#139#197'`'#177'Xpv'#227#241#24#236'v;_'#147#165#20'T0tOI'#165#211'i'#168#215
+ +#235#16#12#6#249'8'#208'\:{*'#201'['#140'{'#145#197#228#226#2#20#180'm'#142
+ +#217#144#130'~'#191#15#181'Z'#141#237'k6'#155'`6'#155#193'b'#177#192't:'#5
+ +#183#219#205#227#4'<'#10#188'''4&'#203'2'#20#10#5#245'p'#155'W'#18'eAD'#214
+ +#141#209#186#199#187';U'#190#213'j'#229#172'h'#17'I'#146#160#215#235#241'i'
+ +#167#190'd2'#201#5#18#14#135'Y'#1#129#200#215#193'J'#190'bP'#29'E5'#172'[.'
+ +#151','#157#144#205'f'#249':'#20#10'A '#16#224'}'#163#136#199#227#220'z'#189
+ +'^N'#196#227#241#176#26#154#163#146#156'c'#212#169'24'#172#147#176#149'`'#19
+ +#146#152#243#19#227#181#198#24#136#181#160#209#248'CB'#152#11#203#162#162#149
+ +#5#185'^]'#141'D'#251'Jg'#156#158#255#5'kv'#145'E'#14'A'#176'm'#221#11#157'E'
+ +#190#195'~P'#210'oV$'#180#129'/'#197'C'#247#176'k'#221#161#19'r'#14#135#149
+ +#152#233'{'#160'\]'#177#146#204'Z'#22'2'#24#7#182#235'='#190#2#138#180#248
+ +#237#237#142'uzJ'#158'D2z'#216#176'k'#213#249#17#137'>'#145'u77'#27#214#25'b'
+ +#215#250#192#135'bq'#199':#p'#178#221#177'm'#157'!'#213#165'5a'#221#186'C'
+ +#138#244#236#162'='#163#202#213'%!'#144'u'#159#241#5#247#132#138#180'>]?0L'
+ +#160']'#133#212#183'@'#219#223#137'?'#25#211#234#151'H'#15#255#250#171'D'#31
+ +'-'#248#31#248#13'#K6'#213#29'^7'#231#0#0#0#0'IEND'#174'B`'#130
+]);
+LazarusResources.Add('TRESTDWMassiveSQLCache','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#25#0#0#0#25#8#6#0#0#0#196#233#133
+ +'c'#0#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28
+ +#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#3'YIDATx'#1#189'V=LSQ'#24'=-'
+ +#14'$P'#10#137#146'PJ'#249'11m%'#252#196'`'#149#5#26'"+!.N'#128#3'20'#0#174
+ +#12#165'qq'#18#186#152#224#2'l.'#176#176'Yc'#23#6#129#24'`'#145#129#132#0#253
+ +#161'[K['#187#152#128#223#185#188#247'|`'#219#216#216'x'#146'/'#247#190#222
+ +#159#243#157#243#190#251'n-W'#2#8#246#247#247#145'N'#167'Q'#14#234#235#235
+ +#209#211#211'Sr'#142#133' '#201#242#242'2jjj'#208#220#220#140'r'#144#201'd'
+ +#144'L&155U'#154'doo'#239#234#236#236#12'n'#183#27#171#171#171#168#171#171'C'
+ +'9'#136#199#227#232#234#234#194#228#228'dq'#146'H$'#162#28';<<'#132#207#231
+ +#131#205'fS}f'#249#183#200'f'#179'8::'#194#226#226'bA'#146';'#250#3'7%'#193
+ +#198#198#6#156'N'#167#138'r@'#171'i{!'#235#148#146'h4'#170'd{<'#30'2W'#212':'
+ +#195#174']'#191#31#233#209'Q'#184'%'#168#160#146#214#25'v'#249'$Vvv'#144#149
+ +#205#156#243#243#21#183'N'#145'|'#226#128'H'#245'J'#196#198#199#213#0#21'x'
+ +#189'^'#228'r9'#149']"'#145'@mm'#173#234#211'R'#6#11#134#207'L'#170#175#175
+ +#15#225'p'#24'mmm'#234'8p.'#207#158'A2,'#177#173'e'#145#28#27'CVl'#203'H6Tpr'
+ +'r'#130#205#205'Me'#223#214#214#22#172'V+'#170#170#170#144'J'#165#208#208#208
+ +#160#198#9'9'#10#234#157'p,'#22#139'azz'#218'8'#220'V]bL#'#162'u'#9#177'nwm'
+ +#205#144'_]]'#173#178#226'&.'#151#11#199#199#199#234#180#243#183#238#238'nU '
+ +#29#29#29'J'#1'Ar3'#148#146'u'#9#214#145#167#128'u'#249'|^I'''#250#251#251'U'
+ +#191#189#189#29'---'#234#189'1:;;U'#235'p8T"'#141#141#141'J'#13#231#24'$'#207
+ +'%'#194#172#140#2#214#185#164'u'#225'&\'#218#156#31#18'O'#11#140'A'#219#11
+ +#145#200'o'#18'"'#163'Y'#230#209#218#152'F^'#172#174#226'Z'#251#164#200'8'
+ +#215'_'#194'd'#23'-'#178'i'#4#183#173#179#23#217#228'+J'#131'I'#15#233'$|'
+ +#129#15#181'E'#219#248#211':]IH'#226#155#148#231#165'T'#204#184#4#19#249'"k'
+ +#207#165'},'#207#159#165'O'#188#151#190#243#182#18#222#7';'#179#179#176'--'
+ +#193'k'#202'B'#183#14#26'ifb'#2'w'#165'l'#7#7#7#241'6'#20#194#132'<'#191#188
+ +#190#138'pqq'#129'{Ri'#173#173#173#128#169'*a'#182#235#149'|'#2#2#220'H'#136
+ +'n['#199#172#190'k'#147#169':'#24#12#170#250#183#219#237#248'87'#167'~'#127
+ +'!'#235#245#131#167#175'1'#219'e'#156#147#160'L'#204'/,('#235#178'&'#235#24
+ +'T'#184'.'#31#204#131#131#3#204#204#204#24#183'!'#201#207#133#216'|'#163#234
+ +'k'#158#153#148'X'#205#178'^'#7#2#200#210':\'#31'J'#152#236'{#*m'#154'5TA'
+ +#194'Gb]he'#197#152#199'OJ@~'#27#146'6fZo'#209#239'x3'#2'bC'#147'l'#202#137
+ +'zuq'#171#7'##H'#157#158#226#190'X'#19#149#231#159#3#3#215#155#200'wL?'#253#4
+ +#19#24#19'u'#163'rN'#252'~'#191#165' '#9#241'N'#188'o'#18#251#204#138'h'#163
+ +'M'#235#175'k-'#207#137'^'#206#195#166'qZ'#233#148#239'Yoooq'#18#226#131'(r'
+ +#136#162'BW'#23#11#196#130#155#222#235#160#3'9'#177#157#5'e'#252'[A'#9#252
+ +#235'_%r'#224#127#224#23'x`'#147#202'WS]'#238#0#0#0#0'IEND'#174'B`'#130
+]);
+LazarusResources.Add('TRESTDWMemtable','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#24#0#0#0#25#8#6#0#0#0'++'#238']'#0
+ +#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28#233
+ +#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#1#177'IDATx'#1#237'V'#191'k'#194
+ +'@'#20#254#174#137'.b*'#136#224#143#10#142#142#226#210#238#149'N'#221#156'uu'
+ +#245'Oqu'#23#156#250#15'T0'#147#208'fr'#144#12#14'"'#152'`'#6#193#31')'#29
+ +#219#222#187#24'1'#16#219'+D'#135#210#15'^H'#238#222'{'#223#187#239'].a'#159
+ +#28#224#24#143#199#216'l6'#136#2#169'T'#10#149'JE'#220'3"'#232'v'#187'H$'#18
+ +'('#20#10#136#2#187#221#14#142#227#160#213'jA'#165#202's'#185#28#202#229'2'
+ +#162#2#21#234#186#174'PE%Y'#146#201'd'#192'a8'#28'"'#159#207'c0'#24#160'T*'#9
+ +#233'4M'#19#133#152#166#137'L&'#131#217'lv'#152#163#241#229'r'#137'F'#163#17
+ +' '#161#185#171#176#10#214#235'5'#250#253'>'#210#233'4'#22#139#5'z'#189#30'b'
+ +#177#24'F'#163#17#226#241#184' '#153'L&"'#129'eY'#152'N'#167'P'#20'%t5'#161#4
+ +#20#152#205'f1'#159#207#197'35'#141#238'IW'#154'SU'#245'0N~'#171#213#10#213
+ +'j5'#148#128#233#186'.6'#210'q'#131#13#195#128'm'#219#161#1#190#156'$'#25#233
+ +'L'#13'%'#212'j'#181#128#212#20#207#24#131'('#133#150#185#223#173#2#164'?'
+ +#217'o'#176#221'n'#133#29#19#20#139'E'#143#192'i6'#161'H$y'#229#230'R'#181#18
+ +#190#239't'#209'u'#143#224#150#219#141'D'#144'/'#218#157#132#175#197#237#3
+ +''''#154#28'%'#196#10#158#185']K8'#191'@'#30#212#250'{'#159#224#1'r'#18#249
+ +#168'K'#248'\L'#162#203#244#224#9'r'#18#153#240#180#149'A'#160#7'u'#252#247
+ +#224'4'#254#192'{@g'#186#141#232'A+'#160#220'*}'#253#141'v'#27'f'#167#3#237
+ +#135' :'#140#217#190#186#239'@'#243'o<'#231'#'#207#205#206#253#219'rv|'#1#152
+ +'}'#186#138#207#222':b'#0#0#0#0'IEND'#174'B`'#130
+]);
+LazarusResources.Add('TRESTDWPoolerDB','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#25#0#0#0#25#8#6#0#0#0#196#233#133
+ +'c'#0#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28
+ +#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#2'WIDATx'#1#189'V;'#139#26'Q'
+ +#20#254#20#139#4'2>'#22#22#22'5([i'#231'ja'#21#220'b'#147#194'JHm'#147'z'#197
+ +#221'2'#219'('#228#15'('#219#165#179'L'#165#141'EXk'#11#11#31#8#235'#'#22'"'
+ +#8#22#190'p`'#193'B'#204'9WFt'#215'd'#174#251#240#131#227#204#220#185#222#239
+ +#222's'#191#243#205'5,'#9' T'#171'UL'#167'S'#200#194#231#243#193'j'#181#234
+ +#246'30'#152#228#231#213#21#148't'#26#14#200#227#143#219#141'@6+'#200'tI*'
+ +#149#202#178#127'v'#6'/'#246#199#175'H'#4#223#137'H'#143#196#200')R'#240'<|'
+ +#144'L'#175#17#7#192'AHL'#252#243#251#230#6'f'#179#25#251'b<'#30'K'#245#19'$'
+ +#157'NG'#200'1'#28#14#11#178#217'l'#134'F'#163#129#193'`'#128'@ :Z,'#22#228
+ +#243'yq'#175#245#145#145#240#154'd>'#159#139'H'#165'RX,'#22'p'#147'<'#235#245
+ +':B'#161#16'F'#163#17'j'#181#26#156'N''Z'#173#22#252'~?'#28#14#7#134#195'!J'
+ +#165#146#20#137#216#147'n'#183#139'`0'#8#175'w%'#228'^'#175#7#173'='#151#203
+ +#137'B'#141'F'#163#176#217'lb'#240'r'#185#140#201'd'#242'$'#197#220'?'#153'L'
+ +#238'^'#137#239#248#24#179#251'{'#216#30#30#240#233#244'T'#188'P)'#29#10#13
+ +#162#26'i'#30'GG'#200#222#222#226#163#193#0#133#158#249#157#149#174#239'ON'
+ +#182#6#227#12'PY'#8#162'M2A'#242#173'P'#128#147'b_'#228#207#207#197'J7'#237
+ +#200#229'r!M'#238#193#208#136#222'L'#194#188'"'#13'&'#188#16#17#178#150'M'
+ +#240#236#185'-'#145'H'#188#30#201'&X ,'#142'x<'#190#213'.H'#238'('#30#151#226
+ +#23#10#205#211'8'#195'w'#138#130'%I'#151#21'e'#160#26#250#170#170'x'#247#232
+ +'?'#236#200#187'\Y'#144'|'#166'pb7~0Y,'#134#220#229#229'V{&'#147'A'#177'XD'
+ +#12#250#208#221#248#6#133#221'n'#127#210#238#241'x '#11#169'='#225#202#206
+ +#210'w'#131'S'#165'P'#218#250#253#254#186'p_'#141#164#217'l'#10#197'h'#21#206
+ +#190'%k)'#12#169':'#225#212#176#238'y'#5#28'|'#191#143'k'#155#216'I9'#239#255
+ +#218'xV'#24#27'b'#129#28#129'S'#165#146#170#248#202'^'#199#27'/'#131#213'A'
+ +#226#250#26'vr'#224']s'#235'c'#165'0'#199#197#197'z'#179'9U'#237'v'#27't>'#16
+ +'~'#245'_'#2#237#180#194#15'oy$'#194'!'#240#23'D1'#229#4#188's7'#175#0#0#0#0
+ +'IEND'#174'B`'#130
+]);
+LazarusResources.Add('TRESTDWResponseTranslator','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#25#0#0#0#25#8#6#0#0#0#196#233#133
+ +'c'#0#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28
+ +#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#2#201'IDATx'#1#237'VKK'#27'Q'
+ +#20#254'&'#198''''#157#168'("X'#27#237'B'#176#10'*'#5'7RPH'#187#18#244#143
+ +#212#199'F'#168']'#185#232#202#141'n'#187'Q'#177#155#174'tS'#176'6'#16'\'#8
+ +'% *'#136#129#20#242#128#218#144#132#188#131#129#164'!='#231#196'L21'#230'a'
+ +#233#174#31'\'#230#204'}}'#231'|'#231#220';'#163#228#8' \\\ '#26#141#162'^LN'
+ +'N'#162#171#171#171#230'<'#133#193'$'#31'WV'#160'noc'#0#245#227#199#208#16'^'
+ +#30#28#8'YM'#146#243#243#243#220#205#212#20'F'#209'8>/.'#226#29#17#213'"1'
+ +#178'D*'#30#135''''#180#246#240#240#16#30#143'G'#228'f'#249#22#137'xvvV7'#207
+ +#136#191#4#19#12#145't'#188'9;'#188#177#177'!'#132'+'#148#130#2#20#155#205
+ +#150'3'#204#205#225')'#26#199#23#242#248#173#205'v'#175#127'xx'#24'n'#183';O'
+ +#192'r'#177#241'u}'#29'&'#147#9#141'"'#28#14'W'#236'7'#155#205#186'w!'#177'X'
+ +',p8'#28#184#186#186'B6'#155#149#176#11#229#201'6'#143'['#173'V'#177'Y'#26
+ +#158#179#182#182#134#163#163'#m'#163#221#221']'#25#227'j'#139#197'b:'#18'C'
+ +#193#240#249'|H'#165'RH'#167#211#240#251#253'hoo'#23#187#173#173#13#251#251
+ +#251'hmmE '#16#144'g('#20'B"'#145#208'm'#196'9'#217#166'c'#192#133#176#188
+ +#188#172'9'#168'#aD"'#17'm'#224#242#242#18'.'#151#11'ggg'#24#31#31#23#239#25
+ +#156#212#142#142#14#196#227'q'#29#9'G'#206'2'#173#174#174#226#228#228'D'#242
+ +#178#183#183'W'#148#203'J/&U'#197'3'#131#1'*'#229'&'#161'('#197#213'==Pooa'
+ +#164'(_'#209'B'#134#218#220',k~'#19'Yy4'#236#220#194#194#2'vvv'#164#143#171
+ +#172#238#234#186#166#246'}z'#26#166#129#226#189#240#139#188#127'^'#225#196#27
+ +#200#217#249#249'y'#201#145'V]'#181#192#194'|'#154#153'A'#231#216#24#130#200
+ +#159#141#193#193#193'|^H'#210'd2)2755i'#5#179#185#185')Qir'#213#2'Ga&'#18#187
+ +#221'.'#155'1'#137#211#233#20'Y'#188'^/2'#153#12'z{{'#209#221#221#173#157#252
+ +#254#254'~'#177#235'&a'#4#131'A'#180#180#180'`ddD'#154'\G'#148#199#137#137#9
+ +#156#158#158'J4\'#157'}}}2'#127#160'DV!'#249'F'#173#252'('#190#161'Vz'#167
+ +#141'R"-'#229#204#199#199#248'@'#143#247#184#15')'#240#165#165'"'#201'kj'#181
+ +#18#207#227#149'>'#5#234#3'k'#127#150#216'u'#203#197#139'r'#21#250#19#208'oX'
+ +#218#223'0'#201#255'H'#132#132'k'#218#129#234#137#231#202#179'R'#155#174'0'
+ +#246'P$7'#212'^'#220#29'L#_'#205'v'#186'_'#174#183#182'`'#170'B'#146#187'{'
+ +#150#207#169#20#9#147'v'#210#158#133#159#12#229#177#191'D'#213#192#234'h'#4
+ +'J'#233'm'#251#15#241#7#9#20'('#29'l'#209' '#228#0#0#0#0'IEND'#174'B`'#130
+]);
+LazarusResources.Add('TRESTDWServerContext','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#25#0#0#0#25#8#6#0#0#0#196#233#133
+ +'c'#0#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28
+ +#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#2#237'IDATx'#1#189'VM'#136'RQ'
+ +#20'>>'#140#249#137'f'#134#217#206#4'N'#139#154#22'1C'#148'S'#139#152#17#172
+ +#221'0Z'#27'i'#163'F'#235#156'!Z'#171#181'k'#163'a+k'#200#129#150#13'9 '#129
+ +#229'BW)'#4#254#16#229'F'#145#208#133#4#141'?'#16'h0v'#190#171#207#222#152
+ +#162#175#145'>8'#190'{'#175#247#157#239#158#223#251'4-F'#165'R'#161'T*E'#163
+ +'B'#167#211#9#25#5#26#224#133#211#217':'#237'v'#211#2#141#142#175','#167'<'
+ +#30#186#183#189'=t'#175' y'#169#211#181#12#133#2#169#197#219#185'9zxx8t'#31
+ +'8'#164#31#255'@'#0#28#177#139#149#128#203#11#3'ti'#233#132'p'#185'\'#20#139
+ +#197'h'#142'-'#131#128#200#225'p'#144#201'd'#26'/'#137#18#176#200'l6'#211#198
+ +#198#134' '#21'$'#31'y'#225'hm'#141#212'"'#145'H'#244']'#135'b'#171#213'J'
+ +#193'`'#144'l6['#155'D'#175#215#19'$'#30#143'S>'#159'''I'#146#196'i'#176#25
+ +#207#245#245'uJ'#167#211'b,+'#177'X,'#196#153#255#23'A4'#26#21#22'`'#175'2'
+ +#197'%'#252#20#139'E'#10#135#195#20#137'Dhjj'#138#154#205#166#144#233#233'iq'
+ +#226#137#137#9'*'#151#203#212'h4'#196'z6'#155#237'k'#133#221'n'#23'OX'#1'2'
+ +#25'"&'#156'e'#180#180#180'$'#158#213'jU'#156'$'#151#203'Q'#189'^'#167#213
+ +#213'U'#154#156#156#20#155#17#212#197#197'E'#177#167#31#224'&'#196#8#186'P'
+ +#220#129'@@'#172'kn'#27#141'-'#253#242'2'#213'Xa'#189'V'#235#190'pff'#166';'
+ +#239#29#3'Y'#182'~'#159'-W'#2#135#3#1'\'#133#195#129#212'`0h4O'#137'ZwH='#246
+ +'Y'#30#13#136#11#8#228#204'B1'#158'8'#133'e'#192'=rr`'#172#236'oc!A'#28'2'
+ +#153#12'-,'#252#233#128#201'd'#146'B'#161#208#248'H'#224'"'#191#223#127'l'
+ +#205#231#243'u;'#187#182'_I]cQ'#211#149#135'A'#139'Z'#151#3#255#138#218#221
+ +#245#29#7'n'#158'O'#231#224#249'3'#150#239'J'#144'I'#165'R'#233#216#154'r'#222
+ +#141'I'#173#179#25'-'#228#211#193#129#232#172#151';-'#226#250#222#30#193#173
+ +'yn1'#223#248'y'#179#135#196#235#245'v'#171']'#6#186#176'\'#245#221':'#1#201
+ +']'#150#243'[["'#207'Q'#253#8'('#172'r3'#233#23#254#239#13',c'#129#203#6#213
+ +'I/'#196#165'%O'#224#134#11#204#158'd'#11'v'#249':'#134'rd'#7#8#31#243#127'O'
+ +'X.'#177'+k'#164#30'Z'#9#149#201'.'#129#11'^'#179'R7'#199#2#0#193'U^'#135#251
+ +'VX'#249'&'#23#150#135#201#159'w^'#156#31#241'CBX'#179#235#241#180'~'#237#236
+ +#208'E'#158' TpI'#157#218'~G'#230#225#163#225'='#11':'#214'-j'#167'6'#146#228
+ +''''#23' '#146'd('#1#128'O"t'#215#130#138#187'^'#217#155'F!'#161#255#129#223
+ +'66?Q'#137#197#204'^'#0#0#0#0'IEND'#174'B`'#130
+]);
+LazarusResources.Add('TRESTDWServerEvents','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#25#0#0#0#25#8#6#0#0#0#196#233#133
+ +'c'#0#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28
+ +#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#2#173'IDATx'#1#189'VM'#136#18
+ +'q'#20#127#138#225'G'#180#138#212')A'#133#216#182'.'#235#201#237#18'*l'#231
+ +#213#130#240#166'Fww'#217#186#5#234#181#139#236#185'"'#133'N'#209#146'{'#148
+ +#12#244#148'B'#133'B'#148#23#197#131#29#188#180'~@'#161#193#218#251#253'wf'
+ +#152'5'#197#209#149#253#193's'#198'?o'#222#239'}'#207#232#198#140'n'#183'K'
+ +#213'j'#149#180#194#229'r'#9#209#2#29#240'"'#145#24'_N'#165#232':i'#199#15
+ +#150'K'#233'4='#218#221#157#171'+H^'#186'\'#227'@'#171'E'#139#226#189#205'F'
+ +#251#199#199's'#245#192#161#255#181#4#1'p'#194')V'#3')o'#205#176'e'#160's"'
+ +#153'LR'#169'T"'#27'G'#6#1'Q<'#30#167'`0'#184'Z'#18'5'#16'Q('#20'"'#191#223
+ +'/H'#5#201'''>8'#217#218#162'EQ'#169'T'#166#158#195'p$'#18#161'\.G'#209'h'
+ +#244#148#196#235#245#18#164'\.S'#179#217'$'#189'^/'#188#129'2'#174'>'#159#143
+ +'j'#181#154#184#151#141#132#195'a'#226#206#255#143#160'X,'#138#8#160#171'nq='
+ +'~'#218#237'6'#229#243'y*'#20#10'd6'#155'i4'#26#9#177'X,'#194'c'#163#209'H'
+ +#157'N'#135#134#195#161'8'#175#215#235'S'#163#136#197'b'#226#138'(@&C'#212
+ +#132#187#140#220'n'#183#184#246'z='#225'I'#163#209#160#193'`@'#30#143#135'L&'
+ +#147'PFQ'#29#14#135#208#153#6#164#9'5'#130'-'#12'w&'#147#17#231#186#251#219
+ +#219'c'#239#198#6#245#217#224#160#223'W'#30#184#178#182#166#252#159#188#7#234
+ +#28#253'!G'#174#6#156#3#1'R'#5#231'@'#26#8#4't'#186#231'D'#227#7#180'8'#14'Y'
+ +#158#206#168#11#8#228#206#18#195'H+'#2#210#4#2#164#20'5Q'#239#194's'#207#9#0
+ +#227#240'<'#155#205#138#148'9'#157'Nq'#142#136'VF'#2#239'! '#2#1#26'H'#13#195
+ +#180#145#186#195#178#200'V'#134'q'#12#30'R'#4#239''''#231#228'L'#225'_'#211
+ +#233'v'#189#198#138'vN'#1'V'#186']'#165#188#206#222'>'#147#238'g'#21'~'#18'g'
+ +#10#223'f'#249#198'K'#237'q"AV'#171#149#238#242#251#226#15#19'<'#225#235#13
+ +#158#250#171#155#155#212#163#229#160#212#164'/'#133#141#21#242#249#232'H'#217
+ +#172'H'#193'G.('#16#165#229#160#144'8X*<'#161#235';;"'#26#20#15#19'+'#175#7
+ +#20#182'/'#145'-M'#242#129#229'&'#167#235'+'#215#226#11'G'#178#207'i'#2#208
+ +#158'o'#249#245#140'9'#191'G'#203#193#160#199'dr7'#192#192#27'NMJ2.'#15#19
+ +#186#228'!G'#134#142#249'~p'#160''#132#195#8'Qk'#20'#b'#197
+ +#227'A'#226#240#16'N'#167#243#210'y'#22#190#212'*'#21'<5a|'#134'{'#244#206
+ +#167'\'#14#207#182#182'.'#157'#'#243#165#127#5#227'3'#252']'#225'R'#25#215
+ +#140'k'#23#16'{0r8'#240'qg'#7'W'#129#197'bY-`'#183#219#17#12#6#197#131'N'#167
+ +#131'R'#169#132#233't'#138'@ '#128'F'#163'!'#194#215'C'#17'3C'#191#223'G2'
+ +#153#20#253'j'#181#186'T'#224#130#139#138#197'"z'#189#30'Z'#173#150#16#179
+ +#217'lh6'#155#162#181'Z'#173#144'e'#25#145'H'#4#134'W'#168#127#208#237'v'#225
+ +'r'#185'D'#159'W'#226#245'zE'#191'V'#171'A'#146'$'#184#221'n'#177'bS'#2#227
+ +#241#24#249#221']'#241#224#246#201#9#238#156#158'b2'#26#193#183#182#6#28#31
+ +#227#209#198#198#252#141#201#4'?'#246#247#209'9883'#160'q'#221'B'#240'I~'#191
+ +#189#173#252#164#174'Q&'#136'u'#181#255#208#239'W'#162#209#168'2'#24#12#216
+ +#148#146'J'#165#20'r'#175'2'#131#233'0'#205#18#223#18#191#227',]|'#165#0#248
+ +']('#160'@d'#240#166#135')'#237#204'r'#154')'#129'#b'#134#152'P'#141'?'''#190
+ +'&'#190'`'#195#155#155#136#199#227#200'f'#179'bn:'#157'6/'#192'^'#191'E|'#172
+ +#174#228#29#241#1#241#174'*'#186'Ny'#137#13#179'H&'#147#153#11#240#215#236
+ +#233#248'e'#129#192'g'#213#224'7'#226'}'#162'>'#150'X'#152']'#228#247#251#133
+ +#139#248#252#136'(r'#16#141'D'#246#27#141#208#250#130'q'#182#243#135#18''''
+ +#167'o>G'#220'Z`'#2#198#163#31#231''''#255'ff'#211#163'%c'#236'{m'#217'5'#229
+ +'"'#6'o>'#159#3#142#154#189#5#227'.2'#206#231#160'\.'#207#247'@^RS'#245#224
+ +#141'|'#165#185#255'E'#229#210#231#243#157#223'?'#209#205#23'E'#159#151#244
+ +#146#242#13#23'}'#7#140#163'L'#27#153#163#150#127#26#242#249''#192'E'#165#130#248#128#164';'#133#216'n'
+ +#21#220'7V'#23#130#8#226#166#138';'#127#129#130#20#154'nT\+'#174#139#224'cUA'
+ +#138'f'#209#164'"(h0'#181' 2'#193#226#198#182#231';'#204#196#153#24'm(6'#31
+ +#156#220#201#204#153#251#221#239#156'{'#207#25#215'o'#1#4'{{{'#184#188#188
+ +#196'c '#24#12#162#189#189']'#175']'#4'Ib'#177#24#202#203#203'QWW'#135#199
+ +#128'a'#24'H'#167#211#24#25#25'Q'#18'/'#21#212#214#214#162#165#165#197#225
+ +#184#187#187#139#179#179'3'#156#156#156#160#181#181#21'eee888@ee'#165'*.--E2'
+ +#153#196#244#244#244#29#18'.6'#147#201'ht'#8'7_'#240#249'|w'#28'y'#159'$~'
+ +#191#31#135#135#135#186'2'#183#219#141#234#234'j444'#232'"zzz'#238'UC"+'#252
+ +#238#251#156#174#174#174'PQQ'#129'@ '#160'*'#188'^/:;;'#17#10#133'p}}'#173
+ +#164#133#226'^'#146#243#243's'#13#201#241#241'1'#218#218#218'pqq'#129#177#177
+ +'1LNN'#162#164#164'DsH'#156#158#158#170#253#19'IMM'#141#146'TUU!'#30#143'kH'
+ +#135#134#134#208#221#221#173'*'#187#186#186#212'o{{'#27#243#243#243'x'#8'^k5'
+ +#230'N'#206#162#163#163'C'#19#219#220#220#156#221'uL&w'#206#198#198#134'n'#22
+ +#143#199#163#207'i'#185'jR'#169#20#234#235#235'oI'#210'o'#222#192#147'g'#5'A'
+ +'s'#180#162#191'C"'#177#222'<'#190#185#25#250#201#31'YL'#150'$,'#246#12#127
+ +'G'#202#28'_'#22#224'K]'#191#204'k7'#138#0'U'#242'I,P'#128#243'g'#20#14'C,b'
+ +'''y'#141#194#194'ea'#160#0#159#162#135#171'x9Y'#129'3\'#148'jU'#179#140'9'
+ +#242'?w'#151#145'3'#1'}'#185#181#13'9K>1'#151#156'#'#191#156'/'#158#172#168
+ +#157'd'#192'F'#242'N'#236#166#191'_'#175#191#173#173#225#137#20#193#166#166
+ +'&'#196#165#188'|'#223#220#196'['#220#230#132#4#11'2'#241#251#229'eG'#155#224
+ +'A'#28#29#29#205#146'8'#194#197#221#227#27#28#196#209#209#145#150#233#231'B'
+ +#22#141'F'#241'E'#14'Ucc'#163#18#230#170#240#229#233'A'#172#220'vR'#175#253
+ +#225#11#177#152'L'#222'/'#147#239#239#239'cM'#148#244#245#245#193'p'#185#216
+ +'|'#180'"'#231#195#212#212#148#142'V'#31'a'#137#226#232' '#177#206#201'W1V'
+ +#221#153#153#25'm'#159#227#227#227#234#196#162'Hu?'#182#182#28#229#135'JX'
+ +#223'"'#145#136#182#0#11#188#183#190#190#238'$'#177#206#137#10#20#21#204#1'W'
+ +'C5$K.-!f.'#134#24#176#133'wE'#170#179#165#128#197#147#161#202'm'#130'^6'#253
+ +#132'I'#194#154#148'Z\'#212#221#198#251'7'#210#217'>H'#200#24#198#187#189'Sb'
+ +'o'#134#136#137'N$'#18#217#16#133#195'aGN'#244'C'#226#227#196#4#158#206#205
+ +#233'K'#15#129'J\b'#175'l'#247#22#196'vd'#194'Po'#175'* '#209#234#234'*'#134
+ +#135#135'1;;{'#251#181'B'#231#255#249'I'#132'b'#224#15'J'#3'1'#141#250'T'#244
+ +#157#0#0#0#0'IEND'#174'B`'#130
+]);
+LazarusResources.Add('TRESTDWTable','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#24#0#0#0#25#8#6#0#0#0'++'#238']'#0
+ +#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28#233
+ +#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#2'tIDATx'#1#189'V=lRQ'#20#254#192
+ +'v"'#252#13#12'H'#9#29#129#137#26#127#8#14'4'#136'n'#132#18#247#130#137#145
+ +#17#186#24#211#193#14'N'#166'C[7'#220#216'k'#2#27#209#8#133'I'#7#133#136':'
+ +#145'@'#249#11#137#137'! 2'#152#128#231'\'#222'K$!'#143'gC'#251'%'#135'w'#239
+ +#227#222#243#243#157's'#207'}'#154')'#1#132'J'#165#130'~'#191#143'U'#192'd2'
+ +#193#227#241#136#177#134#13#164'R)'#232't:'#216'l6'#172#2#131#193#0#189'^'#15
+ +#241'x'#28'k'#236#185#213'j'#133#211#233#196#170#192#142#14#135'C'#193#202#26
+ +#211#162#215#235#23'.'#204#231#243#24#141'Fh4'#26'p'#187#221#232'v'#187'0'#24
+ +#12'h6'#155#8#6#131#168#213'j"'#242'@ '#176#208#8#235'^S'#242'd2'#153#160'T*'
+ +#9'%'#185'\'#14'Z'#173#22#14#135#3#213'jU(`'#26#218#237#246'B'#3'2'#180'J'#6
+ +'\.'#151'x'#142#199'c'#132'B!1f'#175#204'f3'#234#245#186#152#243'X'#9#138#17
+ +'0u>'#159'O'#208'b'#177'X'#224#245'z'#197#152#147'('#131#231'J'#208#20#10#133
+ +'i'#171#213'ZY'#5#201#232't:'#176#219#237#179#8'z'#187#187#184#166'b'#211'G'
+ +#146'!IP'#197#218#223#252'S('#204#12#220'!'#217'P'#177#169'#='#189'*'#214#182
+ +'I&X'#146#228'U@D'#240#150#196#168'b'#241#7#168#7#151#193'='#217#192#3#168
+ +#163'H'#198'C'#21'k'#174#140#162#171#201#193#27#18#238'FC'#233')'#231#163'-'
+ +#205'!'#253#199'U4'#133':'#204#229#128#203#244#229#230'&nlo'#227#211#217#25
+ +#194#212#220#210#212#211'o'#237#236#224#11#141#215#233#221#15#234#239#220#244
+ +#246#169'U'#252'w'#14'^'#145'8'#192'g:(|q'
+ +#252'!'#195'azo4'#170#169#181'y'#8#3'\A'#236']4'#26'E6'#155#21'J'#185#151'?;'
+ +'?'#199#215#227'c'#248#253'~\'#20#130'"n'#1#239#211'i'#241'"A'#145#176#17#190
+ +#246#246#137'6'#198#221#127'6p'#190#248'<,;'#205's9'#224'D'#190'8:B'#177'X'
+ +#20#138#217'{'#142#130'i'#137#197'b'#136'D""'#186'd2)'#218#245#233#201#9#14
+ +#151#220#223'r'#14'4'#229'ry'#250'nkKD'#209'%'#229':'#218#248#156#198#167'Rd'
+ +#235#20#5'/'#254'I'#20'r'#191#229'j'#186'Mr'#8'e|'''#217'('#151'g'#151#254
+ +#235#189'=\'''#174#23'u'#246#161#20'.'#227#27'{Dr'#127#137'rv'#232#23'E'#251
+ +#132'X'#209'\'#246'g'#203#165#227'/l'#128#239#10'Yt'#165'*'#0#0#0#0'IEND'#174
+ +'B`'#130
+]);
+LazarusResources.Add('TRESTDWAuthToken','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#25#0#0#0#25#8#6#0#0#0#196#233#133
+ +'c'#0#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28
+ +#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#2#211'IDATx'#1#181'VMh'#19'A'
+ +#20'~)=hD'#9#130'XKK'#131'B'#193'S['#218'KA'#154#132#138' '#20#146#162#180
+ +#144'K'#18#9#189'I'#146#155#183#228' '#245'"&"*'#189#152#6#17'<'#168'I'#232
+ +#173'`'#147#179#7#147'C'#197#210'*'#249#169'z('#9'I('#182' '#200#250#189#209
+ +#13#155#236'l'#18')'#249'`'#200#206'{3'#239#219'y'#223'{'#179'1e2'#25#197'j'
+ +#181'R?P,'#22#201#225'p'#152#6#153#160'_$*'#6#200#224#13#130#193' '#217#237
+ +'v'#138'D"T'#175#215'uk'#216#238'r'#185#200#231#243#137#245#29'Q('#20#20'-x'
+ +#142#147')p5'#7#200'Z'#214#4#2#129#22#191#197'bQ'#218#227#168#177#164'$'#241
+ +'x'#188'%'#128':r'#185#156#240#215'j5'#169#159#137#141'Ht'#233#146#165'Fk7'
+ +#242'w'#130#142#132'u'#144'arrR'#252'r'#145#200#214#24#237#19#144#229'2'#153
+ +'L6ua='#194#225#176#2#18#145'*5'#13'N'#167#179#169'G,'#22'Sd0'#212'D'#11#173
+ +#224#172#149#150#136#193'D'#170'V'#157'H'#6#168'Gx'#189'^'#130#184#220'\'#162
+ +'|'#173#195#195't'#230#224#128#238'./w-cC'#146'l6+6j73'#145#205'f'#163'/'#155
+ +#155#244#202#239#167#171#176#173#206#207#147#127't'#148#188'n7'#253#151'&'#30
+ +#143#167#165'<'#163#209'h'#211'g'#155#157'U'#202#152#175'.,(_'#225'{h6+'#141
+ +#181'5'#229#30#230'|E'#245#148#174'T*E'#137'D'#162#197#22#10#133#154#165#251
+ +#187'Z'#165#198#241'1'#237'mm'#209'['#204#235'GG'#148#222#216#160'k'#227#227
+ +#226#244'='#165'+'#159#207'K'#23#170#246#253#195'C*U*'#228'E'#240'['#152#251
+ +'0'#170#187#187'T'#6#185#209#29#216's'#159#168#1#188'++'#244#28#167'xo6'#139
+ +#147#240#216#193#243#235#237'm'#227'^'#145'i'#130#203#177'E'#19'T'#147#206
+ +#239#134'6'#207#160#221#131#165'%enzZZ'#202']'#251#132'E'#228#222'0'#242#179
+ +#157#253#220#184#218#222#145#145#12#182#159#140#197#251#188#190'.'#158#127'Z'
+ +','#244#14'%|'#26#227'&z'#227#17#198#29'|'#2#222#196'bt'#14#254#179#24#31'1*'
+ +#208'k'#6#215'>'#219#239#255#219#171#133#142#4#215#4'}j4'#232#2'6'#238'A'#135
+ +'!'#16#12'!'#192#227#169')'#250#142#10'{'#146'N'#211'%'#204'w'#16#236#23'zf'
+ +#31'kgQ'#141'/'#176#206#196'U)!'#209#9#207#23#225#140#211'I'#231'A071A'#211
+ +'x'#190#141'N/'#131'`'#4'~'#19#198'u'#143'G'#156#228'b'#169'$D'#251#128#23
+ +#251#209'V'#246#29'I'#180#24#199#27#243#230#167#139#139't'#5#228#223'`;'#133
+ +#10'z'#137'9'#195':6F'#13#144'_'#134#239#6#210'8b'#16'gPf'#228'R'#204#227#237
+ +'DI&'#147#226'j'#225'O-7'#170#250#171'"D'#127'S'#204'kS8'#185#20#157'n'#225
+ +#147#162'Y]]'#255#4#156#0#253#140#173#195#31'K'#146'<&D'#158#2's'#0#0#0#0'IE'
+ +'ND'#174'B`'#130
+]);
+LazarusResources.Add('TRESTDWAuthBasic','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#25#0#0#0#25#8#6#0#0#0#196#233#133
+ +'c'#0#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28
+ +#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#2#241'IDATx'#1#181'V]H'#147'Q'
+ +#24'~'#23'v'#145#20#19'5"'#242'o'#21#246#3#130#23#161')'#6#174#4#205#172#20
+ +#133' '#8#21#162#155'.D'#8#138#188'Po'#186#9#209#155#132'n'#202']'#137#162
+ +#177#193#194'.'#134'sT'#10#209#197#220'"'#216'P'#246#227'.r'#229#216'J'#244
+ +'&'#180#247'9}'#27#31#236#156'm'#10'{'#224#240#157#243'}'#239#251'>'#231#253
+ +';'#231'38'#157#206#253#170#170'*'#202#7#130#193' '#153#205'fC'#1#8#178#145
+ +#196#227'q'#178'Z'#173'B'#9#168#173#173#21'#'#215#205#29#201'f'#188#175#175
+ +#143'n'#215#215#211#230#194#2']'#136'F'#169'n{'#155'|'#211#211#244#160#181
+ +#149#250#251#251'S'#196#153'`'#8#4#2#210'pA'#185#183#167#135#158'67SSu'#181
+ +'T'#217#187#177'A'#207#153#220'27G*'#27'&'#147#201' '#245'$I'#240#170#187';E'
+ +#16#222#218#162'g33b`'#14#212#148#151#11#25#200#194'k'#21#164'$###'#244#162
+ +#189#157'*JJR'#4#143#198#198#232#218#226'"5'#241#192'<'#177#179'#'#190'A'#6
+ +#222#14#14#14#230'N'#2'/'#214'WV'#168#166#172','#245#206#19#14#211#13'&'#170
+ +#231#249'U'#30']<'#183#187#221#169#239#240'vmyY'#233'M'#26#137#155#149'oq'
+ +#229'$'#129#29#135'c11'#143'h#'#129#177#187#155#242#6#128#14'*P'#134#2#25'I'
+ +#29#199':'#137#182#161'!'#186#168#25#251#174#23#156#157#165'I'#187#157#190
+ +#141#143#139'eEq1'#249#21#149'V {'#169#223#225#9#158#191'$9'#238#235#228#140
+ +#133#133#164'BZ'#184'P'#138'!'#173'z'#14#2'o$"'#26'4'''#146#206#206'Nz'#175
+ +'Kj'#174#128#142#138'$-\EEEt'#174#161#129'>'#249#253#162'j'#254#208#255'dg'
+ +#130#135#155#242'|c'#163#242#152#145#230'dbb'#130#238#182#180#136#30#184#211
+ +#209'A'#175#21#225#187'^Z*zhH'#235'z'#21#164'$'#240#6'J'#232'd4'#165#190'g'
+ +#244#248#232#243#209#227#249'y'#229#177#146#145#4#128#18#148#209#253#235'|'
+ +#148#160#15'@'#134#254#192#238#145#3#132#200#230'p'#136'Me'#130#242#128#212#3
+ +#167#0#250#199#173#21#4#228'Q '#217#140''''#15'H'#169''''#239#166#166'hsi'
+ +#137#142#178#177#135#236#137#131#215'W'#216'('#170'g'#150#215#127'Y'#230#13
+ +#231#237','#175#163','#183#151'HP'#219#240#240#193#18#15#2#151#203'E'#167','
+ +#22#178#178#161#207#163#163#180#198#235'r'#163#145#220#161#16#29#231#249#30
+ +#159'SoY'#246#30#27#254#193#195#195'w'#203#164#211')%Q^Z'#167#217#200'o~~'
+ +#181#217#8'i?'#201#161#250#201#132'1'#14#193#25'^WVVR5'#203'\'#30#24#160'''|'
+ +#180#212#245#246#170'L'#169'I'#16#239#10#30'_8T'#251'|;'#242'=M'#31#216#163
+ +#155#252#4#145'{u'#149'~1'#169#151#223'Y'#204'f'#225#169#10#210'p]b'#163#199
+ +#248#142#0#145#137'w'#139'$#'#137'F-'#241']Z'#236#145#3#20'C'#242#154'V'#2
+ +#213#149'/'#192#182#240'$'#151#31#129#195'"'#159#182#211#240#15#165#12#176
+ +#131#192':~'#208#0#0#0#0'IEND'#174'B`'#130
+]);
+LazarusResources.Add('TRESTDWAuthOAuth','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#25#0#0#0#25#8#6#0#0#0#196#233#133
+ +'c'#0#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28
+ +#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#3#172'IDATx'#1#181'VY('#229'a'
+ +#20#255'].b'#140#236#178'e'#205#22'YSxA'#241#128',5'#15#162','#243#168'&'#188
+ +#205#155#164#241#160'I'#137#154#7#15'f'#136'yDY'#30'()'#153#20'!'#9'e7'#182
+ +#177'/'#225#26#252#231#156'S'#247'63'#254'w'#153#26#167#190#254#159#239';'
+ +#223'Y~'#191's'#142#171#25#27#27'S'#2#3#3#241#18#178#185#185#137#140#140#12
+ +#141#150#29#152'sr||'#140#225#225'a\__'#195#202#202#10#182#182#182#200#206
+ +#206#134#175#175'/,'#17#173#169#203#157#157#29'ttt`zz'#26#174#174#174'8=='
+ +#149's???'#140#140#140' &&'#6'%%%'#8#8#8'0e'#6'V'#198'.'#22#23#23#209#214#214
+ +#134#173#173'-LLL >>'#30#183#183#183#178'...0;;+'#206'[[['#177#180#180#132
+ +#127'v'#194#25#244#244#244#200#226#12#156#156#156#208#208#208#128#245#245'u'
+ +#172#173#173'attT sss'#147'L;;;qpp`'#220#203#198#198#134#242#183'466*'#20#185
+ +'B'#215#178#162#163#163#149#224#224'`%**J'#9#9#9'Q'#194#195#195#229#222#218
+ +#218'Z'#238'CCC'#21#202#250#153#29#182#173#154#201#254#254'>fff'#4#14#27#27
+ +#27'$$$'#192#206#206#14#246#246#246#232#238#238'Foo'#175'dF6'#144#148#148#4
+ +#173'V'#139#213#213'U'#12#14#14#226#242#242#210'2'#184#6#6#6#224#232#232'({'
+ +#15#15#15'P'#180'xxx'#0'e'#131#184#184'8!;--M'#170#236#238#238'N'#224'da'#248
+ +#248#173'ENnnn'#176#187#187'+'#251#251#251'{'#137#142#201'NMM5'#232'P'#237'C'
+ +#167#211#225#236#236#12#14#14#14'rvrr'#130#195#195'C'#203#156'p'#132#26#141
+ +'F'#246#143#143#143'B(;***2'#232'dee'#201'9'#195#169#215#253#253#157'Y''...'
+ +#240#241#241'1d'#194#248#19#217#240#247#247#151'rmnn'#22#131#249#249#249#226
+ +'dooOt'#249#141#187#187#187#170#147'g'#205#152#147#147'#$'#178'0L'#158#158
+ +#158'HII'#193#242#242'2'#218#219#219#5'&v'#154#152#152#136#169#169')'#201#150
+ +#229#233#233#9#185#185#185#150'9a"ccc'#165#25#23#22#22'0??/'#145'sop'#143'x{'
+ +'{K6'#204#7#207'&.'#138#200#200'H'#169'4F'#193'"'','#165#165#165#184#186#186
+ +#18'2'#169'?dvmooK)'#179#241#163#163'#'#129#177#171#171#11#181#181#181'(,,'
+ +#148'7'#198'D'#213#9#227'_VV&'#229#203'='#195'P$''''crr'#18#212#136#2'!WaSS'
+ +#19#138#139#139'EW'#207#163#154#24#157']l'#172#170#170#10#153#153#153'B('#27
+ +#14#11#11#19#178'9'#155#243#243's'#228#229#229#137'NDD'#4'L'#137#134'['#223
+ +#220#168#231'r'#29#26#26#18#8#153#31'nV.'#16'///'#147#239#152#179#160#160' '
+ +#141#234#236#162'H'#149#175#213#213#202#167#138#10#153'?4J'#148#246#186#186
+ +'?t'#248#159#29#141#30#229']y'#185#232#171#137'~v'#169'r'#242#177#166#6'^4'
+ +#226'W'#156#157'qZY'#137#215'4'#167'6'#168#202'>S'#198'?'#198#199#5#174';'
+ +#250#242#164'r$'#216#190#208']L]'#29'2'#169#0#212'D'#149#147'pz'#248#186#188
+ +#28'o'#170#171#177'67'#135'Y2'#248#138#206':ZZ`O'#16#248#208#254#27'-'#239
+ +#130#2'|'''#253'i'#10'f'#165#191#31#198'D5'#147#159#233#233#216#169#175#199
+ +#25#237'y'#138#165'P'#6':'#26#142#30'}}8&'#131'NtfM_'#206#134'%'#192#12#167
+ +#170'N'#222#18'\}'#244#144'+'#232'=}'#157#201' '#23'G'#31'E'#174#151#15#244
+ +'7'#19#27'M{'#179'?D'#212#136#255'_b '#158#163'y)yI'#219#207#228#23#30#31'_'
+ +#228#228'w'#246#152#0#0#0#0'IEND'#174'B`'#130
+]);
+LazarusResources.Add('TRESTDWAuthOAuth2','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#24#0#0#0#25#8#6#0#0#0'++'#238']'#0
+ +#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28#233
+ +#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#3#179'IDATx'#1#181'U'#219'+'#164
+ +'q'#24'~f'#140'c1'#142#201#153#18'.v'#173'l'#148#210'd7a'#213#8#251#7#216#11
+ +'-w'#14#161'ViM)W'#187#249#3'6'#140#27'b/'#164#220#172#21'%'#23#139'P'#235
+ +#144'L!'#199'H'#206'FN'#191'}'#223#183#29'a'#190'Yly'#235'k'#230#251'~'#191
+ +#239'y'#222#247'y'#159#247#247#233#134#134#134'Tll,'#158'#'#150#151#151'a`'
+ +#240#199#16#156#158#158'bgg'#7''''''''#136#139#139#131#183#183'7'#30#19#134
+ +#135'6'#216#237'vloo'#11#240#254#254'>'#206#207#207#177#176#176#128#139#139
+ +#11'$$$ %%'#229#255#8'8'#227#201#201'I'#236#237#237#225#234#234#10'aaa'#216
+ +#221#221#133#135#135#135'T'#28#30#30#142#169#169')'#244#244#244#160#168#168#8
+ +#6#131#225'i'#4#227#227#227'8::'#194#210#210#18#162#162#162'P[['#139#249#249
+ +'y'#169'(44'#20#149#149#149#152#157#157'E]]'#29#250#250#250'P\\'#172#137#163
+ +#215'z8::'#138#203#203'K'#196#196#196'`bb'#2'%%%'#152#155#155'C||>>X]]'
+ +#149'Fr'#227'sss'#177#185#185')k'#129#129#129'b]'#179#217#140#173#173'-y'#247
+ +'~'#232#184#140#219's'#192'v'#204#203#203#147'l'#216#235#156#157#167#167#167
+ +#220'WTT =='#29#13#13#13#2#200'$l'#219#181#181'5!'#27#28#28#148#132#28#193
+ +#131#230'T'#1#131#242' '#173#175#175#139'{'#24'<22'#18#173#173#173'HNNFss'
+ +#179#144#177']'#221#220#220'd'#141#229'LLL'#188#3#238'R"vFNN'#142#200#193#190
+ +#231#151#184#15'^^^B^__'#143#166#166'&'#24#141'FP'#147#177#177#177'!U'#148
+ +#149#149'A+'#156'$'#226#224#225'*,,'#148'^dddH'#198#228#30'Y'#227'_'#150#141
+ +#9'9'#1#155#205'&&'#232#238#238#150#228'n'#135#166'D'#28#1#1#1#146')'#207#193
+ +#225#225#161#28#11#236#162#232#232'hY'#227#251#197#197'E'#28#31#31'#88'#24
+ +#229#229#229'N'#224#142'p9'#201','#19#235#207'n'#226#198#207#204#204#136'$'
+ +#142'Jh>'#164#146#234#234'jdgg'#187#130#209#150#232'v'#176'SFFFd'#162#249#208
+ +#227#138#152'$33'#19#5#5#5#210#31'W'#193#18'iN'#178#171#160'f*"|'#244'~'#205
+ +'I'#230'3'#229#19'5'#248';I'#195#241#173#177#241#230#156#225#9'g'#217'z{{'
+ +#229'r'#236'q'#188#243#179#189#253'a'#137',4'#3#215#180'YO'#0#190't'#200#253
+ +#182'X'#16#154#149#5#29#217#146#127#127#16#232#235#149#21#180#209#222#247't'
+ +#5#211#247'`'#158'\v'#168#211'!'#129'$'#249'J'#14#188'-'#145#254#190'f'#163
+ +'tU}'#254#12#207'W'#175#240#203'jE$='#247#162#12'}'#232'9'#127'p'#188#9#220
+ +'N'#238'J'#163'$B'#8#252#128#0'?'#18')'#239#11#255#240#193#169#130';.'#226'J'
+ +#204#148#165#245#205#27#216#9'p'#143#0#21#189#20'@'#4#253't'#189#163#179#198
+ +'H'#251#248'H'#179#13#15#227'-'#17#236#19#193#151#170'*'#152'h'#221#6#252#155
+ +#128#195#220#214'&'#154#198#208#255'8"'#224#129#227#202#140#127#251'`'#162'+'
+ +#139#146'xI'#4#254#254#254#136#162#251#23#180#143'C'#211'OOq'#209'S'#131#177
+ +#13#226#213'g'#138#231#196#190#137'?'#156#25#192#167#186#5#181'D'#0#0#0#0'IE'
+ +'ND'#174'B`'#130
+]);
diff --git a/CORE/Packages/Lazarus/RESTDataWareComponents_LAMW.pas b/CORE/Packages/Lazarus/RESTDataWareComponents_LAMW.pas
new file mode 100644
index 000000000..bba894e8c
--- /dev/null
+++ b/CORE/Packages/Lazarus/RESTDataWareComponents_LAMW.pas
@@ -0,0 +1,40 @@
+{ This file was automatically created by Lazarus. Do not edit!
+ This source is only used to compile and install the package.
+ }
+
+unit RESTDataWareComponents_LAMW;
+
+{$warn 5023 off : no warning about unused units}
+interface
+
+uses
+ uRESTDWBasic, uRESTDWBasicClass, uRESTDWBasicDB, uRESTDWBasicTypes,
+ uRESTDWBufferDb, uRESTDWComponentEvents, uRESTDWFileBuffer,
+ uRESTDWMasterDetailData, uRESTDWParams, uRESTDWPoolermethod,
+ uRESTDWResponseTranslator, uRESTDWServerContext, uRESTDWServerEvents,
+ uRESTDWAttachment, uRESTDWAttachmentFile, uRESTDWBuffer, uRESTDWCoder,
+ uRESTDWCoder3to4, uRESTDWCoderBinHex4, uRESTDWCoderHeader, uRESTDWCoderMIME,
+ uRESTDWCoderQuotedPrintable, uRESTDWDataUtils, uRESTDWException,
+ uRESTDWHeaderCoderBase, uRESTDWHeaderList, uRESTDWIOHandler,
+ uRESTDWIOHandlerStream, uRESTDWMessage, uRESTDWMessageClient,
+ uRESTDWMessageCoder, uRESTDWMessageCoderBinHex4, uRESTDWMessageCoderMIME,
+ uRESTDWMessageCoderQuotedPrintable, uRESTDWMessageParts, DWDCPbase64,
+ DWDCPblockciphers, DWDCPcast256, DWDCPconst, DWDCPcrypt2, DWDCPrijndael,
+ DWDCPsha256, DWDCPtypes, uRESTDWConsts, uRESTDWDatamodule, utemplateproglaz,
+ uRESTDWBufferBase, StringBuilderUnit, uRESTDWBase64, uRESTDWDynamic,
+ uRESTDWJSONObject, uRESTDWMassiveBuffer, uRESTDWMD5, uRESTDWTools,
+ uRESTDWDataJSON, uRESTDWJSON, uRESTDWJSONInterface, uRESTDWStorageBin,
+ uRESTDWMimeTypes, uRESTDWAbout, uRESTDWZlib, uRESTDWMemoryDataset,
+ uRESTDWDesignReg, uRESTDWProtoTypes, uRESTDWSelfSigned, uRESTDWExprParser,
+ uRESTDWAuthenticators, LazarusPackageIntf;
+
+implementation
+
+procedure Register;
+begin
+ RegisterUnit('uRESTDWDesignReg', @uRESTDWDesignReg.Register);
+end;
+
+initialization
+ RegisterPackage('RESTDataWareComponents_LAMW', @Register);
+end.
diff --git a/CORE/Source/Basic/uRESTDWBasic.pas b/CORE/Source/Basic/uRESTDWBasic.pas
index b4357d7cc..83552ee09 100644
--- a/CORE/Source/Basic/uRESTDWBasic.pas
+++ b/CORE/Source/Basic/uRESTDWBasic.pas
@@ -32,7 +32,8 @@ interface
Uses
{$IFDEF RESTDWFMX}System.IOUtils,{$ENDIF}
- SysUtils, Classes, Db, Variants, SyncObjs,
+ SysUtils, Classes, Db, Variants,
+ {$IFNDEF RESTDWLAZARUS}SyncObjs,{$ENDIF}
uRESTDWComponentEvents, uRESTDWBasicTypes, uRESTDWProtoTypes, uRESTDWJSONObject,
uRESTDWParams, uRESTDWMassiveBuffer, uRESTDWDataUtils,
uRESTDWTools, uRESTDWConsts, uRESTDWMessageCoderMIME,
diff --git a/CORE/Source/Basic/uRESTDWDesignReg.pas b/CORE/Source/Basic/uRESTDWDesignReg.pas
index 813300eb4..9e8f632b4 100644
--- a/CORE/Source/Basic/uRESTDWDesignReg.pas
+++ b/CORE/Source/Basic/uRESTDWDesignReg.pas
@@ -26,20 +26,35 @@
interface
uses
- {$IFDEF RESTDWLAZARUS}
- StdCtrls, ComCtrls, Forms, ExtCtrls, DBCtrls, DBGrids, Dialogs, Controls,
- LResources, LazFileUtils, FormEditingIntf, PropEdits, lazideintf,
- ProjectIntf, ComponentEditors, fpWeb, TypInfo,
+ {$IFDEF FPC}
+ {$IFNDEF RESTDWLAMW}StdCtrls, {$ENDIF}
+ ComCtrls, Forms, ExtCtrls, DBCtrls, DBGrids, Dialogs, Controls,
+ LResources, LazFileUtils,
+ {$IFNDEF RESTDWLAMW}
+ FormEditingIntf, PropEdits, lazideintf,
+ ProjectIntf, ComponentEditors,
+ {$ENDIF}
+ fpWeb, TypInfo,
{$ELSE}
+ {$IFNDEF RESTDWLAMW}
Windows,
- {$IFDEF DELPHIXE2UP}
+ {$IFDEF DELPHIXE2UP}
vcl.Graphics,
- {$ELSE}
- Graphics, DbTables,
+ {$ELSE}
+ {$IFNDEF RESTDWLAMW}
+ Graphics,
+ DbTables,
+ {$ENDIF}
+ {$ENDIF}
+ {$IFNDEF RESTDWLAMW}
+ ToolsApi, DesignEditors, DSDesign, DesignIntf, ColnEdit,
+ {$ENDIF}
{$ENDIF}
- ToolsApi, DesignEditors, DSDesign, DesignIntf, ColnEdit,
{$ENDIF}
- Db, SysUtils, Classes, Menus,
+ Db, SysUtils, Classes,
+ {$IFNDEF RESTDWLAMW}
+ Menus,
+ {$ENDIF}
uRESTDWBasicClass, uRESTDWDatamodule, uRESTDWServerEvents, uRESTDWBasicDB,
uRESTDWServerContext, uRESTDWServerRoutes, uRESTDWMassiveBuffer, uRESTDWMemoryDataset,
uRESTDWBufferDb, uRESTDWAbout, uRESTDWDriverBase, uRESTDWAuthenticators;
@@ -56,6 +71,7 @@ interface
Type
TAddFields = Procedure (All: Boolean) of Object;
+{$IFNDEF RESTDWLAMW}
Type
TRESTDWFieldsList = Class(TStringProperty)
Public
@@ -163,7 +179,9 @@ TDriverConnectionListProperty = class(TComponentProperty)
End;
{$ENDIF}
+{$ENDIF}
+{$IFNDEF RESTDWLAMW}
Type
TRESTDWServerContextEditor = Class(TComponentEditor)
Public
@@ -179,9 +197,10 @@ TDriverConnectionListProperty = class(TComponentProperty)
Function GetVerb (Index : Integer): String; Override;
Procedure ExecuteVerb(Index : Integer); Override;
End;
-
+{$ENDIF}
{$IFDEF RESTDWLAZARUS}
+{$IFNDEF RESTDWLAMW}
Type
TRESTDWCGIApplicationDescriptor = Class(TProjectDescriptor)
Public
@@ -216,6 +235,7 @@ TDriverConnectionListProperty = class(TComponentProperty)
ResourceName : String) : String;Override;
End;
{$ENDIF}
+{$ENDIF}
Procedure Register;
@@ -232,18 +252,22 @@ TDriverConnectionListProperty = class(TComponentProperty)
rsRESTDWDatamodule = 'REST Dataware - Datamodule';
rsRESTDWDatamoduleADa = 'REST Dataware - Datamodule%sA Datamodule for REST Dataware Web Components.';
+{$IFNDEF RESTDWLAMW}
Var
PDRESTDWCGIApplication : TRESTDWCGIApplicationDescriptor;
PDRESTDWDatamodule : TRESTDWDatamodule;
+ {$ENDIF}
{$ENDIF}
Implementation
uses
{$IFDEF RESTDWLAZARUS} utemplateproglaz,{$ENDIF}
- uRESTDWConsts, uRESTDWPoolermethod, uRESTDWBasic, uRESTDWResponseTranslator,
- uRESTDWFieldSourceEditor, uRESTDWSqlEditor, uRESTDWUpdSqlEditor,
- uRESTDWJSONViewer;
+ uRESTDWConsts, uRESTDWPoolermethod, uRESTDWBasic
+ {$IFNDEF RESTDWLAMW}
+ , uRESTDWResponseTranslator, uRESTDWFieldSourceEditor,
+ uRESTDWSqlEditor, uRESTDWUpdSqlEditor, uRESTDWJSONViewer
+ {$ENDIF};
{$IFDEF DELPHIXE3UP}
Var
@@ -291,6 +315,7 @@ procedure UnregisterAboutBox;
End;
{$ELSE}
{$IFDEF RESTDWLAZARUS}
+{$IFNDEF RESTDWLAMW}
Constructor TRESTDWCGIApplicationDescriptor.Create;
Begin
inherited Create;
@@ -399,8 +424,10 @@ procedure UnregisterAboutBox;
End;
{$ENDIF}
{$ENDIF}
+{$ENDIF}
+{$IFNDEF RESTDWLAMW}
{$IFNDEF RESTDWLAZARUS}
Procedure TDSDesignerDW.BeginUpdateFieldDefs;
Var
@@ -538,7 +565,9 @@ procedure TRESTDWClientSQLEditor.ExecuteVerb(Index: Integer);
Result := True;
End;
{$ENDIF}
+{$ENDIF}
+{$IFNDEF RESTDWLAMW}
Function TPoolersListCDF.GetAttributes : TPropertyAttributes;
Begin
// editor, sorted list, multiple selection
@@ -724,14 +753,22 @@ procedure TRESTDWContextRulesEditor.ExecuteVerb(Index: Integer);
Begin
Result := 1;
End;
+{$ENDIF}
Procedure Register;
Begin
+ {$IFDEF FPC}
+ {$I RESTDataWareComponents_LAMW.lrs}
+ {$ENDIF}
{$IFNDEF RESTDWLAZARUS}
- RegisterNoIcon([TServerMethodDataModule]);
- RegisterCustomModule(TServerMethodDataModule, TCustomModule);
+ {$IFNDEF RESTDWLAMW}
+ RegisterNoIcon([TServerMethodDataModule]);
+ RegisterCustomModule(TServerMethodDataModule, TCustomModule);
+ {$ENDIF}
{$ELSE}
- FormEditingHook.RegisterDesignerBaseClass(TServerMethodDataModule);
+ {$IFNDEF RESTDWLAMW}
+ FormEditingHook.RegisterDesignerBaseClass(TServerMethodDataModule);
+ {$ENDIF}
// PDRESTDWCGIApplication := TRESTDWCGIApplicationDescriptor.Create;
// RegisterProjectDescriptor (PDRESTDWCGIApplication);
// PDRESTDWCGIDatamodule := TRESTDWCGIDatamodule.Create;
@@ -741,21 +778,30 @@ procedure TRESTDWContextRulesEditor.ExecuteVerb(Index: Integer);
{$ENDIF}
// RegisterComponents('REST Dataware - Service', [TRESTDWServiceNotification]);
RegisterComponents('REST Dataware - Client', [TRESTDWClientEvents]);
- RegisterComponents('REST Dataware - API', [TRESTDWServerEvents, TRESTDWServerContext, TRESTDWServerRoutes,
+ RegisterComponents('REST Dataware - API', [TRESTDWServerEvents,
+ TRESTDWServerContext,
+ TRESTDWServerRoutes,
TRESTDWContextRules]);
+ {$IFNDEF RESTDWLAMW}
RegisterComponents('REST Dataware - Tools', [TRESTDWResponseTranslator, TRESTDWBufferDB]);
+ {$ENDIF}
RegisterComponents('REST Dataware - DB', [TRESTDWPoolerDB, TRESTDWMemTable, TRESTDWClientSQL,
TRESTDWTable, TRESTDWUpdateSQL, TRESTDWMassiveSQLCache,
TRESTDWStoredProcedure, TRESTDWMassiveCache, TRESTDWBatchMove]);
RegisterComponents('REST Dataware - Authenticators', [TRESTDWAuthBasic, TRESTDWAuthToken, TRESTDWAuthOAuth]);
// AddIDEMenu;//Menu do REST Debugger
{$IFNDEF RESTDWLAZARUS}
- RegisterPropertyEditor(TypeInfo(TRESTDWAboutInfo), Nil, 'AboutInfo', TDWAboutDialogProperty);
-// RegisterPackageWizard(TCustomMenuItemDW.Create);//Request Debbuger
+ {$IFNDEF RESTDWLAMW}
+ RegisterPropertyEditor(TypeInfo(TRESTDWAboutInfo), Nil, 'AboutInfo', TDWAboutDialogProperty);
+ // RegisterPackageWizard(TCustomMenuItemDW.Create);//Request Debbuger
+ {$ENDIF}
{$ELSE}
- RegisterPropertyEditor(TypeInfo(TRESTDWAboutInfo), Nil, 'AboutInfo', TDWAboutDialogProperty);
+ {$IFNDEF RESTDWLAMW}
+ RegisterPropertyEditor(TypeInfo(TRESTDWAboutInfo), Nil, 'AboutInfo', TDWAboutDialogProperty);
+ {$ENDIF}
// RegisterPropertyEditor(TypeInfo(TRESTDWAboutInfoDS), Nil, 'AboutInfo', TDWAboutDialogProperty);
{$ENDIF}
+ {$IFNDEF RESTDWLAMW}
RegisterPropertyEditor(TypeInfo(TComponent), TRESTDWDriverBase, 'Connection', TDriverConnectionListProperty);
RegisterPropertyEditor(TypeInfo(String), TRESTDWTable, 'Tablename', TTableList);
RegisterPropertyEditor(TypeInfo(String), TRESTDWClientEvents, 'ServerEventName', TServerEventsList);
@@ -763,22 +809,24 @@ procedure TRESTDWContextRulesEditor.ExecuteVerb(Index: Integer);
RegisterPropertyEditor(TypeInfo(TStrings), TRESTDWClientSQL, 'RelationFields', TRESTDWFieldsRelationEditor);
RegisterPropertyEditor(TypeInfo(String), TRESTDWClientSQL, 'SequenceField', TRESTDWFieldsList);
RegisterPropertyEditor(TypeInfo(String), TRESTDWClientSQL, 'UpdateTableName', TTableList);
-
RegisterComponentEditor(TRESTDWServerEvents, TComponentEditorClass(TRESTDWServerEventsEditor));
RegisterComponentEditor(TRESTDWClientEvents, TComponentEditorClass(TRESTDWClientEventsEditor));
RegisterComponentEditor(TRESTDWResponseTranslator, TComponentEditorClass(TRESTDWJSONViewer));
RegisterPropertyEditor (TypeInfo(TRESTDWComponent), TRESTDWResponseTranslator, 'ClientREST', TRESTDWClientRESTList);
RegisterComponentEditor(TRESTDWServerContext, TComponentEditorClass(TRESTDWServerContextEditor));
RegisterComponentEditor(TRESTDWContextRules, TComponentEditorClass(TRESTDWContextRulesEditor));
+ {$ENDIF}
{$IFNDEF RESTDWLAZARUS}
- RegisterComponentEditor(TRESTDWClientSQL, TRESTDWClientSQLEditor);
- RegisterComponentEditor(TRESTDWServerContext, TRESTDWServerContextEditor);
- RegisterComponentEditor(TRESTDWContextRules, TRESTDWContextRulesEditor);
+ {$IFNDEF RESTDWLAMW}
+ RegisterComponentEditor(TRESTDWClientSQL, TRESTDWClientSQLEditor);
+ RegisterComponentEditor(TRESTDWServerContext, TRESTDWServerContextEditor);
+ RegisterComponentEditor(TRESTDWContextRules, TRESTDWContextRulesEditor);
+ {$ENDIF}
{$ENDIF}
End;
{ TRESTDWServerEventsEditor }
-
+{$IFNDEF RESTDWLAMW}
procedure TRESTDWServerEventsEditor.ExecuteVerb(Index: Integer);
begin
Inherited;
@@ -861,7 +909,6 @@ procedure TServerEventsList.Edit;
End;
End;
-
Function TServerEventsListCV.GetAttributes: TPropertyAttributes;
begin
// editor, sorted list, multiple selection
@@ -984,20 +1031,24 @@ procedure TRESTDWFieldsList.GetValues(Proc: TGetStrProc);
End;
End;
End;
+{$ENDIF}
{$IFDEF RESTDWLAZARUS}
Procedure UnlistPublishedProperty (ComponentClass:TPersistentClass; const PropertyName:String);
var
pi : PPropInfo;
begin
+ {$IFNDEF RESTDWLAMW}
pi := TypInfo.GetPropInfo (ComponentClass, PropertyName);
if (pi <> nil) then
RegisterPropertyEditor (pi^.PropType, ComponentClass, PropertyName, PropEdits.THiddenPropertyEditor);
+ {$ENDIF}
end;
{$ENDIF}
{ TRESTDWClientRESTList }
+{$IFNDEF RESTDWLAMW}
procedure TRESTDWClientRESTList.GetValues(Proc: TGetStrProc);
Var
I : Integer;
@@ -1045,7 +1096,6 @@ procedure TDriverConnectionListProperty.GetValueList(List: TStrings);
while i < comp.ComponentCount do begin
if drv.compConnIsValid(comp.Components[i]) then
List.Add(comp.Components[i].Name);
-
i := i + 1;
end;
end;
@@ -1065,54 +1115,56 @@ procedure TDriverConnectionListProperty.GetValues(Proc: TGetStrProc);
Values.Free;
end;
end;
+{$ENDIF}
initialization
- {$IFDEF DELPHIXE3UP}
- RegisterAboutBox;
+ {$IFDEF DELPHIXE3UP}
+ RegisterAboutBox;
AddSplash;
{$ENDIF}
{$IFDEF RESTDWLAZARUS}
- {$I RESTDataWareComponents.lrs}
+ {$IFNDEF RESTDWLAMW}
+ UnlistPublishedProperty(TRESTDWClientSQL, 'FieldDefs');
+ UnlistPublishedProperty(TRESTDWClientSQL, 'Options');
+ UnlistPublishedProperty(TRESTDWStoredProcedure, 'SequenceName');
+ UnlistPublishedProperty(TRESTDWStoredProcedure, 'SequenceField');
+ UnlistPublishedProperty(TRESTDWStoredProcedure, 'OnWriterProcess');
+ UnlistPublishedProperty(TRESTDWStoredProcedure, 'FieldDefs');
+ UnlistPublishedProperty(TRESTDWStoredProcedure, 'Options');
+ UnlistPublishedProperty(TRESTDWClientSQL, 'CachedUpdates');
+ UnlistPublishedProperty(TRESTDWClientSQL, 'MasterSource');
+ UnlistPublishedProperty(TRESTDWClientSQL, 'MasterFields');
+ UnlistPublishedProperty(TRESTDWClientSQL, 'DetailFields');
+ UnlistPublishedProperty(TRESTDWClientSQL, 'ActiveStoredUsage');
+ UnlistPublishedProperty(TRESTDWClientSQL, 'Adapter');
+ UnlistPublishedProperty(TRESTDWClientSQL, 'ChangeAlerter');
+ UnlistPublishedProperty(TRESTDWClientSQL, 'ChangeAlertName');
+ UnlistPublishedProperty(TRESTDWClientSQL, 'DataSetField');
+ UnlistPublishedProperty(TRESTDWClientSQL, 'FetchOptions');
+ UnlistPublishedProperty(TRESTDWClientSQL, 'ObjectView');
+ UnlistPublishedProperty(TRESTDWClientSQL, 'ResourceOptions');
+ UnlistPublishedProperty(TRESTDWClientSQL, 'StoreDefs');
+ UnlistPublishedProperty(TRESTDWClientSQL, 'UpdateOptions');
+ UnlistPublishedProperty(TRESTDWClientSQL, 'LocalSQL');
+ UnlistPublishedProperty(TRESTDWClientSQL, 'FieldOptions');
+ UnlistPublishedProperty(TRESTDWClientSQL, 'Constraints');
+ UnlistPublishedProperty(TRESTDWClientSQL, 'ConstraintsEnabled');
+ UnlistPublishedProperty(TRESTDWStoredProcedure, 'StoreDefs');
+ UnlistPublishedProperty(TRESTDWStoredProcedure, 'SequenceName');
+ UnlistPublishedProperty(TRESTDWStoredProcedure, 'SequenceField');
+ UnlistPublishedProperty(TRESTDWStoredProcedure, 'OnWriterProcess');
+ UnlistPublishedProperty(TRESTDWStoredProcedure, 'UpdateOptions');
+ UnlistPublishedProperty(TRESTDWStoredProcedure, 'FetchOptions');
+ UnlistPublishedProperty(TRESTDWStoredProcedure, 'ObjectView');
+ UnlistPublishedProperty(TRESTDWStoredProcedure, 'ResourceOptions');
+ UnlistPublishedProperty(TRESTDWStoredProcedure, 'CachedUpdates');
+ UnlistPublishedProperty(TRESTDWStoredProcedure, 'MasterSource');
+ UnlistPublishedProperty(TRESTDWStoredProcedure, 'MasterFields');
+ UnlistPublishedProperty(TRESTDWStoredProcedure, 'DetailFields');
+ UnlistPublishedProperty(TRESTDWStoredProcedure, 'ActiveStoredUsage');
+ UnlistPublishedProperty(TRESTDWStoredProcedure, 'Adapter');
+ {$ENDIF}
{$ENDIF}
- UnlistPublishedProperty(TRESTDWClientSQL, 'FieldDefs');
- UnlistPublishedProperty(TRESTDWClientSQL, 'Options');
- UnlistPublishedProperty(TRESTDWStoredProcedure, 'SequenceName');
- UnlistPublishedProperty(TRESTDWStoredProcedure, 'SequenceField');
- UnlistPublishedProperty(TRESTDWStoredProcedure, 'OnWriterProcess');
- UnlistPublishedProperty(TRESTDWStoredProcedure, 'FieldDefs');
- UnlistPublishedProperty(TRESTDWStoredProcedure, 'Options');
- UnlistPublishedProperty(TRESTDWClientSQL, 'CachedUpdates');
- UnlistPublishedProperty(TRESTDWClientSQL, 'MasterSource');
- UnlistPublishedProperty(TRESTDWClientSQL, 'MasterFields');
- UnlistPublishedProperty(TRESTDWClientSQL, 'DetailFields');
- UnlistPublishedProperty(TRESTDWClientSQL, 'ActiveStoredUsage');
- UnlistPublishedProperty(TRESTDWClientSQL, 'Adapter');
- UnlistPublishedProperty(TRESTDWClientSQL, 'ChangeAlerter');
- UnlistPublishedProperty(TRESTDWClientSQL, 'ChangeAlertName');
- UnlistPublishedProperty(TRESTDWClientSQL, 'DataSetField');
- UnlistPublishedProperty(TRESTDWClientSQL, 'FetchOptions');
- UnlistPublishedProperty(TRESTDWClientSQL, 'ObjectView');
- UnlistPublishedProperty(TRESTDWClientSQL, 'ResourceOptions');
- UnlistPublishedProperty(TRESTDWClientSQL, 'StoreDefs');
- UnlistPublishedProperty(TRESTDWClientSQL, 'UpdateOptions');
- UnlistPublishedProperty(TRESTDWClientSQL, 'LocalSQL');
- UnlistPublishedProperty(TRESTDWClientSQL, 'FieldOptions');
- UnlistPublishedProperty(TRESTDWClientSQL, 'Constraints');
- UnlistPublishedProperty(TRESTDWClientSQL, 'ConstraintsEnabled');
- UnlistPublishedProperty(TRESTDWStoredProcedure, 'StoreDefs');
- UnlistPublishedProperty(TRESTDWStoredProcedure, 'SequenceName');
- UnlistPublishedProperty(TRESTDWStoredProcedure, 'SequenceField');
- UnlistPublishedProperty(TRESTDWStoredProcedure, 'OnWriterProcess');
- UnlistPublishedProperty(TRESTDWStoredProcedure, 'UpdateOptions');
- UnlistPublishedProperty(TRESTDWStoredProcedure, 'FetchOptions');
- UnlistPublishedProperty(TRESTDWStoredProcedure, 'ObjectView');
- UnlistPublishedProperty(TRESTDWStoredProcedure, 'ResourceOptions');
- UnlistPublishedProperty(TRESTDWStoredProcedure, 'CachedUpdates');
- UnlistPublishedProperty(TRESTDWStoredProcedure, 'MasterSource');
- UnlistPublishedProperty(TRESTDWStoredProcedure, 'MasterFields');
- UnlistPublishedProperty(TRESTDWStoredProcedure, 'DetailFields');
- UnlistPublishedProperty(TRESTDWStoredProcedure, 'ActiveStoredUsage');
- UnlistPublishedProperty(TRESTDWStoredProcedure, 'Adapter');
Finalization
{$IFDEF DELPHIXE3UP}UnregisterAboutBox; {$ENDIF}
diff --git a/CORE/Source/Basic/uRESTDWProtoTypes.pas b/CORE/Source/Basic/uRESTDWProtoTypes.pas
index 9d96929bc..19b497bb0 100644
--- a/CORE/Source/Basic/uRESTDWProtoTypes.pas
+++ b/CORE/Source/Basic/uRESTDWProtoTypes.pas
@@ -299,3 +299,4 @@ interface
{$ENDIF}
implementation
end.
+
diff --git a/CORE/Source/Database_Drivers/uRESTDWDriverBase.pas b/CORE/Source/Database_Drivers/uRESTDWDriverBase.pas
index 3368ee2ed..e80da5eac 100644
--- a/CORE/Source/Database_Drivers/uRESTDWDriverBase.pas
+++ b/CORE/Source/Database_Drivers/uRESTDWDriverBase.pas
@@ -1,4 +1,4 @@
-unit uRESTDWDriverBase;
+unit uRESTDWDriverBase;
{$I ..\Includes\uRESTDW.inc}
@@ -3716,7 +3716,7 @@ function TRESTDWDriverBase.OpenDatasets(DatasetsLine : String; var Error : Boole
bJsonArray := bJsonValue.OpenArray(I);
vTempQuery.Close;
vTempQuery.SQL.Clear;
- vTempQuery.SQL.Add(DecodeStrings(TRESTDWJSONInterfaceObject(bJsonArray).Pairs[0].Value{$IFDEF FPC}, csUndefined{$ENDIF}));
+ vTempQuery.SQL.Text := DecodeStrings(TRESTDWJSONInterfaceObject(bJsonArray).Pairs[0].Value{$IFDEF FPC}, csUndefined{$ENDIF}); //Add(DecodeStrings(TRESTDWJSONInterfaceObject(bJsonArray).Pairs[0].Value{$IFDEF FPC}, csUndefined{$ENDIF}));
vBinaryEvent := StringToBoolean(TRESTDWJSONInterfaceObject(bJsonArray).Pairs[2].Value);
vMetaData := StringToBoolean(TRESTDWJSONInterfaceObject(bJsonArray).Pairs[3].Value);
vCompatibleMode := StringToBoolean(TRESTDWJSONInterfaceObject(bJsonArray).Pairs[4].Value);
@@ -3860,7 +3860,7 @@ function TRESTDWDriverBase.OpenDatasets(
End;
vTempQuery.Close;
vTempQuery.SQL.Clear;
- vTempQuery.SQL.Add(StringReplace(BytesToString(vSqlStream), sLineBreak, ' ', [rfReplaceAll]));
+ vTempQuery.SQL.Text := BytesToString(vSqlStream);//Add(StringReplace(BytesToString(vSqlStream), sLineBreak, ' ', [rfReplaceAll]));
SetLength(vSqlStream, 0);
DWParams := TRESTDWParams.Create;
Try
diff --git a/CORE/Source/Includes/uRESTDW.inc b/CORE/Source/Includes/uRESTDW.inc
index 3cc3bd6b7..59181a83e 100644
--- a/CORE/Source/Includes/uRESTDW.inc
+++ b/CORE/Source/Includes/uRESTDW.inc
@@ -10,6 +10,18 @@
{$IFEND}
{$ENDIF}
+
+{$IFDEF FRAMEWORK}
+ {$DEFINE NOGUI}
+{$ENDIF}
+
+{$IFDEF FPC}
+ {$IFDEF ANDROID}
+ {$DEFINE RESTDWLAMW}
+ {$DEFINE RESTDWLAZARUS}
+ {$ENDIF}
+{$ENDIF}
+
{$IFDEF CLR}
{$DEFINE RESTDWDELPHINET}
{$ENDIF}
@@ -20,9 +32,6 @@
{$IFDEF FPC}
{$IF DEFINED(LCL)}
{$DEFINE RESTDWLAZARUS}
- {$IFDEF LAMW}
- {$DEFINE RESTDWLAMW}
- {$ENDIF}
{$ELSE}
{$DEFINE RESTDWFPC}
{$DEFINE RESTDWLAMW}
@@ -502,6 +511,7 @@
{$IFDEF RTL90_UP} {$DEFINE RTL80_UP} {$ENDIF}
+{$IFNDEF RESTDWLAMW}
{$IFNDEF FPC}
{$IFDEF DELPHIXE5UP}
{$IF Declared(FireMonkeyVersion) or Defined(FRAMEWORK_FMX)
@@ -515,6 +525,7 @@
{$DEFINE RESTDWVCL}
{$ENDIF}
{$ENDIF}
+{$ENDIF}
(* End of FRAMEWORK Directives *)
@@ -529,6 +540,8 @@
{$UNDEF RESTDWVCL}
{$IFEND}
+
+{$IFNDEF RESTDWLAMW}
{$IF Defined(ANDROID) or Defined(Android64)}
{$DEFINE RESTDWANDROID}
{$DEFINE HAS_UTF8}
@@ -537,6 +550,7 @@
{$DEFINE RESTDWFMX}
{$UNDEF RESTDWVCL}
{$IFEND}
+{$ENDIF}
{$IF Defined(LINUX) or Defined(LINUX32) or Defined(LINUX64) or Defined(UNIX)}
{$DEFINE RESTDWLINUX}
diff --git a/CORE/Source/Plugins/JSONViewer/uRESTDWJSONViewer.lfm b/CORE/Source/Plugins/JSONViewer/uRESTDWJSONViewer.lfm
index d89c04a4b..fe53fe979 100644
--- a/CORE/Source/Plugins/JSONViewer/uRESTDWJSONViewer.lfm
+++ b/CORE/Source/Plugins/JSONViewer/uRESTDWJSONViewer.lfm
@@ -170,36 +170,4 @@ object fDWJSONViewer: TfDWJSONViewer
left = 376
top = 368
end
- object RESTDWClientSQL1: TRESTDWClientSQL
- Active = False
- Encoding = esUtf8
- DatabaseCharSet = csUndefined
- FieldDefs = <>
- MasterCascadeDelete = True
- BinaryRequest = False
- Datapacks = -1
- DataCache = False
- Params = <>
- CacheUpdateRecords = True
- AutoCommitData = False
- AutoRefreshAfterCommit = False
- RaiseErrors = True
- Filtered = False
- DWResponseTranslator = DWResponseTranslator1
- ActionCursor = crSQLWait
- ReflectChanges = False
- left = 344
- top = 368
- end
- object DWResponseTranslator1: TDWResponseTranslator
- ElementAutoReadRootIndex = True
- ElementRootBaseIndex = -1
- RequestOpen = rtGet
- RequestInsert = rtPost
- RequestEdit = rtPost
- RequestDelete = rtDelete
- FieldDefs = <>
- left = 312
- top = 368
- end
end
diff --git a/CORE/Source/Plugins/Memdataset/uRESTDWMemResources.pas b/CORE/Source/Plugins/Memdataset/uRESTDWMemResources.pas
index 8fe44b0e3..5f2dc7e2e 100644
--- a/CORE/Source/Plugins/Memdataset/uRESTDWMemResources.pas
+++ b/CORE/Source/Plugins/Memdataset/uRESTDWMemResources.pas
@@ -2617,9 +2617,9 @@ interface
{$ENDIF UNITVERSIONING}
implementation
{$IFDEF UNITVERSIONING}
-initialization
+ initialization
RegisterUnitVersion(HInstance, UnitVersioning);
-finalization
+ finalization
UnregisterUnitVersion(HInstance);
{$ENDIF UNITVERSIONING}
end.
diff --git a/CORE/Source/Plugins/Memdataset/uRESTDWMemoryDataset.pas b/CORE/Source/Plugins/Memdataset/uRESTDWMemoryDataset.pas
index a9cf66933..4d81535e6 100644
--- a/CORE/Source/Plugins/Memdataset/uRESTDWMemoryDataset.pas
+++ b/CORE/Source/Plugins/Memdataset/uRESTDWMemoryDataset.pas
@@ -1017,7 +1017,7 @@ TMemBookmarkInfo = record
dwftAutoInc : Result := SizeOf(Longint);
dwftLargeint : Result := {$IFDEF FPC}8{$ELSE}{$IF CompilerVersion <= 22}8{$ELSE}64{$IFEND}{$ENDIF}; //Field Size é 64 Bits
dwftBCD, //Result := SizeOf(TBcd);
- dwftFMTBCD : Result := {$IFDEF FPC}8{$ELSE}SizeOf(DWBCD){$ENDIF};
+ dwftFMTBCD : Result := SizeOf(Currency);
dwftTimeStampOffset : Begin
Inc(Result,SizeOf(Double));
Inc(Result,SizeOf(Byte));
@@ -1943,10 +1943,14 @@ function TRESTDWMemTable.InternalGetFieldData(Field: TField;
{$IFDEF FPC}
vSingle : DWSingle;
vDataType : Byte;
+ vBCD : TBCD;
+ vBCDA : DWLongDouble;
{$ENDIF}
- vBCD : Real;
vDouble : DWFloat;
+ vLongDouble : DWCurrency;
vTimeStamp : TSQLTimeStamp;
+ vTimeStampV : TTimeStamp;
+ vDateTimeInt : DWInteger;
vDateTimeRec : TDateTimeRec;
vDWFieldType : Byte;
Begin
@@ -2244,6 +2248,12 @@ function TRESTDWMemTable.InternalGetFieldData(Field: TField;
cLen := SizeOf(vBCD);
Move(Pointer(@vBCD)^, Pointer(Buffer)^, cLen);
End
+ Else If vDataType = dwftBCD Then
+ Begin
+ Move(aDataBytes[1], Pointer(@vLongDouble)^, SizeOf(vLongDouble));
+ cLen := SizeOf(vLongDouble);
+ Move(Pointer(@vLongDouble)^, Pointer(Buffer)^, cLen);
+ End
Else
Move(aDataBytes[1], Pointer(Buffer)^, cLen-1);
End
@@ -2253,7 +2263,7 @@ function TRESTDWMemTable.InternalGetFieldData(Field: TField;
If Length(TRESTDWBytes(Buffer)) = 0 Then
SetLength(TRESTDWBytes(Buffer), cLen);
cLen := SizeOf(TDateTimeRec);
- Move(aDataBytes[1], Pointer(@vDouble)^, SizeOf(vDouble));
+ Move(aDataBytes[1], Pointer(@vDouble)^, SizeOf(DWDouble));
Case Field.datatype Of
ftTime : Begin
vDateTimeRec.Time := DateTimeToTimeStamp(vDouble).Time;
@@ -2590,6 +2600,7 @@ procedure TRESTDWMemTable.InternalSetFieldData(Field: TField; Buffer: Pointer;
End
Else
Begin
+ vDateTime := 0;
vDateTime := IncMillisecond(vDateTime, vDateTimeInt);
vDateFloat := vDateTime;
End;
diff --git a/CORE/Source/Plugins/SQLEditor/uRESTDWSqlEditor.lfm b/CORE/Source/Plugins/SQLEditor/uRESTDWSqlEditor.lfm
index 3b294a846..a8b92599f 100644
--- a/CORE/Source/Plugins/SQLEditor/uRESTDWSqlEditor.lfm
+++ b/CORE/Source/Plugins/SQLEditor/uRESTDWSqlEditor.lfm
@@ -1,23 +1,24 @@
object FrmDWSqlEditor: TFrmDWSqlEditor
Left = 472
- Height = 756
+ Height = 1134
Top = 195
- Width = 1079
+ Width = 1618
BorderIcons = [biMinimize]
BorderWidth = 5
Caption = 'RESTDWClientSQL Editor'
- ClientHeight = 756
- ClientWidth = 1079
+ ClientHeight = 1134
+ ClientWidth = 1618
Color = clBtnFace
+ DesignTimePPI = 144
Font.Color = clWindowText
- Font.Height = -11
+ Font.Height = -17
Font.Name = 'Tahoma'
+ Position = poScreenCenter
+ LCLVersion = '4.0.0.4'
OnActivate = FormActivate
OnClose = FormClose
OnCreate = FormCreate
OnShow = FormShow
- Position = poScreenCenter
- LCLVersion = '3.8.0.0'
object PnlSQL: TPanel
Left = 5
Height = 415
@@ -30,21 +31,21 @@ object FrmDWSqlEditor: TFrmDWSqlEditor
ParentBackground = False
TabOrder = 0
object PnlButton: TPanel
- Left = 974
+ Left = 927
Height = 415
Top = 0
- Width = 95
+ Width = 142
Align = alRight
BevelOuter = bvNone
ClientHeight = 415
- ClientWidth = 95
+ ClientWidth = 142
ParentBackground = False
TabOrder = 0
object BtnExecute: TButton
- Left = 8
- Height = 25
- Top = 20
- Width = 80
+ Left = 12
+ Height = 38
+ Top = 30
+ Width = 120
Caption = 'Execute'
TabOrder = 0
OnClick = BtnExecuteClick
@@ -73,8 +74,8 @@ object FrmDWSqlEditor: TFrmDWSqlEditor
object TabSheetSQL: TTabSheet
BorderWidth = 5
Caption = 'SQL Command'
- ClientHeight = 368
- ClientWidth = 757
+ ClientHeight = 0
+ ClientWidth = 0
object Memo: TMemo
Left = 0
Height = 368
@@ -90,32 +91,32 @@ object FrmDWSqlEditor: TFrmDWSqlEditor
end
object Panel1: TPanel
Left = 0
- Height = 21
- Top = 394
+ Height = 32
+ Top = 383
Width = 765
Align = alBottom
BevelOuter = bvLowered
- ClientHeight = 21
+ ClientHeight = 32
ClientWidth = 765
ParentBackground = False
TabOrder = 1
object Label3: TLabel
- Left = 7
+ Left = 10
Height = 13
- Top = 4
+ Top = 6
Width = 79
Caption = 'Execute Time:'
Font.Color = clWindowText
- Font.Height = -11
+ Font.Height = -17
Font.Name = 'Tahoma'
Font.Style = [fsBold]
ParentColor = False
ParentFont = False
end
object lbExecutedTime: TLabel
- Left = 91
+ Left = 136
Height = 13
- Top = 4
+ Top = 6
Width = 66
Caption = '00:00:00:000'
ParentColor = False
@@ -126,16 +127,16 @@ object FrmDWSqlEditor: TFrmDWSqlEditor
Left = 0
Height = 415
Top = 0
- Width = 209
+ Width = 314
Align = alLeft
BevelOuter = bvNone
ClientHeight = 415
- ClientWidth = 209
+ ClientWidth = 314
ParentBackground = False
TabOrder = 2
object labSql: TLabel
Left = 0
- Height = 23
+ Height = 34
Top = 0
Width = 209
Align = alTop
@@ -143,7 +144,7 @@ object FrmDWSqlEditor: TFrmDWSqlEditor
Caption = ' .: TABLES'
Color = clBtnShadow
Font.Color = clWhite
- Font.Height = 24
+ Font.Height = 36
Font.Name = 'Segoe UI'
Layout = tlCenter
ParentColor = False
@@ -152,7 +153,7 @@ object FrmDWSqlEditor: TFrmDWSqlEditor
end
object Label1: TLabel
Left = 0
- Height = 23
+ Height = 34
Top = 232
Width = 209
Align = alTop
@@ -160,7 +161,7 @@ object FrmDWSqlEditor: TFrmDWSqlEditor
Caption = ' .: FIELDS'
Color = clBtnShadow
Font.Color = clWhite
- Font.Height = -16
+ Font.Height = -24
Font.Name = 'Segoe UI'
Layout = tlCenter
ParentColor = False
@@ -169,7 +170,7 @@ object FrmDWSqlEditor: TFrmDWSqlEditor
end
object Label2: TLabel
Left = 0
- Height = 23
+ Height = 34
Top = 153
Width = 209
Align = alTop
@@ -177,7 +178,7 @@ object FrmDWSqlEditor: TFrmDWSqlEditor
Caption = ' .: SQL TYPE'
Color = clBtnShadow
Font.Color = clWhite
- Font.Height = -16
+ Font.Height = -24
Font.Name = 'Segoe UI'
Layout = tlCenter
ParentColor = False
@@ -186,7 +187,7 @@ object FrmDWSqlEditor: TFrmDWSqlEditor
end
object lbTables: TListBox
Left = 0
- Height = 130
+ Height = 195
Top = 23
Width = 209
Align = alTop
@@ -211,27 +212,27 @@ object FrmDWSqlEditor: TFrmDWSqlEditor
end
object pSQLTypes: TPanel
Left = 0
- Height = 56
+ Height = 84
Top = 176
Width = 209
Align = alTop
BevelOuter = bvNone
- ClientHeight = 56
+ ClientHeight = 84
ClientWidth = 209
ParentBackground = False
TabOrder = 2
object rbInsert: TRadioButton
- Left = 88
+ Left = 132
Height = 17
- Top = 8
+ Top = 12
Width = 47
Caption = 'Insert'
TabOrder = 0
end
object rbSelect: TRadioButton
- Left = 8
+ Left = 12
Height = 17
- Top = 8
+ Top = 12
Width = 47
Caption = 'Select'
Checked = True
@@ -239,17 +240,17 @@ object FrmDWSqlEditor: TFrmDWSqlEditor
TabStop = True
end
object rbDelete: TRadioButton
- Left = 88
+ Left = 132
Height = 17
- Top = 32
+ Top = 48
Width = 49
Caption = 'Delete'
TabOrder = 2
end
object rbUpdate: TRadioButton
- Left = 8
+ Left = 12
Height = 17
- Top = 32
+ Top = 48
Width = 53
Caption = 'Update'
TabOrder = 3
@@ -259,20 +260,20 @@ object FrmDWSqlEditor: TFrmDWSqlEditor
end
object PnlAction: TPanel
Left = 5
- Height = 41
- Top = 710
+ Height = 62
+ Top = 689
Width = 1069
Align = alBottom
BevelOuter = bvNone
- ClientHeight = 41
+ ClientHeight = 62
ClientWidth = 1069
ParentBackground = False
TabOrder = 1
object BtnOk: TButton
- Left = 905
- Height = 25
- Top = 8
- Width = 75
+ Left = 823
+ Height = 38
+ Top = 12
+ Width = 112
Anchors = [akTop, akRight]
Caption = 'Ok'
Default = True
@@ -280,10 +281,10 @@ object FrmDWSqlEditor: TFrmDWSqlEditor
OnClick = BtnOkClick
end
object BtnCancelar: TButton
- Left = 986
- Height = 25
- Top = 8
- Width = 75
+ Left = 945
+ Height = 38
+ Top = 12
+ Width = 112
Anchors = [akTop, akRight]
Cancel = True
Caption = 'Cancel'
@@ -293,8 +294,8 @@ object FrmDWSqlEditor: TFrmDWSqlEditor
end
object PageControlResult: TPageControl
Left = 5
- Height = 290
- Top = 420
+ Height = 435
+ Top = 275
Width = 1069
ActivePage = TabSheetTable
Align = alBottom
@@ -303,8 +304,8 @@ object FrmDWSqlEditor: TFrmDWSqlEditor
object TabSheetTable: TTabSheet
BorderWidth = 5
Caption = 'RecordSet'
- ClientHeight = 264
- ClientWidth = 1061
+ ClientHeight = 0
+ ClientWidth = 0
object DBGridRecord: TDBGrid
Left = 0
Height = 264
@@ -315,7 +316,7 @@ object FrmDWSqlEditor: TFrmDWSqlEditor
Columns = <>
TabOrder = 0
TitleFont.Color = clWindowText
- TitleFont.Height = -11
+ TitleFont.Height = -17
TitleFont.Name = 'Tahoma'
end
end
@@ -324,7 +325,7 @@ object FrmDWSqlEditor: TFrmDWSqlEditor
Enabled = False
Interval = 200
OnTimer = tmCloseTimer
- Left = 341
- Top = 240
+ Left = 512
+ Top = 360
end
end
diff --git a/CORE/Source/Plugins/SQLEditor/uRESTDWSqlEditor.pas b/CORE/Source/Plugins/SQLEditor/uRESTDWSqlEditor.pas
index ee4848db0..8c63ea6d4 100644
--- a/CORE/Source/Plugins/SQLEditor/uRESTDWSqlEditor.pas
+++ b/CORE/Source/Plugins/SQLEditor/uRESTDWSqlEditor.pas
@@ -58,7 +58,7 @@ TThrBancoDados = class(TThread)
protected
procedure Execute; override;
{$IFDEF FPC}
- procedure TerminatedSet; override;
+ procedure TerminatedSet; {$IFNDEF NOGUI}override;{$ENDIF}
{$ENDIF}
procedure callFimBusca;
public
@@ -608,7 +608,7 @@ procedure TThrBancoDados.Execute;
{$IFDEF FPC}
procedure TThrBancoDados.TerminatedSet;
begin
- inherited TerminatedSet;
+ {$IFNDEF NOGUI} inherited TerminatedSet;{$ENDIF}
DoTerminate;
end;
{$ENDIF}
diff --git a/CORE/Source/Plugins/SelfSigned/uRESTDWSelfSigned.pas b/CORE/Source/Plugins/SelfSigned/uRESTDWSelfSigned.pas
index f49c116c2..c8c9067bc 100644
--- a/CORE/Source/Plugins/SelfSigned/uRESTDWSelfSigned.pas
+++ b/CORE/Source/Plugins/SelfSigned/uRESTDWSelfSigned.pas
@@ -624,18 +624,19 @@ constructor TRESTDWSelfSigned.Create(AOwner: TComponent);
FCertificate := nil;
FPrivateKey := nil;
-
+ {$IFNDEF RESTDWLAMW}
if (LoadCrypto) and (LoadSSL) then
FOpenSSLVersion := OpenSSL_version_num();
+ {$ENDIF}
end;
destructor TRESTDWSelfSigned.Destroy;
begin
ClearCerts;
-
+ {$IFNDEF RESTDWLAMW}
UnloadCrypto;
- UnloadSSL;
-
+ {$ENDIF}
+ UnloadSSL;
inherited Destroy;
end;
@@ -694,9 +695,10 @@ function TRESTDWSelfSigned.CreateSelfSignedCert : Boolean;
Extension: PX509_EXTENSION;
AServerName: RawByteString;
begin
+ {$IFNDEF RESTDWLAMW}
if (not LoadCrypto) or (not LoadSSL) then
Exit;
-
+ {$ENDIF}
ClearCerts;
{ Create a self-signed certificate }
@@ -817,9 +819,10 @@ procedure TRESTDWSelfSigned.SavePrivateKeyToPemStream(var stream : TStream; pass
cipher1 : TSslCipher;
cipher2 : PEVP_CIPHER;
begin
+ {$IFNDEF RESTDWLAMW}
if (not LoadCrypto) or (not LoadSSL) then
Exit;
-
+ {$ENDIF}
stream.Size := 0;
{ Write the private key }
diff --git a/CORE/Source/Sockets/Indy/uRESTDWIdBase.pas b/CORE/Source/Sockets/Indy/uRESTDWIdBase.pas
index ebe0bbaa9..3f5e1f712 100644
--- a/CORE/Source/Sockets/Indy/uRESTDWIdBase.pas
+++ b/CORE/Source/Sockets/Indy/uRESTDWIdBase.pas
@@ -32,7 +32,7 @@ interface
Uses
{$IFDEF RESTDWWINDOWS}Windows,{$ENDIF}
{$IFNDEF RESTDWLAZARUS}SyncObjs,{$ENDIF}
- {$IF not Defined(RESTDWLAZARUS) AND not Defined(DELPHIXEUP)}uRESTDWMassiveBuffer,{$IFEND}
+ {$IF not Defined(RESTDWLAZARUS) AND not Defined(RESTDWLAMW) AND not Defined(DELPHIXEUP)}uRESTDWMassiveBuffer,{$IFEND}
SysUtils, Classes, Db, Variants,
uRESTDWBasic, uRESTDWBasicDB, uRESTDWComponentEvents, uRESTDWBasicTypes,
uRESTDWJSONObject, uRESTDWParams, uRESTDWBasicClass, uRESTDWAbout,
diff --git a/CORE/Source/Sockets/Indy/uRESTDWIdReg.pas b/CORE/Source/Sockets/Indy/uRESTDWIdReg.pas
index 427d788aa..c8e8c9d70 100644
--- a/CORE/Source/Sockets/Indy/uRESTDWIdReg.pas
+++ b/CORE/Source/Sockets/Indy/uRESTDWIdReg.pas
@@ -27,8 +27,12 @@ interface
uses
{$IFDEF RESTDWLAZARUS}
StdCtrls, ComCtrls, Forms, ExtCtrls, DBCtrls, DBGrids, Dialogs, Controls,
- LResources, LazFileUtils, FormEditingIntf, PropEdits, lazideintf,
- ProjectIntf, ComponentEditors, fpWeb,
+ LResources, LazFileUtils,
+ {$IFNDEF RESTDWLAMW}
+ FormEditingIntf, PropEdits, lazideintf,
+ ProjectIntf, ComponentEditors,
+ {$ENDIF}
+ fpWeb,
{$ELSE}
{$IFNDEF DELPHIXE2UP}
Graphics,
@@ -38,6 +42,7 @@ interface
{$ENDIF}
Classes, uRESTDWIdBase;
+{$IFNDEF RESTDWLAMW}
Type
TPoolersList = Class(TStringProperty)
Public
@@ -45,11 +50,13 @@ interface
Procedure GetValues(Proc: TGetStrProc); Override;
Procedure Edit; Override;
End;
+{$ENDIF}
Procedure Register;
Implementation
+{$IFNDEF RESTDWLAMW}
Function TPoolersList.GetAttributes: TPropertyAttributes;
Begin
// editor, sorted list, multiple selection
@@ -84,13 +91,16 @@ interface
End;
End;
End;
+{$ENDIF}
Procedure Register;
Begin
RegisterComponents ('REST Dataware - Service', [TRESTDWIdServicePooler, TRESTDWIdProxyRequest, TRESTDWIdPoolerList]);
RegisterComponents ('REST Dataware - Client', [TRESTDWIdClientREST, TRESTDWIdClientPooler]);
RegisterComponents ('REST Dataware - DB', [TRESTDWIdDatabase]);
+ {$IFNDEF RESTDWLAMW}
RegisterPropertyEditor(TypeInfo(String), TRESTDWIdDatabase, 'PoolerName', TPoolersList);
+ {$ENDIF}
End;
{$IFDEF RESTDWLAZARUS}
diff --git a/CORE/Source/Sockets/JClient_LAMW/uRESTDWjClientLAMWBase.pas b/CORE/Source/Sockets/JClient_LAMW/uRESTDWjClientLAMWBase.pas
new file mode 100644
index 000000000..be6468721
--- /dev/null
+++ b/CORE/Source/Sockets/JClient_LAMW/uRESTDWjClientLAMWBase.pas
@@ -0,0 +1,1971 @@
+unit uRESTDWjClientLAMWBase;
+
+{$I ..\..\Includes\uRESTDW.inc}
+
+{
+ REST Dataware .
+ Criado por XyberX (Gilbero Rocha da Silva), o REST Dataware tem como objetivo o uso de REST/JSON
+ de maneira simples, em qualquer Compilador Pascal (Delphi, Lazarus e outros...).
+ O REST Dataware também tem por objetivo levar componentes compatíveis entre o Delphi e outros Compiladores
+ Pascal e com compatibilidade entre sistemas operacionais.
+ Desenvolvido para ser usado de Maneira RAD, o REST Dataware tem como objetivo principal você usuário que precisa
+ de produtividade e flexibilidade para produção de Serviços REST/JSON, simplificando o processo para você programador.
+
+ Membros do Grupo :
+
+ XyberX (Gilberto Rocha) - Admin - Criador e Administrador do pacote.
+ A. Brito - Admin - Administrador do desenvolvimento.
+ Alexandre Abbade - Admin - Administrador do desenvolvimento de DEMOS, coordenador do Grupo.
+ Flávio Motta - Member Tester and DEMO Developer.
+ Mobius One - Devel, Tester and Admin.
+ Gustavo - Criptografia and Devel.
+ Eloy - Devel.
+ Roniery - Devel.
+}
+
+interface
+
+{$IFDEF FPC}
+ {$MODE OBJFPC}{$H+}
+{$ENDIF}
+
+Uses
+ {$IFDEF RESTDWWINDOWS}Windows,{$ENDIF}
+ {$IFNDEF RESTDWLAZARUS}SyncObjs,{$ENDIF}
+ {$IF not Defined(RESTDWLAZARUS) AND not Defined(RESTDWLAMW) AND not Defined(DELPHIXEUP)}uRESTDWMassiveBuffer,{$IFEND}
+ SysUtils, Classes, Db, Variants,
+ uRESTDWBasic, uRESTDWBasicDB, uRESTDWComponentEvents, uRESTDWBasicTypes,
+ uRESTDWJSONObject, uRESTDWParams, uRESTDWBasicClass, uRESTDWAbout,
+ uRESTDWConsts, uRESTDWProtoTypes, uRESTDWDataUtils, uRESTDWTools, uRESTDWZlib,
+ uRESTDWAuthenticators, And_jni, Laz_And_Controls;
+
+Type
+ TRESTDWjClientLAMWClientHttpBase = Class(TRESTDWClientHttpBase)
+ Private
+ HttpRequest : jHttpClient;
+ vVerifyCert : Boolean;
+ vAUrl : String;
+ vOnGetpassword : TOnGetpassword;
+ Procedure SetParams;
+ Procedure SetHeaders (AHeaders : TStringList);Overload;Override;
+ Procedure SetOnWorkEnd (Value : TOnWorkEnd);Override;
+ Procedure SetOnStatus (Value : TOnStatus); Override;
+ Procedure DestroyClient;Override;
+ Procedure SetInternalEvents;
+ Public
+ Constructor Create(AOwner : TComponent);Override;
+ Destructor Destroy;Override;
+ Function Get (AUrl : String = '';
+ Const CustomHeaders : TStringList = Nil;
+ Const AResponse : TStream = Nil;
+ Const AResponseError : TStream = Nil) : Integer;Override;
+ Function Post (AUrl : String = '';
+ Const CustomHeaders : TStringList = Nil;
+ Const CustomParams : TStringList = Nil;
+ Const CustomBody : TStream = Nil;
+ Const AResponse : TStream = Nil;
+ Const AResponseError : TStream = Nil) : Integer;Override;
+ Function Delete (AUrl : String;
+ Const CustomHeaders : TStringList = Nil;
+ Const CustomParams : TStringList = Nil;
+ Const AResponse : TStream = Nil;
+ Const AResponseError : TStream = Nil) : Integer;Override;
+End;
+
+
+ TRESTDWjClientLAMWClientREST = Class(TRESTDWClientRESTBase)
+ Private
+ HttpRequest : jHttpClient;
+ vVerifyCert : Boolean;
+ vAUrl : String;
+ Procedure SetRawHeaders (AHeaders : TStringList;
+ Var clientConn : jObject);
+ Procedure SetParams;Overload;
+ Procedure SetParams(stream : TStream);
+ Procedure SetHeaders (AHeaders : TStringList;
+ Var clientConn : jObject);
+ Procedure SetOnStatus (Value : TOnStatus); Override;
+ Procedure DestroyClient;Override;
+ Public
+ Constructor Create(AOwner : TComponent);Override;
+ Destructor Destroy;Override;
+ Function Get (AUrl : String = '';
+ CustomHeaders : TStringList = Nil;
+ Const AResponse : TStream = Nil;
+ IgnoreEvents : Boolean = False):Integer;Overload;Override;
+ Function Get (AUrl : String = '';
+ CustomHeaders : TStringList = Nil;
+ IgnoreEvents : Boolean = False):String; Overload;Override;
+ Function Post (AUrl : String = '';
+ CustomHeaders : TStringList = Nil;
+ Const CustomBody : TStream = Nil;
+ IgnoreEvents : Boolean = False;
+ RawHeaders : Boolean = False):Integer;Overload;Override;
+ Function Post (AUrl : String = '';
+ CustomHeaders : TStringList = Nil;
+ CustomBody : TStringList = Nil;
+ Const AResponse : TStringStream = Nil;
+ IgnoreEvents : Boolean = False;
+ RawHeaders : Boolean = False):Integer;Overload;
+
+ Function Post (AUrl : String = '';
+ CustomHeaders : TStringList = Nil;
+ FileName : String = '';
+ FileStream : TStream = Nil;
+ Const AResponse : TStream = Nil;
+ IgnoreEvents : Boolean = False;
+ RawHeaders : Boolean = False):Integer;Overload;Override;
+ Function Post (AUrl : String;
+ var AResponseText : String;
+ CustomHeaders : TStringList = Nil;
+ CustomParams : TStringList = Nil;
+ Const CustomBody : TStream = Nil;
+ Const AResponse : TStream = Nil;
+ IgnoreEvents : Boolean = False;
+ RawHeaders : Boolean = False):Integer;Overload;Override;
+ Function Post (AUrl : String;
+ CustomHeaders : TStringList = Nil;
+ CustomParams : TStringList = Nil;
+ FileName : String = '';
+ FileStream : TStream = Nil;
+ Const AResponse : TStream = Nil;
+ IgnoreEvents : Boolean = False;
+ RawHeaders : Boolean = False):Integer;Overload;Override;
+ Function Delete (AUrl : String = '';
+ CustomHeaders : TStringList = Nil;
+ Const AResponse : TStream = Nil;
+ IgnoreEvents : Boolean = False):Integer;Overload;Override;
+ Function Delete (AUrl : String;
+ CustomHeaders : TStringList = Nil;
+ CustomParams : TStringList = Nil;
+ Const AResponse : TStream = Nil;
+ IgnoreEvents : Boolean = False):Integer;Overload;Override;
+End;
+
+ TRESTDWjClientLAMWDatabase = Class(TRESTDWDatabasebaseBase)
+ Private
+ Public
+ Constructor Create (AOwner : TComponent);Override;
+ Destructor Destroy;Override;
+ Function IsServerLive (Aip : String;
+ Aport : Integer;
+ AMessageErro : String): Boolean; Override;
+End;
+
+ TRESTDWjClientLAMWClientPooler = Class(TRESTClientPoolerBase)
+ Private
+ HttpRequest : TRESTDWjClientLAMWClientREST;
+ Function SendEvent (EventData : String;
+ Var Params : TRESTDWParams;
+ EventType : TSendEvent = sePOST;
+ DataMode : TDataMode = dmDataware;
+ ServerEventName : String = '';
+ Assyncexec : Boolean = False) : String;Override;
+ Procedure SetParams (TransparentProxy : TProxyConnectionInfo;
+ aRequestTimeout,
+ aConnectTimeout : Integer;
+ AuthorizationParams : TRESTDWClientAuthOptionParams);
+ Public
+ Constructor Create (AOwner : TComponent);Override;
+ Destructor Destroy;Override;
+ Procedure ReconfigureConnection(aTypeRequest : Ttyperequest;
+ aWelcomeMessage,
+ aHost : String;
+ aPort : Integer;
+ Compression,
+ EncodeStrings : Boolean;
+ aEncoding : TEncodeSelect;
+ aAccessTag : String;
+ aAuthenticationOptions : TRESTDWClientAuthOptionParams);Override;
+ Function IsServerLive (Aip : String;
+ Aport : Integer;
+ AMessageErro : String): Boolean;
+ Procedure Abort;Override;
+End;
+
+ TRESTDWjClientLAMWPoolerList = Class(TRESTDWPoolerListBase)
+ Public
+ Constructor Create(AOwner : TComponent);Override; //Cria o Componente
+ Destructor Destroy;Override;
+ End;
+
+//Fix to Indy Request Patch and Put
+Type
+ jHttpClientAccess = class(jHttpClient)
+End;
+
+Implementation
+
+Uses uRESTDWJSONInterface;
+
+Destructor TRESTDWjClientLAMWClientREST.Destroy;
+Begin
+ If Assigned(HttpRequest) then
+ Begin
+ Try
+ HttpRequest.Disconnect(HttpRequest);
+ HttpRequest.Free;
+ Except
+ End;
+ End;
+ Inherited;
+End;
+
+Procedure TRESTDWjClientLAMWClientREST.DestroyClient;
+Begin
+ {$IFNDEF RESTDWLAZARUS}
+ {$IFNDEF FPC}
+ Inherited;
+ {$ENDIF}
+ {$ELSE}
+ {$IFNDEF FPC}
+ Inherited;
+ {$ENDIF}
+ {$ENDIF}
+ If Assigned(HttpRequest) Then
+ Begin
+ HttpRequest.Disconnect(HttpRequest);
+ //FreeAndNil(HttpRequest);
+ End;
+End;
+
+Procedure TRESTDWjClientLAMWClientREST.SetParams(stream : TStream);
+Begin
+
+End;
+
+Procedure TRESTDWjClientLAMWClientREST.SetParams;
+begin
+ Try
+ If Not Assigned(HttpRequest) Then
+ HttpRequest := jHttpClient.Create(Nil);
+ Finally
+ If RequestCharset = esUtf8 Then
+ HttpRequest.CharSet := 'utf-8';
+ HttpRequest.ClearNameValueData;
+ HttpRequest.SetRequestProperty(HttpRequest, 'Accept', Accept);
+ HttpRequest.SetRequestProperty(HttpRequest, 'AcceptEncoding', AcceptEncoding);
+ HttpRequest.SetRequestProperty(HttpRequest, 'ContentType', ContentType);
+ HttpRequest.SetRequestProperty(HttpRequest, 'ContentEncoding', ContentEncoding);
+ HttpRequest.SetRequestProperty(HttpRequest, 'UserAgent', UserAgent);
+ End;
+End;
+
+Function TRESTDWjClientLAMWClientREST.Get(AUrl : String = '';
+ CustomHeaders : TStringList = Nil;
+ Const AResponse : TStream = Nil;
+ IgnoreEvents : Boolean = False) : Integer;
+Var
+ aString : String;
+ vTempHeaders : TStringList;
+ atempResponse: TStream;
+ clientConn : jObject;
+Begin
+ Result:= 200; // o novo metodo recebe sempre 200 como code inicial;
+ Try
+ AUrl := StringReplace(AUrl, #012, '', [rfReplaceAll]);
+ vAUrl := AUrl;
+ SetParams;
+ SetUseSSL(UseSSL);
+ vTempHeaders := TStringList.Create;
+ Try
+ SetHeaders(TStringList(DefaultCustomHeader), clientConn);
+ If Not IgnoreEvents Then
+ If Assigned(OnBeforeGet) then
+ If Not Assigned(CustomHeaders) Then
+ OnBeforeGet(AUrl, vTempHeaders)
+ Else
+ OnBeforeGet(AUrl, CustomHeaders);
+ //Copy New Headers
+ CopyStringList(CustomHeaders, vTempHeaders);
+ If RequestCharset = esUtf8 Then
+ atempResponse := TStringStream.Create(utf8Decode(HttpRequest.Get(AUrl)))
+ Else
+ atempResponse := TStringStream.Create(HttpRequest.Get(AUrl));
+ Result:= HttpRequest.GetResponseCode;
+ atempResponse.Position := 0;
+ If Not IgnoreEvents Then
+ If Assigned(OnAfterRequest) then
+ OnAfterRequest(AUrl, rtGet, atempResponse);
+ Finally
+ vTempHeaders.Free;
+ If Assigned(atempResponse) Then
+ atempResponse.Free;
+ End;
+ Except
+ On E : Exception Do
+ Begin
+ Raise Exception.Create(E.Message);
+ HttpRequest.Disconnect(HttpRequest);
+ End;
+ End;
+ DestroyClient;
+End;
+
+Function TRESTDWjClientLAMWClientREST.Get(AUrl : String = '';
+ CustomHeaders : TStringList = Nil;
+ IgnoreEvents : Boolean = False) : String;
+Var
+ temp : TStringStream;
+ vTempHeaders : TStringList;
+ clientConn : jObject;
+Begin
+ Try
+ AUrl := StringReplace(AUrl, #012, '', [rfReplaceAll]);
+ vAUrl := AUrl;
+ Result := '';
+ SetParams;
+ SetUseSSL(UseSSL);
+ vTempHeaders := TStringList.Create;
+ Try
+ SetHeaders(TStringList(DefaultCustomHeader), clientConn);
+ If Not IgnoreEvents Then
+ If Assigned(OnBeforeGet) then
+ If Not Assigned(CustomHeaders) Then
+ OnBeforeGet(AUrl, vTempHeaders)
+ Else
+ OnBeforeGet(AUrl, CustomHeaders);
+ CopyStringList(CustomHeaders, vTempHeaders);
+ Result := HttpRequest.Get(AUrl);
+ Finally
+ vTempHeaders.Free;
+ End;
+ Except
+ On E : Exception Do
+ Begin
+ Raise Exception.Create(E.Message);
+ HttpRequest.Disconnect(HttpRequest);
+ End;
+ End;
+ DestroyClient;
+End;
+
+Function TRESTDWjClientLAMWClientREST.Post(AUrl : String = '';
+ CustomHeaders : TStringList = Nil;
+ Const CustomBody : TStream = Nil;
+ IgnoreEvents : Boolean = False;
+ RawHeaders : Boolean = False) : Integer;
+Var
+ temp : TStringStream;
+ vTempHeaders : TStringList;
+ atempResponse: TStringStream;
+ aString,
+ sResponse : string;
+ clientConn : jObject;
+Begin
+ Result:= 200;
+ Try
+ SetParams;
+ SetUseSSL(UseSSL);
+ vTempHeaders := TStringList.Create;
+ atempResponse := TStringStream.Create('');
+ vAUrl := AUrl;
+ Try
+ SetHeaders(TStringList(DefaultCustomHeader), clientConn);
+ If Not IgnoreEvents Then
+ If Assigned(OnBeforePost) then
+ If Not Assigned(CustomHeaders) Then
+ OnBeforePost(AUrl, vTempHeaders)
+ Else
+ OnBeforePost(AUrl, CustomHeaders);
+ CopyStringList(CustomHeaders, vTempHeaders);
+ SetRawHeaders(vTempHeaders, clientConn);
+ clientConn := HttpRequest.OpenConnection(AUrl);
+ If Not Assigned(CustomBody) Then
+ Begin
+ atempResponse := TStringStream.Create(HttpRequest.Post(clientConn));
+ Result:= HttpRequest.GetResponseCode;
+ atempResponse.Position := 0;
+ If Not IgnoreEvents Then
+ If Assigned(OnAfterRequest) then
+ OnAfterRequest(AUrl, rtPost, atempResponse);
+ FreeAndNil(atempResponse);
+ End
+ Else
+ Begin
+ atempResponse := TStringStream.Create(HttpRequest.Post(clientConn));
+ Result:= HttpRequest.GetResponseCode;
+ atempResponse.Position := 0;
+ CustomBody.CopyFrom(atempResponse, atempResponse.Size);
+ CustomBody.Position := 0;
+ FreeAndNil(atempResponse);
+ If Not IgnoreEvents Then
+ If Assigned(OnAfterRequest) then
+ OnAfterRequest(AUrl, rtPost, CustomBody);
+ End;
+ Finally
+ vTempHeaders.Free;
+ If Assigned(atempResponse) Then
+ FreeAndNil(atempResponse);
+ End;
+ Except
+ On E : Exception Do
+ Begin
+ Raise Exception.Create(E.Message);
+ HttpRequest.Disconnect(clientConn);
+ End;
+ End;
+ DestroyClient;
+End;
+
+
+Function TRESTDWjClientLAMWClientREST.Post(AUrl : String = '';
+ CustomHeaders : TStringList = Nil;
+ CustomBody : TStringList = Nil;
+ Const AResponse : TStringStream = Nil;
+ IgnoreEvents : Boolean = False;
+ RawHeaders : Boolean = False):Integer;
+Var
+ temp : TStringStream;
+ vTempHeaders : TStringList;
+ atempResponse: TStringStream;
+ clientConn : jObject;
+Begin
+ Result:= 200;
+ Try
+ atempResponse := Nil;
+ SetParams;
+ SetUseSSL(UseSSL);
+ vTempHeaders := TStringList.Create;
+ vAUrl := AUrl;
+ Try
+ //Copy Custom Headers
+ SetHeaders(CustomHeaders, clientConn);
+ If Not IgnoreEvents Then
+ If Assigned(OnBeforePost) then
+ If Not Assigned(CustomHeaders) Then
+ OnBeforePost(AUrl, vTempHeaders)
+ Else
+ OnBeforePost(AUrl, CustomHeaders);
+ clientConn := HttpRequest.OpenConnection(AUrl);
+ If RequestCharset = esUtf8 Then
+ atempResponse := TStringStream.Create(utf8Decode(HttpRequest.Post(clientConn)))
+ Else
+ atempResponse := TStringStream.Create(HttpRequest.Post(clientConn));
+ Result:= HttpRequest.GetResponseCode;
+ atempResponse.Position := 0;
+ atempResponse.Position := 0;
+ If RequestCharset = esUtf8 Then
+ AResponse.WriteString(utf8Decode(atempResponse.DataString))
+ Else
+ AResponse.WriteString(atempResponse.DataString);
+ FreeAndNil(atempResponse);
+ AResponse.Position := 0;
+ If Not IgnoreEvents Then
+ If Assigned(OnAfterRequest) then
+ OnAfterRequest(AUrl, rtPost, AResponse);
+ Finally
+ vTempHeaders.Free;
+ If Assigned(atempResponse) Then
+ atempResponse.Free;
+ If Assigned(temp) Then
+ temp.Free;
+ End;
+ Except
+ On E : Exception Do
+ Begin
+ Raise Exception.Create(E.Message);
+ HttpRequest.Disconnect(clientConn);
+ End;
+ End;
+End;
+
+Function TRESTDWjClientLAMWClientREST.Post(AUrl : String = '';
+ CustomHeaders : TStringList = Nil;
+ FileName : String = '';
+ FileStream : TStream = Nil;
+ Const AResponse : TStream = Nil;
+ IgnoreEvents : Boolean = False;
+ RawHeaders : Boolean = False):Integer;
+Var
+ vTempHeaders : TStringList;
+ aString : String;
+ clientConn : jObject;
+Begin
+ Result:= 200;
+ Try
+ SetParams;
+ SetUseSSL(UseSSL);
+ vTempHeaders := TStringList.Create;
+ vAUrl := AUrl;
+ Try
+ //Copy Custom Headers
+ SetHeaders(CustomHeaders, clientConn);
+ If Not IgnoreEvents Then
+ If Assigned(OnBeforePost) then
+ If Not Assigned(CustomHeaders) Then
+ OnBeforePost(AUrl, vTempHeaders)
+ Else
+ OnBeforePost(AUrl, CustomHeaders);
+ clientConn := HttpRequest.OpenConnection(AUrl);
+ aString := GetTempFileName;
+ Try
+ TMemoryStream(FileStream).SaveToFile(aString);
+ HttpRequest.UploadFile('upload_file', aString);
+ Finally
+ DeleteFile(aString);
+ End;
+ Result := HttpRequest.GetResponseCode;
+ Finally
+ vTempHeaders.Free;
+ End;
+ Except
+ On E : Exception Do
+ Begin
+ Raise Exception.Create(E.Message);
+ HttpRequest.Disconnect(clientConn);
+ End;
+ End;
+ DestroyClient;
+End;
+
+Function TRESTDWjClientLAMWClientREST.Post(AUrl : String;
+ Var AResponseText : String;
+ CustomHeaders : TStringList = Nil;
+ CustomParams : TStringList = Nil;
+ Const CustomBody : TStream = Nil;
+ Const AResponse : TStream = Nil;
+ IgnoreEvents : Boolean = False;
+ RawHeaders : Boolean = False) : Integer;
+Var
+ vTempHeaders : TStringList;
+ atempResponse: TStringStream;
+ aString,
+ sResponse : string;
+ clientConn : jObject;
+Begin
+ Result:= 200;
+ Try
+ atempResponse := Nil;
+ SetParams;
+ SetUseSSL(UseSSL);
+ vTempHeaders := TStringList.Create;
+ vAUrl := AUrl;
+ Try
+ SetHeaders(TStringList(DefaultCustomHeader), clientConn);
+ If Not IgnoreEvents Then
+ If Assigned(OnBeforePost) then
+ If Not Assigned(CustomHeaders) Then
+ OnBeforePost(AUrl, vTempHeaders)
+ Else
+ OnBeforePost(AUrl, CustomHeaders);
+ CopyStringList(CustomHeaders, vTempHeaders);
+ If Assigned(CustomBody) Then
+ SetParams(CustomBody)
+ Else
+ SetRawHeaders(vTempHeaders, clientConn);
+ clientConn := HttpRequest.OpenConnection(AUrl);
+ If RequestCharset = esUtf8 Then
+ atempResponse := TStringStream.Create(utf8Decode(HttpRequest.Post(clientConn)))
+ Else
+ atempResponse := TStringStream.Create(HttpRequest.Post(clientConn));
+ Result:= HttpRequest.GetResponseCode;
+ atempResponse.Position := 0;
+ If Not IgnoreEvents Then
+ If Assigned(OnAfterRequest) then
+ OnAfterRequest(AUrl, rtPost, atempResponse);
+ Finally
+ vTempHeaders.Free;
+ If Assigned(atempResponse) Then
+ FreeAndNil(atempResponse);
+ End;
+ Except
+ On E : Exception Do
+ Begin
+ Raise Exception.Create(E.Message);
+ HttpRequest.Disconnect(clientConn);
+ End;
+ End;
+ DestroyClient;
+End;
+
+Function TRESTDWjClientLAMWClientREST.Post(AUrl : String;
+ CustomHeaders : TStringList = Nil;
+ CustomParams : TStringList = Nil;
+ FileName : String = '';
+ FileStream : TStream = Nil;
+ Const AResponse : TStream = Nil;
+ IgnoreEvents : Boolean = False;
+ RawHeaders : Boolean = False):Integer;
+Var
+ aString : String;
+ vTempHeaders : TStringList;
+ clientConn : jObject;
+Begin
+ Result:= 200;
+ Try
+ SetParams;
+ SetUseSSL(UseSSL);
+ vTempHeaders := TStringList.Create;
+ vAUrl := AUrl;
+ Try
+ //Copy Custom Headers
+ SetHeaders(CustomHeaders, clientConn);
+ If Not IgnoreEvents Then
+ If Assigned(OnBeforePost) then
+ If Not Assigned(CustomHeaders) Then
+ OnBeforePost(AUrl, vTempHeaders)
+ Else
+ OnBeforePost(AUrl, CustomHeaders);
+ clientConn := HttpRequest.OpenConnection(AUrl);
+ aString := GetTempFileName;
+ Try
+ TMemoryStream(FileStream).SaveToFile(aString);
+ HttpRequest.UploadFile('upload_file', aString);
+ Finally
+ DeleteFile(aString);
+ End;
+ Result := HttpRequest.GetResponseCode;
+ Finally
+ vTempHeaders.Free;
+ End;
+ Except
+ On E : Exception Do
+ Begin
+ Raise Exception.Create(E.Message);
+ HttpRequest.Disconnect(clientConn);
+ End;
+ End;
+ DestroyClient;
+End;
+
+
+Function TRESTDWjClientLAMWClientREST.Delete(AUrl : String = '';
+ CustomHeaders : TStringList = Nil;
+ Const AResponse : TStream = Nil;
+ IgnoreEvents : Boolean = False):Integer;
+Var
+ vTempHeaders : TStringList;
+ SendParams,
+ atempResponse : TStringStream;
+ aString : String;
+ clientConn : jObject;
+Begin
+ Result:= 200;
+ Try
+ atempResponse := Nil;
+ SetParams;
+ SetUseSSL(UseSSL);
+ vTempHeaders := TStringList.Create;
+ vAUrl := AUrl;
+ Try
+ SetHeaders(TStringList(DefaultCustomHeader), clientConn);
+ If Not IgnoreEvents Then
+ If Assigned(OnBeforeDelete) then
+ If Not Assigned(CustomHeaders) Then
+ OnBeforeDelete(AUrl, vTempHeaders)
+ Else
+ OnBeforeDelete(AUrl, CustomHeaders);
+ CopyStringList(CustomHeaders, vTempHeaders);
+ HttpRequest.DeleteStateful(AUrl, vTempHeaders.Text);
+ Result:= HttpRequest.GetResponseCode;
+ Finally
+ vTempHeaders.Free;
+ If Assigned(SendParams) Then
+ SendParams.Free;
+ If Assigned(atempResponse) Then
+ atempResponse.Free;
+ End;
+ Except
+ On E : Exception Do
+ Begin
+ Raise Exception.Create(E.Message);
+ HttpRequest.Disconnect(HttpRequest);
+ End;
+ End;
+ DestroyClient;
+End;
+
+Function TRESTDWjClientLAMWClientREST.Delete(AUrl : String;
+ CustomHeaders : TStringList = Nil;
+ CustomParams : TStringList = Nil;
+ Const AResponse : TStream = Nil;
+ IgnoreEvents : Boolean = False):Integer;
+Var
+ vTempHeaders : TStringList;
+ aString : String;
+ clientConn : jObject;
+Begin
+ Result:= 200;
+ Try
+ SetParams;
+ SetUseSSL(UseSSL);
+ vTempHeaders := TStringList.Create;
+ vAUrl := AUrl;
+ Try
+ SetHeaders(TStringList(DefaultCustomHeader), clientConn);
+ If Not IgnoreEvents Then
+ If Assigned(OnBeforeDelete) then
+ If Not Assigned(CustomHeaders) Then
+ OnBeforeDelete(AUrl, vTempHeaders)
+ Else
+ OnBeforeDelete(AUrl, CustomHeaders);
+ CopyStringList(CustomHeaders, vTempHeaders);
+ HttpRequest.DeleteStateful(AUrl, vTempHeaders.Text);
+ Result:= HttpRequest.GetResponseCode;
+ Finally
+ vTempHeaders.Free;
+ End;
+ Except
+ On E : Exception Do
+ Begin
+ Raise Exception.Create(E.Message);
+ HttpRequest.Disconnect(HttpRequest);
+ End;
+ End;
+ DestroyClient;
+End;
+
+Constructor TRESTDWjClientLAMWClientREST.Create(AOwner: TComponent);
+Begin
+ Inherited;
+ //application/json
+ ContentType := cContentTypeFormUrl;
+ ContentEncoding := cDefaultContentEncoding;
+ Accept := cDefaultAccept;
+ AcceptEncoding := '';
+ MaxAuthRetries := 0;
+ UserAgent := cUserAgent;
+ AccessControlAllowOrigin := '*';
+ ActiveRequest := '';
+ RedirectMaximum := 1;
+ RequestTimeOut := 5000;
+ ConnectTimeOut := 5000;
+End;
+
+Procedure TRESTDWjClientLAMWClientREST.SetRawHeaders(AHeaders : TStringList;
+ Var clientConn : jObject);
+Var
+ I : Integer;
+Begin
+ HttpRequest.ClearNameValueData;
+ If AccessControlAllowOrigin <> '' Then
+ HttpRequest.SetRequestProperty(clientConn, 'Access-Control-Allow-Origin', AccessControlAllowOrigin);
+ If Assigned(AHeaders) Then
+ Begin
+ If AHeaders.Count > 0 Then
+ Begin
+ For i := 0 to AHeaders.Count-1 do
+ Begin
+ If RequestCharset = esUtf8 Then
+ HttpRequest.SetRequestProperty(clientConn, AHeaders.Names[i], utf8Decode(AHeaders.ValueFromIndex[i]))
+ Else
+ HttpRequest.SetRequestProperty(clientConn, AHeaders.Names[i], AHeaders.ValueFromIndex[i]);
+ End;
+ End;
+ End;
+End;
+
+Procedure TRESTDWjClientLAMWClientREST.SetHeaders(AHeaders : TStringList;
+ Var clientConn : jObject);
+Var
+ I : Integer;
+ vmark : String;
+ DWParams : TRESTDWParams;
+Begin
+ vmark := '';
+ DWParams := Nil;
+ HttpRequest.ClearNameValueData;
+ HttpRequest.SetRequestProperty(clientConn, AcceptEncoding, AcceptEncoding);
+ If AccessControlAllowOrigin <> '' Then
+ HttpRequest.SetRequestProperty(clientConn, 'Access-Control-Allow-Origin', AccessControlAllowOrigin);
+ If Assigned(AHeaders) Then
+ If AHeaders.Count > 0 Then
+ For i := 0 to AHeaders.Count-1 do
+ HttpRequest.SetRequestProperty(clientConn, AHeaders.Names[i], AHeaders.ValueFromIndex[i]);
+ If AuthenticationOptions.AuthorizationOption in [rdwAOBasic, rdwAOBearer, rdwAOToken, rdwOAuth] Then
+ Begin
+ {
+ HttpRequest.Request.BasicAuthentication := AuthenticationOptions.AuthorizationOption = rdwAOBasic;
+ Case AuthenticationOptions.AuthorizationOption of
+ rdwAOBasic : Begin
+ If HttpRequest.Request.Authentication = Nil Then
+ HttpRequest.Request.Authentication := TIdBasicAuthentication.Create;
+ HttpRequest.Request.Authentication.Password := TRESTDWAuthOptionBasic(AuthenticationOptions.OptionParams).Password;
+ HttpRequest.Request.Authentication.Username := TRESTDWAuthOptionBasic(AuthenticationOptions.OptionParams).UserName;
+ End;
+ rdwAOBearer : Begin
+ If Assigned(HttpRequest.Request.Authentication) Then
+ Begin
+ HttpRequest.Request.Authentication.Free;
+ HttpRequest.Request.Authentication := Nil;
+ End;
+ HttpRequest.Request.CustomHeaders.Add('Authorization: Bearer ' + TRESTDWAuthOptionBearerClient(AuthenticationOptions.OptionParams).Token);
+ End;
+ rdwAOToken : Begin
+ If Assigned(HttpRequest.Request.Authentication) Then
+ Begin
+ HttpRequest.Request.Authentication.Free;
+ HttpRequest.Request.Authentication := Nil;
+ End;
+ HttpRequest.Request.CustomHeaders.Add('Authorization: Token ' + Format('token="%s"', [TRESTDWAuthOptionTokenClient(AuthenticationOptions.OptionParams).Token]));
+ End;
+ rdwOAuth : Begin
+ If Assigned(HttpRequest.Request.Authentication) Then
+ Begin
+ HttpRequest.Request.Authentication.Free;
+ HttpRequest.Request.Authentication := Nil;
+ End;
+ ActiveRequest := Stringreplace(lowercase(ActiveRequest), 'http://', '', [rfReplaceAll]);
+ ActiveRequest := Stringreplace(lowercase(ActiveRequest), 'https://', '', [rfReplaceAll]);
+ TRESTDWDataUtils.ParseRESTURL(ActiveRequest, RequestCharset, vmark{$IFDEF FPC}, csUndefined{$ENDIF}, DWParams);
+ If Assigned(DWParams) Then
+ FreeAndNil(DWParams);
+ Case TRESTDWAuthOAuth(AuthenticationOptions.OptionParams).TokenType Of
+ rdwOATBasic : Begin
+ End;
+ rdwOATBearer : HttpRequest.Request.CustomHeaders.Add('Authorization: Bearer ' + TRESTDWAuthOAuth(AuthenticationOptions.OptionParams).Token);
+ rdwOATToken : HttpRequest.Request.CustomHeaders.Add('Authorization: Token ' + Format('token="%s"', [TRESTDWAuthOAuth(AuthenticationOptions.OptionParams).Token]));
+ End;
+ End;
+ End;
+ }
+ End;
+End;
+
+Procedure TRESTDWjClientLAMWClientREST.SetOnStatus(Value : TOnStatus);
+Begin
+ Inherited SetOnStatus(Value);
+End;
+
+{ TRESTDWjClientLAMWClientPooler }
+
+
+Procedure TRESTDWjClientLAMWClientPooler.SetParams(TransparentProxy : TProxyConnectionInfo;
+ aRequestTimeout : Integer;
+ aConnectTimeout : Integer;
+ AuthorizationParams : TRESTDWClientAuthOptionParams);
+Begin
+ HttpRequest.DefaultCustomHeader.Clear;
+// HttpRequest.DefaultCustomHeader.NameValueSeparator := cNameValueSeparator;
+ HttpRequest.Accept := Accept;
+ HttpRequest.AcceptEncoding := AcceptEncoding;
+ HttpRequest.AuthenticationOptions := AuthorizationParams;
+ HttpRequest.ProxyOptions.ProxyUsername := TransparentProxy.ProxyUsername;
+ HttpRequest.ProxyOptions.ProxyServer := TransparentProxy.ProxyServer;
+ HttpRequest.ProxyOptions.ProxyPassword := TransparentProxy.ProxyPassword;
+ HttpRequest.ProxyOptions.ProxyPort := TransparentProxy.ProxyPort;
+ HttpRequest.RequestTimeout := aRequestTimeout;
+ HttpRequest.ConnectTimeout := aConnectTimeout;
+ HttpRequest.ContentType := ContentType;
+ HttpRequest.ContentEncoding := ContentEncoding;
+ HttpRequest.AllowCookies := AllowCookies;
+ HttpRequest.HandleRedirects := HandleRedirects;
+ HttpRequest.Charset := Charset;
+ HttpRequest.UserAgent := UserAgent;
+ HttpRequest.OnWork := Self.OnWork;
+ HttpRequest.OnWorkBegin := Self.OnWorkBegin;
+ HttpRequest.OnWorkEnd := Self.OnWorkEnd;
+ HttpRequest.OnStatus := Self.OnStatus;
+End;
+
+procedure TRESTDWjClientLAMWClientPooler.Abort;
+begin
+ {$IFNDEF RESTDWLAZARUS}
+ {$IFNDEF FPC}
+ Inherited;
+ {$ENDIF}
+ {$ENDIF}
+end;
+
+Constructor TRESTDWjClientLAMWClientPooler.Create(AOwner : TComponent);
+Begin
+ Inherited;
+ HttpRequest := Nil;
+ ContentType := cContentTypeFormUrl;
+ ContentEncoding := cDefaultContentEncoding;
+ End;
+
+Destructor TRESTDWjClientLAMWClientPooler.Destroy;
+Begin
+ If Assigned(HttpRequest) Then
+ FreeAndNil(HttpRequest);
+ Inherited;
+End;
+
+function TRESTDWjClientLAMWClientPooler.IsServerLive(Aip: String; Aport: Integer;
+ AMessageErro: String): Boolean;
+begin
+ Result := True;
+end;
+
+Procedure TRESTDWjClientLAMWClientPooler.ReconfigureConnection(aTypeRequest : Ttyperequest;
+ aWelcomeMessage,
+ aHost : String;
+ aPort : Integer;
+ Compression,
+ EncodeStrings : Boolean;
+ aEncoding : TEncodeSelect;
+ aAccessTag : String;
+ aAuthenticationOptions : TRESTDWClientAuthOptionParams);
+Begin
+ {$IFNDEF RESTDWLAZARUS}
+ {$IFNDEF FPC}
+ Inherited;
+ {$ENDIF}
+ {$ENDIF}
+End;
+
+Function TRESTDWjClientLAMWClientPooler.SendEvent(EventData : String;
+ Var Params : TRESTDWParams;
+ EventType : TSendEvent;
+ DataMode : TDataMode;
+ ServerEventName : String;
+ Assyncexec : Boolean) : String;
+Var
+ vErrorMessage,
+ vErrorMessageA,
+ vDataPack,
+ SResult, vURL,
+ vResponse,
+ vTpRequest : String;
+ vErrorCode,
+ I : Integer;
+ vDWParam : TRESTDWJSONParam;
+ vResultParams : TStringStream;
+ MemoryStream,
+ aStringStream,
+ bStringStream,
+ StringStream : TStream;
+ StringStreamList : TStringStreamList;
+ JSONValue : TRESTDWJSONValue;
+ aBinaryCompatibleMode,
+ aBinaryRequest : Boolean;
+ Procedure SetData(Var InputValue : String;
+ Var ParamsData : TRESTDWParams;
+ Var ResultJSON : String);
+ Var
+ bJsonOBJ,
+ bJsonValue : TRESTDWJSONInterfaceObject;
+ bJsonOBJTemp : TRESTDWJSONInterfaceArray;
+ JSONParam,
+ JSONParamNew : TRESTDWJSONParam;
+ A, InitPos : Integer;
+ vValue,
+ aValue,
+ vTempValue : String;
+ Begin
+ ResultJSON := InputValue;
+ If Pos(', "RESULT":[', InputValue) = 0 Then
+ Begin
+ If (Encoding = esUtf8) Then //NativeResult Correções aqui
+ Begin
+ {$IF Defined(DELPHIXEUP)}
+ //ResultJSON := PWidechar(UTF8Decode(InputValue));
+ ResultJSON := PWidechar(InputValue);
+ {$ELSEIF Defined(RESTDWLAZARUS)}
+ ResultJSON := GetStringDecode(InputValue, DatabaseCharSet);
+ {$ELSE} // delphi velho
+ ResultJSON := UTF8Decode(ResultJSON);
+ {$IFEND}
+ End
+ Else
+ ResultJSON := InputValue;
+ Exit;
+ End;
+ Try
+ If (Pos(', "RESULT":[{"MESSAGE":"', InputValue) > 0) Then
+ InitPos := Pos(', "RESULT":[{"MESSAGE":"', InputValue) + Length(', "RESULT":[') //TODO Brito
+ Else If (Pos(', "RESULT":[', InputValue) > 0) Then
+ InitPos := Pos(', "RESULT":[', InputValue) + Length(', "RESULT":[')
+ Else If (Pos('{"PARAMS":[{"', InputValue) > 0) And
+ (Pos('", "RESULT":', InputValue) > 0) Then
+ InitPos := Pos('", "RESULT":', InputValue) + Length('", "RESULT":');
+ aValue := Copy(InputValue, InitPos, Length(InputValue) -1);
+ If Pos(']}', aValue) > 0 Then
+ aValue := Copy(aValue, InitStrPos, Pos(']}', aValue) -1);
+ vTempValue := aValue;
+ InputValue := Copy(InputValue, InitStrPos, InitPos-1) + ']}';
+ If (Params <> Nil) And (InputValue <> '{"PARAMS"]}') And (InputValue <> '') Then
+ Begin
+ If Pos(', "RESULT":[]}', InputValue) > 0 Then
+ InputValue := StringReplace(InputValue, ', "RESULT":[]}', '}', []);
+ {$IFDEF DELPHIXEUP}
+ bJsonValue := TRESTDWJSONInterfaceObject.Create(InputValue);
+ {$ELSE}
+ If Encoding = esUtf8 Then
+ bJsonValue := TRESTDWJSONInterfaceObject.Create(PWidechar(UTF8Decode(InputValue)))
+ Else
+ bJsonValue := TRESTDWJSONInterfaceObject.Create(InputValue);
+ {$ENDIF}
+ InputValue := '';
+ If bJsonValue.PairCount > 0 Then
+ Begin
+ bJsonOBJTemp := TRESTDWJSONInterfaceArray(bJsonValue.OpenArray(bJsonValue.pairs[0].name));
+ If bJsonOBJTemp.ElementCount > 0 Then
+ Begin
+ For A := 0 To bJsonOBJTemp.ElementCount -1 Do
+ Begin
+ bJsonOBJ := TRESTDWJSONInterfaceObject(bJsonOBJTemp.GetObject(A));
+ If Length(bJsonOBJ.Pairs[0].Value) = 0 Then
+ Begin
+ FreeAndNil(bJsonOBJ);
+ Continue;
+ End;
+ If GetObjectName(bJsonOBJ.Pairs[0].Value) <> toParam Then
+ Begin
+ FreeAndNil(bJsonOBJ);
+ Continue;
+ End;
+ JSONParam := TRESTDWJSONParam.Create(Encoding);
+ Try
+ JSONParam.ParamName := bJsonOBJ.Pairs[4].name;
+ JSONParam.ObjectValue := GetValueType(bJsonOBJ.Pairs[3].Value);
+ JSONParam.ObjectDirection := GetDirectionName(bJsonOBJ.Pairs[1].Value);
+ JSONParam.Encoded := GetBooleanFromString(bJsonOBJ.Pairs[2].Value);
+ If Not(JSONParam.ObjectValue In [ovBlob, ovStream, ovGraphic, ovOraBlob, ovOraClob]) Then
+ Begin
+ If (JSONParam.Encoded) Then
+ Begin
+ {$IF Defined(FPC)}
+ vValue := DecodeStrings(bJsonOBJ.Pairs[4].Value, DatabaseCharSet);
+ {$ELSE}
+ vValue := DecodeStrings(bJsonOBJ.Pairs[4].Value);
+ If Encoding = esUtf8 Then
+ vValue := Utf8Decode(vValue);
+ {$IFEND}
+ End
+ Else If JSONParam.ObjectValue <> ovObject then
+ vValue := bJsonOBJ.Pairs[4].Value
+ Else //TODO Brito
+ Begin
+ vValue := bJsonOBJ.Pairs[4].Value;
+ DeleteInvalidChar(vValue);
+ End;
+ End
+ Else
+ vValue := bJsonOBJ.Pairs[4].Value;
+ JSONParam.SetValue(vValue, JSONParam.Encoded);
+ //parametro criandos no servidor
+ If ParamsData.ItemsString[JSONParam.ParamName] = Nil Then
+ Begin
+ JSONParamNew := TRESTDWJSONParam.Create(ParamsData.Encoding);
+ JSONParamNew.ParamName := JSONParam.ParamName;
+ JSONParamNew.ObjectDirection := JSONParam.ObjectDirection;
+ JSONParamNew.SetValue(JSONParam.Value, JSONParam.Encoded);
+ ParamsData.Add(JSONParamNew);
+ End
+ Else If Not (ParamsData.ItemsString[JSONParam.ParamName].Binary) Then
+ ParamsData.ItemsString[JSONParam.ParamName].Value := JSONParam.Value
+ Else
+ ParamsData.ItemsString[JSONParam.ParamName].SetValue(vValue, JSONParam.Encoded);
+ Finally
+ FreeAndNil(JSONParam);
+ FreeAndNil(bJsonOBJ);
+ End;
+ End;
+ End;
+ If Assigned(bJsonOBJTemp) Then
+ FreeAndNil(bJsonOBJTemp);
+ If Assigned(bJsonOBJ) Then
+ FreeAndNil(bJsonOBJ);
+ End;
+ {$IFNDEF FPC} //TODO XyberX
+ If Assigned(bJsonValue) Then
+ FreeAndNil(bJsonValue);
+ {$ENDIF}
+ End;
+ Finally
+ If vTempValue <> '' Then
+ ResultJSON := vTempValue;
+ vTempValue := '';
+ End;
+ End;
+ Function GetParamsValues(Var DWParams : TRESTDWParams{$IFDEF FPC};vDatabaseCharSet : TDatabaseCharSet{$ENDIF}) : String;
+ Var
+ I : Integer;
+ Begin
+ Result := '';
+ JSONValue := Nil;
+ If WelcomeMessage <> '' Then
+ Result := 'dwwelcomemessage=' + EncodeStrings(WelcomeMessage{$IFDEF FPC}, vDatabaseCharSet{$ENDIF});
+ If AccessTag <> '' Then
+ Begin
+ If Result <> '' Then
+ Result := Result + '&dwaccesstag=' + EncodeStrings(AccessTag{$IFDEF FPC}, vDatabaseCharSet{$ENDIF})
+ Else
+ Result := 'dwaccesstag=' + EncodeStrings(AccessTag{$IFDEF FPC}, vDatabaseCharSet{$ENDIF});
+ End;
+ If ServerEventName <> '' Then
+ Begin
+ If Assigned(DWParams) Then
+ Begin
+ vDWParam := DWParams.ItemsString['dwservereventname'];
+ If Not Assigned(vDWParam) Then
+ Begin
+ vDWParam := TRESTDWJSONParam.Create(DWParams.Encoding);
+ vDWParam.ObjectDirection := odIN;
+ DWParams.Add(vDWParam);
+ End;
+ Try
+ vDWParam.Encoded := True;
+ vDWParam.ParamName := 'dwservereventname';
+ vDWParam.SetValue(ServerEventName, vDWParam.Encoded);
+ Finally
+// FreeAndNil(JSONValue);
+ End;
+ End
+ Else
+ Begin
+ JSONValue := TRESTDWJSONValue.Create;
+ Try
+ JSONValue.Encoding := DWParams.Encoding;
+ JSONValue.Encoded := True;
+ JSONValue.Tagname := 'dwservereventname';
+ JSONValue.SetValue(ServerEventName, JSONValue.Encoded);
+ Finally
+ If Result <> '' Then
+ Result := Result + '&dwservereventname=' + EncodeStrings(JSONValue.ToJSON{$IFDEF FPC}, vDatabaseCharSet{$ENDIF})
+ Else
+ Result := 'dwservereventname=' + EncodeStrings(JSONValue.ToJSON{$IFDEF FPC}, vDatabaseCharSet{$ENDIF});
+ FreeAndNil(JSONValue);
+ End;
+ End;
+ End;
+ If Result <> '' Then
+ Result := Result + '&datacompression=' + BooleanToString(DataCompression)
+ Else
+ Result := 'datacompression=' + BooleanToString(DataCompression);
+ If Result <> '' Then
+ Result := Result + '&dwassyncexec=' + BooleanToString(Assyncexec)
+ Else
+ Result := 'dwassyncexec=' + BooleanToString(Assyncexec);
+ If Result <> '' Then
+ Result := Result + '&dwencodestrings=' + BooleanToString(EncodedStrings)
+ Else
+ Result := 'dwencodestrings=' + BooleanToString(EncodedStrings);
+ If Result <> '' Then
+ Begin
+ If Assigned(vCripto) Then
+ If vCripto.Use Then
+ Result := Result + '&dwusecript=true';
+ End
+ Else
+ Begin
+ If Assigned(vCripto) Then
+ If vCripto.Use Then
+ Result := 'dwusecript=true';
+ End;
+ If DWParams <> Nil Then
+ Begin
+ For I := 0 To DWParams.Count -1 Do
+ Begin
+ If Result <> '' Then
+ Begin
+ If DWParams.Items[I].ObjectValue in [ovSmallint, ovInteger, ovWord, ovBoolean, ovByte,
+ ovAutoInc, ovLargeint, ovLongWord, ovShortint, ovSingle] Then
+ Result := Result + Format('&%s=%s', [DWParams.Items[I].ParamName, EncodeStrings(DWParams.Items[I].Value{$IFDEF FPC}, vDatabaseCharSet{$ENDIF})])
+ Else
+ Begin
+ If vCripto.Use Then
+ Result := Result + Format('&%s=%s', [DWParams.Items[I].ParamName, vCripto.Encrypt(DWParams.Items[I].Value)])
+ Else
+ Result := Result + Format('&%s=%s', [DWParams.Items[I].ParamName, EncodeStrings(DWParams.Items[I].Value{$IFDEF FPC}, vDatabaseCharSet{$ENDIF})]);
+ End;
+ End
+ Else
+ Begin
+ If DWParams.Items[I].ObjectValue in [ovSmallint, ovInteger, ovWord, ovBoolean, ovByte,
+ ovAutoInc, ovLargeint, ovLongWord, ovShortint, ovSingle] Then
+ Result := Format('%s=%s', [DWParams.Items[I].ParamName, DWParams.Items[I].Value])
+ Else
+ Begin
+ If vCripto.Use Then
+ Result := Format('%s=%s', [DWParams.Items[I].ParamName, vCripto.Encrypt(DWParams.Items[I].Value)])
+ Else
+ Result := Format('%s=%s', [DWParams.Items[I].ParamName, EncodeStrings(DWParams.Items[I].Value{$IFDEF FPC}, vDatabaseCharSet{$ENDIF})]);
+ End;
+ End;
+ End;
+ End;
+ End;
+ Procedure SetParamsValues(DWParams : TRESTDWParams); //TODO envio de parametros XyberX
+ Var
+ I : Integer;
+ vCharsset : String;
+ Begin
+ MemoryStream := Nil;
+ If DWParams <> Nil Then
+ Begin
+ If Not (Assigned(StringStreamList)) Then
+ StringStreamList := TStringStreamList.Create;
+ If BinaryRequest Then
+ Begin
+ DWParams.SaveToStream(MemoryStream);
+ Try
+ If Assigned(MemoryStream) Then
+ Begin
+ MemoryStream.Position := 0;
+// SendParamsData.AddObject( 'binarydata', 'application/octet-stream', '', MemoryStream);
+ End;
+ Finally
+ End;
+ End
+ Else
+ Begin
+ vCharsset := 'ASCII';
+ If Encoding = esUtf8 Then
+ vCharsset := 'UTF8';
+ For I := 0 To DWParams.Count -1 Do
+ Begin
+ If DWParams.Items[I].ObjectValue in [ovWideMemo, ovBytes, ovVarBytes, ovBlob, ovStream,
+ ovMemo, ovGraphic, ovFmtMemo, ovOraBlob, ovOraClob] Then
+ Begin
+ StringStreamList.Add({$IFDEF DELPHIXEUP}
+ TStringStream.Create(DWParams.Items[I].ToJSON, TEncoding.UTF8)
+ {$ELSE}
+ TStringStream.Create(DWParams.Items[I].ToJSON)
+ {$ENDIF});
+// SendParamsData.AddObject(DWParams.Items[I].ParamName, 'multipart/form-data', vCharsset, StringStreamList.Items[StringStreamList.Count-1]);
+ End
+ Else
+ Begin
+// SendParamsData.AddFormField(DWParams.Items[I].ParamName, DWParams.Items[I].ToJSON);
+ End;
+ End;
+ End;
+ End;
+ End;
+ Function BuildUrl(TpRequest : TTypeRequest;
+ Host,
+ aDataRoute : String;
+ Port : Integer) : String;
+ Var
+ vTpRequest : String;
+ Begin
+ Result := '';
+
+ If TpRequest = trHttp Then
+ vTpRequest := 'http'
+ Else If TpRequest = trHttps Then
+ vTpRequest := 'https';
+
+ if ClientIpVersion = civIPv6 then
+ Host := '[' + Host + ']';
+
+ If (aDataRoute = '') Then
+ Result := LowerCase(Format(UrlBaseA, [vTpRequest, Host, Port, '/'])) + EventData
+ Else
+ Result := LowerCase(Format(UrlBaseA, [vTpRequest, Host, Port, aDataRoute])) + EventData;
+
+ End;
+ Procedure SetCharsetRequest(Var HttpRequest : TRESTDWjClientLAMWClientREST;
+ Charset : TEncodeSelect);
+ Begin
+ If Charset = esUtf8 Then
+ Begin
+ If HttpRequest.ContentType = '' Then
+ HttpRequest.ContentType := 'application/json;charset=utf-8';
+ If HttpRequest.Charset = '' Then
+ HttpRequest.Charset := 'utf-8';
+ End
+ Else If Charset in [esANSI, esASCII] Then
+ HttpRequest.Charset := 'ansi';
+ End;
+ Function ExecRequest(EventType : TSendEvent;
+ URL,
+ WelcomeMessage,
+ AccessTag : String;
+ Charset : TEncodeSelect;
+ Datacompress,
+ hEncodeStrings,
+ BinaryRequest : Boolean;
+ Var ResultData,
+ ErrorMessage : String) : Boolean;
+ Var
+ vAccessURL,
+ vWelcomeMessage,
+ vUrl : String;
+ A : Integer;
+ Function BuildValue(Name, Value : String) : String;
+ Begin
+ If vURL = URL + '?' Then
+ Result := Format('%s=%s', [Name, Value])
+ Else
+ Result := Format('&%s=%s', [Name, Value]);
+ End;
+ Begin
+ Result := True;
+ ResultData := '';
+ ErrorMessage := '';
+ vAccessURL := '';
+ vWelcomeMessage := '';
+ vUrl := '';
+ {$IFDEF DELPHIXEUP}
+ vResultParams := TStringStream.Create('', TEncoding.UTF8);
+ //vResultParams := TStringStream.Create('');
+ {$ELSE}
+ vResultParams := TStringStream.Create('');
+ {$ENDIF}
+ Try
+ HttpRequest.UserAgent := UserAgent;
+ HttpRequest.RedirectMaximum := RedirectMaximum;
+ HttpRequest.HandleRedirects := HandleRedirects;
+ Case EventType Of
+ seGET,
+ seDELETE :
+ Begin
+ HttpRequest.ContentType := 'application/json';
+ vURL := URL + '?';
+ If WelcomeMessage <> '' Then
+ vURL := vURL + BuildValue('dwwelcomemessage', EncodeStrings(WelcomeMessage{$IFDEF FPC}, DatabaseCharSet{$ENDIF}));
+ If (AccessTag <> '') Then
+ vURL := vURL + BuildValue('dwaccesstag', EncodeStrings(AccessTag{$IFDEF FPC}, DatabaseCharSet{$ENDIF}));
+ If AuthenticationOptions.AuthorizationOption <> rdwAONone Then
+ Begin
+ Case AuthenticationOptions.AuthorizationOption Of
+ rdwAOBearer : Begin
+ If TRESTDWAuthOptionBearerClient(AuthenticationOptions.OptionParams).TokenRequestType <> rdwtHeader Then
+ If TRESTDWAuthOptionBearerClient(AuthenticationOptions.OptionParams).Token <> '' Then
+ vURL := vURL + BuildValue(TRESTDWAuthOptionBearerClient(AuthenticationOptions.OptionParams).Key, TRESTDWAuthOptionBearerClient(AuthenticationOptions.OptionParams).Token);
+ End;
+ rdwAOToken : Begin
+ If TRESTDWAuthOptionTokenClient(AuthenticationOptions.OptionParams).TokenRequestType <> rdwtHeader Then
+ If TRESTDWAuthOptionTokenClient(AuthenticationOptions.OptionParams).Token <> '' Then
+ vURL := vURL + BuildValue(TRESTDWAuthOptionTokenClient(AuthenticationOptions.OptionParams).Key, TRESTDWAuthOptionTokenClient(AuthenticationOptions.OptionParams).Token);
+ End;
+ End;
+ End;
+ vURL := vURL + BuildValue('datacompression', BooleanToString(Datacompress));
+ vURL := vURL + BuildValue('dwassyncexec', BooleanToString(Assyncexec));
+ vURL := vURL + BuildValue('dwencodestrings', BooleanToString(EncodedStrings));
+ vURL := vURL + BuildValue('binaryrequest', BooleanToString(BinaryRequest));
+ If aBinaryCompatibleMode Then
+ vURL := vURL + BuildValue('BinaryCompatibleMode', BooleanToString(aBinaryCompatibleMode));
+ vURL := Format('%s&%s', [vURL, GetParamsValues(Params{$IFDEF FPC}, DatabaseCharSet{$ENDIF})]);
+ If Assigned(vCripto) Then
+ vURL := vURL + BuildValue('dwusecript', BooleanToString(vCripto.Use));
+ {$IFDEF DELPHIXEUP}
+ aStringStream := TStringStream.Create('',TEncoding.UTF8);
+ {$ELSE}
+ aStringStream := TStringStream.Create('');
+ {$ENDIF}
+ Case EventType Of
+ seGET : vErrorCode := HttpRequest.Get(vURL, TStringList(HttpRequest.DefaultCustomHeader), aStringStream);
+ seDELETE : Begin
+ //Delete do ClientPooler TODO
+// jHttpClientAccess(HttpRequest).DoRequest(Id_HTTPMethodDelete, vURL, SendParams, aStringStream, []);
+// vErrorCode := jHttpClientAccess(HttpRequest).ResponseCode;
+ End;
+ End;
+ If Not Assyncexec Then
+ Begin
+ If Datacompress Then
+ Begin
+ If Assigned(aStringStream) Then
+ Begin
+ aStringStream.Position:=0;
+ If aStringStream.Size > 0 Then
+ StringStream := ZDecompressStreamNew(aStringStream);
+ If aBinaryRequest Then
+ Begin
+ Params.LoadFromStream(StringStream);
+ If not (Params.ItemsString['MessageError'] = Nil) Then
+ Begin
+ If trim(Params.ItemsString['MessageError'].AsString) = '' Then
+ ResultData := TReplyOK
+ Else
+ ResultData := Params.ItemsString['MessageError'].AsString;
+ End;
+ End
+ Else
+ ResultData := TStringStream(aStringStream).DataString;
+ FreeAndNil(aStringStream);
+ // ResultData :=TStringStream(StringStream).DataString;
+ FreeAndNil(StringStream);
+ End;
+ End
+ Else
+ Begin
+ ResultData := TStringStream(aStringStream).DataString;
+ FreeAndNil(aStringStream);
+ End;
+ End;
+ If Encoding = esUtf8 Then
+ ResultData := Utf8Decode(ResultData);
+ End;
+ sePOST,
+ sePUT,
+ sePATCH :
+ Begin;
+ //Envio de parametros do RESTDW TODO
+// If WelcomeMessage <> '' Then
+// SendParams.AddFormField('dwwelcomemessage', EncodeStrings(WelcomeMessage{$IFDEF FPC}, DatabaseCharSet{$ENDIF}));
+// If AccessTag <> '' Then
+// SendParams.AddFormField('dwaccesstag', EncodeStrings(AccessTag{$IFDEF FPC}, DatabaseCharSet{$ENDIF}));
+ If ServerEventName <> '' Then
+ Begin
+ If Assigned(Params) Then
+ Begin
+ vDWParam := Params.ItemsString['dwservereventname'];
+ If Not Assigned(vDWParam) Then
+ vDWParam := TRESTDWJSONParam.Create(Params.Encoding);
+
+ Try
+ vDWParam.Encoded := True;
+ vDWParam.ObjectDirection := odIN;
+ vDWParam.ParamName := 'dwservereventname';
+ vDWParam.SetValue(ServerEventName, vDWParam.Encoded);
+ Finally
+ If Params.ItemsString['dwservereventname'] = Nil Then
+ Params.Add(vDWParam);
+ End;
+ End;
+ JSONValue := TRESTDWJSONValue.Create;
+ Try
+ JSONValue.Encoding := Charset;
+ JSONValue.Encoded := True;
+ JSONValue.Tagname := 'dwservereventname';
+ JSONValue.SetValue(ServerEventName, JSONValue.Encoded);
+ Finally
+ //Envio de parametros do RESTDW TODO
+ // SendParams.AddFormField('dwservereventname', JSONValue.ToJSON);
+ FreeAndNil(JSONValue);
+ End;
+ End;
+ //Envio de parametros do RESTDW TODO
+// SendParams.AddFormField('datacompression', BooleanToString(Datacompress));
+// SendParams.AddFormField('dwassyncexec', BooleanToString(Assyncexec));
+// SendParams.AddFormField('dwencodestrings', BooleanToString(EncodedStrings));
+// SendParams.AddFormField('binaryrequest', BooleanToString(BinaryRequest));
+ If AuthenticationOptions.AuthorizationOption <> rdwAONone Then
+ Begin
+ If Assigned(Params) Then
+ Begin
+ Case AuthenticationOptions.AuthorizationOption Of
+ rdwAOBearer : Begin
+ If TRESTDWAuthOptionBearerClient(AuthenticationOptions.OptionParams).TokenRequestType <> rdwtHeader Then
+ Begin
+ If TRESTDWAuthOptionBearerClient(AuthenticationOptions.OptionParams).Token <> '' Then
+ Begin
+ //Envio de parametros do RESTDW TODO
+ //SendParams.AddFormField(TRESTDWAuthOptionBearerClient(AuthenticationOptions.OptionParams).Key,
+ // TRESTDWAuthOptionBearerClient(AuthenticationOptions.OptionParams).Token);
+ vDWParam := Params.ItemsString[TRESTDWAuthOptionBearerClient(AuthenticationOptions.OptionParams).Key];
+ If Not Assigned(vDWParam) Then
+ vDWParam := TRESTDWJSONParam.Create(Params.Encoding);
+ Try
+ vDWParam.Encoded := True;
+ vDWParam.ObjectDirection := odIN;
+ vDWParam.ParamName := TRESTDWAuthOptionBearerClient(AuthenticationOptions.OptionParams).Key;
+ vDWParam.SetValue(TRESTDWAuthOptionBearerClient(AuthenticationOptions.OptionParams).Token, vDWParam.Encoded);
+ Finally
+ If Params.ItemsString[TRESTDWAuthOptionBearerClient(AuthenticationOptions.OptionParams).Key] = Nil Then
+ Params.Add(vDWParam);
+ End;
+ End;
+ End;
+ End;
+ rdwAOToken : Begin
+ If TRESTDWAuthOptionTokenClient(AuthenticationOptions.OptionParams).TokenRequestType <> rdwtHeader Then
+ Begin
+ If TRESTDWAuthOptionTokenClient(AuthenticationOptions.OptionParams).Token <> '' Then
+ Begin
+ //Envio de parametros do RESTDW TODO
+ //SendParams.AddFormField(TRESTDWAuthOptionTokenClient(AuthenticationOptions.OptionParams).Key,
+ // TRESTDWAuthOptionTokenClient(AuthenticationOptions.OptionParams).Token);
+ vDWParam := Params.ItemsString[TRESTDWAuthOptionTokenClient(AuthenticationOptions.OptionParams).Key];
+ If Not Assigned(vDWParam) Then
+ vDWParam := TRESTDWJSONParam.Create(Params.Encoding);
+ Try
+ vDWParam.Encoded := True;
+ vDWParam.ObjectDirection := odIN;
+ vDWParam.ParamName := TRESTDWAuthOptionTokenClient(AuthenticationOptions.OptionParams).Key;
+ vDWParam.SetValue(TRESTDWAuthOptionTokenClient(AuthenticationOptions.OptionParams).Token, vDWParam.Encoded);
+ Finally
+ If Params.ItemsString[TRESTDWAuthOptionTokenClient(AuthenticationOptions.OptionParams).Key] = Nil Then
+ Params.Add(vDWParam);
+ End;
+ End;
+ End;
+ End;
+ End;
+ End
+ Else
+ Begin
+ Case AuthenticationOptions.AuthorizationOption Of
+ rdwAOBearer : Begin
+ //Envio de parametros do RESTDW TODO
+ //If TRESTDWAuthOptionBearerClient(AuthenticationOptions.OptionParams).TokenRequestType <> rdwtHeader Then
+ // SendParams.AddFormField(TRESTDWAuthOptionBearerClient(AuthenticationOptions.OptionParams).Key, TRESTDWAuthOptionBearerClient(AuthenticationOptions.OptionParams).Token);
+ End;
+ rdwAOToken : Begin
+ //Envio de parametros do RESTDW TODO
+ //If TRESTDWAuthOptionTokenClient(AuthenticationOptions.OptionParams).TokenRequestType <> rdwtHeader Then
+ //SendParams.AddFormField(TRESTDWAuthOptionTokenClient(AuthenticationOptions.OptionParams).Key, TRESTDWAuthOptionTokenClient(AuthenticationOptions.OptionParams).Token);
+ End;
+ End;
+ End;
+ End;
+ //Envio de parametros do RESTDW TODO
+// If aBinaryCompatibleMode Then
+// SendParams.AddFormField('BinaryCompatibleMode', BooleanToString(aBinaryCompatibleMode));
+// If Assigned(vCripto) Then
+// SendParams.AddFormField('dwusecript', BooleanToString(vCripto.Use));
+// If Params <> Nil Then
+// SetParamsValues(Params, SendParams);
+ If (Params <> Nil) Or (WelcomeMessage <> '') Or (Datacompress) Then
+ Begin
+ If HttpRequest.Accept = '' Then
+ HttpRequest.Accept := cDefaultContentType;
+ If HttpRequest.AcceptEncoding = '' Then
+ HttpRequest.AcceptEncoding := AcceptEncoding;
+ If HttpRequest.ContentType = '' Then
+ HttpRequest.ContentType := cContentTypeFormUrl;
+ If HttpRequest.ContentEncoding = '' Then
+ HttpRequest.ContentEncoding := cContentTypeMultiPart;
+ If TEncodeSelect(Encoding) = esUtf8 Then
+ HttpRequest.Charset := 'Utf-8'
+ Else If TEncodeSelect(Encoding) in [esANSI, esASCII] Then
+ HttpRequest.Charset := 'ansi';
+ If Not BinaryRequest Then
+ While HttpRequest.DefaultCustomHeader.IndexOfName('binaryrequest') > -1 Do
+ HttpRequest.DefaultCustomHeader.Delete(HttpRequest.DefaultCustomHeader.IndexOfName('binaryrequest'));
+ If Not aBinaryCompatibleMode Then
+ While HttpRequest.DefaultCustomHeader.IndexOfName('BinaryCompatibleMode') > -1 Do
+ HttpRequest.DefaultCustomHeader.Delete(HttpRequest.DefaultCustomHeader.IndexOfName('BinaryCompatibleMode'));
+ HttpRequest.UserAgent := UserAgent;
+ If Datacompress Then
+ Begin
+ {$IFDEF DELPHIXEUP}
+ aStringStream := TStringStream.Create('', TEncoding.UTF8);
+ //aStringStream := TStringStream.Create('');
+ {$ELSE}
+ aStringStream := TStringStream.Create('');
+ {$ENDIF}
+ //Envio de Requisicao RESTDW TODO
+// Case EventType Of
+// sePUT : vErrorCode := HttpRequest.Put(URL, TStringList(HttpRequest.DefaultCustomHeader), SendParams, aStringStream);
+// sePATCH : vErrorCode := HttpRequest.Patch(URL, TStringList(HttpRequest.DefaultCustomHeader), SendParams, aStringStream);
+// sePOST : vErrorCode := HttpRequest.Post(URL, TStringList(HttpRequest.DefaultCustomHeader), SendParams, aStringStream);
+// end;
+ If Not Assyncexec Then
+ Begin
+ If Assigned(aStringStream) Then
+ Begin
+ If (aStringStream.Size > 0) And
+ ((vErrorCode = 200) or (vErrorCode = 201)) Then
+ StringStream := ZDecompressStreamNew(aStringStream)
+ Else
+ StringStream := TStringStream.Create(TStringStream(aStringStream).DataString);
+ FreeAndNil(aStringStream);
+ End;
+ End;
+ End
+ Else
+ Begin
+ {$IFDEF DELPHIXEUP}
+ StringStream := TStringStream.Create('', TEncoding.UTF8);
+ {$ELSE}
+ StringStream := TStringStream.Create('');
+ {$ENDIF}
+ //Envio de Requisicao RESTDW TODO
+ //Case EventType Of
+ // sePUT : vErrorCode := HttpRequest.Put(URL, TStringList(HttpRequest.DefaultCustomHeader), SendParams, StringStream);
+ // sePATCH : vErrorCode := HttpRequest.Patch(URL, TStringList(HttpRequest.DefaultCustomHeader), SendParams, aStringStream);
+ // sePOST : vErrorCode := HttpRequest.Post(URL, TStringList(HttpRequest.DefaultCustomHeader), SendParams, StringStream);
+ //end;
+ End;
+ // If SendParams <> Nil Then
+ //Begin
+ // If Assigned(StringStreamList) Then
+ // FreeAndNil(StringStreamList);
+ // FreeAndNil(SendParams);
+ //End;
+ End
+ Else
+ Begin
+ HttpRequest.ContentType := cDefaultContentType;
+ HttpRequest.ContentEncoding := '';
+ HttpRequest.UserAgent := UserAgent;
+ aStringStream := TStringStream.Create('');
+ HttpRequest.Get(URL, TStringList(HttpRequest.DefaultCustomHeader), aStringStream);
+ aStringStream.Position := 0;
+ StringStream := TStringStream.Create('');
+ bStringStream := TStringStream.Create('');
+ If Not Assyncexec Then
+ Begin
+ If Datacompress Then
+ Begin
+ bStringStream.CopyFrom(aStringStream, aStringStream.Size);
+ bStringStream.Position := 0;
+ ZDecompressStreamD(TStringStream(bStringStream), TStringStream(StringStream));
+ End
+ Else
+ Begin
+ bStringStream.CopyFrom(aStringStream, aStringStream.Size);
+ bStringStream.Position := 0;
+ HexToStream(TStringStream(bStringStream).DataString, TStringStream(StringStream));
+ End;
+ End;
+ FreeAndNil(bStringStream);
+ FreeAndNil(aStringStream);
+ End;
+ If BinaryRequest Then
+ Begin
+ If Not Assyncexec Then
+ Begin
+ If (vErrorCode = 200) or (vErrorCode = 201) Then
+ Begin
+ StringStream.Position := 0;
+ Params.LoadFromStream(StringStream);
+ {$IFDEF DELPHIXEUP}
+ TStringStream(StringStream).Clear;
+ {$ENDIF}
+ {$IFNDEF RESTDWLAZARUS}
+ StringStream.Size := 0;
+ {$ENDIF}
+ If not (Params.ItemsString['MessageError'] = Nil) Then
+ Begin
+ if Params.ItemsString['MessageError'].AsString = trim('') then
+ ResultData := TReplyOK
+ else
+ ResultData := Params.ItemsString['MessageError'].AsString;
+
+ end;
+ End
+ Else
+ Begin
+ ErrorMessage := TStringStream(StringStream).DataString;
+ ResultData := TReplyNOK;
+ End;
+ FreeAndNil(StringStream);
+ End;
+ End
+ Else
+ Begin
+ If Not Assyncexec Then
+ Begin
+ If Assigned(StringStream) Then
+ Begin
+ StringStream.Position := 0;
+ If Datacompress Then
+ vDataPack := BytesToString(StreamToBytes(TMemoryStream(StringStream)))
+ Else
+ vDataPack := TStringStream(StringStream).DataString;
+ {$IFDEF DELPHIXEUP}
+ TStringStream(StringStream).Clear;
+ {$ENDIF}
+ {$IFNDEF RESTDWLAZARUS}
+ StringStream.Size := 0;
+ {$ENDIF}
+ FreeAndNil(StringStream);
+ SetData(vDataPack, Params, ResultData);
+ End
+ Else
+ Begin
+ SetData(vDataPack, Params, ResultData);
+ End;
+ If not (vErrorCode in [200,201]) Then
+ Begin
+ ErrorMessage := ResultData;
+ ResultData := TReplyNOK;
+ End;
+ End;
+ End;
+ End;
+ End;
+ // Eloy
+ case vErrorCode of
+ 401: ErrorMessage := cInvalidAuth;
+ 404: ErrorMessage := cEventNotFound;
+ 405: ErrorMessage := cInvalidPoolerName;
+ end;
+ Except
+ On E : Exception Do
+ Begin
+ Result := False;
+ ResultData := GetPairJSONStr('NOK', PoolerNotFoundMessage);
+// If Assigned(SendParams) then
+// FreeAndNil(SendParams);
+ If Assigned(vResultParams) then
+ FreeAndNil(vResultParams);
+ If Assigned(StringStreamList) Then
+ FreeAndNil(StringStreamList);
+ If Assigned(StringStream) then
+ FreeAndNil(StringStream);
+ If Assigned(aStringStream) then
+ FreeAndNil(aStringStream);
+ If Assigned(MemoryStream) Then
+ FreeAndNil(MemoryStream);
+ If Not FailOver then
+ Begin
+ {$IFDEF RESTDWFMX}
+ ErrorMessage := PoolerNotFoundMessage;
+ {$ELSE}
+ Raise Exception.Create(PoolerNotFoundMessage);
+ {$ENDIF}
+ End
+ Else
+ ErrorMessage := e.Message;
+ End;
+ End;
+ If Assigned(vResultParams) Then
+ FreeAndNil(vResultParams);
+// If Assigned(SendParams) then
+// FreeAndNil(SendParams);
+ If Assigned(StringStream) then
+ FreeAndNil(StringStream);
+ If Assigned(MemoryStream) then
+ FreeAndNil(MemoryStream);
+ If Assigned(aStringStream) Then
+ FreeAndNil(aStringStream);
+ If Assigned(MemoryStream) Then
+ FreeAndNil(MemoryStream);
+ End;
+Begin
+ vDWParam := Nil;
+ MemoryStream := Nil;
+ vResultParams := Nil;
+ aStringStream := Nil;
+ bStringStream := Nil;
+ JSONValue := Nil;
+// SendParams := Nil;
+ StringStreamList := Nil;
+ StringStream := Nil;
+ aStringStream := Nil;
+ vResultParams := Nil;
+ aBinaryRequest := False;
+ aBinaryCompatibleMode := False;
+ If (Params.ItemsString['BinaryRequest'] <> Nil) Then
+ aBinaryRequest := Params.ItemsString['BinaryRequest'].AsBoolean;
+ If (Params.ItemsString['BinaryCompatibleMode'] <> Nil) Then
+ aBinaryCompatibleMode := Params.ItemsString['BinaryCompatibleMode'].AsBoolean And aBinaryRequest;
+ if Not aBinaryRequest then
+ aBinaryRequest := BinaryRequest;
+ vURL := BuildUrl(TypeRequest, Host, DataRoute, Port);
+ If Assigned(HttpRequest) Then
+ FreeAndNil(HttpRequest);
+ HttpRequest := TRESTDWjClientLAMWClientREST.Create(Nil);
+// If (TypeRequest = trHttps) Then
+// HttpRequest.SSLVersions := PIdSSLVersions(@SSLVersions)^;
+ HttpRequest.UserAgent := UserAgent;
+ SetCharsetRequest(HttpRequest, Encoding);
+ SetParams(ProxyOptions, RequestTimeout, ConnectTimeout, AuthenticationOptions);
+ HttpRequest.MaxAuthRetries := 0;
+// HttpRequest.DefaultCustomHeader.NameValueSeparator := cNameValueSeparator;
+ If BinaryRequest Then
+ If HttpRequest.DefaultCustomHeader.IndexOfName('binaryrequest') = -1 Then
+ HttpRequest.DefaultCustomHeader.Add('binaryrequest=true');
+
+ If aBinaryCompatibleMode Then
+ If HttpRequest.DefaultCustomHeader.IndexOfName('BinaryCompatibleMode') = -1 Then
+ HttpRequest.DefaultCustomHeader.Add('BinaryCompatibleMode=true');
+
+ LastErrorMessage := '';
+ LastErrorCode := -1;
+ Try
+ If Not ExecRequest(EventType, vURL, WelcomeMessage, AccessTag, Encoding, DataCompression, EncodedStrings, aBinaryRequest, Result, vErrorMessage) Then
+ Begin
+ If FailOver Then
+ Begin
+ For I := 0 To FailOverConnections.Count -1 Do
+ Begin
+ If I = 0 Then
+ Begin
+ If ((FailOverConnections[I].TypeRequest = TypeRequest) And
+ (FailOverConnections[I].WelcomeMessage = WelcomeMessage) And
+ (FailOverConnections[I].Host = Host) And
+ (FailOverConnections[I].Port = Port) And
+ (FailOverConnections[I].Compression = DataCompression) And
+ (FailOverConnections[I].hEncodeStrings = EncodedStrings) And
+ (FailOverConnections[I].Encoding = Encoding) And
+ (FailOverConnections[I].AccessTag = AccessTag) And
+ (FailOverConnections[I].DataRoute = DataRoute)) Or
+ (Not (FailOverConnections[I].Active)) Then
+ Continue;
+ End;
+ If Assigned(OnFailOverExecute) Then
+ OnFailOverExecute(FailOverConnections[I]);
+ vURL := BuildUrl(FailOverConnections[I].TypeRequest,
+ FailOverConnections[I].Host,
+ FailOverConnections[I].DataRoute,
+ FailOverConnections[I].Port); //LowerCase(Format(UrlBase, [vTpRequest, vHost, vPort, vUrlPath])) + EventData;
+ SetCharsetRequest(HttpRequest, FailOverConnections[I].Encoding);
+ SetParams(FailOverConnections[I].ProxyOptions,
+ FailOverConnections[I].RequestTimeOut,
+ FailOverConnections[I].ConnectTimeOut,
+ FailOverConnections[I].AuthenticationOptions);
+ If ExecRequest(EventType, vURL,
+ FailOverConnections[I].WelcomeMessage,
+ FailOverConnections[I].AccessTag,
+ FailOverConnections[I].Encoding,
+ FailOverConnections[I].Compression,
+ FailOverConnections[I].hEncodeStrings,
+ BinaryRequest,
+ Result, vErrorMessage) Then
+ Begin
+ If FailOverReplaceDefaults Then
+ Begin
+ TypeRequest := FailOverConnections[I].TypeRequest;
+ WelcomeMessage := FailOverConnections[I].WelcomeMessage;
+ Host := FailOverConnections[I].Host;
+ Port := FailOverConnections[I].Port;
+ DataCompression := FailOverConnections[I].Compression;
+ ProxyOptions := FailOverConnections[I].ProxyOptions;
+ EncodedStrings := FailOverConnections[I].hEncodeStrings;
+ Encoding := FailOverConnections[I].Encoding;
+ AccessTag := FailOverConnections[I].AccessTag;
+ RequestTimeout := FailOverConnections[I].RequestTimeOut;
+ ConnectTimeout := FailOverConnections[I].ConnectTimeOut;
+ DataRoute := FailOverConnections[I].DataRoute;
+ End;
+ Break;
+ End
+ Else
+ Begin
+ If Assigned(OnFailOverError) Then
+ Begin
+ OnFailOverError(FailOverConnections[I], vErrorMessage);
+ vErrorMessage := '';
+ End;
+ End;
+ End;
+ End;
+ End;
+ Finally
+ If Assigned(HttpRequest) Then
+ FreeAndNil(HttpRequest);
+
+ If (vErrorMessage <> '') Then
+ Begin
+ //Result := unescape_chars(vErrorMessage);
+ Result := vErrorMessage;
+ Raise Exception.Create(Result);
+ End;
+ End;
+End;
+
+{ TRESTDWjClientLAMWDatabase }
+
+Constructor TRESTDWjClientLAMWDatabase.Create(AOwner: TComponent);
+Begin
+ Inherited;
+ RESTClientPooler := TRESTDWjClientLAMWClientPooler.Create(Self);
+ ContentType := cContentTypeFormUrl;
+ ContentEncoding := cDefaultContentEncoding;
+ TRESTDWjClientLAMWClientPooler(RESTClientPooler).ClientIpVersion := ClientIpVersion;
+End;
+
+Destructor TRESTDWjClientLAMWDatabase.Destroy;
+Begin
+ DestroyClientPooler;
+
+ Inherited;
+End;
+
+
+function TRESTDWjClientLAMWDatabase.IsServerLive(Aip: String; Aport: Integer; AMessageErro: String): Boolean;
+begin
+ Result := True;
+end;
+
+{ TRESTDWjClientLAMWPoolerList }
+
+constructor TRESTDWjClientLAMWPoolerList.Create(AOwner: TComponent);
+begin
+ Inherited;
+
+ RESTClientPooler := TRESTDWjClientLAMWClientPooler.Create(Self);
+end;
+
+destructor TRESTDWjClientLAMWPoolerList.Destroy;
+begin
+
+ Inherited;
+end;
+
+{ TRESTDWjClientLAMWClientHttpBase }
+
+Constructor TRESTDWjClientLAMWClientHttpBase.Create(AOwner : TComponent);
+Begin
+ Inherited;
+ ContentType := cContentTypeFormUrl;
+ ContentEncoding := cDefaultContentEncoding;
+ Accept := cDefaultAccept;
+ AcceptEncoding := '';
+ MaxAuthRetries := 0;
+ UserAgent := cUserAgent;
+ AccessControlAllowOrigin := '*';
+ ActiveRequest := '';
+ RedirectMaximum := 1;
+ RequestTimeOut := 5000;
+ ConnectTimeOut := 5000;
+End;
+
+Function TRESTDWjClientLAMWClientHttpBase.Delete(AUrl : String;
+ Const CustomHeaders : TStringList = Nil;
+ Const CustomParams : TStringList = Nil;
+ Const AResponse : TStream = Nil;
+ Const AResponseError : TStream = Nil): Integer;
+Begin
+
+End;
+
+Destructor TRESTDWjClientLAMWClientHttpBase.Destroy;
+Begin
+ If Assigned(HttpRequest) then
+ Begin
+ Try
+ If Assigned(HttpRequest) Then
+ Begin
+ HttpRequest.Disconnect(HttpRequest);
+ End;
+ Except
+ End;
+ FreeAndNil(HttpRequest);
+ End;
+ Inherited;
+End;
+
+Procedure TRESTDWjClientLAMWClientHttpBase.DestroyClient;
+Begin
+ //
+End;
+
+Function TRESTDWjClientLAMWClientHttpBase.Get(AUrl : String = '';
+ Const CustomHeaders : TStringList = Nil;
+ Const AResponse : TStream = Nil;
+ Const AResponseError : TStream = Nil) : Integer;
+Begin
+
+End;
+
+Function TRESTDWjClientLAMWClientHttpBase.Post(AUrl : String = '';
+ Const CustomHeaders : TStringList = Nil;
+ Const CustomParams : TStringList = Nil;
+ Const CustomBody : TStream = Nil;
+ Const AResponse : TStream = Nil;
+ Const AResponseError : TStream = Nil) : Integer;
+Begin
+
+End;
+
+Procedure TRESTDWjClientLAMWClientHttpBase.SetHeaders(AHeaders : TStringList);
+Begin
+
+End;
+
+Procedure TRESTDWjClientLAMWClientHttpBase.SetInternalEvents;
+Begin
+
+End;
+
+Procedure TRESTDWjClientLAMWClientHttpBase.SetOnStatus(Value : TOnStatus);
+Begin
+ Inherited;
+
+End;
+
+Procedure TRESTDWjClientLAMWClientHttpBase.SetOnWorkEnd(Value : TOnWorkEnd);
+Begin
+ Inherited;
+
+End;
+
+Procedure TRESTDWjClientLAMWClientHttpBase.SetParams;
+Begin
+
+End;
+
+End.
diff --git a/CORE/Source/Sockets/JClient_LAMW/uRESTDWjClientLAMWReg.pas b/CORE/Source/Sockets/JClient_LAMW/uRESTDWjClientLAMWReg.pas
new file mode 100644
index 000000000..cb7bd0383
--- /dev/null
+++ b/CORE/Source/Sockets/JClient_LAMW/uRESTDWjClientLAMWReg.pas
@@ -0,0 +1,92 @@
+unit uRESTDWjClientLAMWReg;
+
+{$I ..\..\Includes\uRESTDW.inc}
+{
+ REST Dataware .
+ Criado por XyberX (Gilbero Rocha da Silva), o REST Dataware tem como objetivo o uso de REST/JSON
+ de maneira simples, em qualquer Compilador Pascal (Delphi, Lazarus e outros...).
+ O REST Dataware também tem por objetivo levar componentes compatíveis entre o Delphi e outros Compiladores
+ Pascal e com compatibilidade entre sistemas operacionais.
+ Desenvolvido para ser usado de Maneira RAD, o REST Dataware tem como objetivo principal você usuário que precisa
+ de produtividade e flexibilidade para produção de Serviços REST/JSON, simplificando o processo para você programador.
+
+ Membros do Grupo :
+
+ XyberX (Gilberto Rocha) - Admin - Criador e Administrador do pacote.
+ A. Brito - Admin - Administrador do desenvolvimento.
+ Alexandre Abbade - Admin - Administrador do desenvolvimento de DEMOS, coordenador do Grupo.
+ Flávio Motta - Member Tester and DEMO Developer.
+ Mobius One - Devel, Tester and Admin.
+ Gustavo - Criptografia and Devel.
+ Eloy - Devel.
+ Roniery - Devel.
+}
+
+interface
+
+uses
+ StdCtrls, ComCtrls, Forms, ExtCtrls, DBCtrls, DBGrids, Dialogs, Controls,
+ LResources, LazFileUtils, Classes, uRESTDWjClientLAMWBase;
+
+{$IFNDEF RESTDWLAMW}
+Type
+ TPoolersList = Class(TStringProperty)
+ Public
+ Function GetAttributes: TPropertyAttributes; Override;
+ Procedure GetValues(Proc: TGetStrProc); Override;
+ Procedure Edit; Override;
+ End;
+{$ENDIF}
+
+Procedure Register;
+
+Implementation
+
+{$IFNDEF RESTDWLAMW}
+Function TPoolersList.GetAttributes: TPropertyAttributes;
+Begin
+ // editor, sorted list, multiple selection
+ Result := [paValueList, paSortList];
+End;
+
+Procedure TPoolersList.Edit;
+Var
+ vTempData: String;
+Begin
+ Inherited Edit;
+ Try
+ vTempData := GetValue;
+ SetValue(vTempData);
+ Finally
+ End;
+end;
+
+Procedure TPoolersList.GetValues(Proc: TGetStrProc);
+Var
+ vLista: TStringList;
+ I: Integer;
+Begin
+ // Provide a list of Poolers
+ With GetComponent(0) as TRESTDWIdDatabase Do
+ Begin
+ Try
+ vLista := TRESTDWjClientLAMWDatabase(GetComponent(0)).PoolerList;
+ For I := 0 To vLista.Count - 1 Do
+ Proc(vLista[I]);
+ Except
+ End;
+ End;
+End;
+{$ENDIF}
+
+Procedure Register;
+Begin
+ {$I restdwjClientLAMW.lrs}
+ RegisterComponents ('REST Dataware - Client', [TRESTDWjClientLAMWClientREST, TRESTDWjClientLAMWClientPooler]);
+ RegisterComponents ('REST Dataware - DB', [TRESTDWjClientLAMWDatabase]);
+ {$IFNDEF RESTDWLAMW}
+ RegisterPropertyEditor(TypeInfo(String), TRESTDWjClientLAMWDatabase, 'PoolerName', TPoolersList);
+ {$ENDIF}
+End;
+
+end.
diff --git a/CORE/Source/utils/uRESTDWDynamic.pas b/CORE/Source/utils/uRESTDWDynamic.pas
index cd625a70c..c952b6466 100644
--- a/CORE/Source/utils/uRESTDWDynamic.pas
+++ b/CORE/Source/utils/uRESTDWDynamic.pas
@@ -36,7 +36,7 @@
SysUtils, Classes, TypInfo, RTLConsts;
Type
- {$IF not Defined(RESTDWLAZARUS) AND not Defined(DELPHIXEUP)}
+ {$IF not Defined(RESTDWLAZARUS) AND not Defined(RESTDWLAMW) AND not Defined(DELPHIXEUP)}
NativeInt = Integer;
NativeUInt = Cardinal;
PNativeInt = ^NativeInt;
diff --git a/CORE/Source/utils/uRESTDWMassiveBuffer.pas b/CORE/Source/utils/uRESTDWMassiveBuffer.pas
index 9349e39e2..f8db34508 100644
--- a/CORE/Source/utils/uRESTDWMassiveBuffer.pas
+++ b/CORE/Source/utils/uRESTDWMassiveBuffer.pas
@@ -1543,9 +1543,7 @@ implementation
If Field.IsNull Then
MassiveLineBuff.vMassiveValues.Items[I + 1].Value := Null
Else If Trim(Field.AsString) <> '' Then
- MassiveLineBuff.vMassiveValues.Items[I + 1].Value := BuildStringFloat(Field.AsString)
- Else
- MassiveLineBuff.vMassiveValues.Items[I + 1].Value := '';
+ MassiveLineBuff.vMassiveValues.Items[I + 1].Value := BuildStringFloat(Field.AsString);
End
Else
Begin
diff --git a/CORE/Source/utils/uRESTDWOpenSslLib.pas b/CORE/Source/utils/uRESTDWOpenSslLib.pas
index 4b427291d..5d51f81b0 100644
--- a/CORE/Source/utils/uRESTDWOpenSslLib.pas
+++ b/CORE/Source/utils/uRESTDWOpenSslLib.pas
@@ -34,6 +34,7 @@ interface
Types,
SysUtils;
+{$IFNDEF RESTDWLAMW}
const
{$IF Defined(WIN32)}
LIB_CRYPTO_110 = 'libcrypto-1_1.dll';
@@ -92,8 +93,9 @@ interface
LIB_SSL_300 = 'libssl.so';
_PU = '';
{$ELSE}
- {$MESSAGE Error 'Unsupported platform'}
+ {$MESSAGE Error 'Unsupported platform'}
{$IFEND}
+{$ENDIF}
const
OPENSSL_VER_1100 = $1010000f; // 1.1.0
@@ -22452,10 +22454,12 @@ function SSL_get_mode(s: PSSL): Integer;
function DTLSv1_get_timeout(s: PSSL; timeval: PTimeVal): LongInt;
procedure DTLSv1_handle_timeout(s: PSSL);
+{$IFNDEF RESTDWLAMW}
function LoadCrypto : boolean;
function LoadSSL : boolean;
procedure UnloadCrypto;
+{$ENDIF}
procedure UnloadSSL;
function SslGetImports (Handle: THandle; List: array of TOSSLImports): string ; { V8.35 }
@@ -22467,6 +22471,7 @@ implementation
eossl_libnotfound1 = 'Failed libraries not found %s';
eossl_libnotfound2 = 'Failed libraries not found %s or %s';
+{$IFNDEF RESTDWLAMW}
function LoadCrypto : boolean;
var
Erros : string;
@@ -22580,6 +22585,7 @@ function LoadSSL : boolean;
raise Exception.Create(Format(eossl_libnotfound1,[LIB_SSL_110]))
end;
end;
+{$ENDIF}
procedure UnloadSSL;
begin
diff --git a/CORE/Source/utils/uRESTDWTools.pas b/CORE/Source/utils/uRESTDWTools.pas
index b11386631..5aa9b378e 100644
--- a/CORE/Source/utils/uRESTDWTools.pas
+++ b/CORE/Source/utils/uRESTDWTools.pas
@@ -3621,7 +3621,7 @@ procedure WriteStringToStream(AStream : TStream;
{$IF Defined(RESTDWMOBILE)} //Alterado para IOS Brito
Function EncodeBase64(Const Value : String) : String;
-{$ELSEIF (NOT Defined(RESTDWLAZARUS) AND Defined(RESTDWLINUX))} //Alterado para Lazarus LINUX Brito
+{$ELSEIF (NOT Defined(RESTDWLAZARUS) AND NOT Defined(RESTDWLAMW) AND Defined(RESTDWLINUX))} //Alterado para Lazarus LINUX Brito
Function EncodeBase64(Const Value : String) : String;
{$ELSE}
Function EncodeBase64(Const Value : String