236 changes: 214 additions & 22 deletions bin/lib/Image/ExifTool/TagNames.pod

Large diffs are not rendered by default.

49 changes: 37 additions & 12 deletions bin/lib/Image/ExifTool/WriteQuickTime.pl
Original file line number Diff line number Diff line change
Expand Up @@ -1232,25 +1232,33 @@ ($$$)
} elsif ($format) {
$val = ReadValue(\$buff, 0, $format, undef, $size);
} elsif (($tag =~ /^\xa9/ or $$tagInfo{IText}) and $size >= ($$tagInfo{IText} || 4)) {
if ($$tagInfo{IText} and $$tagInfo{IText} == 6) {
$lang = unpack('x4n', $buff);
$len = $size - 6;
$val = substr($buff, 6, $len);
my $hdr;
if ($$tagInfo{IText} and $$tagInfo{IText} >= 6) {
my $iText = $$tagInfo{IText};
my $pos = $iText - 2;
$lang = unpack("x${pos}n", $buff);
$hdr = substr($buff,4,$iText-6);
$len = $size - $iText;
$val = substr($buff, $iText, $len);
} else {
($len, $lang) = unpack('nn', $buff);
$len -= 4 if 4 + $len > $size; # (see QuickTime.pm for explanation)
$len = $size - 4 if $len > $size - 4 or $len < 0;
$val = substr($buff, 4, $len);
}
$lang or $lang = $undLang; # treat both 0 and 'und' as 'und'
my $enc;
if ($lang < 0x400 and $val !~ /^\xfe\xff/) {
$charsetQuickTime = $et->Options('CharsetQuickTime');
$val = $et->Decode($val, $charsetQuickTime);
$enc = $charsetQuickTime;
} else {
my $enc = $val=~s/^\xfe\xff// ? 'UTF16' : 'UTF8';
$enc = $val=~s/^\xfe\xff// ? 'UTF16' : 'UTF8';
}
unless ($$tagInfo{NoDecode}) {
$val = $et->Decode($val, $enc);
$val =~ s/\0+$//; # remove trailing nulls if they exist
}
$val =~ s/\0+$//; # remove trailing nulls if they exist
$val = $hdr . $val if defined $hdr;
my $langCode = UnpackLang($lang, 1);
$langInfo = GetLangInfo($tagInfo, $langCode);
$nvHash = $et->GetNewValueHash($langInfo);
Expand All @@ -1267,6 +1275,9 @@ ($$$)
}
} else {
$val = $buff;
if ($tag =~ /^\xa9/ or $$tagInfo{IText}) {
$et->Warn("Corrupted $$tagInfo{Name} value");
}
}
if ($nvHash and defined $val) {
if ($et->IsOverwriting($nvHash, $val)) {
Expand All @@ -1279,12 +1290,23 @@ ($$$)
$et->VerboseValue("+ $grp:$$langInfo{Name}", $newData);
# add back necessary header and encode as necessary
if (defined $lang) {
$newData = $et->Encode($newData, $lang < 0x400 ? $charsetQuickTime : 'UTF8');
my $iText = $$tagInfo{IText} || 0;
my $hdr;
if ($iText > 6) {
$newData .= ' 'x($iText-6) if length($newData) < $iText-6;
$hdr = substr($newData, 0, $iText-6);
$newData = substr($newData, $iText-6);
}
unless ($$tagInfo{NoDecode}) {
$newData = $et->Encode($newData, $lang < 0x400 ? $charsetQuickTime : 'UTF8');
}
my $wLang = $lang eq $undLang ? 0 : $lang;
if ($$tagInfo{IText} and $$tagInfo{IText} == 6) {
if ($iText < 6) {
$newData = pack('nn', length($newData), $wLang) . $newData;
} elsif ($iText == 6) {
$newData = pack('Nn', 0, $wLang) . $newData . "\0";
} else {
$newData = pack('nn', length($newData), $wLang) . $newData;
$newData = "\0\0\0\0" . $hdr . pack('n', $wLang) . $newData . "\0";
}
} elsif (not $format or $format =~ /^string/ and
not $$tagInfo{Binary} and not $$tagInfo{ValueConv})
Expand Down Expand Up @@ -1443,9 +1465,12 @@ ($$$)
my $grp = $et->GetGroup($tagInfo,1);
$et->Warn("Can't use country code for $grp:$$tagInfo{Name}");
next;
} elsif ($$tagInfo{IText} and $$tagInfo{IText} == 6) {
} elsif ($$tagInfo{IText} and $$tagInfo{IText} >= 6) {
# add 6-byte langText header and trailing null
$newVal = pack('Nn',0,$lang) . $newVal . "\0";
# (with extra junk before language code if IText > 6)
my $n = $$tagInfo{IText} - 6;
$newVal .= ' ' x $n if length($newVal) < $n;
$newVal = "\0\0\0\0" . substr($newVal,0,$n) . pack('n',0,$lang) . substr($newVal,$n) . "\0";
} else {
# add IText header
$newVal = pack('nn',length($newVal),$lang) . $newVal;
Expand Down
8 changes: 6 additions & 2 deletions bin/lib/Image/ExifTool/WriteXMP.pl
Original file line number Diff line number Diff line change
Expand Up @@ -506,7 +506,7 @@ ($$)
my $prop;
foreach $prop (@propList) {
my ($ns, $tag) = $prop =~ /(.+?):(.*)/;
next if $$nsUsed{$ns};
next if not defined $ns or $$nsUsed{$ns};
my $uri = $nsURI{$ns};
unless ($uri) {
warn "No URI for namespace prefix $ns!\n";
Expand Down Expand Up @@ -1417,7 +1417,11 @@ ($$;$)
my $uri = $nsUsed{$1};
unless ($uri) {
$uri = $nsURI{$1}; # we must have added a namespace
$uri or $xmpErr = "Undefined XMP namespace: $1", next;
unless ($uri) {
# (namespace may be empty if trying to write empty XMP structure, forum12384)
$xmpErr = "Undefined XMP namespace: $1" if length $uri;
next;
}
}
$nsNew{$1} = $uri;
# need a new description if any new namespaces
Expand Down
1 change: 1 addition & 0 deletions bin/lib/Image/ExifTool/Writer.pl
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ package Image::ExifTool;
ICC => [ 'ICC_Profile', 'WriteICC' ],
IND => 'InDesign',
JP2 => 'Jpeg2000',
JXL => 'Jpeg2000',
MIE => undef,
MOV => [ 'QuickTime', 'WriteMOV' ],
MRW => 'MinoltaRaw',
Expand Down
23 changes: 17 additions & 6 deletions bin/lib/Image/ExifTool/XMP.pm
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ use Image::ExifTool::Exif;
use Image::ExifTool::GPS;
require Exporter;

$VERSION = '3.40';
$VERSION = '3.41';
@ISA = qw(Exporter);
@EXPORT_OK = qw(EscapeXML UnescapeXML);

Expand All @@ -71,6 +71,13 @@ sub ConvertRational($);
sub ConvertRationalList($);
sub WriteGSpherical($$$);

# standard path locations for XMP in major file types
my %stdPath = (
JPEG => 'JPEG-APP1-XMP',
TIFF => 'TIFF-IFD0-XMP',
PSD => 'PSD-XMP',
);

# lookup for translating to ExifTool namespaces (and family 1 group names)
%stdXlatNS = (
# shorten ugly namespace prefixes
Expand Down Expand Up @@ -3844,6 +3851,7 @@ sub ProcessXMP($$;$)
my ($buff, $fmt, $hasXMP, $isXML, $isRDF, $isSVG);
my $rtnVal = 0;
my $bom = 0;
my $path = $et->MetadataPath();

# namespaces and prefixes currently in effect while parsing the file,
# and lookup to translate brain-dead-Microsoft-Photo-software prefixes
Expand All @@ -3861,11 +3869,7 @@ sub ProcessXMP($$;$)
(($$dirInfo{DirName} || '') eq 'XMP' or $$et{FILE_TYPE} eq 'XMP'))
{
$$et{XmpValidate} = { } if $$et{OPTIONS}{Validate};
my $path = $et->MetadataPath();
my $nonStd;
if ($$et{FILE_TYPE} =~ /^(JPEG|TIFF|PSD)$/ and $path !~ /^(JPEG-APP1-XMP|TIFF-IFD0-XMP|PSD-XMP)$/) {
$nonStd = 1;
}
my $nonStd = ($stdPath{$$et{FILE_TYPE}} and $path ne $stdPath{$$et{FILE_TYPE}});
if ($nonStd and $Image::ExifTool::MWG::strict) {
$et->Warn("Ignored non-standard XMP at $path");
return 1;
Expand Down Expand Up @@ -4125,6 +4129,13 @@ sub ProcessXMP($$;$)
}
defined $fmt or $et->Warn('XMP character encoding error');
}
# warn if standard XMP is missing xpacket wrapper
if ($$et{XMP_NO_XPACKET} and $$et{OPTIONS}{Validate} and
$stdPath{$$et{FILE_TYPE}} and $path eq $stdPath{$$et{FILE_TYPE}} and
not $$dirInfo{IsExtended} and not $$et{DOC_NUM})
{
$et->Warn('XMP is missing xpacket wrapper', 1);
}
if ($fmt) {
# trim if necessary to avoid converting non-UTF data
if ($dirStart or $dirEnd != length($$dataPt)) {
Expand Down
84 changes: 42 additions & 42 deletions bin/perl-Image-ExifTool.spec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Summary: perl module for image data extraction
Name: perl-Image-ExifTool
Version: 12.23
Version: 12.25
Release: 1
License: Artistic/GPL
Group: Development/Libraries/Perl
Expand All @@ -22,47 +22,47 @@ supported by ExifTool (r = read, w = write, c = create):

File Types
------------+-------------+-------------+-------------+------------
360 r/w | DPX r | ITC r | O r | RAR r
3FR r | DR4 r/w/c | J2C r | ODP r | RAW r/w
3G2 r/w | DSS r | JNG r/w | ODS r | RIFF r
3GP r/w | DV r | JP2 r/w | ODT r | RSRC r
A r | DVB r/w | JPEG r/w | OFR r | RTF r
AA r | DVR-MS r | JSON r | OGG r | RW2 r/w
AAE r | DYLIB r | JXL r | OGV r | RWL r/w
AAX r/w | EIP r | K25 r | ONP r | RWZ r
ACR r | EPS r/w | KDC r | OPUS r | RM r
AFM r | EPUB r | KEY r | ORF r/w | SEQ r
AI r/w | ERF r/w | LA r | ORI r/w | SKETCH r
AIFF r | EXE r | LFP r | OTF r | SO r
APE r | EXIF r/w/c | LNK r | PAC r | SR2 r/w
ARQ r/w | EXR r | LRV r/w | PAGES r | SRF r
ARW r/w | EXV r/w/c | M2TS r | PBM r/w | SRW r/w
ASF r | F4A/V r/w | M4A/V r/w | PCD r | SVG r
AVI r | FFF r/w | MACOS r | PCX r | SWF r
AVIF r/w | FITS r | MAX r | PDB r | THM r/w
AZW r | FLA r | MEF r/w | PDF r/w | TIFF r/w
BMP r | FLAC r | MIE r/w/c | PEF r/w | TORRENT r
BPG r | FLIF r/w | MIFF r | PFA r | TTC r
BTF r | FLV r | MKA r | PFB r | TTF r
CHM r | FPF r | MKS r | PFM r | TXT r
COS r | FPX r | MKV r | PGF r | VCF r
CR2 r/w | GIF r/w | MNG r/w | PGM r/w | VRD r/w/c
CR3 r/w | GPR r/w | MOBI r | PLIST r | VSD r
CRM r/w | GZ r | MODD r | PICT r | WAV r
CRW r/w | HDP r/w | MOI r | PMP r | WDP r/w
CS1 r/w | HDR r | MOS r/w | PNG r/w | WEBP r
CSV r | HEIC r/w | MOV r/w | PPM r/w | WEBM r
CZI r | HEIF r/w | MP3 r | PPT r | WMA r
DCM r | HTML r | MP4 r/w | PPTX r | WMV r
DCP r/w | ICC r/w/c | MPC r | PS r/w | WTV r
DCR r | ICS r | MPG r | PSB r/w | WV r
DFONT r | IDML r | MPO r/w | PSD r/w | X3F r/w
DIVX r | IIQ r/w | MQV r/w | PSP r | XCF r
DJVU r | IND r/w | MRW r/w | QTIF r/w | XLS r
DLL r | INSP r/w | MXF r | R3D r | XLSX r
DNG r/w | INSV r | NEF r/w | RA r | XMP r/w/c
DOC r | INX r | NRW r/w | RAF r/w | ZIP r
DOCX r | ISO r | NUMBERS r | RAM r |
360 r/w | DPX r | ITC r | NUMBERS r | RAM r
3FR r | DR4 r/w/c | J2C r | O r | RAR r
3G2 r/w | DSS r | JNG r/w | ODP r | RAW r/w
3GP r/w | DV r | JP2 r/w | ODS r | RIFF r
A r | DVB r/w | JPEG r/w | ODT r | RSRC r
AA r | DVR-MS r | JSON r | OFR r | RTF r
AAE r | DYLIB r | JXL r | OGG r | RW2 r/w
AAX r/w | EIP r | K25 r | OGV r | RWL r/w
ACR r | EPS r/w | KDC r | ONP r | RWZ r
AFM r | EPUB r | KEY r | OPUS r | RM r
AI r/w | ERF r/w | LA r | ORF r/w | SEQ r
AIFF r | EXE r | LFP r | ORI r/w | SKETCH r
APE r | EXIF r/w/c | LNK r | OTF r | SO r
ARQ r/w | EXR r | LRV r/w | PAC r | SR2 r/w
ARW r/w | EXV r/w/c | M2TS r | PAGES r | SRF r
ASF r | F4A/V r/w | M4A/V r/w | PBM r/w | SRW r/w
AVI r | FFF r/w | MACOS r | PCD r | SVG r
AVIF r/w | FITS r | MAX r | PCX r | SWF r
AZW r | FLA r | MEF r/w | PDB r | THM r/w
BMP r | FLAC r | MIE r/w/c | PDF r/w | TIFF r/w
BPG r | FLIF r/w | MIFF r | PEF r/w | TORRENT r
BTF r | FLV r | MKA r | PFA r | TTC r
CHM r | FPF r | MKS r | PFB r | TTF r
COS r | FPX r | MKV r | PFM r | TXT r
CR2 r/w | GIF r/w | MNG r/w | PGF r | VCF r
CR3 r/w | GPR r/w | MOBI r | PGM r/w | VRD r/w/c
CRM r/w | GZ r | MODD r | PLIST r | VSD r
CRW r/w | HDP r/w | MOI r | PICT r | WAV r
CS1 r/w | HDR r | MOS r/w | PMP r | WDP r/w
CSV r | HEIC r/w | MOV r/w | PNG r/w | WEBP r
CZI r | HEIF r/w | MP3 r | PPM r/w | WEBM r
DCM r | HTML r | MP4 r/w | PPT r | WMA r
DCP r/w | ICC r/w/c | MPC r | PPTX r | WMV r
DCR r | ICS r | MPG r | PS r/w | WTV r
DFONT r | IDML r | MPO r/w | PSB r/w | WV r
DIVX r | IIQ r/w | MQV r/w | PSD r/w | X3F r/w
DJVU r | IND r/w | MRC r | PSP r | XCF r
DLL r | INSP r/w | MRW r/w | QTIF r/w | XLS r
DNG r/w | INSV r | MXF r | R3D r | XLSX r
DOC r | INX r | NEF r/w | RA r | XMP r/w/c
DOCX r | ISO r | NRW r/w | RAF r/w | ZIP r

Meta Information
----------------------+----------------------+---------------------
Expand Down
9 changes: 5 additions & 4 deletions bin/pp_build_exe.args
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@
# 10) Copy zip archive to web servers.
# 11) Update zip file version in link and text of html/index.html.
#------------------------------------------------------------------------------
-T exiftool-12.23
#--info=FileVersion=12.2.3.0
#--info=ProductVersion=12.2.3.0
##"--info=Build Date=2021:04:01 14:01:49-04:00"
-T exiftool-12.25
#--info=FileVersion=12.2.5.0
#--info=ProductVersion=12.2.5.0
##"--info=Build Date=2021:04:22 14:33:15-04:00"
##"--info=Bundled Perl Version=ActivePerl 5.24.0"
##"--info=LegalCopyright=Copyright (c) 2003-2021, Phil Harvey"
##"--info=ProductName=ExifTool"
Expand Down Expand Up @@ -181,6 +181,7 @@
-M Image::ExifTool::MPC
-M Image::ExifTool::MPEG
-M Image::ExifTool::MPF
-M Image::ExifTool::MRC
-M Image::ExifTool::MWG
-M Image::ExifTool::MXF
-M Image::ExifTool::Nikon
Expand Down
48 changes: 24 additions & 24 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0:
color-convert "^2.0.1"

anymatch@~3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
version "3.1.2"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
dependencies:
normalize-path "^3.0.0"
picomatch "^2.0.4"
Expand All @@ -43,9 +43,9 @@ argparse@^2.0.1:
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==

balanced-match@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
version "1.0.2"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==

binary-extensions@^2.0.0:
version "2.2.0"
Expand Down Expand Up @@ -78,9 +78,9 @@ camelcase@^6.0.0:
integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==

chalk@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
version "4.1.1"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad"
integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
Expand Down Expand Up @@ -194,9 +194,9 @@ get-caller-file@^2.0.5:
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==

glob-parent@~5.1.0:
version "5.1.1"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
dependencies:
is-glob "^4.0.1"

Expand Down Expand Up @@ -395,9 +395,9 @@ path-is-absolute@^1.0.0:
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=

picomatch@^2.0.4, picomatch@^2.2.1:
version "2.2.2"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
version "2.2.3"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d"
integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==

prettier@^2.2.1:
version "2.2.1"
Expand Down Expand Up @@ -451,9 +451,9 @@ serialize-javascript@5.0.1:
strip-ansi "^4.0.0"

string-width@^4.1.0, string-width@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5"
integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==
version "4.2.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5"
integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==
dependencies:
emoji-regex "^8.0.0"
is-fullwidth-code-point "^3.0.0"
Expand Down Expand Up @@ -533,19 +533,19 @@ wrappy@1:
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=

y18n@^5.0.5:
version "5.0.5"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18"
integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==
version "5.0.8"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==

yargs-parser@20.2.4:
version "20.2.4"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==

yargs-parser@^20.2.2:
version "20.2.6"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.6.tgz#69f920addf61aafc0b8b89002f5d66e28f2d8b20"
integrity sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA==
version "20.2.7"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a"
integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==

yargs-unparser@2.0.0:
version "2.0.0"
Expand Down