Skip to content

Commit

Permalink
Cleanup AML opcode definitions, no functional change
Browse files Browse the repository at this point in the history
This change is a cleanup and further standardization of the AML
opcode defines in amlcode.h

Improves the readability and maintainability of the source code.
  • Loading branch information
acpibob committed Feb 23, 2017
1 parent 12d7937 commit ec969d3
Show file tree
Hide file tree
Showing 35 changed files with 177 additions and 187 deletions.
2 changes: 1 addition & 1 deletion source/common/adwalk.c
Original file line number Diff line number Diff line change
Expand Up @@ -950,7 +950,7 @@ AcpiDmXrefDescendingOp (
* method.
*/
if (!(Op->Asl.Parent &&
(Op->Asl.Parent->Asl.AmlOpcode == AML_COND_REF_OF_OP)))
(Op->Asl.Parent->Asl.AmlOpcode == AML_CONDITIONAL_REF_OF_OP)))
{
if (Node)
{
Expand Down
36 changes: 18 additions & 18 deletions source/compiler/aslmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
/* BITSPERBYTE_SEVEN */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0),
/* BITSPERBYTE_SIX */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
/* BREAK */ OP_TABLE_ENTRY (AML_BREAK_OP, 0, 0, 0),
/* BREAKPOINT */ OP_TABLE_ENTRY (AML_BREAK_POINT_OP, 0, 0, 0),
/* BREAKPOINT */ OP_TABLE_ENTRY (AML_BREAKPOINT_OP, 0, 0, 0),
/* BUFFER */ OP_TABLE_ENTRY (AML_BUFFER_OP, 0, NODE_AML_PACKAGE, ACPI_BTYPE_BUFFER),
/* BUSMASTERTYPE_MASTER */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
/* BUSMASTERTYPE_NOTMASTER */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
Expand All @@ -248,12 +248,12 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
/* CLOCKPHASE_SECOND */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
/* CLOCKPOLARITY_HIGH */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
/* CLOCKPOLARITY_LOW */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
/* CONCATENATE */ OP_TABLE_ENTRY (AML_CONCAT_OP, 0, 0, ACPI_BTYPE_COMPUTE_DATA),
/* CONCATENATERESTEMPLATE */ OP_TABLE_ENTRY (AML_CONCAT_RES_OP, 0, 0, ACPI_BTYPE_BUFFER),
/* CONDREFOF */ OP_TABLE_ENTRY (AML_COND_REF_OF_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* CONCATENATE */ OP_TABLE_ENTRY (AML_CONCATENATE_OP, 0, 0, ACPI_BTYPE_COMPUTE_DATA),
/* CONCATENATERESTEMPLATE */ OP_TABLE_ENTRY (AML_CONCATENATE_TEMPLATE_OP,0, 0, ACPI_BTYPE_BUFFER),
/* CONDREFOF */ OP_TABLE_ENTRY (AML_CONDITIONAL_REF_OF_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* CONNECTION */ OP_TABLE_ENTRY (AML_INT_CONNECTION_OP, 0, 0, 0),
/* CONTINUE */ OP_TABLE_ENTRY (AML_CONTINUE_OP, 0, 0, 0),
/* COPY */ OP_TABLE_ENTRY (AML_COPY_OP, 0, 0, ACPI_BTYPE_DATA_REFERENCE),
/* COPYOBJECT */ OP_TABLE_ENTRY (AML_COPY_OBJECT_OP, 0, 0, ACPI_BTYPE_DATA_REFERENCE),
/* CREATEBITFIELD */ OP_TABLE_ENTRY (AML_CREATE_BIT_FIELD_OP, 0, 0, 0),
/* CREATEBYTEFIELD */ OP_TABLE_ENTRY (AML_CREATE_BYTE_FIELD_OP, 0, 0, 0),
/* CREATEDWORDFIELD */ OP_TABLE_ENTRY (AML_CREATE_DWORD_FIELD_OP, 0, 0, 0),
Expand Down Expand Up @@ -333,14 +333,14 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
/* IORESTRICT_PRESERVE */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0),
/* IRQ */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
/* IRQNOFLAGS */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
/* LAND */ OP_TABLE_ENTRY (AML_LAND_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* LEQUAL */ OP_TABLE_ENTRY (AML_LEQUAL_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* LGREATER */ OP_TABLE_ENTRY (AML_LGREATER_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* LGREATEREQUAL */ OP_TABLE_ENTRY (AML_LGREATEREQUAL_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* LLESS */ OP_TABLE_ENTRY (AML_LLESS_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* LLESSEQUAL */ OP_TABLE_ENTRY (AML_LLESSEQUAL_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* LNOT */ OP_TABLE_ENTRY (AML_LNOT_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* LNOTEQUAL */ OP_TABLE_ENTRY (AML_LNOTEQUAL_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* LAND */ OP_TABLE_ENTRY (AML_LOGICAL_AND_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* LEQUAL */ OP_TABLE_ENTRY (AML_LOGICAL_EQUAL_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* LGREATER */ OP_TABLE_ENTRY (AML_LOGICAL_GREATER_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* LGREATEREQUAL */ OP_TABLE_ENTRY (AML_LOGICAL_GREATER_EQUAL_OP,0, 0, ACPI_BTYPE_INTEGER),
/* LLESS */ OP_TABLE_ENTRY (AML_LOGICAL_LESS_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* LLESSEQUAL */ OP_TABLE_ENTRY (AML_LOGICAL_LESS_EQUAL_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* LNOT */ OP_TABLE_ENTRY (AML_LOGICAL_NOT_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* LNOTEQUAL */ OP_TABLE_ENTRY (AML_LOGICAL_NOT_EQUAL_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* LOAD */ OP_TABLE_ENTRY (AML_LOAD_OP, 0, 0, 0),
/* LOADTABLE */ OP_TABLE_ENTRY (AML_LOAD_TABLE_OP, 0, 0, ACPI_BTYPE_DDB_HANDLE),
/* LOCAL0 */ OP_TABLE_ENTRY (AML_LOCAL0, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS),
Expand All @@ -353,7 +353,7 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
/* LOCAL7 */ OP_TABLE_ENTRY (AML_LOCAL7, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS),
/* LOCKRULE_LOCK */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_LOCK_ALWAYS, 0, 0),
/* LOCKRULE_NOLOCK */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_LOCK_NEVER, 0, 0),
/* LOR */ OP_TABLE_ENTRY (AML_LOR_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* LOR */ OP_TABLE_ENTRY (AML_LOGICAL_OR_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* MATCH */ OP_TABLE_ENTRY (AML_MATCH_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* MATCHTYPE_MEQ */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, MATCH_MEQ, 0, ACPI_BTYPE_INTEGER),
/* MATCHTYPE_MGE */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, MATCH_MGE, 0, ACPI_BTYPE_INTEGER),
Expand Down Expand Up @@ -419,7 +419,7 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
/* PIN_PULLDEFAULT */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
/* PIN_PULLDOWN */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0),
/* PIN_PULLUP */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0),
/* POWERRESOURCE */ OP_TABLE_ENTRY (AML_POWER_RES_OP, 0, NODE_AML_PACKAGE, 0),
/* POWERRESOURCE */ OP_TABLE_ENTRY (AML_POWER_RESOURCE_OP, 0, NODE_AML_PACKAGE, 0),
/* PROCESSOR */ OP_TABLE_ENTRY (AML_PROCESSOR_OP, 0, NODE_AML_PACKAGE, 0),
/* QWORDCONST */ OP_TABLE_ENTRY (AML_RAW_DATA_QWORD, 0, 0, ACPI_BTYPE_INTEGER),
/* QWORDIO */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
Expand Down Expand Up @@ -484,8 +484,8 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
/* TIMER */ OP_TABLE_ENTRY (AML_TIMER_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* TOBCD */ OP_TABLE_ENTRY (AML_TO_BCD_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* TOBUFFER */ OP_TABLE_ENTRY (AML_TO_BUFFER_OP, 0, 0, ACPI_BTYPE_BUFFER),
/* TODECIMALSTRING */ OP_TABLE_ENTRY (AML_TO_DECSTRING_OP, 0, 0, ACPI_BTYPE_STRING),
/* TOHEXSTRING */ OP_TABLE_ENTRY (AML_TO_HEXSTRING_OP, 0, 0, ACPI_BTYPE_STRING),
/* TODECIMALSTRING */ OP_TABLE_ENTRY (AML_TO_DECIMAL_STRING_OP, 0, 0, ACPI_BTYPE_STRING),
/* TOHEXSTRING */ OP_TABLE_ENTRY (AML_TO_HEX_STRING_OP, 0, 0, ACPI_BTYPE_STRING),
/* TOINTEGER */ OP_TABLE_ENTRY (AML_TO_INTEGER_OP, 0, 0, ACPI_BTYPE_INTEGER),
/* TOSTRING */ OP_TABLE_ENTRY (AML_TO_STRING_OP, 0, 0, ACPI_BTYPE_STRING),
/* TOUUID */ OP_TABLE_ENTRY (AML_DWORD_OP, 0, NODE_AML_PACKAGE, ACPI_BTYPE_INTEGER),
Expand All @@ -500,7 +500,7 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
/* UPDATERULE_ONES */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_UPDATE_WRITE_AS_ONES, 0, 0),
/* UPDATERULE_PRESERVE */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_UPDATE_PRESERVE, 0, 0),
/* UPDATERULE_ZEROS */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_UPDATE_WRITE_AS_ZEROS,0, 0),
/* VAR_PACKAGE */ OP_TABLE_ENTRY (AML_VAR_PACKAGE_OP, 0, NODE_AML_PACKAGE, ACPI_BTYPE_PACKAGE),
/* VARIABLE_PACKAGE */ OP_TABLE_ENTRY (AML_VARIABLE_PACKAGE_OP, 0, NODE_AML_PACKAGE, ACPI_BTYPE_PACKAGE),
/* VENDORLONG */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
/* VENDORSHORT */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
/* WAIT */ OP_TABLE_ENTRY (AML_WAIT_OP, 0, 0, ACPI_BTYPE_INTEGER),
Expand Down
2 changes: 1 addition & 1 deletion source/compiler/asloffset.c
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ LsAmlOffsetWalk (
break;

case AML_PACKAGE_OP:
case AML_VAR_PACKAGE_OP:
case AML_VARIABLE_PACKAGE_OP:

/* Get the package element count */

Expand Down
2 changes: 1 addition & 1 deletion source/compiler/asloperands.c
Original file line number Diff line number Diff line change
Expand Up @@ -1144,7 +1144,7 @@ OpnAttachNameToNode (
case AML_METHOD_OP:
case AML_MUTEX_OP:
case AML_REGION_OP:
case AML_POWER_RES_OP:
case AML_POWER_RESOURCE_OP:
case AML_PROCESSOR_OP:
case AML_THERMAL_ZONE_OP:
case AML_NAME_OP:
Expand Down
2 changes: 1 addition & 1 deletion source/compiler/aslprintf.c
Original file line number Diff line number Diff line change
Expand Up @@ -426,7 +426,7 @@ OpcCreateConcatenateNode (
}

NewConcatOp = TrAllocateNode (PARSEOP_CONCATENATE);
NewConcatOp->Asl.AmlOpcode = AML_CONCAT_OP;
NewConcatOp->Asl.AmlOpcode = AML_CONCATENATE_OP;
NewConcatOp->Asl.AcpiBtype = 0x7;
NewConcatOp->Asl.LogicalLineNumber = Op->Asl.LogicalLineNumber;

Expand Down
2 changes: 1 addition & 1 deletion source/compiler/aslwalks.c
Original file line number Diff line number Diff line change
Expand Up @@ -389,7 +389,7 @@ AnOperandTypecheckWalkEnd (

case AML_BUFFER_OP:
case AML_PACKAGE_OP:
case AML_VAR_PACKAGE_OP:
case AML_VARIABLE_PACKAGE_OP:

/* If length is a constant, we are done */

Expand Down
2 changes: 1 addition & 1 deletion source/components/debugger/dbxface.c
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ AcpiDbStartCommand (
*
* RETURN: Status
*
* DESCRIPTION: Called for AML_BREAK_POINT_OP
* DESCRIPTION: Called for AML_BREAKPOINT_OP
*
******************************************************************************/

Expand Down
42 changes: 21 additions & 21 deletions source/components/disassembler/dmcstyle.c
Original file line number Diff line number Diff line change
Expand Up @@ -243,43 +243,43 @@ AcpiDmCheckForSymbolicOpcode (

/* Logical operators, no target */

case AML_LAND_OP:
case AML_LOGICAL_AND_OP:
OperatorSymbol = " && ";
break;

case AML_LEQUAL_OP:
case AML_LOGICAL_EQUAL_OP:
OperatorSymbol = " == ";
break;

case AML_LGREATER_OP:
case AML_LOGICAL_GREATER_OP:
OperatorSymbol = " > ";
break;

case AML_LLESS_OP:
case AML_LOGICAL_LESS_OP:
OperatorSymbol = " < ";
break;

case AML_LOR_OP:
case AML_LOGICAL_OR_OP:
OperatorSymbol = " || ";
break;

case AML_LNOT_OP:
case AML_LOGICAL_NOT_OP:
/*
* Check for the LNOT sub-opcodes. These correspond to
* LNotEqual, LLessEqual, and LGreaterEqual. There are
* no actual AML opcodes for these operators.
*/
switch (Argument1->Common.AmlOpcode)
{
case AML_LEQUAL_OP:
case AML_LOGICAL_EQUAL_OP:
OperatorSymbol = " != ";
break;

case AML_LGREATER_OP:
case AML_LOGICAL_GREATER_OP:
OperatorSymbol = " <= ";
break;

case AML_LLESS_OP:
case AML_LOGICAL_LESS_OP:
OperatorSymbol = " >= ";
break;

Expand Down Expand Up @@ -315,7 +315,7 @@ AcpiDmCheckForSymbolicOpcode (
if ((Argument1->Common.AmlOpcode == AML_STRING_OP) ||
(Argument1->Common.AmlOpcode == AML_BUFFER_OP) ||
(Argument1->Common.AmlOpcode == AML_PACKAGE_OP) ||
(Argument1->Common.AmlOpcode == AML_VAR_PACKAGE_OP))
(Argument1->Common.AmlOpcode == AML_VARIABLE_PACKAGE_OP))
{
Op->Common.DisasmFlags |= ACPI_PARSEOP_CLOSING_PAREN;
return (FALSE);
Expand Down Expand Up @@ -546,11 +546,11 @@ AcpiDmCheckForSymbolicOpcode (
case AML_BIT_AND_OP:
case AML_BIT_OR_OP:
case AML_BIT_XOR_OP:
case AML_LAND_OP:
case AML_LEQUAL_OP:
case AML_LGREATER_OP:
case AML_LLESS_OP:
case AML_LOR_OP:
case AML_LOGICAL_AND_OP:
case AML_LOGICAL_EQUAL_OP:
case AML_LOGICAL_GREATER_OP:
case AML_LOGICAL_LESS_OP:
case AML_LOGICAL_OR_OP:

Op->Common.DisasmFlags |= ACPI_PARSEOP_ASSIGNMENT;
AcpiOsPrintf ("(");
Expand Down Expand Up @@ -820,11 +820,11 @@ AcpiDmCloseOperator (
case AML_BIT_AND_OP:
case AML_BIT_OR_OP:
case AML_BIT_XOR_OP:
case AML_LAND_OP:
case AML_LEQUAL_OP:
case AML_LGREATER_OP:
case AML_LLESS_OP:
case AML_LOR_OP:
case AML_LOGICAL_AND_OP:
case AML_LOGICAL_EQUAL_OP:
case AML_LOGICAL_GREATER_OP:
case AML_LOGICAL_LESS_OP:
case AML_LOGICAL_OR_OP:

/* Emit paren only if this is not a compound assignment */

Expand Down Expand Up @@ -855,7 +855,7 @@ AcpiDmCloseOperator (

case AML_DECREMENT_OP:
case AML_INCREMENT_OP:
case AML_LNOT_OP:
case AML_LOGICAL_NOT_OP:
case AML_BIT_NOT_OP:
case AML_STORE_OP:
return;
Expand Down
6 changes: 3 additions & 3 deletions source/components/disassembler/dmdeferred.c
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ AcpiDmParseDeferredOps (
case AML_METHOD_OP:
case AML_BUFFER_OP:
case AML_PACKAGE_OP:
case AML_VAR_PACKAGE_OP:
case AML_VARIABLE_PACKAGE_OP:

Status = AcpiDmDeferredParse (
Op, Op->Named.Data, Op->Named.Length);
Expand Down Expand Up @@ -289,7 +289,7 @@ AcpiDmDeferredParse (
{
case AML_BUFFER_OP:
case AML_PACKAGE_OP:
case AML_VAR_PACKAGE_OP:
case AML_VARIABLE_PACKAGE_OP:

switch (Op->Common.AmlOpcode)
{
Expand All @@ -300,7 +300,7 @@ AcpiDmDeferredParse (
ACPI_FREE (ExtraOp);
break;

case AML_VAR_PACKAGE_OP:
case AML_VARIABLE_PACKAGE_OP:
case AML_BUFFER_OP:
default:

Expand Down
2 changes: 1 addition & 1 deletion source/components/disassembler/dmnames.c
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,7 @@ AcpiDmNamestring (
Name++;
break;

case AML_MULTI_NAME_PREFIX_OP:
case AML_MULTI_NAME_PREFIX:

SegCount = (UINT32) ACPI_GET8 (Name + 1);
Name += 2;
Expand Down
24 changes: 12 additions & 12 deletions source/components/disassembler/dmopcode.c
Original file line number Diff line number Diff line change
Expand Up @@ -788,15 +788,15 @@ AcpiDmDisassembleOneOp (
{
switch (Op->Common.AmlOpcode)
{
case AML_LEQUAL_OP:
case AML_LOGICAL_EQUAL_OP:
AcpiOsPrintf ("LNotEqual");
break;

case AML_LGREATER_OP:
case AML_LOGICAL_GREATER_OP:
AcpiOsPrintf ("LLessEqual");
break;

case AML_LLESS_OP:
case AML_LOGICAL_LESS_OP:
AcpiOsPrintf ("LGreaterEqual");
break;

Expand All @@ -819,12 +819,12 @@ AcpiDmDisassembleOneOp (

switch (Op->Common.AmlOpcode)
{
case AML_LNOT_OP:
case AML_LOGICAL_NOT_OP:

Child = Op->Common.Value.Arg;
if ((Child->Common.AmlOpcode == AML_LEQUAL_OP) ||
(Child->Common.AmlOpcode == AML_LGREATER_OP) ||
(Child->Common.AmlOpcode == AML_LLESS_OP))
if ((Child->Common.AmlOpcode == AML_LOGICAL_EQUAL_OP) ||
(Child->Common.AmlOpcode == AML_LOGICAL_GREATER_OP) ||
(Child->Common.AmlOpcode == AML_LOGICAL_LESS_OP))
{
Child->Common.DisasmOpcode = ACPI_DASM_LNOT_SUFFIX;
Op->Common.DisasmOpcode = ACPI_DASM_LNOT_PREFIX;
Expand Down Expand Up @@ -1483,7 +1483,7 @@ AcpiDmIsSwitchBlock (
TempOp = AcpiPsGetArg (CurrentOp, 0);
switch (TempOp->Common.AmlOpcode)
{
case (AML_LEQUAL_OP):
case (AML_LOGICAL_EQUAL_OP):

/* Ignore just the LEqual Op */

Expand All @@ -1505,7 +1505,7 @@ AcpiDmIsSwitchBlock (

break;

case (AML_LNOT_OP):
case (AML_LOGICAL_NOT_OP):

/*
* The Package will be the predicate of the Case statement.
Expand Down Expand Up @@ -1660,7 +1660,7 @@ AcpiDmIsCaseBlock (

switch (CurrentOp->Common.AmlOpcode)
{
case (AML_LEQUAL_OP):
case (AML_LOGICAL_EQUAL_OP):

/* Next child must be NamePath with string _T_ */

Expand All @@ -1673,12 +1673,12 @@ AcpiDmIsCaseBlock (

break;

case (AML_LNOT_OP):
case (AML_LOGICAL_NOT_OP):

/* Child of LNot must be LEqual op */

CurrentOp = AcpiPsGetArg (CurrentOp, 0);
if (!CurrentOp || (CurrentOp->Common.AmlOpcode != AML_LEQUAL_OP))
if (!CurrentOp || (CurrentOp->Common.AmlOpcode != AML_LOGICAL_EQUAL_OP))
{
return (FALSE);
}
Expand Down
Loading

0 comments on commit ec969d3

Please sign in to comment.