Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
dadigang
Ventoy
Commits
d1481392
Commit
d1481392
authored
Sep 13, 2021
by
longpanda
Browse files
Add QT GUI install program
parent
dd2411d7
Changes
61
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
3789 additions
and
17 deletions
+3789
-17
LinuxGUI/Ventoy2Disk/QT/build/moc_ventoy2diskwindow.cpp
LinuxGUI/Ventoy2Disk/QT/build/moc_ventoy2diskwindow.cpp
+294
-0
LinuxGUI/Ventoy2Disk/QT/build/ui_partcfgdialog.h
LinuxGUI/Ventoy2Disk/QT/build/ui_partcfgdialog.h
+113
-0
LinuxGUI/Ventoy2Disk/QT/build/ui_ventoy2diskwindow.h
LinuxGUI/Ventoy2Disk/QT/build/ui_ventoy2diskwindow.h
+202
-0
LinuxGUI/Ventoy2Disk/QT/main.cpp
LinuxGUI/Ventoy2Disk/QT/main.cpp
+95
-0
LinuxGUI/Ventoy2Disk/QT/partcfgdialog.cpp
LinuxGUI/Ventoy2Disk/QT/partcfgdialog.cpp
+101
-0
LinuxGUI/Ventoy2Disk/QT/partcfgdialog.h
LinuxGUI/Ventoy2Disk/QT/partcfgdialog.h
+44
-0
LinuxGUI/Ventoy2Disk/QT/partcfgdialog.ui
LinuxGUI/Ventoy2Disk/QT/partcfgdialog.ui
+165
-0
LinuxGUI/Ventoy2Disk/QT/refresh_icon_data.c
LinuxGUI/Ventoy2Disk/QT/refresh_icon_data.c
+300
-0
LinuxGUI/Ventoy2Disk/QT/secure_icon_data.c
LinuxGUI/Ventoy2Disk/QT/secure_icon_data.c
+91
-0
LinuxGUI/Ventoy2Disk/QT/ventoy2diskwindow.cpp
LinuxGUI/Ventoy2Disk/QT/ventoy2diskwindow.cpp
+881
-0
LinuxGUI/Ventoy2Disk/QT/ventoy2diskwindow.h
LinuxGUI/Ventoy2Disk/QT/ventoy2diskwindow.h
+105
-0
LinuxGUI/Ventoy2Disk/QT/ventoy2diskwindow.ui
LinuxGUI/Ventoy2Disk/QT/ventoy2diskwindow.ui
+323
-0
LinuxGUI/Ventoy2Disk/QT/ventoy_qt.h
LinuxGUI/Ventoy2Disk/QT/ventoy_qt.h
+47
-0
LinuxGUI/Ventoy2Disk/QT/ventoy_qt_stub.c
LinuxGUI/Ventoy2Disk/QT/ventoy_qt_stub.c
+600
-0
LinuxGUI/Ventoy2Disk/Web/ventoy_http.c
LinuxGUI/Ventoy2Disk/Web/ventoy_http.c
+5
-3
LinuxGUI/Ventoy2Disk/main_gtk.c
LinuxGUI/Ventoy2Disk/main_gtk.c
+21
-0
LinuxGUI/Ventoy2Disk/main_webui.c
LinuxGUI/Ventoy2Disk/main_webui.c
+20
-0
LinuxGUI/Ventoy2Disk/ventoy_gui.c
LinuxGUI/Ventoy2Disk/ventoy_gui.c
+208
-12
LinuxGUI/build_gtk.sh
LinuxGUI/build_gtk.sh
+6
-2
LinuxGUI/build_qt.sh
LinuxGUI/build_qt.sh
+168
-0
No files found.
LinuxGUI/Ventoy2Disk/QT/build/moc_ventoy2diskwindow.cpp
0 → 100644
View file @
d1481392
/****************************************************************************
** Meta object code from reading C++ file 'ventoy2diskwindow.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.9.0)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include "../ventoy2diskwindow.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'ventoy2diskwindow.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.9.0. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct
qt_meta_stringdata_MyQThread_t
{
QByteArrayData
data
[
5
];
char
stringdata0
[
33
];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_MyQThread_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static
const
qt_meta_stringdata_MyQThread_t
qt_meta_stringdata_MyQThread
=
{
{
QT_MOC_LITERAL
(
0
,
0
,
9
),
// "MyQThread"
QT_MOC_LITERAL
(
1
,
10
,
12
),
// "thread_event"
QT_MOC_LITERAL
(
2
,
23
,
0
),
// ""
QT_MOC_LITERAL
(
3
,
24
,
3
),
// "msg"
QT_MOC_LITERAL
(
4
,
28
,
4
)
// "data"
},
"MyQThread
\0
thread_event
\0\0
msg
\0
data"
};
#undef QT_MOC_LITERAL
static
const
uint
qt_meta_data_MyQThread
[]
=
{
// content:
7
,
// revision
0
,
// classname
0
,
0
,
// classinfo
1
,
14
,
// methods
0
,
0
,
// properties
0
,
0
,
// enums/sets
0
,
0
,
// constructors
0
,
// flags
1
,
// signalCount
// signals: name, argc, parameters, tag, flags
1
,
2
,
19
,
2
,
0x06
/* Public */
,
// signals: parameters
QMetaType
::
Void
,
QMetaType
::
Int
,
QMetaType
::
Int
,
3
,
4
,
0
// eod
};
void
MyQThread
::
qt_static_metacall
(
QObject
*
_o
,
QMetaObject
::
Call
_c
,
int
_id
,
void
**
_a
)
{
if
(
_c
==
QMetaObject
::
InvokeMetaMethod
)
{
MyQThread
*
_t
=
static_cast
<
MyQThread
*>
(
_o
);
Q_UNUSED
(
_t
)
switch
(
_id
)
{
case
0
:
_t
->
thread_event
((
*
reinterpret_cast
<
int
(
*
)
>
(
_a
[
1
])),(
*
reinterpret_cast
<
int
(
*
)
>
(
_a
[
2
])));
break
;
default:
;
}
}
else
if
(
_c
==
QMetaObject
::
IndexOfMethod
)
{
int
*
result
=
reinterpret_cast
<
int
*>
(
_a
[
0
]);
void
**
func
=
reinterpret_cast
<
void
**>
(
_a
[
1
]);
{
typedef
void
(
MyQThread
::*
_t
)(
int
,
int
);
if
(
*
reinterpret_cast
<
_t
*>
(
func
)
==
static_cast
<
_t
>
(
&
MyQThread
::
thread_event
))
{
*
result
=
0
;
return
;
}
}
}
}
const
QMetaObject
MyQThread
::
staticMetaObject
=
{
{
&
QThread
::
staticMetaObject
,
qt_meta_stringdata_MyQThread
.
data
,
qt_meta_data_MyQThread
,
qt_static_metacall
,
nullptr
,
nullptr
}
};
const
QMetaObject
*
MyQThread
::
metaObject
()
const
{
return
QObject
::
d_ptr
->
metaObject
?
QObject
::
d_ptr
->
dynamicMetaObject
()
:
&
staticMetaObject
;
}
void
*
MyQThread
::
qt_metacast
(
const
char
*
_clname
)
{
if
(
!
_clname
)
return
nullptr
;
if
(
!
strcmp
(
_clname
,
qt_meta_stringdata_MyQThread
.
stringdata0
))
return
static_cast
<
void
*>
(
const_cast
<
MyQThread
*>
(
this
));
return
QThread
::
qt_metacast
(
_clname
);
}
int
MyQThread
::
qt_metacall
(
QMetaObject
::
Call
_c
,
int
_id
,
void
**
_a
)
{
_id
=
QThread
::
qt_metacall
(
_c
,
_id
,
_a
);
if
(
_id
<
0
)
return
_id
;
if
(
_c
==
QMetaObject
::
InvokeMetaMethod
)
{
if
(
_id
<
1
)
qt_static_metacall
(
this
,
_c
,
_id
,
_a
);
_id
-=
1
;
}
else
if
(
_c
==
QMetaObject
::
RegisterMethodArgumentMetaType
)
{
if
(
_id
<
1
)
*
reinterpret_cast
<
int
*>
(
_a
[
0
])
=
-
1
;
_id
-=
1
;
}
return
_id
;
}
// SIGNAL 0
void
MyQThread
::
thread_event
(
int
_t1
,
int
_t2
)
{
void
*
_a
[]
=
{
nullptr
,
const_cast
<
void
*>
(
reinterpret_cast
<
const
void
*>
(
&
_t1
)),
const_cast
<
void
*>
(
reinterpret_cast
<
const
void
*>
(
&
_t2
))
};
QMetaObject
::
activate
(
this
,
&
staticMetaObject
,
0
,
_a
);
}
struct
qt_meta_stringdata_Ventoy2DiskWindow_t
{
QByteArrayData
data
[
19
];
char
stringdata0
[
367
];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_Ventoy2DiskWindow_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static
const
qt_meta_stringdata_Ventoy2DiskWindow_t
qt_meta_stringdata_Ventoy2DiskWindow
=
{
{
QT_MOC_LITERAL
(
0
,
0
,
17
),
// "Ventoy2DiskWindow"
QT_MOC_LITERAL
(
1
,
18
,
12
),
// "thread_event"
QT_MOC_LITERAL
(
2
,
31
,
0
),
// ""
QT_MOC_LITERAL
(
3
,
32
,
3
),
// "msg"
QT_MOC_LITERAL
(
4
,
36
,
4
),
// "data"
QT_MOC_LITERAL
(
5
,
41
,
23
),
// "part_style_check_action"
QT_MOC_LITERAL
(
6
,
65
,
8
),
// "QAction*"
QT_MOC_LITERAL
(
7
,
74
,
3
),
// "act"
QT_MOC_LITERAL
(
8
,
78
,
17
),
// "lang_check_action"
QT_MOC_LITERAL
(
9
,
96
,
24
),
// "on_ButtonInstall_clicked"
QT_MOC_LITERAL
(
10
,
121
,
23
),
// "on_ButtonUpdate_clicked"
QT_MOC_LITERAL
(
11
,
145
,
24
),
// "on_ButtonRefresh_clicked"
QT_MOC_LITERAL
(
12
,
170
,
37
),
// "on_comboBoxDevice_currentInde..."
QT_MOC_LITERAL
(
13
,
208
,
5
),
// "index"
QT_MOC_LITERAL
(
14
,
214
,
42
),
// "on_actionPartition_Configurat..."
QT_MOC_LITERAL
(
15
,
257
,
31
),
// "on_actionClear_Ventoy_triggered"
QT_MOC_LITERAL
(
16
,
289
,
33
),
// "on_actionShow_All_Devices_tog..."
QT_MOC_LITERAL
(
17
,
323
,
4
),
// "arg1"
QT_MOC_LITERAL
(
18
,
328
,
38
)
// "on_actionSecure_Boot_Support_..."
},
"Ventoy2DiskWindow
\0
thread_event
\0\0
msg
\0
"
"data
\0
part_style_check_action
\0
QAction*
\0
"
"act
\0
lang_check_action
\0
on_ButtonInstall_clicked
\0
"
"on_ButtonUpdate_clicked
\0
"
"on_ButtonRefresh_clicked
\0
"
"on_comboBoxDevice_currentIndexChanged
\0
"
"index
\0
on_actionPartition_Configuration_triggered
\0
"
"on_actionClear_Ventoy_triggered
\0
"
"on_actionShow_All_Devices_toggled
\0
"
"arg1
\0
on_actionSecure_Boot_Support_triggered"
};
#undef QT_MOC_LITERAL
static
const
uint
qt_meta_data_Ventoy2DiskWindow
[]
=
{
// content:
7
,
// revision
0
,
// classname
0
,
0
,
// classinfo
11
,
14
,
// methods
0
,
0
,
// properties
0
,
0
,
// enums/sets
0
,
0
,
// constructors
0
,
// flags
0
,
// signalCount
// slots: name, argc, parameters, tag, flags
1
,
2
,
69
,
2
,
0x08
/* Private */
,
5
,
1
,
74
,
2
,
0x08
/* Private */
,
8
,
1
,
77
,
2
,
0x08
/* Private */
,
9
,
0
,
80
,
2
,
0x08
/* Private */
,
10
,
0
,
81
,
2
,
0x08
/* Private */
,
11
,
0
,
82
,
2
,
0x08
/* Private */
,
12
,
1
,
83
,
2
,
0x08
/* Private */
,
14
,
0
,
86
,
2
,
0x08
/* Private */
,
15
,
0
,
87
,
2
,
0x08
/* Private */
,
16
,
1
,
88
,
2
,
0x08
/* Private */
,
18
,
0
,
91
,
2
,
0x08
/* Private */
,
// slots: parameters
QMetaType
::
Void
,
QMetaType
::
Int
,
QMetaType
::
Int
,
3
,
4
,
QMetaType
::
Void
,
0x80000000
|
6
,
7
,
QMetaType
::
Void
,
0x80000000
|
6
,
7
,
QMetaType
::
Void
,
QMetaType
::
Void
,
QMetaType
::
Void
,
QMetaType
::
Void
,
QMetaType
::
Int
,
13
,
QMetaType
::
Void
,
QMetaType
::
Void
,
QMetaType
::
Void
,
QMetaType
::
Bool
,
17
,
QMetaType
::
Void
,
0
// eod
};
void
Ventoy2DiskWindow
::
qt_static_metacall
(
QObject
*
_o
,
QMetaObject
::
Call
_c
,
int
_id
,
void
**
_a
)
{
if
(
_c
==
QMetaObject
::
InvokeMetaMethod
)
{
Ventoy2DiskWindow
*
_t
=
static_cast
<
Ventoy2DiskWindow
*>
(
_o
);
Q_UNUSED
(
_t
)
switch
(
_id
)
{
case
0
:
_t
->
thread_event
((
*
reinterpret_cast
<
int
(
*
)
>
(
_a
[
1
])),(
*
reinterpret_cast
<
int
(
*
)
>
(
_a
[
2
])));
break
;
case
1
:
_t
->
part_style_check_action
((
*
reinterpret_cast
<
QAction
*
(
*
)
>
(
_a
[
1
])));
break
;
case
2
:
_t
->
lang_check_action
((
*
reinterpret_cast
<
QAction
*
(
*
)
>
(
_a
[
1
])));
break
;
case
3
:
_t
->
on_ButtonInstall_clicked
();
break
;
case
4
:
_t
->
on_ButtonUpdate_clicked
();
break
;
case
5
:
_t
->
on_ButtonRefresh_clicked
();
break
;
case
6
:
_t
->
on_comboBoxDevice_currentIndexChanged
((
*
reinterpret_cast
<
int
(
*
)
>
(
_a
[
1
])));
break
;
case
7
:
_t
->
on_actionPartition_Configuration_triggered
();
break
;
case
8
:
_t
->
on_actionClear_Ventoy_triggered
();
break
;
case
9
:
_t
->
on_actionShow_All_Devices_toggled
((
*
reinterpret_cast
<
bool
(
*
)
>
(
_a
[
1
])));
break
;
case
10
:
_t
->
on_actionSecure_Boot_Support_triggered
();
break
;
default:
;
}
}
else
if
(
_c
==
QMetaObject
::
RegisterMethodArgumentMetaType
)
{
switch
(
_id
)
{
default:
*
reinterpret_cast
<
int
*>
(
_a
[
0
])
=
-
1
;
break
;
case
1
:
switch
(
*
reinterpret_cast
<
int
*>
(
_a
[
1
]))
{
default:
*
reinterpret_cast
<
int
*>
(
_a
[
0
])
=
-
1
;
break
;
case
0
:
*
reinterpret_cast
<
int
*>
(
_a
[
0
])
=
qRegisterMetaType
<
QAction
*
>
();
break
;
}
break
;
case
2
:
switch
(
*
reinterpret_cast
<
int
*>
(
_a
[
1
]))
{
default:
*
reinterpret_cast
<
int
*>
(
_a
[
0
])
=
-
1
;
break
;
case
0
:
*
reinterpret_cast
<
int
*>
(
_a
[
0
])
=
qRegisterMetaType
<
QAction
*
>
();
break
;
}
break
;
}
}
}
const
QMetaObject
Ventoy2DiskWindow
::
staticMetaObject
=
{
{
&
QMainWindow
::
staticMetaObject
,
qt_meta_stringdata_Ventoy2DiskWindow
.
data
,
qt_meta_data_Ventoy2DiskWindow
,
qt_static_metacall
,
nullptr
,
nullptr
}
};
const
QMetaObject
*
Ventoy2DiskWindow
::
metaObject
()
const
{
return
QObject
::
d_ptr
->
metaObject
?
QObject
::
d_ptr
->
dynamicMetaObject
()
:
&
staticMetaObject
;
}
void
*
Ventoy2DiskWindow
::
qt_metacast
(
const
char
*
_clname
)
{
if
(
!
_clname
)
return
nullptr
;
if
(
!
strcmp
(
_clname
,
qt_meta_stringdata_Ventoy2DiskWindow
.
stringdata0
))
return
static_cast
<
void
*>
(
const_cast
<
Ventoy2DiskWindow
*>
(
this
));
return
QMainWindow
::
qt_metacast
(
_clname
);
}
int
Ventoy2DiskWindow
::
qt_metacall
(
QMetaObject
::
Call
_c
,
int
_id
,
void
**
_a
)
{
_id
=
QMainWindow
::
qt_metacall
(
_c
,
_id
,
_a
);
if
(
_id
<
0
)
return
_id
;
if
(
_c
==
QMetaObject
::
InvokeMetaMethod
)
{
if
(
_id
<
11
)
qt_static_metacall
(
this
,
_c
,
_id
,
_a
);
_id
-=
11
;
}
else
if
(
_c
==
QMetaObject
::
RegisterMethodArgumentMetaType
)
{
if
(
_id
<
11
)
qt_static_metacall
(
this
,
_c
,
_id
,
_a
);
_id
-=
11
;
}
return
_id
;
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE
LinuxGUI/Ventoy2Disk/QT/build/ui_partcfgdialog.h
0 → 100644
View file @
d1481392
/********************************************************************************
** Form generated from reading UI file 'partcfgdialog.ui'
**
** Created by: Qt User Interface Compiler version 5.9.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_PARTCFGDIALOG_H
#define UI_PARTCFGDIALOG_H
#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QCheckBox>
#include <QtWidgets/QComboBox>
#include <QtWidgets/QDialog>
#include <QtWidgets/QGroupBox>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QPushButton>
QT_BEGIN_NAMESPACE
class
Ui_PartCfgDialog
{
public:
QPushButton
*
pushButtonOK
;
QPushButton
*
pushButtonCancel
;
QGroupBox
*
groupBox
;
QCheckBox
*
checkBox
;
QGroupBox
*
groupBox_2
;
QLineEdit
*
lineEdit
;
QGroupBox
*
groupBox_3
;
QComboBox
*
comboBox
;
QGroupBox
*
groupBox_4
;
QCheckBox
*
checkBox_2
;
void
setupUi
(
QDialog
*
PartCfgDialog
)
{
if
(
PartCfgDialog
->
objectName
().
isEmpty
())
PartCfgDialog
->
setObjectName
(
QStringLiteral
(
"PartCfgDialog"
));
PartCfgDialog
->
resize
(
420
,
258
);
pushButtonOK
=
new
QPushButton
(
PartCfgDialog
);
pushButtonOK
->
setObjectName
(
QStringLiteral
(
"pushButtonOK"
));
pushButtonOK
->
setGeometry
(
QRect
(
90
,
210
,
90
,
30
));
pushButtonCancel
=
new
QPushButton
(
PartCfgDialog
);
pushButtonCancel
->
setObjectName
(
QStringLiteral
(
"pushButtonCancel"
));
pushButtonCancel
->
setGeometry
(
QRect
(
230
,
210
,
90
,
30
));
groupBox
=
new
QGroupBox
(
PartCfgDialog
);
groupBox
->
setObjectName
(
QStringLiteral
(
"groupBox"
));
groupBox
->
setGeometry
(
QRect
(
10
,
0
,
400
,
61
));
checkBox
=
new
QCheckBox
(
groupBox
);
checkBox
->
setObjectName
(
QStringLiteral
(
"checkBox"
));
checkBox
->
setGeometry
(
QRect
(
10
,
20
,
381
,
41
));
checkBox
->
setAutoRepeatInterval
(
0
);
groupBox_2
=
new
QGroupBox
(
PartCfgDialog
);
groupBox_2
->
setObjectName
(
QStringLiteral
(
"groupBox_2"
));
groupBox_2
->
setGeometry
(
QRect
(
10
,
60
,
200
,
61
));
lineEdit
=
new
QLineEdit
(
groupBox_2
);
lineEdit
->
setObjectName
(
QStringLiteral
(
"lineEdit"
));
lineEdit
->
setGeometry
(
QRect
(
10
,
30
,
181
,
26
));
lineEdit
->
setMaxLength
(
14
);
groupBox_3
=
new
QGroupBox
(
PartCfgDialog
);
groupBox_3
->
setObjectName
(
QStringLiteral
(
"groupBox_3"
));
groupBox_3
->
setGeometry
(
QRect
(
210
,
60
,
200
,
60
));
comboBox
=
new
QComboBox
(
groupBox_3
);
comboBox
->
setObjectName
(
QStringLiteral
(
"comboBox"
));
comboBox
->
setGeometry
(
QRect
(
10
,
30
,
181
,
26
));
groupBox_4
=
new
QGroupBox
(
PartCfgDialog
);
groupBox_4
->
setObjectName
(
QStringLiteral
(
"groupBox_4"
));
groupBox_4
->
setGeometry
(
QRect
(
10
,
120
,
401
,
61
));
checkBox_2
=
new
QCheckBox
(
groupBox_4
);
checkBox_2
->
setObjectName
(
QStringLiteral
(
"checkBox_2"
));
checkBox_2
->
setGeometry
(
QRect
(
10
,
30
,
381
,
24
));
checkBox_2
->
setChecked
(
true
);
retranslateUi
(
PartCfgDialog
);
comboBox
->
setCurrentIndex
(
1
);
QMetaObject
::
connectSlotsByName
(
PartCfgDialog
);
}
// setupUi
void
retranslateUi
(
QDialog
*
PartCfgDialog
)
{
PartCfgDialog
->
setWindowTitle
(
QApplication
::
translate
(
"PartCfgDialog"
,
"Partition Configuration"
,
Q_NULLPTR
));
pushButtonOK
->
setText
(
QApplication
::
translate
(
"PartCfgDialog"
,
"OK"
,
Q_NULLPTR
));
pushButtonCancel
->
setText
(
QApplication
::
translate
(
"PartCfgDialog"
,
"Cancel"
,
Q_NULLPTR
));
groupBox
->
setTitle
(
QString
());
checkBox
->
setText
(
QApplication
::
translate
(
"PartCfgDialog"
,
"Preserve some space at the end of the disk"
,
Q_NULLPTR
));
groupBox_2
->
setTitle
(
QString
());
groupBox_3
->
setTitle
(
QString
());
comboBox
->
clear
();
comboBox
->
insertItems
(
0
,
QStringList
()
<<
QApplication
::
translate
(
"PartCfgDialog"
,
"MB"
,
Q_NULLPTR
)
<<
QApplication
::
translate
(
"PartCfgDialog"
,
"GB"
,
Q_NULLPTR
)
);
groupBox_4
->
setTitle
(
QString
());
checkBox_2
->
setText
(
QApplication
::
translate
(
"PartCfgDialog"
,
"Align partitions with 4KB"
,
Q_NULLPTR
));
}
// retranslateUi
};
namespace
Ui
{
class
PartCfgDialog
:
public
Ui_PartCfgDialog
{};
}
// namespace Ui
QT_END_NAMESPACE
#endif // UI_PARTCFGDIALOG_H
LinuxGUI/Ventoy2Disk/QT/build/ui_ventoy2diskwindow.h
0 → 100644
View file @
d1481392
/********************************************************************************
** Form generated from reading UI file 'ventoy2diskwindow.ui'
**
** Created by: Qt User Interface Compiler version 5.9.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_VENTOY2DISKWINDOW_H
#define UI_VENTOY2DISKWINDOW_H
#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QComboBox>
#include <QtWidgets/QGroupBox>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QLabel>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenu>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QProgressBar>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class
Ui_Ventoy2DiskWindow
{
public:
QAction
*
actionSecure_Boot_Support
;
QAction
*
actionMBR
;
QAction
*
actionGPT
;
QAction
*
actionPartition_Configuration
;
QAction
*
actionClear_Ventoy
;
QAction
*
actionShow_All_Devices
;
QWidget
*
centralwidget
;
QGroupBox
*
groupBoxDevice
;
QComboBox
*
comboBoxDevice
;
QPushButton
*
ButtonRefresh
;
QGroupBox
*
groupBoxVentoyLocal
;
QLabel
*
labelVentoyLocalVer
;
QLabel
*
labelVentoyLocalPartStyle
;
QLabel
*
labelVentoyLocalSecure
;
QGroupBox
*
groupBoxVentoyDevice
;
QLabel
*
labelVentoyDeviceVer
;
QLabel
*
labelVentoyDevicePartStyle
;
QLabel
*
labelVentoyDeviceSecure
;
QGroupBox
*
groupBoxStatus
;
QProgressBar
*
progressBar
;
QPushButton
*
ButtonInstall
;
QPushButton
*
ButtonUpdate
;
QMenuBar
*
menubar
;
QMenu
*
menuOption
;
QMenu
*
menuPartition_Style
;
QMenu
*
menuLanguage
;
void
setupUi
(
QMainWindow
*
Ventoy2DiskWindow
)
{
if
(
Ventoy2DiskWindow
->
objectName
().
isEmpty
())
Ventoy2DiskWindow
->
setObjectName
(
QStringLiteral
(
"Ventoy2DiskWindow"
));
Ventoy2DiskWindow
->
resize
(
441
,
367
);
actionSecure_Boot_Support
=
new
QAction
(
Ventoy2DiskWindow
);
actionSecure_Boot_Support
->
setObjectName
(
QStringLiteral
(
"actionSecure_Boot_Support"
));
actionSecure_Boot_Support
->
setCheckable
(
true
);
actionMBR
=
new
QAction
(
Ventoy2DiskWindow
);
actionMBR
->
setObjectName
(
QStringLiteral
(
"actionMBR"
));
actionMBR
->
setCheckable
(
true
);
actionGPT
=
new
QAction
(
Ventoy2DiskWindow
);
actionGPT
->
setObjectName
(
QStringLiteral
(
"actionGPT"
));
actionGPT
->
setCheckable
(
true
);
actionPartition_Configuration
=
new
QAction
(
Ventoy2DiskWindow
);
actionPartition_Configuration
->
setObjectName
(
QStringLiteral
(
"actionPartition_Configuration"
));
actionClear_Ventoy
=
new
QAction
(
Ventoy2DiskWindow
);
actionClear_Ventoy
->
setObjectName
(
QStringLiteral
(
"actionClear_Ventoy"
));
actionShow_All_Devices
=
new
QAction
(
Ventoy2DiskWindow
);
actionShow_All_Devices
->
setObjectName
(
QStringLiteral
(
"actionShow_All_Devices"
));
actionShow_All_Devices
->
setCheckable
(
true
);
centralwidget
=
new
QWidget
(
Ventoy2DiskWindow
);
centralwidget
->
setObjectName
(
QStringLiteral
(
"centralwidget"
));
groupBoxDevice
=
new
QGroupBox
(
centralwidget
);
groupBoxDevice
->
setObjectName
(
QStringLiteral
(
"groupBoxDevice"
));
groupBoxDevice
->
setGeometry
(
QRect
(
10
,
10
,
421
,
80
));
comboBoxDevice
=
new
QComboBox
(
groupBoxDevice
);
comboBoxDevice
->
setObjectName
(
QStringLiteral
(
"comboBoxDevice"
));
comboBoxDevice
->
setGeometry
(
QRect
(
10
,
40
,
361
,
26
));
ButtonRefresh
=
new
QPushButton
(
groupBoxDevice
);
ButtonRefresh
->
setObjectName
(
QStringLiteral
(
"ButtonRefresh"
));
ButtonRefresh
->
setGeometry
(
QRect
(
380
,
37
,
30
,
30
));
QIcon
icon
;
icon
.
addFile
(
QStringLiteral
(
"../refresh.ico"
),
QSize
(),
QIcon
::
Normal
,
QIcon
::
Off
);
ButtonRefresh
->
setIcon
(
icon
);
ButtonRefresh
->
setIconSize
(
QSize
(
24
,
24
));
groupBoxVentoyLocal
=
new
QGroupBox
(
centralwidget
);
groupBoxVentoyLocal
->
setObjectName
(
QStringLiteral
(
"groupBoxVentoyLocal"
));
groupBoxVentoyLocal
->
setGeometry
(
QRect
(
10
,
100
,
205
,
80
));
groupBoxVentoyLocal
->
setAlignment
(
Qt
::
AlignCenter
);
labelVentoyLocalVer
=
new
QLabel
(
groupBoxVentoyLocal
);
labelVentoyLocalVer
->
setObjectName
(
QStringLiteral
(
"labelVentoyLocalVer"
));
labelVentoyLocalVer
->
setGeometry
(
QRect
(
30
,
30
,
135
,
41
));
labelVentoyLocalVer
->
setAlignment
(
Qt
::
AlignCenter
);
labelVentoyLocalPartStyle
=
new
QLabel
(
groupBoxVentoyLocal
);
labelVentoyLocalPartStyle
->
setObjectName
(
QStringLiteral
(
"labelVentoyLocalPartStyle"
));
labelVentoyLocalPartStyle
->
setGeometry
(
QRect
(
172
,
60
,
31
,
18
));
labelVentoyLocalSecure
=
new
QLabel
(
groupBoxVentoyLocal
);
labelVentoyLocalSecure
->
setObjectName
(
QStringLiteral
(
"labelVentoyLocalSecure"
));
labelVentoyLocalSecure
->
setGeometry
(
QRect
(
12
,
36
,
21
,
31
));
labelVentoyLocalSecure
->
setPixmap
(
QPixmap
(
QString
::
fromUtf8
(
"../secure.ico"
)));
groupBoxVentoyDevice
=
new
QGroupBox
(
centralwidget
);
groupBoxVentoyDevice
->
setObjectName
(
QStringLiteral
(
"groupBoxVentoyDevice"
));
groupBoxVentoyDevice
->
setGeometry
(
QRect
(
225
,
100
,
205
,
80
));
groupBoxVentoyDevice
->
setAlignment
(
Qt
::
AlignCenter
);
labelVentoyDeviceVer
=
new
QLabel
(
groupBoxVentoyDevice
);
labelVentoyDeviceVer
->
setObjectName
(
QStringLiteral
(
"labelVentoyDeviceVer"
));
labelVentoyDeviceVer
->
setGeometry
(
QRect
(
30
,
30
,
135
,
41
));
labelVentoyDeviceVer
->
setAlignment
(
Qt
::
AlignCenter
);
labelVentoyDevicePartStyle
=
new
QLabel
(
groupBoxVentoyDevice
);
labelVentoyDevicePartStyle
->
setObjectName
(
QStringLiteral
(
"labelVentoyDevicePartStyle"
));
labelVentoyDevicePartStyle
->
setGeometry
(
QRect
(
172
,
60
,
31
,
18
));
labelVentoyDeviceSecure
=
new
QLabel
(
groupBoxVentoyDevice
);
labelVentoyDeviceSecure
->
setObjectName
(
QStringLiteral
(
"labelVentoyDeviceSecure"
));
labelVentoyDeviceSecure
->
setGeometry
(
QRect
(
12
,
36
,
21
,
31
));
labelVentoyDeviceSecure
->
setPixmap
(
QPixmap
(
QString
::
fromUtf8
(
"../secure.ico"
)));
groupBoxStatus
=
new
QGroupBox
(
centralwidget
);
groupBoxStatus
->
setObjectName
(
QStringLiteral
(
"groupBoxStatus"
));
groupBoxStatus
->
setGeometry
(
QRect
(
10
,
190
,
421
,
61
));
progressBar
=
new
QProgressBar
(
groupBoxStatus
);
progressBar
->
setObjectName
(
QStringLiteral
(
"progressBar"
));
progressBar
->
setGeometry
(
QRect
(
10
,
30
,
401
,
23
));
progressBar
->
setValue
(
0
);
progressBar
->
setTextVisible
(
false
);
ButtonInstall
=
new
QPushButton
(
centralwidget
);
ButtonInstall
->
setObjectName
(
QStringLiteral
(
"ButtonInstall"
));
ButtonInstall
->
setGeometry
(
QRect
(
90
,
275
,
101
,
41
));
ButtonUpdate
=
new
QPushButton
(
centralwidget
);
ButtonUpdate
->
setObjectName
(
QStringLiteral
(
"ButtonUpdate"
));
ButtonUpdate
->
setGeometry
(
QRect
(
250
,
275
,
101
,
41
));
Ventoy2DiskWindow
->
setCentralWidget
(
centralwidget
);
menubar
=
new
QMenuBar
(
Ventoy2DiskWindow
);
menubar
->
setObjectName
(
QStringLiteral
(
"menubar"
));
menubar
->
setGeometry
(
QRect
(
0
,
0
,
441
,
23
));
menuOption
=
new
QMenu
(
menubar
);
menuOption
->
setObjectName
(
QStringLiteral
(
"menuOption"
));
menuPartition_Style
=
new
QMenu
(
menuOption
);
menuPartition_Style
->
setObjectName
(
QStringLiteral
(
"menuPartition_Style"
));
menuLanguage
=
new
QMenu
(
menubar
);
menuLanguage
->
setObjectName
(
QStringLiteral
(
"menuLanguage"
));
Ventoy2DiskWindow
->
setMenuBar
(
menubar
);
menubar
->
addAction
(
menuOption
->
menuAction
());
menubar
->
addAction
(
menuLanguage
->
menuAction
());
menuOption
->
addAction
(
actionSecure_Boot_Support
);
menuOption
->
addAction
(
menuPartition_Style
->
menuAction
());
menuOption
->
addAction
(
actionPartition_Configuration
);
menuOption
->
addAction
(
actionClear_Ventoy
);
menuOption
->
addAction
(
actionShow_All_Devices
);
menuPartition_Style
->
addAction
(
actionMBR
);
menuPartition_Style
->
addAction
(
actionGPT
);
retranslateUi
(
Ventoy2DiskWindow
);
QMetaObject
::
connectSlotsByName
(
Ventoy2DiskWindow
);
}
// setupUi
void
retranslateUi
(
QMainWindow
*
Ventoy2DiskWindow
)
{
Ventoy2DiskWindow
->
setWindowTitle
(
QApplication
::
translate
(
"Ventoy2DiskWindow"
,
"Ventoy2Disk"
,
Q_NULLPTR
));
actionSecure_Boot_Support
->
setText
(
QApplication
::
translate
(
"Ventoy2DiskWindow"
,
"Secure Boot Support"
,
Q_NULLPTR
));
actionMBR
->
setText
(
QApplication
::
translate
(
"Ventoy2DiskWindow"
,
"MBR"
,
Q_NULLPTR
));
actionGPT
->
setText
(
QApplication
::
translate
(
"Ventoy2DiskWindow"
,
"GPT"
,
Q_NULLPTR
));
actionPartition_Configuration
->
setText
(
QApplication
::
translate
(
"Ventoy2DiskWindow"
,
"Partition Configuration"
,
Q_NULLPTR
));
actionClear_Ventoy
->
setText
(
QApplication
::
translate
(
"Ventoy2DiskWindow"
,
"Clear Ventoy"
,
Q_NULLPTR
));
actionShow_All_Devices
->
setText
(
QApplication
::
translate
(
"Ventoy2DiskWindow"
,
"Show All Devices"
,
Q_NULLPTR
));
groupBoxDevice
->
setTitle
(
QApplication
::
translate
(
"Ventoy2DiskWindow"
,
"Device"
,
Q_NULLPTR
));
ButtonRefresh
->
setText
(
QString
());
groupBoxVentoyLocal
->
setTitle
(
QApplication
::
translate
(
"Ventoy2DiskWindow"
,
"Ventoy In Package"
,
Q_NULLPTR
));
labelVentoyLocalVer
->
setText
(
QApplication
::
translate
(
"Ventoy2DiskWindow"
,
"<html><head/><body><p><span style=
\"
font-size:20pt; font-weight:600; color:#ff0000;
\"
>1.0.53</span></p></body></html>"
,
Q_NULLPTR
));
labelVentoyLocalPartStyle
->
setText
(
QApplication
::
translate
(
"Ventoy2DiskWindow"
,
"<html><head/><body><p>MBR</p></body></html>"
,
Q_NULLPTR
));
labelVentoyLocalSecure
->
setText
(
QString
());
groupBoxVentoyDevice
->
setTitle
(
QApplication
::
translate
(
"Ventoy2DiskWindow"
,
"Ventoy In Device"
,
Q_NULLPTR
));
labelVentoyDeviceVer
->
setText
(
QApplication
::
translate
(
"Ventoy2DiskWindow"
,
"<html><head/><body><p><span style=
\"
font-size:20pt; font-weight:600; color:#ff0000;
\"
>1.0.52</span></p></body></html>"
,
Q_NULLPTR
));
labelVentoyDevicePartStyle
->
setText
(
QApplication
::
translate
(
"Ventoy2DiskWindow"
,
"<html><head/><body><p>GPT</p></body></html>"
,
Q_NULLPTR
));
labelVentoyDeviceSecure
->
setText
(
QString
());
groupBoxStatus
->
setTitle
(
QApplication
::
translate
(
"Ventoy2DiskWindow"
,
"Status: REDAY"
,
Q_NULLPTR
));
progressBar
->
setFormat
(
QString
());
ButtonInstall
->
setText
(
QApplication
::
translate
(
"Ventoy2DiskWindow"
,
"Install"
,
Q_NULLPTR
));
ButtonUpdate
->
setText
(
QApplication
::
translate
(
"Ventoy2DiskWindow"
,
"Update"
,
Q_NULLPTR
));
menuOption
->
setTitle
(
QApplication
::
translate
(
"Ventoy2DiskWindow"
,
"Option"
,
Q_NULLPTR
));
menuPartition_Style
->
setTitle
(
QApplication
::
translate
(
"Ventoy2DiskWindow"
,
"Partition Style"
,
Q_NULLPTR
));
menuLanguage
->
setTitle
(
QApplication
::
translate
(
"Ventoy2DiskWindow"
,
"Language"
,
Q_NULLPTR
));
}
// retranslateUi
};
namespace
Ui
{
class
Ventoy2DiskWindow
:
public
Ui_Ventoy2DiskWindow
{};
}
// namespace Ui
QT_END_NAMESPACE
#endif // UI_VENTOY2DISKWINDOW_H
LinuxGUI/Ventoy2Disk/QT/main.cpp
0 → 100644
View file @
d1481392
#include "ventoy2diskwindow.h"
#include <QApplication>
#include <QMessageBox>
#include <QFileInfo>
#include <QStyle>
#include <QDesktopWidget>
#include <QPixmap>
#include <unistd.h>
#include <sys/types.h>
extern
"C"
{
#include "ventoy_define.h"
#include "ventoy_util.h"
#include "ventoy_qt.h"
}
using
namespace
std
;
char
g_log_file
[
4096
];
char
g_ini_file
[
4096
];
int
main
(
int
argc
,
char
*
argv
[])
{
int
ret
;
QApplication
a
(
argc
,
argv
);
Ventoy2DiskWindow
w
;
#ifdef QT_CHECK_EUID
if
(
geteuid
()
!=
0
)
{
QMessageBox
::
critical
(
NULL
,
"Error"
,
"Permission denied!
\n
Please run with root privileges."
);
return
1
;
}
#endif
if
(
!
QFileInfo
::
exists
(
"./boot/boot.img"
))
{
QMessageBox
::
critical
(
NULL
,
"Error"
,
"Please run under the correct directory."
);
return
1
;
}
ventoy_log_init
();
snprintf
(
g_log_file
,
sizeof
(
g_log_file
),
"./log.txt"
);
snprintf
(
g_ini_file
,
sizeof
(
g_ini_file
),
"./Ventoy2Disk.ini"
);
for
(
int
i
=
0
;
i
<
argc
;
i
++
)
{
if
(
argv
[
i
]
&&
argv
[
i
+
1
]
&&
strcmp
(
argv
[
i
],
"-l"
)
==
0
)
{
snprintf
(
g_log_file
,
sizeof
(
g_log_file
),
"%s"
,
argv
[
i
+
1
]);
}
else
if
(
argv
[
i
]
&&
argv
[
i
+
1
]
&&
strcmp
(
argv
[
i
],
"-i"
)
==
0
)
{
snprintf
(
g_ini_file
,
sizeof
(
g_ini_file
),
"%s"
,
argv
[
i
+
1
]);
}
}
vlog
(
"===================================================
\n
"
);
vlog
(
"===== Ventoy2Disk %s powered by QT %s =====
\n
"
,
ventoy_get_local_version
(),
qVersion
());
vlog
(
"===================================================
\n
"
);
ventoy_disk_init
();
ventoy_http_init
();
w
.
setGeometry
(
QStyle
::
alignedRect
(
Qt
::
LeftToRight
,
Qt
::
AlignCenter
,
w
.
size
(),
a
.
desktop
()
->
availableGeometry
()));
QPixmap
pix
;
QIcon
icon
;
int
len
;
const
uchar
*
data
;
data
=
(
const
uchar
*
)
get_window_icon_raw_data
(
&
len
);
pix
.
loadFromData
(
data
,
len
);
icon
.
addPixmap
(
pix
);
w
.
setWindowIcon
(
icon
);
w
.
show
();
w
.
setFixedSize
(
w
.
size
());
ret
=
a
.
exec
();
ventoy_disk_exit
();
ventoy_http_exit
();
vlog
(
"######## Ventoy2Disk QT %s exit ########
\n
"
,
ventoy_get_local_version
());
/* log exit must at the end */
ventoy_log_exit
();
return
ret
;
}
LinuxGUI/Ventoy2Disk/QT/partcfgdialog.cpp
0 → 100644
View file @
d1481392
#include "partcfgdialog.h"
#include "ui_partcfgdialog.h"
#include <QDebug>
#include <QMessageBox>
PartCfgDialog
::
PartCfgDialog
(
QWidget
*
parent
)
:
QDialog
(
parent
),
ui
(
new
Ui
::
PartCfgDialog
)
{
reserve
=
false
;
unit
=
1
;
align
=
true
;
valuestr
=
""
;
resvalue
=
0
;
ui
->
setupUi
(
this
);
ui
->
lineEdit
->
setEnabled
(
false
);
ui
->
comboBox
->
setEnabled
(
false
);
}
PartCfgDialog
::~
PartCfgDialog
()
{
delete
ui
;
}
void
PartCfgDialog
::
update_ui_status
()
{
ui
->
checkBox
->
setChecked
(
reserve
);
ui
->
lineEdit
->
setEnabled
(
reserve
);
ui
->
comboBox
->
setEnabled
(
reserve
);
ui
->
checkBox_2
->
setChecked
(
align
);
}
void
PartCfgDialog
::
update_language_ui
(
QJsonObject
&
obj
)
{
ui
->
checkBox
->
setText
(
_LANG_STR
(
"STR_PRESERVE_SPACE"
));
ui
->
checkBox_2
->
setText
(
_LANG_STR
(
"STR_PART_ALIGN_4KB"
));
ui
->
pushButtonOK
->
setText
(
_LANG_STR
(
"STR_BTN_OK"
));
ui
->
pushButtonCancel
->
setText
(
_LANG_STR
(
"STR_BTN_CANCEL"
));
invalid_value
=
_LANG_STR
(
"STR_SPACE_VAL_INVALID"
);
err_title
=
_LANG_STR
(
"STR_ERROR"
);
}
void
PartCfgDialog
::
on_pushButtonOK_clicked
()
{
if
(
ui
->
checkBox
->
isChecked
())
{
QString
str
=
ui
->
lineEdit
->
text
();
if
(
str
.
isEmpty
())
{
QMessageBox
::
critical
(
NULL
,
err_title
,
invalid_value
);
return
;
}
for
(
int
i
=
0
;
i
<
str
.
size
();
i
++
)
{
if
(
str
[
i
]
<
'0'
||
str
[
i
]
>
'9'
)
{
QMessageBox
::
critical
(
NULL
,
err_title
,
invalid_value
);
return
;
}
}
valuestr
=
str
;
resvalue
=
str
.
toLongLong
();
reserve
=
true
;
}
else
{
reserve
=
false
;
}
align
=
ui
->
checkBox_2
->
isChecked
();
unit
=
ui
->
comboBox
->
currentIndex
();
accept
();
}
void
PartCfgDialog
::
on_pushButtonCancel_clicked
()
{
reject
();
}
void
PartCfgDialog
::
on_checkBox_stateChanged
(
int
arg1
)
{
(
void
)
arg1
;
if
(
ui
->
checkBox
->
isChecked
())
{
ui
->
lineEdit
->
setEnabled
(
true
);
ui
->
comboBox
->
setEnabled
(
true
);
}
else
{
ui
->
lineEdit
->
setEnabled
(
false
);
ui
->
comboBox
->
setEnabled
(
false
);
}
}
LinuxGUI/Ventoy2Disk/QT/partcfgdialog.h
0 → 100644
View file @
d1481392
#ifndef PARTCFGDIALOG_H
#define PARTCFGDIALOG_H
#include <QDialog>
#include <QJsonObject>
namespace
Ui
{
class
PartCfgDialog
;
}
class
PartCfgDialog
:
public
QDialog
{
Q_OBJECT
public:
bool
reserve
;
int
unit
;
bool
align
;
QString
valuestr
;
qint64
resvalue
;
QString
invalid_value
;
QString
err_title
;
void
update_ui_status
();
void
update_language_ui
(
QJsonObject
&
obj
);
explicit
PartCfgDialog
(
QWidget
*
parent
=
nullptr
);
~
PartCfgDialog
();
private
slots
:
void
on_pushButtonOK_clicked
();
void
on_pushButtonCancel_clicked
();
void
on_checkBox_stateChanged
(
int
arg1
);
private:
Ui
::
PartCfgDialog
*
ui
;
};
#define _LANG_STR(id) obj.value(id).toString()
#endif // PARTCFGDIALOG_H
LinuxGUI/Ventoy2Disk/QT/partcfgdialog.ui
0 → 100644
View file @
d1481392
<?xml version="1.0" encoding="UTF-8"?>
<ui
version=
"4.0"
>
<class>
PartCfgDialog
</class>
<widget
class=
"QDialog"
name=
"PartCfgDialog"
>
<property
name=
"geometry"
>
<rect>
<x>
0
</x>
<y>
0
</y>
<width>
420
</width>
<height>
258
</height>
</rect>
</property>
<property
name=
"windowTitle"
>
<string>
Partition Configuration
</string>
</property>
<widget
class=
"QPushButton"
name=
"pushButtonOK"
>
<property
name=
"geometry"
>
<rect>
<x>
90
</x>
<y>
210
</y>
<width>
90
</width>
<height>
30
</height>
</rect>
</property>
<property
name=
"text"
>
<string>
OK
</string>
</property>
</widget>
<widget
class=
"QPushButton"
name=
"pushButtonCancel"
>
<property
name=
"geometry"
>
<rect>
<x>
230
</x>
<y>
210
</y>
<width>
90
</width>
<height>
30
</height>
</rect>
</property>
<property
name=
"text"
>
<string>
Cancel
</string>
</property>
</widget>
<widget
class=
"QGroupBox"
name=
"groupBox"
>
<property
name=
"geometry"
>
<rect>
<x>
10
</x>
<y>
10
</y>
<width>
400
</width>
<height>
51
</height>
</rect>
</property>
<property
name=
"title"
>
<string/>
</property>
<widget
class=
"QCheckBox"
name=
"checkBox"
>
<property
name=
"geometry"
>
<rect>
<x>
10
</x>
<y>
10
</y>
<width>
381
</width>
<height>
41
</height>
</rect>
</property>
<property
name=
"text"
>
<string>
Preserve some space at the end of the disk
</string>
</property>
<property
name=
"autoRepeatInterval"
>
<number>
0
</number>
</property>
</widget>
</widget>
<widget
class=
"QGroupBox"
name=
"groupBox_2"
>
<property
name=
"geometry"
>
<rect>
<x>
10
</x>
<y>
60
</y>
<width>
200
</width>
<height>
60
</height>
</rect>
</property>
<property
name=
"title"
>
<string/>
</property>
<widget
class=
"QLineEdit"
name=
"lineEdit"
>
<property
name=
"geometry"
>
<rect>
<x>
10
</x>
<y>
20
</y>
<width>
181
</width>
<height>
26
</height>
</rect>
</property>
<property
name=
"maxLength"
>
<number>
14
</number>
</property>
</widget>
</widget>
<widget
class=
"QGroupBox"
name=
"groupBox_3"
>
<property
name=
"geometry"
>
<rect>
<x>
210
</x>
<y>
60
</y>
<width>
200
</width>
<height>
60
</height>
</rect>
</property>
<property
name=
"title"
>
<string/>
</property>
<widget
class=
"QComboBox"
name=
"comboBox"
>
<property
name=
"geometry"
>
<rect>
<x>
10
</x>
<y>
20
</y>
<width>
181
</width>
<height>
26
</height>
</rect>
</property>
<property
name=
"currentIndex"
>
<number>
1
</number>
</property>
<item>
<property
name=
"text"
>
<string>
MB
</string>
</property>
</item>
<item>
<property
name=
"text"
>
<string>
GB
</string>
</property>
</item>
</widget>
</widget>
<widget
class=
"QGroupBox"
name=
"groupBox_4"
>
<property
name=
"geometry"
>
<rect>
<x>
10
</x>
<y>
130
</y>
<width>
401
</width>
<height>
51
</height>
</rect>
</property>
<property
name=
"title"
>
<string/>
</property>
<widget
class=
"QCheckBox"
name=
"checkBox_2"
>
<property
name=
"geometry"
>
<rect>
<x>
10
</x>
<y>
18
</y>
<width>
381
</width>
<height>
24
</height>
</rect>
</property>
<property
name=
"text"
>
<string>
Align partitions with 4KB
</string>
</property>
<property
name=
"checked"
>
<bool>
true
</bool>
</property>
</widget>
</widget>
</widget>
<resources/>
<connections/>
</ui>
LinuxGUI/Ventoy2Disk/QT/refresh_icon_data.c
0 → 100644
View file @
d1481392
/******************************************************************************
* refresh_icon_data.c
*
* Copyright (c) 2021, longpanda <admin@ventoy.net>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*
*/
#include <stdio.h>
#include <stdlib.h>
static
unsigned
char
refresh_icon_hexData
[
4286
]
=
{
0x00
,
0x00
,
0x01
,
0x00
,
0x01
,
0x00
,
0x20
,
0x20
,
0x00
,
0x00
,
0x01
,
0x00
,
0x20
,
0x00
,
0xA8
,
0x10
,
0x00
,
0x00
,
0x16
,
0x00
,
0x00
,
0x00
,
0x28
,
0x00
,
0x00
,
0x00
,
0x20
,
0x00
,
0x00
,
0x00
,
0x40
,
0x00
,
0x00
,
0x00
,
0x01
,
0x00
,
0x20
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x10
,
0x00
,
0x00
,
0x10
,
0x27
,
0x00
,
0x00
,
0x10
,
0x27
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x0C
,
0xA6
,
0xBE
,
0x32
,
0x2D
,
0xA6
,
0xBE
,
0x32
,
0x54
,
0xA6
,
0xBE
,
0x32
,
0x72
,
0xA6
,
0xBE
,
0x32
,
0x81
,
0xA6
,
0xBE
,
0x32
,
0x81
,
0xA6
,
0xBE
,
0x32
,
0x72
,
0xA6
,
0xBE
,
0x32
,
0x54
,
0xA6
,
0xBE
,
0x32
,
0x2D
,
0xA6
,
0xBE
,
0x32
,
0x0C
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x21
,
0xA6
,
0xBE
,
0x32
,
0x72
,
0xA6
,
0xBE
,
0x32
,
0xBF
,
0xA6
,
0xBE
,
0x32
,
0xEB
,
0xA6
,
0xBE
,
0x32
,
0xFC
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFC
,
0xA6
,
0xBE
,
0x32
,
0xEB
,
0xA6
,
0xBE
,
0x32
,
0xBF
,
0xA6
,
0xBE
,
0x32
,
0x72
,
0xA6
,
0xBE
,
0x32
,
0x21
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x10
,
0xA6
,
0xBE
,
0x32
,
0x71
,
0xA6
,
0xBE
,
0x32
,
0xD9
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xDA
,
0xA6
,
0xBE
,
0x32
,
0x71
,
0xA6
,
0xBE
,
0x32
,
0x10
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x29
,
0xA6
,
0xBE
,
0x32
,
0xB2
,
0xA6
,
0xBE
,
0x32
,
0xFE
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xA5
,
0xBD
,
0x30
,
0xFF
,
0xA5
,
0xBD
,
0x2F
,
0xFF
,
0xA5
,
0xBD
,
0x2F
,
0xFF
,
0xA5
,
0xBD
,
0x2F
,
0xFF
,
0xA5
,
0xBE
,
0x31
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFE
,
0xA6
,
0xBE
,
0x32
,
0xB2
,
0xA6
,
0xBE
,
0x32
,
0x29
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x35
,
0xA6
,
0xBE
,
0x32
,
0xCF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA5
,
0xBD
,
0x30
,
0xFF
,
0xA5
,
0xBE
,
0x31
,
0xFF
,
0xAC
,
0xC3
,
0x40
,
0xFF
,
0xB7
,
0xCA
,
0x59
,
0xFF
,
0xBF
,
0xD0
,
0x6B
,
0xFF
,
0xC0
,
0xD1
,
0x6E
,
0xFF
,
0xBA
,
0xCD
,
0x60
,
0xFF
,
0xAF
,
0xC5
,
0x48
,
0xFF
,
0xA7
,
0xBF
,
0x34
,
0xFF
,
0xA5
,
0xBD
,
0x2F
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xCF
,
0xA6
,
0xBE
,
0x32
,
0x35
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x29
,
0xA6
,
0xBE
,
0x32
,
0xCF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xB5
,
0xC9
,
0x54
,
0xFF
,
0xD4
,
0xE0
,
0x9D
,
0xFF
,
0xED
,
0xF2
,
0xD6
,
0xFF
,
0xF9
,
0xFB
,
0xF1
,
0xFF
,
0xFD
,
0xFD
,
0xFA
,
0xFF
,
0xFD
,
0xFE
,
0xFB
,
0xFF
,
0xFB
,
0xFC
,
0xF5
,
0xFF
,
0xF2
,
0xF6
,
0xE1
,
0xFF
,
0xDD
,
0xE6
,
0xB1
,
0xFF
,
0xBD
,
0xCF
,
0x67
,
0xFF
,
0xA7
,
0xBF
,
0x35
,
0xFF
,
0xA5
,
0xBE
,
0x30
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xCF
,
0xA6
,
0xBE
,
0x32
,
0x29
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x10
,
0xA6
,
0xBE
,
0x32
,
0xB2
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xA8
,
0xC0
,
0x37
,
0xFF
,
0xCB
,
0xD9
,
0x87
,
0xFF
,
0xF4
,
0xF7
,
0xE6
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFA
,
0xFB
,
0xF4
,
0xFF
,
0xD9
,
0xE4
,
0xA8
,
0xFF
,
0xAF
,
0xC4
,
0x46
,
0xFF
,
0xA5
,
0xBD
,
0x30
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xB2
,
0xA6
,
0xBE
,
0x32
,
0x10
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x71
,
0xA6
,
0xBE
,
0x32
,
0xFE
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xA9
,
0xC0
,
0x38
,
0xFF
,
0xD5
,
0xE0
,
0x9D
,
0xFF
,
0xFD
,
0xFE
,
0xFA
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFE
,
0xFE
,
0xFD
,
0xFF
,
0xEE
,
0xF3
,
0xD9
,
0xFF
,
0xD9
,
0xE3
,
0xA8
,
0xFF
,
0xCC
,
0xDA
,
0x8A
,
0xFF
,
0xCA
,
0xD8
,
0x85
,
0xFF
,
0xD3
,
0xDF
,
0x99
,
0xFF
,
0xE6
,
0xEC
,
0xC4
,
0xFF
,
0xFA
,
0xFB
,
0xF3
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xE7
,
0xED
,
0xC7
,
0xFF
,
0xB1
,
0xC6
,
0x4C
,
0xFF
,
0xA5
,
0xBD
,
0x30
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFE
,
0xA6
,
0xBE
,
0x32
,
0x71
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x21
,
0xA6
,
0xBE
,
0x32
,
0xDA
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xCD
,
0xDB
,
0x8C
,
0xFF
,
0xFD
,
0xFE
,
0xFB
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xF4
,
0xF7
,
0xE7
,
0xFF
,
0xCB
,
0xD9
,
0x87
,
0xFF
,
0xAE
,
0xC3
,
0x43
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xA4
,
0xBD
,
0x2F
,
0xFF
,
0xA4
,
0xBD
,
0x2E
,
0xFF
,
0xA5
,
0xBD
,
0x2F
,
0xFF
,
0xA9
,
0xC0
,
0x38
,
0xFF
,
0xBD
,
0xCF
,
0x66
,
0xFF
,
0xE8
,
0xEE
,
0xC9
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xE4
,
0xEB
,
0xC1
,
0xFF
,
0xAD
,
0xC3
,
0x41
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xDA
,
0xA6
,
0xBE
,
0x32
,
0x21
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBD
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x72
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA5
,
0xBD
,
0x2F
,
0xFF
,
0xA4
,
0xBC
,
0x2D
,
0xFF
,
0xB8
,
0xCB
,
0x5C
,
0xFF
,
0xF6
,
0xF9
,
0xEB
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xF1
,
0xF5
,
0xDF
,
0xFF
,
0xBA
,
0xCD
,
0x60
,
0xFF
,
0xA4
,
0xBD
,
0x2E
,
0xFF
,
0xA5
,
0xBE
,
0x31
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA5
,
0xBD
,
0x2F
,
0xFF
,
0xAE
,
0xC4
,
0x44
,
0xFF
,
0xE2
,
0xE9
,
0xBB
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xC7
,
0xD6
,
0x7E
,
0xFF
,
0xA5
,
0xBD
,
0x2F
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0x72
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x0C
,
0xA6
,
0xBE
,
0x32
,
0xC0
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA9
,
0xC0
,
0x39
,
0xFF
,
0xC8
,
0xD7
,
0x80
,
0xFF
,
0xD0
,
0xDC
,
0x92
,
0xFF
,
0xE7
,
0xEE
,
0xC8
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xE6
,
0xED
,
0xC5
,
0xFF
,
0xCC
,
0xDA
,
0x8A
,
0xFF
,
0xB0
,
0xC5
,
0x49
,
0xFF
,
0xA5
,
0xBE
,
0x31
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA5
,
0xBD
,
0x30
,
0xFF
,
0xB0
,
0xC6
,
0x4A
,
0xFF
,
0xE3
,
0xEA
,
0xBE
,
0xFF
,
0xEA
,
0xEF
,
0xCE
,
0xFF
,
0xB8
,
0xCB
,
0x5C
,
0xFF
,
0xA5
,
0xBD
,
0x30
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xBF
,
0xA6
,
0xBE
,
0x32
,
0x0C
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x2E
,
0xA6
,
0xBE
,
0x32
,
0xEB
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA8
,
0xC0
,
0x37
,
0xFF
,
0xE0
,
0xE8
,
0xB8
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xF3
,
0xF6
,
0xE3
,
0xFF
,
0xB3
,
0xC7
,
0x4F
,
0xFF
,
0xA5
,
0xBD
,
0x30
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xAA
,
0xC1
,
0x3A
,
0xFF
,
0xAB
,
0xC1
,
0x3D
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xEB
,
0xA6
,
0xBE
,
0x32
,
0x2D
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x54
,
0xA6
,
0xBE
,
0x32
,
0xFC
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA5
,
0xBD
,
0x30
,
0xFF
,
0xB6
,
0xCA
,
0x58
,
0xFF
,
0xF4
,
0xF7
,
0xE6
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFD
,
0xFE
,
0xFB
,
0xFF
,
0xC9
,
0xD8
,
0x84
,
0xFF
,
0xA5
,
0xBD
,
0x30
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA5
,
0xBE
,
0x31
,
0xFF
,
0xA5
,
0xBD
,
0x2F
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFC
,
0xA6
,
0xBE
,
0x32
,
0x54
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x72
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA5
,
0xBE
,
0x30
,
0xFF
,
0xCD
,
0xDB
,
0x8C
,
0xFF
,
0xFE
,
0xFE
,
0xFD
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xE2
,
0xEA
,
0xBC
,
0xFF
,
0xAA
,
0xC1
,
0x3A
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xAB
,
0xC2
,
0x3E
,
0xFF
,
0xBB
,
0xCE
,
0x63
,
0xFF
,
0xA7
,
0xBF
,
0x35
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0x72
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x81
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xAB
,
0xC2
,
0x3E
,
0xFF
,
0xE6
,
0xED
,
0xC5
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xF5
,
0xF8
,
0xE8
,
0xFF
,
0xB7
,
0xCB
,
0x5A
,
0xFF
,
0xA5
,
0xBD
,
0x30
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA5
,
0xBE
,
0x31
,
0xFF
,
0xCE
,
0xDB
,
0x8F
,
0xFF
,
0xF7
,
0xF9
,
0xEC
,
0xFF
,
0xBD
,
0xCF
,
0x67
,
0xFF
,
0xA5
,
0xBD
,
0x2F
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0x81
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x81
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA5
,
0xBD
,
0x2F
,
0xFF
,
0xBB
,
0xCD
,
0x63
,
0xFF
,
0xF6
,
0xF8
,
0xEA
,
0xFF
,
0xCE
,
0xDB
,
0x8F
,
0xFF
,
0xA5
,
0xBE
,
0x31
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA5
,
0xBD
,
0x30
,
0xFF
,
0xB7
,
0xCB
,
0x5A
,
0xFF
,
0xF5
,
0xF8
,
0xE8
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xE8
,
0xEE
,
0xC9
,
0xFF
,
0xAC
,
0xC2
,
0x40
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0x81
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x72
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA7
,
0xBF
,
0x34
,
0xFF
,
0xBA
,
0xCD
,
0x60
,
0xFF
,
0xAB
,
0xC2
,
0x3E
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xAA
,
0xC1
,
0x3A
,
0xFF
,
0xE2
,
0xEA
,
0xBC
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFE
,
0xFF
,
0xCF
,
0xDC
,
0x90
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0x72
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x54
,
0xA6
,
0xBE
,
0x32
,
0xFC
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA5
,
0xBD
,
0x2F
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA5
,
0xBD
,
0x30
,
0xFF
,
0xC9
,
0xD8
,
0x84
,
0xFF
,
0xFD
,
0xFE
,
0xFB
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xF5
,
0xF8
,
0xE9
,
0xFF
,
0xB8
,
0xCB
,
0x5B
,
0xFF
,
0xA5
,
0xBD
,
0x30
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFC
,
0xA6
,
0xBE
,
0x32
,
0x54
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x2E
,
0xA6
,
0xBE
,
0x32
,
0xEB
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xA9
,
0xC0
,
0x38
,
0xFF
,
0xA8
,
0xBF
,
0x37
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA5
,
0xBD
,
0x30
,
0xFF
,
0xB2
,
0xC7
,
0x4F
,
0xFF
,
0xF2
,
0xF6
,
0xE2
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xE2
,
0xE9
,
0xBB
,
0xFF
,
0xA9
,
0xC0
,
0x38
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xEB
,
0xA6
,
0xBE
,
0x32
,
0x2D
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x0C
,
0xA6
,
0xBE
,
0x32
,
0xC0
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA5
,
0xBD
,
0x30
,
0xFF
,
0xB5
,
0xC9
,
0x54
,
0xFF
,
0xE4
,
0xEB
,
0xC1
,
0xFF
,
0xDF
,
0xE8
,
0xB5
,
0xFF
,
0xAF
,
0xC5
,
0x47
,
0xFF
,
0xA5
,
0xBD
,
0x30
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA5
,
0xBE
,
0x31
,
0xFF
,
0xAF
,
0xC5
,
0x47
,
0xFF
,
0xCA
,
0xD8
,
0x85
,
0xFF
,
0xE2
,
0xE9
,
0xBB
,
0xFF
,
0xFF
,
0xFF
,
0xFE
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xE9
,
0xEF
,
0xCD
,
0xFF
,
0xCE
,
0xDB
,
0x8F
,
0xFF
,
0xC7
,
0xD6
,
0x7E
,
0xFF
,
0xA9
,
0xC0
,
0x39
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xBF
,
0xA6
,
0xBE
,
0x32
,
0x0C
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBD
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x73
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA5
,
0xBD
,
0x2F
,
0xFF
,
0xC6
,
0xD6
,
0x7C
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xDF
,
0xE8
,
0xB5
,
0xFF
,
0xAC
,
0xC3
,
0x40
,
0xFF
,
0xA5
,
0xBD
,
0x2F
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xA4
,
0xBD
,
0x2E
,
0xFF
,
0xB5
,
0xC9
,
0x55
,
0xFF
,
0xED
,
0xF2
,
0xD6
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xF9
,
0xFB
,
0xF1
,
0xFF
,
0xBC
,
0xCE
,
0x65
,
0xFF
,
0xA4
,
0xBC
,
0x2C
,
0xFF
,
0xA5
,
0xBD
,
0x2F
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0x72
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x21
,
0xA6
,
0xBE
,
0x32
,
0xDA
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xAE
,
0xC4
,
0x44
,
0xFF
,
0xE6
,
0xED
,
0xC6
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xE4
,
0xEB
,
0xC1
,
0xFF
,
0xB9
,
0xCC
,
0x5E
,
0xFF
,
0xA7
,
0xBF
,
0x35
,
0xFF
,
0xA5
,
0xBD
,
0x2F
,
0xFF
,
0xA4
,
0xBD
,
0x2E
,
0xFF
,
0xA4
,
0xBD
,
0x2E
,
0xFF
,
0xA5
,
0xBD
,
0x2F
,
0xFF
,
0xAB
,
0xC1
,
0x3D
,
0xFF
,
0xC5
,
0xD5
,
0x79
,
0xFF
,
0xF1
,
0xF5
,
0xDE
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFE
,
0xFF
,
0xD3
,
0xDF
,
0x99
,
0xFF
,
0xA7
,
0xBE
,
0x33
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xDA
,
0xA6
,
0xBE
,
0x32
,
0x21
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x72
,
0xA6
,
0xBE
,
0x32
,
0xFE
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA5
,
0xBD
,
0x30
,
0xFF
,
0xB3
,
0xC8
,
0x51
,
0xFF
,
0xE9
,
0xEF
,
0xCD
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xF8
,
0xFA
,
0xEE
,
0xFF
,
0xE1
,
0xE9
,
0xBA
,
0xFF
,
0xCD
,
0xDB
,
0x8C
,
0xFF
,
0xC4
,
0xD4
,
0x78
,
0xFF
,
0xC6
,
0xD6
,
0x7C
,
0xFF
,
0xD3
,
0xDF
,
0x9A
,
0xFF
,
0xE9
,
0xEF
,
0xCD
,
0xFF
,
0xFC
,
0xFD
,
0xF9
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFE
,
0xFF
,
0xFE
,
0xFF
,
0xDB
,
0xE4
,
0xAB
,
0xFF
,
0xAA
,
0xC1
,
0x3C
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFE
,
0xA6
,
0xBE
,
0x32
,
0x71
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x10
,
0xA6
,
0xBE
,
0x32
,
0xB3
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA5
,
0xBD
,
0x30
,
0xFF
,
0xB1
,
0xC6
,
0x4B
,
0xFF
,
0xDD
,
0xE6
,
0xB2
,
0xFF
,
0xFC
,
0xFD
,
0xF8
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFE
,
0xFF
,
0xFE
,
0xFF
,
0xFF
,
0xFF
,
0xFE
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xF8
,
0xFA
,
0xEE
,
0xFF
,
0xD1
,
0xDE
,
0x96
,
0xFF
,
0xAA
,
0xC1
,
0x3C
,
0xFF
,
0xA5
,
0xBE
,
0x31
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xB2
,
0xA6
,
0xBE
,
0x32
,
0x10
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x29
,
0xA6
,
0xBE
,
0x32
,
0xCF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA5
,
0xBD
,
0x30
,
0xFF
,
0xA9
,
0xC0
,
0x38
,
0xFF
,
0xC1
,
0xD2
,
0x71
,
0xFF
,
0xE2
,
0xEA
,
0xBC
,
0xFF
,
0xF5
,
0xF8
,
0xE9
,
0xFF
,
0xFD
,
0xFD
,
0xFA
,
0xFF
,
0xFF
,
0xFF
,
0xFE
,
0xFF
,
0xFE
,
0xFF
,
0xFE
,
0xFF
,
0xFB
,
0xFC
,
0xF7
,
0xFF
,
0xF2
,
0xF5
,
0xE1
,
0xFF
,
0xDB
,
0xE5
,
0xAC
,
0xFF
,
0xB9
,
0xCC
,
0x5F
,
0xFF
,
0xA6
,
0xBE
,
0x33
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xCF
,
0xA6
,
0xBE
,
0x32
,
0x29
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x35
,
0xA6
,
0xBE
,
0x32
,
0xCF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x31
,
0xFF
,
0xA5
,
0xBD
,
0x2F
,
0xFF
,
0xA8
,
0xBF
,
0x36
,
0xFF
,
0xB3
,
0xC7
,
0x4F
,
0xFF
,
0xBF
,
0xD0
,
0x6B
,
0xFF
,
0xC5
,
0xD5
,
0x7A
,
0xFF
,
0xC4
,
0xD4
,
0x78
,
0xFF
,
0xBC
,
0xCE
,
0x64
,
0xFF
,
0xB0
,
0xC5
,
0x48
,
0xFF
,
0xA6
,
0xBE
,
0x33
,
0xFF
,
0xA5
,
0xBD
,
0x30
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xCF
,
0xA6
,
0xBE
,
0x32
,
0x35
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x29
,
0xA6
,
0xBE
,
0x32
,
0xB2
,
0xA6
,
0xBE
,
0x32
,
0xFE
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA5
,
0xBD
,
0x30
,
0xFF
,
0xA5
,
0xBD
,
0x2F
,
0xFF
,
0xA4
,
0xBD
,
0x2E
,
0xFF
,
0xA4
,
0xBD
,
0x2E
,
0xFF
,
0xA5
,
0xBD
,
0x2F
,
0xFF
,
0xA5
,
0xBE
,
0x31
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFE
,
0xA6
,
0xBE
,
0x32
,
0xB3
,
0xA6
,
0xBE
,
0x32
,
0x29
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x10
,
0xA6
,
0xBE
,
0x32
,
0x71
,
0xA6
,
0xBE
,
0x32
,
0xDA
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xDA
,
0xA6
,
0xBE
,
0x32
,
0x72
,
0xA6
,
0xBE
,
0x32
,
0x10
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x21
,
0xA6
,
0xBE
,
0x32
,
0x72
,
0xA6
,
0xBE
,
0x32
,
0xBF
,
0xA6
,
0xBE
,
0x32
,
0xEB
,
0xA6
,
0xBE
,
0x32
,
0xFC
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFF
,
0xA6
,
0xBE
,
0x32
,
0xFC
,
0xA6
,
0xBE
,
0x32
,
0xEB
,
0xA6
,
0xBE
,
0x32
,
0xC0
,
0xA6
,
0xBE
,
0x32
,
0x73
,
0xA6
,
0xBE
,
0x32
,
0x21
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x0C
,
0xA6
,
0xBE
,
0x32
,
0x2D
,
0xA6
,
0xBE
,
0x32
,
0x54
,
0xA6
,
0xBE
,
0x32
,
0x72
,
0xA6
,
0xBE
,
0x32
,
0x81
,
0xA6
,
0xBE
,
0x32
,
0x81
,
0xA6
,
0xBE
,
0x32
,
0x72
,
0xA6
,
0xBE
,
0x32
,
0x54
,
0xA6
,
0xBE
,
0x32
,
0x2E
,
0xA6
,
0xBE
,
0x32
,
0x0C
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBD
,
0x31
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0xA6
,
0xBE
,
0x32
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xFF
,
0x80
,
0x01
,
0xFF
,
0xFE
,
0x00
,
0x00
,
0x7F
,
0xF8
,
0x00
,
0x00
,
0x1F
,
0xF0
,
0x00
,
0x00
,
0x0F
,
0xE0
,
0x00
,
0x00
,
0x07
,
0xC0
,
0x00
,
0x00
,
0x03
,
0xC0
,
0x00
,
0x00
,
0x03
,
0x80
,
0x00
,
0x00
,
0x01
,
0x80
,
0x00
,
0x00
,
0x01
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x80
,
0x00
,
0x00
,
0x01
,
0x80
,
0x00
,
0x00
,
0x01
,
0xC0
,
0x00
,
0x00
,
0x03
,
0xC0
,
0x00
,
0x00
,
0x03
,
0xE0
,
0x00
,
0x00
,
0x07
,
0xF0
,
0x00
,
0x00
,
0x0F
,
0xF8
,
0x00
,
0x00
,
0x1F
,
0xFE
,
0x00
,
0x00
,
0x7F
,
0xFF
,
0x80
,
0x01
,
0xFF
};
void
*
get_refresh_icon_raw_data
(
int
*
len
)
{
*
len
=
(
int
)
sizeof
(
refresh_icon_hexData
);
return
refresh_icon_hexData
;
}
LinuxGUI/Ventoy2Disk/QT/secure_icon_data.c
0 → 100644
View file @
d1481392
/******************************************************************************
* secure_icon_data.c
*
* Copyright (c) 2021, longpanda <admin@ventoy.net>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*
*/
#include <stdio.h>
#include <stdlib.h>
static
unsigned
char
secure_icon_hexData
[
958
]
=
{
0x00
,
0x00
,
0x01
,
0x00
,
0x01
,
0x00
,
0x0D
,
0x10
,
0x00
,
0x00
,
0x00
,
0x00
,
0x20
,
0x00
,
0xA8
,
0x03
,
0x00
,
0x00
,
0x16
,
0x00
,
0x00
,
0x00
,
0x28
,
0x00
,
0x00
,
0x00
,
0x0D
,
0x00
,
0x00
,
0x00
,
0x20
,
0x00
,
0x00
,
0x00
,
0x01
,
0x00
,
0x20
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x40
,
0x03
,
0x00
,
0x00
,
0x46
,
0x5C
,
0x00
,
0x00
,
0x46
,
0x5C
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x8C
,
0xFB
,
0x01
,
0x00
,
0x8C
,
0xFB
,
0x2E
,
0x00
,
0x8C
,
0xFB
,
0x52
,
0x00
,
0x8C
,
0xFB
,
0x53
,
0x00
,
0x8C
,
0xFB
,
0x53
,
0x00
,
0x8C
,
0xFB
,
0x53
,
0x00
,
0x8C
,
0xFB
,
0x53
,
0x00
,
0x8C
,
0xFB
,
0x53
,
0x00
,
0x8C
,
0xFB
,
0x53
,
0x00
,
0x8C
,
0xFB
,
0x53
,
0x00
,
0x8C
,
0xFB
,
0x52
,
0x00
,
0x8C
,
0xFB
,
0x2E
,
0x00
,
0x8C
,
0xFB
,
0x01
,
0x00
,
0x8C
,
0xFB
,
0x3E
,
0x00
,
0x8C
,
0xFB
,
0xDA
,
0x00
,
0x8C
,
0xFB
,
0xF8
,
0x00
,
0x8C
,
0xFB
,
0xF7
,
0x00
,
0x8C
,
0xFB
,
0xF7
,
0x00
,
0x8C
,
0xFB
,
0xF7
,
0x00
,
0x8C
,
0xFB
,
0xF7
,
0x00
,
0x8C
,
0xFB
,
0xF7
,
0x00
,
0x8C
,
0xFB
,
0xF7
,
0x00
,
0x8C
,
0xFB
,
0xF7
,
0x00
,
0x8C
,
0xFB
,
0xF8
,
0x00
,
0x8C
,
0xFB
,
0xDA
,
0x00
,
0x8C
,
0xFB
,
0x3E
,
0x00
,
0x8C
,
0xFB
,
0x78
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0x78
,
0x00
,
0x8C
,
0xFB
,
0x7B
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0x7B
,
0x00
,
0x8C
,
0xFB
,
0x7A
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x86
,
0xF1
,
0xFF
,
0x00
,
0x7C
,
0xDF
,
0xFF
,
0x00
,
0x86
,
0xF1
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0x7A
,
0x00
,
0x8C
,
0xFB
,
0x7A
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFC
,
0xFF
,
0x00
,
0x7C
,
0xDF
,
0xFF
,
0x00
,
0x6C
,
0xC4
,
0xFF
,
0x00
,
0x7C
,
0xDF
,
0xFF
,
0x00
,
0x8C
,
0xFC
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0x7A
,
0x00
,
0x8C
,
0xFB
,
0x7A
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x87
,
0xF2
,
0xFF
,
0x00
,
0x7D
,
0xE1
,
0xFF
,
0x00
,
0x87
,
0xF2
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0x7A
,
0x00
,
0x8C
,
0xFB
,
0x7B
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFC
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0x7B
,
0x00
,
0x8C
,
0xFB
,
0x77
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0xFF
,
0x00
,
0x8C
,
0xFB
,
0x77
,
0x00
,
0x8C
,
0xFB
,
0x3A
,
0x00
,
0x8C
,
0xFB
,
0xD4
,
0x01
,
0x8B
,
0xF9
,
0xF7
,
0x03
,
0x89
,
0xF3
,
0xFF
,
0x01
,
0x8B
,
0xF8
,
0xF8
,
0x00
,
0x8C
,
0xFB
,
0xF4
,
0x00
,
0x8C
,
0xFB
,
0xF4
,
0x00
,
0x8C
,
0xFB
,
0xF4
,
0x01
,
0x8B
,
0xF8
,
0xF8
,
0x03
,
0x89
,
0xF3
,
0xFF
,
0x01
,
0x8B
,
0xF9
,
0xF7
,
0x00
,
0x8C
,
0xFB
,
0xD4
,
0x00
,
0x8C
,
0xFB
,
0x3A
,
0x00
,
0x8C
,
0xFB
,
0x00
,
0x00
,
0x93
,
0xFF
,
0x1E
,
0x1D
,
0x6B
,
0xA9
,
0x6B
,
0x32
,
0x54
,
0x6F
,
0xF6
,
0x22
,
0x65
,
0x9A
,
0x7D
,
0x00
,
0x90
,
0xFF
,
0x39
,
0x00
,
0x8C
,
0xFB
,
0x3C
,
0x00
,
0x90
,
0xFF
,
0x39
,
0x22
,
0x65
,
0x9A
,
0x7D
,
0x32
,
0x54
,
0x6F
,
0xF6
,
0x1D
,
0x6B
,
0xA9
,
0x6B
,
0x00
,
0x93
,
0xFF
,
0x1E
,
0x00
,
0x8C
,
0xFB
,
0x00
,
0x00
,
0x8C
,
0xFB
,
0x00
,
0x2A
,
0x5D
,
0x85
,
0x00
,
0x46
,
0x3D
,
0x36
,
0x3A
,
0x43
,
0x41
,
0x3F
,
0xF3
,
0x45
,
0x3F
,
0x3A
,
0x58
,
0x26
,
0x62
,
0x91
,
0x00
,
0x00
,
0x8D
,
0xFD
,
0x00
,
0x26
,
0x62
,
0x91
,
0x00
,
0x45
,
0x3F
,
0x3A
,
0x58
,
0x43
,
0x41
,
0x3F
,
0xF3
,
0x46
,
0x3D
,
0x36
,
0x3A
,
0x2A
,
0x5D
,
0x85
,
0x00
,
0x00
,
0x8C
,
0xFB
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x42
,
0x42
,
0x42
,
0x00
,
0x42
,
0x42
,
0x42
,
0x27
,
0x42
,
0x42
,
0x42
,
0xE9
,
0x42
,
0x42
,
0x42
,
0x94
,
0x42
,
0x42
,
0x42
,
0x01
,
0x42
,
0x42
,
0x42
,
0x00
,
0x42
,
0x42
,
0x42
,
0x01
,
0x42
,
0x42
,
0x42
,
0x94
,
0x42
,
0x42
,
0x42
,
0xE9
,
0x42
,
0x42
,
0x42
,
0x27
,
0x42
,
0x42
,
0x42
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x42
,
0x42
,
0x42
,
0x00
,
0x42
,
0x42
,
0x42
,
0x04
,
0x42
,
0x42
,
0x42
,
0x96
,
0x42
,
0x42
,
0x42
,
0xF5
,
0x42
,
0x42
,
0x42
,
0x8E
,
0x42
,
0x42
,
0x42
,
0x53
,
0x42
,
0x42
,
0x42
,
0x8E
,
0x42
,
0x42
,
0x42
,
0xF5
,
0x42
,
0x42
,
0x42
,
0x96
,
0x42
,
0x42
,
0x42
,
0x04
,
0x42
,
0x42
,
0x42
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x42
,
0x42
,
0x42
,
0x00
,
0x42
,
0x42
,
0x42
,
0x00
,
0x42
,
0x42
,
0x42
,
0x16
,
0x42
,
0x42
,
0x42
,
0x96
,
0x42
,
0x42
,
0x42
,
0xE9
,
0x42
,
0x42
,
0x42
,
0xF3
,
0x42
,
0x42
,
0x42
,
0xE9
,
0x42
,
0x42
,
0x42
,
0x96
,
0x42
,
0x42
,
0x42
,
0x16
,
0x42
,
0x42
,
0x42
,
0x00
,
0x42
,
0x42
,
0x42
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x42
,
0x42
,
0x42
,
0x00
,
0x42
,
0x42
,
0x42
,
0x00
,
0x42
,
0x42
,
0x42
,
0x00
,
0x42
,
0x42
,
0x42
,
0x05
,
0x42
,
0x42
,
0x42
,
0x31
,
0x42
,
0x42
,
0x42
,
0x4B
,
0x42
,
0x42
,
0x42
,
0x31
,
0x42
,
0x42
,
0x42
,
0x05
,
0x42
,
0x42
,
0x42
,
0x00
,
0x42
,
0x42
,
0x42
,
0x00
,
0x42
,
0x42
,
0x42
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x80
,
0x08
,
0x00
,
0x00
,
0x80
,
0x08
,
0x00
,
0x00
,
0x80
,
0x08
,
0x00
,
0x00
,
0x80
,
0x08
,
0x00
,
0x00
};
void
*
get_secure_icon_raw_data
(
int
*
len
)
{
*
len
=
(
int
)
sizeof
(
secure_icon_hexData
);
return
secure_icon_hexData
;
}
LinuxGUI/Ventoy2Disk/QT/ventoy2diskwindow.cpp
0 → 100644
View file @
d1481392
#include "ventoy2diskwindow.h"
#include "ui_ventoy2diskwindow.h"
#include "partcfgdialog.h"
#include <QMessageBox>
extern
"C"
{
#include "ventoy_define.h"
#include "ventoy_util.h"
#include "ventoy_disk.h"
#include "ventoy_json.h"
#include "ventoy_http.h"
#include "ventoy_qt.h"
}
MyQThread
::
MyQThread
(
QObject
*
parent
)
:
QThread
(
parent
)
{
m_index
=
-
1
;
m_type
=
0
;
m_running
=
false
;
}
void
MyQThread
::
install_run
()
{
int
ret
=
0
;
int
pos
=
0
;
int
buflen
=
0
;
int
percent
=
0
;
char
buf
[
1024
];
char
dec
[
64
];
char
out
[
256
];
char
disk_name
[
32
];
ventoy_disk
*
cur
;
vlog
(
"install run %d ...
\n
"
,
m_index
);
cur
=
g_disk_list
+
m_index
;
snprintf
(
disk_name
,
sizeof
(
disk_name
),
"%s"
,
cur
->
disk_name
);
snprintf
(
dec
,
sizeof
(
dec
),
"%llu"
,
(
unsigned
long
long
)
m_reserve_space
);
buflen
=
sizeof
(
buf
);
VTOY_JSON_FMT_BEGIN
(
pos
,
buf
,
buflen
);
VTOY_JSON_FMT_OBJ_BEGIN
();
VTOY_JSON_FMT_STRN
(
"method"
,
"install"
);
VTOY_JSON_FMT_STRN
(
"disk"
,
disk_name
);
VTOY_JSON_FMT_STRN
(
"reserve_space"
,
dec
);
VTOY_JSON_FMT_UINT
(
"partstyle"
,
ventoy_code_get_cur_part_style
());
VTOY_JSON_FMT_UINT
(
"secure_boot"
,
m_secureboot
);
VTOY_JSON_FMT_UINT
(
"align_4kb"
,
m_align4K
);
VTOY_JSON_FMT_OBJ_END
();
VTOY_JSON_FMT_END
(
pos
);
out
[
0
]
=
0
;
ventoy_func_handler
(
buf
,
out
,
sizeof
(
out
));
vlog
(
"func handler install <%s>
\n
"
,
out
);
if
(
strstr
(
out
,
"success"
))
{
while
(
percent
!=
100
)
{
percent
=
ventoy_code_get_percent
();
emit
thread_event
(
THREAD_MSG_PROGRESS_BAR
,
percent
);
msleep
(
50
);
}
ret
=
ventoy_code_get_result
();
ventoy_code_refresh_device
();
cur
=
NULL
;
}
else
{
ret
=
1
;
}
emit
thread_event
(
THREAD_MSG_INSTALL_FINISH
,
ret
);
m_running
=
false
;
}
void
MyQThread
::
update_run
()
{
int
ret
=
0
;
int
percent
=
0
;
char
buf
[
1024
];
char
out
[
256
];
char
disk_name
[
32
];
ventoy_disk
*
cur
;
vlog
(
"install run %d ...
\n
"
,
m_index
);
cur
=
g_disk_list
+
m_index
;
snprintf
(
disk_name
,
sizeof
(
disk_name
),
"%s"
,
cur
->
disk_name
);
snprintf
(
buf
,
sizeof
(
buf
),
"{
\"
method
\"
:
\"
update
\"
,
\"
disk
\"
:
\"
%s
\"
,
\"
secure_boot
\"
:%d}"
,
disk_name
,
m_secureboot
);
out
[
0
]
=
0
;
ventoy_func_handler
(
buf
,
out
,
sizeof
(
out
));
vlog
(
"func handler update <%s>
\n
"
,
out
);
if
(
strstr
(
out
,
"success"
))
{
while
(
percent
!=
100
)
{
percent
=
ventoy_code_get_percent
();
emit
thread_event
(
THREAD_MSG_PROGRESS_BAR
,
percent
);
msleep
(
50
);
}
ret
=
ventoy_code_get_result
();
ventoy_code_refresh_device
();
cur
=
NULL
;
}
else
{
ret
=
1
;
}
emit
thread_event
(
THREAD_MSG_UPDATE_FINISH
,
ret
);
m_running
=
false
;
}
void
MyQThread
::
run
()
{
if
(
THREAD_TYPE_INSTALL
==
m_type
)
{
install_run
();
}
else
if
(
THREAD_TYPE_UPDATE
==
m_type
)
{
update_run
();
}
else
{
}
}
Ventoy2DiskWindow
::
Ventoy2DiskWindow
(
QWidget
*
parent
)
:
QMainWindow
(
parent
)
,
ui
(
new
Ui
::
Ventoy2DiskWindow
)
{
m_partcfg
=
new
PartCfgDialog
();
m_part_group
=
new
QActionGroup
(
this
);
m_lang_group
=
new
QActionGroup
(
this
);
m_thread
=
new
MyQThread
(
this
);
ui
->
setupUi
(
this
);
}
Ventoy2DiskWindow
::~
Ventoy2DiskWindow
()
{
delete
m_partcfg
;
delete
m_part_group
;
delete
m_lang_group
;
delete
m_thread
;
delete
ui
;
}
bool
LangCompare
(
const
QString
&
s1
,
const
QString
&
s2
)
{
if
(
true
==
s1
.
startsWith
(
"Chinese Simplified"
)
&&
false
==
s2
.
startsWith
(
"Chinese Simplified"
))
{
return
true
;
}
else
if
(
false
==
s1
.
startsWith
(
"Chinese Simplified"
)
&&
true
==
s2
.
startsWith
(
"Chinese Simplified"
))
{
return
false
;
}
else
{
return
s1
<
s2
;
}
}
int
Ventoy2DiskWindow
::
lang_string
(
const
QString
&
id
,
QString
&
str
)
{
QString
cur
=
ventoy_code_get_cur_language
();
for
(
QJsonArray
::
iterator
p
=
m_lang_array
.
begin
();
p
!=
m_lang_array
.
end
();
p
++
)
{
if
(
p
->
toObject
().
value
(
"name"
)
==
cur
)
{
str
=
p
->
toObject
().
value
(
id
).
toString
();
str
=
str
.
replace
(
"#@"
,
"
\r\n
"
);
return
0
;
}
}
return
1
;
}
void
Ventoy2DiskWindow
::
update_ui_language
()
{
QString
dev
;
QJsonObject
obj
;
QString
cur
=
ventoy_code_get_cur_language
();
for
(
QJsonArray
::
iterator
p
=
m_lang_array
.
begin
();
p
!=
m_lang_array
.
end
();
p
++
)
{
if
(
p
->
toObject
().
value
(
"name"
)
==
cur
)
{
obj
=
p
->
toObject
();
break
;
}
}
ui
->
menuOption
->
setTitle
(
_LANG_STR
(
"STR_MENU_OPTION"
));
ui
->
actionSecure_Boot_Support
->
setText
(
_LANG_STR
(
"STR_MENU_SECURE_BOOT"
));
ui
->
menuPartition_Style
->
setTitle
(
_LANG_STR
(
"STR_MENU_PART_STYLE"
));
ui
->
actionPartition_Configuration
->
setText
(
_LANG_STR
(
"STR_MENU_PART_CFG"
));
ui
->
actionClear_Ventoy
->
setText
(
_LANG_STR
(
"STR_MENU_CLEAR"
));
ui
->
actionShow_All_Devices
->
setText
(
_LANG_STR
(
"STR_SHOW_ALL_DEV"
));
dev
=
_LANG_STR
(
"STR_DEVICE"
);
if
(
m_partcfg
->
reserve
)
{
QString
str
;
str
.
sprintf
(
" [ -%lld%s ]"
,
(
long
long
)
m_partcfg
->
resvalue
,
m_partcfg
->
unit
?
"GB"
:
"MB"
);
ui
->
groupBoxDevice
->
setTitle
(
dev
+
str
);
}
else
{
ui
->
groupBoxDevice
->
setTitle
(
dev
);
}
ui
->
groupBoxVentoyLocal
->
setTitle
(
_LANG_STR
(
"STR_LOCAL_VER"
));
ui
->
groupBoxVentoyDevice
->
setTitle
(
_LANG_STR
(
"STR_DISK_VER"
));
ui
->
groupBoxStatus
->
setTitle
(
_LANG_STR
(
"STR_STATUS"
));
ui
->
ButtonInstall
->
setText
(
_LANG_STR
(
"STR_INSTALL"
));
ui
->
ButtonUpdate
->
setText
(
_LANG_STR
(
"STR_UPDATE"
));
m_partcfg
->
update_language_ui
(
obj
);
m_partcfg
->
setWindowTitle
(
_LANG_STR
(
"STR_MENU_PART_CFG"
));
}
void
Ventoy2DiskWindow
::
lang_check_action
(
QAction
*
act
)
{
ventoy_code_set_cur_language
(
act
->
text
().
toStdString
().
c_str
());
update_ui_language
();
}
void
Ventoy2DiskWindow
::
LoadLanguages
()
{
QString
curlang
=
ventoy_code_get_cur_language
();
if
(
curlang
.
isEmpty
())
{
QString
LANG
=
qgetenv
(
"LANG"
);
if
(
LANG
.
startsWith
(
"zh_CN"
))
{
ventoy_code_set_cur_language
(
"Chinese Simplified (简体中文)"
);
}
else
{
ventoy_code_set_cur_language
(
"English (English)"
);
}
curlang
=
ventoy_code_get_cur_language
();
}
QFile
inFile
(
"./tool/languages.json"
);
inFile
.
open
(
QIODevice
::
ReadOnly
|
QIODevice
::
Text
);
QByteArray
data
=
inFile
.
readAll
();
inFile
.
close
();
QJsonParseError
errorPtr
;
QJsonDocument
doc
=
QJsonDocument
::
fromJson
(
data
,
&
errorPtr
);
m_lang_array
=
doc
.
array
();
QVector
<
QString
>
List
;
for
(
QJsonArray
::
iterator
p
=
m_lang_array
.
begin
();
p
!=
m_lang_array
.
end
();
p
++
)
{
List
.
push_back
(
p
->
toObject
().
value
(
"name"
).
toString
());
}
connect
(
m_lang_group
,
SIGNAL
(
triggered
(
QAction
*
)),
this
,
SLOT
(
lang_check_action
(
QAction
*
)));
std
::
sort
(
List
.
begin
(),
List
.
end
(),
LangCompare
);
for
(
QVector
<
QString
>::
iterator
p
=
List
.
begin
();
p
!=
List
.
end
();
p
++
)
{
QAction
*
action
=
new
QAction
(
*
p
,
m_lang_group
);
action
->
setCheckable
(
true
);
if
(
p
->
compare
(
curlang
)
==
0
)
{
action
->
setChecked
(
true
);
m_lang_group
->
triggered
(
action
);
}
ui
->
menuLanguage
->
addAction
(
action
);
}
}
void
Ventoy2DiskWindow
::
part_style_check_action
(
QAction
*
action
)
{
int
style
=
0
;
if
(
action
->
text
()
==
"MBR"
)
{
style
=
0
;
ui
->
labelVentoyLocalPartStyle
->
setText
(
"MBR"
);
}
else
{
style
=
1
;
ui
->
labelVentoyLocalPartStyle
->
setText
(
"GPT"
);
}
if
(
style
!=
ventoy_code_get_cur_part_style
())
{
ventoy_code_set_cur_part_style
(
style
);
}
}
static
ventoy_disk
*
select_active_dev
(
const
QString
&
select
,
int
*
activeid
)
{
int
i
;
int
alldev
=
ventoy_code_get_cur_show_all
();
ventoy_disk
*
cur
=
NULL
;
/* find the match one */
if
(
!
select
.
isEmpty
())
{
for
(
i
=
0
;
i
<
g_disk_num
;
i
++
)
{
cur
=
g_disk_list
+
i
;
if
(
alldev
==
0
&&
cur
->
type
!=
VTOY_DEVICE_USB
)
{
continue
;
}
if
(
select
.
compare
(
cur
->
disk_name
)
==
0
)
{
*
activeid
=
i
;
return
cur
;
}
}
}
/* find the first one that installed with Ventoy */
for
(
i
=
0
;
i
<
g_disk_num
;
i
++
)
{
cur
=
g_disk_list
+
i
;
if
(
alldev
==
0
&&
cur
->
type
!=
VTOY_DEVICE_USB
)
{
continue
;
}
if
(
cur
->
vtoydata
.
ventoy_valid
)
{
*
activeid
=
i
;
return
cur
;
}
}
/* find the first USB interface device */
for
(
i
=
0
;
i
<
g_disk_num
;
i
++
)
{
cur
=
g_disk_list
+
i
;
if
(
alldev
==
0
&&
cur
->
type
!=
VTOY_DEVICE_USB
)
{
continue
;
}
if
(
cur
->
type
==
VTOY_DEVICE_USB
)
{
*
activeid
=
i
;
return
cur
;
}
}
/* use the first one */
for
(
i
=
0
;
i
<
g_disk_num
;
i
++
)
{
cur
=
g_disk_list
+
i
;
if
(
alldev
==
0
&&
cur
->
type
!=
VTOY_DEVICE_USB
)
{
continue
;
}
*
activeid
=
i
;
return
cur
;
}
return
NULL
;
}
void
Ventoy2DiskWindow
::
FillDeviceList
(
const
QString
&
select
)
{
int
active
;
int
count
=
0
;
int
alldev
=
ventoy_code_get_cur_show_all
();
ventoy_disk
*
cur
;
ui
->
comboBoxDevice
->
clear
();
for
(
int
i
=
0
;
i
<
g_disk_num
;
i
++
)
{
cur
=
g_disk_list
+
i
;
if
(
alldev
==
0
&&
cur
->
type
!=
VTOY_DEVICE_USB
)
{
continue
;
}
QString
item
;
item
.
sprintf
(
"%s [%s] %s"
,
cur
->
disk_name
,
cur
->
human_readable_size
,
cur
->
disk_model
);
ui
->
comboBoxDevice
->
addItem
(
item
);
count
++
;
}
cur
=
select_active_dev
(
select
,
&
active
);
if
(
cur
)
{
vlog
(
"combox count:%d, active:%s id:%d
\n
"
,
count
,
cur
->
disk_name
,
active
);
ui
->
ButtonInstall
->
setEnabled
(
true
);
ui
->
ButtonUpdate
->
setEnabled
(
cur
->
vtoydata
.
ventoy_valid
);
ui
->
comboBoxDevice
->
setCurrentIndex
(
active
);
}
else
{
vlog
(
"combox count:%d, no active id
\n
"
,
count
);
ui
->
ButtonInstall
->
setEnabled
(
false
);
ui
->
ButtonUpdate
->
setEnabled
(
false
);
}
}
void
Ventoy2DiskWindow
::
OnInitWindow
(
void
)
{
int
len
;
const
uchar
*
data
;
QIcon
icon
;
QPixmap
pix1
;
QPixmap
pix2
;
char
ver
[
512
];
ui
->
labelVentoyLocalSecure
->
hide
();
m_part_group
->
addAction
(
ui
->
actionMBR
);
m_part_group
->
addAction
(
ui
->
actionGPT
);
connect
(
m_part_group
,
SIGNAL
(
triggered
(
QAction
*
)),
this
,
SLOT
(
part_style_check_action
(
QAction
*
)));
if
(
ventoy_code_get_cur_part_style
())
{
ui
->
actionGPT
->
setChecked
(
true
);
m_part_group
->
triggered
(
ui
->
actionGPT
);
}
else
{
ui
->
actionMBR
->
setChecked
(
true
);
m_part_group
->
triggered
(
ui
->
actionMBR
);
}
snprintf
(
ver
,
sizeof
(
ver
),
VERSION_FMT
,
ventoy_get_local_version
());
ui
->
labelVentoyLocalVer
->
setText
(
QApplication
::
translate
(
"Ventoy2DiskWindow"
,
ver
,
nullptr
));
LoadLanguages
();
data
=
(
const
uchar
*
)
get_refresh_icon_raw_data
(
&
len
);
pix1
.
loadFromData
(
data
,
len
);
icon
.
addPixmap
(
pix1
);
ui
->
ButtonRefresh
->
setIcon
(
icon
);
data
=
(
const
uchar
*
)
get_secure_icon_raw_data
(
&
len
);
pix2
.
loadFromData
(
data
,
len
);
ui
->
labelVentoyLocalSecure
->
setPixmap
(
pix2
);
ui
->
labelVentoyDeviceSecure
->
setPixmap
(
pix2
);
ui
->
labelVentoyDeviceSecure
->
setHidden
(
true
);
ui
->
labelVentoyDeviceVer
->
setText
(
""
);
ui
->
labelVentoyDevicePartStyle
->
setText
(
""
);
ui
->
actionShow_All_Devices
->
setChecked
(
ventoy_code_get_cur_show_all
());
connect
(
m_thread
,
&
MyQThread
::
thread_event
,
this
,
&
Ventoy2DiskWindow
::
thread_event
);
FillDeviceList
(
""
);
}
void
Ventoy2DiskWindow
::
showEvent
(
QShowEvent
*
ev
)
{
QMainWindow
::
showEvent
(
ev
);
OnInitWindow
();
}
void
Ventoy2DiskWindow
::
on_ButtonInstall_clicked
()
{
int
index
;
quint64
size
=
0
,
space
=
0
;
ventoy_disk
*
cur
;
QString
title_warn
,
title_err
,
msg
;
lang_string
(
"STR_ERROR"
,
title_err
);
lang_string
(
"STR_WARNING"
,
title_warn
);
if
(
m_thread
->
m_running
||
ventoy_code_is_busy
())
{
lang_string
(
"STR_WAIT_PROCESS"
,
msg
);
QMessageBox
::
warning
(
NULL
,
title_warn
,
msg
);
return
;
}
index
=
ui
->
comboBoxDevice
->
currentIndex
();
if
(
index
<
0
||
index
>
g_disk_num
)
{
vlog
(
"Invalid combobox current index %d
\n
"
,
index
);
return
;
}
cur
=
g_disk_list
+
index
;
if
(
ventoy_code_get_cur_part_style
()
==
0
&&
cur
->
size_in_byte
>
2199023255552ULL
)
{
lang_string
(
"STR_DISK_2TB_MBR_ERROR"
,
msg
);
QMessageBox
::
critical
(
NULL
,
title_err
,
msg
);
return
;
}
if
(
m_partcfg
->
reserve
)
{
size
=
cur
->
size_in_byte
/
SIZE_1MB
;
space
=
m_partcfg
->
resvalue
;
if
(
m_partcfg
->
unit
==
1
)
{
space
=
m_partcfg
->
resvalue
*
1024
;
}
if
(
size
<=
space
||
(
size
-
space
)
<=
VTOYEFI_PART_BYTES
/
SIZE_1MB
)
{
lang_string
(
"STR_SPACE_VAL_INVALID"
,
msg
);
QMessageBox
::
critical
(
NULL
,
title_err
,
msg
);
vlog
(
"reserved space too big.
\n
"
);
return
;
}
}
lang_string
(
"STR_INSTALL_TIP"
,
msg
);
if
(
QMessageBox
::
Yes
!=
QMessageBox
::
warning
(
NULL
,
title_warn
,
msg
,
QMessageBox
::
Yes
|
QMessageBox
::
No
,
QMessageBox
::
No
))
{
return
;
}
lang_string
(
"STR_INSTALL_TIP2"
,
msg
);
if
(
QMessageBox
::
Yes
!=
QMessageBox
::
warning
(
NULL
,
title_warn
,
msg
,
QMessageBox
::
Yes
|
QMessageBox
::
No
,
QMessageBox
::
No
))
{
return
;
}
ui
->
ButtonRefresh
->
setEnabled
(
false
);
ui
->
ButtonInstall
->
setEnabled
(
false
);
ui
->
ButtonRefresh
->
setEnabled
(
false
);
m_thread
->
m_type
=
THREAD_TYPE_INSTALL
;
m_thread
->
m_index
=
index
;
m_thread
->
m_reserve_space
=
space
*
SIZE_1MB
;
m_thread
->
m_secureboot
=
ui
->
actionSecure_Boot_Support
->
isChecked
();
m_thread
->
m_align4K
=
m_partcfg
->
align
;
m_thread
->
m_running
=
true
;
m_thread
->
start
();
}
void
Ventoy2DiskWindow
::
on_ButtonUpdate_clicked
()
{
int
index
;
ventoy_disk
*
cur
;
QString
title_info
,
title_warn
,
title_err
,
msg
;
lang_string
(
"STR_ERROR"
,
title_err
);
lang_string
(
"STR_WARNING"
,
title_warn
);
lang_string
(
"STR_INFO"
,
title_info
);
if
(
m_thread
->
m_running
||
ventoy_code_is_busy
())
{
lang_string
(
"STR_WAIT_PROCESS"
,
msg
);
QMessageBox
::
warning
(
NULL
,
title_warn
,
msg
);
return
;
}
index
=
ui
->
comboBoxDevice
->
currentIndex
();
if
(
index
<
0
||
index
>
g_disk_num
)
{
vlog
(
"Invalid combobox current index %d
\n
"
,
index
);
return
;
}
cur
=
g_disk_list
+
index
;
if
(
cur
->
vtoydata
.
ventoy_valid
==
0
)
{
vlog
(
"invalid ventoy version"
);
return
;
}
lang_string
(
"STR_UPDATE_TIP"
,
msg
);
if
(
QMessageBox
::
Yes
!=
QMessageBox
::
information
(
NULL
,
title_info
,
msg
,
QMessageBox
::
Yes
|
QMessageBox
::
No
,
QMessageBox
::
No
))
{
return
;
}
ui
->
ButtonRefresh
->
setEnabled
(
false
);
ui
->
ButtonInstall
->
setEnabled
(
false
);
ui
->
ButtonRefresh
->
setEnabled
(
false
);
m_thread
->
m_type
=
THREAD_TYPE_UPDATE
;
m_thread
->
m_index
=
index
;
m_thread
->
m_secureboot
=
ui
->
actionSecure_Boot_Support
->
isChecked
();
m_thread
->
m_running
=
true
;
m_thread
->
start
();
}
void
Ventoy2DiskWindow
::
on_ButtonRefresh_clicked
()
{
QString
title_warn
,
msg
;
if
(
m_thread
->
m_running
||
ventoy_code_is_busy
())
{
lang_string
(
"STR_WARNING"
,
title_warn
);
lang_string
(
"STR_WAIT_PROCESS"
,
msg
);
QMessageBox
::
warning
(
NULL
,
title_warn
,
msg
);
return
;
}
ventoy_code_refresh_device
();
FillDeviceList
(
""
);
}
void
Ventoy2DiskWindow
::
on_comboBoxDevice_currentIndexChanged
(
int
index
)
{
char
ver
[
512
];
ventoy_disk
*
cur
;
ui
->
labelVentoyDeviceSecure
->
setHidden
(
true
);
ui
->
labelVentoyDeviceVer
->
setText
(
""
);
ui
->
labelVentoyDevicePartStyle
->
setText
(
""
);
if
(
index
<
0
||
index
>
g_disk_num
)
{
vlog
(
"invalid combobox index %d
\n
"
,
index
);
return
;
}
cur
=
g_disk_list
+
index
;
if
(
cur
->
vtoydata
.
ventoy_valid
)
{
if
(
cur
->
vtoydata
.
secure_boot_flag
)
{
ui
->
labelVentoyDeviceSecure
->
setHidden
(
false
);
}
else
{
ui
->
labelVentoyDeviceSecure
->
setHidden
(
true
);
}
if
((
int
)(
ui
->
actionSecure_Boot_Support
->
isChecked
())
!=
cur
->
vtoydata
.
secure_boot_flag
)
{
ui
->
actionSecure_Boot_Support
->
trigger
();
}
snprintf
(
ver
,
sizeof
(
ver
),
VERSION_FMT
,
cur
->
vtoydata
.
ventoy_ver
);
ui
->
labelVentoyDeviceVer
->
setText
(
QApplication
::
translate
(
"Ventoy2DiskWindow"
,
ver
,
nullptr
));
ui
->
labelVentoyDevicePartStyle
->
setText
(
cur
->
vtoydata
.
partition_style
?
"GPT"
:
"MBR"
);
}
else
{
if
(
ui
->
actionSecure_Boot_Support
->
isChecked
())
{
ui
->
actionSecure_Boot_Support
->
trigger
();
}
}
}
void
Ventoy2DiskWindow
::
on_actionPartition_Configuration_triggered
()
{
m_partcfg
->
update_ui_status
();
if
(
QDialog
::
Accepted
==
m_partcfg
->
exec
())
{
QString
str
;
QString
dev
;
lang_string
(
"STR_DEVICE"
,
dev
);
if
(
m_partcfg
->
reserve
)
{
str
.
sprintf
(
" [ -%lld%s ]"
,
(
long
long
)
m_partcfg
->
resvalue
,
m_partcfg
->
unit
?
"GB"
:
"MB"
);
ui
->
groupBoxDevice
->
setTitle
(
dev
+
str
);
}
else
{
ui
->
groupBoxDevice
->
setTitle
(
dev
);
}
}
}
void
Ventoy2DiskWindow
::
on_actionClear_Ventoy_triggered
()
{
int
ret
;
int
index
;
ventoy_disk
*
cur
;
QString
title_err
,
title_warn
,
title_info
,
msg
;
char
disk_name
[
64
];
char
buf
[
256
];
char
out
[
256
];
lang_string
(
"STR_ERROR"
,
title_err
);
lang_string
(
"STR_WARNING"
,
title_warn
);
lang_string
(
"STR_INFO"
,
title_info
);
if
(
m_thread
->
m_running
||
ventoy_code_is_busy
())
{
lang_string
(
"STR_WAIT_PROCESS"
,
msg
);
QMessageBox
::
warning
(
NULL
,
title_warn
,
msg
);
return
;
}
index
=
ui
->
comboBoxDevice
->
currentIndex
();
if
(
index
<
0
||
index
>
g_disk_num
)
{
vlog
(
"Invalid combobox current index %d
\n
"
,
index
);
return
;
}
cur
=
g_disk_list
+
index
;
lang_string
(
"STR_INSTALL_TIP"
,
msg
);
if
(
QMessageBox
::
Yes
!=
QMessageBox
::
warning
(
NULL
,
title_warn
,
msg
,
QMessageBox
::
Yes
|
QMessageBox
::
No
,
QMessageBox
::
No
))
{
return
;
}
lang_string
(
"STR_INSTALL_TIP2"
,
msg
);
if
(
QMessageBox
::
Yes
!=
QMessageBox
::
warning
(
NULL
,
title_warn
,
msg
,
QMessageBox
::
Yes
|
QMessageBox
::
No
,
QMessageBox
::
No
))
{
return
;
}
snprintf
(
disk_name
,
sizeof
(
disk_name
),
"%s"
,
cur
->
disk_name
);
snprintf
(
buf
,
sizeof
(
buf
),
"{
\"
method
\"
:
\"
clean
\"
,
\"
disk
\"
:
\"
%s
\"
}"
,
disk_name
);
out
[
0
]
=
0
;
ventoy_func_handler
(
buf
,
out
,
sizeof
(
out
));
vlog
(
"func handler clean <%s>
\n
"
,
out
);
if
(
strstr
(
out
,
"success"
))
{
ret
=
ventoy_code_get_result
();
ventoy_code_refresh_device
();
cur
=
NULL
;
}
else
{
ret
=
1
;
}
if
(
ret
==
0
)
{
lang_string
(
"STR_CLEAR_SUCCESS"
,
msg
);
QMessageBox
::
information
(
NULL
,
title_info
,
msg
);
}
else
{
lang_string
(
"STR_CLEAR_FAILED"
,
msg
);
QMessageBox
::
critical
(
NULL
,
title_err
,
msg
);
}
FillDeviceList
(
disk_name
);
}
void
Ventoy2DiskWindow
::
on_actionShow_All_Devices_toggled
(
bool
arg1
)
{
ventoy_code_set_cur_show_all
(
arg1
);
FillDeviceList
(
""
);
}
void
Ventoy2DiskWindow
::
closeEvent
(
QCloseEvent
*
event
)
{
vlog
(
"On closeEvent ...
\n
"
);
if
(
m_thread
->
m_running
)
{
QString
title
;
QString
msg
;
lang_string
(
"STR_WARNING"
,
title
);
lang_string
(
"STR_WAIT_PROCESS"
,
msg
);
QMessageBox
::
warning
(
NULL
,
title
,
msg
);
event
->
ignore
();
return
;
}
ventoy_code_save_cfg
();
event
->
accept
();
}
void
Ventoy2DiskWindow
::
on_actionSecure_Boot_Support_triggered
()
{
ui
->
labelVentoyLocalSecure
->
setHidden
(
!
(
ui
->
actionSecure_Boot_Support
->
isChecked
()));
}
void
Ventoy2DiskWindow
::
set_percent
(
int
percent
)
{
int
index
;
QString
status
,
radio
;
ui
->
progressBar
->
setValue
(
percent
);
lang_string
(
"STR_STATUS"
,
status
);
if
(
percent
==
0
)
{
ui
->
groupBoxStatus
->
setTitle
(
status
);
}
else
{
index
=
status
.
indexOf
(
"-"
);
radio
.
sprintf
(
"%d%%"
,
percent
);
ui
->
groupBoxStatus
->
setTitle
(
status
.
left
(
index
+
2
)
+
radio
);
}
}
void
Ventoy2DiskWindow
::
thread_event
(
int
msg
,
int
data
)
{
char
disk_name
[
32
];
QString
title_err
,
title_info
,
tipmsg
;
if
(
msg
==
THREAD_MSG_PROGRESS_BAR
)
{
set_percent
(
data
);
}
else
if
(
msg
==
THREAD_MSG_INSTALL_FINISH
)
{
lang_string
(
"STR_ERROR"
,
title_err
);
lang_string
(
"STR_INFO"
,
title_info
);
if
(
data
==
0
)
{
lang_string
(
"STR_INSTALL_SUCCESS"
,
tipmsg
);
QMessageBox
::
information
(
NULL
,
title_info
,
tipmsg
);
}
else
{
lang_string
(
"STR_INSTALL_FAILED"
,
tipmsg
);
QMessageBox
::
critical
(
NULL
,
title_err
,
tipmsg
);
}
set_percent
(
0
);
ui
->
ButtonRefresh
->
setEnabled
(
true
);
ui
->
ButtonInstall
->
setEnabled
(
true
);
ui
->
ButtonRefresh
->
setEnabled
(
true
);
snprintf
(
disk_name
,
sizeof
(
disk_name
),
"%s"
,
g_disk_list
[
m_thread
->
m_index
].
disk_name
);
FillDeviceList
(
disk_name
);
}
else
if
(
msg
==
THREAD_MSG_UPDATE_FINISH
)
{
lang_string
(
"STR_ERROR"
,
title_err
);
lang_string
(
"STR_INFO"
,
title_info
);
if
(
data
==
0
)
{
lang_string
(
"STR_UPDATE_SUCCESS"
,
tipmsg
);
QMessageBox
::
information
(
NULL
,
title_info
,
tipmsg
);
}
else
{
lang_string
(
"STR_UPDATE_FAILED"
,
tipmsg
);
QMessageBox
::
critical
(
NULL
,
title_err
,
tipmsg
);
}
set_percent
(
0
);
ui
->
ButtonRefresh
->
setEnabled
(
true
);
ui
->
ButtonInstall
->
setEnabled
(
true
);
ui
->
ButtonRefresh
->
setEnabled
(
true
);
snprintf
(
disk_name
,
sizeof
(
disk_name
),
"%s"
,
g_disk_list
[
m_thread
->
m_index
].
disk_name
);
FillDeviceList
(
disk_name
);
}
}
LinuxGUI/Ventoy2Disk/QT/ventoy2diskwindow.h
0 → 100644
View file @
d1481392
#ifndef VENTOY2DISKWINDOW_H
#define VENTOY2DISKWINDOW_H
#include <QMainWindow>
#include <QActionGroup>
#include <QJsonDocument>
#include <QFile>
#include <QJsonObject>
#include <QJsonArray>
#include <QVector>
#include <QtGlobal>
#include <QDebug>
#include <QCloseEvent>
#include <QThread>
#include "partcfgdialog.h"
QT_BEGIN_NAMESPACE
namespace
Ui
{
class
Ventoy2DiskWindow
;
}
QT_END_NAMESPACE
#define THREAD_TYPE_INSTALL 1
#define THREAD_TYPE_UPDATE 2
#define THREAD_MSG_PROGRESS_BAR 1
#define THREAD_MSG_INSTALL_FINISH 2
#define THREAD_MSG_UPDATE_FINISH 3
class
MyQThread
:
public
QThread
{
Q_OBJECT
public:
quint64
m_reserve_space
;
int
m_index
;
int
m_type
;
int
m_secureboot
;
int
m_align4K
;
bool
m_running
;
void
install_run
();
void
update_run
();
explicit
MyQThread
(
QObject
*
parent
=
nullptr
);
protected:
void
run
();
signals:
void
thread_event
(
int
msg
,
int
data
);
public
slots
:
};
class
Ventoy2DiskWindow
:
public
QMainWindow
{
Q_OBJECT
public:
Ventoy2DiskWindow
(
QWidget
*
parent
=
nullptr
);
~
Ventoy2DiskWindow
();
QActionGroup
*
m_part_group
;
QActionGroup
*
m_lang_group
;
QJsonArray
m_lang_array
;
PartCfgDialog
*
m_partcfg
;
MyQThread
*
m_thread
;
void
FillDeviceList
(
const
QString
&
select
);
void
OnInitWindow
(
void
);
void
LoadLanguages
();
int
lang_string
(
const
QString
&
id
,
QString
&
str
);
void
update_ui_language
();
void
set_percent
(
int
percent
);
protected:
void
showEvent
(
QShowEvent
*
ev
);
void
closeEvent
(
QCloseEvent
*
event
);
private
slots
:
void
thread_event
(
int
msg
,
int
data
);
void
part_style_check_action
(
QAction
*
act
);
void
lang_check_action
(
QAction
*
act
);
void
on_ButtonInstall_clicked
();
void
on_ButtonUpdate_clicked
();
void
on_ButtonRefresh_clicked
();
void
on_comboBoxDevice_currentIndexChanged
(
int
index
);
void
on_actionPartition_Configuration_triggered
();
void
on_actionClear_Ventoy_triggered
();
void
on_actionShow_All_Devices_toggled
(
bool
arg1
);
void
on_actionSecure_Boot_Support_triggered
();
private:
Ui
::
Ventoy2DiskWindow
*
ui
;
};
#define _LANG_STR(id) obj.value(id).toString()
#define VERSION_FMT "<html><head/><body><p><span style=\" font-size:20pt; font-weight:600; color:#ff0000;\">%s</span></p></body></html>"
#endif // VENTOY2DISKWINDOW_H
LinuxGUI/Ventoy2Disk/QT/ventoy2diskwindow.ui
0 → 100644
View file @
d1481392
<?xml version="1.0" encoding="UTF-8"?>
<ui
version=
"4.0"
>
<class>
Ventoy2DiskWindow
</class>
<widget
class=
"QMainWindow"
name=
"Ventoy2DiskWindow"
>
<property
name=
"geometry"
>
<rect>
<x>
0
</x>
<y>
0
</y>
<width>
441
</width>
<height>
367
</height>
</rect>
</property>
<property
name=
"windowTitle"
>
<string>
Ventoy2Disk
</string>
</property>
<widget
class=
"QWidget"
name=
"centralwidget"
>
<widget
class=
"QGroupBox"
name=
"groupBoxDevice"
>
<property
name=
"geometry"
>
<rect>
<x>
10
</x>
<y>
10
</y>
<width>
421
</width>
<height>
80
</height>
</rect>
</property>
<property
name=
"title"
>
<string>
Device
</string>
</property>
<widget
class=
"QComboBox"
name=
"comboBoxDevice"
>
<property
name=
"geometry"
>
<rect>
<x>
10
</x>
<y>
40
</y>
<width>
361
</width>
<height>
26
</height>
</rect>
</property>
</widget>
<widget
class=
"QPushButton"
name=
"ButtonRefresh"
>
<property
name=
"geometry"
>
<rect>
<x>
380
</x>
<y>
37
</y>
<width>
30
</width>
<height>
30
</height>
</rect>
</property>
<property
name=
"text"
>
<string/>
</property>
<property
name=
"icon"
>
<iconset>
<normaloff>
../refresh.ico
</normaloff>
../refresh.ico
</iconset>
</property>
<property
name=
"iconSize"
>
<size>
<width>
24
</width>
<height>
24
</height>
</size>
</property>
</widget>
</widget>
<widget
class=
"QGroupBox"
name=
"groupBoxVentoyLocal"
>
<property
name=
"geometry"
>
<rect>
<x>
10
</x>
<y>
100
</y>
<width>
205
</width>
<height>
80
</height>
</rect>
</property>
<property
name=
"title"
>
<string>
Ventoy In Package
</string>
</property>
<property
name=
"alignment"
>
<set>
Qt::AlignCenter
</set>
</property>
<widget
class=
"QLabel"
name=
"labelVentoyLocalVer"
>
<property
name=
"geometry"
>
<rect>
<x>
30
</x>
<y>
30
</y>
<width>
135
</width>
<height>
41
</height>
</rect>
</property>
<property
name=
"text"
>
<string>
<
html
><
head/
><
body
><
p
><
span style=
"
font-size:20pt; font-weight:600; color:#ff0000;
">
1.0.53
<
/span
><
/p
><
/body
><
/html
>
</string>
</property>
<property
name=
"alignment"
>
<set>
Qt::AlignCenter
</set>
</property>
</widget>
<widget
class=
"QLabel"
name=
"labelVentoyLocalPartStyle"
>
<property
name=
"geometry"
>
<rect>
<x>
172
</x>
<y>
60
</y>
<width>
31
</width>
<height>
18
</height>
</rect>
</property>
<property
name=
"text"
>
<string>
<
html
><
head/
><
body
><
p
>
MBR
<
/p
><
/body
><
/html
>
</string>
</property>
</widget>
<widget
class=
"QLabel"
name=
"labelVentoyLocalSecure"
>
<property
name=
"geometry"
>
<rect>
<x>
12
</x>
<y>
36
</y>
<width>
21
</width>
<height>
31
</height>
</rect>
</property>
<property
name=
"text"
>
<string/>
</property>
<property
name=
"pixmap"
>
<pixmap>
../secure.ico
</pixmap>
</property>
</widget>
</widget>
<widget
class=
"QGroupBox"
name=
"groupBoxVentoyDevice"
>
<property
name=
"geometry"
>
<rect>
<x>
225
</x>
<y>
100
</y>
<width>
205
</width>
<height>
80
</height>
</rect>
</property>
<property
name=
"title"
>
<string>
Ventoy In Device
</string>
</property>
<property
name=
"alignment"
>
<set>
Qt::AlignCenter
</set>
</property>
<widget
class=
"QLabel"
name=
"labelVentoyDeviceVer"
>
<property
name=
"geometry"
>
<rect>
<x>
30
</x>
<y>
30
</y>
<width>
135
</width>
<height>
41
</height>
</rect>
</property>
<property
name=
"text"
>
<string>
<
html
><
head/
><
body
><
p
><
span style=
"
font-size:20pt; font-weight:600; color:#ff0000;
">
1.0.52
<
/span
><
/p
><
/body
><
/html
>
</string>
</property>
<property
name=
"alignment"
>
<set>
Qt::AlignCenter
</set>
</property>
</widget>
<widget
class=
"QLabel"
name=
"labelVentoyDevicePartStyle"
>
<property
name=
"geometry"
>
<rect>
<x>
172
</x>
<y>
60
</y>
<width>
31
</width>
<height>
18
</height>
</rect>
</property>
<property
name=
"text"
>
<string>
<
html
><
head/
><
body
><
p
>
GPT
<
/p
><
/body
><
/html
>
</string>
</property>
</widget>
<widget
class=
"QLabel"
name=
"labelVentoyDeviceSecure"
>
<property
name=
"geometry"
>
<rect>
<x>
12
</x>
<y>
36
</y>
<width>
21
</width>
<height>
31
</height>
</rect>
</property>
<property
name=
"text"
>
<string/>
</property>
<property
name=
"pixmap"
>
<pixmap>
../secure.ico
</pixmap>
</property>
</widget>
</widget>
<widget
class=
"QGroupBox"
name=
"groupBoxStatus"
>
<property
name=
"geometry"
>
<rect>
<x>
10
</x>
<y>
190
</y>
<width>
421
</width>
<height>
61
</height>
</rect>
</property>
<property
name=
"title"
>
<string>
Status: REDAY
</string>
</property>
<widget
class=
"QProgressBar"
name=
"progressBar"
>
<property
name=
"geometry"
>
<rect>
<x>
10
</x>
<y>
30
</y>
<width>
401
</width>
<height>
23
</height>
</rect>
</property>
<property
name=
"value"
>
<number>
0
</number>
</property>
<property
name=
"textVisible"
>
<bool>
false
</bool>
</property>
<property
name=
"format"
>
<string/>
</property>
</widget>
</widget>
<widget
class=
"QPushButton"
name=
"ButtonInstall"
>
<property
name=
"geometry"
>
<rect>
<x>
90
</x>
<y>
275
</y>
<width>
101
</width>
<height>
41
</height>
</rect>
</property>
<property
name=
"text"
>
<string>
Install
</string>
</property>
</widget>
<widget
class=
"QPushButton"
name=
"ButtonUpdate"
>
<property
name=
"geometry"
>
<rect>
<x>
250
</x>
<y>
275
</y>
<width>
101
</width>
<height>
41
</height>
</rect>
</property>
<property
name=
"text"
>
<string>
Update
</string>
</property>
</widget>
</widget>
<widget
class=
"QMenuBar"
name=
"menubar"
>
<property
name=
"geometry"
>
<rect>
<x>
0
</x>
<y>
0
</y>
<width>
441
</width>
<height>
23
</height>
</rect>
</property>
<widget
class=
"QMenu"
name=
"menuOption"
>
<property
name=
"title"
>
<string>
Option
</string>
</property>
<widget
class=
"QMenu"
name=
"menuPartition_Style"
>
<property
name=
"title"
>
<string>
Partition Style
</string>
</property>
<addaction
name=
"actionMBR"
/>
<addaction
name=
"actionGPT"
/>
</widget>
<addaction
name=
"actionSecure_Boot_Support"
/>
<addaction
name=
"menuPartition_Style"
/>
<addaction
name=
"actionPartition_Configuration"
/>
<addaction
name=
"actionClear_Ventoy"
/>
<addaction
name=
"actionShow_All_Devices"
/>
</widget>
<widget
class=
"QMenu"
name=
"menuLanguage"
>
<property
name=
"title"
>
<string>
Language
</string>
</property>
</widget>
<addaction
name=
"menuOption"
/>
<addaction
name=
"menuLanguage"
/>
</widget>
<action
name=
"actionSecure_Boot_Support"
>
<property
name=
"checkable"
>
<bool>
true
</bool>
</property>
<property
name=
"text"
>
<string>
Secure Boot Support
</string>
</property>
</action>
<action
name=
"actionMBR"
>
<property
name=
"checkable"
>
<bool>
true
</bool>
</property>
<property
name=
"text"
>
<string>
MBR
</string>
</property>
</action>
<action
name=
"actionGPT"
>
<property
name=
"checkable"
>
<bool>
true
</bool>
</property>
<property
name=
"text"
>
<string>
GPT
</string>
</property>
</action>
<action
name=
"actionPartition_Configuration"
>
<property
name=
"text"
>
<string>
Partition Configuration
</string>
</property>
</action>
<action
name=
"actionClear_Ventoy"
>
<property
name=
"text"
>
<string>
Clear Ventoy
</string>
</property>
</action>
<action
name=
"actionShow_All_Devices"
>
<property
name=
"checkable"
>
<bool>
true
</bool>
</property>
<property
name=
"text"
>
<string>
Show All Devices
</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>
LinuxGUI/Ventoy2Disk/QT/ventoy_qt.h
0 → 100644
View file @
d1481392
/******************************************************************************
* ventoy_qt.h
*
* Copyright (c) 2021, longpanda <admin@ventoy.net>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef __VENTOY_QT_H__
#define __VENTOY_QT_H__
int
ventoy_disk_init
(
void
);
void
ventoy_disk_exit
(
void
);
int
ventoy_http_init
(
void
);
void
ventoy_http_exit
(
void
);
int
ventoy_log_init
(
void
);
void
ventoy_log_exit
(
void
);
void
*
get_refresh_icon_raw_data
(
int
*
len
);
void
*
get_secure_icon_raw_data
(
int
*
len
);
void
*
get_window_icon_raw_data
(
int
*
len
);
int
ventoy_func_handler
(
const
char
*
jsonstr
,
char
*
jsonbuf
,
int
buflen
);
const
char
*
ventoy_code_get_cur_language
(
void
);
int
ventoy_code_get_cur_part_style
(
void
);
void
ventoy_code_set_cur_part_style
(
int
style
);
int
ventoy_code_get_cur_show_all
(
void
);
void
ventoy_code_set_cur_show_all
(
int
show_all
);
void
ventoy_code_set_cur_language
(
const
char
*
lang
);
void
ventoy_code_save_cfg
(
void
);
void
ventoy_code_refresh_device
(
void
);
int
ventoy_code_is_busy
(
void
);
int
ventoy_code_get_percent
(
void
);
int
ventoy_code_get_result
(
void
);
#endif
/* __VENTOY_QT_H__ */
LinuxGUI/Ventoy2Disk/QT/ventoy_qt_stub.c
0 → 100644
View file @
d1481392
/******************************************************************************
* ventoy_qt_stub.c
*
* Copyright (c) 2021, longpanda <admin@ventoy.net>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <stdarg.h>
#include <errno.h>
#include <time.h>
#include <unistd.h>
#include <linux/limits.h>
#include <pthread.h>
#include <ventoy_define.h>
#include <ventoy_json.h>
#include <ventoy_util.h>
#include <ventoy_disk.h>
#include <ventoy_http.h>
struct
mg_context
*
mg_start
(
const
struct
mg_callbacks
*
callbacks
,
void
*
user_data
,
const
char
**
options
)
{
(
void
)
callbacks
;
(
void
)
user_data
;
(
void
)
options
;
return
NULL
;
}
void
mg_stop
(
struct
mg_context
*
ctx
)
{
(
void
)
ctx
;
}
int
mg_read
(
struct
mg_connection
*
conn
,
void
*
buf
,
size_t
len
)
{
(
void
)
conn
;
(
void
)
buf
;
(
void
)
len
;
return
0
;
}
const
struct
mg_request_info
*
mg_get_request_info
(
const
struct
mg_connection
*
conn
)
{
(
void
)
conn
;
return
NULL
;
}
int
mg_start_thread
(
mg_thread_func_t
func
,
void
*
param
)
{
pthread_t
thread_id
;
pthread_attr_t
attr
;
int
result
;
(
void
)
pthread_attr_init
(
&
attr
);
(
void
)
pthread_attr_setdetachstate
(
&
attr
,
PTHREAD_CREATE_DETACHED
);
#if defined(USE_STACK_SIZE) && (USE_STACK_SIZE > 1)
/* Compile-time option to control stack size,
* e.g. -DUSE_STACK_SIZE=16384 */
(
void
)
pthread_attr_setstacksize
(
&
attr
,
USE_STACK_SIZE
);
#endif
/* defined(USE_STACK_SIZE) && (USE_STACK_SIZE > 1) */
result
=
pthread_create
(
&
thread_id
,
&
attr
,
func
,
param
);
pthread_attr_destroy
(
&
attr
);
return
result
;
}
int
mg_printf
(
struct
mg_connection
*
conn
,
const
char
*
fmt
,
...)
{
(
void
)
conn
;
(
void
)
fmt
;
return
0
;
}
static
unsigned
char
window_icon_hexData
[]
=
{
0x89
,
0x50
,
0x4E
,
0x47
,
0x0D
,
0x0A
,
0x1A
,
0x0A
,
0x00
,
0x00
,
0x00
,
0x0D
,
0x49
,
0x48
,
0x44
,
0x52
,
0x00
,
0x00
,
0x00
,
0x40
,
0x00
,
0x00
,
0x00
,
0x40
,
0x08
,
0x06
,
0x00
,
0x00
,
0x00
,
0xAA
,
0x69
,
0x71
,
0xDE
,
0x00
,
0x00
,
0x00
,
0x04
,
0x67
,
0x41
,
0x4D
,
0x41
,
0x00
,
0x00
,
0xAF
,
0xC8
,
0x37
,
0x05
,
0x8A
,
0xE9
,
0x00
,
0x00
,
0x00
,
0x20
,
0x63
,
0x48
,
0x52
,
0x4D
,
0x00
,
0x00
,
0x7A
,
0x26
,
0x00
,
0x00
,
0x80
,
0x84
,
0x00
,
0x00
,
0xFA
,
0x00
,
0x00
,
0x00
,
0x80
,
0xE8
,
0x00
,
0x00
,
0x75
,
0x30
,
0x00
,
0x00
,
0xEA
,
0x60
,
0x00
,
0x00
,
0x3A
,
0x98
,
0x00
,
0x00
,
0x17
,
0x70
,
0x9C
,
0xBA
,
0x51
,
0x3C
,
0x00
,
0x00
,
0x00
,
0x06
,
0x62
,
0x4B
,
0x47
,
0x44
,
0x00
,
0xFF
,
0x00
,
0xFF
,
0x00
,
0xFF
,
0xA0
,
0xBD
,
0xA7
,
0x93
,
0x00
,
0x00
,
0x00
,
0x07
,
0x74
,
0x49
,
0x4D
,
0x45
,
0x07
,
0xE4
,
0x03
,
0x17
,
0x04
,
0x10
,
0x05
,
0xF6
,
0xCE
,
0xA8
,
0xC0
,
0x00
,
0x00
,
0x1C
,
0x68
,
0x49
,
0x44
,
0x41
,
0x54
,
0x78
,
0xDA
,
0xCD
,
0x9B
,
0x79
,
0x94
,
0x1D
,
0x57
,
0x7D
,
0xE7
,
0x3F
,
0xF7
,
0xDE
,
0xAA
,
0x7A
,
0xFB
,
0xEB
,
0xD7
,
0xBB
,
0xA4
,
0x56
,
0xCB
,
0xDA
,
0x6C
,
0x59
,
0xB6
,
0x64
,
0x83
,
0x91
,
0x17
,
0xBC
,
0xE1
,
0x0D
,
0x2F
,
0x04
,
0x1B
,
0xB0
,
0x43
,
0x3C
,
0x40
,
0x32
,
0x43
,
0x4E
,
0x38
,
0x19
,
0x87
,
0x43
,
0x26
,
0x03
,
0x84
,
0x98
,
0xC9
,
0x1C
,
0x98
,
0x93
,
0x70
,
0x48
,
0x72
,
0x66
,
0x58
,
0x86
,
0x81
,
0x10
,
0x0E
,
0x06
,
0xC6
,
0x21
,
0xC1
,
0x83
,
0xC1
,
0x36
,
0x18
,
0xDB
,
0x6C
,
0xC6
,
0x60
,
0xB0
,
0x65
,
0xBC
,
0x1B
,
0x5B
,
0x8B
,
0x6D
,
0x59
,
0x92
,
0xB5
,
0x75
,
0x5B
,
0x52
,
0xAB
,
0xD7
,
0xB7
,
0x56
,
0xD5
,
0x5D
,
0xE6
,
0x8F
,
0xAA
,
0xF7
,
0xF4
,
0xBA
,
0xD5
,
0xF2
,
0xC2
,
0x92
,
0x99
,
0x3A
,
0xE7
,
0xD7
,
0xF5
,
0x96
,
0x7A
,
0x75
,
0x7F
,
0xDF
,
0xEF
,
0x6F
,
0xB9
,
0xBF
,
0xFB
,
0xBB
,
0xD5
,
0x82
,
0xDF
,
0xD1
,
0x61
,
0x8C
,
0x45
,
0x7D
,
0x70
,
0x9A
,
0xFD
,
0x7F
,
0x57
,
0x61
,
0x57
,
0xD5
,
0x31
,
0x17
,
0x39
,
0x9C
,
0x83
,
0xD8
,
0xC1
,
0xEF
,
0xAF
,
0x1A
,
0xE6
,
0xC9
,
0x23
,
0x13
,
0x41
,
0x55
,
0xA3
,
0xB4
,
0x75
,
0xD2
,
0x93
,
0xB8
,
0xBC
,
0x27
,
0xCC
,
0xA6
,
0x7E
,
0x19
,
0xDD
,
0xBA
,
0x5B
,
0xBB
,
0xBC
,
0x07
,
0x02
,
0x28
,
0x78
,
0x82
,
0xD1
,
0xA2
,
0x60
,
0x6D
,
0x59
,
0x52
,
0x8F
,
0x1D
,
0xC5
,
0x40
,
0xFE
,
0xD6
,
0xF5
,
0x14
,
0xBF
,
0xED
,
0x1B
,
0x3E
,
0xBC
,
0x67
,
0x92
,
0x3C
,
0x9A
,
0x03
,
0xAE
,
0x44
,
0x84
,
0xC7
,
0xDB
,
0x56
,
0xFA
,
0x3C
,
0x3A
,
0x61
,
0x7A
,
0x26
,
0x43
,
0x96
,
0x59
,
0xEB
,
0xD6
,
0x6A
,
0xC7
,
0x09
,
0x16
,
0x46
,
0x05
,
0xF4
,
0x03
,
0x79
,
0x01
,
0xBE
,
0x03
,
0x03
,
0x34
,
0x81
,
0x19
,
0x21
,
0x18
,
0xF3
,
0x05
,
0x7B
,
0x95
,
0x10
,
0xBB
,
0x8A
,
0x3E
,
0xFB
,
0xCE
,
0x1B
,
0x56
,
0xD3
,
0x77
,
0xEC
,
0x89
,
0x4D
,
0x5E
,
0x5A
,
0xFA
,
0x5C
,
0x9D
,
0x59
,
0xF2
,
0xAC
,
0x72
,
0x87
,
0x39
,
0x71
,
0xD5
,
0x09
,
0xFF
,
0x7F
,
0x11
,
0xF0
,
0xD3
,
0x17
,
0x67
,
0xC9
,
0xA1
,
0x99
,
0xB0
,
0x39
,
0xBE
,
0x19
,
0xE6
,
0x78
,
0x5F
,
0xA1
,
0xD1
,
0x17
,
0x4B
,
0xFF
,
0x8C
,
0x96
,
0x11
,
0x17
,
0x59
,
0xC7
,
0xD9
,
0xC6
,
0xB1
,
0xCE
,
0x41
,
0x9F
,
0x14
,
0xE4
,
0x3C
,
0x89
,
0x54
,
0x02
,
0x94
,
0x48
,
0x14
,
0x70
,
0x80
,
0x75
,
0x60
,
0x8E
,
0x4A
,
0x53
,
0xC0
,
0x9C
,
0x27
,
0xD8
,
0x2D
,
0x04
,
0x8F
,
0x67
,
0x24
,
0xF7
,
0x07
,
0xE8
,
0x47
,
0x2E
,
0x52
,
0xDF
,
0x19
,
0xBF
,
0x3B
,
0xBC
,
0xD6
,
0x55
,
0x44
,
0xC8
,
0x6E
,
0xBF
,
0xCC
,
0x99
,
0xCD
,
0x3D
,
0x9C
,
0xB2
,
0x76
,
0xD5
,
0xFF
,
0x5B
,
0x02
,
0x7E
,
0xBE
,
0x6B
,
0x92
,
0x3E
,
0xD1
,
0x64
,
0x8F
,
0xA9
,
0x70
,
0xF5
,
0x89
,
0x05
,
0xBE
,
0xBF
,
0xBB
,
0xB1
,
0xAA
,
0xE5
,
0xD4
,
0xD5
,
0x06
,
0xF1
,
0x76
,
0xE3
,
0xC4
,
0xEB
,
0x8D
,
0xA3
,
0x22
,
0x05
,
0xE4
,
0x3C
,
0x41
,
0xD1
,
0x83
,
0xAC
,
0x27
,
0x08
,
0x24
,
0xC8
,
0x14
,
0x7C
,
0x9B
,
0x80
,
0x36
,
0x09
,
0xDA
,
0x41
,
0x4B
,
0x3B
,
0xEA
,
0x1A
,
0x1A
,
0xDA
,
0x61
,
0x1C
,
0x28
,
0x41
,
0xC3
,
0x13
,
0xEE
,
0x79
,
0x0F
,
0xEE
,
0xC9
,
0x48
,
0x73
,
0xC7
,
0x3A
,
0x6F
,
0x66
,
0xCB
,
0x56
,
0x3D
,
0xA0
,
0x4F
,
0xC8
,
0x69
,
0xE6
,
0xB4
,
0xE4
,
0xFC
,
0x91
,
0xEC
,
0xBF
,
0x3D
,
0x01
,
0x8F
,
0xFE
,
0x6A
,
0x2B
,
0xBB
,
0x4B
,
0xEB
,
0xA9
,
0x98
,
0x39
,
0x76
,
0xDB
,
0x0A
,
0xAB
,
0xBC
,
0xEA
,
0xB2
,
0x3A
,
0xFE
,
0xBB
,
0x0D
,
0xF2
,
0xDF
,
0x6B
,
0xCB
,
0x29
,
0x91
,
0x75
,
0x4A
,
0x20
,
0xA8
,
0x64
,
0x04
,
0xBD
,
0x19
,
0x41
,
0xCE
,
0x13
,
0x2C
,
0x16
,
0xC1
,
0xEE
,
0x38
,
0x8A
,
0x38
,
0x20
,
0x34
,
0x30
,
0x1B
,
0x39
,
0xA6
,
0x42
,
0x8B
,
0x76
,
0x90
,
0x91
,
0x10
,
0x48
,
0xF6
,
0x79
,
0xC2
,
0xDD
,
0x9E
,
0xF7
,
0xF8
,
0xCA
,
0xE5
,
0x37
,
0xFB
,
0xDB
,
0xEF
,
0x7B
,
0x6F
,
0xCC
,
0x25
,
0xA3
,
0x9A
,
0xA7
,
0x0E
,
0x29
,
0xCE
,
0x58
,
0x92
,
0xFB
,
0xB7
,
0x21
,
0xE0
,
0x91
,
0xFD
,
0x73
,
0x9C
,
0x55
,
0xAE
,
0xF2
,
0x9D
,
0xC3
,
0x15
,
0x86
,
0x5D
,
0x35
,
0xFB
,
0x12
,
0xA5
,
0xAB
,
0x62
,
0x27
,
0x3F
,
0xA8
,
0x11
,
0xE7
,
0xB6
,
0x0C
,
0x2A
,
0x32
,
0x8E
,
0x9E
,
0x40
,
0xB0
,
0xAC
,
0xA0
,
0x28
,
0x78
,
0xA2
,
0x33
,
0x8A
,
0x7B
,
0x8D
,
0xE3
,
0xB4
,
0x95
,
0x0B
,
0x8D
,
0xE3
,
0x50
,
0xD3
,
0x72
,
0xA4
,
0x65
,
0x51
,
0x42
,
0x50
,
0xF0
,
0xC0
,
0x97
,
0xE2
,
0xD9
,
0x8C
,
0x74
,
0xFF
,
0x34
,
0x98
,
0x71
,
0xDF
,
0xD8
,
0xDF
,
0x10
,
0x53
,
0xEB
,
0x8A
,
0x9A
,
0x99
,
0x58
,
0x72
,
0xD1
,
0x8A
,
0xFC
,
0xEF
,
0x96
,
0x80
,
0x7B
,
0x76
,
0xD6
,
0xE9
,
0x0F
,
0x0C
,
0x4F
,
0xCD
,
0x78
,
0xAC
,
0xC8
,
0x9B
,
0xD1
,
0xAA
,
0x96
,
0x1F
,
0x8E
,
0x91
,
0xEF
,
0x6D
,
0x69
,
0xD7
,
0x53
,
0xD7
,
0x09
,
0xC4
,
0xD1
,
0xA2
,
0x62
,
0x28
,
0x2F
,
0x51
,
0x42
,
0xBC
,
0x66
,
0xD0
,
0xC7
,
0x3F
,
0x1C
,
0xD3
,
0xA1
,
0x63
,
0x6F
,
0xD5
,
0x10
,
0x19
,
0x47
,
0xD1
,
0x97
,
0xE4
,
0x7D
,
0x11
,
0x65
,
0x25
,
0xDF
,
0xCF
,
0x7A
,
0x7C
,
0xE2
,
0xA1
,
0xC9
,
0xE0
,
0xC9
,
0x2B
,
0x07
,
0x1A
,
0xB4
,
0x2C
,
0xBC
,
0x79
,
0x55
,
0xF1
,
0x77
,
0x43
,
0xC0
,
0x3D
,
0xCF
,
0xCF
,
0x90
,
0x55
,
0xF0
,
0xAB
,
0x39
,
0x9F
,
0x35
,
0x25
,
0x77
,
0x66
,
0x4D
,
0x8B
,
0x7F
,
0x88
,
0x0C
,
0x17
,
0xD7
,
0x62
,
0x27
,
0x1A
,
0xDA
,
0xE1
,
0x2B
,
0xC1
,
0xEA
,
0x1E
,
0x45
,
0x7F
,
0x4E
,
0x26
,
0xC0
,
0x7F
,
0x7B
,
0xE8
,
0x13
,
0x65
,
0x05
,
0xD4
,
0x63
,
0xC7
,
0xAE
,
0x19
,
0x43
,
0x2D
,
0x76
,
0xE4
,
0x3D
,
0x41
,
0x29
,
0x10
,
0xE4
,
0x3D
,
0xB1
,
0xBD
,
0xA0
,
0xDC
,
0xC7
,
0x2E
,
0xAC
,
0x34
,
0xEE
,
0x7C
,
0x6A
,
0xCE
,
0x37
,
0xA1
,
0x15
,
0x5C
,
0xBE
,
0xA6
,
0xFC
,
0xDB
,
0x25
,
0xE0
,
0x7B
,
0xCF
,
0xCD
,
0x90
,
0x53
,
0x8E
,
0xB7
,
0x6C
,
0xAF
,
0xF0
,
0x8D
,
0x75
,
0xF5
,
0x37
,
0x37
,
0x0D
,
0x9F
,
0x69
,
0x6A
,
0xB7
,
0xA1
,
0x1A
,
0x39
,
0x5A
,
0xC6
,
0xE1
,
0x29
,
0xC1
,
0x89
,
0x15
,
0x8F
,
0xFE
,
0x9C
,
0xE4
,
0x77
,
0x80
,
0xBD
,
0x73
,
0x48
,
0xA0
,
0x16
,
0x3B
,
0x76
,
0x4C
,
0x6B
,
0xEA
,
0xDA
,
0x91
,
0x51
,
0x82
,
0x1E
,
0x5F
,
0x52
,
0x0A
,
0xC4
,
0xE1
,
0x82
,
0xE7
,
0xFE
,
0xE6
,
0x94
,
0x5C
,
0xFD
,
0xA6
,
0xFD
,
0x61
,
0x10
,
0x87
,
0x16
,
0xAE
,
0x5A
,
0x5B
,
0xF9
,
0xED
,
0x10
,
0x70
,
0xCF
,
0x73
,
0x53
,
0x64
,
0x14
,
0xFC
,
0x7C
,
0xAA
,
0xC0
,
0x86
,
0x52
,
0x78
,
0x45
,
0xC3
,
0x88
,
0x2F
,
0xD4
,
0x22
,
0xB7
,
0x76
,
0x2E
,
0xB2
,
0xC4
,
0xD6
,
0x81
,
0x10
,
0xAC
,
0x2C
,
0x7B
,
0x8C
,
0x94
,
0xD4
,
0xEF
,
0x08
,
0xF6
,
0x02
,
0xA5
,
0x05
,
0x4C
,
0xB5
,
0x2C
,
0x3B
,
0xA6
,
0x35
,
0xDA
,
0x3A
,
0x7C
,
0x29
,
0x28
,
0x07
,
0x92
,
0xDE
,
0xAC
,
0x9C
,
0x2B
,
0x2A
,
0xF7
,
0xF1
,
0x8D
,
0xF9
,
0xD9
,
0x7F
,
0xDC
,
0xD3
,
0xCA
,
0xE9
,
0xD8
,
0x49
,
0xAE
,
0x3C
,
0xF1
,
0xE5
,
0x49
,
0x78
,
0x45
,
0x02
,
0x7E
,
0xB6
,
0x65
,
0x0F
,
0x85
,
0x5C
,
0x86
,
0x87
,
0x66
,
0x0A
,
0x0C
,
0xE7
,
0x38
,
0xAF
,
0x1E
,
0xBB
,
0x9B
,
0x6A
,
0x91
,
0x5D
,
0x3F
,
0x1B
,
0x3A
,
0x62
,
0xE7
,
0x70
,
0x40
,
0x5F
,
0xCE
,
0x63
,
0x5D
,
0x9F
,
0x8F
,
0xFA
,
0xED
,
0x17
,
0x6A
,
0xC7
,
0x1C
,
0xCE
,
0xB9
,
0x8E
,
0xD2
,
0x7B
,
0xAB
,
0x86
,
0x03
,
0x55
,
0x8D
,
0x00
,
0x3C
,
0x29
,
0xE8
,
0xC9
,
0x48
,
0xFA
,
0xB2
,
0x72
,
0xAA
,
0xE8
,
0xF1
,
0x97
,
0xEF
,
0x28
,
0xEF
,
0xBB
,
0xF9
,
0xFE
,
0xFA
,
0x52
,
0x67
,
0x10
,
0x5C
,
0xB6
,
0xB6
,
0xF7
,
0xD7
,
0x27
,
0xC0
,
0x39
,
0xF8
,
0xCA
,
0xD3
,
0x73
,
0xF4
,
0xA8
,
0xE8
,
0xD4
,
0xD9
,
0xD8
,
0xBB
,
0xB9
,
0x1A
,
0xD9
,
0x4D
,
0x33
,
0x2D
,
0x43
,
0xEC
,
0x12
,
0x37
,
0xF7
,
0x94
,
0xE0
,
0xA4
,
0xBE
,
0x80
,
0xBE
,
0xAC
,
0x24
,
0x75
,
0x86
,
0xDF
,
0x00
,
0xDD
,
0x02
,
0x8D
,
0x1C
,
0xB8
,
0xF6
,
0x24
,
0xE2
,
0xC0
,
0x5A
,
0x43
,
0xD6
,
0x4B
,
0x94
,
0x0A
,
0x2D
,
0x84
,
0x56
,
0xF2
,
0xEC
,
0x64
,
0x4C
,
0x33
,
0x76
,
0x08
,
0x01
,
0x9E
,
0x84
,
0xDE
,
0xAC
,
0xA2
,
0x3F
,
0xA7
,
0xC6
,
0xCB
,
0x9E
,
0xFD
,
0x8F
,
0x7B
,
0x9B
,
0xFE
,
0xDD
,
0x67
,
0x97
,
0xE6
,
0x88
,
0x1B
,
0x35
,
0x2E
,
0x38
,
0xED
,
0xC4
,
0xD7
,
0x4E
,
0xC0
,
0x37
,
0x9F
,
0x3C
,
0x08
,
0x52
,
0x92
,
0x51
,
0xF4
,
0x1F
,
0x89
,
0xBC
,
0x2F
,
0x57
,
0x43
,
0x7B
,
0xED
,
0x54
,
0xD3
,
0x10
,
0xA6
,
0x48
,
0x9D
,
0x80
,
0xBE
,
0xAC
,
0xE2
,
0xA4
,
0xBE
,
0x00
,
0x29
,
0x39
,
0xFE
,
0xA4
,
0xFE
,
0x5A
,
0x80
,
0x2F
,
0x76
,
0x0F
,
0x07
,
0xD6
,
0x6A
,
0x7A
,
0x02
,
0x38
,
0x7D
,
0xB8
,
0x40
,
0x64
,
0x0C
,
0x4F
,
0xBD
,
0x54
,
0x25
,
0x72
,
0x1E
,
0xFB
,
0xEB
,
0x30
,
0x56
,
0x35
,
0x9D
,
0xCB
,
0x7D
,
0x29
,
0x18
,
0xC8
,
0x4B
,
0x06
,
0x72
,
0xEA
,
0xE9
,
0x5E
,
0xCF
,
0xFC
,
0x61
,
0x9D
,
0xCC
,
0xD6
,
0xEB
,
0x4F
,
0x2E
,
0x1C
,
0xD7
,
0x32
,
0xC7
,
0x55
,
0xF5
,
0xAE
,
0x87
,
0xB6
,
0x60
,
0x72
,
0x15
,
0xCE
,
0x29
,
0x4F
,
0xC9
,
0x7B
,
0xA6
,
0x47
,
0x6E
,
0x9C
,
0x0D
,
0xED
,
0xDF
,
0x4E
,
0x36
,
0xB4
,
0xD7
,
0xD0
,
0xC9
,
0xAF
,
0x84
,
0x4C
,
0x7E
,
0xBA
,
0xB2
,
0x12
,
0xB0
,
0xA4
,
0xE8
,
0xFD
,
0x06
,
0x66
,
0xEF
,
0xC2
,
0xED
,
0x1C
,
0xCE
,
0x5A
,
0x04
,
0x0E
,
0x87
,
0x40
,
0xC8
,
0x34
,
0xA1
,
0x9A
,
0x98
,
0xC1
,
0xBC
,
0xE4
,
0x75
,
0x4B
,
0x0B
,
0xE4
,
0x14
,
0x78
,
0x4A
,
0xB1
,
0x7F
,
0xA6
,
0xC9
,
0xD3
,
0x2F
,
0x55
,
0x99
,
0x8C
,
0x3C
,
0x76
,
0xCC
,
0x58
,
0x8C
,
0x13
,
0x1D
,
0x40
,
0x19
,
0x4F
,
0xB0
,
0xA4
,
0xE0
,
0x31
,
0x90
,
0x93
,
0xB7
,
0x0C
,
0xFB
,
0xD1
,
0x0D
,
0x4D
,
0x2B
,
0xAB
,
0x9E
,
0x89
,
0xB8
,
0x72
,
0xE3
,
0xC8
,
0x31
,
0xE3
,
0x1E
,
0x37
,
0x6A
,
0xDF
,
0xAA
,
0x7F
,
0xCA
,
0x78
,
0x5C
,
0xE0
,
0x47
,
0x53
,
0x43
,
0x6F
,
0xAC
,
0x85
,
0xF6
,
0xFD
,
0xD3
,
0xF5
,
0xD8
,
0xAB
,
0xB6
,
0x34
,
0xDA
,
0x18
,
0x8C
,
0xB5
,
0x68
,
0x63
,
0xC1
,
0x39
,
0x32
,
0x0A
,
0xB4
,
0x71
,
0xC4
,
0xDA
,
0xFE
,
0x46
,
0x12
,
0x45
,
0x31
,
0x26
,
0x0E
,
0x59
,
0x5E
,
0x70
,
0x9C
,
0x36
,
0xE8
,
0x51
,
0x10
,
0x21
,
0xAD
,
0x56
,
0x83
,
0x28
,
0x6C
,
0xB2
,
0xB4
,
0x20
,
0xD8
,
0xB4
,
0xAC
,
0x40
,
0xC9
,
0x97
,
0x6C
,
0xDD
,
0x77
,
0x80
,
0x7D
,
0x13
,
0x47
,
0x58
,
0x51
,
0xC9
,
0xB1
,
0x7E
,
0x30
,
0x4F
,
0xC6
,
0x85
,
0x48
,
0x13
,
0xA1
,
0xB5
,
0xC6
,
0x18
,
0x83
,
0x36
,
0x86
,
0x46
,
0xA8
,
0x99
,
0xA8
,
0x45
,
0xCC
,
0xB6
,
0xEC
,
0x3B
,
0x26
,
0x63
,
0x75
,
0xFD
,
0x77
,
0xF4
,
0x00
,
0x81
,
0x6D
,
0xBD
,
0x7A
,
0x0F
,
0xF8
,
0xC1
,
0x63
,
0xDB
,
0x99
,
0xB2
,
0x25
,
0xF2
,
0x52
,
0x17
,
0xC7
,
0xE3
,
0xDC
,
0x57
,
0x26
,
0x6B
,
0xFA
,
0xFA
,
0x89
,
0xBA
,
0x26
,
0xC6
,
0x21
,
0xA4
,
0x44
,
0xC8
,
0xA4
,
0xC0
,
0xC9
,
0xF9
,
0x92
,
0x93
,
0x07
,
0x32
,
0x04
,
0xF2
,
0x37
,
0x5B
,
0x52
,
0x58
,
0x6B
,
0xC8
,
0x49
,
0xCD
,
0xE9
,
0x4B
,
0x72
,
0xAC
,
0xEA
,
0xCB
,
0xE3
,
0x49
,
0xC1
,
0x74
,
0x23
,
0xE2
,
0xA9
,
0x03
,
0xD3
,
0x14
,
0x32
,
0x3E
,
0xA7
,
0x8F
,
0x54
,
0x08
,
0x54
,
0xB2
,
0x72
,
0x98
,
0x6B
,
0xB6
,
0x70
,
0xCE
,
0x51
,
0x29
,
0xE4
,
0x70
,
0x08
,
0xB6
,
0x1F
,
0x9C
,
0xE5
,
0xB6
,
0x2D
,
0x87
,
0x99
,
0x8C
,
0x33
,
0x48
,
0xCF
,
0x4F
,
0x6D
,
0xEA
,
0xF0
,
0x84
,
0x60
,
0xB0
,
0xE0
,
0x31
,
0x52
,
0xF2
,
0x7F
,
0x35
,
0xE0
,
0xC7
,
0xD7
,
0xC5
,
0x4E
,
0xEE
,
0x56
,
0x71
,
0x9D
,
0xB7
,
0x6F
,
0x5A
,
0xFD
,
0xCA
,
0x1E
,
0x30
,
0x68
,
0x27
,
0x19
,
0x0B
,
0xB3
,
0x4C
,
0x84
,
0xEA
,
0xD2
,
0x6A
,
0x53
,
0xBF
,
0x65
,
0xAA
,
0x1E
,
0xD2
,
0x8C
,
0x35
,
0xDA
,
0xD8
,
0x84
,
0x65
,
0x9D
,
0x88
,
0xB3
,
0x16
,
0x63
,
0x1D
,
0x91
,
0xB1
,
0xBF
,
0xB6
,
0xB4
,
0xA2
,
0x88
,
0x2C
,
0x11
,
0x67
,
0x2E
,
0xCD
,
0xB1
,
0xBA
,
0x37
,
0x07
,
0xCE
,
0x11
,
0x6B
,
0x43
,
0x29
,
0x50
,
0x9C
,
0x73
,
0x42
,
0x1F
,
0xA7
,
0x2D
,
0x2D
,
0xA3
,
0x70
,
0x98
,
0x74
,
0xEC
,
0x42
,
0xE0
,
0x53
,
0xCA
,
0x66
,
0x98
,
0xAB
,
0x37
,
0xA9
,
0x37
,
0x5B
,
0x9C
,
0x3C
,
0x54
,
0xE2
,
0xCC
,
0x65
,
0x79
,
0x6C
,
0x73
,
0x96
,
0x38
,
0x0C
,
0xD1
,
0x5A
,
0xA3
,
0xB5
,
0x25
,
0x8C
,
0x0D
,
0x93
,
0xF5
,
0x88
,
0x99
,
0xA6
,
0x3E
,
0xBD
,
0xAA
,
0xE5
,
0xBB
,
0xAF
,
0x7D
,
0xF6
,
0x1A
,
0xA1
,
0xCC
,
0xB1
,
0x5E
,
0x70
,
0x8C
,
0xE9
,
0xA6
,
0x1B
,
0x31
,
0xF7
,
0x3E
,
0x77
,
0x84
,
0xDE
,
0x9C
,
0x2A
,
0x6E
,
0x3B
,
0x14
,
0x7E
,
0xFD
,
0xE0
,
0x5C
,
0xF4
,
0x8E
,
0x89
,
0x5A
,
0x8C
,
0x41
,
0x20
,
0x94
,
0x48
,
0x62
,
0x5F
,
0x08
,
0x1C
,
0x82
,
0x52
,
0x46
,
0x72
,
0x62
,
0x7F
,
0x8E
,
0x5F
,
0xCF
,
0x01
,
0x1C
,
0xC6
,
0x68
,
0x7A
,
0x7C
,
0xC3
,
0x79
,
0x2B
,
0x4A
,
0x8C
,
0xF4
,
0xE4
,
0xB0
,
0xCE
,
0xE1
,
0x52
,
0xE9
,
0x56
,
0x31
,
0x36
,
0x1A
,
0x29
,
0x25
,
0x9E
,
0x94
,
0x38
,
0xE7
,
0x90
,
0x52
,
0x72
,
0x60
,
0x72
,
0x8A
,
0x17
,
0xC6
,
0x0E
,
0x72
,
0xEE
,
0x29
,
0xEB
,
0x90
,
0x42
,
0xF0
,
0xBD
,
0xAD
,
0xE3
,
0xDC
,
0xFF
,
0x62
,
0x1D
,
0x82
,
0x22
,
0x88
,
0xA4
,
0x1E
,
0x51
,
0x02
,
0x06
,
0x0B
,
0x3E
,
0x2B
,
0x2B
,
0xC1
,
0xF6
,
0x01
,
0x3F
,
0xBE
,
0x26
,
0x76
,
0x62
,
0x97
,
0x98
,
0x1D
,
0xE3
,
0x0F
,
0x2E
,
0x3D
,
0xFB
,
0xF8
,
0x1E
,
0xD0
,
0x9B
,
0xBF
,
0x86
,
0xC3
,
0x35
,
0xCD
,
0x4B
,
0x35
,
0x73
,
0x66
,
0xB5
,
0x19
,
0x5F
,
0x38
,
0x53
,
0x0D
,
0x09
,
0x23
,
0xDD
,
0xB1
,
0xBA
,
0xD6
,
0x36
,
0x15
,
0x43
,
0x14
,
0x1B
,
0xC2
,
0x58
,
0x13
,
0xC5
,
0xE6
,
0x35
,
0x8A
,
0xA6
,
0x15
,
0x86
,
0xE4
,
0x08
,
0x39
,
0x67
,
0x24
,
0xCF
,
0xD2
,
0x72
,
0x06
,
0x6D
,
0x0C
,
0xD6
,
0xDA
,
0x8E
,
0x98
,
0xF4
,
0xBD
,
0xB3
,
0x06
,
0x09
,
0x34
,
0x5A
,
0x2D
,
0x9A
,
0x61
,
0x88
,
0x73
,
0x0E
,
0xA3
,
0x35
,
0x4B
,
0x2A
,
0x3D
,
0xAC
,
0x18
,
0x1A
,
0x24
,
0xD6
,
0x1A
,
0xE1
,
0x2C
,
0x67
,
0x8E
,
0x56
,
0x28
,
0xAA
,
0x98
,
0x28
,
0x6C
,
0xA5
,
0x5E
,
0x60
,
0x08
,
0x63
,
0xC3
,
0x54
,
0x3D
,
0x64
,
0xBA
,
0x19
,
0xAF
,
0x6B
,
0x38
,
0xEF
,
0xF7
,
0x0E
,
0xAC
,
0x18
,
0x81
,
0xB0
,
0x3E
,
0x0F
,
0xEF
,
0x31
,
0xA5
,
0xDB
,
0xE3
,
0x7B
,
0x9F
,
0xE0
,
0x6D
,
0xA7
,
0x0D
,
0xCA
,
0x5F
,
0xBC
,
0x30
,
0xF5
,
0x81
,
0xC3
,
0x33
,
0xAD
,
0x4B
,
0x27
,
0x6B
,
0x11
,
0xB1
,
0x4D
,
0x0A
,
0x1E
,
0xE7
,
0x1C
,
0xB6
,
0x2D
,
0xD6
,
0x82
,
0x75
,
0x94
,
0x32
,
0x49
,
0xCC
,
0x69
,
0x6B
,
0x31
,
0xAF
,
0x52
,
0xE2
,
0x58
,
0x93
,
0x17
,
0x11
,
0xE7
,
0x9F
,
0x50
,
0x62
,
0xB4
,
0x92
,
0xEF
,
0x58
,
0xBE
,
0x9B
,
0x80
,
0xB6
,
0x27
,
0xB4
,
0xBF
,
0x53
,
0x42
,
0xD2
,
0x88
,
0x22
,
0xAC
,
0x73
,
0x28
,
0x29
,
0xB1
,
0xC6
,
0xD0
,
0x57
,
0xCA
,
0x03
,
0x82
,
0x5D
,
0x07
,
0x8F
,
0xD0
,
0x88
,
0x2D
,
0x4F
,
0xEE
,
0x9D
,
0xA2
,
0x6E
,
0x14
,
0x4E
,
0x48
,
0xAC
,
0x75
,
0x29
,
0x91
,
0x16
,
0x4F
,
0x08
,
0x59
,
0x0C
,
0x84
,
0xBF
,
0x7C
,
0xF2
,
0xC0
,
0x5D
,
0x3A
,
0xD7
,
0xD7
,
0x3A
,
0xE3
,
0xC4
,
0xE5
,
0xDC
,
0xF7
,
0x93
,
0x9F
,
0x00
,
0x30
,
0x6F
,
0xFE
,
0xAA
,
0xB6
,
0x34
,
0x77
,
0x3E
,
0x7D
,
0x88
,
0x83
,
0x73
,
0xE1
,
0x92
,
0x5A
,
0x23
,
0xBA
,
0x64
,
0xA6
,
0x16
,
0xD2
,
0x0A
,
0x63
,
0x9C
,
0x92
,
0x08
,
0x27
,
0x3B
,
0x09
,
0xB0
,
0x3D
,
0xA7
,
0x5A
,
0x63
,
0xA9
,
0xB5
,
0x62
,
0x8A
,
0x19
,
0x85
,
0x7B
,
0x95
,
0xC5
,
0xBF
,
0xB3
,
0x86
,
0x9C
,
0x88
,
0x79
,
0xE3
,
0xCA
,
0x32
,
0x2B
,
0x2A
,
0x39
,
0x8C
,
0xB5
,
0xC9
,
0xE7
,
0x29
,
0x01
,
0xC7
,
0x86
,
0x40
,
0x5A
,
0xFD
,
0x09
,
0x41
,
0xDE
,
0x0F
,
0x68
,
0xE9
,
0x98
,
0x50
,
0x08
,
0x02
,
0x25
,
0xA9
,
0xB7
,
0x22
,
0xB6
,
0x1F
,
0x38
,
0x48
,
0x23
,
0x76
,
0x6C
,
0xDE
,
0x35
,
0xC9
,
0x44
,
0xCD
,
0x21
,
0xB2
,
0x60
,
0xB5
,
0x49
,
0xA2
,
0xDB
,
0x81
,
0xC1
,
0x31
,
0x5D
,
0x83
,
0x5A
,
0x5E
,
0xBD
,
0x3E
,
0xEF
,
0xAB
,
0x0D
,
0xDA
,
0x8A
,
0x07
,
0x97
,
0xAE
,
0xDF
,
0xD4
,
0xB9
,
0xF7
,
0x3C
,
0x02
,
0x4A
,
0xD9
,
0xA5
,
0x7C
,
0xFE
,
0xBE
,
0x47
,
0x30
,
0xC6
,
0x9E
,
0x36
,
0x5B
,
0x0F
,
0xD7
,
0xD4
,
0x1A
,
0x21
,
0x51
,
0x6C
,
0x91
,
0x4E
,
0x21
,
0x9C
,
0x03
,
0xE9
,
0xD2
,
0xF9
,
0xBF
,
0xDD
,
0xC7
,
0x11
,
0xCC
,
0xD4
,
0x05
,
0x81
,
0x08
,
0x5E
,
0xD5
,
0xE2
,
0xC7
,
0x59
,
0x43
,
0x40
,
0xC4
,
0xD9
,
0xAB
,
0x4B
,
0xAC
,
0xEE
,
0xCF
,
0x77
,
0x80
,
0xB5
,
0xDD
,
0x5F
,
0x00
,
0xDA
,
0x18
,
0x62
,
0xAD
,
0xF1
,
0x3D
,
0x6F
,
0x1E
,
0x78
,
0x21
,
0x04
,
0xCE
,
0x19
,
0x7C
,
0x21
,
0xF0
,
0x94
,
0x62
,
0xA6
,
0xD1
,
0xE4
,
0xC1
,
0x67
,
0x77
,
0xD3
,
0x34
,
0x8A
,
0xC7
,
0xF6
,
0xCE
,
0xF2
,
0x52
,
0x1D
,
0xBC
,
0x6C
,
0x19
,
0x61
,
0x00
,
0x6B
,
0x8E
,
0xA6
,
0x37
,
0xE7
,
0xA8
,
0x3A
,
0xCB
,
0x6C
,
0xC3
,
0xEF
,
0xAB
,
0x54
,
0x32
,
0xE7
,
0xE9
,
0x33
,
0x56
,
0x3E
,
0x68
,
0x6F
,
0x7F
,
0x72
,
0x71
,
0x02
,
0x76
,
0x1E
,
0xDE
,
0xC3
,
0xDA
,
0xB5
,
0x9F
,
0xE6
,
0x33
,
0xDF
,
0x7E
,
0xD7
,
0x59
,
0xD5
,
0x7A
,
0x58
,
0x6A
,
0x34
,
0x23
,
0x34
,
0x02
,
0x89
,
0x43
,
0x38
,
0x09
,
0x52
,
0x22
,
0x84
,
0x9C
,
0xD7
,
0xE0
,
0x98
,
0xAE
,
0x59
,
0x8A
,
0xBE
,
0x40
,
0xBD
,
0x42
,
0x26
,
0x74
,
0xD6
,
0xA2
,
0x6C
,
0xC4
,
0xA6
,
0x55
,
0x45
,
0x4E
,
0x19
,
0x2E
,
0xE2
,
0xAC
,
0xE5
,
0x70
,
0xB5
,
0xCE
,
0xC1
,
0xA9
,
0x19
,
0x96
,
0x0F
,
0xF6
,
0x91
,
0xF5
,
0x3C
,
0xF6
,
0x1F
,
0x99
,
0x62
,
0xC7
,
0xD8
,
0x21
,
0xF2
,
0x19
,
0x9F
,
0xB3
,
0xD7
,
0xAD
,
0x86
,
0x2E
,
0xF0
,
0x6D
,
0x32
,
0xA4
,
0x94
,
0x60
,
0x0C
,
0xB3
,
0xF5
,
0x26
,
0xFB
,
0xA7
,
0x1A
,
0xEC
,
0x98
,
0x74
,
0x1C
,
0x6A
,
0x2A
,
0x94
,
0x9F
,
0xC7
,
0x38
,
0x0F
,
0x8C
,
0x65
,
0xDE
,
0x5A
,
0xD4
,
0x39
,
0x9A
,
0x06
,
0x66
,
0x1A
,
0xA1
,
0x18
,
0xCA
,
0x8B
,
0xB3
,
0x46
,
0x1E
,
0xFE
,
0x65
,
0xBE
,
0xB6
,
0x6C
,
0x6D
,
0x63
,
0xD1
,
0x24
,
0xB8
,
0xEB
,
0x50
,
0x95
,
0xDD
,
0xBB
,
0x3F
,
0x9C
,
0x0B
,
0xC3
,
0xF8
,
0xB4
,
0x6A
,
0xAD
,
0x45
,
0x2B
,
0x8C
,
0x3A
,
0x09
,
0x25
,
0x8E
,
0x0D
,
0x3A
,
0xD6
,
0xC9
,
0xFB
,
0x38
,
0x11
,
0x13
,
0x6B
,
0xAA
,
0x8D
,
0x88
,
0xC9
,
0x6A
,
0x8B
,
0x28
,
0xD6
,
0x84
,
0xD1
,
0xF1
,
0x24
,
0x26
,
0x6C
,
0x35
,
0xD8
,
0x30
,
0xE4
,
0xF3
,
0xFA
,
0x91
,
0x12
,
0xCE
,
0x59
,
0xB4
,
0xB5
,
0xFC
,
0xEC
,
0x99
,
0xE7
,
0xF8
,
0x97
,
0xFB
,
0x1F
,
0xE7
,
0xB1
,
0x1D
,
0xFB
,
0x88
,
0xB4
,
0xE6
,
0xBE
,
0x67
,
0x76
,
0x72
,
0xFF
,
0x73
,
0x63
,
0x84
,
0x5A
,
0xE0
,
0x8C
,
0xC1
,
0xA6
,
0x9E
,
0x91
,
0xE8
,
0xA0
,
0x3B
,
0x7A
,
0x5A
,
0x6B
,
0x29
,
0xE7
,
0x72
,
0x28
,
0x95
,
0xE1
,
0x70
,
0x55
,
0x63
,
0x45
,
0x06
,
0xE3
,
0x64
,
0x92
,
0x9C
,
0xDB
,
0x7A
,
0xB6
,
0x45
,
0x27
,
0x3A
,
0xCC
,
0xD5
,
0x43
,
0x42
,
0xED
,
0x4E
,
0xCE
,
0x0D
,
0xAD
,
0xEE
,
0x0F
,
0xCA
,
0x83
,
0x8B
,
0x7B
,
0xC0
,
0xBE
,
0x23
,
0x75
,
0xE6
,
0x9A
,
0x71
,
0xB9
,
0xDE
,
0x8C
,
0x56
,
0xD7
,
0x9B
,
0x11
,
0x51
,
0xAC
,
0xC1
,
0x3A
,
0xA4
,
0x73
,
0x08
,
0xA5
,
0x40
,
0x0A
,
0x84
,
0xB4
,
0x2C
,
0x9C
,
0x3D
,
0x27
,
0xE6
,
0x42
,
0x3C
,
0x01
,
0xFE
,
0x22
,
0xCB
,
0x41
,
0xE7
,
0x1C
,
0x56
,
0x87
,
0x6C
,
0x18
,
0xF6
,
0x39
,
0x6F
,
0x55
,
0x05
,
0x81
,
0xC3
,
0x68
,
0x8B
,
0x13
,
0x82
,
0x6C
,
0x90
,
0x65
,
0xC3
,
0xAA
,
0x13
,
0x58
,
0xBD
,
0x64
,
0x80
,
0x83
,
0x33
,
0x55
,
0x7C
,
0x3F
,
0xE0
,
0xCC
,
0xB5
,
0x2B
,
0x58
,
0xD6
,
0x57
,
0xC6
,
0xA4
,
0x6E
,
0xEC
,
0x52
,
0xE0
,
0x5E
,
0x1A
,
0x12
,
0x52
,
0x0A
,
0x0E
,
0x4C
,
0x4E
,
0xF3
,
0xC4
,
0xCE
,
0xFD
,
0xBC
,
0xFE
,
0x84
,
0x11
,
0x9E
,
0x3A
,
0xD0
,
0xE0
,
0x70
,
0x2B
,
0x46
,
0xFA
,
0x92
,
0x45
,
0xEB
,
0xBA
,
0x34
,
0xA7
,
0xD4
,
0x9A
,
0x50
,
0x6F
,
0xC5
,
0x4B
,
0xAC
,
0x63
,
0xD4
,
0x58
,
0xB7
,
0x3F
,
0xD2
,
0x86
,
0xC0
,
0x53
,
0xF3
,
0x09
,
0x68
,
0x45
,
0x31
,
0x51
,
0x20
,
0x07
,
0xEA
,
0xAD
,
0x78
,
0xB8
,
0xD1
,
0x8C
,
0x88
,
0x63
,
0x8D
,
0x74
,
0x0E
,
0x9B
,
0xDE
,
0xA8
,
0x93
,
0x04
,
0x17
,
0x0C
,
0xA4
,
0xB5
,
0xE1
,
0xB0
,
0x70
,
0x0C
,
0x14
,
0x03
,
0x04
,
0xDD
,
0x6D
,
0x30
,
0x87
,
0xD1
,
0x11
,
0xAB
,
0x7A
,
0x04
,
0x97
,
0xAC
,
0xED
,
0xC5
,
0x17
,
0x0E
,
0xAD
,
0x93
,
0xE5
,
0xAB
,
0x76
,
0x50
,
0xCC
,
0x7A
,
0x5C
,
0xBC
,
0x71
,
0x2D
,
0x47
,
0xE6
,
0x6A
,
0xFC
,
0x62
,
0xEB
,
0x6E
,
0xCE
,
0x5D
,
0xB7
,
0x92
,
0x91
,
0x4A
,
0x21
,
0x99
,
0x51
,
0x8C
,
0xED
,
0xB8
,
0xBC
,
0x52
,
0xAA
,
0x13
,
0x0A
,
0x5B
,
0x5F
,
0x1C
,
0xE3
,
0xD1
,
0x1D
,
0xBB
,
0x39
,
0xFF
,
0xD4
,
0x93
,
0x18
,
0x1D
,
0x2A
,
0x53
,
0x50
,
0x86
,
0x28
,
0x6C
,
0xE1
,
0x09
,
0x6F
,
0x71
,
0x02
,
0x70
,
0x38
,
0xEB
,
0x68
,
0x86
,
0x8E
,
0x46
,
0x18
,
0xE7
,
0x6B
,
0xAD
,
0x68
,
0xB4
,
0x15
,
0xE9
,
0x4E
,
0xD2
,
0x9E
,
0x47
,
0x80
,
0xB3
,
0x0E
,
0x9C
,
0x1B
,
0x6C
,
0x85
,
0x51
,
0x3E
,
0x0C
,
0x23
,
0x74
,
0x6C
,
0x69
,
0xF3
,
0x2A
,
0x9C
,
0x4A
,
0x92
,
0xA0
,
0x68
,
0xCF
,
0x02
,
0xF3
,
0xD3
,
0xDE
,
0x74
,
0xD5
,
0x60
,
0x8D
,
0xA5
,
0x27
,
0xE7
,
0xA7
,
0x39
,
0xD2
,
0x61
,
0x4D
,
0xCC
,
0x70
,
0xCE
,
0x72
,
0xF9
,
0xBA
,
0x61
,
0x8A
,
0x3E
,
0x44
,
0x71
,
0xDC
,
0x89
,
0x67
,
0x84
,
0xC0
,
0x13
,
0x82
,
0xF1
,
0xA9
,
0x59
,
0x1E
,
0x7A
,
0x76
,
0x37
,
0x67
,
0x9D
,
0x74
,
0x02
,
0x4B
,
0x7A
,
0x0A
,
0x84
,
0x5A
,
0x23
,
0x21
,
0x99
,
0xEE
,
0x94
,
0x42
,
0x4A
,
0x89
,
0x94
,
0x02
,
0x63
,
0x2D
,
0x0F
,
0x6C
,
0xDD
,
0xC1
,
0xF6
,
0x7D
,
0x2F
,
0x71
,
0xF9
,
0x1B
,
0x36
,
0xB0
,
0x7A
,
0xA8
,
0x97
,
0xF1
,
0xD9
,
0x1A
,
0x47
,
0x66
,
0xAB
,
0x18
,
0x53
,
0x80
,
0xD8
,
0x2C
,
0xA2
,
0x97
,
0xE8
,
0x10
,
0xD0
,
0xC2
,
0xD2
,
0x0C
,
0x75
,
0x50
,
0x6F
,
0xE9
,
0xC1
,
0xBD
,
0x13
,
0xB5
,
0xCE
,
0xE2
,
0x70
,
0x1E
,
0x01
,
0x49
,
0xB9
,
0xE9
,
0x7A
,
0x1A
,
0xCD
,
0xD8
,
0x8F
,
0xA2
,
0x18
,
0x6D
,
0xDC
,
0xD1
,
0xFE
,
0xBD
,
0x03
,
0xA4
,
0x4D
,
0x93
,
0xE0
,
0xD1
,
0x59
,
0xA0
,
0x9B
,
0xE9
,
0xC9
,
0xAA
,
0x49
,
0xCA
,
0xD8
,
0xAC
,
0x87
,
0xB3
,
0x9A
,
0xA2
,
0x8C
,
0xB8
,
0xFC
,
0xA4
,
0x41
,
0x86
,
0xF2
,
0x8A
,
0x28
,
0xD6
,
0x1D
,
0xF0
,
0xD6
,
0x5A
,
0x02
,
0xDF
,
0xA3
,
0x11
,
0xC5
,
0xDC
,
0xFD
,
0xE8
,
0x36
,
0xAE
,
0xDA
,
0x74
,
0x2A
,
0xFD
,
0xA5
,
0x1C
,
0x5F
,
0xFA
,
0xE1
,
0x66
,
0x7A
,
0xF3
,
0x19
,
0xAE
,
0x3D
,
0xF7
,
0x74
,
0x02
,
0xA5
,
0x10
,
0x29
,
0xF8
,
0x7A
,
0x2B
,
0xE2
,
0x07
,
0x8F
,
0x6D
,
0xE1
,
0xF0
,
0x4C
,
0x8D
,
0xB7
,
0x9D
,
0xFB
,
0x3A
,
0x46
,
0xFA
,
0xCA
,
0xEC
,
0x99
,
0x98
,
0xE5
,
0xAB
,
0x3F
,
0x7D
,
0x9A
,
0xF1
,
0x19
,
0x8D
,
0xCC
,
0x95
,
0x70
,
0xC6
,
0x1C
,
0xA3
,
0x4F
,
0x32
,
0x15
,
0x3A
,
0x9C
,
0xB3
,
0xC4
,
0x56
,
0xD0
,
0x0A
,
0x63
,
0xA9
,
0xB5
,
0xE9
,
0xFD
,
0xFB
,
0x3B
,
0xB7
,
0xF2
,
0xD7
,
0xD7
,
0x9C
,
0x7A
,
0x2C
,
0x01
,
0x61
,
0xA4
,
0xD1
,
0xC6
,
0x64
,
0xA7
,
0xE7
,
0x1A
,
0xAA
,
0x5E
,
0x6F
,
0xE1
,
0x94
,
0x4A
,
0x3C
,
0xC0
,
0x81
,
0xB0
,
0x0E
,
0x94
,
0x44
,
0x08
,
0x97
,
0x8E
,
0xB3
,
0xB8
,
0xBB
,
0x4D
,
0x6A
,
0x4D
,
0xA3
,
0x29
,
0xE8
,
0xCD
,
0x68
,
0x2E
,
0xDE
,
0xD8
,
0xC7
,
0xEA
,
0xFE
,
0x0C
,
0xB1
,
0x8E
,
0x3B
,
0xD7
,
0x0B
,
0x21
,
0xF0
,
0x3C
,
0x45
,
0x23
,
0xB6
,
0x6C
,
0xD9
,
0x73
,
0x08
,
0x27
,
0x3D
,
0xEA
,
0x51
,
0xCC
,
0xB6
,
0xAD
,
0xE3
,
0x4C
,
0xD7
,
0x22
,
0x7A
,
0x8B
,
0x05
,
0x3C
,
0xCF
,
0x47
,
0x4A
,
0x81
,
0x92
,
0x92
,
0xC3
,
0xB3
,
0x55
,
0x6E
,
0x7F
,
0xE0
,
0x71
,
0x10
,
0x8A
,
0x3F
,
0xB8
,
0xF0
,
0x0D
,
0xF4
,
0x17
,
0xF3
,
0x3C
,
0xB1
,
0x73
,
0x8C
,
0xAF
,
0xFD
,
0xF4
,
0x57
,
0xEC
,
0x99
,
0x15
,
0xF8
,
0x85
,
0x41
,
0x9C
,
0x93
,
0xA0
,
0xCD
,
0x22
,
0x3A
,
0x25
,
0x5D
,
0x1B
,
0xE7
,
0x2C
,
0x42
,
0xC0
,
0x6C
,
0x3D
,
0xA4
,
0x15
,
0xE9
,
0x7C
,
0xF4
,
0xF5
,
0x2F
,
0xE3
,
0xBE
,
0x7A
,
0xFD
,
0xB1
,
0x04
,
0xE0
,
0x2C
,
0x38
,
0x27
,
0xC3
,
0x48
,
0x73
,
0x64
,
0xA6
,
0x4E
,
0xA1
,
0x90
,
0x21
,
0x48
,
0xEF
,
0x23
,
0xAC
,
0x43
,
0xD8
,
0xA4
,
0x18
,
0x7A
,
0xB9
,
0xB6
,
0x8F
,
0x73
,
0x96
,
0xA8
,
0xDE
,
0xE4
,
0xE2
,
0x0D
,
0x15
,
0x36
,
0xAD
,
0x28
,
0xA7
,
0x45
,
0xCD
,
0x51
,
0xF0
,
0x8D
,
0x48
,
0xF3
,
0xE3
,
0x87
,
0xB7
,
0x70
,
0x70
,
0xAE
,
0xC5
,
0x29
,
0x2B
,
0x47
,
0x58
,
0xB3
,
0x74
,
0x80
,
0x6A
,
0xA3
,
0xC9
,
0x8A
,
0xC1
,
0x5E
,
0xCE
,
0x3B
,
0x65
,
0x35
,
0xF9
,
0xC0
,
0x43
,
0x09
,
0x90
,
0x42
,
0xB0
,
0x63
,
0xEC
,
0x10
,
0xB7
,
0xFE
,
0xEC
,
0x51
,
0x46
,
0x06
,
0xFB
,
0xB8
,
0xEE
,
0xFC
,
0x33
,
0x08
,
0x3C
,
0xC9
,
0x77
,
0x1F
,
0xDE
,
0xCA
,
0x37
,
0x1F
,
0x7A
,
0x9E
,
0x19
,
0x93
,
0xC7
,
0xCF
,
0xF7
,
0x63
,
0x44
,
0x90
,
0xEC
,
0xA7
,
0x61
,
0x8E
,
0xA7
,
0x10
,
0xCE
,
0x5A
,
0xEA
,
0xA1
,
0xA6
,
0x9A
,
0xF7
,
0xB0
,
0xCE
,
0x49
,
0xD8
,
0xDF
,
0x89
,
0x14
,
0x6F
,
0xE1
,
0xC5
,
0x02
,
0x17
,
0x49
,
0x9C
,
0x0D
,
0xC3
,
0x88
,
0x56
,
0x6C
,
0xE8
,
0xED
,
0x15
,
0xF8
,
0x90
,
0x14
,
0x42
,
0x4E
,
0x21
,
0xE4
,
0xCB
,
0xF4
,
0xBD
,
0x9C
,
0xC5
,
0xC4
,
0x2D
,
0xCE
,
0x5D
,
0x99
,
0xE3
,
0x9A
,
0xD7
,
0x2D
,
0x45
,
0x89
,
0x24
,
0x61
,
0x4A
,
0x29
,
0x13
,
0xCB
,
0x2B
,
0xC5
,
0x0B
,
0x2F
,
0x1D
,
0xE1
,
0xAE
,
0x47
,
0xB6
,
0x93
,
0x2F
,
0xF4
,
0xF0
,
0xEE
,
0x8B
,
0xCF
,
0x66
,
0x49
,
0xC9
,
0xC7
,
0x51
,
0x42
,
0x2A
,
0xD5
,
0xF1
,
0x5A
,
0x21
,
0x24
,
0x9B
,
0xB7
,
0xEE
,
0xE0
,
0xB6
,
0x5F
,
0x3C
,
0xCE
,
0xB9
,
0xA7
,
0x9E
,
0xC4
,
0x35
,
0x6F
,
0x3C
,
0x8D
,
0xD9
,
0x7A
,
0x93
,
0xAF
,
0xFC
,
0xE8
,
0x49
,
0xEE
,
0xDD
,
0x32
,
0x86
,
0x0E
,
0xFA
,
0xF0
,
0xB2
,
0x3D
,
0x18
,
0x82
,
0x14
,
0xF7
,
0xE2
,
0xE0
,
0x93
,
0x54
,
0xE4
,
0xA8
,
0x37
,
0x23
,
0xC2
,
0x30
,
0x06
,
0x5B
,
0x40
,
0x38
,
0x17
,
0x52
,
0xBE
,
0x36
,
0x8D
,
0xE9
,
0x85
,
0x04
,
0xE0
,
0x10
,
0x82
,
0x9A
,
0x12
,
0x4E
,
0x0B
,
0x2C
,
0xCD
,
0x96
,
0x66
,
0x7A
,
0x56
,
0x50
,
0x2E
,
0x83
,
0x9F
,
0xF1
,
0x93
,
0x30
,
0x90
,
0xB2
,
0xD3
,
0xA9
,
0x59
,
0xF8
,
0x5B
,
0x1D
,
0x87
,
0x9C
,
0x3C
,
0xA8
,
0xF8
,
0xE3
,
0xF3
,
0x57
,
0xD1
,
0x5B
,
0xCC
,
0x62
,
0xEC
,
0xD1
,
0x84
,
0x24
,
0x84
,
0xC0
,
0x5A
,
0xCB
,
0xCA
,
0xE1
,
0x01
,
0xDE
,
0x79
,
0xE1
,
0x26
,
0xF2
,
0xF9
,
0x1C
,
0x7D
,
0x85
,
0x00
,
0xEB
,
0x1C
,
0x52
,
0x29
,
0x84
,
0x48
,
0xE2
,
0x3D
,
0xD2
,
0x86
,
0x6F
,
0xDF
,
0xFF
,
0x4B
,
0xEE
,
0x7D
,
0x62
,
0x3B
,
0xEF
,
0xBA
,
0xF4
,
0x8D
,
0x5C
,
0xF6
,
0xFA
,
0x93
,
0xD9
,
0xBA
,
0x67
,
0x9C
,
0x2F
,
0xFF
,
0xF0
,
0x31
,
0x9E
,
0x19
,
0xAF
,
0xA3
,
0x72
,
0x03
,
0x48
,
0xBF
,
0x84
,
0xC1
,
0x7B
,
0x79
,
0xCB
,
0xA7
,
0xE0
,
0x9B
,
0xA1
,
0xA6
,
0xDA
,
0x08
,
0xC9
,
0x28
,
0xF0
,
0xA4
,
0x73
,
0x52
,
0x30
,
0x77
,
0xD5
,
0x47
,
0x2E
,
0x46
,
0xA4
,
0x5E
,
0x79
,
0x8C
,
0x07
,
0x38
,
0xEB
,
0x26
,
0x03
,
0x4F
,
0x46
,
0xCA
,
0x39
,
0x30
,
0x9A
,
0x30
,
0x0C
,
0x99
,
0xAD
,
0x42
,
0xC1
,
0xE6
,
0x08
,
0x32
,
0x3E
,
0x42
,
0x2A
,
0x90
,
0xB6
,
0x8B
,
0xE3
,
0x24
,
0x49
,
0x58
,
0x1D
,
0x33
,
0x98
,
0x33
,
0xFC
,
0xE9
,
0xC5
,
0xEB
,
0x58
,
0x31
,
0x58
,
0x46
,
0x1B
,
0x8B
,
0x27
,
0xE7
,
0x13
,
0x04
,
0x82
,
0xA2
,
0xE7
,
0x71
,
0xED
,
0x79
,
0x1B
,
0xD3
,
0x69
,
0x2D
,
0xB1
,
0xB6
,
0x10
,
0x49
,
0xBC
,
0x4F
,
0x57
,
0xEB
,
0x7C
,
0xE9
,
0xCE
,
0x9F
,
0xF0
,
0xFC
,
0xFE
,
0x43
,
0xFC
,
0xC5
,
0x75
,
0x57
,
0xB0
,
0x71
,
0xF5
,
0x08
,
0x77
,
0x3F
,
0xBC
,
0x95
,
0xFF
,
0xFD
,
0x93
,
0xA7
,
0x38
,
0xD4
,
0xF4
,
0xF1
,
0xF3
,
0x43
,
0x38
,
0x2F
,
0x8F
,
0x71
,
0x32
,
0xA9
,
0xF8
,
0xDC
,
0xC2
,
0x9A
,
0x24
,
0x19
,
0x43
,
0x08
,
0xB0
,
0xD6
,
0xD1
,
0x8C
,
0x74
,
0xB2
,
0x96
,
0x31
,
0x06
,
0x25
,
0x15
,
0x81
,
0x14
,
0x71
,
0xA0
,
0xC4
,
0x91
,
0x37
,
0x9D
,
0xBA
,
0x94
,
0xB6
,
0x0D
,
0xE7
,
0x11
,
0x90
,
0xF1
,
0x15
,
0xD9
,
0x40
,
0x4D
,
0xE4
,
0x33
,
0x6A
,
0xCA
,
0x97
,
0x0C
,
0x38
,
0xA3
,
0x41
,
0x0B
,
0xE2
,
0x50
,
0x50
,
0x75
,
0x90
,
0x33
,
0x96
,
0x20
,
0xE3
,
0x27
,
0xE5
,
0x68
,
0x57
,
0x18
,
0x58
,
0x6B
,
0xC8
,
0x8A
,
0x16
,
0x7F
,
0xF2
,
0xA6
,
0xF5
,
0xBC
,
0x61
,
0xF5
,
0x10
,
0xC6
,
0x3A
,
0x3C
,
0x71
,
0x14
,
0xBD
,
0x58
,
0x10
,
0x32
,
0xF3
,
0xE6
,
0x76
,
0x40
,
0x29
,
0xC5
,
0xCE
,
0x03
,
0x07
,
0xF9
,
0xEC
,
0xAD
,
0xF7
,
0x20
,
0xA4
,
0xC7
,
0x27
,
0xDE
,
0xF7
,
0x4E
,
0x0A
,
0x19
,
0x9F
,
0xCF
,
0xDE
,
0xFE
,
0x33
,
0xBE
,
0xF7
,
0xD8
,
0x6E
,
0x22
,
0x59
,
0xC6
,
0xCB
,
0x55
,
0x30
,
0x22
,
0x9B
,
0xD4
,
0xFA
,
0x2F
,
0x63
,
0x75
,
0x00
,
0xE3
,
0x1C
,
0xAD
,
0xC8
,
0x10
,
0xC7
,
0x1A
,
0x67
,
0x1D
,
0xCE
,
0x1A
,
0x3C
,
0x5F
,
0x90
,
0xF3
,
0x65
,
0xAB
,
0xB7
,
0x10
,
0x8C
,
0x6B
,
0x63
,
0x16
,
0xAF
,
0x03
,
0x86
,
0x2B
,
0x39
,
0x56
,
0x0E
,
0xF7
,
0xCC
,
0x94
,
0x72
,
0xC1
,
0xBE
,
0x8C
,
0x2F
,
0x4F
,
0x12
,
0x46
,
0xE3
,
0x84
,
0xC0
,
0x49
,
0x81
,
0x89
,
0x05
,
0x0D
,
0xE7
,
0x88
,
0x8D
,
0x21
,
0x13
,
0xF8
,
0x48
,
0x25
,
0x93
,
0xA2
,
0xC7
,
0x59
,
0x9C
,
0x6E
,
0xF2
,
0xCE
,
0x37
,
0xAD
,
0xE2
,
0xF7
,
0x36
,
0xAD
,
0x4A
,
0x00
,
0x09
,
0xD7
,
0x01
,
0xBD
,
0x10
,
0x7C
,
0x1B
,
0x78
,
0xFB
,
0x3B
,
0x01
,
0x6C
,
0x7E
,
0xE6
,
0x59
,
0x3E
,
0xFF
,
0xED
,
0x1F
,
0xB2
,
0x61
,
0xCD
,
0x4A
,
0xDE
,
0x7F
,
0xED
,
0x9B
,
0xD9
,
0x77
,
0x68
,
0x92
,
0xBF
,
0xF9
,
0xFA
,
0x0F
,
0x79
,
0x62
,
0xCF
,
0x0C
,
0x32
,
0xDB
,
0x87
,
0x0C
,
0x4A
,
0x18
,
0xFC
,
0xE3
,
0xBA
,
0x7C
,
0x77
,
0x43
,
0x39
,
0x36
,
0x96
,
0x58
,
0x1B
,
0xAC
,
0x4D
,
0x57
,
0x95
,
0xD6
,
0x82
,
0x31
,
0x64
,
0x94
,
0x4F
,
0x39
,
0xE7
,
0xCF
,
0x64
,
0x7C
,
0x6F
,
0x6F
,
0xE0
,
0x29
,
0x02
,
0x4F
,
0x1D
,
0x4B
,
0xC0
,
0x89
,
0xCB
,
0x7A
,
0xD9
,
0x74
,
0xE2
,
0x50
,
0xF5
,
0x8E
,
0x9F
,
0xFB
,
0xCF
,
0x16
,
0x73
,
0xFE
,
0x65
,
0xC2
,
0x59
,
0xAC
,
0x8E
,
0x71
,
0x32
,
0x5D
,
0x8D
,
0x09
,
0x88
,
0xA3
,
0xA4
,
0x5E
,
0xF0
,
0x3C
,
0x85
,
0xE7
,
0x49
,
0x4C
,
0xDC
,
0xE2
,
0x8A
,
0x8D
,
0x43
,
0xFC
,
0xC9
,
0x65
,
0x1B
,
0x08
,
0x3C
,
0x0F
,
0xEB
,
0xE6
,
0x83
,
0x6F
,
0x2F
,
0x6D
,
0x93
,
0x82
,
0xE6
,
0xA8
,
0x57
,
0x48
,
0x29
,
0x89
,
0xA2
,
0x98
,
0xDB
,
0xEE
,
0xDB
,
0xCC
,
0x37
,
0x7E
,
0xFC
,
0x20
,
0xD7
,
0x5D
,
0xFC
,
0x46
,
0xAE
,
0xBD
,
0xF8
,
0x2C
,
0x7E
,
0xF4
,
0xE8
,
0x36
,
0xBE
,
0xF8
,
0xBD
,
0x87
,
0x19
,
0xAB
,
0x82
,
0x9F
,
0x1B
,
0xC4
,
0x79
,
0x79
,
0x2C
,
0xAA
,
0x03
,
0xFE
,
0x38
,
0x5D
,
0x73
,
0xAC
,
0x75
,
0xC4
,
0xC6
,
0xA6
,
0x79
,
0xC7
,
0xB5
,
0xC3
,
0x39
,
0x69
,
0xA8
,
0x58
,
0x4B
,
0x7F
,
0x31
,
0xA0
,
0x9C
,
0x95
,
0x2F
,
0xCE
,
0x4E
,
0x8C
,
0x1F
,
0x6E
,
0x36
,
0x8F
,
0x92
,
0x38
,
0x8F
,
0x80
,
0x4D
,
0x27
,
0x0E
,
0xF1
,
0xC7
,
0xFF
,
0xE3
,
0xFB
,
0x76
,
0xDD
,
0x8A
,
0xFE
,
0xC7
,
0x2B
,
0xC5
,
0x6C
,
0xE4
,
0x09
,
0x02
,
0xA3
,
0x35
,
0x4E
,
0x26
,
0xE0
,
0x3B
,
0x2E
,
0xEF
,
0x1C
,
0x91
,
0xB5
,
0xB4
,
0x9A
,
0x11
,
0xA7
,
0x8D
,
0x16
,
0xF9
,
0xD0
,
0x3B
,
0x36
,
0xD1
,
0x5B
,
0xCC
,
0x26
,
0x71
,
0xDF
,
0x65
,
0xF1
,
0x76
,
0x29
,
0xDB
,
0x9E
,
0x05
,
0x3A
,
0x5E
,
0x20
,
0x25
,
0xD3
,
0xB3
,
0x73
,
0x7C
,
0xF1
,
0xB6
,
0xEF
,
0xF3
,
0xD0
,
0x96
,
0x17
,
0xF8
,
0x8B
,
0xEB
,
0xDF
,
0xCA
,
0xC6
,
0x35
,
0xA3
,
0xFC
,
0xCF
,
0x6F
,
0xDD
,
0xC7
,
0xB7
,
0x1F
,
0x7C
,
0x8E
,
0x96
,
0x28
,
0xE2
,
0x65
,
0x2B
,
0x58
,
0x99
,
0x41
,
0x58
,
0x12
,
0x2B
,
0x2E
,
0x38
,
0x5C
,
0x97
,
0x2E
,
0xD6
,
0xBA
,
0xA3
,
0xC0
,
0xA1
,
0x33
,
0xF7
,
0x63
,
0x2D
,
0xCE
,
0x18
,
0xF2
,
0x81
,
0x62
,
0xA4
,
0xBF
,
0x40
,
0x3E
,
0x90
,
0x4F
,
0x7E
,
0xEB
,
0x3F
,
0x9F
,
0x3B
,
0xBB
,
0xE6
,
0xDD
,
0x9F
,
0x5A
,
0x9C
,
0x80
,
0xC3
,
0x33
,
0x4D
,
0x36
,
0xAE
,
0x1A
,
0x64
,
0xA8
,
0xAF
,
0xF0
,
0xC4
,
0x40
,
0x6F
,
0xE1
,
0x60
,
0x36
,
0x50
,
0x2B
,
0xC2
,
0x30
,
0xC2
,
0xC5
,
0x02
,
0x8B
,
0x40
,
0x72
,
0x74
,
0x1D
,
0x60
,
0x75
,
0x4C
,
0x7F
,
0xC1
,
0x71
,
0xE3
,
0x75
,
0x67
,
0xB2
,
0x7A
,
0xA8
,
0x27
,
0xA9
,
0xF1
,
0x3B
,
0xEB
,
0xF6
,
0xF9
,
0x56
,
0x5F
,
0x08
,
0x7E
,
0xF7
,
0x81
,
0x71
,
0x3E
,
0xFD
,
0xF5
,
0x3B
,
0x98
,
0x6D
,
0x84
,
0x7C
,
0xF2
,
0xCF
,
0xDE
,
0x4D
,
0x6C
,
0x1C
,
0x1F
,
0xFA
,
0xC7
,
0x3B
,
0xF8
,
0xE5
,
0x8E
,
0x09
,
0x44
,
0xB6
,
0x17
,
0x15
,
0x94
,
0x92
,
0x29
,
0xCE
,
0x42
,
0xFA
,
0xE7
,
0x18
,
0xF4
,
0x36
,
0x2D
,
0x71
,
0xAD
,
0x5B
,
0xE4
,
0xCB
,
0xB6
,
0xF5
,
0x8D
,
0xC1
,
0x17
,
0x8E
,
0x25
,
0x3D
,
0x39
,
0xFA
,
0x8B
,
0x99
,
0x66
,
0x5F
,
0xB9
,
0xF8
,
0xD0
,
0x45
,
0xFF
,
0xF0
,
0xA4
,
0xDD
,
0xF7
,
0xF0
,
0x77
,
0x17
,
0x27
,
0x60
,
0xB8
,
0x37
,
0xCF
,
0x77
,
0x36
,
0xEF
,
0x60
,
0xD3
,
0xFA
,
0xE5
,
0xBB
,
0x1F
,
0xDD
,
0xBA
,
0xFF
,
0x91
,
0x4A
,
0x29
,
0xB7
,
0x62
,
0x6E
,
0xAE
,
0x8E
,
0xD5
,
0x71
,
0x52
,
0x55
,
0x76
,
0x7A
,
0x0C
,
0x86
,
0x40
,
0x69
,
0xFE
,
0xFC
,
0xAD
,
0x67
,
0x73
,
0xC1
,
0xA9
,
0xCB
,
0x89
,
0xD3
,
0x15
,
0x5B
,
0x27
,
0xE6
,
0x84
,
0x40
,
0x76
,
0xAD
,
0xE1
,
0x9D
,
0x4B
,
0xAA
,
0x47
,
0x29
,
0x04
,
0x8F
,
0x3E
,
0xB3
,
0x9D
,
0x4F
,
0xFD
,
0xEB
,
0x77
,
0x59
,
0xB3
,
0x7C
,
0x29
,
0x1F
,
0x7C
,
0xCF
,
0xDB
,
0xF9
,
0xE5
,
0xB6
,
0x17
,
0xF9
,
0x5F
,
0xDF
,
0xD9
,
0xCC
,
0xFE
,
0x19
,
0x83
,
0x9F
,
0x1B
,
0x40
,
0xB4
,
0x5D
,
0x7E
,
0xA1
,
0xD5
,
0xD3
,
0xAD
,
0x38
,
0x97
,
0xEE
,
0x47
,
0x1E
,
0xFD
,
0x23
,
0xBA
,
0x92
,
0x80
,
0xEB
,
0xAC
,
0xFE
,
0x9C
,
0xB1
,
0xF8
,
0xD2
,
0x31
,
0x50
,
0xCC
,
0x30
,
0x50
,
0xCE
,
0xD0
,
0x5B
,
0xCC
,
0xEC
,
0x2A
,
0x17
,
0x82
,
0x47
,
0x85
,
0x08
,
0xF1
,
0x8B
,
0x95
,
0xC5
,
0x09
,
0x00
,
0xB8
,
0xE2
,
0x0D
,
0xAB
,
0xB8
,
0xEA
,
0xC6
,
0x5B
,
0x9A
,
0x97
,
0x9F
,
0xB9
,
0xE6
,
0x9E
,
0xE1
,
0x81
,
0xD2
,
0x35
,
0x07
,
0x0F
,
0x4E
,
0x66
,
0x9A
,
0x51
,
0x04
,
0xC2
,
0x75
,
0xDC
,
0xCE
,
0xC4
,
0x96
,
0x6B
,
0x2E
,
0x58
,
0xC3
,
0x1F
,
0x5E
,
0xB2
,
0x01
,
0x1D
,
0xC7
,
0xA9
,
0x15
,
0x5C
,
0x7B
,
0x12
,
0x4A
,
0x9E
,
0x80
,
0xEA
,
0x02
,
0xDF
,
0xF6
,
0x8A
,
0x1F
,
0x3C
,
0xF0
,
0x18
,
0x37
,
0xDF
,
0x79
,
0x2F
,
0x57
,
0x5C
,
0x70
,
0x16
,
0x6F
,
0x3A
,
0x63
,
0x03
,
0x37
,
0xDD
,
0xFD
,
0x10
,
0xB7
,
0xFE
,
0x7C
,
0x1B
,
0x4D
,
0x97
,
0xC7
,
0xCB
,
0xF6
,
0x63
,
0x65
,
0x16
,
0x61
,
0x45
,
0xE2
,
0xBA
,
0x8B
,
0xB9
,
0xFC
,
0xF1
,
0x1E
,
0x3A
,
0xE8
,
0x5E
,
0x03
,
0xB9
,
0xD4
,
0xF2
,
0x0A
,
0xFA
,
0x0B
,
0x19
,
0xCA
,
0x59
,
0x45
,
0x5F
,
0x29
,
0x4B
,
0x4F
,
0x21
,
0xF3
,
0x93
,
0xF7
,
0x5C
,
0xBC
,
0x7E
,
0xEC
,
0xB6
,
0x5F
,
0xEC
,
0xE0
,
0xCF
,
0xFE
,
0xDB
,
0x87
,
0x8E
,
0x4F
,
0xC0
,
0xBE
,
0xC3
,
0x73
,
0xFC
,
0xFE
,
0x9B
,
0x4E
,
0x61
,
0xA0
,
0x52
,
0xB8
,
0x6F
,
0x74
,
0xB8
,
0xB2
,
0xED
,
0xC5
,
0x3D
,
0xD9
,
0x33
,
0x5A
,
0x47
,
0x5A
,
0x10
,
0x77
,
0x0F
,
0x6D
,
0x38
,
0x30
,
0x7E
,
0x88
,
0xC3
,
0xD3
,
0x73
,
0x0C
,
0x57
,
0x0A
,
0x49
,
0xB3
,
0x22
,
0xB5
,
0xBA
,
0x50
,
0x2A
,
0x59
,
0x09
,
0x76
,
0x85
,
0x41
,
0x18
,
0xC5
,
0xDC
,
0x72
,
0xCF
,
0x7D
,
0xFC
,
0xE2
,
0x89
,
0xAD
,
0xBC
,
0xFF
,
0xFA
,
0xAB
,
0xC9
,
0x64
,
0x73
,
0xFC
,
0xD5
,
0x97
,
0xEE
,
0xE4
,
0xE1
,
0xE7
,
0x0F
,
0x23
,
0x32
,
0x15
,
0x54
,
0xA6
,
0x88
,
0x13
,
0xFE
,
0xD1
,
0xD8
,
0x7D
,
0xAD
,
0x47
,
0x1A
,
0x07
,
0x6D
,
0x0F
,
0xCC
,
0x7A
,
0x92
,
0xBE
,
0x62
,
0x40
,
0xCE
,
0x13
,
0x94
,
0x32
,
0x1E
,
0x83
,
0x3D
,
0xB9
,
0x89
,
0x4A
,
0x31
,
0xFB
,
0x9D
,
0x4F
,
0x7F
,
0xFB
,
0x51
,
0xF3
,
0xF5
,
0x9F
,
0x1F
,
0x9C
,
0xF7
,
0xD3
,
0x63
,
0x4A
,
0xBA
,
0x93
,
0x57
,
0xF4
,
0xB3
,
0x62
,
0xB8
,
0xC2
,
0xBB
,
0x2E
,
0x39
,
0xE5
,
0xC0
,
0xC8
,
0x50
,
0xCF
,
0xAD
,
0x23
,
0x4B
,
0x7A
,
0x6D
,
0xE0
,
0x49
,
0x9C
,
0x8E
,
0xB1
,
0x71
,
0x8C
,
0x8B
,
0x23
,
0x84
,
0x73
,
0x3C
,
0xBC
,
0x65
,
0x2F
,
0x9F
,
0xFC
,
0xDA
,
0xF7
,
0xA9
,
0x35
,
0x93
,
0x56
,
0xB5
,
0x6B
,
0x2B
,
0x61
,
0x8F
,
0x6E
,
0x62
,
0x00
,
0xCC
,
0x56
,
0x6B
,
0x7C
,
0xE1
,
0x5F
,
0xEF
,
0x60
,
0xE7
,
0xBE
,
0x71
,
0x3E
,
0xFA
,
0xBE
,
0x7F
,
0xC7
,
0xD8
,
0x54
,
0x9D
,
0x0F
,
0x7C
,
0xEE
,
0x76
,
0x36
,
0x3F
,
0x37
,
0x89
,
0xCC
,
0xF6
,
0x23
,
0xFD
,
0x12
,
0x4E
,
0x78
,
0x09
,
0x78
,
0x6B
,
0xE7
,
0x09
,
0xAF
,
0x20
,
0xDD
,
0xD7
,
0x38
,
0x63
,
0xC0
,
0x18
,
0x8A
,
0x81
,
0x64
,
0xB0
,
0x14
,
0x90
,
0x55
,
0xE0
,
0x0B
,
0x47
,
0x7F
,
0x4F
,
0x8E
,
0x81
,
0x9E
,
0xFC
,
0x8F
,
0xD7
,
0x2C
,
0xEB
,
0x7D
,
0x6C
,
0xB0
,
0x27
,
0xC7
,
0x27
,
0xDE
,
0xB3
,
0x7E
,
0x1E
,
0xDE
,
0x45
,
0x9F
,
0x68
,
0x78
,
0xDB
,
0x7B
,
0x6E
,
0xE0
,
0xEC
,
0x2B
,
0xDF
,
0xC3
,
0x60
,
0x6F
,
0x71
,
0xAC
,
0xD6
,
0x08
,
0x2F
,
0x9A
,
0x98
,
0x9C
,
0x5D
,
0x5A
,
0xAF
,
0x37
,
0xD2
,
0x8D
,
0xCB
,
0xA4
,
0x06
,
0x12
,
0x52
,
0xF2
,
0xC2
,
0x9E
,
0x71
,
0xB0
,
0x31
,
0xE7
,
0x9C
,
0xB6
,
0x16
,
0x29
,
0x8E
,
0xBA
,
0xBC
,
0x73
,
0x16
,
0xA5
,
0x14
,
0x63
,
0x87
,
0x27
,
0xF9
,
0xD2
,
0xAD
,
0x77
,
0xB1
,
0x6C
,
0x68
,
0x80
,
0x6B
,
0x2F
,
0xBF
,
0x88
,
0x7F
,
0xFE
,
0xFE
,
0xC3
,
0x7C
,
0xEE
,
0xF6
,
0xCD
,
0x4C
,
0xB5
,
0x02
,
0xFC
,
0x6C
,
0x2F
,
0x42
,
0x65
,
0x93
,
0x4D
,
0x0C
,
0x77
,
0x34
,
0x7E
,
0x5F
,
0xB3
,
0xA4
,
0x44
,
0x28
,
0x1C
,
0xBD
,
0x85
,
0x80
,
0xDE
,
0x82
,
0x8F
,
0x87
,
0x45
,
0x3A
,
0x43
,
0x4F
,
0x21
,
0x60
,
0xF5
,
0x48
,
0xFF
,
0xC4
,
0xE8
,
0x70
,
0xE5
,
0xBF
,
0xEE
,
0x1A
,
0x9B
,
0x7A
,
0xE1
,
0x5D
,
0x97
,
0xAC
,
0xE7
,
0x8C
,
0x13
,
0x97
,
0xBD
,
0xBC
,
0x07
,
0x00
,
0xBC
,
0xEB
,
0xD2
,
0x53
,
0x39
,
0x61
,
0x49
,
0x85
,
0xF7
,
0xFF
,
0xF9
,
0x97
,
0xF7
,
0xAC
,
0x1C
,
0xE9
,
0xFF
,
0xA7
,
0x55
,
0xA3
,
0x43
,
0xAD
,
0x5C
,
0xC6
,
0x07
,
0x13
,
0xE3
,
0x74
,
0x84
,
0x8B
,
0x63
,
0x30
,
0x60
,
0xC8
,
0x72
,
0xD3
,
0x9D
,
0x8F
,
0x70
,
0xF3
,
0x5D
,
0x9B
,
0x41
,
0xC8
,
0xD4
,
0xF2
,
0x1A
,
0x29
,
0x24
,
0xDB
,
0x76
,
0xED
,
0xE5
,
0x96
,
0xBB
,
0x7F
,
0xC2
,
0x65
,
0xE7
,
0x9E
,
0xC9
,
0xC6
,
0x53
,
0x4E
,
0xE6
,
0x23
,
0x9F
,
0xBF
,
0x9D
,
0xAF
,
0xFE
,
0xE0
,
0x57
,
0x84
,
0xA2
,
0x8C
,
0x97
,
0xE9
,
0x01
,
0x19
,
0x24
,
0xC1
,
0xFB
,
0x2A
,
0xAD
,
0x8D
,
0x4D
,
0x4A
,
0x5F
,
0xD7
,
0x65
,
0x7D
,
0x67
,
0x4C
,
0xD2
,
0x66
,
0xF7
,
0x04
,
0xC3
,
0x3D
,
0x59
,
0x2A
,
0x39
,
0x0F
,
0x65
,
0x0D
,
0xC2
,
0x18
,
0xB2
,
0x9E
,
0x60
,
0x49
,
0x5F
,
0x89
,
0xA1
,
0x4A
,
0xF1
,
0xD6
,
0xD3
,
0x4F
,
0x5C
,
0xFA
,
0xE0
,
0xE8
,
0x50
,
0x99
,
0x07
,
0xB6
,
0x8C
,
0x1D
,
0x83
,
0xF5
,
0xB8
,
0xCF
,
0xB4
,
0x5C
,
0xF1
,
0xCE
,
0xF7
,
0x71
,
0xE9
,
0xA5
,
0x1B
,
0x59
,
0x39
,
0xD2
,
0xBF
,
0xAB
,
0xD6
,
0x08
,
0xD7
,
0xCF
,
0xCC
,
0xD5
,
0x4F
,
0x99
,
0x9B
,
0xAD
,
0x61
,
0x8D
,
0xE9
,
0x2C
,
0x71
,
0x85
,
0x90
,
0xC4
,
0x16
,
0x1E
,
0xDF
,
0xF6
,
0x02
,
0xA5
,
0xBC
,
0xCF
,
0xE9
,
0x27
,
0xAD
,
0x40
,
0x08
,
0xC1
,
0xA3
,
0x5B
,
0x9F
,
0x67
,
0xDB
,
0xCE
,
0x3D
,
0x5C
,
0x7D
,
0xE9
,
0x05
,
0x3C
,
0xBB
,
0x77
,
0x82
,
0xBF
,
0xFE
,
0xE2
,
0x77
,
0xD9
,
0xB6
,
0x7F
,
0x0E
,
0x2F
,
0xD7
,
0x8B
,
0xF4
,
0xF2
,
0x20
,
0xD5
,
0xC2
,
0xCC
,
0xB6
,
0xE0
,
0x38
,
0x4E
,
0x93
,
0xBD
,
0x63
,
0xF9
,
0x84
,
0x80
,
0x40
,
0x0A
,
0x7A
,
0x0B
,
0x01
,
0x7D
,
0xC5
,
0x0C
,
0x19
,
0x05
,
0xC2
,
0x1A
,
0xB0
,
0x06
,
0x5F
,
0x3A
,
0x06
,
0x7B
,
0x0B
,
0xAC
,
0x5A
,
0x3E
,
0xF0
,
0xCC
,
0x09
,
0x4B
,
0x7B
,
0xFF
,
0x6A
,
0xEF
,
0x4B
,
0xD3
,
0x87
,
0x8E
,
0xCC
,
0x35
,
0xF8
,
0xD3
,
0xAB
,
0xDF
,
0x70
,
0xCC
,
0x2D
,
0x5F
,
0xB6
,
0x97
,
0xED
,
0x9C
,
0xE3
,
0x23
,
0x5F
,
0xF8
,
0x01
,
0xC3
,
0xFD
,
0xE5
,
0x33
,
0x1E
,
0x7B
,
0x66
,
0xF7
,
0x2D
,
0x0F
,
0x3F
,
0xF1
,
0xDC
,
0xBA
,
0x89
,
0x89
,
0x69
,
0xAC
,
0x13
,
0xA0
,
0x14
,
0x42
,
0x79
,
0x08
,
0x4F
,
0x62
,
0x6D
,
0x4C
,
0xCE
,
0x0B
,
0xB9
,
0xE1
,
0xBA
,
0xF3
,
0x39
,
0xF3
,
0x94
,
0x15
,
0xF8
,
0x9E
,
0x60
,
0x74
,
0x64
,
0x19
,
0x37
,
0xDD
,
0xFE
,
0x33
,
0x6E
,
0xB9
,
0xF7
,
0x49
,
0x42
,
0x0A
,
0xA8
,
0x6C
,
0x19
,
0x21
,
0x03
,
0xE8
,
0xB4
,
0xD5
,
0x5F
,
0xE5
,
0x86
,
0x62
,
0x17
,
0x49
,
0xED
,
0xFA
,
0xC2
,
0x93
,
0x82
,
0x62
,
0xCE
,
0xA7
,
0x9C
,
0x0B
,
0x08
,
0x94
,
0x40
,
0xB8
,
0xC4
,
0x3B
,
0x84
,
0xB5
,
0x28
,
0x61
,
0xA9
,
0x14
,
0x73
,
0xAC
,
0x5D
,
0xB9
,
0x64
,
0x76
,
0xDD
,
0xCA
,
0xA1
,
0x1B
,
0x3E
,
0xFD
,
0xAD
,
0x27
,
0xBF
,
0x79
,
0xEB
,
0xC7
,
0xAF
,
0xE2
,
0xE0
,
0xAC
,
0xE6
,
0xDA
,
0x0B
,
0x4F
,
0x7E
,
0xF5
,
0x1E
,
0x00
,
0xB0
,
0xF6
,
0xDC
,
0x6B
,
0x19
,
0x19
,
0xAC
,
0x70
,
0xC3
,
0xF5
,
0x7F
,
0xFB
,
0xD2
,
0x75
,
0xEF
,
0xB9
,
0x6C
,
0x3A
,
0x36
,
0xF6
,
0x92
,
0xE9
,
0xE9
,
0x6A
,
0x36
,
0x6C
,
0xB6
,
0xDA
,
0xFD
,
0xC3
,
0x64
,
0xEA
,
0x13
,
0x8A
,
0xD8
,
0x08
,
0x1E
,
0x79
,
0x66
,
0x27
,
0xE3
,
0x47
,
0xA6
,
0x59
,
0x35
,
0x3A
,
0xC2
,
0xA7
,
0x6E
,
0xBE
,
0x9B
,
0xEF
,
0x6D
,
0x7E
,
0x0E
,
0xEB
,
0xF5
,
0x20
,
0xFD
,
0x22
,
0x42
,
0xFA
,
0xB4
,
0x5B
,
0x54
,
0x9D
,
0x95
,
0xC8
,
0xAB
,
0x88
,
0xEF
,
0x76
,
0x43
,
0x03
,
0xE7
,
0xF0
,
0xA4
,
0xA0
,
0x94
,
0xF3
,
0x18
,
0x28
,
0x65
,
0x29
,
0x67
,
0x3D
,
0x3C
,
0xE1
,
0x10
,
0x2E
,
0xB1
,
0xBA
,
0xB0
,
0x06
,
0xE9
,
0x0C
,
0xA5
,
0x5C
,
0xC0
,
0x8A
,
0x91
,
0x7E
,
0xBD
,
0x72
,
0xD9
,
0xC0
,
0x67
,
0x2F
,
0xD9
,
0xB4
,
0xE6
,
0x4B
,
0xAF
,
0x5B
,
0x3B
,
0x60
,
0x9A
,
0x91
,
0xE6
,
0xBA
,
0x8B
,
0x4E
,
0x5D
,
0x14
,
0xE3
,
0xCB
,
0x12
,
0xF0
,
0x82
,
0x38
,
0x95
,
0xB7
,
0x9F
,
0xBF
,
0x9E
,
0xF3
,
0xAF
,
0x3C
,
0x9B
,
0x2B
,
0xCE
,
0x3B
,
0xF5
,
0xB9
,
0x83
,
0x93
,
0x73
,
0x26
,
0x36
,
0xF6
,
0xDC
,
0xD9
,
0xD9
,
0xAA
,
0x1F
,
0x85
,
0x61
,
0x92
,
0x14
,
0xD3
,
0x82
,
0x45
,
0x08
,
0x09
,
0xD2
,
0x63
,
0xFF
,
0xA1
,
0x59
,
0xEE
,
0x7D
,
0x78
,
0x3B
,
0x7B
,
0x0F
,
0xD7
,
0xF1
,
0x82
,
0x12
,
0xB2
,
0x93
,
0xE8
,
0x5C
,
0x32
,
0x5D
,
0x39
,
0x9B
,
0x36
,
0x57
,
0xEC
,
0xCB
,
0x82
,
0x4F
,
0x4A
,
0x59
,
0x87
,
0xC4
,
0x91
,
0xF5
,
0x25
,
0x3D
,
0xF9
,
0xC4
,
0xD5
,
0x4B
,
0x59
,
0x2F
,
0x59
,
0x66
,
0xBB
,
0x04
,
0xB4
,
0xE8
,
0x80
,
0xB7
,
0x14
,
0xB2
,
0x3E
,
0xA3
,
0xCB
,
0xFA
,
0xDD
,
0xE8
,
0xB2
,
0xFE
,
0x7F
,
0x1E
,
0xEA
,
0x2F
,
0xFF
,
0x8D
,
0xD1
,
0xB6
,
0xFE
,
0xF4
,
0xCE
,
0x43
,
0x7C
,
0xF2
,
0x5F
,
0x1E
,
0x60
,
0xE4
,
0x8C
,
0xB7
,
0x52
,
0x5C
,
0x77
,
0x19
,
0xB3
,
0xCF
,
0xFE
,
0xF8
,
0xD5
,
0x11
,
0xD0
,
0x73
,
0xE5
,
0x27
,
0x31
,
0xD6
,
0x32
,
0x35
,
0x53
,
0xE7
,
0xC7
,
0x8F
,
0xEF
,
0xE2
,
0xE3
,
0xFF
,
0xE1
,
0x02
,
0xBB
,
0x7D
,
0xFF
,
0xF4
,
0x93
,
0xBE
,
0x92
,
0xBE
,
0xC5
,
0x9D
,
0x3D
,
0x3B
,
0x57
,
0xF3
,
0xA2
,
0x56
,
0x88
,
0xB3
,
0xA6
,
0xCB
,
0xAA
,
0x02
,
0x21
,
0x14
,
0x0E
,
0x0F
,
0xA9
,
0x32
,
0x20
,
0xD2
,
0x32
,
0xA3
,
0x03
,
0xD6
,
0x76
,
0x48
,
0xC0
,
0x76
,
0xC5
,
0x73
,
0x97
,
0xE0
,
0x2C
,
0x12
,
0x4B
,
0xA0
,
0x24
,
0xC5
,
0xAC
,
0x47
,
0x6F
,
0x21
,
0xA0
,
0x27
,
0x1F
,
0x90
,
0x0B
,
0x54
,
0x62
,
0x71
,
0x6B
,
0xBB
,
0xC0
,
0x5B
,
0xB0
,
0x1A
,
0x89
,
0xA3
,
0x90
,
0xF5
,
0x59
,
0xBE
,
0xB4
,
0x8F
,
0xE5
,
0x4B
,
0xFB
,
0xEF
,
0x40
,
0x79
,
0x37
,
0x7E
,
0xF4
,
0x8F
,
0x2E
,
0x3C
,
0xFC
,
0xC3
,
0x83
,
0x23
,
0xF2
,
0xF1
,
0xE7
,
0xC7
,
0xC8
,
0x67
,
0x7C
,
0x96
,
0x0F
,
0x94
,
0x78
,
0xF1
,
0xE0
,
0x2C
,
0x76
,
0xF4
,
0x42
,
0xEC
,
0x9E
,
0xFB
,
0x5F
,
0x3E
,
0x07
,
0x8C
,
0xBC
,
0xFD
,
0xBF
,
0x13
,
0xC6
,
0x86
,
0xD8
,
0x58
,
0x02
,
0x4F
,
0x89
,
0x30
,
0xD2
,
0x38
,
0x10
,
0xD5
,
0x47
,
0x76
,
0x8A
,
0xF7
,
0x7F
,
0xFC
,
0xBA
,
0x12
,
0x71
,
0xF4
,
0xD1
,
0x67
,
0x77
,
0xEC
,
0xFB
,
0x4F
,
0xDB
,
0x9F
,
0x7B
,
0x31
,
0x37
,
0x3B
,
0x53
,
0x4D
,
0x16
,
0x22
,
0x52
,
0xA5
,
0x9B
,
0x27
,
0x5D
,
0x67
,
0xA9
,
0x40
,
0x76
,
0x6F
,
0xA9
,
0xB5
,
0x5B
,
0xEA
,
0x47
,
0x37
,
0x58
,
0x45
,
0x5A
,
0x40
,
0x29
,
0x25
,
0xF1
,
0x3D
,
0x45
,
0x26
,
0x50
,
0x64
,
0x03
,
0x8F
,
0xC0
,
0x53
,
0x28
,
0x99
,
0x36
,
0x4D
,
0xD2
,
0x90
,
0x11
,
0x38
,
0x84
,
0x73
,
0x08
,
0x12
,
0x42
,
0x85
,
0xB3
,
0x28
,
0x01
,
0xC5
,
0x7C
,
0x86
,
0x91
,
0xA5
,
0x03
,
0x6E
,
0xC9
,
0x70
,
0xDF
,
0x9D
,
0x73
,
0x4D
,
0x7D
,
0xE3
,
0x97
,
0xBF
,
0x76
,
0xFF
,
0xDE
,
0xE2
,
0x09
,
0x03
,
0x90
,
0x2C
,
0x24
,
0xAC
,
0x00
,
0x2B
,
0xA5
,
0x64
,
0x76
,
0xAE
,
0xE1
,
0xCE
,
0x58
,
0xBF
,
0x9C
,
0xFE
,
0x9E
,
0x1C
,
0xF7
,
0x7E
,
0xF6
,
0xBD
,
0xC7
,
0xF7
,
0x80
,
0x81
,
0x8D
,
0x57
,
0xB2
,
0xB4
,
0xAF
,
0xC8
,
0x4C
,
0x2D
,
0x14
,
0xAD
,
0x48
,
0x0B
,
0x92
,
0xE9
,
0xD2
,
0x0B
,
0x46
,
0xFA
,
0x82
,
0xCD
,
0xCF
,
0xEC
,
0xC5
,
0xCF
,
0x66
,
0x9F
,
0x3A
,
0x69
,
0xC5
,
0x60
,
0x54
,
0x2C
,
0x64
,
0x4F
,
0x0B
,
0xC3
,
0x28
,
0x17
,
0xB6
,
0x42
,
0x9C
,
0xD1
,
0x47
,
0x2D
,
0x6B
,
0xDB
,
0x96
,
0xB2
,
0x88
,
0xD4
,
0xE5
,
0x85
,
0x4B
,
0xF6
,
0x18
,
0x14
,
0xC9
,
0xE3
,
0x6C
,
0x81
,
0x92
,
0xE4
,
0x03
,
0x45
,
0x21
,
0xA3
,
0x28
,
0xE5
,
0x7C
,
0xCA
,
0x39
,
0x9F
,
0x52
,
0xC6
,
0x23
,
0xEB
,
0x2B
,
0x7C
,
0x49
,
0xBA
,
0x1F
,
0x69
,
0x13
,
0x4B
,
0xBB
,
0x64
,
0x5E
,
0x17
,
0xCE
,
0x20
,
0xAC
,
0xEE
,
0xC4
,
0x7B
,
0x20
,
0x05
,
0xBD
,
0xE5
,
0x02
,
0xA3
,
0xCB
,
0x06
,
0xA3
,
0x9E
,
0x4A
,
0xE9
,
0xDB
,
0x5B
,
0xF6
,
0x4C
,
0xFE
,
0xFD
,
0x6D
,
0x3F
,
0x7F
,
0xF6
,
0x48
,
0x71
,
0xA0
,
0x94
,
0xCE
,
0xB1
,
0x47
,
0x0D
,
0x6C
,
0xAD
,
0x25
,
0x97
,
0x0B
,
0xB8
,
0xEA
,
0x9C
,
0x93
,
0x68
,
0x86
,
0x9A
,
0x0F
,
0xDF
,
0xF8
,
0x5F
,
0xB8
,
0xEB
,
0xFF
,
0xDC
,
0xB4
,
0x88
,
0x07
,
0x9C
,
0xFF
,
0x31
,
0x0A
,
0xD9
,
0x00
,
0x29
,
0x05
,
0xCE
,
0x39
,
0x91
,
0xEA
,
0xAC
,
0x00
,
0x1F
,
0xC8
,
0x00
,
0x39
,
0x6D
,
0x6C
,
0xA6
,
0x98
,
0xCF
,
0xE4
,
0x2F
,
0xDA
,
0xB8
,
0xFC
,
0x2A
,
0x11
,
0x87
,
0x37
,
0xEC
,
0xDD
,
0x3B
,
0xBE
,
0x6A
,
0x7C
,
0x7C
,
0x82
,
0x66
,
0xB3
,
0x99
,
0xF6
,
0x03
,
0x12
,
0xEB
,
0x0B
,
0x25
,
0x91
,
0x4A
,
0xCD
,
0x93
,
0xF6
,
0x66
,
0x87
,
0x52
,
0xE9
,
0x76
,
0x7B
,
0xBB
,
0x84
,
0xEE
,
0xB4
,
0xC8
,
0x44
,
0x47
,
0x73
,
0x21
,
0xDA
,
0x0F
,
0x45
,
0xBA
,
0xA4
,
0x35
,
0x8F
,
0x43
,
0xE0
,
0x50
,
0x02
,
0xB2
,
0xD9
,
0x80
,
0x81
,
0xBE
,
0x1E
,
0x06
,
0x06
,
0x7B
,
0xA7
,
0x5B
,
0x56
,
0xDE
,
0xF6
,
0xC0
,
0xD6
,
0x03
,
0xDF
,
0x7A
,
0x69
,
0xB2
,
0x36
,
0xE3
,
0x7B
,
0x32
,
0x22
,
0xF9
,
0xEF
,
0x93
,
0x56
,
0x7A
,
0x0E
,
0x81
,
0x18
,
0xD0
,
0x4A
,
0x0A
,
0x7B
,
0xCE
,
0xA9
,
0xA3
,
0xEE
,
0x47
,
0x9F
,
0xF9
,
0xA6
,
0xBB
,
0xEB
,
0xA1
,
0xCF
,
0x72
,
0xF5
,
0xB9
,
0x27
,
0x2F
,
0xE2
,
0x01
,
0xA3
,
0x17
,
0x12
,
0xCF
,
0x35
,
0x50
,
0x59
,
0x5F
,
0xC8
,
0x64
,
0x1D
,
0xAB
,
0x80
,
0x00
,
0xC8
,
0x02
,
0x45
,
0xA0
,
0x2C
,
0xA5
,
0xE8
,
0x8D
,
0xB5
,
0xED
,
0xDB
,
0x31
,
0x36
,
0x3D
,
0xE3
,
0x67
,
0x33
,
0x2F
,
0xAE
,
0x1C
,
0x19
,
0x2C
,
0xF4
,
0xF5
,
0x14
,
0x87
,
0x04
,
0x78
,
0xCE
,
0x18
,
0x04
,
0x16
,
0x25
,
0x93
,
0xAC
,
0xED
,
0x49
,
0x50
,
0x42
,
0xA0
,
0x64
,
0xD2
,
0x29
,
0x92
,
0x24
,
0x22
,
0x52
,
0x0B
,
0xCB
,
0xD4
,
0xA5
,
0x85
,
0x33
,
0xF3
,
0x2C
,
0x9E
,
0x48
,
0x12
,
0xE7
,
0xC2
,
0x26
,
0xF7
,
0x94
,
0x58
,
0xB2
,
0xBE
,
0x47
,
0x6F
,
0xA5
,
0xC8
,
0xB2
,
0xA5
,
0x03
,
0xA6
,
0x50
,
0x2E
,
0xBD
,
0xB0
,
0xF3
,
0x70
,
0xED
,
0xF6
,
0x9F
,
0x3D
,
0xBD
,
0xEF
,
0xF1
,
0x5A
,
0x33
,
0xCA
,
0x78
,
0x4A
,
0x16
,
0x52
,
0x23
,
0xB5
,
0x9F
,
0x96
,
0x4A
,
0xD8
,
0x4B
,
0x43
,
0xC1
,
0x5A
,
0xE7
,
0xC2
,
0x48
,
0xBB
,
0xBF
,
0xFC
,
0xE8
,
0x3B
,
0xF9
,
0xE5
,
0x96
,
0xFD
,
0x3C
,
0x75
,
0xDF
,
0xAD
,
0xC7
,
0x12
,
0x50
,
0x38
,
0xF9
,
0xCD
,
0x54
,
0x7A
,
0x8B
,
0x44
,
0xDA
,
0x08
,
0x29
,
0x84
,
0x24
,
0x59
,
0x30
,
0x05
,
0x40
,
0x1E
,
0x28
,
0x03
,
0xBD
,
0x40
,
0xBF
,
0x10
,
0x0C
,
0x48
,
0x21
,
0x06
,
0x0F
,
0x4D
,
0x37
,
0xBC
,
0x03
,
0x53
,
0x8D
,
0x03
,
0x95
,
0x9E
,
0xE2
,
0xDC
,
0x8A
,
0x65
,
0x03
,
0xA5
,
0x9E
,
0x52
,
0xBE
,
0x20
,
0x85
,
0x94
,
0xAE
,
0xAB
,
0x7A
,
0x4B
,
0x2C
,
0x67
,
0x3B
,
0xC0
,
0x65
,
0x1A
,
0xCB
,
0x12
,
0xDB
,
0x05
,
0xD6
,
0xCE
,
0x07
,
0x9E
,
0x82
,
0x97
,
0x24
,
0x44
,
0x66
,
0x03
,
0x9F
,
0xDE
,
0x9E
,
0x22
,
0x4B
,
0x87
,
0xFB
,
0xE9
,
0x1B
,
0xE8
,
0x9D
,
0x3E
,
0xDC
,
0x30
,
0x8F
,
0x6D
,
0x7E
,
0xEE
,
0xE0
,
0x43
,
0xBB
,
0xC6
,
0x67
,
0x66
,
0x85
,
0xA0
,
0x24
,
0x84
,
0x28
,
0xA4
,
0x46
,
0x0A
,
0xBA
,
0x42
,
0xDB
,
0x92
,
0xF4
,
0xD0
,
0x34
,
0x60
,
0x85
,
0x10
,
0xB6
,
0x15
,
0x6A
,
0xFA
,
0x4A
,
0x39
,
0xB7
,
0xEB
,
0xC0
,
0x24
,
0xFB
,
0x1E
,
0xBF
,
0xEB
,
0x58
,
0x02
,
0xD6
,
0x5F
,
0x70
,
0x1D
,
0x2B
,
0x86
,
0x7B
,
0x38
,
0x3C
,
0x5D
,
0x97
,
0x2E
,
0x8D
,
0xFD
,
0x94
,
0xD5
,
0x36
,
0x01
,
0x15
,
0xA0
,
0xAF
,
0x2D
,
0x52
,
0x88
,
0x5E
,
0xAD
,
0x6D
,
0x79
,
0x7C
,
0xAA
,
0xD6
,
0x3C
,
0x52
,
0x8B
,
0x0F
,
0xF6
,
0xF4
,
0x94
,
0x1A
,
0xCB
,
0x96
,
0xF4
,
0x65
,
0x06
,
0x7A
,
0xCB
,
0x99
,
0x6C
,
0x36
,
0x90
,
0x2A
,
0xDD
,
0x5D
,
0x92
,
0x0B
,
0xAC
,
0xDF
,
0x26
,
0xA1
,
0x9D
,
0xD4
,
0xDA
,
0x16
,
0x4E
,
0xBC
,
0x24
,
0x79
,
0x04
,
0x37
,
0x1B
,
0xF8
,
0x14
,
0x8B
,
0x39
,
0x06
,
0xFA
,
0x7A
,
0x18
,
0x1E
,
0xEE
,
0xB7
,
0xA5
,
0x4A
,
0xCF
,
0xDC
,
0x74
,
0xC4
,
0xCE
,
0x27
,
0x76
,
0x4F
,
0x3E
,
0xB3
,
0x6D
,
0xEF
,
0xE4
,
0xC1
,
0x30
,
0xD2
,
0x9E
,
0x94
,
0x22
,
0x9F
,
0xEA
,
0x17
,
0xA4
,
0xBA
,
0xB6
,
0x9F
,
0x59
,
0x35
,
0xA9
,
0xEB
,
0x47
,
0xED
,
0x10
,
0x20
,
0xE9
,
0x9C
,
0xB9
,
0xB1
,
0x23
,
0x73
,
0xEE
,
0xE0
,
0x74
,
0x83
,
0xE6
,
0x0B
,
0xF7
,
0x1D
,
0xBB
,
0x1C
,
0x56
,
0x69
,
0x5C
,
0x2E
,
0xD8
,
0x67
,
0x6C
,
0x27
,
0x42
,
0x95
,
0x0E
,
0xE2
,
0xA7
,
0x03
,
0x06
,
0x40
,
0x46
,
0x08
,
0x32
,
0x02
,
0x91
,
0x99
,
0xA9
,
0x35
,
0x79
,
0xF4
,
0x85
,
0xE6
,
0xDE
,
0x52
,
0x3E
,
0x33
,
0x31
,
0x3A
,
0x50
,
0x1C
,
0x58
,
0x32
,
0xB4
,
0x64
,
0xC9
,
0xE0
,
0x12
,
0xD7
,
0x6F
,
0xA2
,
0xB0
,
0xD0
,
0x6A
,
0xB6
,
0xBC
,
0x56
,
0x2B
,
0x24
,
0x8A
,
0x22
,
0x74
,
0x6C
,
0xB0
,
0xF6
,
0x68
,
0x67
,
0x56
,
0x4A
,
0x81
,
0x54
,
0x12
,
0xDF
,
0xF3
,
0x08
,
0x02
,
0x9F
,
0x4C
,
0x26
,
0x20
,
0x9B
,
0xCD
,
0x90
,
0xCB
,
0x65
,
0x8D
,
0xF4
,
0xFD
,
0x56
,
0xD3
,
0x30
,
0xB3
,
0x6F
,
0xA6
,
0x75
,
0x68
,
0xCF
,
0xC4
,
0xF4
,
0x91
,
0xA9
,
0xB9
,
0x56
,
0xDD
,
0xE1
,
0xAC
,
0x14
,
0x22
,
0x07
,
0x22
,
0x4E
,
0xC1
,
0xB5
,
0x5D
,
0x3D
,
0xEE
,
0xD2
,
0xCB
,
0x4B
,
0xF5
,
0x95
,
0xA9
,
0x74
,
0xF2
,
0x9D
,
0x36
,
0x4E
,
0xD8
,
0x74
,
0xBD
,
0x7E
,
0x0C
,
0x01
,
0xA6
,
0xF3
,
0x9C
,
0xCE
,
0xBC
,
0x8F
,
0xDB
,
0x71
,
0xD4
,
0xCD
,
0x6A
,
0x98
,
0x4A
,
0x7B
,
0x5F
,
0xDA
,
0x09
,
0x21
,
0xAC
,
0x00
,
0xAF
,
0xD6
,
0x88
,
0xEC
,
0xB6
,
0xBD
,
0x93
,
0x8D
,
0xE7
,
0x95
,
0x1C
,
0xAB
,
0x14
,
0x32
,
0xB9
,
0xC1
,
0x9E
,
0x5C
,
0xB9
,
0xBF
,
0x58
,
0xAE
,
0x94
,
0xCB
,
0xB2
,
0xE4
,
0x4B
,
0xF2
,
0x9E
,
0x20
,
0x27
,
0x70
,
0x7E
,
0xB2
,
0xA9
,
0x97
,
0xF4
,
0x4B
,
0xA4
,
0x94
,
0x0E
,
0x21
,
0x63
,
0xED
,
0x68
,
0xC5
,
0x96
,
0x66
,
0x2B
,
0xB6
,
0xF5
,
0xF1
,
0xE9
,
0x70
,
0xF6
,
0xD0
,
0xCC
,
0xDC
,
0xDC
,
0x74
,
0xAD
,
0xD5
,
0x88
,
0x62
,
0xA3
,
0x11
,
0x38
,
0x29
,
0x84
,
0x15
,
0x49
,
0x73
,
0xBC
,
0xAD
,
0x4B
,
0x9C
,
0xEA
,
0xD1
,
0xEA
,
0xD2
,
0xA9
,
0x93
,
0xF8
,
0xDA
,
0xF1
,
0xDF
,
0x6D
,
0xCE
,
0xC0
,
0x57
,
0xAE
,
0xFD
,
0xF6
,
0x18
,
0x02
,
0x76
,
0x8D
,
0x4F
,
0x93
,
0xCF
,
0xD4
,
0x88
,
0x8D
,
0x71
,
0x4A
,
0xCA
,
0x36
,
0x70
,
0x9D
,
0x82
,
0x6E
,
0x74
,
0x25
,
0x19
,
0xD2
,
0x41
,
0x9A
,
0x69
,
0xEC
,
0x65
,
0xD3
,
0xCF
,
0x93
,
0xC7
,
0x78
,
0x84
,
0xF0
,
0x9C
,
0x73
,
0x72
,
0xAA
,
0xDA
,
0x94
,
0x47
,
0xE6
,
0x9A
,
0x07
,
0x85
,
0x40
,
0x7A
,
0x4A
,
0xAA
,
0x8C
,
0xEF
,
0x79
,
0xB9
,
0x8C
,
0xE7
,
0x67
,
0x7D
,
0x15
,
0x28
,
0x21
,
0x54
,
0xBA
,
0x45
,
0xE3
,
0xAC
,
0xC5
,
0x46
,
0xDA
,
0xE8
,
0x46
,
0x18
,
0xC7
,
0xAD
,
0xC8
,
0xC4
,
0xDA
,
0x58
,
0x6B
,
0x9D
,
0xB3
,
0x49
,
0x57
,
0x5E
,
0x38
,
0x29
,
0x85
,
0x65
,
0x7E
,
0x4C
,
0xEB
,
0x2E
,
0xBD
,
0xDA
,
0x04
,
0x34
,
0x80
,
0x2A
,
0x30
,
0x9B
,
0x9E
,
0x1B
,
0xE9
,
0x77
,
0x6D
,
0x22
,
0x9C
,
0xA7
,
0x04
,
0x6F
,
0x39
,
0x7B
,
0x2D
,
0xBB
,
0xC7
,
0xA6
,
0xF8
,
0xE9
,
0x62
,
0x04
,
0xD4
,
0x1B
,
0x21
,
0xF5
,
0x23
,
0x73
,
0xE4
,
0xFA
,
0x8A
,
0xDD
,
0x96
,
0x6F
,
0x03
,
0x6D
,
0x67
,
0x56
,
0x9D
,
0xBE
,
0xAF
,
0x02
,
0xB9
,
0x14
,
0x7C
,
0x9B
,
0x98
,
0xB6
,
0x78
,
0x80
,
0x12
,
0x42
,
0x28
,
0x95
,
0xFC
,
0xC3
,
0x98
,
0xB4
,
0xD6
,
0xC9
,
0x46
,
0x2B
,
0x16
,
0xF5
,
0x56
,
0x24
,
0xE9
,
0xD8
,
0xE0
,
0xA8
,
0x6B
,
0x0A
,
0x91
,
0xB4
,
0xD4
,
0x84
,
0x48
,
0xB6
,
0x23
,
0x94
,
0xE8
,
0x80
,
0xEE
,
0x06
,
0xDF
,
0x4D
,
0x40
,
0xDB
,
0x1B
,
0x23
,
0x8E
,
0x4E
,
0x7B
,
0x0D
,
0xA0
,
0x96
,
0xEA
,
0x56
,
0x4D
,
0x3F
,
0x8B
,
0x01
,
0xE3
,
0x9C
,
0x73
,
0xC3
,
0xBD
,
0x25
,
0xF7
,
0xBA
,
0x93
,
0x96
,
0x52
,
0xC8
,
0x07
,
0x8B
,
0x13
,
0x80
,
0x10
,
0xE4
,
0xFB
,
0x4B
,
0x48
,
0x21
,
0x3A
,
0x2D
,
0xC0
,
0x54
,
0xC9
,
0xB0
,
0x2B
,
0xB9
,
0x84
,
0xE9
,
0x20
,
0x6D
,
0xCB
,
0xB7
,
0xE3
,
0xAE
,
0x1B
,
0x7C
,
0x3B
,
0x06
,
0xDB
,
0x71
,
0xA8
,
0x20
,
0x9D
,
0xF2
,
0x11
,
0xB2
,
0xB3
,
0x39
,
0x37
,
0x9F
,
0x04
,
0xD7
,
0x75
,
0xB6
,
0x5D
,
0xE7
,
0xE3
,
0x59
,
0x7F
,
0x31
,
0x12
,
0x42
,
0xE6
,
0xD7
,
0x01
,
0xED
,
0x24
,
0x68
,
0x00
,
0xE7
,
0xFB
,
0xCA
,
0x7D
,
0xE0
,
0xBA
,
0x73
,
0x78
,
0x70
,
0xCB
,
0x5E
,
0x3E
,
0xB7
,
0x28
,
0x01
,
0x0F
,
0x7E
,
0x02
,
0xF9
,
0xE6
,
0x4F
,
0x2C
,
0x8C
,
0x7F
,
0xDD
,
0xA5
,
0x8C
,
0x4E
,
0x6F
,
0xEE
,
0x2F
,
0x22
,
0x0B
,
0x81
,
0x77
,
0x13
,
0xD0
,
0x9D
,
0x8C
,
0xDA
,
0x49
,
0xF5
,
0x78
,
0xC7
,
0xF1
,
0x08
,
0x68
,
0x8F
,
0x6F
,
0xBA
,
0xA4
,
0x1D
,
0xEB
,
0x71
,
0x97
,
0x44
,
0x5D
,
0x9F
,
0xB5
,
0xAF
,
0x77
,
0x80
,
0xDB
,
0xB6
,
0x65
,
0x3F
,
0x1B
,
0xFE
,
0xE8
,
0xF3
,
0x8C
,
0x4D
,
0xCC
,
0xC1
,
0xA2
,
0x04
,
0x1C
,
0xAB
,
0x48
,
0xFB
,
0xDC
,
0x4D
,
0x40
,
0xDC
,
0x65
,
0xD5
,
0xC5
,
0xC0
,
0x76
,
0xBF
,
0x6E
,
0x17
,
0x53
,
0x62
,
0x81
,
0xBC
,
0x12
,
0x01
,
0xDD
,
0x63
,
0x2E
,
0x46
,
0x84
,
0x59
,
0x40
,
0x48
,
0x77
,
0x88
,
0x98
,
0x45
,
0xAE
,
0x47
,
0x08
,
0xE1
,
0x0A
,
0x03
,
0x45
,
0x76
,
0x8D
,
0x4D
,
0x71
,
0xFD
,
0x25
,
0x1B
,
0xE7
,
0xB9
,
0xDE
,
0x31
,
0x47
,
0x71
,
0xBE
,
0x17
,
0x74
,
0x5F
,
0xDB
,
0x0D
,
0xA0
,
0xFB
,
0xB5
,
0x5C
,
0xE4
,
0xBB
,
0xEE
,
0xCF
,
0xBA
,
0x85
,
0x45
,
0xCE
,
0x0B
,
0x09
,
0x5F
,
0x48
,
0xC4
,
0x42
,
0x42
,
0x16
,
0x92
,
0xB3
,
0xF0
,
0xBC
,
0xF0
,
0xF7
,
0x9D
,
0xA3
,
0x76
,
0xEF
,
0xC7
,
0x8E
,
0x01
,
0xF5
,
0x6A
,
0x49
,
0x58
,
0x4C
,
0xF1
,
0x85
,
0xC4
,
0x74
,
0xBF
,
0x7E
,
0x25
,
0xC0
,
0xAF
,
0x74
,
0x1C
,
0x8F
,
0x90
,
0xC5
,
0xC8
,
0xE1
,
0x65
,
0xCE
,
0x8B
,
0x82
,
0x07
,
0xF8
,
0xBF
,
0xBC
,
0x7A
,
0x38
,
0x97
,
0x7C
,
0xD1
,
0xFC
,
0xA1
,
0x00
,
0x00
,
0x00
,
0x25
,
0x74
,
0x45
,
0x58
,
0x74
,
0x64
,
0x61
,
0x74
,
0x65
,
0x3A
,
0x63
,
0x72
,
0x65
,
0x61
,
0x74
,
0x65
,
0x00
,
0x32
,
0x30
,
0x32
,
0x30
,
0x2D
,
0x30
,
0x33
,
0x2D
,
0x31
,
0x39
,
0x54
,
0x31
,
0x30
,
0x3A
,
0x35
,
0x30
,
0x3A
,
0x35
,
0x38
,
0x2B
,
0x30
,
0x30
,
0x3A
,
0x30
,
0x30
,
0x62
,
0x40
,
0x28
,
0xF1
,
0x00
,
0x00
,
0x00
,
0x25
,
0x74
,
0x45
,
0x58
,
0x74
,
0x64
,
0x61
,
0x74
,
0x65
,
0x3A
,
0x6D
,
0x6F
,
0x64
,
0x69
,
0x66
,
0x79
,
0x00
,
0x32
,
0x30
,
0x31
,
0x39
,
0x2D
,
0x30
,
0x31
,
0x2D
,
0x30
,
0x38
,
0x54
,
0x31
,
0x35
,
0x3A
,
0x35
,
0x34
,
0x3A
,
0x32
,
0x33
,
0x2B
,
0x30
,
0x30
,
0x3A
,
0x30
,
0x30
,
0x8A
,
0xEF
,
0xF9
,
0x19
,
0x00
,
0x00
,
0x00
,
0x20
,
0x74
,
0x45
,
0x58
,
0x74
,
0x73
,
0x6F
,
0x66
,
0x74
,
0x77
,
0x61
,
0x72
,
0x65
,
0x00
,
0x68
,
0x74
,
0x74
,
0x70
,
0x73
,
0x3A
,
0x2F
,
0x2F
,
0x69
,
0x6D
,
0x61
,
0x67
,
0x65
,
0x6D
,
0x61
,
0x67
,
0x69
,
0x63
,
0x6B
,
0x2E
,
0x6F
,
0x72
,
0x67
,
0xBC
,
0xCF
,
0x1D
,
0x9D
,
0x00
,
0x00
,
0x00
,
0x18
,
0x74
,
0x45
,
0x58
,
0x74
,
0x54
,
0x68
,
0x75
,
0x6D
,
0x62
,
0x3A
,
0x3A
,
0x44
,
0x6F
,
0x63
,
0x75
,
0x6D
,
0x65
,
0x6E
,
0x74
,
0x3A
,
0x3A
,
0x50
,
0x61
,
0x67
,
0x65
,
0x73
,
0x00
,
0x31
,
0xA7
,
0xFF
,
0xBB
,
0x2F
,
0x00
,
0x00
,
0x00
,
0x18
,
0x74
,
0x45
,
0x58
,
0x74
,
0x54
,
0x68
,
0x75
,
0x6D
,
0x62
,
0x3A
,
0x3A
,
0x49
,
0x6D
,
0x61
,
0x67
,
0x65
,
0x3A
,
0x3A
,
0x48
,
0x65
,
0x69
,
0x67
,
0x68
,
0x74
,
0x00
,
0x31
,
0x32
,
0x38
,
0x43
,
0x7C
,
0x41
,
0x80
,
0x00
,
0x00
,
0x00
,
0x17
,
0x74
,
0x45
,
0x58
,
0x74
,
0x54
,
0x68
,
0x75
,
0x6D
,
0x62
,
0x3A
,
0x3A
,
0x49
,
0x6D
,
0x61
,
0x67
,
0x65
,
0x3A
,
0x3A
,
0x57
,
0x69
,
0x64
,
0x74
,
0x68
,
0x00
,
0x31
,
0x32
,
0x38
,
0xD0
,
0x8D
,
0x11
,
0xDD
,
0x00
,
0x00
,
0x00
,
0x19
,
0x74
,
0x45
,
0x58
,
0x74
,
0x54
,
0x68
,
0x75
,
0x6D
,
0x62
,
0x3A
,
0x3A
,
0x4D
,
0x69
,
0x6D
,
0x65
,
0x74
,
0x79
,
0x70
,
0x65
,
0x00
,
0x69
,
0x6D
,
0x61
,
0x67
,
0x65
,
0x2F
,
0x70
,
0x6E
,
0x67
,
0x3F
,
0xB2
,
0x56
,
0x4E
,
0x00
,
0x00
,
0x00
,
0x17
,
0x74
,
0x45
,
0x58
,
0x74
,
0x54
,
0x68
,
0x75
,
0x6D
,
0x62
,
0x3A
,
0x3A
,
0x4D
,
0x54
,
0x69
,
0x6D
,
0x65
,
0x00
,
0x31
,
0x35
,
0x34
,
0x36
,
0x39
,
0x36
,
0x32
,
0x38
,
0x36
,
0x33
,
0x1F
,
0x1E
,
0xB3
,
0x01
,
0x00
,
0x00
,
0x00
,
0x12
,
0x74
,
0x45
,
0x58
,
0x74
,
0x54
,
0x68
,
0x75
,
0x6D
,
0x62
,
0x3A
,
0x3A
,
0x53
,
0x69
,
0x7A
,
0x65
,
0x00
,
0x31
,
0x39
,
0x32
,
0x37
,
0x34
,
0x42
,
0x0A
,
0x19
,
0xAB
,
0x42
,
0x00
,
0x00
,
0x00
,
0x56
,
0x74
,
0x45
,
0x58
,
0x74
,
0x54
,
0x68
,
0x75
,
0x6D
,
0x62
,
0x3A
,
0x3A
,
0x55
,
0x52
,
0x49
,
0x00
,
0x66
,
0x69
,
0x6C
,
0x65
,
0x3A
,
0x2F
,
0x2F
,
0x2F
,
0x64
,
0x61
,
0x74
,
0x61
,
0x2F
,
0x77
,
0x77
,
0x77
,
0x72
,
0x6F
,
0x6F
,
0x74
,
0x2F
,
0x77
,
0x77
,
0x77
,
0x2E
,
0x65
,
0x61
,
0x73
,
0x79
,
0x69
,
0x63
,
0x6F
,
0x6E
,
0x2E
,
0x6E
,
0x65
,
0x74
,
0x2F
,
0x63
,
0x64
,
0x6E
,
0x2D
,
0x69
,
0x6D
,
0x67
,
0x2E
,
0x65
,
0x61
,
0x73
,
0x79
,
0x69
,
0x63
,
0x6F
,
0x6E
,
0x2E
,
0x63
,
0x6E
,
0x2F
,
0x66
,
0x69
,
0x6C
,
0x65
,
0x73
,
0x2F
,
0x32
,
0x2F
,
0x32
,
0x39
,
0x31
,
0x36
,
0x35
,
0x2E
,
0x70
,
0x6E
,
0x67
,
0xBF
,
0x98
,
0x5F
,
0xE5
,
0x00
,
0x00
,
0x00
,
0x00
,
0x49
,
0x45
,
0x4E
,
0x44
,
0xAE
,
0x42
,
0x60
,
0x82
};
void
*
get_window_icon_raw_data
(
int
*
len
)
{
*
len
=
(
int
)
sizeof
(
window_icon_hexData
);
return
window_icon_hexData
;
}
LinuxGUI/Ventoy2Disk/Web/ventoy_http.c
View file @
d1481392
...
...
@@ -31,6 +31,7 @@
#include <sys/types.h>
#include <sys/mount.h>
#include <linux/fs.h>
#include <linux/limits.h>
#include <dirent.h>
#include <pthread.h>
#include <ventoy_define.h>
...
...
@@ -160,9 +161,10 @@ static int ventoy_http_save_cfg(void)
{
FILE
*
fp
;
fp
=
fopen
(
"./Ventoy2Disk.ini"
,
"w"
);
fp
=
fopen
(
g_ini_file
,
"w"
);
if
(
!
fp
)
{
vlog
(
"Failed to open %s code:%d
\n
"
,
g_ini_file
,
errno
);
return
0
;
}
...
...
@@ -180,7 +182,7 @@ static int ventoy_http_load_cfg(void)
char
line
[
256
];
FILE
*
fp
;
fp
=
fopen
(
"./Ventoy2Disk.ini"
,
"r"
);
fp
=
fopen
(
g_ini_file
,
"r"
);
if
(
!
fp
)
{
return
0
;
...
...
@@ -1499,7 +1501,7 @@ int ventoy_http_start(const char *ip, const char *port)
{
"listening_ports"
,
"24680"
,
"document_root"
,
"WebUI"
,
"error_log_file"
,
VTOY_LOG_FILE
,
"error_log_file"
,
g_log_file
,
"request_timeout_ms"
,
"10000"
,
NULL
};
...
...
LinuxGUI/Ventoy2Disk/main_gtk.c
View file @
d1481392
...
...
@@ -8,10 +8,15 @@
#include <errno.h>
#include <time.h>
#include <unistd.h>
#include <sys/types.h>
#include <linux/limits.h>
#include <ventoy_define.h>
#include <ventoy_util.h>
#include "ventoy_gtk.h"
char
g_log_file
[
PATH_MAX
];
char
g_ini_file
[
PATH_MAX
];
static
int
set_image_from_pixbuf
(
GtkBuilder
*
pBuilder
,
const
char
*
id
,
const
void
*
pData
,
int
len
)
{
GtkImage
*
pImage
=
NULL
;
...
...
@@ -53,6 +58,7 @@ int early_msgbox(GtkMessageType type, GtkButtonsType buttons, const char *str)
int
main
(
int
argc
,
char
*
argv
[])
{
int
i
;
int
len
;
const
void
*
pData
=
NULL
;
GtkWidget
*
pWidget
=
NULL
;
...
...
@@ -74,6 +80,20 @@ int main(int argc, char *argv[])
return
1
;
}
snprintf
(
g_log_file
,
sizeof
(
g_log_file
),
"log.txt"
);
snprintf
(
g_ini_file
,
sizeof
(
g_ini_file
),
"./Ventoy2Disk.ini"
);
for
(
i
=
0
;
i
<
argc
;
i
++
)
{
if
(
argv
[
i
]
&&
argv
[
i
+
1
]
&&
strcmp
(
argv
[
i
],
"-l"
)
==
0
)
{
snprintf
(
g_log_file
,
sizeof
(
g_log_file
),
"%s"
,
argv
[
i
+
1
]);
}
else
if
(
argv
[
i
]
&&
argv
[
i
+
1
]
&&
strcmp
(
argv
[
i
],
"-i"
)
==
0
)
{
snprintf
(
g_ini_file
,
sizeof
(
g_ini_file
),
"%s"
,
argv
[
i
+
1
]);
}
}
ventoy_log_init
();
vlog
(
"================================================
\n
"
);
...
...
@@ -113,6 +133,7 @@ int main(int argc, char *argv[])
on_init_window
(
pBuilder
);
g_signal_connect
(
G_OBJECT
(
pWidget
),
"delete_event"
,
G_CALLBACK
(
on_exit_window
),
NULL
);
g_signal_connect
(
G_OBJECT
(
pWidget
),
"destroy"
,
G_CALLBACK
(
gtk_main_quit
),
NULL
);
gtk_main
();
...
...
LinuxGUI/Ventoy2Disk/main_webui.c
View file @
d1481392
...
...
@@ -7,12 +7,17 @@
#include <unistd.h>
#include <fcntl.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <linux/limits.h>
#include <ventoy_define.h>
#include <ventoy_util.h>
#include <ventoy_json.h>
#include <ventoy_disk.h>
#include <ventoy_http.h>
char
g_log_file
[
PATH_MAX
];
char
g_ini_file
[
PATH_MAX
];
int
ventoy_log_init
(
void
);
void
ventoy_log_exit
(
void
);
...
...
@@ -30,6 +35,7 @@ void ventoy_signal_stop(int sig)
int
main
(
int
argc
,
char
**
argv
)
{
int
i
;
int
rc
;
const
char
*
ip
=
"127.0.0.1"
;
const
char
*
port
=
"24680"
;
...
...
@@ -50,6 +56,20 @@ int main(int argc, char **argv)
port
=
argv
[
2
];
}
snprintf
(
g_log_file
,
sizeof
(
g_log_file
),
"log.txt"
);
snprintf
(
g_ini_file
,
sizeof
(
g_ini_file
),
"./Ventoy2Disk.ini"
);
for
(
i
=
0
;
i
<
argc
;
i
++
)
{
if
(
argv
[
i
]
&&
argv
[
i
+
1
]
&&
strcmp
(
argv
[
i
],
"-l"
)
==
0
)
{
snprintf
(
g_log_file
,
sizeof
(
g_log_file
),
"%s"
,
argv
[
i
+
1
]);
}
else
if
(
argv
[
i
]
&&
argv
[
i
+
1
]
&&
strcmp
(
argv
[
i
],
"-i"
)
==
0
)
{
snprintf
(
g_ini_file
,
sizeof
(
g_ini_file
),
"%s"
,
argv
[
i
+
1
]);
}
}
ventoy_log_init
();
vlog
(
"===============================================
\n
"
);
...
...
LinuxGUI/Ventoy2Disk/ventoy_gui.c
View file @
d1481392
...
...
@@ -9,9 +9,11 @@
#include <dirent.h>
#include <sys/utsname.h>
#include <sys/types.h>
#include <linux/limits.h>
#include <sys/stat.h>
#include <sys/fcntl.h>
#include <sys/mman.h>
#include "ventoy_json.h"
#define LIB_FLAG_GTK2 (1 << 0)
#define LIB_FLAG_GTK3 (1 << 1)
...
...
@@ -31,6 +33,7 @@
#define LD_CACHE_FILE "/etc/ld.so.cache"
#define INT2STR_YN(a) ((a) == 0 ? "NO" : "YES")
static
char
g_log_file
[
PATH_MAX
];
static
char
*
g_log_buf
=
NULL
;
extern
char
**
environ
;
...
...
@@ -78,7 +81,9 @@ struct cache_file_new
(((addr) + __alignof__ (struct cache_file_new) -1) \
& (~(__alignof__ (struct cache_file_new) - 1)))
static
void
vlog
(
const
char
*
Fmt
,
...)
#define vlog(fmt, args...) ventoy_syslog(0, fmt, ##args)
void
ventoy_syslog
(
int
level
,
const
char
*
Fmt
,
...)
{
int
buflen
;
char
*
buf
=
NULL
;
...
...
@@ -87,6 +92,8 @@ static void vlog(const char *Fmt, ...)
time_t
stamp
;
struct
tm
ttm
;
FILE
*
fp
;
(
void
)
level
;
time
(
&
stamp
);
localtime_r
(
&
stamp
,
&
ttm
);
...
...
@@ -106,7 +113,7 @@ static void vlog(const char *Fmt, ...)
vsnprintf
(
buf
,
buflen
,
Fmt
,
arg
);
va_end
(
arg
);
fp
=
fopen
(
"
log
.txt"
,
"a+"
);
fp
=
fopen
(
g_
log
_file
,
"a+"
);
if
(
fp
)
{
fprintf
(
fp
,
"[%04u/%02u/%02u %02u:%02u:%02u] %s"
,
...
...
@@ -116,10 +123,12 @@ static void vlog(const char *Fmt, ...)
fclose
(
fp
);
}
#if 0
printf("[%04u/%02u/%02u %02u:%02u:%02u] %s",
ttm.tm_year + 1900, ttm.tm_mon, ttm.tm_mday,
ttm.tm_hour, ttm.tm_min, ttm.tm_sec,
buf);
#endif
}
static
int
is_gtk_env
(
void
)
...
...
@@ -223,14 +232,14 @@ static int detect_qt_version(int libflag)
return
5
;
}
if
(
qt
4
>
0
)
if
(
qt
6
>
0
)
{
return
4
;
return
6
;
}
if
(
qt
6
>
0
)
if
(
qt
4
>
0
)
{
return
6
;
return
4
;
}
return
0
;
...
...
@@ -622,7 +631,7 @@ static int ld_cache_lib_check(const char *lib, int *flag)
if
(((
*
flag
)
&
LIB_FLAG_QT4
)
==
0
)
{
if
(
strncmp
(
lib
,
"lib
q
t4"
,
6
)
==
0
)
if
(
strncmp
(
lib
,
"lib
Q
t4"
,
6
)
==
0
)
{
vlog
(
"LIB:<%s>
\n
"
,
lib
);
*
flag
|=
LIB_FLAG_QT4
;
...
...
@@ -632,7 +641,7 @@ static int ld_cache_lib_check(const char *lib, int *flag)
if
(((
*
flag
)
&
LIB_FLAG_QT5
)
==
0
)
{
if
(
strncmp
(
lib
,
"lib
q
t5"
,
6
)
==
0
)
if
(
strncmp
(
lib
,
"lib
Q
t5"
,
6
)
==
0
)
{
vlog
(
"LIB:<%s>
\n
"
,
lib
);
*
flag
|=
LIB_FLAG_QT5
;
...
...
@@ -642,7 +651,7 @@ static int ld_cache_lib_check(const char *lib, int *flag)
if
(((
*
flag
)
&
LIB_FLAG_QT6
)
==
0
)
{
if
(
strncmp
(
lib
,
"lib
q
t6"
,
6
)
==
0
)
if
(
strncmp
(
lib
,
"lib
Q
t6"
,
6
)
==
0
)
{
vlog
(
"LIB:<%s>
\n
"
,
lib
);
*
flag
|=
LIB_FLAG_QT6
;
...
...
@@ -783,6 +792,176 @@ static int parse_ld_cache(int *flag)
return
0
;
}
static
int
gui_type_check
(
VTOY_JSON
*
pstNode
)
{
FILE
*
fp
=
NULL
;
const
char
*
env
=
NULL
;
const
char
*
arch
=
NULL
;
const
char
*
srctype
=
NULL
;
const
char
*
srcname
=
NULL
;
const
char
*
condition
=
NULL
;
const
char
*
expression
=
NULL
;
char
line
[
1024
];
arch
=
vtoy_json_get_string_ex
(
pstNode
,
"arch"
);
srctype
=
vtoy_json_get_string_ex
(
pstNode
,
"type"
);
srcname
=
vtoy_json_get_string_ex
(
pstNode
,
"name"
);
condition
=
vtoy_json_get_string_ex
(
pstNode
,
"condition"
);
expression
=
vtoy_json_get_string_ex
(
pstNode
,
"expression"
);
if
(
srctype
==
NULL
||
srcname
==
NULL
||
condition
==
NULL
)
{
return
0
;
}
if
(
arch
&&
NULL
==
strstr
(
arch
,
VTOY_GUI_ARCH
))
{
return
0
;
}
vlog
(
"check <%s> <%s> <%s>
\n
"
,
srctype
,
srcname
,
condition
);
if
(
strcmp
(
srctype
,
"file"
)
==
0
)
{
if
(
access
(
srcname
,
F_OK
)
==
-
1
)
{
return
0
;
}
if
(
strcmp
(
condition
,
"exist"
)
==
0
)
{
vlog
(
"File %s exist
\n
"
,
srcname
);
return
1
;
}
else
if
(
strcmp
(
condition
,
"contains"
)
==
0
)
{
fp
=
fopen
(
srcname
,
"r"
);
if
(
fp
==
NULL
)
{
return
0
;
}
while
(
fgets
(
line
,
sizeof
(
line
),
fp
))
{
if
(
strstr
(
line
,
expression
))
{
vlog
(
"File %s contains %s
\n
"
,
srcname
,
expression
);
fclose
(
fp
);
return
1
;
}
}
fclose
(
fp
);
return
0
;
}
}
else
if
(
strcmp
(
srctype
,
"env"
)
==
0
)
{
env
=
getenv
(
srcname
);
if
(
env
==
NULL
)
{
return
0
;
}
if
(
strcmp
(
condition
,
"exist"
)
==
0
)
{
vlog
(
"env %s exist
\n
"
,
srcname
);
return
1
;
}
else
if
(
strcmp
(
condition
,
"equal"
)
==
0
)
{
if
(
strcmp
(
expression
,
env
)
==
0
)
{
vlog
(
"env %s is %s
\n
"
,
srcname
,
env
);
return
1
;
}
return
0
;
}
else
if
(
strcmp
(
condition
,
"contains"
)
==
0
)
{
if
(
strstr
(
env
,
expression
))
{
vlog
(
"env %s is %s contains %s
\n
"
,
srcname
,
env
,
expression
);
return
1
;
}
return
0
;
}
}
return
0
;
}
static
int
read_file_to_buf
(
const
char
*
FileName
,
int
ExtLen
,
void
**
Bufer
,
int
*
BufLen
)
{
int
FileSize
;
FILE
*
fp
=
NULL
;
void
*
Data
=
NULL
;
fp
=
fopen
(
FileName
,
"rb"
);
if
(
fp
==
NULL
)
{
vlog
(
"Failed to open file %s"
,
FileName
);
return
1
;
}
fseek
(
fp
,
0
,
SEEK_END
);
FileSize
=
(
int
)
ftell
(
fp
);
Data
=
malloc
(
FileSize
+
ExtLen
);
if
(
!
Data
)
{
fclose
(
fp
);
return
1
;
}
fseek
(
fp
,
0
,
SEEK_SET
);
fread
(
Data
,
1
,
FileSize
,
fp
);
fclose
(
fp
);
*
Bufer
=
Data
;
*
BufLen
=
FileSize
;
return
0
;
}
static
int
distro_check_gui_env
(
char
*
type
,
int
len
,
int
*
pver
)
{
int
size
;
int
length
;
char
*
pBuf
=
NULL
;
VTOY_JSON
*
pstNode
=
NULL
;
VTOY_JSON
*
pstJson
=
NULL
;
vlog
(
"distro_check_gui_env ...
\n
"
);
if
(
access
(
"./tool/distro_gui_type.json"
,
F_OK
)
==
-
1
)
{
vlog
(
"distro_gui_type.json file not exist
\n
"
);
return
0
;
}
read_file_to_buf
(
"./tool/distro_gui_type.json"
,
1
,
(
void
**
)
&
pBuf
,
&
size
);
pBuf
[
size
]
=
0
;
pstJson
=
vtoy_json_create
();
vtoy_json_parse
(
pstJson
,
pBuf
);
for
(
pstNode
=
pstJson
->
pstChild
;
pstNode
;
pstNode
=
pstNode
->
pstNext
)
{
if
(
gui_type_check
(
pstNode
->
pstChild
))
{
length
=
(
int
)
snprintf
(
type
,
len
,
"%s"
,
vtoy_json_get_string_ex
(
pstNode
->
pstChild
,
"gui"
));
*
pver
=
type
[
length
-
1
]
-
'0'
;
type
[
length
-
1
]
=
0
;
break
;
}
}
vtoy_json_destroy
(
pstJson
);
return
pstNode
?
1
:
0
;
}
static
int
detect_gui_exe_path
(
const
char
*
curpath
,
char
*
pathbuf
,
int
buflen
)
{
int
ret
;
...
...
@@ -860,7 +1039,12 @@ static int detect_gui_exe_path(const char *curpath, char *pathbuf, int buflen)
}
else
if
((
LIB_FLAG_GTK
&
libflag
)
>
0
&&
(
LIB_FLAG_QT
&
libflag
)
>
0
)
{
if
(
is_gtk_env
())
if
(
distro_check_gui_env
(
line
,
sizeof
(
line
),
&
ver
))
{
guitype
=
line
;
vlog
(
"distro_check_gui <%s%d> ...
\n
"
,
line
,
ver
);
}
else
if
(
is_gtk_env
())
{
guitype
=
"gtk"
;
ver
=
detect_gtk_version
(
libflag
);
...
...
@@ -872,8 +1056,9 @@ static int detect_gui_exe_path(const char *curpath, char *pathbuf, int buflen)
}
else
{
vlog
(
"Current X environment is NOT supported.
\n
"
);
return
1
;
vlog
(
"Can not distinguish GTK and QT, default use GTK.
\n
"
);
guitype
=
"gtk"
;
ver
=
detect_gtk_version
(
libflag
);
}
}
else
...
...
@@ -989,8 +1174,19 @@ int real_main(int argc, char **argv)
int
main
(
int
argc
,
char
**
argv
)
{
int
i
;
int
ret
;
snprintf
(
g_log_file
,
sizeof
(
g_log_file
),
"log.txt"
);
for
(
i
=
0
;
i
<
argc
;
i
++
)
{
if
(
argv
[
i
]
&&
argv
[
i
+
1
]
&&
strcmp
(
argv
[
i
],
"-l"
)
==
0
)
{
snprintf
(
g_log_file
,
sizeof
(
g_log_file
),
"%s"
,
argv
[
i
+
1
]);
break
;
}
}
g_log_buf
=
malloc
(
MAX_LOG_BUF
);
if
(
!
g_log_buf
)
{
...
...
LinuxGUI/build_gtk.sh
View file @
d1481392
...
...
@@ -81,15 +81,19 @@ build_func() {
rm
-f
../INSTALL/tool/
$toolDir
/Ventoy2Disk.
${
gtkver
}
_
$libsuffix
cp
-a
Ventoy2Disk.
${
gtkver
}
_
$libsuffix
../INSTALL/tool/
$toolDir
/Ventoy2Disk.
${
gtkver
}
$1
-D_FILE_OFFSET_BITS
=
64 Ventoy2Disk/ventoy_gui.c
-DVTOY_GUI_ARCH
=
"
\"
$toolDir
\"
"
-o
VentoyGUI.
$toolDir
cp
-a
VentoyGUI.
$toolDir
../INSTALL/
$1
-O2
-D_FILE_OFFSET_BITS
=
64 Ventoy2Disk/ventoy_gui.c
Ventoy2Disk/Core/ventoy_json.c
-I
Ventoy2Disk/Core
-DVTOY_GUI_ARCH
=
"
\"
$toolDir
\"
"
-o
VentoyGUI.
$toolDir
cp
-a
VentoyGUI.
$toolDir
../INSTALL/
}
build_func
"gcc"
'64'
'x86_64'
'gtk2'
build_func
"gcc"
'64'
'x86_64'
'gtk3'
build_func
"gcc -m32"
'32'
'i386'
'gtk2'
build_func
"gcc -m32"
'32'
'i386'
'gtk3'
build_func
"aarch64-linux-gnu-gcc"
'aa64'
'aarch64'
'gtk3'
export
PATH
=
/opt/mips-loongson-gcc8-linux-gnu-2021-02-08/bin/:
$PATH
build_func
"mips-linux-gnu-gcc -mips64r2 -mabi=64"
'm64e'
'mips64el'
'gtk3'
LinuxGUI/build_qt.sh
0 → 100644
View file @
d1481392
#!/bin/bash
force_copy
()
{
[
-e
"
$2
"
]
&&
rm
-f
"
$2
"
cp
-a
"
$1
"
"
$2
"
}
compile_file
()
{
name
=
$(
basename
$2
)
obj
=
${
name
%.*
}
echo
"
$1
${
obj
}
.o ..."
$1
-O2
-Wall
-std
=
gnu99
-Wno-unused-function
-Wno-format-truncation
-Wno-address-of-packed-member
-DSTATIC
=
static
-DINIT
=
-D_FILE_OFFSET_BITS
=
64
\
-I
./Ventoy2Disk
\
-I
./Ventoy2Disk/Core
\
-I
./Ventoy2Disk/Web
\
-I
./Ventoy2Disk/QT
\
-I
./Ventoy2Disk/Include
\
-I
./Ventoy2Disk/Lib/libhttp/include
\
-I
./Ventoy2Disk/Lib/fat_io_lib/include
\
-I
./Ventoy2Disk/Lib/xz-embedded/linux/include
\
-I
./Ventoy2Disk/Lib/xz-embedded/linux/include/linux
\
-I
./Ventoy2Disk/Lib/xz-embedded/userspace
\
-I
./Ventoy2Disk/Lib/exfat/src/libexfat
\
-I
./Ventoy2Disk/Lib/exfat/src/mkfs
\
-I
./Ventoy2Disk/Lib/fat_io_lib
\
-c
$2
-o
${
obj
}
.o
}
compile_dir
()
{
dir
=
$1
for
i
in
$(
ls
$dir
/
*
.c
)
;
do
compile_file
"
$2
"
"
$i
"
done
}
compile_lib
()
{
compile_dir ./Ventoy2Disk/Core
"
$1
"
compile_dir ./Ventoy2Disk/Web
"
$1
"
compile_dir ./Ventoy2Disk/QT
"
$1
"
compile_dir ./Ventoy2Disk/Lib/exfat/src/libexfat
"
$1
"
compile_dir ./Ventoy2Disk/Lib/exfat/src/mkfs
"
$1
"
compile_dir ./Ventoy2Disk/Lib/fat_io_lib
"
$1
"
compile_file
"
$1
"
Ventoy2Disk/Lib/xz-embedded/linux/lib/decompress_unxz.c
rm
-f
libVentoyQT_
$3
.a
$2
-rcs
libVentoyQT_
$3
.a
*
.o
rm
-f
*
.o
}
build_qt
()
{
echo
"
$1
main.o ..."
$1
-c
$2
$3
-o
main.o ./Ventoy2Disk/QT/main.cpp
echo
"
$1
partcfgdialog.o ..."
$1
-c
$2
$3
-o
partcfgdialog.o ./Ventoy2Disk/QT/partcfgdialog.cpp
echo
"
$1
ventoy2diskwindow.o ..."
$1
-c
$2
$3
-o
ventoy2diskwindow.o ./Ventoy2Disk/QT/ventoy2diskwindow.cpp
echo
"
$1
moc_partcfgdialog.o ..."
$1
-c
$2
$3
-o
moc_partcfgdialog.o ./Ventoy2Disk/QT/build/moc_partcfgdialog.cpp
echo
"
$1
moc_ventoy2diskwindow.o ..."
$1
-c
$2
$3
-o
moc_ventoy2diskwindow.o ./Ventoy2Disk/QT/build/moc_ventoy2diskwindow.cpp
echo
"
$1
Ventoy2Disk.qt5_
${
6
}
..."
$1
$4
-o
Ventoy2Disk.qt5_
${
6
}
*
.o
$5
rm
-f
*
.o
}
build_qt_app
()
{
DEFINES
=
"-DQT_CHECK_EUID -DQT_DEPRECATED_WARNINGS -DSTATIC=static -DINIT= -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB"
CXXFLAGS
=
"-pipe -O2 -std=gnu++11 -Wall -W -D_REENTRANT -fPIC
$DEFINES
-Wno-deprecated-declarations -Wno-deprecated-copy"
INCPATH
=
" -I./Ventoy2Disk -I. -I./Ventoy2Disk/Core -I./Ventoy2Disk/Web -I./Ventoy2Disk/QT -I./Ventoy2Disk/QT/build -I./Ventoy2Disk/Include -I./Ventoy2Disk/Lib/libhttp/include -I./Ventoy2Disk/Lib/fat_io_lib/include -I./Ventoy2Disk/Lib/xz-embedded/linux/include -I./Ventoy2Disk/Lib/xz-embedded/linux/include/linux -I./Ventoy2Disk/Lib/xz-embedded/userspace -I./Ventoy2Disk/Lib/exfat/src/libexfat -I./Ventoy2Disk/Lib/fat_io_lib -I
$QT_INC_PATH
-I
$QT_INC_PATH
/QtWidgets -I
$QT_INC_PATH
/QtGui -I
$QT_INC_PATH
/QtCore -I. -I."
SUBLIBS
=
"./libVentoyQT_
${
2
}
.a"
LIBS
=
"
$SUBLIBS
$QT_LIB_PATH
/libQt5Widgets.so
$QT_LIB_PATH
/libQt5Gui.so
$QT_LIB_PATH
/libQt5Core.so -lpthread"
build_qt
"
$1
"
"
$CXXFLAGS
"
"
$INCPATH
"
"
$LFLAGS
"
"
$LIBS
"
"
$3
"
}
# build QT5 for i386
build_qt_i386
()
{
QT_INC_PATH
=
"./EXLIB/i386/usr/include/i386-linux-gnu/qt5"
QT_LIB_PATH
=
"./EXLIB/i386/usr/lib/i386-linux-gnu"
DEFINES
=
"-DQT_CHECK_EUID -DQT_DEPRECATED_WARNINGS -DSTATIC=static -DINIT= -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB"
CXXFLAGS
=
"-pipe -O2 -std=gnu++11 -Wall -W -D_REENTRANT -fPIC
$DEFINES
-Wno-deprecated-declarations"
INCPATH
=
" -I./Ventoy2Disk -I. -I./Ventoy2Disk/Core -I./Ventoy2Disk/Web -I./Ventoy2Disk/QT -I./Ventoy2Disk/QT/build -I./Ventoy2Disk/Include -I./Ventoy2Disk/Lib/libhttp/include -I./Ventoy2Disk/Lib/fat_io_lib/include -I./Ventoy2Disk/Lib/xz-embedded/linux/include -I./Ventoy2Disk/Lib/xz-embedded/linux/include/linux -I./Ventoy2Disk/Lib/xz-embedded/userspace -I./Ventoy2Disk/Lib/exfat/src/libexfat -I./Ventoy2Disk/Lib/fat_io_lib -I
$QT_INC_PATH
-I
$QT_INC_PATH
/QtWidgets -I
$QT_INC_PATH
/QtGui -I
$QT_INC_PATH
/QtCore -I."
LFLAGS
=
"-Wl,-O1 -Wl,-rpath-link,
$QT_LIB_PATH
-L
$QT_LIB_PATH
-Wl,-rpath-link,./EXLIB/i386/lib/i386-linux-gnu -L./EXLIB/i386/lib/i386-linux-gnu"
SUBLIBS
=
"./libVentoyQT_i386.a"
LIBS
=
"
$SUBLIBS
$QT_LIB_PATH
/libQt5Widgets.so
$QT_LIB_PATH
/libQt5Gui.so
$QT_LIB_PATH
/libQt5Core.so -lpthread"
compile_lib
"gcc -m32"
"ar"
"i386"
build_qt
"g++ -m32"
"
$CXXFLAGS
"
"
$INCPATH
"
"
$LFLAGS
"
"
$LIBS
"
"32"
}
#build QT5 for x86_64
build_qt_x86_64
()
{
compile_lib
"gcc"
"ar"
"x86_64"
QT_INC_PATH
=
"/opt/Qt5.9.0/5.9/gcc_64/include"
QT_LIB_PATH
=
"/opt/Qt5.9.0/5.9/gcc_64/lib"
LFLAGS
=
"-Wl,-O1 -Wl,-rpath-link,
$QT_LIB_PATH
-L
$QT_LIB_PATH
"
build_qt_app
"g++"
"x86_64"
"64"
force_copy Ventoy2Disk.qt5_64 ../INSTALL/tool/x86_64/Ventoy2Disk.qt5
rm
-f
./libVentoyQT_x86_64.a
}
# build QT5 for arm64
build_qt_aarch64
()
{
compile_lib
"aarch64-linux-gnu-gcc"
"aarch64-linux-gnu-ar"
"aarch64"
QT_INC_PATH
=
"./EXLIB/aarch64/usr/include/qt5"
QT_LIB_PATH
=
"./EXLIB/aarch64/usr/lib64"
LFLAGS
=
"-Wl,-O1 -Wl,-rpath-link,
$QT_LIB_PATH
-L
$QT_LIB_PATH
-Wl,-rpath-link,./EXLIB/aarch64/lib64 -L./EXLIB/aarch64/lib64"
build_qt_app
"aarch64-linux-gnu-g++"
"aarch64"
"aa64"
force_copy Ventoy2Disk.qt5_aa64 ../INSTALL/tool/aarch64/Ventoy2Disk.qt5
rm
-f
./libVentoyQT_aarch64.a
}
# build QT5 for mips64
build_qt_mips64el
()
{
QT_INC_PATH
=
"./EXLIB/mips64el/usr/include/mips64el-linux-gnuabi64/qt5"
QT_LIB_PATH
=
"./EXLIB/mips64el/usr/lib/mips64el-linux-gnuabi64"
DEFINES
=
"-DQT_CHECK_EUID -DQT_DEPRECATED_WARNINGS -DSTATIC=static -DINIT= -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB"
CXXFLAGS
=
"-pipe -O2 -std=gnu++11 -Wall -W -D_REENTRANT -fPIC
$DEFINES
-Wno-deprecated-declarations"
INCPATH
=
" -I./Ventoy2Disk -I. -I./Ventoy2Disk/Core -I./Ventoy2Disk/Web -I./Ventoy2Disk/QT -I./Ventoy2Disk/QT/build -I./Ventoy2Disk/Include -I./Ventoy2Disk/Lib/libhttp/include -I./Ventoy2Disk/Lib/fat_io_lib/include -I./Ventoy2Disk/Lib/xz-embedded/linux/include -I./Ventoy2Disk/Lib/xz-embedded/linux/include/linux -I./Ventoy2Disk/Lib/xz-embedded/userspace -I./Ventoy2Disk/Lib/exfat/src/libexfat -I./Ventoy2Disk/Lib/fat_io_lib -I
$QT_INC_PATH
-I
$QT_INC_PATH
/QtWidgets -I
$QT_INC_PATH
/QtGui -I
$QT_INC_PATH
/QtCore -I."
LFLAGS
=
"-Wl,-O1 -Wl,-rpath-link,
$QT_LIB_PATH
-L
$QT_LIB_PATH
-Wl,-rpath-link,./EXLIB/mips64el/lib/mips64el-linux-gnuabi64 -L./EXLIB/mips64el/lib/mips64el-linux-gnuabi64"
SUBLIBS
=
"./libVentoyQT_mips64el.a"
LIBS
=
"
$SUBLIBS
$QT_LIB_PATH
/libQt5Widgets.so
$QT_LIB_PATH
/libQt5Gui.so
$QT_LIB_PATH
/libQt5Core.so -lpthread"
export
PATH
=
/opt/mips-loongson-gcc8-linux-gnu-2021-02-08/bin/:
$PATH
compile_lib
"mips-linux-gnu-gcc -mips64r2 -mabi=64"
"mips-linux-gnu-ar"
"mips64el"
build_qt
"mips-linux-gnu-g++ -mips64r2 -mabi=64"
"
$CXXFLAGS
"
"
$INCPATH
"
"
$LFLAGS
"
"
$LIBS
"
"m64e"
force_copy Ventoy2Disk.qt5_m64e ../INSTALL/tool/mips64el/Ventoy2Disk.qt5
rm
-f
./libVentoyQT_mips64el.a
}
####################################################################
####################################################################
####################################################################
####################################################################
sed
"s#../Ventoy2Disk#..#g"
-i
./Ventoy2Disk/QT/build/moc_partcfgdialog.cpp
sed
"s#../Ventoy2Disk#..#g"
-i
./Ventoy2Disk/QT/build/moc_ventoy2diskwindow.cpp
#build qt5 i386 in centos 8 environment
if
[
"
$1
"
=
"VENTOY_I386_QT_BUILD"
]
;
then
echo
"build i386 qt ..."
build_qt_i386
exit
0
fi
chroot
/opt/CentOS8 sh /buildqt.sh
force_copy ./Ventoy2Disk.qt5_32 ../INSTALL/tool/i386/Ventoy2Disk.qt5
rm
-f
./libVentoyQT_i386.a
build_qt_x86_64
build_qt_aarch64
build_qt_mips64el
Prev
1
2
3
4
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment