94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
  | 
               when others => null;
            end case;
            exit;
         end if;
         --  Read a single octet from source
         if P.Override_Pos < P.Override.Length then
            P.Override_Pos := P.Override_Pos + 1;
            O := P.Override.Element (P.Override_Pos);
            if P.Override_Pos >= P.Override.Length then
               P.Override.Hard_Reset;
               P.Override_Pos := 0;
            end if;
         else
            Input.Read (Item, Last);
            if Last not in Item'Range then
               P.Latest := Events.End_Of_Input;
               exit;
            end if;
            O := Item (Last);
 | 
|
<
<
<
<
|
<
<
  | 
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
  | 
               when others => null;
            end case;
            exit;
         end if;
         --  Read a single octet from source
         if P.Override.Length > 0 then
            P.Override.Pop (O);
         else
            Input.Read (Item, Last);
            if Last not in Item'Range then
               P.Latest := Events.End_Of_Input;
               exit;
            end if;
            O := Item (Last);
 | 
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
  | 
               then
                  P.Buffer.Append
                    (Encodings.Decode_Base64 (P.Internal.Chunk.Data
                                          (0 .. P.Internal.Chunk.Length - 1)));
                  if P.Internal.State = Base64_Atom then
                     P.Latest := Events.Add_Atom;
                  else
                     P.Override.Append (P.Buffer.Data);
                     P.Buffer.Soft_Reset;
                  end if;
                  P.Internal := (State => Waiting);
               end if;
            when Hex_Atom =>
               if Encodings.Is_Hex_Digit (O) then
 | 
|
  | 
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
  | 
               then
                  P.Buffer.Append
                    (Encodings.Decode_Base64 (P.Internal.Chunk.Data
                                          (0 .. P.Internal.Chunk.Length - 1)));
                  if P.Internal.State = Base64_Atom then
                     P.Latest := Events.Add_Atom;
                  else
                     P.Override.Append_Reverse (P.Buffer.Data);
                     P.Buffer.Soft_Reset;
                  end if;
                  P.Internal := (State => Waiting);
               end if;
            when Hex_Atom =>
               if Encodings.Is_Hex_Digit (O) then
 |