local function Q(f)local R={}for f,j in pairs(f)do if type(j)=="\116\097\098\108\101"then R[f]=Q(j)else R[f]=j end end return R end local function f(R,j)for j,D in pairs(j)do if type(j)=="\115\116\114\105\110\103"then if R[j]==nil then if type(D)=="\116\097\098\108\101"then R[j]=Q(D)else R[j]=D end elseif type(R[j])=="\116\097\098\108\101"and type(D)=="\116\097\098\108\101"then f(R[j],D)end end end end return f
local function DeepCopyTable(Table)
	local Copy = {}
	for Key, Value in pairs(Table) do
		if type(Value) == "table" then
			Copy[Key] = DeepCopyTable(Value)
		else
			Copy[Key] = Value
		end
	end
	return Copy
end

local function ReconcileTable(Target, Template)
	for Key, Value in pairs(Template) do
		if type(Key) == "string" then
			if Target[Key] == nil then
				if type(Value) == "table" then
					Target[Key] = DeepCopyTable(Value)
				else
					Target[Key] = Value
				end
			elseif type(Target[Key]) == "table" and type(Value) == "table" then
				ReconcileTable(Target[Key], Value)
			end
		end
	end
end

return ReconcileTable