function RxLinkUtils.observeValidLinksBrio(e,X)assert(type(e)=="\115\116\114\105\110\103","\108\105\110\107\078\097\109\101 \115\104\111\117\108\100 \098\101 \'\115\116\114\105\110\103\'")assert(typeof(X)=="\073\110\115\116\097\110\099\101","\112\097\114\101\110\116 \115\104\111\117\108\100 \098\101 \'\073\110\115\116\097\110\099\101\'")return(RxInstanceUtils.observeChildrenBrio(X)):Pipe({Rx.flatMap(function(X)local y=X:GetValue()if not y:IsA("\079\098\106\101\099\116\086\097\108\117\101")then return Rx.EMPTY end return RxBrioUtils.completeOnDeath(X,RxLinkUtils.observeValidityBrio(e,y))end)})end

function RxLinkUtils.observeValidLinksBrio(linkName, parent)
	assert(type(linkName) == "string", "linkName should be 'string'")
	assert(typeof(parent) == "Instance", "parent should be 'Instance'")

	return RxInstanceUtils.observeChildrenBrio(parent)
		:Pipe({
			Rx.flatMap(function(brio)
				local instance = brio:GetValue()
				if not instance:IsA("ObjectValue") then
					return Rx.EMPTY
				end

				return RxBrioUtils.completeOnDeath(brio, RxLinkUtils.observeValidityBrio(linkName, instance))
			end);
		})
end
