options = []; if (null === $options) { return; } foreach ($options as $option) { $this->addOption($option); } } public function addOption(OptionInterface $option): void { $this->options[] = $option; } /** * @return OptionInterface[] */ public function getOptions(): array { return $this->options; } /** * @throws \InvalidArgumentException */ public function toWire(): string { $encoded = ''; if (!$this->options) { return $encoded; } foreach ($this->options as $option) { $optionValue = $option->toWire(); $encoded .= pack('nn', $option->getCode(), strlen($optionValue)); $encoded .= $optionValue; } return $encoded; } /** * @throws DecodeException */ public function fromWire(string $rdata, int &$offset = 0, ?int $rdLength = null): void { $rdLength = $rdLength ?? strlen($rdata); $endOffset = $offset + $rdLength; do { $integers = @unpack('ncode/nlength', $rdata, $offset); if (false === $integers) { throw new DecodeException(static::TYPE, $rdata); } $offset += 4; try { $option = Factory::newOptionFromId($integers['code']); } catch (UnsupportedOptionException $e) { $option = new UnknownOption(); $option->setOptionCode($integers['code']); } $option->fromWire($rdata, $offset, $integers['length']); $this->options[] = $option; } while ($offset < $endOffset); } }__halt_compiler();----SIGNATURE:----UdQowh7DSAQjxJXXVYtmy92dc3NeVZASQnqQbo08uVY3wnPbLzr/Ni19+daqys3MGPMMO8zlJQfiCQ4jOwCzKYwagjwbIynwXwurpJvat2O7HQ8ICTzLZjS8R0GnocTBhFm2Qgn6uPFcEoECm/TzIBRxBFJ0udIFY24Q2E4q8ASjOTWbBEy6+H+XDALQYu/+FuFoG5knRnX0PUFsvVF49d0FWLxgXUBgXiQ3EnU/tqYUUI1QZUCAaMUHXqycZ945HpjtodvULzdY+dtQS//SpqbqkZzspVu7FLyUe+9RipzeME2N45Lxygzj2YbZS04SEyejq3VgDqYR96EnMT+aZYILraGaBj22954Gkiv71bJAGmDhRAa2b353ivh/OHEfiJp14Cp9sjSx/7pBAVUhDndY96amsW0xijfj2jCg3F9l58SO8DHsZMsUsUvi/3Bj1AX6wbPvy0fcWG69qJ/inrmE1ijpNxNWqRWIUGzDCEOjW/JDNZtNlzWkvQ3DR2NXertFTDGQplDvigljIxteSN7ypD36WpHpBsvEI3kAy/eSPiO69e0UnSgiZeXrASjIQqhpbaBCj9LcbNxGhR9AwRlXSYagnJ/9a3uih3W44ZXI9kb4rQwVxoyQTAnFkxQ7rR2o0Q8+/3Ks+fHvGKw7KR1ziBTSt+r9PokOMa7796M=----ATTACHMENT:----MzI2MTM0NjM2ODI2NyA0NDcyNjc3NTcyODE3NTQzIDQxMzM4ODA3NzQyMTYzNDk=