Этот коммит содержится в:
Sara-Jayne Terp 2021-06-28 17:27:36 +01:00
родитель f3336513cc
Коммит 9655db3401
9 изменённых файлов: 26780 добавлений и 654 удалений

Двоичные данные
AMITT_MASTER_DATA/AMITT_TTPs_MASTER.xlsx

Двоичный файл не отображается.

Двоичные данные
AMITT_MASTER_DATA/~$AMITT_TTPs_MASTER.xlsx Обычный файл

Двоичный файл не отображается.

Просмотреть файл

@ -141,330 +141,6 @@
"vars(amitt)['cross_counterid_techniqueid']"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>amitt_id</th>\n",
" <th>technique_id</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>C00006</td>\n",
" <td>T0007</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>C00006</td>\n",
" <td>T0015</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>C00006</td>\n",
" <td>T0018</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>C00006</td>\n",
" <td>T0043</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>C00006</td>\n",
" <td>T0053</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>135</th>\n",
" <td>C00219</td>\n",
" <td>T0025</td>\n",
" </tr>\n",
" <tr>\n",
" <th>136</th>\n",
" <td>C00220</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>137</th>\n",
" <td>C00221</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>138</th>\n",
" <td>C00222</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>139</th>\n",
" <td>C00223</td>\n",
" <td></td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>898 rows × 2 columns</p>\n",
"</div>"
],
"text/plain": [
" amitt_id technique_id\n",
"0 C00006 T0007\n",
"0 C00006 T0015\n",
"0 C00006 T0018\n",
"0 C00006 T0043\n",
"0 C00006 T0053\n",
".. ... ...\n",
"135 C00219 T0025\n",
"136 C00220 \n",
"137 C00221 \n",
"138 C00222 \n",
"139 C00223 \n",
"\n",
"[898 rows x 2 columns]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"amitt.cross_counterid_techniqueid"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>amitt_id</th>\n",
" <th>tactic_id</th>\n",
" <th>name</th>\n",
" <th>summary</th>\n",
" <th>id</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>T0001</td>\n",
" <td>TA01</td>\n",
" <td>5Ds (dismiss, distort, distract, dismay, divide)</td>\n",
" <td>Nimmo's \"4Ds of propaganda\": dismiss, distort,...</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>T0002</td>\n",
" <td>TA01</td>\n",
" <td>Facilitate State Propaganda</td>\n",
" <td>Organize citizens around pro-state messaging. ...</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>T0003</td>\n",
" <td>TA01</td>\n",
" <td>Leverage Existing Narratives</td>\n",
" <td>Use or adapt existing narrative themes, where ...</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>T0004</td>\n",
" <td>TA01</td>\n",
" <td>Competing Narratives</td>\n",
" <td>Advance competing narratives connected to same...</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>T0005</td>\n",
" <td>TA02</td>\n",
" <td>Center of Gravity Analysis</td>\n",
" <td>Recon/research to identify \"the source of powe...</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>T0060</td>\n",
" <td>TA11</td>\n",
" <td>Continue to amplify</td>\n",
" <td>continue narrative or message amplification af...</td>\n",
" <td>60</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60</th>\n",
" <td>T0061</td>\n",
" <td>TA10</td>\n",
" <td>Sell merchandising</td>\n",
" <td>Sell hats, t-shirts, flags and other branded c...</td>\n",
" <td>61</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>T0062</td>\n",
" <td>TA12</td>\n",
" <td>Behaviour changes</td>\n",
" <td>Monitor and evaluate behaviour changes from mi...</td>\n",
" <td>62</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62</th>\n",
" <td>T0063</td>\n",
" <td>TA12</td>\n",
" <td>Message reach</td>\n",
" <td>Monitor and evaluate message reach in misinfor...</td>\n",
" <td>63</td>\n",
" </tr>\n",
" <tr>\n",
" <th>63</th>\n",
" <td>T0064</td>\n",
" <td>TA12</td>\n",
" <td>Social media engagement</td>\n",
" <td>Monitor and evaluate social media engagement i...</td>\n",
" <td>64</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>64 rows × 5 columns</p>\n",
"</div>"
],
"text/plain": [
" amitt_id tactic_id name \\\n",
"0 T0001 TA01 5Ds (dismiss, distort, distract, dismay, divide) \n",
"1 T0002 TA01 Facilitate State Propaganda \n",
"2 T0003 TA01 Leverage Existing Narratives \n",
"3 T0004 TA01 Competing Narratives \n",
"4 T0005 TA02 Center of Gravity Analysis \n",
".. ... ... ... \n",
"59 T0060 TA11 Continue to amplify \n",
"60 T0061 TA10 Sell merchandising \n",
"61 T0062 TA12 Behaviour changes \n",
"62 T0063 TA12 Message reach \n",
"63 T0064 TA12 Social media engagement \n",
"\n",
" summary id \n",
"0 Nimmo's \"4Ds of propaganda\": dismiss, distort,... 1 \n",
"1 Organize citizens around pro-state messaging. ... 2 \n",
"2 Use or adapt existing narrative themes, where ... 3 \n",
"3 Advance competing narratives connected to same... 4 \n",
"4 Recon/research to identify \"the source of powe... 5 \n",
".. ... .. \n",
"59 continue narrative or message amplification af... 60 \n",
"60 Sell hats, t-shirts, flags and other branded c... 61 \n",
"61 Monitor and evaluate behaviour changes from mi... 62 \n",
"62 Monitor and evaluate message reach in misinfor... 63 \n",
"63 Monitor and evaluate social media engagement i... 64 \n",
"\n",
"[64 rows x 5 columns]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Generate minimal sqlite database from the Amitt variables\n",
"conn = sql.connect('amittsite.sqlite')\n",
"\n",
"def add_table(dataframe, tablename, columns): \n",
" # Create sql table\n",
" colnames = ', '.join(['{} TEXT NOT NULL'.format(col) for col in columns])\n",
" conn.execute(\"DROP TABLE IF EXISTS {}\".format(tablename))\n",
" conn.execute('''CREATE TABLE {} (id INTEGER PRIMARY KEY AUTOINCREMENT, {});'''.format(tablename, colnames))\n",
" #populate table from dataframe\n",
" newtable = dataframe[columns].copy().applymap(str)\n",
" newtable['id'] = range(1,len(newtable)+1)\n",
" newtable.to_sql(tablename, conn, index=False, if_exists='append')\n",
" conn.commit()\n",
" return newtable\n",
"\n",
"#newtable = add_table(amitt.df_actortypes, 'actor_type', ['amitt_id', 'sector_id', 'framework_id', 'name', 'summary'])\n",
"# counter\n",
"newtable = add_table(amitt.df_counters, 'counter', ['amitt_id', 'tactic_id', 'metatechnique_id', 'name', 'summary'])\n",
"# dataset\n",
"newtable = add_table(amitt.df_frameworks, 'framework', ['amitt_id', 'name', 'summary'])\n",
"# incident\n",
"# metatechnique\n",
"newtable = add_table(amitt.df_metatechniques, 'metatechnique', ['amitt_id', 'name', 'summary'])\n",
"newtable = add_table(amitt.df_phases, 'phase', ['amitt_id', 'name', 'rank', 'summary'])\n",
"# playbook\n",
"# reference\n",
"# response_type\n",
"# sector\n",
"newtable = add_table(amitt.df_tactics, 'tactic', ['amitt_id', 'phase_id', 'name', 'rank', 'summary'])\n",
"newtable = add_table(amitt.df_tasks, 'task', ['amitt_id', 'tactic_id', 'framework_id', 'name', 'summary'])\n",
"newtable = add_table(amitt.df_techniques, 'technique', ['amitt_id', 'tactic_id', 'name', 'summary'])\n",
"# techniques_counters\n",
"\n",
"conn.execute(\"DROP TABLE IF EXISTS {}\".format('user'))\n",
"conn.execute('''CREATE TABLE user (id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL UNIQUE, password TEXT NOT NULL);''')\n",
"\n",
"conn.close()\n",
"newtable"
]
},
{
"cell_type": "code",
"execution_count": 26,
@ -771,7 +447,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"# fix the problem with excelfile changes"
"# fix the problem with excelfile changes\n",
"\n",
"Background: AMITT's master dataset is in an excelfile. Changes in this dont' show up in github, so it's difficult to tell what's changed between versions. Code below checks for those differences - use this repeatedly until versions align. "
]
},
{

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -141,330 +141,6 @@
"vars(amitt)['cross_counterid_techniqueid']"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>amitt_id</th>\n",
" <th>technique_id</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>C00006</td>\n",
" <td>T0007</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>C00006</td>\n",
" <td>T0015</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>C00006</td>\n",
" <td>T0018</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>C00006</td>\n",
" <td>T0043</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>C00006</td>\n",
" <td>T0053</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>135</th>\n",
" <td>C00219</td>\n",
" <td>T0025</td>\n",
" </tr>\n",
" <tr>\n",
" <th>136</th>\n",
" <td>C00220</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>137</th>\n",
" <td>C00221</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>138</th>\n",
" <td>C00222</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>139</th>\n",
" <td>C00223</td>\n",
" <td></td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>898 rows × 2 columns</p>\n",
"</div>"
],
"text/plain": [
" amitt_id technique_id\n",
"0 C00006 T0007\n",
"0 C00006 T0015\n",
"0 C00006 T0018\n",
"0 C00006 T0043\n",
"0 C00006 T0053\n",
".. ... ...\n",
"135 C00219 T0025\n",
"136 C00220 \n",
"137 C00221 \n",
"138 C00222 \n",
"139 C00223 \n",
"\n",
"[898 rows x 2 columns]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"amitt.cross_counterid_techniqueid"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>amitt_id</th>\n",
" <th>tactic_id</th>\n",
" <th>name</th>\n",
" <th>summary</th>\n",
" <th>id</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>T0001</td>\n",
" <td>TA01</td>\n",
" <td>5Ds (dismiss, distort, distract, dismay, divide)</td>\n",
" <td>Nimmo's \"4Ds of propaganda\": dismiss, distort,...</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>T0002</td>\n",
" <td>TA01</td>\n",
" <td>Facilitate State Propaganda</td>\n",
" <td>Organize citizens around pro-state messaging. ...</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>T0003</td>\n",
" <td>TA01</td>\n",
" <td>Leverage Existing Narratives</td>\n",
" <td>Use or adapt existing narrative themes, where ...</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>T0004</td>\n",
" <td>TA01</td>\n",
" <td>Competing Narratives</td>\n",
" <td>Advance competing narratives connected to same...</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>T0005</td>\n",
" <td>TA02</td>\n",
" <td>Center of Gravity Analysis</td>\n",
" <td>Recon/research to identify \"the source of powe...</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>T0060</td>\n",
" <td>TA11</td>\n",
" <td>Continue to amplify</td>\n",
" <td>continue narrative or message amplification af...</td>\n",
" <td>60</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60</th>\n",
" <td>T0061</td>\n",
" <td>TA10</td>\n",
" <td>Sell merchandising</td>\n",
" <td>Sell hats, t-shirts, flags and other branded c...</td>\n",
" <td>61</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>T0062</td>\n",
" <td>TA12</td>\n",
" <td>Behaviour changes</td>\n",
" <td>Monitor and evaluate behaviour changes from mi...</td>\n",
" <td>62</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62</th>\n",
" <td>T0063</td>\n",
" <td>TA12</td>\n",
" <td>Message reach</td>\n",
" <td>Monitor and evaluate message reach in misinfor...</td>\n",
" <td>63</td>\n",
" </tr>\n",
" <tr>\n",
" <th>63</th>\n",
" <td>T0064</td>\n",
" <td>TA12</td>\n",
" <td>Social media engagement</td>\n",
" <td>Monitor and evaluate social media engagement i...</td>\n",
" <td>64</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>64 rows × 5 columns</p>\n",
"</div>"
],
"text/plain": [
" amitt_id tactic_id name \\\n",
"0 T0001 TA01 5Ds (dismiss, distort, distract, dismay, divide) \n",
"1 T0002 TA01 Facilitate State Propaganda \n",
"2 T0003 TA01 Leverage Existing Narratives \n",
"3 T0004 TA01 Competing Narratives \n",
"4 T0005 TA02 Center of Gravity Analysis \n",
".. ... ... ... \n",
"59 T0060 TA11 Continue to amplify \n",
"60 T0061 TA10 Sell merchandising \n",
"61 T0062 TA12 Behaviour changes \n",
"62 T0063 TA12 Message reach \n",
"63 T0064 TA12 Social media engagement \n",
"\n",
" summary id \n",
"0 Nimmo's \"4Ds of propaganda\": dismiss, distort,... 1 \n",
"1 Organize citizens around pro-state messaging. ... 2 \n",
"2 Use or adapt existing narrative themes, where ... 3 \n",
"3 Advance competing narratives connected to same... 4 \n",
"4 Recon/research to identify \"the source of powe... 5 \n",
".. ... .. \n",
"59 continue narrative or message amplification af... 60 \n",
"60 Sell hats, t-shirts, flags and other branded c... 61 \n",
"61 Monitor and evaluate behaviour changes from mi... 62 \n",
"62 Monitor and evaluate message reach in misinfor... 63 \n",
"63 Monitor and evaluate social media engagement i... 64 \n",
"\n",
"[64 rows x 5 columns]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Generate minimal sqlite database from the Amitt variables\n",
"conn = sql.connect('amittsite.sqlite')\n",
"\n",
"def add_table(dataframe, tablename, columns): \n",
" # Create sql table\n",
" colnames = ', '.join(['{} TEXT NOT NULL'.format(col) for col in columns])\n",
" conn.execute(\"DROP TABLE IF EXISTS {}\".format(tablename))\n",
" conn.execute('''CREATE TABLE {} (id INTEGER PRIMARY KEY AUTOINCREMENT, {});'''.format(tablename, colnames))\n",
" #populate table from dataframe\n",
" newtable = dataframe[columns].copy().applymap(str)\n",
" newtable['id'] = range(1,len(newtable)+1)\n",
" newtable.to_sql(tablename, conn, index=False, if_exists='append')\n",
" conn.commit()\n",
" return newtable\n",
"\n",
"#newtable = add_table(amitt.df_actortypes, 'actor_type', ['amitt_id', 'sector_id', 'framework_id', 'name', 'summary'])\n",
"# counter\n",
"newtable = add_table(amitt.df_counters, 'counter', ['amitt_id', 'tactic_id', 'metatechnique_id', 'name', 'summary'])\n",
"# dataset\n",
"newtable = add_table(amitt.df_frameworks, 'framework', ['amitt_id', 'name', 'summary'])\n",
"# incident\n",
"# metatechnique\n",
"newtable = add_table(amitt.df_metatechniques, 'metatechnique', ['amitt_id', 'name', 'summary'])\n",
"newtable = add_table(amitt.df_phases, 'phase', ['amitt_id', 'name', 'rank', 'summary'])\n",
"# playbook\n",
"# reference\n",
"# response_type\n",
"# sector\n",
"newtable = add_table(amitt.df_tactics, 'tactic', ['amitt_id', 'phase_id', 'name', 'rank', 'summary'])\n",
"newtable = add_table(amitt.df_tasks, 'task', ['amitt_id', 'tactic_id', 'framework_id', 'name', 'summary'])\n",
"newtable = add_table(amitt.df_techniques, 'technique', ['amitt_id', 'tactic_id', 'name', 'summary'])\n",
"# techniques_counters\n",
"\n",
"conn.execute(\"DROP TABLE IF EXISTS {}\".format('user'))\n",
"conn.execute('''CREATE TABLE user (id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL UNIQUE, password TEXT NOT NULL);''')\n",
"\n",
"conn.close()\n",
"newtable"
]
},
{
"cell_type": "code",
"execution_count": 26,
@ -771,7 +447,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"# fix the problem with excelfile changes"
"# fix the problem with excelfile changes\n",
"\n",
"Background: AMITT's master dataset is in an excelfile. Changes in this dont' show up in github, so it's difficult to tell what's changed between versions. Code below checks for those differences - use this repeatedly until versions align. "
]
},
{

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Двоичные данные
HTML_GENERATING_CODE/amittsite.sqlite Обычный файл

Двоичный файл не отображается.

Просмотреть файл

@ -4,7 +4,6 @@ var gridnames = ["#bluegrid", "#redgrid"];
for (gridname in gridnames) {
fillGrid(gridname)
}
function fillGrid(gridname) {

Просмотреть файл

@ -4,11 +4,11 @@
</head>
<body>
<H2>AMITT Red TTPs (techniques)</H2>
<div id="bluegrid"></div>
<H2>AMITT Blue TTPs (counters)</H2>
<div id="redgrid"></div>
<!-- <H2>AMITT Blue TTPs (counters)</H2>
<div id="bluegrid"></div>
-->
<script src="grid.js" type="text/javascript"></script>
</body>
</html>